一、环境配置
首先下载ROS_rtsp的包
在工作空间的src的目录下安装rtsp
cd ~/my_workspace/src
git clone https://github.com/CircusMonkey/ros_rtsp.git
返回工作空间的根目录,编译软件包一、环境配置
cd ..
catkin_make pkg:=ros_rtsp
realsense2_Camera的包自行下载就行
ubuntu20.08下获取realsense内参(使用ros功能包)_realsense相机内参-优快云博客
我用的D435i相机,下面会解释为什么需要装这个
接下来修改rtsp里面的config文件来适配需要的流,你可以添加任意数量的流。
# Set up your streams to rtsp here.
port: "8554"
streams: # Cannot rename - must leave this as is.
stream-x:
type: cam
source: "v4l2src device=/dev/video0 ! videoconvert ! videoscale ! video/x-raw,framerate=15/1,width=1280,height=720"
mountpoint: /front
bitrate: 500
stream-yay:
type: topic
source: /d400/color/image_raw
mountpoint: /back
caps: video/x-raw,framerate=10/1,width=640,height=480
bitrate: 500
解释一下这个代码是个什么意思,因为不说清楚的话后面用VLC拉流很容易迷糊
第一行就是端口,一般默认的就是8554,如果有修改后面拉流的时候改成自己的就行
下面两个stream的意思就是视频来源可以分成两种,一种是直接通过设备获取
这个就是选择你的设备,看清楚自己的设备名称
v4l2src device=/dev/video0
另一种就是通过ROS订阅的话题来获取(前面说会解释为什么要安装realsense的包)
原因就是这里,通过话题来获取视频
source: /d400/color/image_raw
我使用的是第二种,通过ROS订阅的话题来获取视频流再推流出去
使用这种的话要查清楚自己的摄像头发布的这些话题是什么,这个是我参考搬运的
ros_rtsp推流_ros rtsp-优快云博客这个帖子里面的yaml文件配置
然后这是我自己配置的,因为我自己当时也没搞清楚是通过哪种方式获取视频,我就都改了,后面介绍的也会是通过ROS订阅的
然后最关键的是这里,每个流都有一个端口推流出来(不知道我描述的对不对)大概就是这个意思
通过设备直接获取的是/front,通过ROS话题订阅获取的是/back
mountpoint: /front
mountpoint: /back
在ROS端也安装好VLC
sudo apt-get install vlc
这里也有很多bug我不知道是不是这边本身依赖比较多,报什么错查一下能解决的
所以后面在Windows的VLC可视化界面打开网络串流即可
输入网址,ip是你自己ROS的地址
rtsp://你自己的ip:8554/back
如果你用的是第一种,后缀改成front,跟我一样就用back(非常重要,看仔细)
二、测试
roslaunch realsense2_camera rs_camera.launch
在运行推流之前需要运行摄像头的launch文件让ROS端开始发布话题
我自己写了一个py文件让视频显示出来,只运行这个launch文件视频不会再ROS端出现
没出现报错就行,一切正常
roslaunch ros_rtsp rtsp_streams.launch
然后运行完这个视频就可以开始准备拉流了,直接在WindowsVLC可视化界面打开网络串流即可
rtsp://你的ip:8554/back
这样就OK了,是很喜欢子超兄(自嘲熊)的一枚工科生~,踩了很多坑,有一些帖子不是很详细
还是多尝试!!!
人~我是熊~不要害怕~~~!!!!!