- 使用 RCLPY 编写节点
- 创建工作空间:
cd d2lros2/chapt2/
mkdir -p chapt2_ws/src- 创建功能包:
cd chapt2/chapt2_ws/src/
ros2 pkg create example_py --build-type ament_python --dependencies rclpy- 目录结构:
.
├── example_py
│ └── __init__.py
├── package.xml
├── resource
│ └── example_py
├── setup.cfg
├── setup.py
└── test
├── test_copyright.py
├── test_flake8.py
└── test_pep257.py
3 directories, 8 files- 在
./example_py下创建node_02.py作为示例,进行代码编写:
import rclpy
from rclpy.node import Node
def Node02(Node):
def __init__(self, name):
super().__init__(name)
self.get_logger().info("大家好,我是node_02.")
def main(args=None):
"""
ros2运行该节点的入口函数
编写ROS2节点的一般步骤
1. 导入库文件
2. 初始化客户端库
3. 新建节点对象
4. spin循环节点
5. 关闭客户端库
"""
rclpy.init(args=args) # 初始化rclpy
node = Node02("node_02") # 新建一个节点
rclpy.spin(node) # 保持节点运行,检测是否收到退出指令(Ctrl+C)
rclpy.shutdown() # 关闭rclpy- 修改
setup.py:setup.py这段配置是声明一个ROS2的节点,声明后使用colcon build才能检测到,从而将其添加到install目录下。
entry_points={
'console_scripts': [
"node_02 = example_py.node_02:main"
],
},
)- 编译节点:详见 Colcon
cd chapt2/chapt2_ws/
colcon build-
source 环境 这一步主要是为了将刚刚编译好的功能包及其依赖项的路径和环境变量正确设置到当前的终端会话中,这样才能顺利运行功能包中的节点。这包括添加可执行文件路径(将路径添加到系统的
PATH环境变量中)、设置ROS2环境变量(如发行版、指定功能包的安装路径等),并确保依赖项可用。每次打开一个新的终端窗口时,都需要重新运行
source install/setup.bash,因为新的终端会话不会自动继承这些环境变量设置。
source install/setup.bash- 运行节点
ros2 run example_py node_02- 测试
当节点运行起来后,可以再尝试使用
ros2 node list指令来查看现有的节点。