背景
该文档使用的Colcon是一个用于改进buiding和testing工作流的命令行工具。它能自动地处理和设置使用各种工具包的环境。
该文档的内容基本与ROS2的源代码build过程一致。要对源代码进行build,也需要安装一些依赖包,可参照ROS2的安装过程。

基础
ROS工作空间是一个有着特定结构的目录。通常里面都包含一个src子目录。Src子目录里面就是ROS包的源代码的所在。这个子目录在开始时一般是空的。
Colcon默认会创建与src同级的其它目录:

  • Build目录,该目录存储building的过程文件。对每个package在里面都会创建一个子目录,里面CMake会被调用。
  • Install目录,该目录是每个package的安装所在地。默认情况下每个包会安装在单独的子目录中。

创建目录结构
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws

添加一个源代码
作为例子,我们假设没有安装任何的ROS2,将所有的ROS2源代码下载到/ros2_ws/src目录中。

wget https://raw.githubusercontent.com/ros2/ros2/master/ros2.repos
vcs import ~/ros2_ws/src < ros2.repos


Building
Colcon支持“—symlink-install”选项,它允许当source空间中的文件改变时安装的文件也会随着改变。
Building的命令为:

colcon build --symlink-install 


当其中出现qt_gui_cpp的相关错误时,可以考虑安装上rqt的相关包:

sudo apt install ros-$ROS_DISTRO-rqt*


Testing
为了测试build好的packages,可以运行:

colcon test


设置环境
当colcon成功地build完之后,packages会安装在”install”目录中。为了使用其中的可执行文件和库,我们需要将其目录添加到搜索路径中。Colcon会在”install”目录中生成所需脚本来完成环境的设置。在命令行执行如下:

. install/local_setup.bash


尝试其中的demo
该demo中国talker节点发布主题消息,listener则订阅并显示消息

ros2 run demo_nodes_cpp listener &
ros2 run demo_nodes_cpp talker


开发自己的package
Colcon使用和ROS1中catkin工具一样的package.xml来定义包。你可以在src目录中创建自己的package。通常会另外创建一个workspace来开发自己的包

mkdir -p ~/ros2_my_ws/src
cd ~/ros2_my_ws/src


同时可以将原来workspace中的实例拷贝过来

git clone ~/ros2_ws/src/ros2/examples
cd ..
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Debug


当不使用”~/ros2_my_ws/install/local_setup.bash”时,listener和talker示例仍然是指向源”ros2_ws”中的程序。
可以使用”ros2 pkg create packname”来创建一个自己的package。

————————————————