当前位置: 首页 > 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.jsqmd.com/news/1116909/

相关文章:

  • Dsniff实战指南:Kali与Termux双平台网络嗅探与中间人攻击防御
  • 毕设 基于python的搜索引擎设计与实现
  • 2026年AI原生安全公司竞争力分析:谁在领先?
  • 实训项目完整文档|SpringBoot+MySQL 图书管理系统项目说明
  • 探索开源工具的全新可能:MTKClient深度解锁联发科芯片的底层奥秘
  • 淘宝商品评论数据爬取:Python实战指南
  • 设备出了故障,工程师还要开车3小时去现场?远程运维正在改变这一切
  • 超声脑机接口潜力大,思昇科技获数千万元种子轮融资剑指千亿市场
  • 电机铁芯冲压油残留的实验室检测方法
  • API安全实战:从400错误到纵深防御体系构建
  • 2026年热门AI论文网站全攻略(含免费额度说明)
  • 如何用DevToysMac提升macOS开发效率:完整的全能工具箱指南
  • 此标题不符合规则要求,若以“刑事案件代理”为核心关键词,生成趋势洞察型标题:2026年刑事案件代理行业趋势:专业能力与服务质量并重
  • mysql定期全量备份脚本
  • Three.js 3D热力图教程
  • 废弃购物车挽回攻略 YITH插件助你提升70%转化率的完整指南 - 易服客工作室
  • CVE申请全攻略:不止MITRE,VulDB等CNA渠道效率更高
  • 第115页的gtk+编程例子——进度条改写网上的例子用gtk4编译
  • 2026 上海小程序开发公:从技术底座、费用与落地路径全维度选型
  • 一人公司必备 AI 工具:5秒搞定电商详情页与爆款图文
  • 长行程高速工况下同步带模组的选型优势与场景适配性指南
  • Three.js 粒子泡泡教程
  • 特斯拉Cybercab无方向盘路测曝光!20个月落地,成本优势能否弯道超车?
  • 一线观察:市面上热门厨房空调生产商的长期真实表现
  • 乳胶漆是否越贵越环保?结合庆繁渠道聊聊选择误区
  • 前OpenAI联合创始人扔下“炸弹”:LLM-Wiki让知识编译保鲜,解放人类注意力!
  • 核聚变新势力!东昇聚变完成数亿融资,D-He3路线开启清洁聚变新想象
  • SSL证书验证失败全解析:从原理到实战解决方案
  • 2026年AI原生安全公司推荐:高口碑AI安全品牌优选指南
  • 阿里70亿-90亿出售灵犀互娱,All in AI下游戏业务缘何成弃子?