在Ubuntu系统基于ROS使用废旧Android手机摄像头搭建监控设备

之前的博文介绍了一些使用android手机获取ROS中传感器,图像以及控制机器人小车的案例;

这里主要介绍如何让ROS获取手机摄像头数据并使用,这样就不用usb_cam等,并且大部分都有手机;

实验成本低,简洁易行。

手机端需要安装RTSP Server等IP Camera类型APP;

PC配置为Ubuntu 16.04 + ROS Kinetic,(14.04+indigo也可行)。

首先,下载功能包并配置,编译等,如下:

点击打开链接http://download.csdn.net/detail/zhangrelay/9799960

$ catkin_make

然后,source xxx/devel/setup.bash:

查看手机IP地址,并配置:

export ROCON_RTSP_CAMERA_RELAY_URL=rtsp://192.168.3.66:5540/ch0

注意,依据自己的端口和情况进行配置。如有必要配置ACL等。

这里用到的ROS功能包是rocon_rtsp_camera_relay

文件组织如下:

.
├── CHANGELOG.rst
├── CMakeLists.txt
├── env-hooks
│ └── 25.rocon-rtsp-camera-relay.sh.em
├── include
│ └── rocon_rtsp_camera_relay
│ └── rocon_rtsp_camera_relay.hpp
├── launch
│ └── rtsp_camera_relay.launch
├── package.xml
├── rapps
│ └── image_stream
│ ├── image_stream.launch.xml
│ └── image_stream.rapp
└── src
├── main.cpp
└── rocon_rtsp_camera_relay.cpp

7 directories,10 files


main.cpp

[objc] view plain copy print ?
  1. #include<ros/ros.h>
  2. #include<rocon_rtsp_camera_relay/rocon_rtsp_camera_relay.hpp>
  3. intmain(intargc,char**argv)
  4. {
  5. ros::init(argc,argv,"rtsp_camera_relay");
  6. ros::NodeHandlepnh("~");
  7. std::stringvideo_stream_url,user,password;
  8. pnh.getParam("video_stream_url",video_stream_url);
  9. rocon::RoconRtspCameraRelayrtsp(pnh);
  10. ROS_INFO("RtspCamera:Initialising..");
  11. if(!rtsp.init(video_stream_url))
  12. {
  13. ROS_ERROR("RtspCamera:Failedtoinitialisestream");
  14. return-1;
  15. }
  16. ROS_INFO("RtspCamera:Initialised");
  17. rtsp.spin();
  18. ROS_INFO("RtspCamera:ByeBye");
  19. return0;
  20. }


可以知道只需要配置合适IP即可使用非常方便。

rocon_rtsp_camera_relay.cpp参考源码。


具体使用说明:

1 先启动手机端:


配置后打开:




2 PC端

运行如下命令:

$ roslaunch rocon_rtsp_camera_relay rtsp_camera_relay.launch --screen

如果没有报错,可以看到下面结果,如果报错,依据错误排查问题:

... logging to /home/relaybotBox/.ros/log/7fabe4ea-15c5-11e7-bd22-00e0b4159b09/roslaunch-relaybotBox-desktop-10439.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://192.168.3.18:34861/
SUMMARY
========
ParaMETERS
* /rosdistro: kinetic
* /rosversion: 1.12.6
* /rtsp_camera_relay/video_stream_url: rtsp://192.168.3....

NODES
/
rtsp_camera_relay (rocon_rtsp_camera_relay/rocon_rtsp_camera_relay_node)

auto-starting new master
process[master]: started with pid [10450]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to 7fabe4ea-15c5-11e7-bd22-00e0b4159b09
process[rosout-1]: started with pid [10464]
started core service [/rosout]
process[rtsp_camera_relay-2]: started with pid [10472]
[ INFO] [1490932367.742812354]: Rtsp Camera : Initialising..
[ INFO] [1490932369.181637729]: Rtsp Camera : Initialised



这里可以看到,最后显示Initialised,已经可以ROS已经可以查看手机的摄像头视频了:

使用一些工具可以查看具体信息,如下:

$ rostopic list
/rosout
/rosout_agg
/rtsp_camera_relay/camera_info
/rtsp_camera_relay/image
/rtsp_camera_relay/image/compressed
/rtsp_camera_relay/image/compressed/parameter_descriptions
/rtsp_camera_relay/image/compressed/parameter_updates
/rtsp_camera_relay/image/compressedDepth
/rtsp_camera_relay/image/compressedDepth/parameter_descriptions
/rtsp_camera_relay/image/compressedDepth/parameter_updates
/rtsp_camera_relay/image/theora
/rtsp_camera_relay/image/theora/parameter_descriptions
/rtsp_camera_relay/image/theora/parameter_updates
/rtsp_camera_relay/status






手机不仅可以很方便的获取ROS中摄像头的数据,ROS也可以很方便的获取手机摄像头的数据。

机器翻译参考:

概述

实时流协议(即RTSP)是IP摄像机(例如foscam)使用的网络控制协议该包桥接从ip摄像机转换流图像,并将其提供为ROS主题。

