ROS+Web_video_server +UVC Camera获取视频流

本文介绍了如何在ROS系统中安装和配置web_video_server,以实现在发布图像和视频话题后通过网络传输,以及配合uvc_camera获取视频流并使用Web访问。详细步骤包括安装web_video_server和uvc_camera,配置launch文件,以及使用浏览器查看和控制视频流。
摘要由CSDN通过智能技术生成
  1. 安装web_video_server

web_video_server包的主要功能是,在ROS系统中,比如某些话题发布了图像、视频的话题,通过这个功能包可以订阅这些话题,然后对图像压缩,通过网络传输出去,这样我们就可以通过网络的方式获取到这些图像和话题。(This package provides a video stream of a ROS image transport topic that can be accessed via HTTP. )

包详情:web_video_server - ROS Wiki

    1. 安装

安装命令:#sudo apt-get install ros-melodic-web-video-server,其中melodic为ros的版本

1.2、配置

web-video-server 只有一个节点,节点node名称为web-video-server。有很多参数,所以我们可以使用launch文件进行配置,相关命令如下:

 # roscd web_video_server

 # mkdir launch

# cd launch

 # vim web_video.launch

其中web_video.launch文件内容,参考如下:

<launch>

  <node pkg="web_video_server" type="web_video_server"

name="web_video_server" output="screen">

    <param name="port" type="int" value="8080" />

    <param name="address" type="string" value="127.0.0.1" />

    <param name="server_threads" type="int" value="1" />

    <param name="ros_threads" type="string" value="2" />

    <param name="width" type="int" value="1280" />

    <param name="height" type="int" value="1080" />

    <param name="quality" type="int" value="90" />

  </node>

</launch>

详细参数可查看web_video_server官方文档:web_video_server - ROS Wiki

  1. 安装uvc_camera

使用web_video_server首先要有一个视频流,我们使用uvc_camera软件包来获取摄像头捕获的视频流。

2.1、安装uvc_camera

安装命令:sudo apt-get install ros-melodic-uvc-camera

2.2、配置

首先,需要配置自己的launch文件:

  # roscd uvc_camera

    # ls

    # cd launch //定位到 uvc_camera的launch文件夹下(其实launch文件的位置不限定只是runlaunch的时候当前目录是软件包目录,使用相对路径比较简单而已)

    # vim my_camera_node.launch

其中my_camera_node.launch文件如下:

<launch>  

  <node pkg="uvc_camera" type="uvc_camera_node" name="uvc_camera" output="screen">  

    <param name="width" type="int" value="1920" />  

    <param name="height" type="int" value="1080" />  

    <param name="fps" type="int" value="30" />  

    <param name="frame" type="string" value="wide_stereo" />  

    <param name="auto_focus" type="bool" value="False" />  

    <param name="focus_absolute" type="int" value="0" />  

    <!-- other supported params: auto_exposure, exposure_absolute, brightness, power_line_frequency -->  

    <param name="device" type="string" value="/dev/video0" />  

    <param name="camera_info_url" type="string" value="file://$(find uvc_camera)/example.yaml" />  

  </node>  

</launch>

测试Launch文件,要在launch文件夹下运行

命令:runlaunch my_camera_node.launch

2.3、启动

roslaunch uvc_camera my_camera.launch

测试和查看uvc_camera安装结果

2.4、验证

2.4.1、查看ros信息

# rospack list //查看package列表中是否有uvc_camera

# rospack find uvc_camera //这个就是我们刚才安装时候的路径

# roscd uvc_camera //定位到这个功能包的路径下

# rosls //查看它的文件结构

launch文件是一个多节点同时运行的一个配置文件,src是源码文件夹

2.4.2、验证

查看是否能用 uvc_camera获取到图像,命令如下:

  # roscore

  # rosrun uvc_camera uvc_camera_node

  # rqt_image_view //选择话题为/image_raw

如果可以看到该话题传送的视频流图像,说明uvc_camera可以正常运行

  1. 使用web_video_server 传送视频流

3.1、启动web_video_server 订阅视频流话题

启动命令:# roslaunch web_video_server web_video.launch

3.2、浏览器中查看

请求地址:http://127.0.0.1:8080/stream_viewer?topic=/image_raw

其中127.0.0.1和8080是在launch文件指定的IP 和端口,如果想局域网访问,则 修改web_video.launch文件,其中的address由127.0.0.1改为局域网IP;

/image_raw是uvc_camera发布的视频流话题名称,如果有其他传送视频流的话题, 也可以通过这个方式查看。

3.3、web_video_server相关可用网址:

可用 ROS 主题概述:http://127.0.0.1:8080/

显示视频流的网页:http://127.0.0.1:8080/stream_viewer?topic={ROS_TOPIC}

视频流网址:http://127.0.0.1:8080/stream?topic={ROS_TOPIC}

下一张图片的快照:http://127.0.0.1:8080/snapshot?topic={ROS_TOPIC}

如果想要推送视频流则使用: http://127.0.0.1:8080/stream_viewer?topic={ROS_TOPIC}

参考文档:

  1. 树莓派_Ubuntu18.04中ROS(melodic)调用摄像头+rviz可视化(虚拟机同理。避坑必看,90%教程都存在的坑)_ros启动摄像头-CSDN博客
  2. 搭建和配置ROS环境,使用Rviz完成摄像头(camera)的视频采集,摄像头的标定_rviz如何录屏-CSDN博客
  3. web_video_server - ROS Wiki
  4. ROS-Web视频流展示 - 简书
  5. ROS 学习备忘录 - 04 - 使用 web_video_server 将 image 话题转发至局域网_ros-noetic-web-video-server-CSDN博客
  6. ROS订阅视频流(获取摄像头视频流)_web_video_server-CSDN博客
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值