最近,我一直試圖實現一個系統來識別和三角測量機器人系統中對象的三維位置。該過程的大綱如下:計算單眼線性三角測量的兩個測距位置之間的旋轉和平移矩陣
- 確定使用SURF匹配的對象,從一組「訓練」圖像到相機的實際實時饋送;這也給我只包含所識別的對象
- 移動裁剪矩形圖像/旋轉機器人一定量的從在此視圖
- 現在我有在起動視圖到攝像機對象
- 匹配特徵:a一組相應的二維點(來自兩個不同視圖的相同物體),世界座標系中的兩個測距位置(位置+方位),以及相機內在因素(焦距,主點等),因爲它事先已經過校準,所以我應該能夠使用Hartley中的基本線性三角測量方法創建2個投影矩陣並進行三角測量& Zissermann的書多視圖幾何, 312.
- 解決AX = 0方程式爲每個相應的2D點的,然後取平均值
在實踐中,當有一個在旋轉幾乎沒有變化的三角測量只能;如果機器人在移動時甚至會輕微旋轉一點(由於例如車輪打滑),則估計結束。這也適用於模擬。由於我只能發佈兩個超鏈接here's a link到一個帶有模擬圖像的頁面(在地圖上,紅色方塊是模擬機器人的位置和方向,黃色方塊是使用線性三角測量估計對象的位置。)
所以你可以看到,即使通過一個小小的旋轉,估計值也會被拋棄,就像該頁面上的位置2(即15度;如果我再旋轉一次,則估計完全離開地圖),即使在模擬環境中已知完美的校準矩陣。在真正的環境中,當我實際移動機器人時,情況更糟。
獲取點對應關係沒有任何問題,一旦我計算A矩陣,實際求解AX = 0方程也沒有問題,所以我認爲它可能與我如何設置兩個相機投影有關矩陣,特別是我如何從位置/方向信息計算平移和旋轉矩陣,我相對於世界框架。我怎樣,我這樣做,現在的問題是:
- 旋轉矩陣是通過創建一個1×3矩陣組成[0,(在方位角變化),0],然後轉換,要使用的OpenCV的羅德里格斯功能 一個3x3的一個
- 翻譯矩陣是通過旋轉的兩個點組成(開始角度)度,然後減去從初始位置的最終位置中,爲了機器人的直和橫向的相對運動,以獲得它的起始取向
這導致在第一個投影矩陣中是K [I | 0],第二個是K [R | T],其中R和T如上所述計算。
在這裏有什麼我真的做錯了嗎?或者它可能是一些其他問題?任何幫助將不勝感激。