突然發(fā)現(xiàn)了一篇19年的論文
GSLAM:A General SLAM Framework and Benchmark
開源程式碼:https://github.com/zdzhaoyong/GSLAM
#直接上全文,感受這項工作的品質(zhì)吧~
1 摘要
SLAM技術(shù)最近取得了許多成功,並吸引了高科技公司的關注。然而,如何同一現(xiàn)有或新興演算法的介面,一級有效地進行關於速度、穩(wěn)健性和可移植性的基準測試仍然是問題。本文,提出了一個名為GSLAM的新型SLAM平臺,它不僅提供評估功能,也為研究人員提供了快速開發(fā)自己的SLAM系統(tǒng)的有用工具。 GSLAM的核心貢獻是一個通用的??缙脚_的、完全開源的SLAM接口,旨在處理輸入資料集、SLAM實現(xiàn)、可視化和應用程式的統(tǒng)一框架中的互動。透過這個平臺,使用者可以以插件形式實現(xiàn)自己的功能,以提高SLAM的效能,並進一步將SLAM的應用推向?qū)嶋H應用。
2 介紹
自1980年代以來,同時定位與地圖建構(gòu)(SLAM)一直是電腦視覺和機器人領域的熱門研究主題。 SLAM為許多需要即時導航的應用提供了基本功能,如機器人技術(shù)、無人機(UAVs)、自動駕駛、以及虛擬實境和擴增實境。近年來,SLAM技術(shù)得到了迅速發(fā)展,提出了各種SLAM系統(tǒng),包括單目SLAM系統(tǒng)(基於特徵點,直接和半直接方法)、多感測器SLAM系統(tǒng)(RGBD、雙眼和慣性輔助的方法)以及基於學習的SLAM系統(tǒng)(有監(jiān)督和無監(jiān)督方法)。
然而,隨著SLAM技術(shù)的迅速發(fā)展,幾乎所有的研究人員都集中精力於自己的SLAM系統(tǒng)的理論和實施,這使得難以交流思想,並且不容易實現(xiàn)遷移到其他系統(tǒng)。這妨礙了SLAM技術(shù)快速應用於各種產(chǎn)業(yè)領域。此外,目前存在許多SLAM系統(tǒng)的不同實現(xiàn)版本,如何有效地進行速度、穩(wěn)健性和可移植性的基準測試仍然是一個問題。最近,Nardi等人和Bodin等人提出了統(tǒng)一的SLAM基準測試系統(tǒng),以進行定量、可比較和可驗證的實驗研究,也探討各種SLAM系統(tǒng)之間的權(quán)衡。透過這些系統(tǒng),可以使用資料集和度量評估模組輕鬆進行評估實驗。
由於現(xiàn)有的系統(tǒng)僅提供評估基準,該論文認為有可能建立一個平臺,以服務SLAM演算法的整個生命週期,包括開發(fā)、評估和應用階段。此外,近年來深度學習基礎的SLAM已取得顯著進展,因此有必要創(chuàng)建一個平臺,不僅支援C ,還支援Python,以更好地支援幾何和深度學習基礎的SLAM系統(tǒng)的整合。因此,在本文中,介紹了一個新型的SLAM平臺,不僅提供評估功能,還為研究人員提供了有用的工具,以快速開發(fā)自己的SLAM系統(tǒng)。透過這個平臺,常用功能以插件形式提供,因此使用者可以直接使用它們或創(chuàng)建自己的功能以實現(xiàn)更好的效能。希望這個平臺能進一步推動SLAM系統(tǒng)的實際應用??偠灾?,本文的主要貢獻如下:
- 本文提出了一個通用的、跨平臺的、完全開源的SLAM平臺,旨在用於研究和商業(yè)用途,超越了以往的基準測試系統(tǒng)。 SLAM介面由多個輕量級、無依賴的頭檔組成,這使得在統(tǒng)一框架中以插件形式與不同資料集、SLAM演算法和應用程式進行互動變得容易。此外,還提供了JavaScript和Python,以支援基於Web和深度學習的SLAM應用。在
- 提出的GSLAM平臺中,引入了三個經(jīng)過最佳化的模組作為實用工具類,包括Estimator、Optimizer和Vocabulary。 Estimator旨在提供一組封閉形式的求解器,涵蓋所有情況,具有強大的樣本一致性(RANSAC);Optimizer旨在提供流行的非線性SLM問題的統(tǒng)一介面;Vocabulary旨在提供高效且可移植的詞袋實現(xiàn),用於多線程和SIMD優(yōu)化的地點識別。
- 受益於上述接口,該工作在一個統(tǒng)一的框架中實現(xiàn)並評估了現(xiàn)有數(shù)據(jù)集、SLAM實現(xiàn)和可視化應用的插件,未來出現(xiàn)的基準測試或應用也可以輕鬆地進行進一步集成。
下面首先介紹GSLAM框架的接口,並解釋GSLAM的工作原理。其次,介紹三個實用元件,即Estimator, Optimizer和Vocabulary。然後,使用幾個典型的公共資料集,使用GSLAM框架來評估不同流行的SLAM實作。最後,總結(jié)這些工作,並展望未來的研究方向。
3 相關工作
Simultaneous Localization And Mapping
SLAM技術(shù)用於在未知環(huán)境中建立地圖,並將感測器在地圖中進行定位,主要側(cè)重於即時操作。早期的SLAM主要基於擴展卡爾曼濾波(EKF)。將6自由度的運動參數(shù)和3D地標以機率方式表示為單一狀態(tài)向量。經(jīng)典EKF的複雜度隨著地標數(shù)量的增加呈二次增長,限制了其可拓展性。近年來,SLAM技術(shù)已經(jīng)快速發(fā)展,提出了許多單目視覺SLAM系統(tǒng),包括基於特徵點、直接法和半直接方法。然而,單目SLAM系統(tǒng)缺乏尺度訊息,無法處理純旋轉(zhuǎn)情況,因此一些其他多感測器SLAM系統(tǒng),包括RGBD,雙眼和慣性輔助方法出現(xiàn),以提高穩(wěn)健性和精度。
儘管提出了大量的SLAM系統(tǒng),但在統(tǒng)一這些演算法的介面方面幾乎沒有工作,也沒有對它們的性能進行全面的比較。此外,這些SLAM演算法的實作通常以獨立的可執(zhí)行檔的形式發(fā)布,而不是以庫的形式,而且往往不符合任何標準結(jié)構(gòu)。
最近,基於深度學習的有監(jiān)督和無監(jiān)督的視覺里程計(VO)與傳統(tǒng)的基於幾何的方法相比,提出了新穎的思路。但是,進一步優(yōu)化多個關鍵影格的一致性仍然不容易。 GSLAM提供的工具可以幫助獲得更好的全域一致性。透過該框架,更容易可視化或評估結(jié)果,並進一步應用於各種行業(yè)領域。
Computer Vision and Robotics Platform
在機器人技術(shù)和電腦領域,機器人系統(tǒng)(ROS)提供了節(jié)點之間非常便捷的通訊方式,受到大多數(shù)機器人研究人員的青睞。許多SLAM實作提供了ROS包裝器,以訂閱感測器資料並發(fā)布視覺化結(jié)果。但它並未統(tǒng)一SLAM實現(xiàn)的輸入與輸出,難以進一步評估不同SLAM系統(tǒng)。
受ROS訊息架構(gòu)的啟發(fā),GSLAM實作了一個類似的進程間通訊實用類,稱為Messenger。這為替代SLAM實現(xiàn)內(nèi)部的ROS提供了另一種選擇,並保持了相容性,也就是說,該框架內(nèi)支援所有ROS定義的訊息,並自然地??實現(xiàn)了ROS包裝器。由於採用了進程內(nèi)設計,訊息傳遞時沒有序列化和資料傳輸,訊息可以無延遲和額外成本地發(fā)送。同時,訊息的有效載荷不僅限於ROS定義的訊息,還可以是任何可複製的資料結(jié)構(gòu)。此外,不僅提供評估功能,還為研究人員提供了有用的工具,以快速開發(fā)和整合自己的SLAM演算法。
SLAM Benchmarks
目前有幾個SLAM基準測試系統(tǒng),包括KITTI基準測試、TUM RGB-D基準測試和ICL-NUIM RGB-D基準資料集,這些系統(tǒng)僅提供評估功能。此外,SLAMBench2將這些基準測試擴展為演算法和資料集,要求使用者將已發(fā)布的實作與SLAMBench2相容,以進行評估,這難以擴展到更多應用領域。與這些系統(tǒng)不同,本文提出的GSLAM平臺提供了一個解決方案,可為SLAM實現(xiàn)的整個生命週期提供服務,從開發(fā)、評估到應用。為研究人員提供了有用的工具,以快速開發(fā)自己的SLAM系統(tǒng),並進一步基於統(tǒng)一介面開發(fā)視覺化、評估和應用程式。
4 通用SLAM架構(gòu)
#Framework Overview
GSLAM的架構(gòu)如圖所示??偟膩碚f,介面旨在處理三個部分的互動。
- 處理SLAM實作的輸入。運行SLAM時,需要感測器數(shù)據(jù)和一些參數(shù)。對於GSLAM,使用Svar類別進行參數(shù)配置和命令處理。所有SLAM實作所需的感測器資料都由Dataset實作提供,並使用Messenger進行傳輸。 GSLAM實現(xiàn)了幾個流行的視覺SLAM資料集,用於可以自由實現(xiàn)自己的資料集插件。
- SLAM實作。 GSLAM將每個實作視為插件庫。開發(fā)人員可以非常容易地基於GSLAM介面和實用類別設計一個SLAM實作。開發(fā)人員還可以使用介麵包裝實現(xiàn),而無需引入額外的依賴。使用者可以專注於核心演算法的開發(fā),而無需關心SLAM實現(xiàn)外部需要處理的輸入和輸出。
- 視覺化部分或使用SLAM結(jié)果的應用。在SLAM實現(xiàn)處理輸入幀後,使用者可能希望展示或利用結(jié)果。為了通用性,SLAM結(jié)果應以標準格式發(fā)布。預設情況下,GSLAM使用Qt進行視覺化,但使用者可以自由實現(xiàn)自訂的視覺化工具,並添加應用程式插件,如評估應用程式。
該框架被設計為與各種不同類型的SLAM實現(xiàn)相容,包括但不限於單目、雙眼、RGBD和多相機視覺慣性里程計與多感測器融合?,F(xiàn)代深度學習平臺和開發(fā)人員更喜歡使用Python進行編碼,因此GSLAM提供了Python綁定,開發(fā)人員能夠使用Python實現(xiàn)SLAM,並使用GSLAM呼叫它,或使用Python呼叫基於C 的SLAM實作。此外,也支援JavaScript用於基於Web的用途。
Basic Interface Classes
SLAM介面通常使用的一些資料結(jié)構(gòu)包括參數(shù)設定/讀取、影像格式、姿態(tài)變換、相機模型和地圖資料結(jié)構(gòu)。以下是一些基本介面類別的簡要介紹。
Paramter Setting
GSLAM使用一個小巧的參數(shù)解析和參數(shù)設定類別Svar,它只包含一個頭文件,依賴C 11,並具有以下特點:
a.參數(shù)解析和配置載入以及幫助資訊。類似於流行的參數(shù)解析工具,如Google gflags,變數(shù)配置可以從命令列參數(shù)、檔案和系統(tǒng)環(huán)境載入。使用者還可以定義不同類型的參數(shù),並提供介紹信息,這些信息將顯示在幫助文件中。
b.一個小型腳本語言,支援變數(shù)、函數(shù)和條件語句,使設定檔更加強大。
c.線程安全的變數(shù)綁定和共享。建議將使用頻率非常高的變數(shù)綁定到指標或引用上,這不僅提供了高效性,還提供了便利性。
d,簡單的函數(shù)定義和從C 或純腳本進行呼叫。命令和函數(shù)之間的綁定有助於開發(fā)人員解耦檔案依賴關係。
e.支援樹形結(jié)構(gòu)表示,這意味著可以輕鬆地使用XML、JSON和YAML格式載入或儲存設定。
Intra-Process Messaging
由於ROS提供了一個非常便捷的節(jié)點間通訊方式,受到大多數(shù)機器人研究人員的青睞。受到ROS2訊息架構(gòu)的啟發(fā),GSLAM實作了一個類似的進程間通訊實用類,稱為Messenger。這為替代SLAM實現(xiàn)內(nèi)部的ROS提供了另一種選擇,並保持了相容性。由於採用了進程間設計,Messenger能夠發(fā)布和訂閱任何類,而無需額外成本。以下是更多功能的介紹:
a.此介面採用了ROS的風格,對用來說容易上手。而且支援所有ROS定義的訊息,這意味著只需要很少的工作就能取代原來的ROS訊息傳遞系統(tǒng)。
b.由於沒有序列化和資料傳輸,訊息可以無延遲和額外成本地發(fā)送。同時,訊息的有效載荷不僅限於ROS定義的訊息,還支援任何可複製的資料結(jié)構(gòu)。
c.原始碼只包括基於C 11的頭文件,沒有額外的依賴,使其具有可移植性。
d.API是執(zhí)行緒安全的,並在列隊大小大於零時支援多執(zhí)行緒條件通知。在發(fā)布者和訂閱者相互連接之前,會對主題名稱和RTTI資料結(jié)構(gòu)進行檢查,以確保正確地呼叫。
3D Transforamtion
#對於旋轉(zhuǎn)部分,有幾種表示方式可供選擇,包括矩陣、歐拉角、單位四元數(shù)和李代數(shù)so(3)。對於給定的變換,可以使用其中任何一種來表示,並且可以相互轉(zhuǎn)換。但是,當考慮多個變換和流形最佳化時,需要密切注意所選的表示方式。矩陣表示法使用9個參數(shù)進行過度參數(shù)化,而旋轉(zhuǎn)只有3個自由度(DOF)。歐拉角表示使用3個變量,易於理解,但面臨萬向鎖的問題,而且不方便進行多重變換。單位四元數(shù)是執(zhí)行多次旋轉(zhuǎn)的最高效方式,而李代數(shù)則是執(zhí)行流行優(yōu)化的常見表示方法。
類似地,定義了剛體和相似性轉(zhuǎn)換的李代數(shù)se(3)和sim(3)。 GSLAM使用四元數(shù)來表示旋轉(zhuǎn)部分,並提供了一種表示形式轉(zhuǎn)換為另一種表示形式的函數(shù)。表格1展示了變換實現(xiàn),並於另外三種流形的實現(xiàn)(Sophus, TooN和Ceres)進行了比較。由於Ceres實現(xiàn)使用角軸表示,因此不需要旋轉(zhuǎn)的指數(shù)和對數(shù)。如表格所示,GSLAM的實現(xiàn)性能更佳,因為它使用四元數(shù)並具有更好的優(yōu)化,而TooN使用矩陣實現(xiàn),在點變換方面性能更好。
Image format
影像資料的儲存和傳輸是視覺SLAM中最重要的功能之一。為了提高效率和便利性,GSLAM使用了一個資料結(jié)構(gòu)GImage,它與cv::Mat相容。它具有智慧指標計數(shù)器,以確保記憶體安全釋放,並且可以在不進行記憶體複製的情況下輕鬆傳輸。資料指針對齊,以便更容易進行單指令多資料(SIMD)加速。使用者可以在GImage和cv::Mat之間無縫、安全地進行轉(zhuǎn)換,而無需進行記憶體複製。
Camera Models
#由於SLAM可能包含因製造不完美而引起的徑向和切向畸變,或者是由魚眼或全景相機捕捉的影像,因此提出了不同的相機模型來描述投影。 GSLAM提供了包括OpenCV(ORB-SLAM使用)、ATAN(PTAM使用)和OCamCalib(MultiCol-SLAM使用)在內(nèi)的實作。用戶也可以輕鬆繼承這些類別並實現(xiàn)其他相機模型,如Kannala-Brandt和等距全景模型。
Map Data Structure
對於SLAM實現(xiàn),其目標是即時定位並產(chǎn)生地圖。 GSLAM建議使用一個統(tǒng)一的地圖資料結(jié)構(gòu),有多個地圖幀和地圖點組成。這個資料結(jié)構(gòu)適用於大多數(shù)現(xiàn)有的視覺SLAM系統(tǒng),包括基於特徵或直接方法。
地圖幀用於表示不同時間的位置狀態(tài),包括由感測器捕捉的各種資訊或估算結(jié)果,包括IMU或GPS原始資料、深度資訊和相機模型。 SLAM實現(xiàn)估算它們之間的關係,它們之間的連接形成了一個姿勢圖。
地圖點用於表示由幀觀察到的環(huán)境,通常由基於特徵的方法使用。但是,一個地圖點不僅可以表示一個關鍵點,還可以表示一個GCP(地面控制點)、邊緣線或3D物件。它們與地圖幀的對應關係形成了一個觀察圖,通常被稱為捆綁圖。
5 SLAM實作工具
為了更容易實作一個SLAM系統(tǒng),GSLAM提供了一個實用類別。本節(jié)將簡單介紹三個經(jīng)過最佳化的模組,分別是Estimator, Optimizer和Vocabulary。
Estimator
純幾何計算仍然是需要強大且準確的即時解決方案的基本問題。傳統(tǒng)的視覺SLAM演算法或現(xiàn)代的視覺慣性解決方案都依賴幾何視覺演算法來進行初始化、重定位和回環(huán)閉合。 OpenCV提供了多個幾何演算法,Kneip提供了一個用於幾何視覺的工具箱OpenGV,該工具箱僅限於相機姿態(tài)計算。 GSLAM的Estimator旨在提供一系列包含所有情況的封閉形式解算器,並使用了穩(wěn)健的隨機取樣一致性方法(RANSAC)。
表2列出了Estimator支援的演算法。根據(jù)給定的觀測數(shù)據(jù),它們被分成三類。 2D-2D匹配用於估計極線或單應約束,並且可以從中分解相對姿態(tài)。 2D-3D對應於估計單目或多攝影機系統(tǒng)的中心或非中心絕對位姿,這是著名的PnP問題。也支援3D幾何函數(shù),如平面擬合,以及估算兩個點雲(yún)的SIM變換。大多數(shù)演算法都依賴與開源線性代數(shù)庫Eigen,它是一個僅包含頭文件的庫,並且適用於大多數(shù)平臺。
Optimizer
非線性最佳化是現(xiàn)代幾何SLAM系統(tǒng)的核心部分。由於Hessian矩陣的高緯度和稀疏性,圖結(jié)構(gòu)被用來建模SLAM的複雜估計問題。提出了幾種框架,包括Ceres、G2O和GTSAM,用於解決一般的圖優(yōu)化問題。這些框架在不同的SLAM系統(tǒng)中廣泛使用。 ORB-SLAM、SVO使用G2O進行BA與位姿圖最佳化。 OKVIS、VINS使用Ceres進行帶IMU因子的圖優(yōu)化,滑動視窗用於控制計算複雜度。 Forster等人提出了一種基於SVO的視覺初始化方法,並使用GTSAM實現(xiàn)後端。
GSLAM的Optimizer旨在為大多數(shù)非線性SLAM問題提供一個統(tǒng)一的接口,如PnP求解器,BA,姿態(tài)圖優(yōu)化?;禖eres庫實現(xiàn)了這些問題的通用插件。對於特定問題,如BA,還可以提供一些更有效率的實現(xiàn),例如PBA和ICE-BA作為插件。使用優(yōu)化器工具,開發(fā)人員可以使用統(tǒng)一的介面存取不同的實現(xiàn),特別是用於基於深度學習的SLAM系統(tǒng)。
Vocabulary
地點辨識是SLAM系統(tǒng)中最重要的部分之一,用於重新定位和回環(huán)偵測。詞袋(BoW)方法在SLAM系統(tǒng)中廣泛使用,因為它高效且性能出色。 FabMap提出了一種基於外觀的地點識別的機率方法,該方法用於RSLAM、LSD-SLAM等系統(tǒng)。由於它使用了像SIFT和SURF這樣的浮點描述子,DBoW2為訓練和偵測建構(gòu)了一個詞彙樹,支援二元和浮點描述子。 Refael提出了DBoW2的兩個改進版本,DBoW3和FBoW,它們簡化了介面並加快了訓練和載入速度。之後,ORB-SLAM採用了ORB描述子,並使用DBoW2進行回環(huán)檢測、重定位和快速匹配。隨後,一系列SLAM系統(tǒng),如ORB-SLAM2、VINS-Mono和LDSO,使用DBoW3進行回環(huán)檢測。它已經(jīng)成為實現(xiàn)SLAM系統(tǒng)地點識別的最受歡迎工具。
受上述工作的啟發(fā),GSLAM對DBoW3詞彙進行了僅包含頭檔的實現(xiàn),具有以下特點:
- 去除了對OpenCV的依賴,所有函數(shù)都在一個僅依賴C 11的頭檔中實作。
- 結(jié)合DBoW2/3和FBoW的優(yōu)點,具有極快的速度和易於使用。提供了類似於DBoW3的接口,並使用SSE和AVX指令加速了二進制和浮點描述子。
- 改進了記憶體使用和加速了載入、保存或訓練詞彙以及從圖像特徵到BoW向量轉(zhuǎn)換的速度。
表3展示了四個詞袋庫的比較。在實驗中,每個父節(jié)點有10個子節(jié)點,ORB特徵偵測使用ORB-SLAM,SIFT偵測使用SiftGPU。實現(xiàn)結(jié)果中使用了ORB詞彙,分別有4級和6級,以及一個SIFT詞彙。 FBoW和GSLAM都使用多執(zhí)行緒進行詞彙訓練。 GSLAM的實現(xiàn)在幾乎所有項目中的表現(xiàn)都優(yōu)於其他實現(xiàn),包括載入和保存詞彙、訓練新詞彙、將描述符列表轉(zhuǎn)換為用於地點識別的BoW向量和用於快速特徵匹配的特徵向量。此外GSLAM實現(xiàn)使用更少的內(nèi)存,並分配了更少的動態(tài)內(nèi)存塊,因為DBoW2需要大量內(nèi)存的主要原因是碎片問題。
6 SLAM評估基準
現(xiàn)有的基準需要使用者下載測試資料集並上傳結(jié)果以進行精確性評估,這不足以統(tǒng)一運行環(huán)境並評估公平的性能比較。得益於GSLAM的統(tǒng)一接口,SLAM系統(tǒng)的評估變得更加優(yōu)雅。在GSLAM的幫助下,開發(fā)人員只需上傳SLAM插件,便可以在一個使用固定資源的docker化環(huán)境中進行速度、運算成本和準確性的各種評估。在本節(jié)中,將首先介紹一些資料集和已實現(xiàn)的SLAM插件。然後,對速度、準確性、記憶體和CPU使用率進行三個代表SLAM實現(xiàn)的評估。此評估旨在展示具有不同SLAM插件的統(tǒng)一SLAM基準實現(xiàn)的可能性。
Datasets
運行SLAM系統(tǒng)通常需要感測器資料流和對應的配置。為了讓開發(fā)人員專注於核心SLAM插件的開發(fā),GSLAM提供了一個標準的資料集接口,開發(fā)人員不需要關心SLAM的輸入。透過不同的數(shù)據(jù)集插件,提供了線上感測器輸入和離線數(shù)據(jù),正確地插件會根據(jù)給定的數(shù)據(jù)集路徑後綴動態(tài)載入。資料集的實作應該提供所有請求的感測器流以及相關配置,因此不需要為不同的資料集進行額外設定。所有不同的感測器串流透過Messenger發(fā)布,使用標準的主題名稱和資料格式。
GSLAM已經(jīng)實現(xiàn)了幾個流行的視覺SLAM資料集插件,如表4所示。用戶也可以非常輕鬆地基於僅包含頭檔的GSLAM核心來實現(xiàn)一個資料集插件,並將其發(fā)佈為插件並與應用程式一起進行編譯。
SLAM Implementations
#圖2展示了一些使用內(nèi)建Qt視覺化器運行的開源SLAM和SfM插件的螢幕截圖。此框架支援不同體系結(jié)構(gòu)的SLAM系統(tǒng),包括直接法、半直接法、基於特徵的方法,甚至SfM方法。 DSO實現(xiàn)需要發(fā)布結(jié)果,例如點雲(yún)、相機姿勢、軌跡和姿態(tài)圖,以便像基於ROS的實現(xiàn)一樣進行視覺化。使用者可以使用統(tǒng)一的框架存取不同的SLAM插件,根據(jù)C 、Python和Node-JS介面開發(fā)基於SLAM的應用程式非常方便。由於許多研究人員在開發(fā)中使用ROS,GSLAM還提供了ROS視覺化插件,以無縫傳輸ROS定義的訊息,並使開發(fā)人員可以利用Rviz進行顯示或繼續(xù)開發(fā)其他基於ROS的應用程式。
Evaluation
由於大多數(shù)現(xiàn)有的基準只提供資料集,或者沒有g(shù)roundtruth供用戶自行評估,GSLAM提供了一個內(nèi)建插件和一些腳本工具,用於計算性能和精度評估。
論文中使用TUM RGBD資料集中的序列nostructure-texture-near-withloop來示範評估的執(zhí)行情況。接下來的實驗採用三個開源的單眼SLAM插件DSO, SVO和ORB-SLAM。在所有實驗中,使用一臺搭載i7-6700 CPU、GTX 1060 GPU和16GB RAM的計算機,運行64位元Ubuntu 16.04。
計算效能評估包括記憶體使用、分配記憶體區(qū)塊數(shù)量、CPU使用率、統(tǒng)計每幀所用的時間,如圖3所示。結(jié)果表明,SVO使用的記憶體和CPU資源最少,並獲得了最快的速度。而且由於SVO只是一個視覺里程計,在實現(xiàn)內(nèi)部只維護了一個本地地圖,所以成本保持穩(wěn)定。 DSO分配的內(nèi)存區(qū)塊數(shù)較少,但消耗了100MB以上的內(nèi)存,且增長較慢。 DSO的一個問題是當幀數(shù)低於500時,處理時間會急劇增加,此外,關鍵影格的處理時間甚至更長。 ORB-SLAM使用了最多的CPU資源,計算時間穩(wěn)定,但記憶體使用快速增加,並且它分配和釋放了大量的記憶體區(qū)塊,因為其BA使用了G2O庫,沒有使用增量最佳化方法。
圖4展示了里程計軌跡的評估結(jié)果。如圖所示,SVO速度較快,但漂移較大,而ORBSLAM在絕對姿態(tài)誤差(APE)方面達到了最高的精度。由於綜合評估是一個可插拔的插件應用程序,可以重新實施更多的評估指標,例如點雲(yún)的精確度。
7 總結(jié)
#本文介紹了一個名為GSLAM的新通用SLAM平臺,該平臺提出了從開發(fā)、評估到應用的支持。透過這個平臺,常用的工具包以插件形式提供,使用者還可以輕鬆地開發(fā)自己的模組。為了使平臺易於使用,使介面只依賴C 11。此外,還提供了Python和JavaScript接口,以更好地整合傳統(tǒng)SLAM和基於深度學習的SLAM,或在Web上進行分散式操作。
在接下來的研究中,會提供更多的SLAM實作、文件和簡報程式碼,以便學習和使用。此外,還將提供傳統(tǒng)SLAM和基於深度學習的SLAM的集成,以進一步探索SLAM系統(tǒng)的未知可能性。
這項工作的首頁如下:
GSLAM: Main Page
感覺是可學習SLAM各部分原理的框架~
原文連結(jié):https://mp.weixin.qq.com/s/PCxhqhK3t1soN5FI0w9NFw
以上是GSLAM | 一個通用的SLAM架構(gòu)和基準的詳細內(nèi)容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在PHP中搭建社交分享功能的核心方法是通過動態(tài)生成符合各平臺要求的分享鏈接。 1.首先獲取當前頁面或指定的URL及文章信息;2.使用urlencode對參數(shù)進行編碼;3.根據(jù)各平臺協(xié)議拼接生成分享鏈接;4.在前端展示鏈接供用戶點擊分享;5.動態(tài)生成頁面OG標籤優(yōu)化分享內(nèi)容展示;6.務必對用戶輸入進行轉(zhuǎn)義以防止XSS攻擊。該方法無需複雜認證,維護成本低,適用於大多數(shù)內(nèi)容分享需求。

