
第 2 章 命令行工具与 turtlesim学习目标用ros2 run启动节点用ros2 node查看节点信息用ros2 topic查看和发布话题数据用ros2 service、ros2 action、ros2 param与服务/动作/参数交互用rqt_graph可视化节点图1. 启动 turtlesimturtlesim 是一个专门用来学习 ROS 2 的轻量模拟器一只小乌龟可以在蓝色画布上游动并留下轨迹。启动它ros2 run turtlesim turtlesim_noderos2 run 功能包名 可执行文件名是运行节点的基本命令。此时桌面上应该出现乌龟窗口。再打开一个终端进入容器启动键盘遥控器dockerexec-itros2_learningbashsource/opt/ros/jazzy/setup.bash ros2 run turtlesim turtle_teleop_key在遥控器窗口里按方向键乌龟就会游动。提示第一个终端要一直保持运行turtlesim_node所有“第二个终端”命令都指新开的这个终端。2. 查看节点在第二个终端里ros2nodelist输出类似/teleop_turtle /turtlesim查看单个节点的详细信息ros2nodeinfo /turtlesim输出会列出这个节点发布/订阅的话题、提供的服务等——这就是节点“接线图”的文字版。3. 话题操作列出当前所有话题ros2 topic list ros2 topic list-t# 连同消息类型一起显示你会在输出中看到/turtle1/cmd_vel速度指令和/turtle1/pose乌龟位姿等话题。实时查看话题数据按CtrlC停止ros2 topicecho/turtle1/pose操作键盘让乌龟动一下可以看到位姿数据不断刷新x: 5.544444561004639 y: 5.544444561004639 theta: 0.0查看话题的详细信息发布者、订阅者、消息类型ros2 topic info-v/turtle1/cmd_vel统计消息发布频率ros2 topic hz /turtle1/pose直接向话题发布数据不需要写任何代码ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist{linear: {x: 2.0}, angular: {z: 1.0}}这条命令让乌龟一边前进一边转弯。命令里{linear: {x: 2.0}, angular: {z: 1.0}}是 Twist 消息的字段值线速度 2 m/s、角速度 1 rad/s。4. 服务操作列出所有服务ros2servicelist查看服务类型ros2servicetype/spawn调用服务在 (2, 2) 位置生成一只新乌龟ros2servicecall /spawn turtlesim/srv/Spawn{x: 2, y: 2, theta: 0.2}调用服务清空轨迹ros2servicecall /clear std_srvs/srv/Empty{}注意服务的调用方式是ros2 service call 服务名 类型 参数。5. 动作操作列出所有动作ros2 action list ros2 action list-t# 连同类型调用动作让乌龟原地旋转 90 度约 1.57 弧度可以观察到进度反馈ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute{theta: 1.57}6. 参数操作查看节点的参数ros2 param list /turtlesim读取参数ros2 param get /turtlesim background_b修改参数把背景改成红色系ros2 paramset/turtlesim background_r200设置后乌龟窗口背景立即变化——参数让程序运行中可以调配置。7. 用 rqt_graph 可视化装好工具后如缺失可执行sudo apt install -y ros-jazzy-rqt-graphrqt_graph会弹出一个窗口以图形方式显示节点、话题、服务的连接关系。绿色椭圆是节点彩色连线是话题/服务把鼠标放上去可以看到消息类型。这是理解 ROS 2 架构最好的工具之一。8. 本章小结常用命令速查目的命令运行节点ros2 run 包名 可执行名列出节点ros2 node list节点详情ros2 node info 节点名列出话题ros2 topic list -t查看话题内容ros2 topic echo 话题手动发布ros2 topic pub 话题 类型 {...}调用服务ros2 service call 服务名 类型 {...}发送动作ros2 action send_goal 动作名 类型 {...}查看/设置参数ros2 param list/get/set 节点名 ...可视化rqt_graph常见问题现象原因与解决办法ros2 node list只有/ROS 环境未加载或节点不在同一个 DDS 域先source /opt/ros/jazzy/setup.bash并确认两个终端在同一个容器里键盘遥控没反应光标要先点击遥控器终端窗口另外确认 turtlesim_node 还开着package turtlesim not found执行sudo apt install -y ros-jazzy-turtlesim找不到命令rqt_graph执行sudo apt install -y ros-jazzy-rqt-graph练习题用ros2 service call /spawn生成两只乌龟说说生成后节点列表和话题列表有什么变化。用一条ros2 topic pub命令让乌龟画一个圆再用/clear清空后画一个反向的圆。打开rqt_graph观察按下键盘时哪两个节点之间出现了数据流动。