ORB-SLAM3系列-多地圖管理
來源:公眾號|3D視覺工坊(系投稿)
作者:Liam
「3D視覺工坊」技術(shù)交流群已經(jīng)成立,目前大約有12000人,方向主要涉及3D視覺、CV&深度學(xué)習(xí)、SLAM、三維重建、點云后處理、自動駕駛、CV入門、三維測量、VR/AR、3D人臉識別、醫(yī)療影像、缺陷檢測、行人重識別、目標跟蹤、視覺產(chǎn)品落地、視覺競賽、車牌識別、硬件選型、學(xué)術(shù)交流、求職交流、ORB-SLAM系列源碼交流、深度估計等。工坊致力于干貨輸出,不做搬運工,為計算機視覺領(lǐng)域貢獻自己的力量!歡迎大家一起交流成長~
添加小助手微信:CV_LAB,備注學(xué)校/公司+姓名+研究方向即可加入工坊一起學(xué)習(xí)進步。
QQ群「3D視覺研習(xí)社」,群號:574432628
論文名稱: ORBSLAM-Atlas: a robust and accurate multi-map system

摘要
利用魯棒的地圖融合方法解決不限數(shù)量的子地圖融合問題,Altas使SLAM系統(tǒng)變的更加的精準和魯棒。在tracking線程跟蹤失敗的時候,系統(tǒng)會構(gòu)建一個新的子地圖。當(dāng)該地圖和先前的子地圖有共同部分的時候就會進行地圖融合。針對原來的方法中只舍棄特征點數(shù)量少的幀,我們也舍去位姿估計不準的幀來構(gòu)建更加精準的子地圖。
本文的貢獻
利用atlas來解決不限數(shù)量的子地圖融合問題。altas有不限數(shù)量的子地圖關(guān)鍵幀的詞袋數(shù)據(jù)庫,保證了地圖場景重識別的效率。
多地圖的操作算法:新地圖生成、在混合地圖中重定位和地圖融合
在有差的相機位姿的時候評價跟蹤失敗的方法。這可以避免在閉環(huán)的過程中由于高度不確定的位姿導(dǎo)致的位姿圖優(yōu)化誤差過大。
ORBLAM-Atlas多地圖表示

Screenshot from 2020-09-26 08-31-13.png
altas由無數(shù)的子地圖組成,每個子地圖有自己的關(guān)鍵幀、地圖點、共視圖和最小生成樹。每個地圖的參考幀是第一幀上。新來幀只更新altas中的一個地圖(active map)。altas中也保存了特別的地圖的詞袋數(shù)據(jù)庫來識別關(guān)鍵幀。本系統(tǒng)有一個單獨的場景重識別的模塊,如果兩個關(guān)鍵幀都來自active map就會執(zhí)行閉環(huán)檢測,如果在不同的地圖中就會執(zhí)行地圖融合。
新地圖產(chǎn)生的標準
當(dāng)相機跟蹤失敗就開始進行重定位,如果重定位過了一段時間也不成功,active map變成了unactive map存儲在了altas中。然后一個新地圖被初始化,具體的過程參考ORB-SLAM2和ORB-SLAM中的地圖初始化過程。評判tracking是否失敗的標準:
匹配的特征點的數(shù)量:當(dāng)前幀和局部地圖的匹配數(shù)量。
相機位姿的observability:如果檢測到的點幾何條件不好,那么估計的相機位姿也不準(計算出來匹配點的距離大,特征屬于不可用的特征)。
相機位姿的observability(可觀察性)
利用位姿的協(xié)方差矩陣來估計相機的observability,假設(shè)每個地圖點都估計的很準確,因為不能實時的計算每一幀地圖點的協(xié)方差矩陣。信息矩陣Ωij表示第j個地圖點在第i幀中的不確定性。相機i的不確定性是由其和局部地圖匹配的特征點決定的。估計相機六自由度位姿為T? _i,w,屬于李群。除此之外,利用6個參數(shù)εi的無偏高斯向量對位姿的不確定性進行編碼,該向量定義了在T? _i,w周圍逼近位姿真值的李代數(shù):

其中Exp(ε_i)把一個六維的向量直接轉(zhuǎn)換為了李代數(shù),其協(xié)方差矩陣C編碼為相機位姿估計的準確性,而J矩陣為相機位姿對觀測的地圖點的雅各比矩陣。由于平移的幅度很小,所以在評判中僅用C的對角線上表示誤差的值。

多地圖中的重定位
如果相機跟丟了,利用當(dāng)前幀查詢Atlas DBoW的數(shù)據(jù)庫。這個查詢能在所有地圖中找相似的關(guān)鍵幀。一旦有了候選關(guān)鍵幀,地圖和匹配的地圖點,就可以按照ORB-SLAM中進行重新定位。主要包括利用PnP進行魯棒的位姿估計和RANSAC階段,然后進行匹配搜索、進行只優(yōu)化位姿的非線性優(yōu)化。
相似地圖融合
執(zhí)行ORBSLAM中的場景重識別來檢測相似的地圖進行融合,場景重識別的過程中需要檢測和共視圖中關(guān)鍵幀相連的三個關(guān)鍵幀來避免假陽性的檢測。另外在地圖融合的過程中,active map和具有共同區(qū)域的其他地圖合并,然后用合并完的地圖作為active map。
1)在兩個地圖中檢測共同的部分。場景重識別模塊提供了兩個匹配的關(guān)鍵幀,K_a和K_s和兩個地圖M_a和M_s中匹配的地圖點。
2)估計地圖融合的變換矩陣。這里需要雙目的SE(3)或者單目的Sim(3)變換(單目沒有尺度信息,所以需要估計Sim3變換),這樣就可以在世界參考幀中對齊兩個地圖。基于M_a和M_s兩個地圖的匹配關(guān)系,利用混合Horn method(Closed-form solution of absolute orientation using unit quaternions)的RANSAC來進行初始的估計,利用估計出來的位姿K_s來指導(dǎo)匹配,利用非線性優(yōu)化兩個地圖的重投影誤差得到兩個地圖間的匹配得到最終兩個地圖之間的位姿T_Wa, Ws。
3)融合地圖。利用位姿T_Wa, Ws把M_s中的所有關(guān)鍵幀和地圖點都投影到M_a中;檢測重復(fù)的地圖點融合;把M_s和M_a中的所有關(guān)鍵幀和地圖點放在M_m中;最后把M_s和M_a的生成樹和共視圖合并成M_m的生成樹和共視圖。
4)在連接區(qū)域的局部BA。根據(jù)包含了與k_a共視的所有關(guān)鍵幀的M_m共視圖。為了固定測量的自由度,在M_a中固定的關(guān)鍵幀在局部BA中保持固定,而在非線性優(yōu)化過程中,其余關(guān)鍵幀被設(shè)置為可優(yōu)化量。利用第二個重復(fù)點檢測和融合來更新M_m共視性圖。
5)位姿圖優(yōu)化。最后利用位姿圖優(yōu)化來優(yōu)化M_m的位姿。
地圖融合線程和tracking線程并行運行,在融合之間有時候會觸發(fā)全局BA,這時候局部建圖會停止來避免在atlas中加入新的關(guān)鍵幀。如果全局的BA線程在運行,局部建圖也會停止,因為生成樹在BA后會發(fā)生改變。tracking線程會在舊的active地圖中保持實時的運行。一旦地圖融合完成,就重啟局部建圖線程。全局BA結(jié)束了以后也會重啟局部建圖線程來接收新的數(shù)據(jù)。
本文僅做學(xué)術(shù)分享,如有侵權(quán),請聯(lián)系刪文。