ROS2 入门应用 元功能包(Python)


1. 基本文件

使用官方支持的Python创建功能包,需要一些基本文件:

  • package.xml :包含功能包的元信息的清单文件
  • setup.py:包含如何安装软件包的说明
  • setup.cfg:包含可执行文件
  • /<package_name> :与功能包同名的目录,包含__init__.py

最简单的文件夹可能就是:

my_package/
      setup.py
      package.xml
      resource/my_package

在工作空间的src文件夹创建功能包,使工作空间的顶层保持洁净
一个简单的工作空间可能是这样的:

workspace_folder/
    src/
      package_1/
          CMakeLists.txt
          package.xml

      package_2/
          setup.py
          package.xml
          resource/package_2
      ...
      package_n/
          CMakeLists.txt
          package.xml

2. 创建

在ROS 2中创建新功能包的命令语法:

ros2 pkg create --build-type ament_python <package_name>

这里创建一个功能包 my_package
将使用可选参数--build-type,选择ament_python模式
将使用可选参数--node-name,创建一个简单的Hello World类型可执行文件my_node

cd ~/ros2_ws/src
ros2 pkg create --build-type ament_python --node-name my_node my_package

现在在工作空间ros2_wssrc目录中有一个名为my_package_python的新文件夹
自动生成的文件和文件夹:

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

在功能包的my_package文件夹中存放自定义python功能源文件my_node.py
setup.py文件包含与package.xml相同的描述、维护者和许可字段,信息需保存一致

3. 编译

在工作空间根目录中运行colcon build来一次构建一个或者多个功能包

因为在《ROS2 入门应用 工作空间》已经有了功能包ros_tutorials
可以使用可选参数--packages-select,指定构建功能包

cd ~/ros2_ws
colcon build --packages-select my_package

或者构建全部功能包

cd ~/ros2_ws
colcon build

打开一个新终端,运行功能包的节点:

ros2 run my_package my_node

# Hi from my_package.

谢谢