ros 多个节点订阅一个消息
时间: 2024-10-21 10:13:32 浏览: 34
ros_fuse_point_cloud:[ROS] 提供节点订阅多个点云并将它们融合为一个
在Robot Operating System (ROS)中,多个节点可以同时订阅同一个主题(Topic)来接收消息。当一个主题发布数据时,所有订阅该主题的节点都会接收到这个消息。这种设计使得系统中的不同组件能够并行处理信息,提高通信效率。
例如,想象一个自动驾驶系统,有多个传感器节点(如激光雷达、摄像头等),它们都发布各自的数据到同一个“障碍物检测”主题。导航节点订阅这个主题,实时获取最新的感知信息,并据此做出决策。通过这种方式,各个节点之间实现了松耦合,每个节点只需要关心自己的职责即可。
要实现这一功能,需要在ROS客户端代码中明确指定订阅的主题名称,并设置回调函数来处理接收到的消息。下面是一个简单的Python示例:
```python
import rospy
class NodeSubscriber:
def __init__(self):
self.sub = rospy.Subscriber("obstacle_detection", ObstacleMessage, self.callback)
def callback(self, msg):
# 处理接收到的ObstacleMessage
...
if __name__ == '__main__':
rospy.init_node('node_name')
node_subscriber = NodeSubscriber()
rospy.spin() # 等待ROS事件循环结束
```
阅读全文