【多喝热水系列】从零开始的ROS2之旅——Day9 初识话题通信:基本命令

【多喝热水系列】从零开始的ROS2之旅------Day9 初识话题通信:基本命令

欢迎来到"多喝热水"系列的Day9经过前8天的铺垫,我们已经对ROS2的核心概念(节点)有了初步认知,今天就带着这些知识,实操话题相关的命令,手把手拆解每一条命令的底层逻辑,真正做到"知其然也知其所以然"。

一、核心目标

今天我们的核心任务是掌握:

  • ros2 run turtlesim turtlesim_node
  • ros2 node info /turtlesim
  • ros2 topic echo /turtle1/pose
  • ros2 topic info /turtle1/cmd_vel -v
  • ros2 interface show geometry_msgs/msg/Twist
  • ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 1.0}}"
  • ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist "{angular: {z: 1.0}}"

二、各代码运行和解释

1、ROS2中用于启动节点的核心指令,作用是"运行某个功能包下的指定节点",语法格式为ros2 run <功能包名> <节点名>。

bash 复制代码
ros2 run turtlesim turtlesim_node

2、用于查询指定节点详细信息的指令,语法为 ros2 node info <节点路径/节点名>,节点的完整路径(此处节点名与路径一致),即我们上一步启动的小海龟节点。

bash 复制代码
ros2 node info /turtlesim

截图信息解读:

从截图中能清晰看到节点的三大核心信息:

  1. 订阅的话题(Subscribed Topics):/turtle1/cmd_vel,这是小海龟接收运动控制指令的话题,后续我们会通过这个话题发布速度指令。

  2. 发布的话题(Published Topics):/turtle1/pose、/rosout 等,其中 /turtle1/pose 是核心,用于实时发布小海龟的姿态信息(位置、角度、速度等)。

3、上一步我们知道节点会发布 /turtle1/pose 话题,里面包含小海龟的实时姿态,用以下命令监听该话题的数据。

bash 复制代码
ros2 topic echo /turtle1/pose
  • x/y:小海龟在仿真窗口中的坐标位置(窗口左上角为原点)。

  • theta:小海龟的朝向角度(以弧度为单位,0表示朝右,逆时针为正方向)。

  • linear_velocity/angular_velocity:小海龟的线速度(前+,后-)和角速度(逆+,顺-)。

4、查看某个话题的具体信息:例命令

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

- ros2 topic info:查询指定话题基本信息的指令,默认只显示消息类型和发布/订阅者数量。

  • /turtle1/cmd_vel:要查询的话题名称,"cmd_vel"是"command velocity"的缩写,即"速度指令"话题。

  • -v:可选参数,全称"verbose"(详细模式),加上该参数后会显示更完整的信息,包括发布者/订阅者的节点路径。

5、查看 Twist 消息结构

bash 复制代码
ros2 interface show geometry_msgs/msg/Twist
  • ros2 interface show:查看指定消息/服务接口结构的指令,"interface"(接口)在这里指消息的格式定义。
  • geometry_msgs/msg/Twist:消息的完整路径,"geometry_msgs"是几何相关消息的功能包,"msg"表示这是消息类型,"Twist"是消息名称。
  • Twist 消息结构包含两部分,对应小海龟的两种运动形式:
  1. Vector3 linear:线速度,包含 x、y、z 三个方向(turtlesim 是2D仿真,仅 x 方向有效,y、z 方向无响应)。

  2. Vector3 angular:角速度,包含 x、y、z 三个方向(turtlesim 中仅 z 方向有效,控制小海龟绕自身中心旋转,x、y 方向无响应)。

这一步是关键!只有清楚消息结构,我们才能精准发布指令,避免无效参数。

6、发布线速度指令控制小海龟前进

bash 复制代码
ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 1.0}}"
  • ros2 topic pub:向指定话题发布消息的指令,"pub"是"publish"(发布)的缩写,语法为 ros2 topic pub <话题名> <消息类型> <消息内容>。

  • /turtle1/cmd_vel:目标话题,即小海龟接收速度指令的话题。

  • geometry_msgs/msg/Twist:消息类型,与话题要求的类型一致。

  • "{linear: {x: 1.0}}":消息内容,采用JSON格式简写,仅设置线速度的 x 方向为1.0(单位:m/s),其他参数默认0。

7、发布角速度指令控制小海龟旋转

bash 复制代码
ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist "{angular: {z: 1.0}}"

整体语法与发布线速度指令一致,仅消息内容不同:"{angular: {z: 1.0}}" 表示设置角速度的 z 方向为1.0(单位:rad/s),控制小海龟逆时针旋转,其他参数默认0。

相关推荐
稳稳C92 小时前
04|Langgraph | 从入门到实战 | 进阶篇 | 流式传输
python·ai·langchain·agent·langgraph
崎岖Qiu2 小时前
【OS笔记44】:磁盘存储管理
笔记·操作系统·os
WangYaolove13142 小时前
基于自适应svm电影评价倾向性分析(源码+文档)
python·django·毕业设计·源码
周周记笔记2 小时前
ESP32-S3 :开发方式笔记(五)
笔记·单片机·嵌入式硬件
June bug2 小时前
【实习笔记】Fiddler学习笔记
笔记·学习·fiddler
googleccsdn2 小时前
ENSP Pro Lab笔记:配置BGP EVPN VXLAN双栈(2)
网络·笔记·网络协议
黎雁·泠崖2 小时前
Java面向对象:this关键字+构造方法+标准JavaBean
java·开发语言·python
码小猿的CPP工坊2 小时前
C++弱引用智能指针std::weak_ptr使用介绍
开发语言·c++
JeffDingAI2 小时前
【Datawhale学习笔记】动手学RNN及LSTM
笔记·rnn·学习