1. rocon_rtsp_camera_relay 介绍
最主要的功能在于把相机的 rtsp 视频流
转换为 ros topic
发布出来,使其他节点可以通过订阅的形式获取视频流数据。
2. 编译安装
注:官网的安装命令 sudo apt-get install ros-<distro>-rocon-rtsp-camera-relay
已失效。
前提:需已安装配置好 catkin
cd ~/catkin_ws/src
git clone https://github.com/robotics-in-concert/rocon_devices
cd ..
catkin_make -DCATKIN_WHITELIST_PACKAGES="rocon_rtsp_camera_relay"
source devel/setup.bash
其中 git clone https://github.com/robotics-in-concert/rocon_devices
如果下不动,也可以手动在可以访问 github
的电脑上下载好代码,解压并放在 ~/catkin_ws/src
路径下。
3. 使用
3.1. 单视频源
打开 ~/catkin_ws/src/rocon_devices/rocon_rtsp_camera_relay/launch
路径下的 rtsp_camera_relay.launch
文件
该文件原内容如下:
<launch>
<arg name="video_stream_url" default="$(env ROCON_RTSP_CAMERA_RELAY_URL)"/>
<node pkg="rocon_rtsp_camera_relay" name="rtsp_camera_relay" type="rocon_rtsp_camera_relay_node">
<param name="video_stream_url" value="$(arg video_stream_url)"/>
</node>
</launch>
修改其中 default="$(env ROCON_RTSP_CAMERA_RELAY_URL)"
的值为现实中用到的 rtsp 视频流地址
,示例如下:
<launch>
<arg name="video_stream_url" default="rtsp://admin:passwd@192.168.1.2:3/h264/ch1/main/av_stream"/>
<node pkg="rocon_rtsp_camera_relay" name="rtsp_camera_relay" type="rocon_rtsp_camera_relay_node">
<param name="video_stream_url" value="$(arg video_stream_url)"/>
</node>
</launch>
最后启动 rtsp_camera_relay
节点,注意该节点需要常驻运行,所以最好将其运行在后台:
roslaunch rocon_rtsp_camera_relay rtsp_camera_relay.launch --screen
新打开一个终端窗口,使用 rqt_image_view
查看所订阅的视频画面
3.2. 多视频源
对于多视频源,我自己摸索到的方法是创建多个 .launch
文件,并以此启动多个 rtsp_camera_relay
节点。
首先创建多个 .launch
文件,主要不同之处在于 rtsp 视频流地址
和 node name
:
第一个 .launch
文件内容如下:
<!-- rtsp_camera_relay_1.launch -->
<launch>
<arg name="video_stream_url" default="rtsp://admin:passwd@192.168.1.2:3/h264/ch1/main/av_stream"/>
<node pkg="rocon_rtsp_camera_relay" name="rtsp_camera_relay_1" type="rocon_rtsp_camera_relay_node">
<param name="video_stream_url" value="$(arg video_stream_url)"/>
</node>
</launch>
第二个 .launch
文件内容如下,其他文件以此类推:
<!-- rtsp_camera_relay_2.launch -->
<launch>
<arg name="video_stream_url" default="rtsp://admin:passwd@192.168.1.2:3/h264/ch2/main/av_stream"/>
<node pkg="rocon_rtsp_camera_relay" name="rtsp_camera_relay_2" type="rocon_rtsp_camera_relay_node">
<param name="video_stream_url" value="$(arg video_stream_url)"/>
</node>
</launch>
最后启动多个 rtsp_camera_relay
节点,注意这些节点需要常驻运行,所以最好将它们分别运行在后台:
# 启动第一个节点
roslaunch rocon_rtsp_camera_relay rtsp_camera_relay_1.launch --screen
# 启动第二个节点
roslaunch rocon_rtsp_camera_relay rtsp_camera_relay_2.launch --screen
4. 参考资料
- 第八章 ROS-RTSP流相机功能包
- ROS与传感器教程-整合网络摄像头