安装

 > sudo apt-get install ros- <distro> -rocon-rtsp-camera-relay

执行

 > export ROCON_RTSP_CAMERA_RELAY_URL = rtsp://您的IPCAM URL  > roslaunch rocon_rtsp_camera_relay rtsp_camera_relay.launch - 屏幕


~End~

在Ubuntu系统基于ROS使用废旧Android手机摄像头搭建监控设备的更多相关文章

  1. HTML5 播放 RTSP 视频的实例代码

    目前大多数网络摄像头都是通过 RTSP 协议传输视频流的,但是 HTML 并不标准支持 RTSP 流。本文重点给大家介绍HTML5 播放 RTSP 视频的实例代码,需要的朋友参考下吧

  2. 使用Android 2.x实时音频流

    我需要在具有2.x及更高版本的设备上播放实时流.This声明在Android2.x设备上播放实时流是不可能的.我在这里有什么选择?特别是我对流式音频感兴趣–我应该选择哪种格式以及哪种协议?解决方法尝试此示例用于RTSP流,用于视频更改代码以支持音频编辑:使用Android中的MediaPlayer实时音频流媒体Android中的实时音频流,从1.6sdk开始变得如此简单.在setDataSource()API中直接传递url,音频将播放没有任何问题.完整的代码段是,

  3. 为什么我收到“不支持的格式”错误,使用Android MediaPlayer阅读H.264编码的rtsp流?

    (stagefright是否只支持H.263流?)>还是以某种方式错误的Pi侧代码?>或者我只是在客户端代码中缺少关键的一两步?

  4. Python中ROS和OpenCV结合处理图像问题

    ROS通过一个叫CvBridge的功能包,将获取的图像数据转换成OpenCV的格式,OpenCV处理之后,传回给ROS进行图像显示(应用),这篇文章主要介绍了Python中ROS和OpenCV结合处理图像问题,需要的朋友可以参考下

  5. 获取RTSP播放的帧时间戳

    我正在使用gstreamer在qt上制作简单的相机播放视频播放器,可以从OSD中获取帧日期/时间还是仅获取时间?图片上的时间戳的例子,目前与hikvision合作,试图在用wireshark转储的RTP数据包上找到它,但它只与第一帧时间戳相关。

  6. 如何在Windows 8 Metro C#XAML应用程序中播放H.264 RTSP视频?

    更新:我下载了微软的PlayerFramework,但这也没有播放.我在RTSP的例子中找不到任何东西.更新:我使用Wireshark来比较VLCMediaPlayer(有效)与MediaElement和PlayerFramework一起发送的数据包,它们似乎都没有使用RTSP协议.相反,即使我提供了源的IP地址,他们也会将WPAD数据包发送到不同的地址.为什么这有必要?有没有办法扭转这种行为?

  7. 如何在Ubuntu 12.04中安装OpenCV

    我已经在我的电脑中安装了OpenCV2.4.2作为ROS的一部分.如何安装OpenCV作为独立的?我经历了这个guide,并从here下载了opencv软件包.我不太清楚如何进行.任何人都可以提供安装步骤的简短列表?我想为我的项目使用IDE,那么哪个IDE适合C,以及如何安装正确的IDE并正确配置?还如何检查是否安装了某些工具?

  8. 在Ubuntu 18.04 LTS安装ROS 2 Bouncy版机器人操作系统

    ROS1和ROS2同步开发发行,目前最新ROS1的版本号为M,而ROS2的版本号为B。ROS1和ROS2同步学习推荐在Ubuntu16.04中使用ROS1Kinetic和ROS2Ardent。下面简单介绍一下通过DebianPackages安装ROS2Bouncy:具体内容,推荐参考官网教程:https://github.com/ros2/ros2/wiki/Linux-Install-Debians根多关于ROS2的详细内容参考如下:1:2:请注意:ROS2Bouncy对应UbuntuBionic;RO

  9. Ubuntu16.04及ROS Kinetic环境下安装使用RealSense SR300

    Ubuntu16.04及ROSKinetic环境下安装使用RealSenseSR3001、准备条件需要安装Ubuntu16.04及ROSKinetic。此时可以进入librealsense/build/examples文件夹,执行:会出现Realsense拍摄的彩色图像和深度图,如下所示:3、在ROSKinetic环境下使用RealSense安装ros下的realsense包:终端执行:打开一个新终端执行:无报错时,就可以执行:选择CloudPoints2,就可以看到Realsensesr300获得的点云

  10. 在Ubuntu 18.04 LTS入门ROS Melodic版机器人操作系统

    在ROSMelodic中推荐使用catkin_tool:使用catkinbuild编译ros_tutorials,简洁方便:这是ROS最基础最核心的教程。最近一次参加ROS和机器人相关的研讨会,不少同仁反馈基础内容教程碎片化严重。在易科Top博士的鼓励和指引下,进入到ROS和机器人开源知识的分享中,同时也是工作的需要,想在高校开设一系列理论与实践结合的有趣又实用的机器人课程。了解如何开始使用机器人操作系统进行机器人编程。ROS是用于编写机器人软件的开放源代码和灵活框架。

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部