帮我写一个ROS2 摄像头数据接收包
时间: 2024-02-03 07:11:22 浏览: 84
好的,以下是一个简单的 ROS2 摄像头数据接收包的代码示例:
```python
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import Image
class CameraSubscriber(Node):
def __init__(self):
super().__init__('camera_subscriber')
self.subscription = self.create_subscription(
Image,
'/camera/image_raw',
self.camera_callback,
10)
self.subscription # prevent unused variable warning
def camera_callback(self, msg):
# process the image data here
self.get_logger().info('Received image data')
def main(args=None):
rclpy.init(args=args)
camera_subscriber = CameraSubscriber()
rclpy.spin(camera_subscriber)
camera_subscriber.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
```
在这个示例中,我们创建了一个名为 `camera_subscriber` 的 ROS2 节点,该节点订阅了 `/camera/image_raw` 主题,这个主题是摄像头发布的原始图像数据。每当有数据发布到该主题时,`camera_callback` 函数就会被调用,您可以在这个函数里面处理接收到的图像数据。在这个示例中,我们只是简单地输出日志消息来指示我们已经成功接收到了数据。
为了运行这个节点,您需要在终端中输入以下命令:
```
ros2 run <package_name> <node_name>
```
其中 `<package_name>` 是包含您的 Python 文件的 ROS2 包的名称,`<node_name>` 是您的节点名称,您可以自己选择一个适当的名称。
阅读全文