ROS 2 的发布/订阅通信验证 ROS 2 自带了一个经典的demo_nodes_cpp包包含talker发布者和listener订阅者节点。我们可以通过官方提供的方法去验证。下面命令 验证了 ROS 2 的核心通信机制写在前面的定义talker 发布者Publisherlistener 订阅者Subscriber/chatter 话题Topicros2 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: 3talker 发布的消息被 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 上正在传输的原始数据textdata: 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。