ros2命令行工具与 turtlesim

第 2 章 命令行工具与 turtlesim

学习目标

  • ros2 run 启动节点
  • ros2 node 查看节点信息
  • ros2 topic 查看和发布话题数据
  • ros2 serviceros2 actionros2 param 与服务/动作/参数交互
  • rqt_graph 可视化节点图

1. 启动 turtlesim

turtlesim 是一个专门用来学习 ROS 2 的轻量模拟器,一只小乌龟可以在蓝色画布上游动并留下轨迹。启动它:

bash 复制代码
ros2 run turtlesim turtlesim_node

ros2 run <功能包名> <可执行文件名> 是运行节点的基本命令。此时桌面上应该出现乌龟窗口。

再打开一个终端进入容器,启动键盘遥控器:

bash 复制代码
docker exec -it ros2_learning bash
source /opt/ros/jazzy/setup.bash
ros2 run turtlesim turtle_teleop_key

在遥控器窗口里按方向键,乌龟就会游动。

提示:第一个终端要一直保持运行(turtlesim_node),所有"第二个终端"命令都指新开的这个终端。

2. 查看节点

在第二个终端里:

bash 复制代码
ros2 node list

输出类似:

text 复制代码
/teleop_turtle
/turtlesim

查看单个节点的详细信息:

bash 复制代码
ros2 node info /turtlesim

输出会列出这个节点发布/订阅的话题、提供的服务等------这就是节点"接线图"的文字版。

3. 话题操作

列出当前所有话题:

bash 复制代码
ros2 topic list
ros2 topic list -t    # 连同消息类型一起显示

你会在输出中看到 /turtle1/cmd_vel(速度指令)和 /turtle1/pose(乌龟位姿)等话题。

实时查看话题数据(按 Ctrl+C 停止):

bash 复制代码
ros2 topic echo /turtle1/pose

操作键盘让乌龟动一下,可以看到位姿数据不断刷新:

text 复制代码
x: 5.544444561004639
y: 5.544444561004639
theta: 0.0

查看话题的详细信息(发布者、订阅者、消息类型):

bash 复制代码
ros2 topic info -v /turtle1/cmd_vel

统计消息发布频率:

bash 复制代码
ros2 topic hz /turtle1/pose

直接向话题发布数据(不需要写任何代码):

bash 复制代码
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. 服务操作

列出所有服务:

bash 复制代码
ros2 service list

查看服务类型:

bash 复制代码
ros2 service type /spawn

调用服务:在 (2, 2) 位置生成一只新乌龟:

bash 复制代码
ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2}"

调用服务清空轨迹:

bash 复制代码
ros2 service call /clear std_srvs/srv/Empty "{}"

注意服务的调用方式是:ros2 service call <服务名> <类型> "<参数>"

5. 动作操作

列出所有动作:

bash 复制代码
ros2 action list
ros2 action list -t    # 连同类型

调用动作让乌龟原地旋转 90 度(约 1.57 弧度),可以观察到进度反馈:

bash 复制代码
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: 1.57}"

6. 参数操作

查看节点的参数:

bash 复制代码
ros2 param list /turtlesim

读取参数:

bash 复制代码
ros2 param get /turtlesim background_b

修改参数(把背景改成红色系):

bash 复制代码
ros2 param set /turtlesim background_r 200

设置后乌龟窗口背景立即变化------参数让程序运行中可以调配置。

7. 用 rqt_graph 可视化

装好工具后(如缺失可执行 sudo apt install -y ros-jazzy-rqt-graph):

bash 复制代码
rqt_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

练习题

  1. ros2 service call /spawn 生成两只乌龟,说说生成后节点列表和话题列表有什么变化。
  2. 用一条 ros2 topic pub 命令让乌龟画一个圆,再用 /clear 清空后画一个反向的圆。
  3. 打开 rqt_graph,观察按下键盘时哪两个节点之间出现了数据流动。
相关推荐
DogDaoDao4 小时前
Magma:微软如何用一个模型打通数字与物理世界的 AI Agent
人工智能·微软·机器人·大模型·机器人模型·智能体·magma
新新学长搞科研6 小时前
【IEEE出版/会议级别高】2026年具身人工智能与机器人国际学术会议(ICEAR 2026)
人工智能·机器人
陈皮波比茶6 小时前
Python项目实战-网络机器人(爬虫)
开发语言·网络·爬虫·python·机器人
宏集科技工业物联网9 小时前
微型线性伺服执行器如何驱动人形机器人关节?从驱动原理到实际选型
经验分享·机器人·具身智能·人形机器人·线性伺服执行器
一知半解仙11 小时前
当机器人学会泛化,而我在写Java:一名后端开发者的2026年8月21日观察手记
java·开发语言·机器人
别动我齐刘海21 小时前
机器人运动控制学习2——基础进阶
c++·人工智能·神经网络·学习·目标检测·机器学习·机器人
HBYKKJ1 天前
格雷希尔GFL浮动组件:大范围浮动补偿赋能自动化产线高效柔性对接,兼容大部分对正场景,适配市面常见的机器人末端执行器与工装安装板
人工智能·机器人·自动化
恒锐丰小瑞1 天前
率能SS6810H 32V/1A/双通道H桥驱动芯片,PWM电流控制与混合衰减模式,用于POS打印机/安防相机/机器人
嵌入式硬件·数码相机·机器人·硬件工程
thesky1234561 天前
智能体面试准备(四十三):具身智能体与机器人实操——从 VLA 到 Sim2Real
机器人·导航·操作·具身智能·智能体·vla·视觉语言动作
恒锐丰小瑞1 天前
率能SS6812T 40V/1A/双通道H桥驱动芯片,PWM电流控制与混合衰减模式(eTSSOP28),用于POS打印机/安防相机/机器人
单片机·嵌入式硬件·数码相机·机器人