1. 程式人生 > >在Ubuntu系統基於ROS使用廢舊Android手機攝像頭搭建監控裝置

在Ubuntu系統基於ROS使用廢舊Android手機攝像頭搭建監控裝置

在Ubuntu系統基於ROS使用廢舊Android手機攝像頭搭建監控裝置

之前的博文介紹了一些使用android手機獲取ROS中感測器,影象以及控制機器人小車的案例;

這裡主要介紹如何讓ROS獲取手機攝像頭資料並使用,這樣就不用usb_cam等,並且大部分都有手機;

實驗成本低,簡潔易行。

手機端需要安裝RTSP Server等IP Camera型別APP;

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

首先,下載功能包並配置,編譯等,如下:

$ 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. int main (int argc, char** argv)   
  4. {  
  5.   ros::init(argc, argv, "rtsp_camera_relay");  
  6.   ros::NodeHandle pnh("~");  
  7.   std::string video_stream_url, user, password;  
  8.   pnh.getParam("video_stream_url", video_stream_url);  
  9.   rocon::RoconRtspCameraRelay rtsp(pnh);  
  10.   ROS_INFO("Rtsp Camera : Initialising..");  
  11.   if(!rtsp.init(video_stream_url))  
  12.   {  
  13.     ROS_ERROR("Rtsp Camera : Failed to initialise stream");  
  14.     return -1;  
  15.   }  
  16.   ROS_INFO("Rtsp Camera : Initialised");  
  17.   rtsp.spin();  
  18.   ROS_INFO("Rtsp Camera : Bye Bye");  
  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~