ROS(Robot Operating System)是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。
ROS 的主要目标是为机器人研究和开发提供代码复用的支持。ROS是一个分布式的进程(也就是"节点")框架,这些进程被封装在易于被分享和发布的程序包和功能包中。ROS也支持一种类似于代码储存库的联合系统,这个系统也可以实现工程的协作及发布。这个设计可以使一个工程的开发和实现从文件系统到用户接口完全独立决策(不受ROS限制)。同时,所有的工程都可以被ROS的基础工具整合在一起。
参考资料: ROS Wiki
打开Ubuntu系统的软件中心,点击软件和更新。
确认上述窗口中的前四个选项已被勾选。
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
将ROS软件源添加到系统软件源。因为ROS本身具有一个单独的镜像去做维护,这个软件源是系统自身所没有的,需要我们自己去添加。
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt-get update
先更新一下软件源,这个指令会从上面的软件源配置里面去搜索所有ROS相关的安装包的路径,并更新到系统里面来。
sudo apt-get install ros-kinetic-desktop-full
安装桌面完整版,包含ROS、rqt、rviz、机器人通用库、2D/3D 模拟器、导航以及2D/3D感知等一些基本功能包。
安装速度稍微有点慢,请耐心等待。
rosdep是ROS里的一个工具,它可以用来帮我们完成一些功能包依赖的设置和安装。
sudo rosdep init
执行rosdep初始化。
如若显示上述错误,则是因为初始化时不能访问该网址。需要我们采取手动的方法,将20-default.list中的内容获取到并放到相应的位置。
具体操作如下:
一、首先进入github.com/ros/rosdistro去把这个包下载下来,或者自提:百度网盘链接,提取码:sfir 。
二、修改这个包中rosdep/source.list.d/下的文件20-default.list,将这个文件中指向raw.githubusercontent.com的url地址全部修改为指向本地文件的地址,也就是该下载好的包的地址。
# os-specific listings first
yaml file:///home/你的用户名/rosdistro/rosdep/osx-homebrew.yaml osx
# generic
yaml file:///home/你的用户名/rosdistro/rosdep/base.yaml
yaml file:///home/你的用户名/rosdistro/rosdep/python.yaml
yaml file:///home/你的用户名/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/你的用户名/rosdistro/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
注意:在py语言中:url本地文件地址格式是:file://+文件地址,后面更改其他文件中地址的时候也一样。
三、修改/usr/lib/python2.7/dist-packages/rosdep2下的sources_list.py文件。修改该默认url地址,位置大概在70行左右。
# default file to download with 'init' command in order to bootstrap
# rosdep
#DEFAULT_SOURCES_LIST_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list'
DEFAULT_SOURCES_LIST_URL = 'file:///home/你的用户名/rosdistro/rosdep/sources.list.d/20-default.list'
# seconds to wait before aborting download of rosdep data
四、修改/usr/lib/python2.7/dist-packages/rosdep2/rep3.py,位置位置大概在38行左右。
# location of targets file for processing gbpdistro files
REP3_TARGETS_URL = 'file:///home/你的用户名/rosdistro/releases/targets.yaml'
# seconds to wait before aborting download of gbpdistro data
修改/usr/lib/python2.7/dist-packages/rosdistro/__ init__.py,位置位置大概在68行左右。
# index information
DEFAULT_INDEX_URL = 'file:///home/你的用户名/rosdistro/index-v4.yaml'
def get_index_url():
再次执行rosdep初始化
sudo rosdep init
rosdep update
ROS安装了很多命令,需要通过环境变量告诉系统这些命令在什么位置。
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
将ROS的环境变量设置到系统里面来。
source ~/.bashrc
使设置环境变量生效。
rosinstall是一个经常使用的命令行工具,它使我们能够轻松地从一个命令中下载许多 ROS 包的源树,从而帮助我们安装ROS的一些依赖包的。
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
至此,ROS安装已全部完成。
为了检测ROS安装是否成功,还要对其进行测试。接下来我们运行一个小海龟例程。
roscore
rosrun turtlesim turtlesim_node
此时会弹出仿真器的窗口,里面有一只小海龟。
rosrun turtlesim turtle_teleop_key
这时便可以通过键盘控制小海龟移动了(注意鼠标的光标应该在这行命令所在的终端上):