自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

GSLAM | 一個(gè)通用的SLAM架構(gòu)和基準(zhǔn)

人工智能 新聞
SLAM技術(shù)最近取得了許多成功,并吸引了高科技公司的關(guān)注。然而,如何同一現(xiàn)有或新興算法的界面,一級有效地進(jìn)行關(guān)于速度、穩(wěn)健性和可移植性的基準(zhǔn)測試仍然是問題。

本文經(jīng)自動駕駛之心公眾號授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

突然發(fā)現(xiàn)了一篇19年的論文

GSLAM:A General SLAM Framework and Benchmark

開源代碼:https://github.com/zdzhaoyong/GSLAM

直接上全文,感受這項(xiàng)工作的質(zhì)量吧~

1 摘要

SLAM技術(shù)最近取得了許多成功,并吸引了高科技公司的關(guān)注。然而,如何同一現(xiàn)有或新興算法的界面,一級有效地進(jìn)行關(guān)于速度、穩(wěn)健性和可移植性的基準(zhǔn)測試仍然是問題。本文,提出了一個(gè)名為GSLAM的新型SLAM平臺,它不僅提供評估功能,還為研究人員提供了快速開發(fā)自己的SLAM系統(tǒng)的有用工具。GSLAM的核心貢獻(xiàn)是一個(gè)通用的??缙脚_的、完全開源的SLAM接口,旨在處理輸入數(shù)據(jù)集、SLAM實(shí)現(xiàn)、可視化和應(yīng)用程序的統(tǒng)一框架中的交互。通過這個(gè)平臺,用戶可以以插件形式實(shí)現(xiàn)自己的功能,以提高SLAM的性能,并進(jìn)一步將SLAM的應(yīng)用推向?qū)嶋H應(yīng)用。

2 介紹

從上世紀(jì)80年代以來,同時(shí)定位與地圖構(gòu)建(SLAM)一直是計(jì)算機(jī)視覺和機(jī)器人領(lǐng)域的熱門研究主題。SLAM為許多需要實(shí)時(shí)導(dǎo)航的應(yīng)用提供了基本功能,如機(jī)器人技術(shù)、無人機(jī)(UAVs)、自動駕駛、以及虛擬現(xiàn)實(shí)和增強(qiáng)現(xiàn)實(shí)。近來年,SLAM技術(shù)得到了迅速發(fā)展,提出了各種SLAM系統(tǒng),包括單目SLAM系統(tǒng)(基于特征點(diǎn),直接和半直接方法)、多傳感器SLAM系統(tǒng)(RGBD、雙目和慣性輔助的方法)以及基于學(xué)習(xí)的SLAM系統(tǒng)(有監(jiān)督和無監(jiān)督方法)。

然而,隨著SLAM技術(shù)的迅速發(fā)展,幾乎所有的研究人員都集中精力于自己的SLAM系統(tǒng)的理論和實(shí)施,這使得難以交流思想,并且不容易實(shí)現(xiàn)遷移到其他系統(tǒng)。這妨礙了SLAM技術(shù)快速應(yīng)用于各種行業(yè)領(lǐng)域。此外,目前存在許多SLAM系統(tǒng)的不同實(shí)現(xiàn)版本,如何有效地進(jìn)行速度、穩(wěn)健性和可移植性的基準(zhǔn)測試仍然是一個(gè)問題。最近,Nardi等人和Bodin等人提出了統(tǒng)一的SLAM基準(zhǔn)測試系統(tǒng),以進(jìn)行定量、可比較和可驗(yàn)證的實(shí)驗(yàn)研究,也探究各種SLAM系統(tǒng)之間的權(quán)衡。通過這些系統(tǒng),可以使用數(shù)據(jù)集和度量評估模塊輕松進(jìn)行評估實(shí)驗(yàn)。

