在前面兩篇文章中,我們已經介紹了 libuvc_camera 和 usb_cam 這兩個 USB Camera 相關的套件。接下來,我們要介紹另外一個套件 cv_camera,這個套件透過 OpenCV 來擷取 USB Camera 的影像。除了前面兩個套件之外,也可以選擇這個套件來使用 USB Camera 攝影機。
安裝 cv_camera 套件
在使用 cv_camera 套件之前,先執行下列指令進行安裝。這個套件主要是透過 OpenCV 來擷取 USB Camera 的影像。
安裝指令:
$ sudo apt-get install ros-kinetic-cv-camera
檢查 USB Camera 設備檔案是否存在
和先前使用 libuvc_camera 套件一樣,先執行下列指令,確認一下 USB Camera 設備檔案是否存在。下面出現的 /dev/video0 設備檔案就是我的 USB Camera 啦!
$ ls /dev/video*
/dev/video0
啟動 cv_camera 節點
接下來,依序執行下列指令,啟動 ROS Master, cv_camera node,以及 image_view。
啟動 ROS Master:
$ roscore
設定並啟動 cv_camera:
$ rosparam set cv_camera/device_id 0
$ rosrun cv_camera cv_camera_node
啟動 image_view:
$ rosrun image_view image_view image:=/cv_camera/image_raw
cv_camera 會從 /dev/video0 讀取 USB Camera 影像串流,並且發佈到 /cv_camera/image_raw 主題 (Topic),預設採用的 width/height/frame_rate 為 640x480 30FPS。
image_view 透過訂閱 /cv_camera/image_raw 來接收 cv_camera 發佈的影像串流,並顯示在螢幕上。所以,如果正常的話,執行上述指令之後,應該就可以看到螢幕上顯示 USB Camera 的影像。
使用 Launch 文件啟動 cv_camera 節點
我們也可以編寫一個 Launch 文件來取代上述的指令,並且還可以在 Launch 文件裡面設定一些 USB Camera 的參數。如下:
-- /opt/ros/kinetic/share/cv_camera/launch/mycamera.launch
<launch> <node name="cv_camera" pkg="cv_camera" type="cv_camera_node" output="screen" > <param name="device_id" type="int" value="0" /> <param name="image_width" value="1280" /> <param name="image_height" value="720" /> </node> <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen"> <remap from="image" to="/cv_camera/image_raw"/> <param name="autosize" value="true" /> </node> </launch> |
可以自行視需要調整上述設定,修改完之後,再執行下列指令啟動 Launch 文件,就可以看到 USB Camera 的影像顯示在螢幕上了。
$ roslaunch cv_camera mycamera.launch
參考資料
- ROS cv_camera 获取 USB 摄像头图像
https://www.jianshu.com/p/bbc8fae6710c
- ROS.org Wiki - cv_camera
- ubuntu14.04 利用ros usb_cam包驅動攝像頭後顯示圖像上下顛倒的解決方法
沒有留言:
張貼留言