news 2026/7/3 17:53:49

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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'

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

二维码批量扫码设备硬件选型与并行解码技术方案研究

在半导体、3C 电子、精密制造仓储场景中,人工逐个采集条码模式存在效率偏低、漏扫错扫频发、追溯数据完整性不足等问题。二维码批量扫码设备依托并行成像与多码同步解码技术,单次可完成多条一维、二维码识别,能够降低人工投入、优化盘点与出入…

作者头像 李华
网站建设 2026/7/3 17:51:47

未来展望:BiSheng JDK 17路线图与OpenJDK社区贡献计划终极指南

未来展望:BiSheng JDK 17路线图与OpenJDK社区贡献计划终极指南 【免费下载链接】bishengjdk-17 BiSheng JDK 17 is a high-performance, production-ready distribution of OpenJDK 17. 项目地址: https://gitcode.com/openeuler/bishengjdk-17 前往项目官网…

作者头像 李华
网站建设 2026/7/3 17:51:34

特斯拉Cybercab无方向盘路测曝光!20个月落地,成本优势能否弯道超车?

6月30日,马斯克在X上转发特斯拉Cybercab无方向盘路测视频,从概念发布到公开测试仅约20个月,落地速度超行业同类。但其在运营规模上与对手仍有差距。路测细节曝光此次测试视频录制于Cybercab量产版车内,地点在美国得克萨斯州奥斯汀…

作者头像 李华
网站建设 2026/7/3 17:51:13

SPI EEPROM与PIC微控制器的嵌入式存储方案设计

1. 项目背景与硬件选型解析在嵌入式系统开发中,非易失性存储方案的选择直接影响产品的可靠性和用户体验。M95M04这颗4Mb SPI接口的EEPROM芯片,配合PIC18LF45K40这款低功耗高性能微控制器,构成了一个典型的用户配置存储解决方案。这种组合特别…

作者头像 李华
网站建设 2026/7/3 17:48:21

项目进度实时监控与资源优化:项目制服务解决方案落地方法论

传统的项目管理模式往往面临进度失控、资源错配、成本超支、信息孤岛等痛点,严重制约了企业的交付效率与客户满意度。项目制服务解决方案应运而生,它不仅仅是工具层面的升级,更是管理范式的深刻变革。通过数字化手段打通项目全生命周期&#…

作者头像 李华