由于現(xiàn)有的系統(tǒng)僅提供評估基準(zhǔn),該論文認(rèn)為有可能建立一個(gè)平臺,以服務(wù)SLAM算法的整個(gè)生命周期,包括開發(fā)、評估和應(yīng)用階段。此外,近年來深度學(xué)習(xí)基礎(chǔ)的SLAM已取得顯著進(jìn)展,因此有必要創(chuàng)建一個(gè)平臺,不僅支持C++,還支持Python,以更好地支持幾何和深度學(xué)習(xí)基礎(chǔ)的SLAM系統(tǒng)的集成。因此,在本文中,介紹了一個(gè)新型的SLAM平臺,不僅提供評估功能,還為研究人員提供了有用的工具,以快速開發(fā)他們自己的SLAM系統(tǒng)。通過這個(gè)平臺,常用功能以插件形式提供,因此用戶可以直接使用它們或創(chuàng)建自己的功能以實(shí)現(xiàn)更好的性能。希望這個(gè)平臺能進(jìn)一步推動SLAM系統(tǒng)的實(shí)際應(yīng)用。總而言之,本文的主要貢獻(xiàn)如下:

  1. 本文提出了一個(gè)通用的、跨平臺的、完全開源的SLAM平臺,旨在用于研究和商業(yè)用途,超越了以往的基準(zhǔn)測試系統(tǒng)。SLAM接口由多個(gè)輕量級、無依賴的頭文件組成,這使得在統(tǒng)一框架中以插件形式與不同數(shù)據(jù)集、SLAM算法和應(yīng)用進(jìn)行交互變得容易。此外,還提供了JavaScript和Python,以支持基于Web和深度學(xué)習(xí)的SLAM應(yīng)用。
  2. 提出的GSLAM平臺中,引入了三個(gè)經(jīng)過優(yōu)化的模塊作為實(shí)用工具類,包括Estimator、Optimizer和Vocabulary。Estimator旨在提供一組封閉形式的求解器,涵蓋所有情況,具有強(qiáng)大的樣本一致性(RANSAC);Optimizer旨在提供流行的非線性SLM問題的統(tǒng)一接口;Vocabulary旨在提供高效且可移植的詞袋實(shí)現(xiàn),用于多線程和SIMD優(yōu)化的地點(diǎn)識別。
  3. 受益于上述接口,該工作在一個(gè)統(tǒng)一的框架中實(shí)現(xiàn)并評估了現(xiàn)有數(shù)據(jù)集、SLAM實(shí)現(xiàn)和可視化應(yīng)用的插件,未來出現(xiàn)的基準(zhǔn)測試或應(yīng)用也可以輕松地進(jìn)行進(jìn)一步集成。

下面首先介紹GSLAM框架的接口,并解釋GSLAM的工作原理。其次,介紹三個(gè)實(shí)用組件,即Estimator, Optimizer和Vocabulary。然后,使用幾個(gè)典型的公共數(shù)據(jù)集,使用GSLAM框架來評估不同流行的SLAM實(shí)現(xiàn)。最后,總結(jié)這些工作,并展望未來的研究方向。

3 相關(guān)工作

Simultaneous Localization And Mapping

SLAM技術(shù)用于在未知環(huán)境中構(gòu)建地圖,并將傳感器在地圖中進(jìn)行定位,主要側(cè)重于實(shí)時(shí)操作。早期的SLAM主要基于擴(kuò)展卡爾曼濾波(EKF)。將6自由度的運(yùn)動參數(shù)和3D地標(biāo)以概率方式表示為單一狀態(tài)向量。經(jīng)典EKF的復(fù)雜性隨著地標(biāo)數(shù)量的增加呈二次增長,限制了其可拓展性。近年來,SLAM技術(shù)得到了快速發(fā)展,提出了許多單目視覺SLAM系統(tǒng),包括基于特征點(diǎn)、直接法和半直接方法。然而,單目SLAM系統(tǒng)缺乏尺度信息,無法處理純旋轉(zhuǎn)情況,因此一些其他多傳感器SLAM系統(tǒng),包括RGBD,雙目和慣性輔助方法出現(xiàn),以提高魯棒性和精度。

盡管提出了大量的SLAM系統(tǒng),但在統(tǒng)一這些算法的接口方面幾乎沒有什么工作,也沒有對它們的性能進(jìn)行全面的比較。此外,這些SLAM算法的實(shí)現(xiàn)通常以獨(dú)立的可執(zhí)行文件的形式發(fā)布,而不是以庫的形式,而且往往不符合任何標(biāo)準(zhǔn)結(jié)構(gòu)。

最近,基于深度學(xué)習(xí)的有監(jiān)督和無監(jiān)督的視覺里程計(jì)(VO)與傳統(tǒng)的基于幾何的方法相比,提出了新穎的思路。但是,進(jìn)一步優(yōu)化多個(gè)關(guān)鍵幀的一致性仍然不容易。GSLAM提供的工具可以幫助獲得更好的全局一致性。通過該框架,更容易可視化或評估結(jié)果,并進(jìn)一步應(yīng)用于各種行業(yè)領(lǐng)域。

Computer Vision and Robotics Platform

