适配ROS2的相机数据转流工具image2rtsp

image2rtsp 是一个针对 ROS2 的功能包,用于将 ROS2 中的图像话题(sensor_msgs::msg::Image)转换为 RTSP(Real-Time Streaming Protocol)视频流。RTSP 是一种广泛用于实时视频流的协议,常用于视频监控、远程查看等场景。以下是关于 image2rtsp 的详细介绍和使用方法:


功能概述

  • 将 ROS2 中的图像话题(如 /camera/image_raw)转换为 RTSP 视频流。
  • 支持多种图像格式(如 rgb8rgba8bgr8mono8 等)。
  • 生成的 RTSP 流可以通过 VLC、FFmpeg 或其他支持 RTSP 的播放器查看。
  • 支持直接使用 USB 摄像头作为输入源,并支持压缩图像格式(开发分支中已添加)。
  • 适用于 Ubuntu 20.04(ROS2 Foxy)和 Ubuntu 22.04(ROS2 Humble)。

安装方法

  1. 安装依赖
    确保已安装 ROS2 和以下依赖项:

    sudo apt update
    sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev libgstrtspserver-1.0-dev gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad
    
  2. 下载和编译 image2rtsp

    mkdir -p ~/ros2_ws/src
    cd ~/ros2_ws/src
    git clone https://github.com/maladzenkau/image2rtsp.git --single-branch
    cd ~/ros2_ws
    colcon build --packages-select image2rtsp
    source install/setup.bash
    

使用方法

  1. 配置参数
    编辑 parameters.yaml 文件以配置 RTSP 流的参数:

    camera: False  # 是否使用 USB 摄像头
    source: "v4l2src device=/dev/video0"  # 摄像头设备路径
    topic: "/color/image_raw"  # 订阅的图像话题
    mountpoint: "/back"  # RTSP 流的挂载点
    bitrate: "500"  # 比特率
    framerate: "30"  # 帧率
    caps_1: "video/x-raw,framerate="
    caps_2: "/1,width=640,height=480"  # 分辨率
    port: "8554"  # RTSP 端口
    local_only: True  # 是否仅本地访问
    
  2. 启动 image2rtsp

    ros2 launch image2rtsp image2rtsp.launch.py
    
  3. 查看 RTSP 流
    使用支持 RTSP 的播放器(如 VLC)查看生成的视频流。RTSP 流的默认地址为:

    rtsp://localhost:8554/back
    

    如果 local_only 设置为 False,则可以通过网络访问,例如:

    rtsp://<服务器IP>:8554/back
    

示例

假设你有一个 USB 摄像头,并使用 usb_cam 功能包发布图像话题:

  1. 启动摄像头节点:
    ros2 run usb_cam usb_cam_node_exe
    
  2. 启动 image2rtsp
    ros2 launch image2rtsp image2rtsp.launch.py
    
  3. 使用 VLC 打开 rtsp://localhost:8554/back 查看视频流。

注意事项

  • 确保输入图像话题的格式与 image2rtsp 支持的格式一致(如 rgb8bgr8 等)。
  • 如果图像话题的帧率较高,可以调整 framerate 参数以匹配实际需求。
  • 如果需要远程访问 RTSP 流,确保网络配置允许 RTSP 协议的传输。

项目地址


针对不同ROS 版本

  • ros_rtsp
    针对 ROS1(如 ROS Kinetic、ROS Melodic)开发,无法直接在 ROS2 中使用。
  • image2rtsp
    针对 ROS2(如 ROS2 Foxy、ROS2 Humble)开发,专为 ROS2 设计。

两者区别总结

特性ros_rtsp (ROS1)image2rtsp (ROS2)
ROS 版本ROS1ROS2
输入源ROS1 图像话题ROS2 图像话题或 USB 摄像头
依赖框架GStreamerGStreamer
配置方式手动配置 GStreamer 管道通过 YAML 文件或命令行参数配置
压缩格式支持需要手动配置支持 H.264 等压缩格式
使用场景ROS1 环境ROS2 环境

选择建议

  • 如果你使用的是 ROS1,选择 ros_rtsp
  • 如果你使用的是 ROS2,选择 image2rtsp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

研创通之逍遥峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值