Navigation

    蓝鲸ROS机器人论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Popular
    ROS交流群
    ROS Group
    产品服务
    Product Service
    开源代码库
    Github
    官网
    Official website
    技术交流
    Technological exchanges
    激光雷达
    LIDAR
    ROS教程
    ROS Tourials
    深度学习
    Deep Learning
    机器视觉
    Computer Vision

    ROS高效图传的一些方法

    技术交流
    ros教程
    1
    1
    4861
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • weijiz
      weijiz last edited by weijiz

      图传是大家经常会遇到的一个问题,ROS中图传的方法也有很多。下面就总结一下常用到的方法。

      1.设置ROS_MASTER_URI的方式
      通过设置ROS_MASTER_URI,我们能够直接和远程主机进行通信。这样只要在远程端发出 image topic 然后在本地订阅这个 topic 就可以显示了。下面是一个具体例子
      假设远程端已经有一个image topic 名称为 /camera_node/image_raw,远程端计算机名为 xiaoqiang-desktop, 其ip为 192.168.0.130。

      a. 在本地计算机 /etc/hosts 文件添加

      192.168.0.130 xiaoqiang-desktop
      

      b. 在本地计算机设置 ROS_MASTER_URI 环境变量

      export ROS_MASTER_URI=http://xiaoqiang-deskstop:11311
      

      c. 在本地计算机输入rostopic list 就可以看到远程计算机的topic了
      在本地计算机上输入

      rosrun image_view image_view image:=/camera_node/image_raw
      

      就可以通过 image_view 打开远程图传了。

      然而默认的传输方式图像是没有压缩的,占用的带宽非常大。可以通过添加压缩参数来传输。

      rosrun image_view image_view image:=/camera_node image_raw compressed
      

      这里实际上使用了image_transport这个包进行了压缩。这个包不仅能够压缩视频图像也可以压缩深度图像信息。不过这个压缩算法是逐帧压缩的,所以压缩的效率并不高,带宽使用率也比较高。但是实时性是比较高的。

      2.使用 web_video_server 软件包
      在远程端安装这个包。安装方法如下
      在自己的工作空间中

      git clone https://github.com/RobotWebTools/web_video_server
      cd ..
      catkin_make
      

      等待编译完成,启动节点

      rosrun web_video_server web_video_server
      

      启动后在本地浏览器输入http://192.168.0.130:8080/stream?topic=/camera_node/image_raw&type=vp8,就可以在浏览器中打开远程视频了。这种方法也是不仅能够压缩一般图像数据也可以压缩深度图像数据,同时可以设置多种压缩方式。由于视频传输是采用的标准的http格式,所以客户端读取视频的时候可以完全脱离ROS的框架,使用起来也比较容易。这种压缩方式压缩效率也比第一种高很多。但是实际使用中发现实时性要差一点,这个和客户端如果处理数据关系比较大,比如缓存设置的比较大,就会有较大的延时。

      参考资料:
      ROS wiki: image_transport
      ROS wiki: web_video_server

      1 Reply Last reply Reply Quote 0
      • 1 / 1
      • First post
        Last post
      Copyright © 2015-2023 BlueWhale community