在機(jī)器人技術(shù)和計(jì)算機(jī)領(lǐng)域,機(jī)器人系統(tǒng)(ROS)提供了節(jié)點(diǎn)之間非常便捷的通信方式,受到大多數(shù)機(jī)器人研究人員的青睞。許多SLAM實(shí)現(xiàn)提供了ROS包裝器,以訂閱傳感器數(shù)據(jù)并發(fā)布可視化結(jié)果。但它并未統(tǒng)一SLAM實(shí)現(xiàn)的輸入和輸出,難以進(jìn)一步評估不同SLAM系統(tǒng)。

受ROS消息架構(gòu)的啟發(fā),GSLAM實(shí)現(xiàn)了一個(gè)類似的進(jìn)程間通信實(shí)用類,稱為Messenger。這為替代SLAM實(shí)現(xiàn)內(nèi)部的ROS提供了另一種選擇,并保持了兼容性,也就是說,該框架內(nèi)支持所有ROS定義的消息,并自然地實(shí)現(xiàn)了ROS包裝器。由于采用了進(jìn)程內(nèi)設(shè)計(jì),消息傳遞時(shí)沒有序列化和數(shù)據(jù)傳輸,消息可以無延遲和額外成本地發(fā)送。與此同時(shí),消息的有效載荷不僅限于ROS定義的消息,還可以是任何可復(fù)制的數(shù)據(jù)結(jié)構(gòu)。此外,不僅提供評估功能,還為研究人員提供了有用的工具,以快速開發(fā)和集成他們自己的SLAM算法。

SLAM Benchmarks

目前存在幾種SLAM基準(zhǔn)測試系統(tǒng),包括KITTI基準(zhǔn)測試、TUM RGB-D基準(zhǔn)測試和ICL-NUIM RGB-D基準(zhǔn)數(shù)據(jù)集,這些系統(tǒng)僅提供評估功能。此外,SLAMBench2將這些基準(zhǔn)測試擴(kuò)展為算法和數(shù)據(jù)集,要求用戶將已發(fā)布的實(shí)現(xiàn)與SLAMBench2兼容,以進(jìn)行評估,這難以擴(kuò)展到更多應(yīng)用領(lǐng)域。與這些系統(tǒng)不同,本文提出的GSLAM平臺提供了一個(gè)解決方案,可為SLAM實(shí)現(xiàn)的整個(gè)生命周期提供服務(wù),從開發(fā)、評估到應(yīng)用。為研究人員提供了有用的工具,以快速開發(fā)他們自己的SLAM系統(tǒng),并進(jìn)一步基于統(tǒng)一接口開發(fā)可視化、評估和應(yīng)用程序。

4 通用SLAM架構(gòu)

Framework Overview

GSLAM的框架如圖所示。總的來說,接口旨在處理三個(gè)部分的交互。

  1. 處理SLAM實(shí)現(xiàn)的輸入。運(yùn)行SLAM時(shí),需要傳感器數(shù)據(jù)和一些參數(shù)。對于GSLAM,使用Svar類進(jìn)行參數(shù)配置和命令處理。所有SLAM實(shí)現(xiàn)所需的傳感器數(shù)據(jù)都由Dataset實(shí)現(xiàn)提供,并使用Messenger進(jìn)行傳輸。GSLAM實(shí)現(xiàn)了幾個(gè)流行的視覺SLAM數(shù)據(jù)集,用于可以自由實(shí)現(xiàn)自己的數(shù)據(jù)集插件。
  2. SLAM實(shí)現(xiàn)。GSLAM將每個(gè)實(shí)現(xiàn)視為插件庫。開發(fā)人員可以非常容易地基于GSLAM接口和實(shí)用類設(shè)計(jì)一個(gè)SLAM實(shí)現(xiàn)。開發(fā)人員還可以使用接口包裝實(shí)現(xiàn),而無需引入額外的依賴。用戶可以專注于核心算法的開發(fā),而無需關(guān)心SLAM實(shí)現(xiàn)外部需要處理的輸入和輸出。
  3. 可視化部分或使用SLAM結(jié)果的應(yīng)用。在SLAM實(shí)現(xiàn)處理輸入幀后,用戶可能希望展示或利用結(jié)果。為了通用性,SLAM結(jié)果應(yīng)以標(biāo)準(zhǔn)格式發(fā)布。默認(rèn)情況下,GSLAM使用Qt進(jìn)行可視化,但用戶可以自由實(shí)現(xiàn)自定義的可視化工具,并添加應(yīng)用插件,如評估應(yīng)用程序。