要實現(xiàn)PHP結(jié)合AI進行文本糾錯與語法優(yōu)化,需按以下步驟操作:1.選擇適合的AI模型或API,如百度、騰訊API或開源NLP庫;2.通過PHP的curl或Guzzle調(diào)用API並處理返回結(jié)果;3.在應用中展示糾錯信息並允許用戶選擇是否採納;4.使用php-l和PHP_CodeSniffer進行語法檢測與代碼優(yōu)化;5.持續(xù)收集反饋並更新模型或規(guī)則以提升效果。選擇AIAPI時應重點評估準確率、響應速度、價格及對PHP的支持。代碼優(yōu)化應遵循PSR規(guī)範、合理使用緩存、避免循環(huán)查詢、定期審查代碼,並藉助X

用戶語音輸入通過前端JavaScript的MediaRecorderAPI捕獲並發(fā)送至PHP後端;2.PHP將音頻保存為臨時文件後調(diào)用STTAPI(如Google或百度語音識別)轉(zhuǎn)換為文本;3.PHP將文本發(fā)送至AI服務(如OpenAIGPT)獲取智能回復;4.PHP再調(diào)用TTSAPI(如百度或Google語音合成)將回復轉(zhuǎn)為語音文件;5.PHP將語音文件流式返回前端播放,完成交互。整個流程由PHP主導數(shù)據(jù)流轉(zhuǎn)與錯誤處理,確保各環(huán)節(jié)無縫銜接。

