ros一个节点订阅多个节点消息python代码示例
时间: 2024-10-20 17:07:08 浏览: 24
ROS2-Python-Node:基本ROS2节点,以便发布和订阅点云数据
在ROS (Robot Operating System) 中,一个Python节点可以订阅多个其他节点发布的主题(Topic)。下面是一个简单的代码示例,展示如何在一个名为`subscriber_node.py` 的Python节点中订阅两个不同的主题:
```python
# 导入必要的ROS模块
import rclpy
from rclpy.node import Node
from std_msgs.msg import String, Int32
class MultiSubscriberNode(Node):
def __init__(self):
super().__init__('multi_subscriber_node')
# 创建订阅者
self.subscriber_string = self.create_subscription(String, 'string_topic', self.on_string_message, 10)
self.subscriber_int = self.create_subscription(Int32, 'int_topic', self.on_int_message, 10)
# 消息处理函数 - 字符串消息
def on_string_message(self, msg):
self.get_logger().info(f'Received string message: {msg.data}')
# 消息处理函数 - 整数消息
def on_int_message(self, msg):
self.get_logger().info(f'Received int message: {msg.data}')
def main(args=None):
rclpy.init(args=args)
multi_subscriber = MultiSubscriberNode()
try:
rclpy.spin(multi_subscriber)
except KeyboardInterrupt:
pass
finally:
multi_subscriber.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
```
在这个例子中,我们创建了一个`MultiSubscriberNode`类,它有两个方法`on_string_message` 和 `on_int_message` 分别用于处理来自`string_topic`和`int_topic`的字符串和整数消息。通过`create_subscription`函数订阅了这两个主题。
阅读全文