該框架被設(shè)計(jì)為與各種不同類型的SLAM實(shí)現(xiàn)兼容,包括但不限于單目、雙目、RGBD和多攝像頭視覺慣性里程計(jì)與多傳感器融合?,F(xiàn)代深度學(xué)習(xí)平臺和開發(fā)人員更喜歡使用Python進(jìn)行編碼,因此GSLAM提供了Python綁定,開發(fā)人員能夠使用Python實(shí)現(xiàn)SLAM,并使用GSLAM調(diào)用它,或者使用Python調(diào)用基于C++的SLAM實(shí)現(xiàn)。此外,還支持JavaScript用于基于Web的用途。

Basic Interface Classes

SLAM接口通常使用的一些數(shù)據(jù)結(jié)構(gòu)包括參數(shù)設(shè)置/讀取、圖像格式、姿態(tài)變換、相機(jī)模型和地圖數(shù)據(jù)結(jié)構(gòu)。以下是一些基本接口類的簡要介紹。

Paramter Setting

GSLAM使用一個(gè)小巧的參數(shù)解析和參數(shù)設(shè)置類Svar,它僅包含一個(gè)頭文件,依賴于C++11,并具有以下特點(diǎn):

a.參數(shù)解析和配置加載以及幫助信息。類似于流行的參數(shù)解析工具,如Google gflags,變量配置可以從命令行參數(shù)、文件和系統(tǒng)環(huán)境中加載。用戶還可以定義不同類型的參數(shù),并提供介紹信息,這些信息將顯示在幫助文檔中。

b.一個(gè)小型腳本語言,支持變量、函數(shù)和條件語句,使配置文件更加強(qiáng)大。

c.線程安全的變量綁定和共享。建議將使用頻率非常高的變量綁定到指針或引用上,這不僅提供了高效性,還提供了便利性。

d,簡單的函數(shù)定義和從C++或純腳本進(jìn)行調(diào)用。命令和函數(shù)之間的綁定有助于開發(fā)人員解耦文件依賴關(guān)系。

e.支持樹形結(jié)構(gòu)表示,這意味著可以輕松地使用XML、JSON和YAML格式加載或保存配置。

Intra-Process Messaging

由于ROS提供了一個(gè)非常便捷的節(jié)點(diǎn)間通信方式,受到大多數(shù)機(jī)器人研究人員的青睞。受到ROS2消息架構(gòu)的啟發(fā),GSLAM實(shí)現(xiàn)了一個(gè)類似的進(jìn)程間通信實(shí)用類,稱為Messenger。這為替代SLAM實(shí)現(xiàn)內(nèi)部的ROS提供了另一種選擇,并保持了兼容性。由于采用了進(jìn)程間設(shè)計(jì),Messenger能夠發(fā)布和訂閱任何類,而無需額外成本。以下是更多功能的介紹:

a.該接口采用了ROS的風(fēng)格,對用來說容易上手。而且支持所有ROS定義的消息,這意味著只需要很少的工作就能替代原來的ROS消息傳遞系統(tǒng)。

b.由于沒有序列化和數(shù)據(jù)傳輸,消息可以無延遲和額外成本地發(fā)送。與此同時(shí),消息的有效載荷不僅限于ROS定義的消息,還支持任何可復(fù)制的數(shù)據(jù)結(jié)構(gòu)。

c.源代碼只包括基于C++11的頭文件,沒有額外的依賴,使其具有可移植性。

d.API是線程安全的,并在列隊(duì)大小大于零時(shí)支持多線程條件通知。在發(fā)布者和訂閱者相互連接之前,會對主題名稱和RTTI數(shù)據(jù)結(jié)構(gòu)進(jìn)行檢查,以確保正確地調(diào)用。

3D Transforamtion

對于旋轉(zhuǎn)部分,有幾種表示方式可供選擇,包括矩陣、歐拉角、單位四元數(shù)和李代數(shù)so(3)。對于給定的變換,可以使用其中任何一種來表示,并可以相互轉(zhuǎn)換。但是,當(dāng)考慮多個(gè)變換和流形優(yōu)化時(shí),需要密切關(guān)注所選擇的表示方式。矩陣表示法使用9個(gè)參數(shù)進(jìn)行過度參數(shù)化,而旋轉(zhuǎn)只有3個(gè)自由度(DOF)。歐拉角表示使用3個(gè)變量,易于理解,但面臨著萬向鎖的問題,而且不方便進(jìn)行多重變換。單位四元數(shù)是執(zhí)行多次旋轉(zhuǎn)的最高效方式,而李代數(shù)則是執(zhí)行流行優(yōu)化的常見表示方法。

