2016-10-12 117 views
2

我有一個問題,即由我無法連接到AR無人機2攝像頭當無人駕駛飛機是通過ROS使用ardrone_autonomy ardrone.launch連接。訪問AR.Drone的攝像頭,支持OpenCV的同時連接到ROS

我認爲這個問題是由於這樣的事實,我想通過與OpenCV的和Python的IP地址來訪問無人機攝像頭,同時通過ardrone_autonomy連接。以下是我如何完成此操作的代碼片段。

video_capture = cv2.VideoCapture() 

video_capture.open('tcp://192.168.1.1:5555') 

vidWidth = video_capture.get(cv2.CAP_PROP_FRAME_WIDTH) 

vidHeight = video_capture.get(cv2.CAP_PROP_FRAME_HEIGHT) 

正如您所見,我正在使用相機的IP地址。當無人機通過基本上像網絡攝像頭的ROS連接時,這是完美的。

我的最終目標是用於跟蹤和導航通過使用圖像的使用的OpenCV這意味着我將不得不的問題,需要通過ardrone_autonomy基於圖像的連接接收並由OpenCV的處理移動命令(cmd_vel)從攝像機接收。

反正我有可以通過使用IP攝像機從無人駕駛飛機,同時連接到ROS做到這一點?

感謝您的幫助!

回答

1

http://wiki.ros.org/video_stream_opencv可以從HTTP/TCP URL打開一個視頻流:

<launch> <!-- video stream from URL to ROS topic - see http://wiki.ros.org/video_stream_opencv --> 
    <include file="$(find video_stream_opencv)/launch/camera.launch" >   
     <arg name="camera_name" value="drone_webcam" /> <!-- node name and ros graph name -->   
     <arg name="video_stream_provider" value="http://192.168.1.227:8080/video?x.mjpeg" /> <!-- ?x.mjpeg see http://answers.opencv.org/question/13139/cvvideocapture-works-for-webcams-but-not-ip-cameras/ --> 
     <arg name="fps" value="10" /><!-- throttling the querying of frames to 10Hz -->   
     <arg name="frame_id" value="webcam" /> <!-- setting TF frame_id -->   
     <arg name="camera_info_url" value="file:///abc/xyz.yaml" /> <!-- camera info loading, take care as it needs the "file:///" at the start , e.g.: 
     "file:///$(find your_camera_package)/config/your_camera.yaml" -->   
     <arg name="flip_horizontal" value="false" /> <!-- flip the image horizontally (mirror it) --> 
     <arg name="flip_vertical" value="false" /> <!-- flip the image vertically -->   
     <arg name="visualize" value="true" /> <!-- visualize on an image_view window the stream generated --> 
    </include> 
</launch> 

注意/video?x.mjpeg在網址的結尾。