Paper Reading :ORB SLAM(待完成)

前言:ORB SLAM共有兩個(gè)版本,其中發(fā)表于2015的《ORB-SLAM:a Versatile and Accurate Monoculor SLAM System》詳細(xì)介紹了單目ORB-SLAM的系統(tǒng)組成和算法流程。而與2017年發(fā)表的《ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras》則是在前一版本的基礎(chǔ)上增加了雙目立體視覺(jué)和深度相機(jī)的ORB-SLAM 實(shí)現(xiàn),總體框架與前一版本基本一致,因此本文主要介紹ORB-SLAM v1。

ORG-SLAM 項(xiàng)目主頁(yè)

orb slam 文獻(xiàn)《ORB-SLAM:a Versatile and Accurate Monoculor SLAM System》

開(kāi)放源碼:?github

orb slam 2 文獻(xiàn)《ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras》

開(kāi)放源碼??github



ORB-SLAM 論文解析

0、系統(tǒng)總體框架


Fig.0 ORB-SLAM System Overview

簡(jiǎn)述:

1.兩個(gè)重要模塊 BoW (bags of words) Place Recognition ,Map;

2.三個(gè)并行線程:Tracking 線程,Local Mapping 線程,Loop Closing 線程。

1、BoW Place Recognition 模塊

????這個(gè)模塊主要包括離線訓(xùn)練獲得的視覺(jué)詞匯表和增量式數(shù)據(jù)庫(kù)。視覺(jué)詞匯表是基于DBoW2庫(kù)訓(xùn)練得到的,針對(duì)不同的視覺(jué)場(chǎng)景,需要提前訓(xùn)練獲得包含盡可能多的視覺(jué)詞匯。識(shí)別數(shù)據(jù)庫(kù)則是建立起特征點(diǎn)ORB描述子與能夠看見(jiàn)這個(gè)特征點(diǎn)的關(guān)鍵幀之間的逆檢索對(duì),本文中的識(shí)別數(shù)據(jù)庫(kù)在搜索特征點(diǎn)匹配對(duì)時(shí)發(fā)揮了較大作用,主要用于重定位,閉環(huán)檢測(cè)和插入新的地圖點(diǎn)步驟中。

2、Map 模塊

Map Points: 地圖點(diǎn),即經(jīng)過(guò)單目視覺(jué)的深度估計(jì),然后進(jìn)行優(yōu)化之后的 3D 空間點(diǎn),如果后續(xù)工作需要使用 ORB-SLAM 產(chǎn)生的地圖(當(dāng)然這種稀疏地圖好像除了定位也沒(méi)有什么太大用處),這個(gè)地圖點(diǎn)是重要產(chǎn)物。在Map Point 中主要包含以下信息:

\bullet 地圖點(diǎn)在世界坐標(biāo)系(起始幀對(duì)應(yīng)的相機(jī)坐標(biāo)系)中的三維坐標(biāo)Xw,i

\bullet觀測(cè)方向ni,即所有能觀測(cè)到該地圖點(diǎn)的關(guān)鍵幀對(duì)應(yīng)的相機(jī)光心與該地圖點(diǎn)連線的單位平均向量

\bullet 最佳描述子Di,與該地圖點(diǎn)對(duì)應(yīng)的ORB描述子中海明距離最短的描述子

\bullet 該點(diǎn)能被觀測(cè)到的最近距離dmin和最遠(yuǎn)距離dmax

KeyFrames:關(guān)鍵幀,為了減少優(yōu)化的計(jì)算量(以及地圖點(diǎn)的數(shù)量),ORB-SLAM 對(duì)普通的視頻幀進(jìn)行篩選,得找數(shù)量較小,質(zhì)量較高(冗余特征點(diǎn)少)的關(guān)鍵幀,只有這些關(guān)鍵幀才能進(jìn)入局部地圖和閉環(huán)檢測(cè)的線程中,這是ORB-SLAM之所以能夠在普通CPU上運(yùn)行的重要原因(當(dāng)然也是地圖稀疏的主要原因)。關(guān)鍵幀中主要包含以下信息:

\bullet相機(jī)位姿Tiw(從世界坐標(biāo)系到當(dāng)前關(guān)鍵幀的變換)

\bullet相機(jī)內(nèi)參,焦距,光心位置

\bullet所有特征點(diǎn)的ORB描述子,是否與地圖點(diǎn)匹配

?Co-visibility Graph , Essential Graph, Spanning Tree:所謂共視,是指相機(jī)在兩個(gè)位姿下(兩個(gè)相機(jī))觀測(cè)到了同一個(gè)地圖點(diǎn)。而共視圖則是一種無(wú)向有權(quán)圖,以相機(jī)(關(guān)鍵幀)的姿態(tài)為圖節(jié)點(diǎn),節(jié)點(diǎn)之間是否存在邊(相連),則是依據(jù)這兩個(gè)節(jié)點(diǎn)是否是共視節(jié)點(diǎn),邊的權(quán)重則是相連節(jié)點(diǎn)間共視的地圖點(diǎn)個(gè)數(shù)。本文在共視圖中判斷兩個(gè)關(guān)鍵幀是否是共視的依據(jù)是:共視的地圖點(diǎn)至少為15個(gè)。Spanning Tree則只保留每個(gè)節(jié)點(diǎn)與其他節(jié)點(diǎn)有最多共視地圖點(diǎn)的邊。 而Essential Graph本質(zhì)上也是共視圖,只不過(guò)判斷共視的依據(jù)是:共視的地圖點(diǎn)至少為100個(gè),在此基礎(chǔ)上再加上Spanning Tree。因此,就地圖規(guī)模而言,共視圖最大,Essential Graph次之,Spanning Tree 最小。

3、地圖自動(dòng)初始化

????這個(gè)“自動(dòng)”,指的是ORB-SLAM系統(tǒng)會(huì)根據(jù)不同的初始條件(特征點(diǎn)共面或接近共面,視差小歸為一類(lèi),其他情況歸為另一類(lèi)),自動(dòng)選擇是采用單應(yīng)性矩陣進(jìn)行運(yùn)動(dòng)恢復(fù)(計(jì)算初始相機(jī)位姿),還是使用基礎(chǔ)矩陣進(jìn)行運(yùn)動(dòng)恢復(fù)。由于單目視覺(jué)系統(tǒng)無(wú)法直接獲取特征點(diǎn)的深度信息,所以在系統(tǒng)運(yùn)行的初始階段,需要依靠對(duì)極約束和單應(yīng)性約束進(jìn)行運(yùn)動(dòng)恢復(fù),才能對(duì)特征點(diǎn)進(jìn)行跟蹤(Tracking線程)。流程圖如下:



Note:x_{c}=H_{cr}x_{r},x_{c}^TF_{cr}x_{r}=0,R_{H}=\frac{S_{H}}{S_{H}+F_{H}}

4、Tracking 線程


5、Local Mapping 線程


6、Loop Closing 線程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容