類似地,定義了剛體和相似性變換的李代數(shù)se(3)和sim(3)。GSLAM使用四元數(shù)來表示旋轉(zhuǎn)部分,并提供了一種表示形式轉(zhuǎn)換為另一種表示形式的函數(shù)。表格1展示了變換實(shí)現(xiàn),并于另外三種流形的實(shí)現(xiàn)(Sophus, TooN和Ceres)進(jìn)行了比較。由于Ceres實(shí)現(xiàn)使用角軸表示,因此不需要旋轉(zhuǎn)的指數(shù)和對數(shù)。如表格所示,GSLAM的實(shí)現(xiàn)性能更佳,因?yàn)樗褂盟脑獢?shù)并具有更好的優(yōu)化,而TooN使用矩陣實(shí)現(xiàn),在點(diǎn)變換方面性能更好。

Image format

圖像數(shù)據(jù)的存儲和傳輸是視覺SLAM中最重要的功能之一。為了提高效率和便利性,GSLAM使用了一個(gè)數(shù)據(jù)結(jié)構(gòu)GImage,它與cv::Mat兼容。它具有智能指針計(jì)數(shù)器,以確保內(nèi)存安全釋放,并且可以在不進(jìn)行內(nèi)存復(fù)制的情況下輕松傳輸。數(shù)據(jù)指針對齊,以便更容易進(jìn)行單指令多數(shù)據(jù)(SIMD)加速。用戶可以在GImage和cv::Mat之間無縫、安全地進(jìn)行轉(zhuǎn)換,而無需進(jìn)行內(nèi)存復(fù)制。

Camera Models

由于SLAM可能包含由于制造不完美而引起的徑向和切向畸變,或者是由魚眼或全景相機(jī)捕捉的圖像,因此提出了不同的相機(jī)模型來描述投影。GSLAM提供了包括OpenCV(ORB-SLAM使用)、ATAN(PTAM使用)和OCamCalib(MultiCol-SLAM使用)在內(nèi)的實(shí)現(xiàn)。用戶也可以輕松繼承這些類并實(shí)現(xiàn)其他相機(jī)模型,如Kannala-Brandt和等距全景模型。

Map Data Structure

對于SLAM實(shí)現(xiàn),其目標(biāo)是實(shí)時(shí)定位并生成地圖。GSLAM建議使用一個(gè)統(tǒng)一的地圖數(shù)據(jù)結(jié)構(gòu),有多個(gè)地圖幀和地圖點(diǎn)組成。這個(gè)數(shù)據(jù)結(jié)構(gòu)適用于大多數(shù)已有的視覺SLAM系統(tǒng),包括基于特征或直接方法。

地圖幀用于表示不同時(shí)間的位置狀態(tài),包括由傳感器捕捉的各種信息或估算結(jié)果,包括IMU或GPS原始數(shù)據(jù)、深度信息和相機(jī)模型。SLAM實(shí)現(xiàn)估算它們之間的關(guān)系,它們之間的連接形成了一個(gè)姿勢圖。

地圖點(diǎn)用于表示由幀觀察到的環(huán)境,通常由基于特征的方法使用。但是,一個(gè)地圖點(diǎn)不僅可以表示一個(gè)關(guān)鍵點(diǎn),還可以表示一個(gè)GCP(地面控制點(diǎn))、邊緣線或3D對象。它們與地圖幀的對應(yīng)關(guān)系形成了一個(gè)觀察圖,通常被稱為捆綁圖。

5 SLAM實(shí)現(xiàn)工具

為了更容易實(shí)現(xiàn)一個(gè)SLAM系統(tǒng),GSLAM提供了一個(gè)實(shí)用類。本節(jié)將簡要介紹三個(gè)經(jīng)過優(yōu)化的模塊,分別是Estimator, Optimizer和Vocabulary。

Estimator

純幾何計(jì)算仍然是一個(gè)需要強(qiáng)大和準(zhǔn)確的實(shí)時(shí)解決方案的基本問題。傳統(tǒng)的視覺SLAM算法或現(xiàn)代的視覺慣性解決方案都依賴與幾何視覺算法來進(jìn)行初始化、重定位和回環(huán)閉合。OpenCV提供了多個(gè)幾何算法,Kneip提供了一個(gè)用于幾何視覺的工具箱OpenGV,該工具箱僅限于相機(jī)姿態(tài)計(jì)算。GSLAM的Estimator旨在提供一系列包括所有情況的封閉形式解算器,并使用了魯棒的隨機(jī)采樣一致性方法(RANSAC)。

