news 2026/10/28 10:27:22

ROS2机器人开发入门|第4课:ROS2核心概念-Topic(话题)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ROS2机器人开发入门|第4课:ROS2核心概念-Topic(话题)

1.前言

上一节课我们讲了Node节点的相关内容,这一节我们来学习ROS2里的另一个重要概念:Topic话题。

2.Topic话题概念

Topic是ROS2中的一种单向消息通道,包含发布者(Publisher)和订阅者(Subscriber),它有以下特点:

  1. 单向:Publisher → Topic → Subscriber;订阅者不能直接发消息给发布者
  2. 一对多 / 多对多:一个话题可以多个发布者、多个订阅者

  3. 异步:发布者只管不停发,不需要等订阅者回复,无应答
  4. 数据有消息类型:每个话题绑定唯一消息类型,类型不匹配就收不到
  5. 基于 DDS 底层传输:持续流式数据(摄像头图像、IMU、里程计、速度指令),高频持续推送

3.Topic核心3要素

1. 话题名称
我们还是官方小海龟为例

ros2 run turtlesim turtlesim_node
新打开一个终端 ros2 run turtlesim turtle_teleop_key
# 查看话题列表ros2 topic list

返回了话题名称:

2. 话题类型

# 加了-t 参数会返回话题类型ros2 topic list-t


话题类型格式:包名/msg/消息名

3. QoS(服务质量策略)
QoS 就是一套发布者和订阅者之间约定好的通信规则,规定消息怎么发、丢了怎么办、消息存多久、超时怎么处理。只有两端 QoS 配置兼容,话题才能正常收发数据。
ROS2 的 QoSProfile 由 6 个独立策略组成,每一项两端都要做兼容性匹配校验。

字段名称含义可选枚举值说明
History(历史策略)消息缓存队列的管理方式KEEP_LAST/KEEP_ALLKEEP_LAST:只保留最近N条(depth队列深度);KEEP_ALL:全部缓存,直到内存耗尽,慎用
Reliability(可靠性)是否丢包重传RELIABLE/BEST_EFFORTRELIABLE:可靠传输,丢包自动重传,保证送达;BEST_EFFORT:尽力传输,不重传,追求低延迟
Durability(持久性)新加入的订阅者能否收到历史消息VOLATILE/TRANSIENT_LOCALVOLATILE:新来的订阅只能收到之后新发的消息;TRANSIENT_LOCAL:发布者本地保留最后一条消息,新订阅上线立刻补发(静态配置、地图很常用)
Deadline(截止时间)消息最大发送间隔时间值,默认无限比如设置200ms:必须200ms内发一条消息,超时会触发QoS事件回调
Lifespan(消息寿命)单条消息的有效期时间值,默认无限消息生成之后,超过这个时间还没被收到,直接丢弃
Liveliness(活跃度)节点/发布者存活检测机制AUTOMATIC/MANUAL_BY_TOPIC等检测发布端是否掉线、崩溃,超时后订阅侧收到掉线事件

Reliability 兼容矩阵

Publisher \ SubscriberRELIABLEBEST_EFFORT
RELIABLE✅ 兼容✅ 兼容
BEST_EFFORT❌ 不兼容✅ 兼容

Durability 兼容矩阵

Publisher \ SubscriberVOLATILETRANSIENT_LOCAL
VOLATILE✅✅
TRANSIENT_LOCAL✅✅

4.Topic相关命令

4.1查看topic正在发布的消息:ros2 topic echo

语法: ros2 topicecho<topic_name># 实际操作ros2 topicecho/turtle1/cmd_vel

4.2查看话题信息: ros2 topic info

ros2 topic info /turtle1/cmd_vel

# 查看话题更多详细信息# 将返回 发布者/订阅者节点名称、命名空间、话题类型、QoS profileros2 topic info /turtle1/cmd_vel-verbose(-v)

4.3 查看话题类型细节:ros2 interface show

前面我们用ros2 topic list -t 查看了话题的类型,如下:

我们可以进一步查看话题/turtle1/cmd_vel 的类型geometry_msgs/msg/Twist的细节:

ros2 interface show geometry_msgs/msg/Twist

解释一下上面的返回:

This expresses velocity in free space broken into its linear and angular parts.
翻译:该消息表示自由空间中的速度,分为线速度(linear)和角速度(angular)两部分

1. linear:线速度(平移速度,单位:m/s 米每秒)

