ROS2- rclicpp rclpy编写节点 -04

1. rclcpp

mkdir -p chapt2_ws/src/ && cd chapt2_ws/src
ros2 pkg create example_cpp --build-type ament_cmake --dependencies rclcpp

example_cpp/src下面 创建node_01.cpp


#include "rclcpp/rclcpp.hpp"

int main(int argc, char **argv)
{
    /* 初始化rclcpp  */
    rclcpp::init(argc, argv);
    /*产生一个node_01的节点*/
    auto node = std::make_shared<rclcpp::Node>("node_01");
    // 打印一句自我介绍
    RCLCPP_INFO(node->get_logger(), "node_01节点已经启动.");
    /* 运行节点,并检测退出信号 Ctrl+C*/
    rclcpp::spin(node);
    /* 停止运行 */
    rclcpp::shutdown();
    return 0;
}

在CmakeLists.txt最后一行加入下面三行代码。

add_executable(node_01 src/node_01.cpp)
ament_target_dependencies(node_01 rclcpp)

install(TARGETS
  node_01
  DESTINATION lib/${PROJECT_NAME}
)

chapt2_ws下面:
colcon build
source install/setup.bash
ros2 run example_cpp node_01

another terminal:
ros2 node list

2. rclpy

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

example_py下编辑node_02.py:

import rclpy
from rclpy.node import Node

def main(args=None):
"""
ros2运行该节点的入口函数
编写ROS2节点的一般步骤
1. 导入库文件
2. 初始化客户端库
3. 新建节点对象
4. spin循环节点
5. 关闭客户端库
"""
rclpy.init(args=args) # 初始化rclpy
node = Node("node_02") # 新建一个节点
node.get_logger().info("大家好,我是node_02.")
rclpy.spin(node) # 保持节点运行,检测是否收到退出指令(Ctrl+C)
rclpy.shutdown() # 关闭rclpy

修改setup.py
entry_points={
'console_scripts': [
"node_02 = example_py.node_02:main"
],
},
)

cd chapt2/chapt2_ws/
colcon build
source install/setup.bash
ros2 run example_py node_02

另开一个窗口:
source install/setup.bash
ros2 node list

posted @ 2025-06-09 10:30  jack-chen666  阅读(34)  评论(0)    收藏  举报