視覺SLAM的主要功能模塊分析


視覺SLAM的主要功能模塊分析

 

一.基本概念

SLAM (simultaneous localization and mapping),也稱為CML (Concurrent Mapping and Localization), 即時定位與地圖構建,或並發建圖與定位。 SLAM最早由Smith、Self和Cheeseman於1988年提出。

SLAM過程可以描述為:機器人在未知環境中從一個未知位置開始移動,在移動過程中根據位置估計和地圖進行自身定位,同時在自身定位的基礎上建造增量式地圖,實現機器人的自主定位和導航。
(1)定位(localization):機器人必須知道自己在環境中位置。
(2)建圖(mapping):機器人必須記錄環境中特征的位置(如果知道自己的位置)
(3)SLAM:機器人在定位的同時建立環境地圖。其基本原理是運用概率統計的方法,通過多特征匹配來達到定位和減少定位誤差的。

二.Visual SLAM(視覺SLAM)

攝像機是唯一的外部傳感器。它被稱為視覺障礙。在過去的10年中,發表的文章反映了一種明顯的趨勢,即將視覺作為唯一的外部感官感知系統來解決SLAM問題(Paz等人。2008年;Davison等人。2007年;克萊恩和默里2007年;薩雷斯和埃斯科拉諾2006年;皮涅斯和塔爾多斯2008年)。這一趨勢的主要原因是基於攝像機的系統能夠獲取距離信息,並能夠檢索環境的外觀、顏色和紋理,從而使機器人能夠集成其他高級任務,如檢測和              對人和地方的認可。此外,相機更便宜、更輕、功耗更低。不幸的是,由於以下原因,數據中可能存在錯誤:相機分辨率不足、光線變化、缺少紋理的表面、快速移動造成的圖像模糊等因素。

 三.視覺SLAM的框架

1.傳感器信息讀取   在視覺SLAM中主要為相機圖像信息的讀取和預處理。如果在機器人中,還可能有碼盤,慣性傳感器等信息的讀取和同步。

2.視覺里程計 (visual odometry,VO) 視覺里程計的任務是估算相鄰圖像間相機運動,以及局部地圖的樣子。vo又稱為前端。

3.  后端優化(optimization)。后端接受不同時刻視覺里程計測量的相機位姿,以及回環檢測的信息,對他們進行優化,得到全局一致的軌跡和地圖。由於在VO之后,又稱為后端。

4. 回環檢測(loop closing)。  回環檢測判斷機器人是否到達過去先前的位置,如果檢測到回環,它會把信息提供給后端進行檢測。

5. 建圖(mapping)。它根據估計的軌跡,建立與任務要求對應的地圖。

 四.Visual odometry視覺里程計

在機器人學和計算機視覺中,視覺里程計是通過分析相關的攝像機圖像來確定機器人的位置和方向的過程。它已經被廣泛應用於各種機器人領域,比如火星探測漫游者。

視覺里程計關心的是相鄰圖像之間的相機運動,最簡單的當然是兩張圖像之間的運動關系。計算機是如何通過圖像確定相機的運動的。在圖像上,我們只能看到一個個的像素,知道他們是某些空間點在相機的成像平面投影的結果。所以必須先了解相機跟空間點的幾何關系。vo能夠通過相鄰幀間的圖像估計相機運動,並恢復場景的空間結構,稱它為里程計。稱它為里程計是因為它只計算相鄰時刻的運動,而和再往前的過去信息沒有關聯。

相鄰時刻運動串聯起來,就構成了機器人的運動軌跡,從而解決了定位問題。

另一方面,根據每一時刻的相機位置,計算出各像素對應的空間點的位置,就得到了地圖。

問題:累計漂移(accumulating drift)。

 五.后端優化

后端優化主要是處理slam過程中噪聲的問題。任何傳感器都有噪聲,所以除了要處理“如何重圖像中估計出相機運動”,還要關心這個估計帶有多大的噪聲。

面對的主要問題:

如何從這些帶有噪聲的數據中估計整個系統的狀態,以及這個狀態估計的不確定行有多大——這稱為最大后驗概率估計(maximum-a-posteriori,MAP)。

這個的狀態既包括機器人自身的運動,也包括地圖。

對運動主體自身和周圍環境空間不確定行的估計。

前端給后端提供待優化的數據,以及這些數據的初始值,而后端負責整體的優化過程,它往往面對的只有數據,不必關系這些數據來自哪里。在視覺slam中,前端和計算接視覺研究領域更為相關,比如圖像的特征提取與匹配等,后端則主要是濾波和非線性優化算法。

 六、Loop Detection 回環檢測

回環檢測,又稱閉環檢測(Loop closure detection),是指機器人識別曾到達場景的能力。如果檢測成功,可以顯著地減小累積誤差。
  回環檢測目前多采用詞袋模型(Bag-of-Word),研究計算機視覺的同學肯定不會陌生。它實質上是一個檢測觀測數據相似性的問題。在詞袋模型中,我們提取每張圖像中的特征,把它們的特征向量(descriptor)進行聚類,建立類別數據庫。比如說,眼睛、鼻子、耳朵、嘴等等(實際當中沒那么高級,基本上是一些邊緣和角)。假設有10000個類吧。然后,對於每一個圖像,可以分析它含有數據庫中哪幾個類。以1表示有,以0表示沒有。那么,這個圖像就可用10000維的一個向量來表達。而不同的圖像,只要比較它們的向量即可。
  回環檢測也可以建成一個模型識別問題,所以你也可以使用各種機器學習的方法來做,比如什么決策樹/SVM,也可以試試Deep Learning。不過實際當中要求實時檢測,沒有那么多時間讓你訓練分類器。所以SLAM更側重在線的學習方法。

七.Mapping 建圖
地圖的組織構建主要有以下幾種:
路標地圖:
  地圖由一堆路標點組成,EKF中的地圖就是這樣的。但是,這種地圖對展示很不友好。
度量地圖:
  通常指2D/3D的網格地圖,也就是大家經常見的那種黑白的/點雲式地圖。點雲地圖比較酷炫,很有種高科技的感覺。它的優點是精度比較高,比如2D地圖可以用0-1表示某個點是否可通過,對導航很有用。缺點是相當吃存儲空間,特別是3D,把所有空間點都存起來了,然而大多數角角落落里的點除了好看之外都沒什么意義。
拓撲地圖:
  拓撲地圖是比度量地圖更緊湊的一種地圖。它將地圖抽象為圖論中的”點”和”邊”,使之更符合人類的思維。比如說我要去五道口,不知道路,去問別人。那人肯定不會說,你先往前走621米,向左拐94.2度,再走1035米……(這是瘋子吧)。正常人肯定會說,往前走到第二個十字路口,左拐,走到下一個紅綠燈,等等。這就是拓撲地圖。
混合地圖。
  綜合各種地圖的優點。

1 基於狀態空間描述的一類算法,如擴展卡爾曼濾波(Extended Kalman Filter,EKF )、壓縮擴展卡爾曼濾波(Compressed Extended Kalman Filter, CEKF )等。

2 基於樣本集描述的一類算法,如Rao-Blackwellized  粒子濾波 SLAM,快速SLAM(FastSLAM)、DP-SLAM等。

3 基於信息空間描述的一類算法,如擴展信息濾波(Extended Information Filter, EIF)、稀疏連接-樹濾波(Thin Junction-Tree Filter, TJTF)等。

4 基於差異描述的一類算法,如掃描匹配(Scan Matching)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM