ROS机器人开发实践
上QQ阅读APP看书,第一时间看更新

1.2 如何安装ROS

1.2.1 操作系统与ROS版本的选择

ROS目前主要支持Ubuntu操作系统,同时也可以在OS X、Android、Arch、Debian等系统上运行。随着近几年嵌入式系统的快速发展,ROS也针对ARM处理器编译了核心库和部分功能包。

到2018年年初为止,ROS已经发布了如表1-1所示的多个版本。

表1-1 ROS所有发布版本的相关信息

本书选择2016年发布的长期支持版本ROS Kinetic Kame,这也是ROS发布的第10个版本,ROS官方称将为该版本提供长达5年的支持与服务,并保证其与Ubuntu 16.04长期支持版的生命周期同步。

ROS的安装方法主要有两种:软件源安装和源码编译安装。软件源(Repository)为系统提供了一个庞大的应用程序仓库,只要通过简单的命令即可从仓库中找到需要的软件并完成下载安装。相反,源码编译的方法相对复杂,需要手动解决繁杂的软件依赖关系,更适合那些对系统比较熟悉而且希望在未支持的平台上安装ROS的开发者。

1.2.2 配置系统软件源

以软件源安装为例,首先需要配置Ubuntu系统允许restricted(不完全的自由软件)、universe(Ubuntu官方不提供支持与补丁,全靠社区支持)、multiverse(非自由软件,完全不提供支持和补丁)这三种软件源。如果没有对系统软件源做过修改,Ubuntu系统安装完毕后会默认允许以上三种软件源。为保证配置无误,建议打开Ubuntu软件中心的软件源配置界面,检查各选项是否与图1-4相同。

图1-4 Ubuntu系统软件源的设置

1.2.3 添加ROS软件源

sources.list是Ubuntu系统保存软件源地址的文件,位于/etc/apt目录下,在这一步中我们需要将ROS的软件源地址添加到该文件中,确保后续安装可以正确找到ROS相关软件的下载地址。

打开终端,输入如下命令,即可添加ROS官方的软件源镜像:


$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

为了提高软件的下载、安装速度,也可以使用以下任意一种国内的镜像源:

·中国科学技术大学(USTC)镜像源:


$ 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'

·中山大学(Sun Yat-Sen University)镜像源:


$ sudo sh -c '. /etc/lsb-release && echo "deb http://mirror.sysu.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

·易科机器人实验室(ExBot Robotics Lab)镜像源:


$ sudo sh -c '. /etc/lsb-release && echo "deb http://ros.exbot.net/rospackage/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

1.2.4 添加密钥

使用如下命令添加密钥:


$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

1.2.5 安装ROS

现在终于可以开始安装ROS了。首先使用如下命令,以确保之前的软件源修改得以更新:


$ sudo apt-get update

ROS系统非常庞大,包含众多功能包、函数库和工具,所以ROS官方为用户提供了多种安装版本:

·桌面完整版安装(Desktop-Full):这是最为推荐的一种安装版本,除了包含ROS的基础功能(核心功能包、构建工具和通信机制)外,还包含丰富的机器人通用函数库、功能包(2D/3D感知功能、机器人地图建模、自主导航等)以及工具(rviz可视化工具、gazebo仿真环境、rqt工具箱等)。


$ sudo apt-get install ros-kinetic-desktop-full

·桌面版安装(Desktop):该版本是完整安装的精简版,去掉了机器人功能包和部分工具,仅包含ROS基础功能、机器人通用函数库、rqt工具箱和rviz可视化工具。


$ sudo apt-get install ros-kinetic-desktop

·基础版安装(ROS-Base):基础版精简了机器人通用函数库、功能包和工具,仅保留了没有任何GUI的基础功能(核心功能包、构建工具和通信机制)。因此该版本软件的规模最小,也是ROS需求的“最小系统”,非常适合直接安装在对性能和空间要求较高的控制器之上,为嵌入式系统使用ROS提供了可能。


$ sudo apt-get install ros-kinetic-ros-base

·独立功能包安装(Individual Package):无论使用以上哪种安装方式,都不可能将ROS社区内的所有功能包安装到计算机上,在后期的使用中会时常根据需求使用如下命令安装独立的功能包:


$ sudo apt-get install ros-kinetic-PACKAGE

·其中PACKAGE代表需要安装的功能包名,例如安装机器人SLAM地图建模gmapping功能包时,可使用如下命令安装:


$ sudo apt-get install ros-kinetic-slam-gmapping

1.2.6 初始化rosdep

rosdep是ROS中自带的工具,主要功能是为某些功能包安装系统依赖,同时也是某些ROS核心功能包必须用到的工具。完成以上安装步骤后,需要使用以下命令进行初始化和更新:


$ sudo rosdep init
$ rosdep update

1.2.7 设置环境变量

现在ROS已经成功安装到计算机中了,默认在/opt路径下。在后续使用中,由于会频繁使用终端输入ROS命令,所以在使用之前还需要对环境变量进行简单设置。

Ubuntu默认使用的终端是bash,在bash中设置ROS环境变量的命令如下:


$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc

如果你使用的终端是zsh,则需要将以上命令中的bash都修改为zsh:


$ echo "source /opt/ros/kinetic/setup.zsh" >> ~/.zshrc
$ source ~/.zshrc

ROS通过环境变量找到命令的所在位置,那么问题来了,如果需要安装多个ROS版本,那么怎样确定当前终端使用的命令是哪个ROS版本的呢?当然是通过设置环境变量。如果希望改变当前终端所使用的环境变量,则可以输入以下命令:


$ source /opt/ros/ROS-RELEASE/setup.bash

其中ROS-RELEASE代表希望使用的ROS版本(如lunar、kinetic、indigo、hydro、groovy等)。

当然,这种方法只能修改当前终端,如果再打开一个新终端,还是会默认使用bash或zsh配置文件中设置的环境变量。终极方法是打开~/.bashrc或者~/.zshrc文件,找到设置环境变量的命令,然后修改对应的ROS版本,保存退出,此后重新打开的所有终端就没有问题了。

1.2.8 完成安装

恭喜来到ROS安装的尾声部分,现在打开终端,输入roscore命令(见图1-5),有没有看到ROS已经可以在计算机上运行起来了!

图1-5 roscore命令启动成功后的日志信息

rosinstall也是ROS中的一个常用工具,可以下载和安装ROS中的功能包程序。这个工具暂时不是必需的,但是为了便于后续开发,还是建议通过如下命令安装:


$ sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential