问题

在ros中,如果通过原生的ros通信格式进行数据传输的话, 图像再经过网络之后就会非常的卡顿,这时候, 我们就可以利用ros中的image_transport库进行图像传输, 通过该库中的插件,我们可以对JPEG/PNG的图像进行压缩,以及压缩成theora视频流, 可以极大节省网络带宽,提高视频流畅度。

安装

在ros环境中,通过以下命令进行安装。

sudo apt get install image_transport
sudo apt get install image_transport_plugins  # 该组件必须安装以便进行压缩传输。

当然也可以通过源码进行编译安装, 如下链接:https://github.com/ros-perception/image_common

代码编写

该封装库的使用十分简单,需要封装 sensor::Image格式的数据, 然后,通过image_transport组件进行发送即可。

// Use the image_transport classes instead.
#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);
image_transport::Subscriber sub = it.subscribe("input_image_base_topic", 1, imageCallback);
image_transport::Publisher pub = it.advertise("output_image_base_topic", 1);

发布成功之后, 该节点会生成 /raw 话题数据, 以及/raw/compressed图像, /raw/theora_image图像, 分别是原生的ros数据, 以及压缩之后的图像和压缩成功的视频流, 笔者传输的是 1280*720的图像,带宽使用对比如下:

参数 ROS 图像压缩 视频压缩
wifi的带宽 90Mb/s 10Mb/s 400Kb/s
通过wifi传输延迟 6秒 2秒 500ms

测试

通过以下命令可以动态修改参数, 并进行在线调试传输质量和带宽。

rosrun rqt_reconfigure rqt_reconfigure

如何利用image transport进行视频压缩传输相关推荐

  1. 利用IP组播技术传输视频信息

    利用IP组播技术传输视频信息   随着全球互联网(Internet)的迅猛发展,上网人数正以几何级数快速增长,以因特网技术为主导的数据通信在通信业务总量中的比列迅速上升,因特网业务已成为多媒体通信业中 ...

  2. C#利用WCF改进文件流传输的三种方式

    摘要:本文介绍C#利用WCF改进文件流传输的三种方式:MTOM模型.基于同步传输的异步回调模型.基于异步传输的异步模型,并提供相应的实现代码供参考. - WCF在跨域传输使用了两种模型的方法调用:一种 ...

  3. Java利用TCP进行文件的传输

    采用TCP进行通讯,需要服务器和客户端两个部分,因此程序包含SendFileServer.java和SendFileClient.java两个部分. 两个文件的IP,端口都在程序中指定 传输的文件路径 ...

  4. An Intuitive Guide to Optimal Transport|最优传输理论

    An Intuitive Guide to Optimal Transport|最优传输理论 最优传输:最优传输问题最早是由法国数学家蒙日于1780年代提出:其解的存在性被俄国数学家Kantorovi ...

  5. java qq 传送文件_如何利用Java实现QQ文件传输功能.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava 如何利用Java实现QQ文件传输功能.pdf2页 本文 ...

  6. 利用sshpass避免scp命令传输文件多次输入密码

    利用sshpass避免scp命令传输文件多次输入密码 1.scp基本用法: scp是基于ssh的 将本地文件上传或发送到服务器的命令. scp localpath username@ip:server ...

  7. 利用VC++实现局域网实时传输

    本文针对不同的局域网,提出一种通用的实时视频传输的解决方案.在使用Divx编解码的基础上,提出了从压缩.组帧.发送到接收.解压整个流程的思想,具体实施方案和VC++实现核心源代码以及传输控制策略,有效 ...

  8. linux使用shell脚本利用expect工具实现SCP传输文件到多台服务器

    1.安装expect yum install expect 2.设置服务器地址,用户名,密码,源路径,目标路径 新建文件host.txt添加如下内容 192.168.0.135 root 密码 源路径 ...

  9. JMF 利用RTPManager进行视频音频流传输聊天

    转:http://blog.csdn.net/maydie1989/article/details/6820482 http://download.csdn.net/detail/maydie1989 ...

最新文章

  1. 赛门铁克开启“容灾即服务”时代
  2. Tensorflow |(4)名称域、图 和会话
  3. 网站推广下吉利关联公司公开“车辆故障预测方法”将在事故发生前预警
  4. sql优化的方法及思路_合理的sql优化思路--如何缩短SQL调优时间?
  5. 本机的计算机管理员,c# 获得本机计算机名字,获得本机当前系统登陆用户和管理员权限,Environment...
  6. ubuntu12.04平台下a80编译环境搭建
  7. 交通警察手势信号(动画演示)
  8. centos samba 看不到共享目录_samba共享服务
  9. 具有多个Join和选定列的示例LINQ
  10. 某公司机房成功搭建openssh server跳板服务器
  11. 手机5g什么时候普及_5G手机什么时间普及,现在买4G手机划算吗?
  12. sas 服务器版安装文件,安装SAS怎样配置服务器
  13. activex控件 java_ActiveX控件不自动安装
  14. “爱玛”等不达标电动自行车下架
  15. 火灾报警管理系统java,火灾报警系统开题报告
  16. 紫书——Repeating Decimals UVA - 202
  17. 9宫格实现微信朋友圈图片点击放大缩小弹簧效果
  18. 元分析 | 大脑同伦共激活的性别差异
  19. CREO:CREO软件之零件【渲染】之对三维零件实现渲染图文教程之详细攻略
  20. 2021-04 提高转化-基础销量+基础销量+晒图买家秀+精心设计的问大家

热门文章

  1. 采购谈判技巧:报价谈判,怎么谈你会赢?
  2. OpenSSL v0.9.8a随机数发生器分析(合集)
  3. 大齐玩转微信公众账号系列(四):微信公众账号开发入门(原理)
  4. request的基本使用用法
  5. 2019JDATA用户对品类下店铺的购买预测(机器学习一般步骤总结)
  6. 31-【go】系统信号介绍、Go语言中使用os/signal包实现对信号的处理
  7. vue2+vant 开发公众号
  8. 华为手环8添加门禁卡操作指导
  9. 张鑫旭:Promise异步编程模式
  10. 使用VBA批量向Excel插入图片