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