Vector3代表三维向量 x,y,z

  • linear.x:前进 / 后退
    • 正数 = 向前
    • 负数 = 向后
  • linear.y:左右平移
    • 正数 = 向左
    • 负数 = 向右
  • linear.z:上下方向平移
    • 地面移动机器人几乎永远是 0;无人机、机械臂才会用到 z
2. angular:角速度(旋转速度,单位:rad/s 弧度 / 秒)
  • angular.x:绕 X 轴翻滚(roll),地面机器人一般 = 0
  • angular.y:绕 Y 轴俯仰(pitch),地面机器人一般 = 0
  • angular.z:原地转向(偏航 yaw),最常用!
    • 正数:逆时针左转(从机器人上方俯视)
    • 负数:顺时针右转
字段含义地面小车常用值
linear.x前后平移速度(m/s)正数前进、负数后退
linear.y左右平移速度(m/s)差分轮固定0,麦轮可用
linear.z上下平移速度(m/s)固定0
angular.x绕X轴翻滚(rad/s)固定0
angular.y绕Y轴俯仰(rad/s)固定0
angular.z原地旋转(rad/s)正数左转,负数右转

4.4 向话题发布消息:ros2 topic pub

语法:

ros2 topic pub<topic_name><msg_type>'<args>'
# 发送的数据要以YML字符串的格式ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist"{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
# 上面的发送数据也可以简写为:只写想改变的数据部分,不改动的数据可省略ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist"{linear: {x: 2.0}, angular: {z: 1.8}}"
# 发送空数据ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist# 这相当于发送默认数据:ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist"{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}"--rate1# 用TAB键自动完成参数输入ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist<TAB>

弹出的参数可以通过光标修改数值,完成后点击回车,就会执行参数。

4.5 统计话题的发布频率:ros2 topic hz

ros2 topic hz /turtle1/pose

4.6 统计话题的带宽:ros2 topic bw /xxx

ros2 topic bw /turtle1/pose

4.7 根据消息类型,查询当前图中所有使用该类型的活跃话题:ros2 topic find

ros2 topicfindgeometry_msgs/msg/Twist

小结

上面介绍了关于topic相关的内容,topic是ROS2中使用非常频繁的概念,我们要熟练使用它。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 10:26:40

时间序列模型上线翻车复盘:从数据泄漏到漂移监控的实战指南

深夜两点&#xff0c;手机屏幕亮起&#xff0c;值班群里的新消息让人瞬间清醒&#xff1a;时间序列模型的预测曲线和实际值整整错位了一天。这种“离线指标漂亮、上线立刻崩盘”的场景&#xff0c;做预测的人大概率都经历过。我不是第一次碰到这种情况了&#xff0c;为了彻底搞…

作者头像 李华
网站建设 2026/10/28 10:25:22

(171页PPT)金字塔原理麦肯锡经典大全(附下载方式)

篇幅所限&#xff0c;本文只提供部分资料内容&#xff0c;完整资料请看下面链接 https://download.csdn.net/download/AI_data_cloud/88338639 资料解读&#xff1a;金字塔原理麦肯锡经典大全 详细资料请看本解读文章的最后内容。 这份资料系统呈现了巴巴拉・明托所创立的金…

作者头像 李华
网站建设 2026/10/28 10:22:54

小白程序员必看:从入门到精通大模型Agent,收藏这份学习指南!

本文深入浅出地介绍了大模型Agent的概念、工作原理及其与Chatbot、Workflow、RAG的区别。通过一个具体的竞品研究案例&#xff0c;详细解析了Agent如何根据目标选择行动、接收反馈并持续调整任务。文章还提供了一个基础Agent的系统组成框架&#xff0c;帮助读者理解模型、工具、…

作者头像 李华
网站建设 2026/10/28 10:20:53

AI长期记忆管理:实体去重、冲突检测与更新机制落地实践

1. AI记忆为什么越存越乱&#xff1a;从现象到根因1.1 一个几乎所有人都踩过的坑如果你正在做AI应用&#xff0c;尤其是带长期记忆的对话助手、个人知识库或者自动化工作流&#xff0c;大概率遇到过这种场景&#xff1a;用户上周说“我住在北京”&#xff0c;这周说“我搬到上海…

作者头像 李华
网站建设 2026/10/28 10:20:42

居委会的数字助手来了:六大功能让社区治理井井有条

社区工作千头万绪&#xff0c;从党建活动到居民服务&#xff0c;从治安管理到物业协调&#xff0c;居委会每天要处理的事务涵盖方方面面。社区服务平台&#xff0c;围绕“六位一体”社区治理模式&#xff0c;为居委会提供党建管理、居民议事、治安监控、物业监督、教育组织、便…

作者头像 李华