linux + ros 使用 catkin 从源码编译安装并运行 rocon_rtsp_camera_relay 订阅 rtsp 视频流

1. rocon_rtsp_camera_relay 介绍

最主要的功能在于把相机的 rtsp 视频流 转换为 ros topic 发布出来,使其他节点可以通过订阅的形式获取视频流数据。

2. 编译安装

注:官网的安装命令 sudo apt-get install ros--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:[email protected]: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 查看所订阅的视频画面
linux + ros 使用 catkin 从源码编译安装并运行 rocon_rtsp_camera_relay 订阅 rtsp 视频流_第1张图片

3.2. 多视频源

对于多视频源,我自己摸索到的方法是创建多个 .launch 文件,并以此启动多个 rtsp_camera_relay 节点。
首先创建多个 .launch 文件,主要不同之处在于 rtsp 视频流地址node name
第一个 .launch 文件内容如下:


<launch>
  <arg name="video_stream_url" default="rtsp://admin:[email protected]: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 文件内容如下,其他文件以此类推:


<launch>
  <arg name="video_stream_url" default="rtsp://admin:[email protected]: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、补充

用了半个多月,发现 rocon_rtsp_camera_relay 订阅视频流再发布为 rostopic 的形式,比起原视频流似乎会有 0.3-0.5s 的延迟。

5. 参考资料

  • 第八章 ROS-RTSP流相机功能包
  • ROS与传感器教程-整合网络摄像头

你可能感兴趣的:(catkin,ros)