ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

[ROS2] --- 手动编写一个节点

2026/8/2 12:56:08 拓冰建站 浏览量
[ROS2] --- 手动编写一个节点

1 准备工作

1.1 创建/编译工作空间

  • 创建工作空间
mkdir -p ~/dev_ws/src
cd ~/dev_ws/src

1. 2 创建功能包

ros2 pkg create learning01_write_a_node --build-type ament_cmake --dependencies rclcpp

可以看到目录结构如下:
在这里插入图片描述

1. 3 创建节点

在learing01_write_a_node/src下创建一个learning01_test.cpp文件

2 编码

src/learing01_write_a_node/src/learning01_test.cpp

#include "rclcpp/rclcpp.hpp"int main(int argc, char **argv)
{rclcpp::init(argc, argv);/*产生一个Wang2的节点*/auto node = std::make_shared<rclcpp::Node>("wang2");// 打印一句自我介绍RCLCPP_INFO(node->get_logger(), "hello world");/* 运行节点,并检测退出信号*/rclcpp::spin(node);rclcpp::shutdown();return 0;
}

src/learing01_write_a_node/CMakeLists.txt,在CmakeLists.txt最后一行加入下面代码

add_executable(learning01_write_a_node src/learning01_test.cpp)
ament_target_dependencies(learning01_write_a_node rclcpp)install(TARGETSlearning01_write_a_nodeDESTINATION lib/${PROJECT_NAME}
)

3 编译运行

cd ~/dev_ws/
colcon build
source install/setup.sh 
ros2 run learning01_write_a_node learning01_write_a_node

运行截图如下:
在这里插入图片描述

4 概念补充介绍

4.1 启动节点指令

ros2 run <package_name> <executable_name>

如:ros2 run turtlesim turtlesim_node

4.2 工作空间

工作空间是包含若干个功能包的目录。
一个工作空间下可以有多个功能包,一个功能包可以有多个节点存在

4.3 功能包

功能包可以理解为存放节点的地方,ROS2中功能包根据编译方式的不同分为三种类型。

  • ament_python,适用于python程序
  • cmake,适用于C++
  • ament_cmake,适用于C++程序,是cmake的增强版

功能包常见CLI(command line interface)

# 创建功能包
ros2 pkg create <package-name>  --build-type  {cmake,ament_cmake,ament_python}  --dependencies <依赖名字>#  列出可执行文件
ros2 pkg executables <package_name># 列出所有的包
ros2 pkg list