PHP通過數(shù)據(jù)庫事務與FORUPDATE行鎖確保庫存扣減原子性,防止高並發(fā)超賣;2.多平臺庫存一致性需依賴中心化管理與事件驅(qū)動同步,結(jié)合API/Webhook通知及消息隊列保障數(shù)據(jù)可靠傳遞;3.報警機制應分場景設置低庫存、零/負庫存、滯銷、補貨週期和異常波動策略,並按緊急程度選擇釘釘、短信或郵件通知責任人,且報警信息需完整明確,以實現(xiàn)業(yè)務適配與快速響應。

PHP不直接進行AI圖像處理,而是通過API集成,因為它擅長Web開發(fā)而非計算密集型任務,API集成能實現(xiàn)專業(yè)分工、降低成本、提升效率;2.整合關鍵技術(shù)包括使用Guzzle或cURL發(fā)送HTTP請求、JSON數(shù)據(jù)編解碼、API密鑰安全認證、異步隊列處理耗時任務、健壯錯誤處理與重試機制、圖像存儲與展示;3.常見挑戰(zhàn)有API成本失控、生成結(jié)果不可控、用戶體驗差、安全風險和數(shù)據(jù)管理難,應對策略分別為設置用戶配額與緩存、提供prompt指導與多圖選擇、異步通知與進度提示、密鑰環(huán)境變量存儲與內(nèi)容審核、雲(yún)存

