<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[ROS高效图传的一些方法]]></title><description><![CDATA[<p dir="auto">图传是大家经常会遇到的一个问题，ROS中图传的方法也有很多。下面就总结一下常用到的方法。</p>
<p dir="auto">1.设置<code>ROS_MASTER_URI</code>的方式<br />
通过设置<code>ROS_MASTER_URI</code>，我们能够直接和远程主机进行通信。这样只要在远程端发出 image topic 然后在本地订阅这个 topic 就可以显示了。下面是一个具体例子<br />
假设远程端已经有一个image topic 名称为 <code>/camera_node/image_raw</code>，远程端计算机名为 <code>xiaoqiang-desktop</code>, 其ip为 <code>192.168.0.130</code>。</p>
<p dir="auto">a. 在本地计算机 <code>/etc/hosts</code> 文件添加</p>
<pre><code>192.168.0.130 xiaoqiang-desktop
</code></pre>
<p dir="auto">b. 在本地计算机设置 <code>ROS_MASTER_URI</code> 环境变量</p>
<pre><code>export ROS_MASTER_URI=http://xiaoqiang-deskstop:11311
</code></pre>
<p dir="auto">c. 在本地计算机输入<code>rostopic list</code> 就可以看到远程计算机的<code>topic</code>了<br />
在本地计算机上输入</p>
<pre><code>rosrun image_view image_view image:=/camera_node/image_raw
</code></pre>
<p dir="auto">就可以通过 <code>image_view</code> 打开远程图传了。</p>
<p dir="auto">然而默认的传输方式图像是没有压缩的，占用的带宽非常大。可以通过添加压缩参数来传输。</p>
<pre><code>rosrun image_view image_view image:=/camera_node image_raw compressed
</code></pre>
<p dir="auto">这里实际上使用了<a href="http://wiki.ros.org/image_transport" target="_blank" rel="noopener noreferrer">image_transport</a>这个包进行了压缩。这个包不仅能够压缩视频图像也可以压缩深度图像信息。不过这个压缩算法是逐帧压缩的，所以压缩的效率并不高，带宽使用率也比较高。但是实时性是比较高的。</p>
<p dir="auto">2.使用 <code>web_video_server</code> 软件包<br />
在远程端安装这个包。安装方法如下<br />
在自己的工作空间中</p>
<pre><code>git clone https://github.com/RobotWebTools/web_video_server
cd ..
catkin_make
</code></pre>
<p dir="auto">等待编译完成，启动节点</p>
<pre><code>rosrun web_video_server web_video_server
</code></pre>
<p dir="auto">启动后在本地浏览器输入<code>http://192.168.0.130:8080/stream?topic=/camera_node/image_raw&amp;type=vp8</code>，就可以在浏览器中打开远程视频了。这种方法也是不仅能够压缩一般图像数据也可以压缩深度图像数据，同时可以设置多种压缩方式。由于视频传输是采用的标准的http格式，所以客户端读取视频的时候可以完全脱离ROS的框架，使用起来也比较容易。这种压缩方式压缩效率也比第一种高很多。但是实际使用中发现实时性要差一点，这个和客户端如果处理数据关系比较大，比如缓存设置的比较大，就会有较大的延时。</p>
<p dir="auto">参考资料：<br />
<a href="http://wiki.ros.org/image_transport" target="_blank" rel="noopener noreferrer">ROS wiki: image_transport</a><br />
<a href="http://wiki.ros.org/web_video_server" target="_blank" rel="noopener noreferrer">ROS wiki: web_video_server</a></p>
]]></description><link>http://community.bwbot.org/topic/225/ros高效图传的一些方法</link><generator>RSS for Node</generator><lastBuildDate>Mon, 16 Mar 2026 05:17:17 GMT</lastBuildDate><atom:link href="http://community.bwbot.org/topic/225.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Sep 2017 12:18:43 GMT</pubDate><ttl>60</ttl></channel></rss>