2013-03-26 69 views
1

我正在研究小型WPF桌面應用程序來跟蹤機器人。我的桌面上有一個適用於Windows的Kinect,我能夠完成基本功能並運行深度相機流和RGB相機流。使用Kinect和EMGU(OpenCV封裝器)的機器人本地化

我需要的是追蹤地板上的機器人,但我不知道從哪裏開始。我發現我應該使用EMGU(OpenCV包裝)

我想要做的是跟蹤一個機器人,並找到它的位置使用深度相機。基本上,它是用於使用立體三角測量機器人的本地化。然後使用TCP和Wifi向機器人發送一些命令,使用RGB和Depth相機將他從一個地方移動到另一個地方。 RGB攝像機還將用於映射區域中的物體,以便機器人可以採取最佳路徑並避開物體。

問題是我之前從未和Computer Vision合作過,實際上我是第一個,我並沒有堅持到最後期限,我更願意學習所有相關的東西來完成這個項目。

我正在尋找細節,解釋,提示,鏈接或教程來達到我的需要。

謝謝。

回答

3

機器人定位是一個非常棘手的問題,我自己一直在掙扎了好幾個月,現在,我可以告訴你,我已經實現了什麼,但你有多種選擇:

  • 光流基於Odometery: (也稱爲視覺里程計):
    1. 提取關鍵點從一個圖像或特徵(I用於施-Tomashi,或cvGoodFeaturesToTrack)
    2. 執行相同的一個連續圖像
    3. 符合這些功能(我使用Lucas-Kanade)
    4. 從Kinect提取深度信息
    5. 計算兩個三維點雲之間的轉換。

什麼上述算法正在做的是它試圖估計兩幀,它會告訴你該機器人的位置之間的攝像機運動。

  • 蒙特卡羅定位:這是相當簡單的,但你也應該用輪odometery它。 檢查this paper爲基於c#的方法。

上述方法使用概率模型來確定機器人的位置。

可悲的是,即使C++中存在的庫很容易地執行你所需要的,將它們包裝爲C#是一項艱鉅的任務。如果你可以編碼一個包裝,那麼你的工作的90%完成了,使用的關鍵庫是PCLMRPT

最後一個選項(目前爲止最簡單但最不準確)是使用內置於Kinect SDK 1.7中的KinectFusion。但是我的機器人本地化經驗非常糟糕。

您必須閱讀Slam for Dummies,這將使蒙地卡羅本地化的事情非常清楚。

困難的現實是,這是非常棘手的,你很可能最終會自己做。我希望你深入這個廣闊的話題,並且會學到很棒的東西。

欲瞭解更多信息,或我編寫的包裝。只是評論如下... :-)

最佳

+0

感謝您的回覆。其實,我用kinect解決了它。我在每個機器人上使用2個小球,一個用於前部,另一個用於後部。我正在用Hough循環算法跟蹤球。它工作正常,駕駛機器人1到機器人2,並按照領導者的例子。儘管如此,我仍在努力。 Woulb很好btw檢查你的一些例子。 – moenad 2013-04-14 16:37:23

+0

很高興看到你解決了你的問題,我的例子太複雜了:-)我認爲你的方法非常聰明,儘管它仍然不是「無標記」的。無論如何。最好。 – 2013-04-14 16:44:41