一、学习任务
1.问答题:什么是ROS? ROS产生、发展和壮大的原因和意义?
2.实践练习:在Ubuntu16或18系统中,安装对应版本的ROS软件;熟悉ROS基本命令;运行小海龟demo例子,通过键盘控制小海龟运动。记录整个实践过程。
二、学习内容
1. ROS简介
1.1 什么是ROS?
1.1.1 ROS是一个适用于机器人编程的框架,这个框架把原本松散的零部件耦合在了一起,为他们提供了通信架构。
1.1.2 ROS虽然叫做操作系统,但并非 Windows、Mac 那样通常意义的操作系 统,它只是连接了操作系统和你开发的ROS应用程序,所以它也算是一个中间件,为基于 ROS 的应用程序之间建立起了沟通的桥梁,所以也是运行在Linux上的运行时环境,在这个环境下,机器人的感知、决策、控制算法可以更好的组织和运行。
1.2 ROS发展
1.2.1 本世纪开始,关于人工智能的研究进入了大发展阶段,包括全方位的具体的 AI ,例如斯坦福大学人工智能实验室STAIR(Stanford Artificial Intelligence Robot)项目,该项目组创建了灵活的、动态的软件系统的原型,用于机器人技术。
1.2.2 在2007年,机器人公司Willow Garage和该项目组合作,他们十分具有前瞻性的,提供了大量资源进一步扩展了这些概念,经过具体的研究测试实现之后,无数的研究人员将他们的专业性研究贡献到ROS核心概念和其基础软件包,这期间积累了众多的科学研究成果。
1.2.3 ROS软件的开发自始至终采用开放的BSD协议,在机器人技术研究领域逐渐成为一个被广泛使用的平台。
1.2.4 Willow Garage公司和斯坦福大学人工智能实验室合作以后,在2009年初推出 ROS0.4,这是一个测试版的 ROS,现在所用的系统框架在这个版本正式开启了 ROS 的发展成熟之路。
1.3 ROS的特点:
- 分布式点对点
ROS采用了分布式的框架。通过点对点的设计让机器人的进程可以分别运行,便于模块 化的修改和定制,提高了系统的容错能力。 - 多种语言支持
ROS支持多种编程语言。C++、Pyhton和已经在ROS中实现编译,是目前应用最广的 ROS开发语言,Lisp、C#、Java等语言的测试库也已经实现。为了支持多语言编程, ROS采用了一种语言中立的接口定义语言来实现各模块之间消息传送。通俗的理解就 是,ROS的通信格式和用哪种编程语言来写无关,它使用的是自身定义的一套通信接口。 - 开源社区
ROS具有一个庞大的社区ROS-WIKI(http://wiki.ros.org/),这个网站将会始终伴随着你 ROS开发,无论是查阅功能包的参数、搜索问题还是。当前使用ROS开发的软件包已经 达到数千万个,相关的机器人已经多达上千款。此外,ROS遵从BSD协议,对个人和商业应用及修改完全免费。这也促进了ROS的流行。
1.4 意义
ROS的发展逐渐的趋于成熟,近年来也逐步是面对着Ubuntu的更新而更新,这说明ROS已经初步进入一种稳定的发展状态,每年进行一次更新的频率同时还保留着长期支持的版本,这使得ROS在稳步的前进发展同时,也有着开拓创新的方向。目前越来越多的机器人、无人机甚至无人车都开始采用ROS作为开发平台,尽管ROS在实用方面目前还存在一些限制,但前途非常光明。
2018年ROS2 1.0版将发布,未来ROS2将如何影响机器人领域,我们拭目以待。相信在人工智能的大发展、人机交互越来越密切、互联网+的大时代,ROS会发挥出越来越重要的作用。
总体来说,ROS更适合科研和开源用户使用,如果在工业场景应用(例如无人驾驶)还需要做优化和定制。 为了解决实际应用的问题,ROS2.0做了很大的改进,目前正在开发之中,未来表现如何值得期待。
2. ubuntu16 安装ROS
2.1 安装源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
2.2 设置密钥
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
2.3 更新及安装
sudo apt update
sudo apt-get install ros-melodic-desktop-full
2.4 初始化
sudo rosdep init
rosdep update
2.5 添加环境变量
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
2.6 安装rosinstall
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
3.运行小海龟demo例子
打开终端分别执行以下命令:
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
效果如下: