usb_cam ros包话题说明,image transport包使用

1. /usb_cam/image_raw

  • 类型: sensor_msgs/Image

  • 内容: 摄像头采集的原始图像数据。

  • 用途:

    • 图像处理和分析,例如使用 OpenCV 处理图像。视频流可达10MB/s

    • 图像流查看,例如用 rqt_image_view 进行显示:

2./usb_cam/image_raw/compressed

  • 类型: sensor_msgs/CompressedImage

  • 内容: 对 /usb_cam/image_raw 的压缩版本。

  • 压缩格式: jpegpng,具体取决于参数设置。其中jpeg是有损压缩,压缩率更高更快;png是无损压缩,压缩时间更长,一般视频流用jpeg压缩,图片或者深度图可以用png压缩。且他们都是对单帧图片进行压缩,没有考虑帧之间的联系,因此视频压缩率较低。

  • 用途:

    • 降低网络带宽占用,用于远程传输视频流。视频流可达1MB/s

    • 可以通过 rqt_image_view 或其他工具直接查看压缩图像。

  • 注意: 此话题默认可能未启用,需通过 image_transport 插件启用压缩功能。

sudo apt install ros-noetic-image-transport-plugins -y

3./usb_cam/image_raw/theora(如果启用 image_transport 和 Theora 插件)

  • 类型: theora_image_transport/TheoraPacket

  • 内容: theora(不是H.264) 压缩的视频流。theora是一个开源的编码解码库,相较于H264性能差一些,也不支持硬件加速,默认是cpu软件编码解码。但是是image tranport默认就支持的插件。theora相较于jpeg和png,考虑了帧之间的联系,因此编码后体积更小,我理解每帧只传输了帧之间的差异。

  • 用途:

    • 实现高效的图像流压缩和传输。视频流可达50KB/s

    • 适用于带宽较低的网络环境。

  • 使用方法: 需启用 image_transport 插件

sudo apt install ros-noetic-image-transport-plugins -y

读取这些话题,除了image_raw可以直接用ros subscriber订阅,其余经过压缩(编码)的图片话题,都不能用ros subscriber以sensor_msgs/Image形式订阅,而是需要订阅相应的格式并进行解码,这个过程image_transport包已经做好了,在发布和订阅时用image_transport的API替代nodehandle就行:

使用image_transport订阅和发布:

#include <ros/ros.h>
#include <image_transport/image_transport.h>
     
void imageCallback(const sensor_msgs::ImageConstPtr& msg)
{
      // ...
}
     
ros::NodeHandle nh;
image_transport::ImageTransport it(nh);

// 自动会发布带compressed后缀、theora后缀的话题,和image_transport plugins有关
image_transport::Publisher pub = it.advertise("/usb_cam/image_raw", 1);

// 订阅压缩后的话题,注意回调函数里仍然是sensor_msgs::Image话题类型,
// 因为image_transport已经自动根据话题名,采用jpeg/png/theora方式解码了
image_transport::Subscriber sub = it.subscribe("/usb_cam/image_raw/compressed", 1, imageCallback);
image_transport::Subscriber sub = it.subscribe("/usb_cam/image_raw/theora", 1, imageCallback);

查看有哪些plugin:

 rosrun image_transport list_transports

动态调整压缩参数:

rosrun rqt_reconfigure rqt_reconfigure

如果不使用动态调整工具,可以直接通过 ROS 参数服务器修改相关参数。例如:

rosparam set /image_transport/theora/quality 25
rosparam set /image_transport/theora/keyframe_frequency 30
rosparam set /image_transport/theora/target_bitrate 500000

测试话题带宽:

rostopic bw /usb_cam/image_raw

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值