1. 程式人生 > >《視覺SLAM十四講》學習筆記之第2講——初識SLAM

《視覺SLAM十四講》學習筆記之第2講——初識SLAM

編碼器 得到 狀態 src tco 模型 lam mar imu

《視覺SLAM十四講》學習筆記之第2講——初識SLAM

經典視覺SLAM框架SLAM問題的數學表述

本章主要分為四個部分,分別為:

  • 引子:引入一個作者虛擬的機器人——小蘿蔔,並介紹了與SLAM相關的傳感器的相關知識
  • 經典視覺SLAM框架:現行通用的視覺SLAM框架
  • SLAM問題的數學表述:即建立SLAM問題的抽象數據模型
  • 編程基礎:Linux中的相關編程基礎

其中引子與編程基礎沒有什麽好講的,現在這裏主要是總結一下“經典視覺SLAM框架部分”與“SLAM問題的數學表達”這兩節的知識點。

經典視覺SLAM框架

經典的視覺SLAM框架如圖1所示,框架由五部分組成,分別為:傳感器數據、前端、後端、建圖與回環檢測。

技術分享圖片
圖1 經典視覺SLAM框架

  • 傳感器數據:視覺SLAM中的傳感器主要是相機,可以是普通的攝像頭(灰度或彩色的)、三維相機(雙目、rgbd相機)等等,如果是機器人的視覺SLAM,則還可以有慣導模塊(IMU)與編碼器,編碼器主要是安裝在車輪上,用於記錄車輪轉動的圈數,視覺SLAM中將這些傳感器數據進行融合,用於對機器人的狀態進行估計;
  • 前端:視覺SLAM中的前端即是指視覺裏程計(Visual Odometry, VO),即用於估計相鄰兩幀圖像之間相機的運動(旋轉與平移),同時估計這兩幀圖像所對應的局部地圖,這部分內容在書中的第7、8講重點講到;
  • 後端優化:後端優化即是根據前端的不同時刻的數據,並結合回環檢測來對(相機)軌跡與地圖進行非線性優化,得到全局一致的軌跡與地圖,這部分內容在書中的第10、11講中重點講到;
  • 回環檢測:圓環檢測是檢測機器人是否回到以前曾經走過的地方,這主要是用於消除前端(視覺裏程計)的累積誤差,提高軌跡與地圖的全局一致性,這部分內容對應書中的第12講;
  • 建圖:即建立SLAM的地圖,SLAM地圖主要分為度量地圖拓撲地圖,而度量地圖又分為稀疏地圖與稠密地圖。度量地圖是用於準確地表達場景中物體的位置關系,而拓撲地圖更強調元素與元素之間的關系,至於選用何種地圖,則根據實際的需求而決定。這部分內容對應書中的第13講;

SLAM問題的數學表達

SLAM問題類似一個狀態估計問題,可以用正式公式來進行數學建模:

其中為運動方程,為第k時刻機器人的位姿,為第k時刻運動傳感器輸入的數據,

為第k時刻的傳感器噪聲,函數f表示機器人運動狀態的轉移過程,整個運動方程的意義是:根據第k-1時刻的機器人位姿、第k時刻的運動傳感器的輸入數據及第k時刻的噪聲分布,推算出第k時刻機器人的位姿,其中傳感器的輸入數據的指用於測試機器人運動的傳感器的數據,如相機的圖像、輪子編碼器的讀取及IMU的數據等等。

公式為觀測方程,其中為路標坐標,路標即是組成地圖的元素,傳感器每個時刻只能觀測到一部分路標,為觀測噪聲,為路標的觀測數據。整個觀測方程的意義是:機器人在位置處,用帶有噪聲傳感器觀測路標,得到一個觀測結果

上述兩個方程構成了一個SLAM模型,通過機器人的運動傳感器的數據與觀測路標的傳感器數據,即可同時估計出機器人的位姿(定位)與路標位置(建圖),這也完全符合SLAM的意思:同時定位與建圖。

《視覺SLAM十四講》學習筆記之第2講——初識SLAM