当前位置: 首页 > news >正文

ROS 2 的发布/订阅通信验证

ROS 2 自带了一个经典的demo_nodes_cpp包,包含talker(发布者)和listener(订阅者)节点。我们可以通过官方提供的方法去验证。

下面命令 验证了 ROS 2 的核心通信机制:

写在前面的定义:

  • talker= 发布者(Publisher)

  • listener= 订阅者(Subscriber)

  • /chatter= 话题(Topic)

  • ros2 topic echo= 窥探话题上流动的数据

  • demo_nodes_cpp:这个包主要用于学习和验证。核心作用是为开发者提供大量可直接运行的 C++ 代码示例,用于演示 ROS 2 中各种核心通信机制和高级特性的用法。它源自 ROS 2 的examples仓库,被独立出来作为演示用途。因此,在开发实际项目时,应将其代码作为参考,

完整命令速查表

命令作用
ros2 run demo_nodes_cpp talker启动发布者节点
ros2 run demo_nodes_cpp listener启动订阅者节点
ros2 topic list列出所有活跃话题
ros2 topic info /chatter查看话题的发布/订阅统计
ros2 topic type /chatter查看话题的消息类型
ros2 topic echo /chatter实时打印话题上的消息内容
ros2 topic pub /chatter std_msgs/msg/String "{data: 'test'}"手动向话题发布一条消息(无需 talker)

动手环节:

下面是完整的操作步骤:


📡 第一步:启动 Talker(发布者)

打开终端1,运行:

source /opt/ros/humble/setup.bash ros2 run demo_nodes_cpp talker

你会看到类似这样的输出(每 0.5 秒更新一次):

[INFO] [1700000000.123456789] [talker]: Publishing: 'Hello World: 1' [INFO] [1700000000.623456789] [talker]: Publishing: 'Hello World: 2' [INFO] [1700000001.123456789] [talker]: Publishing: 'Hello World: 3'

这个节点在话题/chatter上持续发布std_msgs/msg/String类型的消息。


👂 第二步:启动 Listener(订阅者)

保持 talker 运行,打开终端2,运行:

source /opt/ros/humble/setup.bash ros2 run demo_nodes_cpp listener

你会看到:

[INFO] [1700000000.223456789] [listener]: I heard: 'Hello World: 1' [INFO] [1700000000.723456789] [listener]: I heard: 'Hello World: 2' [INFO] [1700000001.223456789] [listener]: I heard: 'Hello World: 3'

talker 发布的消息被 listener 成功接收。


📋 第三步:查看所有活跃话题

打开终端3(保持 talker 和 listener 运行),执行:

source /opt/ros/humble/setup.bash ros2 topic list

输出:

/chatter /parameter_events /rosout

/chatter就是 talker 和 listener 通信使用的话题。


🔍 第四步:查看话题详细信息

# 查看话题的发布者、订阅者数量 ros2 topic info /chatter

输出示例:

Type: std_msgs/msg/String Publisher count: 1 Subscription count: 1
# 查看话题的消息类型结构 ros2 topic type /chatter

输出:std_msgs/msg/String

# 查看话题的实时消息内容(非常重要!) ros2 topic echo /chatter

你会看到 topic 上正在传输的原始数据:

text

data: 'Hello World: 42' --- data: 'Hello World: 43' ---

ros2 topic echo会持续输出,按Ctrl + C停止。

🛑 第五步:停止所有节点

在 talker 和 listener 的终端中分别按Ctrl + C即可停止。

🧪 额外:手动发布消息(无需启动 talker)

你可以直接手动向/chatter发布消息,测试 listener 是否正常工作:

# 发布一条消息 ros2 topic pub --once /chatter std_msgs/msg/String "{data: 'Hello manually'}"

如果 listener 正在运行,会立即显示I heard: 'Hello manually'

http://www.cnnetsun.cn/news/3121384.html

相关文章:

  • 二维码批量扫码设备硬件选型与并行解码技术方案研究
  • 未来展望:BiSheng JDK 17路线图与OpenJDK社区贡献计划终极指南
  • 特斯拉Cybercab无方向盘路测曝光!20个月落地,成本优势能否弯道超车?
  • SPI EEPROM与PIC微控制器的嵌入式存储方案设计
  • 项目进度实时监控与资源优化:项目制服务解决方案落地方法论
  • 【沈阳师范大学本科毕业论文】基于Spring boot的青少年 研学网站的设计与实现
  • 超市小程序制作,线上超市小程序开发超市小程序制作
  • 用GPT-5.5重构遗留项目:一套可复用的迁移脚本分享(附避坑指南与教程)
  • USB3.0总线高速数据采集卡,8通道、16位分辨率、5MHz同步采样,程控增益±10V、±5V、±2V、±1V
  • 2026楼宇自控品牌推荐 这些楼宇自控厂家实力太赞了!
  • Gemini 3.5 如何辅助写代码?生成代码、解释逻辑与调试思路使用指南
  • 基于STM32单片机智能书桌 坐姿提醒 智能台灯语音识别控制系统1(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 自建商城还是上 SaaS?企业电商系统选型的真实成本账(一篇讲清 TCO)
  • 缠论量化交易实战指南:从理论到策略的完整实现
  • 打造你的终极数字伙伴:用DyberPet桌面宠物框架重新定义桌面互动体验
  • 解锁Python :2025-2026出版新书的《人月神话》引用(9)
  • 如何在Windows上轻松安装虚拟游戏控制器驱动:ViGEmBus完整指南
  • Windows主题缓存
  • Appium会话启动失败:系统性排查与解决方案全解析
  • 自动驾驶三条技术路线的本质差异与场景适配
  • 5 分钟上手 Kimi Work:安装、配置、跑通第一个任务
  • 10个免费Adobe Illustrator自动化脚本:设计师必备的效率革命指南 [特殊字符]
  • 2026年7月北京家具回收机构哪家靠谱?大红酸枝/黄花梨/缅甸花梨实木家具回收服务商甄选
  • 3步解锁iOS设备潜能:palera1n越狱工具终极指南
  • 这个神器让你秒变黑客(非常详细),零基础入门到精通,看这一篇就够了
  • 【文献速递】Cre-LoxP+TurboID:研究动物体内分泌蛋白组邻近标记新工具
  • 量子-经典混合Benders分解算法在电力系统优化中的应用
  • Kimi K2.6真实开发测评:国产AI编程能力实战深度解析
  • 跨境电商WordPress主题
  • Spring Boot测试自动配置:从原理到实战的完整指南