表2列出了Estimator支持的算法。根據(jù)給定的觀測數(shù)據(jù),它們被分成三類。2D-2D匹配用于估計(jì)極線或單應(yīng)約束,并且可以從中分解相對姿態(tài)。2D-3D對應(yīng)于估計(jì)單目或多攝像頭系統(tǒng)的中心或非中心絕對位姿,這是著名的PnP問題。還支持3D幾何函數(shù),如平面擬合,以及估算兩個(gè)點(diǎn)云的SIM變換。大多數(shù)算法都依賴與開源線性代數(shù)庫Eigen,它是一個(gè)僅包含頭文件的庫,并且適用于大多數(shù)平臺。

Optimizer

非線性優(yōu)化是現(xiàn)代幾何SLAM系統(tǒng)的核心部分。由于Hessian矩陣的高緯度和稀疏性,圖結(jié)構(gòu)被用來建模SLAM的復(fù)雜估計(jì)問題。提出了幾種框架,包括Ceres、G2O和GTSAM,用于解決一般的圖優(yōu)化問題。這些框架在不同的SLAM系統(tǒng)中廣泛使用。ORB-SLAM、SVO使用G2O進(jìn)行BA和位姿圖優(yōu)化。OKVIS、VINS使用Ceres進(jìn)行帶IMU因素的圖優(yōu)化,滑動窗口用于控制計(jì)算復(fù)雜性。Forster等人提出了一種基于SVO的視覺初始化方法,并使用GTSAM實(shí)現(xiàn)后端。

GSLAM的Optimizer旨在為大多數(shù)非線性SLAM問題提供一個(gè)統(tǒng)一的接口,如PnP求解器,BA,姿態(tài)圖優(yōu)化。基于Ceres庫實(shí)現(xiàn)了這些問題的通用插件。對于特定問題,如BA,還可以提供一些更高效的實(shí)現(xiàn),如PBA和ICE-BA作為插件。使用優(yōu)化器工具,開發(fā)人員可以使用統(tǒng)一的接口訪問不同的實(shí)現(xiàn),特別是用于基于深度學(xué)習(xí)的SLAM系統(tǒng)。

Vocabulary

地點(diǎn)識別是SLAM系統(tǒng)中最重要的部分之一,用于重新定位和回環(huán)檢測。詞袋(BoW)方法在SLAM系統(tǒng)中廣泛使用,因?yàn)樗咝倚阅艹錾?。FabMap提出了一種基于外觀的地點(diǎn)識別的概率方法,該方法用于RSLAM、LSD-SLAM等系統(tǒng)。由于它使用了像SIFT和SURF這樣的浮點(diǎn)描述子,DBoW2為訓(xùn)練和檢測構(gòu)建了一個(gè)詞匯樹,支持二進(jìn)制和浮點(diǎn)描述子。Refael提出了DBoW2的兩個(gè)改進(jìn)版本,DBoW3和FBoW,它們簡化了接口并加快了訓(xùn)練和加載速度。之后,ORB-SLAM采用了ORB描述子,并使用DBoW2進(jìn)行回環(huán)檢測、重定位和快速匹配。隨后,一系列SLAM系統(tǒng),如ORB-SLAM2、VINS-Mono和LDSO,使用DBoW3進(jìn)行回環(huán)檢測。它已經(jīng)成為實(shí)現(xiàn)SLAM系統(tǒng)地點(diǎn)識別的最流行工具。

受上述工作的啟發(fā),GSLAM對DBoW3詞匯進(jìn)行了僅包含頭文件的實(shí)現(xiàn),具有以下特點(diǎn):

  1. 去除了對OpenCV的依賴,所有函數(shù)都在一個(gè)僅依賴C++11的頭文件中實(shí)現(xiàn)。
  2. 結(jié)合DBoW2/3和FBoW的優(yōu)點(diǎn),具有極快的速度和易于使用。提供了類似于DBoW3的接口,并使用SSE和AVX指令加速了二進(jìn)制和浮點(diǎn)描述子。
  3. 改進(jìn)了內(nèi)存使用和加速了加載、保存或訓(xùn)練詞匯以及從圖像特征到BoW向量轉(zhuǎn)換的速度。

