這一講主要介紹視覺SLAM的結構,並完成第一個SLAM程序:HelloSLAM。
目錄
【高翔】視覺SLAM十四講
2.1 小蘿蔔的例子
這一節高翔博士首先介紹了自己組裝的“小蘿蔔”機器人,小蘿蔔要想具有自主運動的能力,首先要知道自身的姿態,然後是瞭解外界的環境。這兩類問題都需要使用傳感器,視覺SLAM中常用的傳感器是相機,根據相機的工作工作方式不同,可以分爲三類:單目相機(Monocular)、雙目相機(Stereo)、深度相機(RGB-D)。
單目相機
單目相機結構簡單,成本較低。本質上是拍照時的場景在相機的成像平面上留下一個投影,以二維的形式記錄了三維的世界。
單目SLAM估計的軌跡和地圖,將與真實的軌跡’地圖,相差一個因子,也就是所謂的尺度。由於單目SLAM無法僅憑圖像確定這個真實尺寸,所以又稱爲尺度不確定性。 本質原因是通過單張圖像無法確定深度,爲了得到這個深度,人們開始使用雙目相機和深度相機。
雙目相機
雙目相機由兩個單目相機組成,但這兩個相機之間的距離(稱爲基線)是已知的。我們通過這個基線來估計每個像素的空間位置,基線距離越大,能夠測量到的就越遠,雙目與多目的缺點是配置與標定均較爲複雜,其深度量程和精度受雙目的基線與分辨率的限制,而且視覺計算非常消耗計算資源,需要使用GPU和FPGA設備加速後,才能實時輸出整張圖像的距離信息。因此在現有的條件下,計算量是雙目的主要問題之一。
深度相機
深度相機又稱RGB-D相機,它最大的特點是可以通過紅外結構光或Time-of-Flight(ToF)原理,像激光傳感器那樣,通過主動向物體發射光並接收返回的光,測出物體離相機的距離。
目前常用的RGB-D相機還存在測量範圍窄、噪聲大、視野小、易受日光干擾、無法測量透射材質等諸多問題,在SLAM方面,主要用於室內。
2.2 經典視覺SLAM框架
下圖爲視覺SLAM的經典框架,視覺SLAM流程分爲如下步驟:
- 傳感器信息讀取:在視覺SLAM中主要爲相機圖像信息的讀取和預處理。
- 前端視覺里程計:其任務爲估算相鄰圖像間相機的運動,以及局部地圖的樣子。
- 後端非線性優化: 後端接受不同時刻視覺里程計測量的相機位姿,以及迴環檢測的信息,對它們進行優化,得到全局一致的軌跡和地圖。
- 迴環檢測:判斷機器人是否到達過先前的位置,如果檢測到迴環,會把信息提供給後端進行處理。
- 建圖:根據估計的軌跡,建立與任務要求對應的地圖。
關於這幾個模塊,在後面的張傑會詳細介紹,這裏先了解即可。
2.3 SLAM問題的數學表述
這裏使用數學語言來描述SLAM的過程,SLAM過程可總結爲兩個方程:
上式爲運動方程,其中爲時刻的位置,爲傳感器的讀書,爲過程中加入的噪聲,方程含義爲:根據機器人上一時刻的位置和傳感器當前的輸入來判斷下一時刻機器人的位置。與運動方程相對應,還有一個觀測方程:
其中是觀測噪聲,爲機器人在位置上看到的路標,方程描述的是:根據機器人在位置上看到的路標時,產生的觀測數據。
這兩個方程描述了最基本的SLAM問題:當知道運動測量的讀數,以及傳感器的讀數時,如何求解定位問題(估計)和建圖問題(估計),這樣就把SLAM問題建模成了一個狀態估計問題?