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