ROS2 使用功能包组织 Python 节点
在 ROS2 中,功能包是组织代码的基本单元。本文将详细介绍如何创建、配置、构建和运行一个基于 Python 的 ROS2 功能包,帮助你理解 Python 节点在 ROS2 中的组织逻辑。
一、创建 Python 功能包
首先,我们使用 ros2 pkg create 命令创建一个 Python 类型的功能包。打开终端,执行以下命令:
ros2 pkg create demo_python_pkg --build-type ament_python --license Apache-2.0
--build-type ament_python:指定功能包的构建类型为ament_python(适用于 Python 节点)。--license Apache-2.0:指定许可证类型(此处选择 Apache-2.0)。
执行后,会生成如下目录结构:
demo_python_pkg/
├── demo_python_pkg/ # Python 模块根目录(存放所有 Python 代码)
│ ├── __init__.py # 标识该目录为 Python 模块
│ └── python_node.py # 我们后续编写的 Python 节点文件
├── resource/ # 资源目录(可存放配置、模型等文件)
├── test/ # 测试目录(存放代码质量测试脚本)
│ ├── test_copyright.py # 版权合规性测试
│ ├── test_flake8.py # 代码风格(PEP8)测试
│ └── test_pep257.py # 文档字符串(PEP257)测试
├── LICENSE # 许可证文件(定义代码使用权限)
├── package.xml # ROS2 功能包核心配置文件(声明元信息和依赖)
├── setup.cfg # setuptools 构建配置文件
└── setup.py # Python 包构建脚本(定义元信息、可执行入口等)
二、Python 功能包结构解析
下面逐一说明每个文件/目录的作用:
| 文件/目录 | 作用说明 |
|---|---|
demo_python_pkg/(子目录) | Python 模块的根目录,所有 Python 代码文件需放在此目录下。 |
__init__.py | 标识该目录为Python 模块,使 Python 解释器能将其识别为可导入的包。 |
resource/ | 存放功能包的资源文件(如配置文件、模型文件等),本示例中是一个空目录。 |
test/ | 存放自动化测试脚本,用于验证代码版权、风格、文档等合规性。 |

