SLAM的通用框架:GSLAM
SLAM的通用框架:GSLAM
GSLAM: A General SLAM Framework and
Benchmark
論文鏈接:
http://openaccess.thecvf.com/content_ICCV_2019/papers/Zhao_GSLAM_A_General_SLAM_Framework_and_Benchmark_ICCV_2019_paper.pdf
摘要
SLAM技術(shù)最近取得了許多成功,吸引了高科技公司的注意。然而,如何統(tǒng)一現(xiàn)有或新興算法的接口,有效地進行速度、健壯性和可移植性方面的基準(zhǔn)測試,仍然是一個難題。本文提出了一種新的SLAM平臺GSLAM,它不僅提供了評估功能,而且為研究人員快速開發(fā)SLAM系統(tǒng)提供了有用的工具。的核心貢獻是為研究和商業(yè)應(yīng)用提供一個通用的、跨平臺的、完全開放源碼的SLAM接口,旨在在統(tǒng)一的框架中處理與輸入數(shù)據(jù)集、SLAM實現(xiàn)、可視化和應(yīng)用程序的交互。通過這個平臺,用戶可以通過插件的形式實現(xiàn)自己的功能,以獲得更好的性能,進一步推動應(yīng)用程序向SLAM的實際應(yīng)用發(fā)展。帶有文檔wiki的GSLAM源代碼已經(jīng)發(fā)布,可以在GitHub上找到。
- 主要貢獻
自20世紀(jì)80年代以來,同步定位與映射(SLAM)一直是計算機視覺與機器人領(lǐng)域的研究熱點[3,10,14]。SLAM為許多需要實時導(dǎo)航的應(yīng)用提供了基本功能,如機器人、無人機(UAV)、自動駕駛以及虛擬和增強現(xiàn)實。近年來,SLAM技術(shù)發(fā)展迅速,提出了多種SLAM系統(tǒng),包括單目SLAM系統(tǒng)(基于關(guān)鍵點的SLAM系統(tǒng)[12,37,49]、直接的SLAM系統(tǒng)[15,16,53]和半直接的SLAM系統(tǒng)[22,23])、多傳感器SLAM系統(tǒng)(RGBD系統(tǒng)[7,36,68]、立體的SLAM系統(tǒng)[17,23,51]和慣性輔助的SLAM系統(tǒng)[45,56,66])、基于學(xué)習(xí)的SLAM系統(tǒng)(監(jiān)督的SLAM系統(tǒng)[6,55,67]和無監(jiān)督方法[71,72]。
隨著SLAM技術(shù)的迅速發(fā)展,幾乎所有的研究者都把注意力放在了自己SLAM系統(tǒng)的理論和實現(xiàn)上,使得交換思想變得困難,并且不容易將實現(xiàn)移植到其他系統(tǒng)上。妨礙了快速適用于各種工業(yè)領(lǐng)域。目前,SLAM系統(tǒng)的實現(xiàn)方式很多,如何有效地進行速度、健壯性和可移植性方面的基準(zhǔn)測試仍然是一個問題。最近,Nardi等人[52]和Bodin等人[4]提出了統(tǒng)一的SLAM基準(zhǔn)系統(tǒng),以進行定量、可比和可驗證的實驗研究,研究不同SLAM系統(tǒng)之間的權(quán)衡。通過這些系統(tǒng),利用數(shù)據(jù)集和度量評估模塊可以方便地進行評估實驗。
由于這些系統(tǒng)只提供評估基準(zhǔn),有可能建立一個平臺,服務(wù)于SLAM算法的整個生命周期,包括開發(fā)、評估和應(yīng)用階段。基于SLA的深度學(xué)習(xí)近年來取得了顯著的進展,有必要建立一個既支持C++又支持Python的平臺,更好地支持基于SLAM系統(tǒng)的幾何和深度學(xué)習(xí)的集成。本文介紹了一種新的SLAM平臺,它不僅提供了評估功能,而且為研究人員快速開發(fā)自己的SLAM系統(tǒng)提供了有用的工具。通過該平臺,用戶可以直接使用常用函數(shù)或創(chuàng)建自己的函數(shù)來實現(xiàn)自己的項目,從而獲得更好的性能。希望這個平臺能進一步推動SLAM系統(tǒng)的實際應(yīng)用。總之,這項工作的主要貢獻如下:
1) 為研究和商業(yè)應(yīng)用提供了一個通用的、跨平臺的、完全開放源碼的SLAM平臺,這超出了以前的基準(zhǔn)。SLAM接口由幾個輕量級的、無依賴項的頭文件組成,這使得在一個統(tǒng)一的框架中與不同的數(shù)據(jù)集、SLAM算法和帶有插件表單的應(yīng)用程序進行交互變得容易。此外,JavaScript和Python也被提供給基于web和基于深度學(xué)習(xí)的SLAM應(yīng)用程序。
2)在GSLAM平臺中,引入了三個優(yōu)化模塊作為工具類,包括估計器、優(yōu)化器和詞匯表。估計器的目的是提供一個封閉形式的求解器的集合,涵蓋所有有趣的情況和穩(wěn)健樣本一致性(RANSAC);優(yōu)化器的目的是為流行的非線性SLAM問題提供一個單一的接口;詞匯表的目的是提供一個有效和便攜式的詞匯袋實現(xiàn)與多線程和SIMD優(yōu)化的地方再電離。 3)得益于上述接口,在一個統(tǒng)一的框架中實現(xiàn)并評估了現(xiàn)有數(shù)據(jù)集、SLAM實現(xiàn)和可視化應(yīng)用程序的插件,未來新興基準(zhǔn)或應(yīng)用程序可以更容易地集成。
General SLAM Framework
GSLAM的核心工作是提供一個通用的SLAM接口和框架。為了更好的體驗,界面被設(shè)計成輕量級的,它由幾個頭組成,并且僅依賴于C++ 11標(biāo)準(zhǔn)庫。基于該接口,支持JavaScript、Python等腳本語言。在這一部分中,介紹了GSLAM框架,并簡要介紹了幾個基本接口類。 框架概述
GSLAM的框架如圖1所示,一般來說,接口的目的是處理三個部分的交互:
1)SLAM實現(xiàn)的輸入
運行SLAM時,需要傳感器數(shù)據(jù)和一些參數(shù)。對于GSLAM,Svar類用于參數(shù)配置和命令處理。SLAM實現(xiàn)所需的所有傳感器數(shù)據(jù)都由一個數(shù)據(jù)集實現(xiàn)提供,并使用Messenger進行傳輸。GSLAM實現(xiàn)了幾個流行的visual SLAM數(shù)據(jù)集,用戶可以自由地實現(xiàn)自己的數(shù)據(jù)集插件。
2)SLAM的實現(xiàn)
GSLAM將每個實現(xiàn)視為一個插件庫。開發(fā)人員很容易基于GSLAM接口和實用程序類設(shè)計SLAM實現(xiàn)。開發(fā)人員還可以使用接口包裝實現(xiàn),而不必導(dǎo)入額外的依賴項。用戶可以專注于核心算法的開發(fā),而不必關(guān)心SLAM實現(xiàn)之外應(yīng)該處理的輸入和輸出。
3)使用SLAM結(jié)果的可視化部分或應(yīng)用程序
在SLAM實現(xiàn)處理輸入幀之后,用戶可能希望演示或利用結(jié)果。一般來說,SLAM結(jié)果應(yīng)該以標(biāo)準(zhǔn)格式發(fā)布。默認(rèn)GSLAM使用Qt進行可視化,但是用戶可以自由地實現(xiàn)自定義的可視化工具,并添加應(yīng)用程序插件,如評估應(yīng)用程序。
該框架被設(shè)計為兼容不同種類的SLAM實現(xiàn),包括但不限于單目、立體、RGBD和具有多傳感器融合的多攝像機視覺慣性里程表。現(xiàn)在它最適合基于特征的實現(xiàn),同時也支持基于直接或深度學(xué)習(xí)的SLAM系統(tǒng)。由于現(xiàn)代的深度學(xué)習(xí)平臺和開發(fā)人員喜歡Python進行編碼,GSLAM提供了Python綁定,因此開發(fā)人員能夠使用Python實現(xiàn)SLAM,并用GSLAM調(diào)用它,或者用Python調(diào)用基于C++的SLAM實現(xiàn)。此外,GSLAM可以用來訓(xùn)練SLAM模塊,其監(jiān)督過程可以概括為:
1)使用傳統(tǒng)SLAM插件計算稀疏深度圖和相機姿態(tài);
2)使用深度圖和相機姿態(tài)作為監(jiān)督訓(xùn)練估計器。GSLAM還可以應(yīng)用無監(jiān)督的方法來聯(lián)合學(xué)習(xí)深度和姿態(tài)估計器,通過數(shù)據(jù)集插件只需要不需要地面真實深度的圖像序列進行訓(xùn)練。然后,利用多視圖幾何約束作為損失對網(wǎng)絡(luò)進行訓(xùn)練。
3.2 基本接口類
SLAM接口通常使用一些數(shù)據(jù)結(jié)構(gòu),包括參數(shù)設(shè)置/讀取、圖像格式、姿態(tài)變換、相機模型和地圖數(shù)據(jù)結(jié)構(gòu)。下面將簡要介紹一些基本的接口類。
3.2.1參數(shù)設(shè)置
GSLAM使用一個小的參數(shù)解析和參數(shù)設(shè)置類Savar,它僅由一個依賴于C++
11的單個標(biāo)頭組成,其特征如下:
- 參數(shù)解析和配置加載與幫助信息。與Google
g flags2等流行的參數(shù)解析工具類似,變量配置可以從參數(shù)、文件和系統(tǒng)環(huán)境中加載。用戶還可以通過“幫助”中的“介紹”定義不同類型的參數(shù)。
2.一種具有變量、函數(shù)和條件的小型腳本語言,使配置更加強大。
-
線程安全的變量綁定和共享。建議使用非常高頻率的變量與指針或引用綁定,這樣既方便又高效。
-
C++和純腳本的簡單函數(shù)調(diào)用和調(diào)用。命令和函數(shù)之間的綁定有助于開發(fā)人員分離文件依賴關(guān)系。
-
支持樹結(jié)構(gòu)表示,這意味著很容易加載或保存XML、JSON和YAML格式的配置。
3.2.2進程內(nèi)消息傳遞
由于ROS提供了一種非常方便的節(jié)點間通信方式,受到了大多數(shù)機器人研究人員的青睞。受ROS2消息傳遞體系結(jié)構(gòu)的啟發(fā),GSLAM實現(xiàn)了一個類似的進程內(nèi)通信實用程序類Messenger。這為在SLAM實現(xiàn)中替換ROS并保持兼容性提供了另一種選擇。由于進程內(nèi)設(shè)計,Messenger可以發(fā)布和訂閱任何類,而不需要額外的成本。下面列出了更多功能:
- 這個界面保持了ROS的風(fēng)格,用戶可以很容易地開始使用。并且支持所有的ROS-defined消息,這意味著幾乎不需要什么工作來取代原來的ROS消息。
2.由于不存在序列化和數(shù)據(jù)傳輸,因此可以發(fā)送消息而無需等待時間和額外成本。同時,有效載荷不限于ROS定義的消息,但支持任何可復(fù)制的數(shù)據(jù)結(jié)構(gòu)。
- 源是基于C++ 11的頭字號LES,沒有額外的依賴性,這使得它是可移植的。 4. API是線程安全的,當(dāng)隊列大小大于零時支持多線程條件通知。主題名和RTTI數(shù)據(jù)結(jié)構(gòu)檢查都在發(fā)布服務(wù)器和訂閱服務(wù)器相互連接之前完成,以確保調(diào)用正確。
三維變換
旋轉(zhuǎn)、剛性和相似性是SLAM研究中最常用的三種變換。點p=(x,y,z)T的相似變換常用于使用4×4齊次變換矩陣或?qū)⒃摼仃嚪纸鉃樾D(zhuǎn)和平移分量:
3.2.4圖像格式
圖像數(shù)據(jù)的存儲和傳輸是視覺SLAM的兩個重要功能。為了高效和方便,GSLAM使用了一個與cv::Mat兼容的數(shù)據(jù)結(jié)構(gòu)框架。它有一個智能點計數(shù)器,可以安全地釋放內(nèi)存,而且不需要內(nèi)存拷貝就可以輕松地傳輸。并且數(shù)據(jù)指針是對齊的,這樣單指令多數(shù)據(jù)(SIMD)的速度就更容易提高。用戶可以無縫安全地在GImage和cv::Mat之間進行轉(zhuǎn)換,而無需內(nèi)存拷貝。
3.2.5攝像機型號
攝像機模型應(yīng)被定義為將三維點pc從攝像機坐標(biāo)投影到二維像素x。一個最流行的攝像機模型是針孔模型,其中投影可以通過乘以一個稱為:
由于SLAM圖像可能包含由于制造不完善而產(chǎn)生的徑向和切向畸變,或者是用魚眼或全景相機拍攝的,因此提出了不同的相機模型來描述投影。GSLAM提供的實現(xiàn)包括OpenCV[24](ORBSLAM[51]使用)、ATAN(PTAM[37]使用)和OCamCalib[59](MultiCol SLAM[65]使用)。用戶也很容易繼承類并實現(xiàn)其他一些相機模型,如Kannala Brandt[35]和等矩形全景模型。
3.2.6 地圖數(shù)據(jù)結(jié)構(gòu)
對于SLAM實現(xiàn),其目標(biāo)是定位實時姿勢并生成地圖。GSLAM提出了一種統(tǒng)一的地圖數(shù)據(jù)結(jié)構(gòu),由多個地圖框架和地圖點組成。這種數(shù)據(jù)結(jié)構(gòu)適用于大多數(shù)現(xiàn)有的視覺SLAM系統(tǒng),包括基于特征的方法和直接方法。圖幅用于表示不同時期的位置狀態(tài),包括由傳感器捕獲的各種信息或估計結(jié)果,包括IMU或GPS原始數(shù)據(jù)、深度信息和相機模型。它們之間的關(guān)系由SLAM實現(xiàn)來估計,它們之間的連接形成一個姿勢圖。映射點用于表示幀所觀察到的環(huán)境,通常用于基于特征的方法。但是,映射點不僅可以表示關(guān)鍵點,還可以表示GCP、邊緣線或三維對象。它們與圖幅的對應(yīng)形成一個觀察圖,通常稱為束圖。
4. SLAM實現(xiàn)實用程序
為了簡化SLAM系統(tǒng)的實現(xiàn),GSLAM提供了一些實用類。本節(jié)將簡要介紹三個優(yōu)化模塊:估計器、優(yōu)化器和詞匯表。
4.1. 估計器
純幾何計算仍然是一個需要魯棒精確實時解的基本問題。經(jīng)典的視覺SLAM算法[22,37,49]和現(xiàn)代的視覺慣性解[45,56,66]都依賴于幾何視覺算法進行初始化、重新定位和環(huán)路閉合。OpenCV[5]提供了幾個幾何圖形算法和Kneip提出了一個幾何視覺工具箱OpenGV[39],該工具箱僅限于攝像機姿態(tài)計算。GSLAM的估計器旨在提供一組用穩(wěn)健樣本一致性(RANSAC)[19]方法覆蓋所有有趣案例的閉式解算器。表2列出了估計器支持的算法。根據(jù)觀察結(jié)果,它們被分為三類。利用二維匹配估計外極或單應(yīng)約束,并從中分解相對位姿。對于單目或多目相機系統(tǒng),二維-三維對應(yīng)關(guān)系被用來估計中心或非中心絕對位姿,這是著名的PnP問題。還支持三維幾何函數(shù),如平面擬合和估計兩點云的SIM3變換。大多數(shù)算法都是根據(jù)線性代數(shù)庫的特征值來實現(xiàn)的,對于大多數(shù)平臺來說,特征值只是報頭,而且很容易實現(xiàn)。
計算性能評估包括內(nèi)存使用率、malloc數(shù)、CPU使用率和每幀統(tǒng)計使用的時間,如圖4所示。結(jié)果表明,SVO占用的內(nèi)存、CPU資源最少,速度最快。所有的成本都保持穩(wěn)定,因為SVO是一個可視的里程表,并且在實現(xiàn)中只維護一個本地地圖。DSO內(nèi)存塊數(shù)較少,但占用的內(nèi)存超過100MB,增長緩慢。DSO的一個問題是當(dāng)幀數(shù)小于500時,處理時間急劇增加,另外,關(guān)鍵幀的處理時間甚至更長。ORBSLAM占用的CPU資源最多,計算時間穩(wěn)定,但由于bundle調(diào)整使用了G2O庫,沒有采用增量優(yōu)化方法,內(nèi)存利用率增長較快,分配和釋放了大量內(nèi)存塊。里程表軌跡評估如圖5所示。如我們所見,SVO速度更快,但漂移更大,而ORBSLAM在絕對位姿誤差(APE)方面達(dá)到最佳精度。也提供了相對位姿誤差(RPE),但由于圖中,補充材料中提供了更多的實驗結(jié)果。由于集成評估是一個可插入的插件應(yīng)用程序,因此可以使用更多的評估指標(biāo)(如pointcloud的精度)重新實現(xiàn)它。
4.2 優(yōu)化器
非線性優(yōu)化是最先進的幾何SLAM系統(tǒng)的核心部分。由于Hessian矩陣的高維性和稀疏性,采用圖結(jié)構(gòu)對SLAM的復(fù)雜估計問題進行建模。為了解決一般圖優(yōu)化問題,提出了Ceres[1]、G2O[43]和GTSAM[13]等框架。這些框架被不同的SLAM系統(tǒng)廣泛使用。ORB-SLAM[49,51],SVO[22,23]使用G2O進行束調(diào)整和位姿圖優(yōu)化。OKVIS[45],VINS[56]使用Ceres進行帶IMU因子的圖優(yōu)化,并使用滑動窗口控制計算復(fù)雜度。Forster等人[21]提出了一種基于SVO的可視化初始方法,并用GTSAM實現(xiàn)了后端。GSLAM的優(yōu)化器旨在為大多數(shù)非線性SLAM問題(如PnP求解器、束調(diào)整、位姿圖優(yōu)化)提供一個統(tǒng)一的接口。基于Ceres庫實現(xiàn)了一個通用的插件。對于一個特殊的問題,比如包調(diào)整,一些更有效的實現(xiàn),比如PBA[70]和ICE-BA[46]也可以作為插件提供。通過使用優(yōu)化器實用程序,開發(fā)人員可以使用統(tǒng)一的接口訪問不同的實現(xiàn),特別是對于基于深度學(xué)習(xí)的SLAM系統(tǒng)。
4.3 詞匯
位置識別是SLAM重定位和環(huán)路檢測的重要組成部分。單詞包(BoW)方法由于其高效性和性能在SLAM系統(tǒng)中得到了廣泛的應(yīng)用。FabMap[11][30]提出了一種基于位置外觀的概率識別方法,RSLAM[47],LSD-SLAM[16]使用了這種方法。由于使用了諸如SIFT和SURF這樣的浮動描述符,DBoW2[25]構(gòu)建了一個用于訓(xùn)練和檢測的詞匯樹,它同時支持二進制和浮動描述符。Rafael提出了DBoW2的兩個改進版本DBoW3和FBoW[48],簡化了界面,加快了訓(xùn)練和加載速度。在ORB-SLAM[49]采用ORB[58]描述符并使用DBoW2進行環(huán)路檢測[50]、重新定位和快速匹配之后,ORB-SLAM2[51]、VINS Mono[56]和LDSO[26]等多種SLAM系統(tǒng)使用DBoW3進行環(huán)路檢測。它已經(jīng)成為實現(xiàn)SLAM系統(tǒng)位置識別的最流行的工具。受上述工作的啟發(fā),GSLAM實現(xiàn)了DBoW3詞匯表的header-only實現(xiàn),具有以下特性:
-
刪除OpenCV依賴性,所有功能都在一個單獨的頭標(biāo)題中實現(xiàn),只依賴于C++ 11。
-
結(jié)合了DBoW2/3和FBoW[48]的優(yōu)點,這兩種方法都非常快速且易于使用。提供了類似于DBoW3的接口,并使用SSE和AVX指令加速二進制和浮點描述符。
-
我們提高了存儲的利用率,加快了加載、保存或訓(xùn)練詞匯以及從圖像特征到弓向量的轉(zhuǎn)換的速度。
-
SLAM評估基準(zhǔn)
已有的基準(zhǔn)測試[2963]需要用戶下載測試數(shù)據(jù)集并上傳結(jié)果進行精度評估,無法統(tǒng)一運行環(huán)境,無法進行性能比較評估。得益于GSLAM的統(tǒng)一接口,對SLAM系統(tǒng)的評估變得更加優(yōu)雅。在GSLAM的幫助下,開發(fā)者只需上傳SLAM插件,就可以在固定資源的dockerlized環(huán)境中對速度、計算成本和準(zhǔn)確性進行各種評估。在本節(jié)中,我們將對三種具有代表性的SLAM實現(xiàn)進行速度、精度、內(nèi)存和CPU使用情況的評估,以證明使用不同SLAM實現(xiàn)插件實現(xiàn)統(tǒng)一SLAM基準(zhǔn)的可能性。
5.1 數(shù)據(jù)集集合
運行SLAM系統(tǒng)總是需要具有相應(yīng)配置的傳感器數(shù)據(jù)流。為了讓開發(fā)人員專注于核心SLAM插件的開發(fā),GSLAM提供了一個標(biāo)準(zhǔn)的數(shù)據(jù)集接口,開發(fā)人員不需要處理SLAM輸入。在線傳感器輸入和流量數(shù)據(jù)都是通過不同的數(shù)據(jù)集插件提供的,正確的插件通過識別給定的數(shù)據(jù)集路徑suf fix動態(tài)加載。數(shù)據(jù)集實現(xiàn)應(yīng)提供所有請求的傳感器流和相關(guān)配置,因此不同數(shù)據(jù)集不需要額外設(shè)置。所有不同的傳感器流都是通過在Sec中引入的Messenger發(fā)布的。具有標(biāo)準(zhǔn)主題名稱和數(shù)據(jù)格式。GSLAM已經(jīng)實現(xiàn)了表中列出的幾個流行的visual SLAM數(shù)據(jù)集表4。對于用戶來說,實現(xiàn)一個僅基于頭的GSLAM核心的數(shù)據(jù)集插件并將其作為插件發(fā)布或與應(yīng)用程序一起編譯也是非常容易的。此外,我們還提供了ORBSLAM可以在不同數(shù)據(jù)集上運行的屏幕截圖,圖2中只修改了一個參數(shù)。
5.2 SLAM實現(xiàn)
圖3展示了一些使用內(nèi)置Qt可視化工具運行的開源SLAM和SfM插件的截圖。該框架支持SLAM系統(tǒng)的不同體系結(jié)構(gòu),包括直接的、半直接的、基于特征的、甚至SfM方法和基于學(xué)習(xí)的密集深度估計。應(yīng)該提到的是,由于SVO、ORBSLAM和TheiaSfM利用了Sec中介紹的地圖數(shù)據(jù)結(jié)構(gòu)。可視化是自動支持的。DSO實現(xiàn)需要發(fā)布點云、相機姿態(tài)、軌跡和姿態(tài)圖等結(jié)果,以便進行可視化,就像基于ROS的實現(xiàn)一樣。用戶可以使用UNI框架訪問不同的SLAM插件,根據(jù)C++、Python和節(jié)點JS接口開發(fā)基于SLAM的應(yīng)用程序非常方便。由于許多研究人員使用ROS進行開發(fā),GSLAM還提供ROS可視化工具插件來無縫傳輸ROS定義的消息,開發(fā)人員可以利用Rviz進行顯示或繼續(xù)開發(fā)其他基于ROS的應(yīng)用程序。
5.3 評價
因為大多數(shù)基準(zhǔn)測試只提供有或沒有基本事實的數(shù)據(jù)集,供用戶自己執(zhí)行評估。GSLAM為計算性能和準(zhǔn)確性評估提供了內(nèi)置插件和腳本工具。使用TUMRGBD數(shù)據(jù)集中的序列nostructure紋理near withloop來演示計算的執(zhí)行方式。并采用三個開源的單目SLAM插件DSO、SVO和ORBSLAM進行后續(xù)實驗。所有實驗都使用了一臺運行64位Ubuntu 16.04的i7-6700cpu、GTX 1060 GPU和16gbram的計算機。計算性能評估包括內(nèi)存使用率、malloc數(shù)、CPU使用率和每幀統(tǒng)計使用的時間,如圖4所示。結(jié)果表明,SVO占用的內(nèi)存、CPU資源最少,速度最快。所有的成本都保持穩(wěn)定,因為SVO是一個可視的里程表,并且在實現(xiàn)中只維護一個本地地圖。DSO內(nèi)存塊數(shù)較少,但占用的內(nèi)存超過100MB,增長緩慢。DSO的一個問題是當(dāng)幀數(shù)小于500時,處理時間急劇增加,另外,關(guān)鍵幀的處理時間甚至更長。ORBSLAM占用的CPU資源最多,計算時間穩(wěn)定,但由于bundle調(diào)整使用了G2O庫,沒有采用增量優(yōu)化方法,內(nèi)存利用率增長較快,分配和釋放了大量內(nèi)存塊。里程表軌跡評估如圖5所示。如我們所見,SVO速度更快,但漂移更大,而ORBSLAM在絕對位姿誤差(APE)方面達(dá)到最佳精度。也提供了相對位姿誤差(RPE),但由于圖中,補充材料中提供了更多的實驗結(jié)果。由于集成評估是一個可插入的插件應(yīng)用程序,因此可以使用更多的評估指標(biāo)(如pointcloud的精度)重新實現(xiàn)它。
Conclusions
本文介紹了一種新型通用的SLAM平臺GSLAM,它提供了從開發(fā)、評估到應(yīng)用的支持。常用的工具包由插件表單提供,用戶也可以方便地開發(fā)自己的模塊。為了使平臺易于使用,我們只允許接口依賴于C++ 11。此外,還提供了Python和JavaScript接口,以便更好地集成傳統(tǒng)的和基于深度學(xué)習(xí)的SLAM或分布式web。
總結(jié)
以上是生活随笔為你收集整理的SLAM的通用框架:GSLAM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker_Swarm集群系统
- 下一篇: 图像拼接技术