1. 程式人生 > >無人駕駛視覺-單目視覺里程計

無人駕駛視覺-單目視覺里程計

対極幾何

通過兩幀影象的運動,利用匹配點,求解相機的位姿變換。(就是得到R,t)步驟:

1. 根據配對點的畫素位置,求出 E 或者 F ;
2. 根據 E 或者 F ,求出 R, t。

 

問題

單目視覺的尺度不確定性(Scale Ambiguity)。例如,程式中輸出的 t 第一維約 0.822。這個 0.822 究竟是指 0.822 米呢,還是 0.822 釐米呢,我們是沒法確定的。

在單目視覺中,我們對兩張影象的 t 歸一化,相當於固定了尺度。雖然我們不知道它的實際長度為多少,但我們以這時的 t 為單位 1,計算相機運動和特徵點的 3D 位置。這被稱為單目 SLAM 的初始化

。(計算出絕對尺度)

從 E 分解到 R, t 的過程中,如果相機發生的是純旋轉,導致 t 為零,那麼,得到的E 也將為零,這將導致我們無從求解 R。不過,此時我們可以依靠 H 求取旋轉,但僅有旋轉時,我們無法用三角測量估計特徵點的空間位置,於是,另一個結論是,單目初始化不能只有純旋轉,必須要有一定程度的平移。如果沒有平移,單目將無法初始化。

 

 

解決單目的尺度不確定性

1、ORB_SLAM2,利用地圖點雲端計算地圖點到相機中心的距離,得到尺度因子。

參考資料:

https://github.com/raulmur/ORB_SLAM

https://blog.csdn.net/u010128736/article/category/6461394

 

2、VINS,單目+IMU。

參考資料

https://github.com/HKUST-Aerial-Robotics/VINS-Mono

https://blog.csdn.net/wangshuailpp/article/details/78461171

單目視覺在初始化過程中無法得到相鄰兩關鍵幀的位置向量t,因此需要融合IMU的資訊計算出位置向量。

IMU能夠測量感測器本體的角速度和加速度,被認為與相機感測器具有明顯的互補性。IMU雖然可以測得角速度和加速度,但這些量都存在明顯的漂移(Drift),使得積分兩次得到的位姿資料非常不可靠。這正是相機的弱點。 當運動過快時,(捲簾快門的)相機會出現運動模糊, 或者兩幀之間重疊區域太少以至於無法進行特徵匹配, 所以純視覺SLAM非常害怕快速的運動。 而有了IMU,即使在相機資料無效的那段時間內, 我們也能保持一個較好的位姿估計,這是純視覺SLAM無法做到的。