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

浙公网安备 33010602011771号