浅谈ORB-SLAM3
??ORB-SLAM3一經提出便廣受好評(與上一代時隔3年,2020年推出),不僅適用范圍擴大,而且精度、速度、魯棒性都大大得到擴展。ORB-SLAM3還是延續(xù)了ORB-SLAM1、2的一貫思路。但整體來看,3和2的區(qū)別要遠大于2和1的區(qū)別。這篇文章主要介紹3的一些改進。ORB-SLAM3兼容純視覺、視覺慣性融合、構建多地圖。
??先把3的系統(tǒng)結構圖擺出來:
 
 ??從系統(tǒng)結構圖上可以看出,ORB-SLAM3引入了IMU模塊,同時增加了ATLAS部分,其余沒有太大的變化。
??下面介紹一下ORB-SLAM3新增加的一些特點(很多特點不是ORB-SLAM3首創(chuàng),但是將其做了融合):
 ??1.引入IMU與視覺結合(VO→VIO),精度更好。在IMU初始化階段引入MAP(最后驗概率估計),初始化方法實時快速進行(IMU的初始化目的是為了給慣導的變量提供良好的初始值:機體速度、重力方向、還有IMU的偏置),魯棒性和速度上很大提升。適用于大小場景,室內/外。
 ??2.在place recognition處做改進,實現(xiàn)多子地圖系統(tǒng)(multi-maps)。跟丟的時候重建子地圖,回環(huán)的時候和之前的子地圖進行合并,
 ??3.ORB-SLAM3 是第一個可以重用歷史所有算法模塊的所有信息的系統(tǒng)(第一個同時利用短期、中期、長期數(shù)據(jù)進行數(shù)據(jù)關聯(lián)的系統(tǒng))
 ??4.引入Atlas,Atlas代表一系列不連續(xù)地圖,可用于所有建圖過程。實現(xiàn)了用不同時間數(shù)據(jù)構建地圖。Atlas可應用于重定位,閉環(huán)檢測和地圖融合。Atlas中維護兩個地圖(active map和non-active map),active map可以定位新的關鍵幀,并在local mapping中不斷更新該地圖。若active-map在一段時間內,沒有重定位等事件就會變成non-active map,新的關鍵幀會被加到active-map中
 ??5.引入相機模型,提供了針孔模型和魚眼模型。
 ????注:想對相機模型有個快速了解,可以看看這個:相機模型(camera model)
 ??6.將雙目相機看作為兩個單目相機。面向未矯正的雙目SLAM,適用面更廣
 ??7.為了適應于慢速條件下的地圖初始化,令其快速收斂。提出一種新的尺度優(yōu)化方法,這種方法基于改進的單慣導的優(yōu)化方法,其中插入所有關鍵幀,但尺度和重力方向是唯一的估計參數(shù)。
 ??8.提出了一個在長期和混合地圖數(shù)據(jù)關聯(lián)的時候改進召回率的新場景重識別算法:設置多個跟蹤丟失狀態(tài)。設定跟蹤少于15個點的時候進入短期失敗狀態(tài)。短期失敗利用IMU讀書估計位姿,將MP投影到相機位姿上,再在圖像窗口中做匹配。匹配成功則跟蹤成功。5s內沒恢復,進入長期失敗狀態(tài),重新進行VIO的初始化構建一個地圖作為active map(Atlas的作用),以上整個過程由tracking線程完成
 ??9.VIO模式下,在優(yōu)化中加入慣性殘差來估計剛體速度和IMU偏差
 ??10.回環(huán)檢測線程工作方式轉變:當加入一個新的關鍵幀時,該線程在active-map和Atlas地圖中檢測公共區(qū)域。如果該公共區(qū)域屬于active-map,進行回環(huán)矯正(與之前版本相同)。如果公共區(qū)域屬于其他地圖(Atlas中的離散地圖,即non-active map),則將兩者融合作為新的active-map。
 ??11.Altas使用詞袋模型建立關鍵幀數(shù)據(jù)庫,后續(xù)的重定位、回環(huán)檢測、地圖融合都要用到該庫(凡是要搜索之前的KF都要用到)
 ??12.ORB-SLAM3為了解決全圖優(yōu)化工作量大的問題,使用滑動窗口思想,把關鍵幀及地圖點的滑動窗口作為優(yōu)化變量
??實現(xiàn)思路:ORB-SLAM3保持以KF為基本的數(shù)據(jù)結構,但將地圖分為active-map和non-active-map。這部分的主要工作都是圍繞ATLAS完成。avtive可變成non-active,所有non-active得到保存。所以在后續(xù)的重定位部分,可以利用所有的歷史信息。另外引入了IMU模塊,需要對IMU信息進行處理(IMU融合、IMU初始化、IMU尺度改進)。其余整個識別過程與ORB-SLAM1基本相同。
??作者原文中提到的創(chuàng)新點有兩個(但我覺得不止兩個~):
 ??1.IMU初始化階段引入MAP
 ??2.place recognition部分(利用ATALS),與歷史數(shù)據(jù)結合,大大提高召回率。對重定位、回環(huán)檢測、地圖融合都會產生影響
ORB-SLAM3開源代碼網址為:
 https://github.com/UZ-SLAMLab/ORB_SLAM3
補充說明:
 ??1.IMU的作用:IMU可以測得角速度和加速度,用于短時間內快速運動的位姿估計(彌補快速運動時相機運動模糊的缺點)。但IMU測量的量都會存在明顯漂移,位姿數(shù)據(jù)不可靠。所以IMU只是一個輔助作用。另外當圖像發(fā)生變化時,純視覺無法確定是自身移動還是外部變換,而IMU確定判斷自身狀態(tài),得到結論。
系列相關參考文章:
 ORB-SLAM介紹(無源碼版本)
 ORB-SLAM2和ORB-SLAM的區(qū)別
參考文獻:
 一文詳解ORB-SLAM3 (360doc.com)
 【開源方案共享】ORB-SLAM3開源啦!
 ORB-SLAM3整體梳理 - 知乎 (zhihu.com)
因作者水平有限,如有錯誤之處,請在下方評論區(qū)指正,謝謝!
總結
以上是生活随笔為你收集整理的浅谈ORB-SLAM3的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: ActiveMQ、RabbitMQ、Ro
 - 下一篇: matlab——使用gird函数画背景格