一、ROS 2 机器人示例 - 海龟仿真器
1、启动海龟仿真器节点
打开终端,输入以下命令即可启动海龟仿真器节点。运行成功后,通常会弹出一个包含海龟的窗口。
ros2 run turtlesim turtlesim_node
2、启动控制节点
为了控制海龟移动,我们需要在另一个命令行终端中运行键盘控制节点。
ros2 run turtlesim turtle_teleop_key
此时,选中该终端窗口,使用键盘方向键即可操作:左右箭头控制旋转,上下箭头控制前进或后退。两个终端协同工作,实现了仿真环境下的交互控制。
3、ROS 节点分析工具 - rqt
当我们在不同终端分别启动了仿真器和控制节点后,可以通过 rqt 工具来可视化节点间的通信关系。
在第三个终端输入:
rqt
启动后,在菜单栏选择 Plugins / Introspection / Node Graph,即可看到 ROS 2 的节点图。如果初始显示内容过小,可以使用鼠标滚轮放大,或者点击界面中的自适应按钮让图表填满窗口。
观察节点图可以发现:左侧的 /turtlesim 是海龟模拟器节点,右侧的 /teleop_turtle 是键盘控制节点。右侧节点通过话题 /turtle1/cmd_vel 向左侧节点发送了控制指令,这就是底层的数据流向。
二、ros2 run 命令解析
1、设计理念
ros2 run 是 ROS 2 命令行工具中用于启动单个功能包内可执行文件节点的核心子命令。其格式设计严格遵循 ROS 2'功能包 - 可执行文件 - 参数分离'的设计理念。
该命令分为基础格式(仅启动可执行文件)和完整格式(含可执行文件参数 + ROS 层面参数),其中完整格式覆盖了绝大多数场景。核心逻辑在于定位功能包 -> 找到可执行文件 -> 启动并接入 ROS 2 通信系统。掌握该格式的关键,在于明确必选部分的匹配规则、可选部分的顺序要求,以及参数解析的边界。
2、ros2 run 基础格式
基础命令格式如下:
ros2 run <package_name> <executable_name>
ros2参数:ROS 2 命令行入口,所有 ROS 2 终端操作的统一前缀,负责加载核心工具链和 DDS 通信层。run参数:ros2的子命令,功能是查找系统或本地工作空间中已安装的功能包,定位该包内编译生成的可执行文件,并启动它使其成为 ROS 2 节点。<package_name>参数:功能包名称。需已通过colcon build编译(本地工作空间)或apt install安装(系统级)。命名通常遵循小写字母加下划线规范,如turtlesim。<executable_name>参数:功能包下编译生成的可执行文件名称,通常在CMakeLists.txt或setup.py中声明。
3、ros2 run 完整格式
完整命令格式允许传递更多参数:
ros2 run <package_name> <executable_name> [executable_args...] [--ros-args <ros_args...>]
- 符号说明:
<>表示必选参数,[]表示可选参数, 表示可重复参数。