選擇合適AI語音識別服務並集成PHPSDK;2.用PHP調(diào)用ffmpeg將錄音轉(zhuǎn)為API要求格式(如wav);3.上傳文件至雲(yún)存儲並調(diào)用API異步識別;4.解析JSON結(jié)果並用NLP技術(shù)整理文本;5.生成Word或Markdown文檔完成會議記錄自動化,全過程需確保數(shù)據(jù)加密、訪問控制與合規(guī)性以保障隱私安全。

PHP在智能客服中扮演連接器和大腦中樞角色,負責串聯(lián)前端輸入、數(shù)據(jù)庫存儲與外部AI服務;2.實現(xiàn)時需構(gòu)建多層架構(gòu):前端接收用戶消息,PHP後端預處理並路由請求,先匹配本地知識庫,未命中則調(diào)用外部AI服務如OpenAI或Dialogflow獲取智能回復;3.會話管理由PHP寫入MySQL等數(shù)據(jù)庫,保障上下文連續(xù)性;4.集成AI服務需用Guzzle發(fā)送HTTP請求,安全存儲APIKey,做好錯誤處理與響應解析;5.數(shù)據(jù)庫設計需包含會話、消息、知識庫、用戶表,合理建索引、保障安全與性能,支撐機器人記憶

選擇AI寫作API需考察穩(wěn)定性、價格、功能匹配度及是否有免費試用;2.PHP用Guzzle發(fā)送POST請求並用json_decode處理返回的JSON數(shù)據(jù),注意捕獲異常和錯誤碼;3.將AI內(nèi)容融入項目需建立審核機制並支持個性化定制;4.優(yōu)化性能可採用緩存、異步隊列和限流技術(shù),避免高並發(fā)下瓶頸。
