- 安装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
-
- 安装
安装命令:#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
- 安装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可以正常运行
- 使用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}
参考文档:
- 树莓派_Ubuntu18.04中ROS(melodic)调用摄像头+rviz可视化(虚拟机同理。避坑必看,90%教程都存在的坑)_ros启动摄像头-CSDN博客
- 搭建和配置ROS环境,使用Rviz完成摄像头(camera)的视频采集,摄像头的标定_rviz如何录屏-CSDN博客
- web_video_server - ROS Wiki
- ROS-Web视频流展示 - 简书
- ROS 学习备忘录 - 04 - 使用 web_video_server 将 image 话题转发至局域网_ros-noetic-web-video-server-CSDN博客
- ROS订阅视频流(获取摄像头视频流)_web_video_server-CSDN博客