里程計、推算定位與視覺里程計
本文來自 lxiaoxiaot 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/lxiaoxiaot/article/details/6779936?utm_source=copy
里程計(Odometry):原文連結在此:http://en.wikipedia.org/wiki/Odometry
里程計是一種利用從移動感測器獲得的資料來估計物體位置隨時間的變化而改變的方法。該方法被用在許多種機器人系統(輪式或者腿式)上面,來估計,而不是確定這些機器人相對於初始位置移動的距離。這種方法對由速度對時間積分來求得位置的估計時所產生的誤差十分敏感。快速、精確的資料採集,裝置標定以及處理過程對於高效的使用該方法是十分必要的。 假設一個機器人在其輪子或腿關節處配備有旋轉編碼器等裝置,當它向前移動一段時間後,想要知道大致的移動距離,藉助旋轉編碼器,可以測量出輪子旋轉的圈數,如果知道了輪子的周長,便可以計算出機器人移動的距離。 假設有一個簡單的機器人,配備有兩個能夠前後移動的輪子,這兩個輪子是平行安裝的,並且相距機器人的中心的距離是相等的。假如每個電機都配備有一個旋轉編碼器,我們便可以計算出任意一個輪子向前或向後移動一個單位時,機器人中心實際移動的距離。該單位長度為輪子周長的某一比例值,該比例依賴於編碼器的精度。 假設左邊的輪子向前移動了一個單位,而右邊的輪子保持靜止,則右邊的輪子可以被看做是旋轉軸,而左邊的輪子沿順時針方向移動了一小段圓弧。因為我們定義的單位移動距離的值通常都很小,我們可以粗略的將該段圓弧看做是一條線段。因此,左輪的初始與最終位置點,右輪的位置點就構成一個三角形A。 同時,機器人中心的初始與最終位置點,以及右輪的位置點,也構成了一個三角形B。由於機器人中心到兩輪子的距離相等,同時,兩三角形共用以右輪位置為頂點的角,故三角形A,B相似。在這種情況下,機器人中心位置的改變數為半個單位長度。機器人轉過的角度可以用正弦定理求出。 推算定位(dead reckoning)
視覺里程計(Visual Odometry):http://en.wikipedia.org/wiki/Visual_odometry 在機器人學與計算機視覺領域,視覺里程計是一個通過分析相關影象序列,來確定機器人位置和朝向的過程。 在導航系統中,里程計(odometry)是一種利用致動器的移動資料來估算機器人位置隨時間改變數的方法。例如,測量輪子轉動的旋轉編碼器裝置。里程計總是會遇到精度問題,例如輪子的打滑就會導致產生機器人移動的距離與輪子的旋轉圈數不一致的問題。當機器人在不光滑的表面運動時,誤差是由多種因素混合產生的。由於誤差隨時間的累積,導致了里程計的讀數隨著時間的增加,而變得越來越不可靠。 視覺里程計是一種利用連續的影象序列來估計機器人移動距離的方法。視覺里程計增強了機器人在任何表面以任何方式移動時的導航精度。 視覺里程計演算法: 大多數現有的視覺里程計演算法都是基於以下幾個步驟:
1、影象獲取:單目照相機、雙目照相機或者全向照相機;
2、影象校正:使用一些影象處理技術來去除透鏡畸變;
3、特徵檢測:確定感興趣的描述符,在幀與幀之間匹配特徵並構建光流場; (1)、使用相關性來度量兩幅影象間的一致性,並不進行長時間的特徵跟蹤; (2)、特徵提取、匹配(Lucas–Kanade method); (3)、構建光流場;
4、檢查光流場向量是否存在潛在的跟蹤誤差,移除外點;
5、由光流場估計照相機的運動; (1)、可選方法1:使用卡爾曼濾波進行狀態估計; (2)、可選方法2:查詢特徵的幾何與3D屬性,以最小化基於相鄰兩幀之間的重投影誤差的罰函式值。這可以通過數學上的最小化方法或隨機取樣方法來完成; 6、週期性的重定位跟蹤點;