表3展示了四個(gè)詞袋庫的比較。在實(shí)驗(yàn)中,每個(gè)父節(jié)點(diǎn)有10個(gè)子節(jié)點(diǎn),ORB特征檢測使用ORB-SLAM,SIFT檢測使用SiftGPU。實(shí)現(xiàn)結(jié)果中使用了ORB詞匯,分別有4級和6級,以及一個(gè)SIFT詞匯。FBoW和GSLAM都使用多線程進(jìn)行詞匯訓(xùn)練。GSLAM的實(shí)現(xiàn)在幾乎所有項(xiàng)目中的表現(xiàn)都優(yōu)于其他實(shí)現(xiàn),包括加載和保存詞匯、訓(xùn)練新詞匯、將描述符列表轉(zhuǎn)換為用于地點(diǎn)識別的BoW向量和用于快速特征匹配的特征向量。此外GSLAM實(shí)現(xiàn)使用更少的內(nèi)存,并分配了更少的動態(tài)內(nèi)存塊,因?yàn)镈BoW2需要大量內(nèi)存的主要原因是碎片問題。

6 SLAM評估基準(zhǔn)

現(xiàn)有的基準(zhǔn)需要用戶下載測試數(shù)據(jù)集并上傳結(jié)果以進(jìn)行精確性評估,這不足以統(tǒng)一運(yùn)行環(huán)境并評估公平的性能比較。得益于GSLAM的統(tǒng)一接口,SLAM系統(tǒng)的評估變得更加優(yōu)雅。在GSLAM的幫助下,開發(fā)人員只需上傳SLAM插件,便可以在一個(gè)使用固定資源的docker化環(huán)境中進(jìn)行速度、計(jì)算成本和準(zhǔn)確性的各種評估。在本節(jié)中,將首先介紹一些數(shù)據(jù)集和已實(shí)現(xiàn)的SLAM插件。然后,對速度、準(zhǔn)確性、內(nèi)存和CPU使用率進(jìn)行三個(gè)代表SLAM實(shí)現(xiàn)的評估。此評估旨在展示具有不同SLAM插件的統(tǒng)一SLAM基準(zhǔn)實(shí)現(xiàn)的可能性。

Datasets

運(yùn)行SLAM系統(tǒng)通常需要傳感器數(shù)據(jù)流和相應(yīng)的配置。為了讓開發(fā)人員專注于核心SLAM插件的開發(fā),GSLAM提供了一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)集接口,開發(fā)人員不需要關(guān)心SLAM的輸入。通過不同的數(shù)據(jù)集插件,提供了在線傳感器輸入和離線數(shù)據(jù),正確地插件會根據(jù)給定的數(shù)據(jù)集路徑后綴動態(tài)加載。數(shù)據(jù)集的實(shí)現(xiàn)應(yīng)該提供所有請求的傳感器流以及相關(guān)配置,因此不需要為不同的數(shù)據(jù)集進(jìn)行額外設(shè)置。所有不同的傳感器流通過Messenger發(fā)布,使用標(biāo)準(zhǔn)的主題名稱和數(shù)據(jù)格式。

GSLAM已經(jīng)實(shí)現(xiàn)了幾個(gè)流行的視覺SLAM數(shù)據(jù)集插件,如表4所示。用戶也可以非常容易地基于僅包含頭文件的GSLAM核心來實(shí)現(xiàn)一個(gè)數(shù)據(jù)集插件,并將其發(fā)布為插件并與應(yīng)用程序一起進(jìn)行編譯。

SLAM Implementations

圖2展示了一些使用內(nèi)置Qt可視化器運(yùn)行的開源SLAM和SfM插件的屏幕截圖。該框架支持不同體系結(jié)構(gòu)的SLAM系統(tǒng),包括直接法、半直接法、基于特征的方法,甚至SfM方法。DSO實(shí)現(xiàn)需要發(fā)布結(jié)果,例如點(diǎn)云、相機(jī)姿勢、軌跡和姿態(tài)圖,以便像基于ROS的實(shí)現(xiàn)一樣進(jìn)行可視化。用戶可以使用統(tǒng)一的框架訪問不同的SLAM插件,根據(jù)C++、Python和Node-JS接口開發(fā)基于SLAM的應(yīng)用程序非常方便。由于許多研究人員在開發(fā)中使用ROS,GSLAM還提供了ROS可視化插件,以無縫傳輸ROS定義的消息,并使開發(fā)人員可以利用Rviz進(jìn)行顯示或繼續(xù)開發(fā)其他基于ROS的應(yīng)用程序。

Evaluation

由于大多數(shù)現(xiàn)有的基準(zhǔn)只提供數(shù)據(jù)集,或者沒有g(shù)roundtruth供用戶自行進(jìn)行評估,GSLAM提供了一個(gè)內(nèi)置插件和一些腳本工具,用于計(jì)算性能和精度評估。

