SLAM學習筆記

初識SLAM

引子

SLAM:Simultaneous Localization And Mapping,即時定位與地圖構建。就是知道兩件事,我在什麼地方,周圍環境是什麼。

傳感器來進行定位,主要有兩類:在機器人本體和在環境中。在環境中的傳感器,約束了環境,不具有普遍性。而在機器人本體上的傳感器對環境沒有要求,這種定位方案更適用於未知環境。機器人本體的相機分爲單目(Monocular)相機、雙目(Stereo)相機和深度相機(RGB-D)。

單目相機:只使用一個相機進行SLAM的做法成爲單目SLAM(Monocular SLAM)。單目相機拍攝圖像只是三維空間的二維投影。想恢復三維結構,必須改變相機的視角,移動相機(這裏可以得到相對深度,但仍然無法確定真實尺度)。但是單目SLAM估計的軌跡和地圖將與真實的軌跡和地圖相差一個因子,也就是所謂的尺度(Scale),單目SLAM無法確定這個真實尺度,也稱作尺度不確定性

雙目相機和深度相機:通過某種手段測量物體和相機的距離,克服單目的缺點。一旦知道了距離,場景的三維結構就可以通過單個圖像恢復出來,消除尺度不確定性。

雙目相機:已知兩個相機的距離,通過大量計算可以估計每個像素點的深度。測量深度範圍與基線有關。基線距離越大,能夠測量的就越遠。

深度相機:又稱RGB-D相機。分爲結構光和Tof(Time-of-Flight)兩種。物理測量手段,可以節省大量計算。但現在的RGB-D相機還存在測量範圍窄,視野小,易受日光干擾的問題,只適用於室內,室外則較難應用。

視覺SLAM的目標是:通過相機拍攝的一系列圖像,進行定位和地圖構建。

經典SLAM框架

經典SLAM框架
傳感器信息讀取。在視覺SLAM中主要爲相機圖像信息的讀取和預處理。如果是在機器人中,還可能有碼盤、慣性傳感器等信息的讀取和同步。

視覺里程計( Visual Odometry, VO)。視覺里程計的任務是估算相鄰圖像間相機的運動,以及局部地圖的樣子。vo又稱爲前端( Front End )。

後端優化(Optimization )。後端接受不同時刻視覺里程計測量的相機位姿,以及迴環檢測的信息,對它們進行優化,得到全局一致的軌跡和地圖。由於接在 vo之後,又稱爲後端(Back End )。

迴環檢測( Loop Closing)。迴環檢測判斷機器人是否到達過先前的位置。如果檢測到迴環,它會把信息提供給後端進行處理。迴環檢測負責把“機器人回到原始位置”的事情檢測出來,而後端優化則根據該信息,校正整個軌跡的形狀。

建圖(Mapping)。它根據估計的軌跡,建立與任務要求對應的地圖。可分爲度量地圖(稀疏和稠密)和拓撲地圖。

SLAM問題的數學表述

運動和觀測:從一點移動到另一點是運動,在某個時刻觀測到某個路標是觀測。運動方程(定位)和觀測方程(建圖)。

三維空間剛體運動

旋轉矩陣

內積可以描述向量間的投影關係。外積垂直於兩向量,大小爲兩向量組成的平行四邊形的面積。外積可以描述旋轉。

四元數

四元數表示旋轉

相似、仿射、射影變換

相似變換:比歐式變化多了一個縮放。體積比。
仿射變換:也叫正交投影,立方體不再是方的。平行性,體積比。
射影變換:接觸面的相交喝相切。

相機與圖像

相機模型

單目相機模型

相機的內參數矩陣。相機的內參在出廠時固定的。有的廠商會告訴,如果沒有,就要自己標定。

相機的外參數是指相機的位姿。

雙目相機模型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章