ROS2 包的使用
一个 ROS2 包可以看作是 ROS2 代码的容器。如果需要安装或者共享代码,那么代码应该组织在一个包中。有了软件包,就更方便的发布 ROS2 代码。
ROS2 包使用 ament 作为构建系统,colcon 作为构建工具。官方支持 CMake 和 Python 作为构建类型。
最小包要求
CMake
一个 CMake 包需要:
- package.xml,包括包的元数据。
 - CMakeLists.txt, 包括怎么构建包的代码。
 
Python
一个 python 包需要:
- package.xml, 包括包的元数据
 - setup.py, 安装包的指导
 - setup.cfg, 包中有可执行文件时需要这个文件
 - /<package_name> 一个和包名相同的目录,里面包括 
__init__.py 
包在 Workspace 中
一个 Workspace 下有多个包,可以包括 CMake 或者 Python
Workspace 工作空间
一个工作空间是一个目录,里面包括了 ROS2 的包。
下面是工作空间的例子
载入环境
source /opt/ros/dashing/setup.zsh
创建工作空间目录
mkdir StudyROS2
一般将所有的包放在 src 目录下 mkdir StudyROS2/src
下载现成的包
将包下载到 src 目录
git clone https://github.com/ros/ros_tutorials.git -b dashing-devel
ros_tutorials 目录下的 turtlesim 是实际的 package
安装依赖
在构建 Workspace 之前需要先安装依赖。
rosdep install -i --from-path src --rosdistro dashing -y
构建 Workspace
用 colcon build 构建整个工作空间。
colcon build --packages-up-to 构建指定的 package
colcon build --symlink-install 避免每次调整脚本时都重新生成
colcon build --event-handlers console_direct+ 构建的时候在控制台输出
构建后在工作空间目录下的目录如下:
 |  | 
加载当前 Workdspace 环境
 |  | 
local_setup.zsh 和 setup.zsh 的区别:
local_setup.zsh只会将当前 Workspace 的包加载到环境中。setup.zsh会将核心的 Workspace 的包加载到环境中。
包的使用
下面只会创建 CMake 包。
创建包
创建包的命令,在 src 目录中运行。
 |  | 
可以用 --node-name 创建一个简单的可执行目标。
 |  | 
构建包
colcon build
只构建指定包 colcon build --packages-select my_package
加载当前 Workspace 环境
source ./install/local_setup.zsh
现在就可以使用我们构建的包了。
运行包
 |  | 
自定义包信息
我们可以编辑 package.xml 修改里面的字段,如:description, license 等。
创建一个简单的发布者和订阅者
https://index.ros.org/doc/ros2/Tutorials/Writing-A-Simple-Cpp-Publisher-And-Subscriber