目标:使用 Python 创建并运行一个带有 ROS 参数的类。
教程级别:初学者
时间:20 分钟
目录
背景
先决条件
任务
1. 创建一个包
2. 编写 Python 节点
3. 建立并运行
摘要
下一步
背景
在创建您自己的节点时,有时需要添加可以从启动文件设置的参数。
本教程将向您展示如何在 Python 类中创建这些参数,以及如何在启动文件中设置它们。
先决条件
在之前的教程中,您学习了如何创建工作空间和创建软件包。您还了解了参数及其在 ROS 2 系统中的功能。
任务
1. 创建一个包
打开一个新的终端并且初始化您的 ROS 2 安装,这样 ros2
命令就会生效。
按照这些指示创建一个名为 ros2_ws
的新工作区。
请记住,包应该在 src
目录中创建,而不是在工作区的根目录中。导航到 ros2_ws/src
并创建一个新包:
cxy@ubuntu2404-cxy:~/ros2_ws/src$ ros2 pkg create --build-type ament_python --license Apache-2.0 python_parameters --dependencies rclpy
going to create a new package
package name: python_parameters
destination directory: /home/cxy/ros2_ws/src
package format: 3
version: 0.0.0
description: TODO: Package description
maintainer: ['cxy <cxy@todo.todo>']
licenses: ['Apache-2.0']
build type: ament_python
dependencies: ['rclpy']
creating folder ./python_parameters
creating ./python_parameters/package.xml
creating source folder
creating folder ./python_parameters/python_parameters
creating ./python_parameters/setup.py
creating ./python_parameters/setup.cfg
creating folder ./python_parameters/resource
creating ./python_parameters/resource/python_parameters
creating ./python_parameters/python_parameters/__init__.py
creating folder ./python_parameters/test
creating ./python_parameters/test/test_copyright.py
creating ./python_parameters/test/test_flake8.py
creating ./python_parameters/test/test_pep257.py
您的终端将返回一条消息,确认您的包 python_parameters
及其所有必要的文件和文件夹已创建。
` --dependencies
`参数将自动向` package.xml
`和` CMakeLists.txt
`添加必要的依赖行。
1.1 更新 package.xml
因为在创建包时您使用了 --dependencies
选项,所以您无需手动添加依赖项到 package.xml
或 CMakeLists.txt
。
一如既往,不过,请确保将描述、维护者电子邮件和姓名以及许可信息添加到 package.xml
。
<description>Python parameter tutorial</description>
<maintainer email="you@email.com">Your Name</maintainer>
<license>Apache-2.0</license>
2. 编写 Python 节点
在 ros2_ws/src/python_parameters/python_parameters
目录中,创建一个名为 python_parameters_node.py
的新文件,并将以下代码粘贴其中:
cxy@ubuntu2404-cxy:~/ros2_ws/src/python_parameters/python_parameters$ gedit python_parameters_node.py
# 导入rclpy模块,这是ROS2中Python客户端库的一部分
import rclpy
# 导入rclpy.node模块,这是ROS2中用于创建节点的模块
import rclpy.node
# 定义一个MinimalParam类,它继承自rclpy.node.Node类
class MinimalParam(rclpy.