0 初步認(rèn)知
知乎Live:暢談 SLAM 即時定位建圖技術(shù)
視覺SLAM漫淡
SLAM:simultaneous localization and mapping 即時定位與地圖構(gòu)建
- SLAM分為視覺SLAM(用視覺信息)诵冒、激光SLAM(用激光信息)汽馋。區(qū)別只在于數(shù)據(jù)的來源,視覺SLAM用視覺里程計(jì)豹芯,而后端铁蹈、回環(huán)檢測、建圖并不在乎數(shù)據(jù)是從哪來的容诬。其實(shí)對于回環(huán)檢測來說沿腰,用視覺中比激光有效,因?yàn)橐曈X信息比激光信息更豐富习蓬,判斷這兩個圖像是同一個地方措嵌,比判斷兩個激光數(shù)據(jù)采自同一地點(diǎn),要容易押赊。
- 本文專注于視覺SLAM
0.1 SLAM中四個問題
- localization定位包斑、mapping建圖、navigation導(dǎo)航神帅、exploration探索
0.2 視覺SLAM的模塊
- 傳感器:主要分為單目相機(jī)萌抵、雙目相機(jī)、RGB-D相機(jī)霎桅。
-
前端:視覺里程計(jì)(與計(jì)算機(jī)視覺讨永、測量幾何相關(guān),分為基于特征點(diǎn)的視覺里程計(jì)揭糕、基于直接法的視覺里程計(jì)),由于用的是計(jì)算機(jī)視覺的方法著角,在運(yùn)動過程中會產(chǎn)生累積誤差,最后造成drift漂移奄容,故得到的是粗略的位置和幾何估計(jì)锨侯。
· 基于特征點(diǎn)的視覺里程計(jì):以 (Oriented FAST and Rotated BRIEF) ORB-SLAM為代表。
· 基于直接法的視覺里程計(jì):以 Large-Scale Direct (LSD) 大規(guī)模直接法、Semi-Direct Monocular Visual Odometry (SVO) 半直接單目視覺里程計(jì) 為代表深滚,由光流法發(fā)展而來涣觉。 -
后端:非線性優(yōu)化(現(xiàn)在主流的方法),優(yōu)化得到更精確的軌跡和地圖生兆。
后端在很長一段時間使用以 Kalman Filter (KF) 卡爾曼濾波器 和 Extended Kalman Filter (EKF) 擴(kuò)展卡爾曼濾波器 為代表的濾波器方法膝宁;近年來受到structure from motion 領(lǐng)域的影響,開始大規(guī)模使用非線性優(yōu)化來對軌跡和地圖進(jìn)行進(jìn)一步的優(yōu)化合蔽。 - 回環(huán)檢測:詞袋模型(主流方法)介返,檢測機(jī)器人什么時候回到了之前的位置,從而消除累積誤差刃宵。
-
建圖:根據(jù)之前得到的相機(jī)軌跡和粗略地圖來估計(jì)更加精確的地圖徘公。
下面是各模塊中部分重要概念
1 前端 —— Visual Odometry 視覺里程計(jì)
1.1 基于特征點(diǎn)(稀疏)
- 計(jì)算特征點(diǎn)步淹、特征點(diǎn)匹配诚撵、重構(gòu)寿烟。由于只重構(gòu)特征點(diǎn)辛燥,所以是稀疏的。
- 缺點(diǎn):提取特征點(diǎn)過程中徘六,丟棄了大量的有用信息榴都,對于一張640x480的圖像,原本有30萬左右的像素竿音,但是我們只用了其中幾百個特征點(diǎn)而已拴驮;特征缺失問題,即我們無法保證對于每個圖宽气,都能提以足夠的潜沦、有效的特征點(diǎn),比如一面白墻窃判。
1.2 光流法
- 以LK光流(稀疏)為例:計(jì)算關(guān)鍵點(diǎn)(沒有描述子)喇闸,根據(jù)這些點(diǎn)的運(yùn)動計(jì)算相機(jī)運(yùn)動
- 缺點(diǎn):需要灰度不變假設(shè),不是只對于關(guān)鍵點(diǎn)這一個像素唆樊,而是比如4*4的區(qū)域在兩幀之間假設(shè)灰度不變刻蟹;并沒有考慮相機(jī)的旋轉(zhuǎn)和物體的縮放,也就是說如果相機(jī)發(fā)生旋轉(zhuǎn)或者物體發(fā)生了縮放片效,就不準(zhǔn)了;沒考慮相機(jī)的參數(shù)昙读,僅基于圖像去計(jì)算膨桥,但我倒覺得是好事,這樣不需要知道相機(jī)參數(shù)也是可以做的沮稚,但是可能這樣利用的信息比較少册舞。
1.3 基于直接法(稠密)
- 直接法跳過了提取特征點(diǎn)的步驟,直接根據(jù)像素信息來估計(jì)相機(jī)的運(yùn)動囚似。所以是稠密的线得。
- 缺點(diǎn):利用了所有信息之后贯钩,使得優(yōu)化問題規(guī)模遠(yuǎn)遠(yuǎn)大于使用特征點(diǎn)的規(guī)模办素,多需GPU加速才能達(dá)到實(shí)時;由于圖像的非凸性性穿,直接用像素計(jì)算極易陷入局部最優(yōu),且需要假設(shè)同一個點(diǎn)在不同視角下灰度相同(即灰度不變假設(shè)吗坚,然后解一個最小化光度誤差的優(yōu)化問題)商源,故只有在圖像足夠相似時(相機(jī)運(yùn)動連續(xù)、緩慢時)才有效牡彻。
- 根據(jù)使用像素的多少出爹,分為稠密的(用所有像素)缎除、半稠密的(用像素梯度比較明顯的地方器罐,因?yàn)樘荻炔幻黠@的地方對優(yōu)化問題貢獻(xiàn)并不大)废菱、稀疏的(用關(guān)鍵點(diǎn),不需要特征描述衰倦,只是變化明顯的角點(diǎn)旁理、邊緣)直接法。其中稀疏的直接法是視覺里程計(jì)中最快的方式驻襟,一因?yàn)橄∈栌罂蓿驗(yàn)椴恍枰卣髅枋觥?/li>
- 代表方法:早期的DBU,現(xiàn)在的LSD豌习、DSO拔疚、SVO。
2 后端 —— 非線性優(yōu)化
2.1 圖優(yōu)化
視覺SLAM漫淡(二):圖優(yōu)化理論與g2o的使用
構(gòu)造圖:
3 Loop Closure Detection 回環(huán)檢測
回環(huán)檢測指機(jī)器人識別曾到達(dá)場景的能力菌湃,如果檢測成功,可以顯著地減小累積誤差骤坐。多用詞袋模型。
3.1 Bag of Words 詞袋模型
- 詞袋模型用于檢測觀測數(shù)據(jù)的相似性蕾久。在詞袋模型中拌夏,我們提取每張圖片的特征,將特征向量聚類成不同類別(比如眼睛障簿、鼻子、嘴皆怕、耳朵西篓,其實(shí)在這里只是一些特定的邊緣、角等)虱黄。假設(shè)有10000類吮成,那么每張圖片可以用one-hot的10000維向量表示。通過比較向量,來比較圖片冗美。
4 建圖
4.1 地圖類型
視覺SLAM漫談 (三): 研究點(diǎn)介紹
經(jīng)典視覺SLAM框架
大致分為度量地圖和拓?fù)涞貓D:
- Metric Map 度量地圖:
- Sparse稀疏型:即路標(biāo)地圖,由路標(biāo)組成节预。但對于導(dǎo)航來說只有路標(biāo)的地圖是不夠的属韧。
- Dense稠密型:即點(diǎn)云圖系草,按照某分辨率,二維劃分為Grid小格子,三維劃分為Voxel小方塊(體素)拙泽,每個小塊有 占據(jù)、空閑泼疑、未知 三種狀態(tài)荷荤。但由于需要存儲每個小塊的狀態(tài),故耗費(fèi)大量存儲空間会油,且許多細(xì)節(jié)是無用的袱蚓;誤差易使地圖無效。
-
Topological Map 拓?fù)涞貓D:
是一種更稠密的地圖体斩,強(qiáng)調(diào)地圖元素之間的關(guān)系,將地圖抽象為圖論中的“節(jié)點(diǎn)”和“邊”絮吵,只考慮節(jié)點(diǎn)之間的連通性忱屑。但不擅長表達(dá)具有復(fù)雜結(jié)構(gòu)的地圖。