ROS机器人项目开发11例(原书第2版)
上QQ阅读APP看书,第一时间看更新

2.6.2 获取ROS-2源码

为了顺利安装ROS-2,我们需要创建工作空间并将ROS-2的代码仓库复制至该工作空间。具体操作为使用以下命令:

成功执行上述命令后,终端窗口中将会提示ros2.repos已保存,如图2.8所示。

图2.8 获取最新的代码仓库

如果读者是高级用户,并且希望使用开发版本,则只需在前面的命令中将release-latest替换为master。如果读者想进一步试验,我们还是建议使用前面的命令,因为前面的代码树在发布之前会经过严格的测试。最后一步是使用以下命令导入仓库信息:

现在设置好了工作空间,下面我们开始安装依赖项。

1.使用rosdep安装依赖

和安装ROS-1时的操作一样,我们使用rosdep安装依赖项。读者在上一章中应当已经初始化了rosdep list。如果没有执行该操作,则执行以下命令(否则,跳到下一个命令):

然后,更新rosdep:

接下来安装以下依赖项:

正常情况下,成功执行上述命令后,终端窗口的内容将如图2.9所示。

图2.9 成功安装ROS依赖项的图示

如果读者想要额外安装DDS实现,则可以执行下一步骤,否则可以跳过该步骤。

2.安装DDS实现(可选)

本步骤供想要安装DDS实现的读者参考。安装过程如下:

1)读者需要知道的是,ROS-2运行于DDS之上,而DDS则有多家供应商的实现版本。在ROS-2中,默认的DDS实现中间件是快速RTPS。读者可以自行选择其他供应商的DDS实现,如OpenSplice或者Connext,相应的命令如下:

·OpenSplice:

·Connext:

需要注意的是,若安装Connext,则需要来自RTI的授权,当然你也可以尝试试用版,可以从https://www.rti.com/free-trial获取30天试用授权。

2)在获取官方或试用版授权后,需要设置授权文件路径。可以使用$RTI_LICENSE_FILE环境变量来指定授权文件路径,通过export命令为环境变量赋值,命令如下:

3)下载授权文件之后,需要通过$chmod+x命令对$.run文件进行权限设置。此外,还需要使用source命令导入配置文件,从而设置$NDDSHOME环境变量。进入相应目录的命令如下:

然后,使用source命令导入文件:

至此,就可以进行代码构建了,RTI支持的构建将与代码的构建一同完成。

3.构建代码

在ROS-1中,可以使用catkin工具来编译构建功能包。在ROS-2中,我们使用一个升级了的工具,它是catkin_make、catkin_make_isolated、catkin_tools和ament_tools(第一个ROS-2发行版中使用的构建系统)的迭代,称为colcon。这意味着colcon也可以用于编译ROS-1中的功能包以及ROS-2中没有功能包清单的功能包。

后面我们将展示如何使用colcon编译单独的功能包。下面,我们首先编译构建ROS-2。使用以下命令安装colcon:

安装完colcon之后,我们返回ROS-2的工作空间并编译构建ROS-2,命令如下:

然后使用以下命令编译功能包:

上述过程大概需要40分钟到1小时的时间,也可能会更长。本书作者大概花费了1时14分钟。在一切正常的情况下,读者将会看到与图2.10类似的终端显示。

图2.10 正常的编译过程

如图2.10所示,有9个功能包未进行编译构建——我们跳过了这9个功能包,因为我们没有选择安装DDS实现。下面,让我们尝试运行一些已安装功能包里的例子。