論文中使用TUM RGBD數(shù)據(jù)集中的序列nostructure-texture-near-withloop來演示評估的執(zhí)行情況。接下來的實(shí)驗(yàn)采用三個(gè)開源的單目SLAM插件DSO, SVO和ORB-SLAM。在所有實(shí)驗(yàn)中,使用一臺搭載i7-6700 CPU、GTX 1060 GPU和16GB RAM的計(jì)算機(jī),運(yùn)行64位Ubuntu 16.04。

計(jì)算性能評估包括內(nèi)存使用、分配內(nèi)存塊數(shù)量、CPU使用率以及統(tǒng)計(jì)每幀所用的時(shí)間,如圖3所示。結(jié)果表明,SVO使用的內(nèi)存和CPU資源最少,并獲得了最快的速度。而且由于SVO只是一個(gè)視覺里程計(jì),在實(shí)現(xiàn)內(nèi)部只維護(hù)了一個(gè)本地地圖,所以成本保持穩(wěn)定。DSO分配的內(nèi)存塊數(shù)較少,但消耗了100MB以上的內(nèi)存,且增長較慢。DSO的一個(gè)問題是當(dāng)幀數(shù)低于500時(shí),處理時(shí)間會急劇增加,此外,關(guān)鍵幀的處理時(shí)間甚至更長。ORB-SLAM使用了最多的CPU資源,計(jì)算時(shí)間穩(wěn)定,但內(nèi)存使用快速增加,并且它分配和釋放了大量的內(nèi)存塊,因?yàn)槠銪A使用了G2O庫,沒有使用增量優(yōu)化方法。

圖4展示了里程計(jì)軌跡的評估結(jié)果。如圖所示,SVO速度較快,但漂移較大,而ORBSLAM在絕對姿態(tài)誤差(APE)方面達(dá)到了最高的精度。由于綜合評估是一個(gè)可插拔的插件應(yīng)用程序,可以重新實(shí)施更多的評估指標(biāo),例如點(diǎn)云的精度。

7 總結(jié)

本文介紹了一個(gè)名為GSLAM的新型通用SLAM平臺,該平臺提出了從開發(fā)、評估到應(yīng)用的支持。通過這個(gè)平臺,常用的工具包以插件形式提供,用戶還可以輕松地開發(fā)自己的模塊。為了使平臺易于使用,使接口只依賴于C++11。此外,還提供了Python和JavaScript接口,以更好地集成傳統(tǒng)SLAM和基于深度學(xué)習(xí)的SLAM,或在Web上進(jìn)行分布式操作。

在接下來的研究中,會提供更多的SLAM實(shí)現(xiàn)、文檔和演示代碼,以便學(xué)習(xí)和使用。此外,還將提供傳統(tǒng)SLAM和基于深度學(xué)習(xí)的SLAM的集成,以進(jìn)一步探索SLAM系統(tǒng)的未知可能性。

這項(xiàng)工作的主頁如下:

GSLAM: Main Page

感覺是可學(xué)習(xí)SLAM各部分原理的框架~

原文鏈接:https://mp.weixin.qq.com/s/PCxhqhK3t1soN5FI0w9NFw

責(zé)任編輯:張燕妮 來源: 自動駕駛之心
相關(guān)推薦

2020-09-16 11:20:03

流計(jì)算基準(zhǔn)測試

2023-01-03 12:30:25

架構(gòu)CPUGPU

2016-11-10 14:34:15

創(chuàng)業(yè)業(yè)務(wù)技術(shù)架構(gòu)

2016-12-26 17:28:08

構(gòu)建業(yè)務(wù)技術(shù)架構(gòu)

2020-01-13 15:40:14

架構(gòu)師業(yè)務(wù)技術(shù)網(wǎng)關(guān)

2018-07-30 08:37:02

數(shù)據(jù)庫Redis數(shù)據(jù)結(jié)構(gòu)

2010-08-31 10:12:14

PowerPCOpera

2022-09-30 13:57:15

JSON解析C語言

2018-11-22 14:09:45

iOS架構(gòu)組件開發(fā)

2019-12-27 16:00:56

分布式事務(wù)框架Java

2009-04-28 13:25:36

Ajax函數(shù)Java

2025-01-06 06:10:00

開源.NEThttps://mp

2021-12-24 10:59:37

Kubernetes架構(gòu)代碼

2021-08-08 21:17:18

管理配置平臺

2023-01-18 07:49:42

2024-04-24 10:38:22

2015-08-13 14:35:43

2023-10-06 11:48:37

reactvuenodejs

2021-01-06 05:25:56

項(xiàng)目Springboot應(yīng)用

2013-01-04 10:46:57

CIO評選
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號