Bootstrap

ROS2 学习笔记13:创建 ROS2 包

Background 背景

1 什么是ROS2 包

包可以视为你的ros2代码的容器.如果你想安装你的程序或者分享给别人,你需要(把代码)有组织放到一个包里面。有了包,你可以分享ros2工作内容,别人可以方便地编译以及使用。

ros2包创建使用ament作为编译系统,colcon作为编译工具。使用CMake或者python来创建一个包,这些是官方支持的,当然也存在其他构建方式。

2 ROS2包的组成

ROS2 CMake或者python 包 应至少包含以下相关文件:

CMake
CMakeLists.txt :描述如何编译代码的文件
include/<package_name> :包含包的公共头文件的目录
package.xml:包含包的基本信息的文件
src:包含包源代码的目录

python
package.xml:包含包的基本信息的文件
resource/<package_name>:包的标记文件
setup.cfg:该文件的作用是,让ros2 run指令可以找到包里面的可执行文件
setup.py:安装该包的使用说明
/<package_name>:一个和包名同名的目录,可让ros2工具用来找到你的包,其包含__init__.py

最简单的包文件结构如下:
备注: 不同版本略有差异

CMake

my_package/
     CMakeLists.txt
     include/my_package/
     package.xml
     src/

python

my_package/    
      package.xml    
      resource/my_package    
      setup.cfg    
      setup.py    
      my_package/    

3 工作空间的包

一个工作区可以包含任意数量的软件包,每个软件包都有自己的文件夹。您也可以在一个工作区中包含不同构建类型的软件包(CMakePython 等)。但不能嵌套软件包。

最佳做法是在工作区中建立一个 src 文件夹,并在其中创建软件包。这样可以保持工作区顶层的 “干净”。

工作空间可能是这样的

workspace_folder/
    src/
      cpp_package_1/
          CMakeLists.txt
          include/cpp_package_1/
          package.xml
          src/

      py_package_1/
          package.xml
          resource/py_package_1
          setup.cfg
          setup.py
          py_package_1/
      ...
      cpp_package_n/
          CMakeLists.txt
          include/cpp_package_n/
          package.xml
          src/

Prerequisites 前提

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;