当前位置: 首页 > article >正文

ubuntu+ROS推视频流至网络

目录

概述

工具

ros_rtsp

接受流

web_video_server

源码安装

 二进制安装

ros接收rtsp视频流

总结


概述

ros_rtsp功能包可以将ros视频流以rtsp形式推送

web_video_server功能包可以将ros视频话题推HTTP流

rocon_rtsp_camera_relay可以接受同一网段下的rtsp视频流输出为ros话题信息,进行再处理

工具

ubuntu系统PC

接发工具为siyi遥控器,siyi云台相机等

siyi遥控器带安卓系统,里面的qgc地面站可以接收rtsp视频流,而siyi云台连接网口后会自动发送rtsp流

ros_rtsp

 提前建好工作空间

cd catkin_ws
git clone https://github.com/CircusMonkey/ros_rtsp.git
cd ..
catkin_make -DCATKIN_WHITELIST_PACKAGES="ros_rtsp" #这行指令为单独编译这个包 

进入config修改配置文件

更改下面的source参数为相机话题

终端输入

roslaunch ros_rtsp rtsp_streams.launch 

在浏览器中输入

rtsp://0.0.0.0:8554/front

会直接打开视频,较高延迟

接受流

对于一些设备自带接受rtsp流视频的软件

或者直接在浏览器输入

web_video_server

源码安装

cd catkin_ws/src
git clone https://github.com/RobotWebTools/web_video_server.git
cd ..
catkin_make

 二进制安装

sudo apt-get install ros-$ROS_DISTRO-web-video-server

建议源码安装,方便更改IP地址和话题

进入launch编辑启动文件web_video_server.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="10.255.77.205" />
    <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>

port为端口,默认8080

address为ip地址,一般为自己电脑地址

打开一个相机驱动launch(任意相机都可)

roslaunch usb_acm usb_cam.launch

 然后输入

roslaunch web_video_server web_video_server.launch 

他会自动将相机图像话题推流

在同一局域网下的设备进入浏览器输入

10.255.77.205:8080

会打开

这里有所有的相机话题,延迟很低

ros接收rtsp视频流

git clone https://github.com/robotics-in-concert/rocon_devices

进入catkin_ws进行编译

catkin_make -DCATKIN_WHITELIST_PACKAGES="rocon_rtsp_camera_relay"

这行指令为单独编译这个包

修改launch文件

<launch>
  <arg name="video_stream_url" default="rtsp://0.0.0.0:8554/back"/>
  <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>

更改ip即可

输入

roslaunch rocon_rtsp_camera_relay rtsp_camera_relay.launch 

 可以查看话题

 和普通相机驱动一样,可以查看画面和内参(camera_info)

 

不过这里内参是空的,是由于他无法读取ros标定的相机参数,可以在代码里进行修改

读取文件或直接复制内参

 增加如下代码进行手动赋值

  ci.distortion_model = "head_camera";
  ci.D = {0.03893528054100122, -0.3485441168559756, 0.03216230030094155, 0.003306613122592447, 0};
  ci.K = {666.7638040975144, 0, 307.7119479657995, 0, 675.2068368652186, 292.3638681443858, 0, 0, 1};
  ci.R = {1, 0, 0, 0, 1, 0, 0, 0, 1};
  ci.P = {665.2471923828125, 0, 308.53816715844, 0, 0, 662.948486328125, 302.4687334700211, 0, 0, 0, 1, 0};

这里的内参如何而来,可以用ros自带的相机标定工具,标定完成后生成的head_camera文件内有相机内参。

文件在/.ros/camera_info里

一行一行复制过来即可。

这样话题就有数据了。

总结

对于大部分相机或图像信息推送rtsp流的形式,直接用网线连接省去了wifi这一步骤,所以就需要进行ros接受流来处理图像信息,可以进行识别或图像处理的二次开发。

(http流是否也可以直接连网线,本人没有试过)

感谢观看!


http://www.kler.cn/a/413817.html

相关文章:

  • python学习——列表的相关操作
  • 探索光耦:光耦安全标准解读——确保设备隔离与安全的重要规范
  • Soul App创始人张璐团队亮相GITEX GLOBAL 2024,展示多模态AI的交互创新
  • Android 13 Aosp Settings Android Studio版本
  • 网络安全中的数据科学如何重新定义安全实践?
  • 鸿蒙学习使用本地真机运行应用/元服务 (开发篇)
  • 源码分析Openlayers默认键盘交互实现
  • 记录pbootcms提示:登录失败:表单提交校验失败,请刷新后重试的解决办法
  • ATTCK红队评估实战靶场(二)
  • 可迭代(Iterable)对象与对应的迭代器(Iterator)对象
  • SQL常见面试题(四)
  • Zemax孔径类型
  • 模型输出可保存为数据集、支持配置社区活动作为课程作业|ModelWhale 版本更新
  • 说说 Redis 常用命令
  • 多线程(2)线程创建的两种方法
  • SNMPv3 项目实例
  • python的字体如何调整
  • Unity类银河战士恶魔城学习总结(P149 Screen Fade淡入淡出菜单)
  • 【安全 - openssl 生成密钥对和CSR】
  • FCBP 认证考试要点摘要
  • sin函数拟合
  • 设计模式之 备忘录模式
  • 使用Kamailio实现VoIP通话流程详解
  • 【Java 学习】面向程序的三大特性:封装、继承、多态
  • XSS--跨站脚本攻击
  • “python+ADCIRC”潮汐、风驱动循环、风暴潮等海洋水动力模拟