用Python编写ROS,在一个节点文件里(.py),可以写多个订阅者吗?比如Image和Laserscan
时间: 2024-12-21 10:27:36 浏览: 1
是的,在Python中编写ROS(Robot Operating System)节点时,同一个节点文件(.py)是可以同时包含多个订阅者的。这样可以方便地集成不同主题的数据处理。例如,一个节点可以订阅`/camera/image`的Image话题和`/laser/scan`的LaserScan话题,以便同时处理来自视觉传感器和激光雷达的数据。
为了实现这个,你可以按照以下步骤设置:
1. 导入所需的ROS模块和包:
```python
import rospy
from sensor_msgs.msg import Image, LaserScan
```
2. 初始化节点并设置回调函数:
```python
class MyNodeClass:
def __init__(self):
self.image_subscriber = rospy.Subscriber("/camera/image", Image, self.image_callback)
self.laser_subscriber = rospy.Subscriber("/laser/scan", LaserScan, self.laser_callback)
def image_callback(self, img_msg):
# 处理image数据...
def laser_callback(self, scan_msg):
# 处理laser_scan数据...
```
3. 启动节点:
```python
if __name__ == '__main__':
rospy.init_node('my_node')
node = MyNodeClass()
try:
rospy.spin()
except KeyboardInterrupt:
print("Shutting down")
```
这样,每当接收到新的Image或LaserScan数据,对应的回调函数就会被调用。
阅读全文