【多喝热水系列】从零开始的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。

相关推荐
B站计算机毕业设计超人几秒前
计算机毕业设计Hadoop+Spark+Hive招聘推荐系统 招聘大数据分析 大数据毕业设计(源码+文档+PPT+ 讲解)
大数据·hive·hadoop·python·spark·毕业设计·课程设计
B站计算机毕业设计超人2 分钟前
计算机毕业设计hadoop+spark+hive交通拥堵预测 交通流量预测 智慧城市交通大数据 交通客流量分析(源码+LW文档+PPT+讲解视频)
大数据·hive·hadoop·python·spark·毕业设计·课程设计
CodeSheep程序羊7 分钟前
拼多多春节加班工资曝光,没几个敢给这个数的。
java·c语言·开发语言·c++·python·程序人生·职场和发展
独好紫罗兰7 分钟前
对python的再认识-基于数据结构进行-a002-列表-列表推导式
开发语言·数据结构·python
机器学习之心HML10 分钟前
多光伏电站功率预测新思路:当GCN遇见LSTM,解锁时空预测密码,python代码
人工智能·python·lstm
2401_8414956412 分钟前
【LeetCode刷题】二叉树的直径
数据结构·python·算法·leetcode·二叉树··递归
王大傻092815 分钟前
python 读取文件可以使用open函数的 r 模式
python
JarryStudy16 分钟前
HCCL与PyTorch集成 hccl_comm.cpp DDP后端注册全流程
人工智能·pytorch·python·cann
编程小白202627 分钟前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
woshikejiaih28 分钟前
**播客听书与有声书区别解析2026指南,适配不同场景的音频
大数据·人工智能·python·音视频