帮我写个ros2 摄像头发布话题,使用python
时间: 2024-02-09 14:10:29 浏览: 43
好的,以下是一个简单的ROS2 Python程序,用于发布摄像头话题,你可以根据需要进行修改:
```python
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import Image
import cv2
class CameraPublisher(Node):
def __init__(self):
super().__init__('camera_publisher')
self.publisher_ = self.create_publisher(Image, 'camera', 10)
timer_period = 0.1 # 发布频率0.1s
self.timer = self.create_timer(timer_period, self.timer_callback)
def timer_callback(self):
# 读取摄像头
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
cap.release()
# 创建ROS消息
msg = Image()
msg.header.frame_id = 'camera'
msg.height = frame.shape[0]
msg.width = frame.shape[1]
msg.encoding = 'bgr8'
msg.step = frame.shape[1] * 3
msg.data = frame.tostring()
# 发布消息
self.publisher_.publish(msg)
def main(args=None):
rclpy.init(args=args)
camera_publisher = CameraPublisher()
rclpy.spin(camera_publisher)
camera_publisher.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
```
这个程序会读取摄像头图像,并将其转换为ROS消息,然后发布到名为“camera”的话题。注意,你需要安装OpenCV库来读取摄像头。