觉SLAM的主要功能模块分析
視覺SLAM的主要功能模塊分析
一.基本概念
SLAM (simultaneous
localization and mapping),也稱為CML (Concurrent Mapping
and Localization), 即時(shí)定位與地圖構(gòu)建,或并發(fā)建圖與定位。 SLAM最早由Smith、Self和Cheeseman于1988年提出。
SLAM過程可以描述為:機(jī)器人在未知環(huán)境中從一個(gè)未知位置開始移動(dòng),在移動(dòng)過程中根據(jù)位置估計(jì)和地圖進(jìn)行自身定位,同時(shí)在自身定位的基礎(chǔ)上建造增量式地圖,實(shí)現(xiàn)機(jī)器人的自主定位和導(dǎo)航。
(1)定位(localization):機(jī)器人必須知道自己在環(huán)境中位置。
(2)建圖(mapping):機(jī)器人必須記錄環(huán)境中特征的位置(如果知道自己的位置)
(3)SLAM:機(jī)器人在定位的同時(shí)建立環(huán)境地圖。其基本原理是運(yùn)用概率統(tǒng)計(jì)的方法,通過多特征匹配來(lái)達(dá)到定位和減少定位誤差的。
二.Visual SLAM(視覺SLAM)
攝像機(jī)是唯一的外部傳感器。它被稱為視覺障礙。在過去的10年中,發(fā)表的文章反映了一種明顯的趨勢(shì),即將視覺作為唯一的外部感官感知系統(tǒng)來(lái)解決SLAM問題(Paz等人。2008年;Davison等人。2007年;克萊恩和默里2007年;薩雷斯和埃斯科拉諾2006年;皮涅斯和塔爾多斯2008年)。這一趨勢(shì)的主要原因是基于攝像機(jī)的系統(tǒng)能夠獲取距離信息,并能夠檢索環(huán)境的外觀、顏色和紋理,從而使機(jī)器人能夠集成其他高級(jí)任務(wù),如檢測(cè)和????????????? 對(duì)人和地方的認(rèn)可。此外,相機(jī)更便宜、更輕、功耗更低。不幸的是,由于以下原因,數(shù)據(jù)中可能存在錯(cuò)誤:相機(jī)分辨率不足、光線變化、缺少紋理的表面、快速移動(dòng)造成的圖像模糊等因素。
三.視覺SLAM的框架
1.傳感器信息讀取?? 在視覺SLAM中主要為相機(jī)圖像信息的讀取和預(yù)處理。如果在機(jī)器人中,還可能有碼盤,慣性傳感器等信息的讀取和同步。
2.視覺里程計(jì) (visual odometry,VO) 視覺里程計(jì)的任務(wù)是估算相鄰圖像間相機(jī)運(yùn)動(dòng),以及局部地圖的樣子。vo又稱為前端。
3.? 后端優(yōu)化(optimization)。后端接受不同時(shí)刻視覺里程計(jì)測(cè)量的相機(jī)位姿,以及回環(huán)檢測(cè)的信息,對(duì)他們進(jìn)行優(yōu)化,得到全局一致的軌跡和地圖。由于在VO之后,又稱為后端。
-
回環(huán)檢測(cè)(loop closing)。? 回環(huán)檢測(cè)判斷機(jī)器人是否到達(dá)過去先前的位置,如果檢測(cè)到回環(huán),它會(huì)把信息提供給后端進(jìn)行檢測(cè)。
-
建圖(mapping)。它根據(jù)估計(jì)的軌跡,建立與任務(wù)要求對(duì)應(yīng)的地圖。
四.Visual odometry視覺里程計(jì)
在機(jī)器人學(xué)和計(jì)算機(jī)視覺中,視覺里程計(jì)是通過分析相關(guān)的攝像機(jī)圖像來(lái)確定機(jī)器人的位置和方向的過程。它已經(jīng)被廣泛應(yīng)用于各種機(jī)器人領(lǐng)域,比如火星探測(cè)漫游者。
視覺里程計(jì)關(guān)心的是相鄰圖像之間的相機(jī)運(yùn)動(dòng),最簡(jiǎn)單的當(dāng)然是兩張圖像之間的運(yùn)動(dòng)關(guān)系。計(jì)算機(jī)是如何通過圖像確定相機(jī)的運(yùn)動(dòng)的。在圖像上,我們只能看到一個(gè)個(gè)的像素,知道他們是某些空間點(diǎn)在相機(jī)的成像平面投影的結(jié)果。所以必須先了解相機(jī)跟空間點(diǎn)的幾何關(guān)系。vo能夠通過相鄰幀間的圖像估計(jì)相機(jī)運(yùn)動(dòng),并恢復(fù)場(chǎng)景的空間結(jié)構(gòu),稱它為里程計(jì)。稱它為里程計(jì)是因?yàn)樗挥?jì)算相鄰時(shí)刻的運(yùn)動(dòng),而和再往前的過去信息沒有關(guān)聯(lián)。
相鄰時(shí)刻運(yùn)動(dòng)串聯(lián)起來(lái),就構(gòu)成了機(jī)器人的運(yùn)動(dòng)軌跡,從而解決了定位問題。
另一方面,根據(jù)每一時(shí)刻的相機(jī)位置,計(jì)算出各像素對(duì)應(yīng)的空間點(diǎn)的位置,就得到了地圖。
問題:累計(jì)漂移(accumulating drift)。
五.后端優(yōu)化
后端優(yōu)化主要是處理slam過程中噪聲的問題。任何傳感器都有噪聲,所以除了要處理“如何重圖像中估計(jì)出相機(jī)運(yùn)動(dòng)”,還要關(guān)心這個(gè)估計(jì)帶有多大的噪聲。
面對(duì)的主要問題:
如何從這些帶有噪聲的數(shù)據(jù)中估計(jì)整個(gè)系統(tǒng)的狀態(tài),以及這個(gè)狀態(tài)估計(jì)的不確定行有多大——這稱為最大后驗(yàn)概率估計(jì)(maximum-a-posteriori,MAP)。
這個(gè)的狀態(tài)既包括機(jī)器人自身的運(yùn)動(dòng),也包括地圖。
對(duì)運(yùn)動(dòng)主體自身和周圍環(huán)境空間不確定行的估計(jì)。
前端給后端提供待優(yōu)化的數(shù)據(jù),以及這些數(shù)據(jù)的初始值,而后端負(fù)責(zé)整體的優(yōu)化過程,它往往面對(duì)的只有數(shù)據(jù),不必關(guān)系這些數(shù)據(jù)來(lái)自哪里。在視覺slam中,前端和計(jì)算接視覺研究領(lǐng)域更為相關(guān),比如圖像的特征提取與匹配等,后端則主要是濾波和非線性優(yōu)化算法。
六、Loop Detection 回環(huán)檢測(cè)
回環(huán)檢測(cè),又稱閉環(huán)檢測(cè)(Loop closure
detection),是指機(jī)器人識(shí)別曾到達(dá)場(chǎng)景的能力。如果檢測(cè)成功,可以顯著地減小累積誤差。
回環(huán)檢測(cè)目前多采用詞袋模型(Bag-of-Word),研究計(jì)算機(jī)視覺的同學(xué)肯定不會(huì)陌生。它實(shí)質(zhì)上是一個(gè)檢測(cè)觀測(cè)數(shù)據(jù)相似性的問題。在詞袋模型中,我們提取每張圖像中的特征,把它們的特征向量(descriptor)進(jìn)行聚類,建立類別數(shù)據(jù)庫(kù)。比如說,眼睛、鼻子、耳朵、嘴等等(實(shí)際當(dāng)中沒那么高級(jí),基本上是一些邊緣和角)。假設(shè)有10000個(gè)類吧。然后,對(duì)于每一個(gè)圖像,可以分析它含有數(shù)據(jù)庫(kù)中哪幾個(gè)類。以1表示有,以0表示沒有。那么,這個(gè)圖像就可用10000維的一個(gè)向量來(lái)表達(dá)。而不同的圖像,只要比較它們的向量即可。
回環(huán)檢測(cè)也可以建成一個(gè)模型識(shí)別問題,所以你也可以使用各種機(jī)器學(xué)習(xí)的方法來(lái)做,比如什么決策樹/SVM,也可以試試Deep Learning。不過實(shí)際當(dāng)中要求實(shí)時(shí)檢測(cè),沒有那么多時(shí)間讓你訓(xùn)練分類器。所以SLAM更側(cè)重在線的學(xué)習(xí)方法。
七.Mapping 建圖
地圖的組織構(gòu)建主要有以下幾種:
路標(biāo)地圖:
地圖由一堆路標(biāo)點(diǎn)組成,EKF中的地圖就是這樣的。但是,這種地圖對(duì)展示很不友好。
度量地圖:
通常指2D/3D的網(wǎng)格地圖,也就是大家經(jīng)常見的那種黑白的/點(diǎn)云式地圖。點(diǎn)云地圖比較酷炫,很有種高科技的感覺。它的優(yōu)點(diǎn)是精度比較高,比如2D地圖可以用0-1表示某個(gè)點(diǎn)是否可通過,對(duì)導(dǎo)航很有用。缺點(diǎn)是相當(dāng)吃存儲(chǔ)空間,特別是3D,把所有空間點(diǎn)都存起來(lái)了,然而大多數(shù)角角落落里的點(diǎn)除了好看之外都沒什么意義。
拓?fù)涞貓D:
拓?fù)涞貓D是比度量地圖更緊湊的一種地圖。它將地圖抽象為圖論中的”點(diǎn)”和”邊”,使之更符合人類的思維。比如說我要去五道口,不知道路,去問別人。那人肯定不會(huì)說,你先往前走621米,向左拐94.2度,再走1035米……(這是瘋子吧)。正常人肯定會(huì)說,往前走到第二個(gè)十字路口,左拐,走到下一個(gè)紅綠燈,等等。這就是拓?fù)涞貓D。
混合地圖。
綜合各種地圖的優(yōu)點(diǎn)。
1?基于狀態(tài)空間描述的一類算法,如擴(kuò)展卡爾曼濾波(Extended Kalman Filter,EKF )、壓縮擴(kuò)展卡爾曼濾波(Compressed
Extended Kalman Filter, CEKF )等。
2 基于樣本集描述的一類算法,如Rao-Blackwellized? 粒子濾波 SLAM,快速SLAM(FastSLAM)、DP-SLAM等。
3 基于信息空間描述的一類算法,如擴(kuò)展信息濾波(Extended Information Filter, EIF)、稀疏連接-樹濾波(Thin Junction-Tree Filter, TJTF)等。
4 基于差異描述的一類算法,如掃描匹配(Scan Matching)。
總結(jié)
以上是生活随笔為你收集整理的觉SLAM的主要功能模块分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。