機器視覺在電腦時代已經越來越流行,網路攝影機價格越來越低廉,部分整合深度感應器的混合型感應器也逐漸在研究領域普及,例如微軟推出的Kinect,而且與之配套的軟體功能十分強大,為開發帶來了極大的便利。ROS整合了Kinect的的驅動包OpenNI,而且使用OpenCV庫可以進行多種多樣的影像處理。
註:本章內容及代碼均參考《ROS by Example》書中的第十章。
一、映像顯示 我們從最基礎的開始,想辦法顯示Kinect的映像資料。
1、安裝驅動包 安裝步驟很簡單:
$sudo apt-get install ros-fuerte-openni-kinect
2、測試 首先運行kinect節點:
$roslaunch rbx1_vision openni_node_fuerte.launch
然後我們調用ROS的image_view包來直接顯示網路攝影機的資料庫。image_view包的介紹可以參考: http://www.ros.org/wiki/image_view。
$rosrun image_view image_view image:=/camera/rgb/image_color
我們可以看到彈出了一個獨立的映像顯示框:
3、分析資料 是我們上面測試中的節點圖。
我們可以使用如下的命令來查看節點之間發送的映像訊息是什麼樣的:
rostopic echo /camera/rgb/image_color
然後就會看到資料刷刷的在顯示,有沒有感覺看不清楚,我們使用終端的重新導向功能將資料全部儲存到檔案中:
rostopic echo /camera/rgb/image_color > test
好了,現在看看檔案中是不是已經有資料了,我們來看一下其中的一幀資料:
header: seq: 19285 stamp: secs: 1370867560 nsecs: 538447820 frame_id: camera_rgb_optical_frameheight: 240width: 320encoding: rgb8is_bigendian: 0step: 960data: [223, 225, 225, 220, 225, 225……………..
從資料中我們可以的出來幾個很重要的參數,首先是映像的解析度:240*320,編碼的格式是rgb8,也就是說映像應該有240*320=76800個像素,而每個像素由八位的R、G、B三個資料群組成,因此我們可以預計下面的data中應該有76800*3=230400個八位的資料了。
我們可以驗證一下data中到底有多少個資料,這個很簡單了,數一下就行了,不過好像有點多,我使用的是linux的“wc”命令。首先我一幀資料複製到單獨的檔案中,每個資料都是用“,”號隔開的,只要計算“,”的數量就知道資料的數量了。
結果和我們預想的是一樣的。知道這個資料格式以後,我們以後就可以直接把其他網路攝影機的資料裝換成這種格式的資料就可以直接在ROS中使用了。
4、rviz顯示映像 我們再來點進階的。rviz是我們經常使用的工具,把映像顯示在rviz中才更有應用價值。rviz已經為我們提供好了顯示映像的介面,使用非常簡單。
首先按照上一節的方法運行kinect節點,然後開啟rviz:
rosrun rviz rviz
然後修改“Fixed Frame”為/camera_rgb_color,修改“Target Frame”為<Fixed Frame>,接著點擊add,選擇camera類型。添加成功後選擇camera菜單下的Iamge Topic選項,選擇/camera/rgb/image_color,確定後下面的顯示框內就顯示映像了。
二、深度顯示 使用kinect的一大特色就是可以獲得感應器的深度資料,也就是物體距離感應器的距離,傳說kinect的可識別範圍在60cm到10m之間。 1、顯示深度映像 首先也需要運行Kinect的節點:
roslaunch openni_launch openni.launch
這一步我使用的是ROS安裝openni包中的節點,使用與前面相同的命令啟動並執行節點在後面無法產生深度資料。
然後同樣適用iamge_view包就可以簡單的顯示深度映像了:
rosrun image_view disparity_view image:=/camera/depth/disparity
2、rviz中顯示深度 首先運行rviz:
rosrun rviz rviz
然後修改“Fixed Frame”和“Target Frame”,在add中添加PointCloud2類型,修改“topic”,具體參數如所示:
----------------------------------------------------------------
歡迎大家轉載我的文章。
轉載請註明:轉自古-月
http://blog.csdn.net/hcx25909
歡迎繼續關注我的部落格