來源 | 知乎@黃浴 知乎@知乎
介紹最近半年的一些SLAM論文,包括視覺和激光雷達,有傳統方法,也有深度學習方法。
1 “LT-mapper: A Modular Framework for LiDAR-based Lifelong Mapping“,arXiv July,2021
是韓國KAIST Department of Civil and Environmental Engineering 發表。
長期的3D地圖管理是機器人在非靜止現實世界中可靠導航所需的基本能力。本文為城市區域開發了開源、模塊化和現成的基于激光雷達的持久地圖(lifelong map) ,稱為LT-Mapper(LiDAR-based lifelong mapping)。 它將問題劃分為序貫子問題:多節SLAM(multi-session SLAM,MSS)、高/低動態變化檢測和正/負變化管理。該方法利用MSS,處理潛在的軌跡誤差;因此,變化檢測不需要良好的初始校準。這個變化管理方案在內存和計算成本方面保持有效性,提供了大規模點云地圖自動分離目標的功能。通過對多個時間間隔(從一天到一年)的大量實際實驗,驗證了該框架的可靠性和適用性。
代碼在 github.com/gisbi-kim/lt
通過錨節點(anchor node)彈性地處理各節,而子模塊 LT- SLAM 可用 LiDAR 在共享幀中拼接多節。
子模塊 LT-removert 克服了各節之間對齊的多義性,沿空域軸和時域軸調用 remove-then-revert 算法。
子模塊 LT-map 可以有效地生成最新地圖(實時地圖)和持久地圖(元地圖),同時變化存為增量地圖(delta map)。通過增量地圖,恢復和變化檢測操作在內存和計算上成本高效。
上述模塊打包在單個框架中,其中包含現成的基于控制臺命令。此外,提供多個時間間隔(每天)的真實世界實驗。
在 LT-SLAM 模塊中,用多節 SLAM 共同優化多個節,同時從基于 LiDAR 的全局定位器進行強大的節間閉環檢測。在此模塊中,查詢測量校準到到現有的中心地圖。
對齊查詢和中心節并刪除 HD (High Dynamic)點,在查詢測量和中心地圖之間應用set difference運算檢測變化。這個變化稱Low Dynamic (LD), 進一步可分成兩類: 1)新出現的點,Positive Difference (PD) ;和2)消失的點,Negative Difference (ND)。
魯棒的節間閉環檢測,采用Scan Context (SC) ,因為其具備的長時全局定位能力和輕量計算成本。檢測節間閉環后,通過Iterated Closest Point (ICP) 算法計算兩個關鍵幀之間的6D相對約束。
如圖是LT-removert可視化的流水線:LT-removert模塊把動態點分成HD和 LD 兩種,(a) LT-removert 從 LT-SLAM 接收對齊的中心地圖和查詢地圖;(b-c)刪除了HD points的清洗地圖;(d-e)LD 變化檢測(即 PD 和 ND 分割);(f) 通過多節抹去未刪除的HD points。
給定檢測到的 LD,LT-map 對中心節的每個關鍵幀執行節間變化更新。與上傳/下載整個地圖的基于快照方法相比,僅包含差異的增量地圖具有優勢。
2 “DSP-SLAM: Object Oriented SLAM with Deep Shape Priors“, arXiv,August,2021
作者來自University College London。
DSP-SLAM(Deep Shape Priors-SLAM),這是一種面向目標的SLAM系統,可以為前景目標構建豐富而精確的密集3D模型聯合地圖,而稀疏的地標點表示背景。DSP-SLAM將基于特征SLAM系統重建的3D點云作為輸入,通過對檢測物體進行密集重建來增強其稀疏地圖的能力。通過語義實例分割來檢測目標,并通過一個二階優化,特定類別(category-specific)的深度形狀嵌入作為先驗,估計形狀和姿勢。目標-覺察BA構建一個姿勢圖,共同優化相機姿勢、目標位置和特征點。DSP-SLAM 可以在 3 種不同的輸入模式,即單目、立體視覺或立體視覺+LiDAR,以每秒 10 幀速度運行。
項目網頁:jingwenwang95.github.io
如圖所示:DSP-SLAM 構建了豐富的目標-覺察地圖,提供了檢測目標的完整詳細形狀,同時將背景粗略地作為稀疏特征點發送;在KITTI 00上重建地圖和相機軌跡。
采用 DeepSDF(“Deepsdf: Learning continuous signed distance functions for shape representation“,CVPR 2019) 作為形狀嵌入,輸入一個形狀碼和一個3D查詢位置,輸出給定點的signed distance function (SDF) 值。 ORB-SLAM2 用作跟蹤和制圖主干網,一個基于特征的SLAM框架,在單目或立體圖像靜止狀態上運行。雖然跟蹤線程從對應關系中以幀速率估計相機姿勢,但制圖線程通過重建 3D 地標來構建稀疏地圖。
在每個關鍵幀執行目標檢測,共同推斷2D目標邊框和分割掩碼。此外,通過3D邊框檢測獲得目標姿勢估計的初始值。
新檢測將關聯到現有地圖目標,或通過目標級數據關聯實例化為新目標。每個檢測目標實例由一個 2D 邊框、一個 2D 掩碼、稀疏 3D 點云的深度觀測和初始目標姿勢等組成。
新實例化目標通過重構流水線進行重構。DSP-SLAM 采用一組稀疏的 3D 觀測值 ,其來自重建的 SLAM 點(單目和立體視覺)或 LiDAR 輸入(立體視覺+LiDAR),并選擇形狀碼和目標姿勢最小化表面一致性和深度渲染損失。地圖中已存在的目標將僅通過姿勢優化更新其 6自由度姿勢。
點特征(來自SLAM)、目標和攝像機姿勢的聯合因子圖(joint factor graph)通過bundle adjustment(BA) 進行優化,以保持一致地圖并考慮閉環(loop closure)。新目標作為節點,添加到聯合因子圖中,其相對姿勢估計即相機-目標之間的邊緣。
優化的最終能量函數是表面一致項、渲染項以及形狀碼正則項的加權和,即
數據相關中目標是將每個檢測與其在地圖中最近的目標相關聯,并根據不同的輸入模式采用不同的策略。當LiDAR輸入可用時,比較3D邊框和重建目標之間的距離。當僅用立體視覺或單目圖像作為輸入時,計算檢測和目標之間匹配的特征點數量。如果多個檢測與同一目標相關聯,保留最近的一個并拒絕其他目標。與任何現有目標無關的檢測,將初始化為新目標,其形狀和姿勢再進行優化。對于立體視覺和單目輸入模式,僅當觀察到足夠表面點時才會進行重建。對現有目標有關聯的檢測,運行只有姿勢的優化;新相機-目標邊緣會添加到聯合因子圖中來優化姿勢。
最后聯合BA優化一個聯合地圖,包括攝像頭姿態、目標姿勢和地圖點:
3 “DROID-SLAM: Deep Visual SLAM for Monocular, Stereo, and RGB-D Cameras” arXiv,August 2021
DROID(Differentiable Recurrent Optimization-Inspired Design)-SLAM
,是一種基于深度學習的SLAM系統。DROID-SLAM通過dense BA層對攝像機姿勢和像素深度進行重復迭代更新。盡管在單目視頻方面進行了訓練,但采用立體視覺或RGB-D視頻的話,在測試時可實現更高性能。
開源代碼 https://github.com/princeton-vl/DROID-SLAM
它包括recurrent iterative updates,在RAFT optical flow模型(“Raft: Recurrent all-pairs field transforms for optical flow“,ECCV,2020) 基礎上做了兩點改進:
更新基于一個可微分的Dense Bundle Adjustment (DBA) 層。
采用一個frame-graph,特征提取主要來自RAFT,同樣包括兩個:特征網絡和上下文網絡。特征網絡用于構建一組關聯體,而上下文特征則在更新操作的每個應用程序注入網絡。
SLAM 系統的核心組件是如圖所示的學習更新操作:更新操作是具有隱狀態 的 3 × 3 ConvGRU,操作在frame- graph的邊緣進行,預測映射到深度的流修正(flow revision),并通過DBA層進行姿勢更新。
相關特征提供了有關致密流域每個像素位置附近視覺相似性的信息,使網絡能夠學習對齊視覺相似的圖像區域。但是,對應關系有時是模棱兩可的。該流提供了一個互補信息源,允許網絡利用運動場中的平滑度來獲得魯棒性。
相關特征和流特征在注入GRU之前分別通過兩個卷積層進行映射。此外,通過逐元加操作將上下文網絡提取的上下文特征注入GRU。
ConvGRU是一個小感受野的局部操作。沿著空間維做隱平均,提取全局上下文,并將此特征向量用作GRU的額外輸入。全局上下文在 SLAM 中很重要,因為不正確的對應關系(例如由大型移動目標引起)會降低系統的準確性。對網絡來說,識別和拒絕錯誤對應非常重要。DBA 層把流修正集映射成姿態集,并逐元深度更新。如下定義成本函數:
整個系統包含兩個異步運行線程。前端線程接收新幀、提取特征、選擇關鍵幀并執行局部BA;后端線程同時對關鍵幀的整個歷史記錄執行全局BA。
DROID- SLAM可以泛化到其他數據集,如圖所示:
4 “ART-SLAM: Accurate Real-Time 6DoF LiDAR SLAM“,arXiv,September,2021
基于地面車輛的實時6-自由度姿態估計是機器人學中的一個重要研究課題,應用如自動駕駛和三維地圖。本文提出一種快速、準確和模塊化的激光雷達SLAM系統,用于批量和在線估計。首先下采樣和出格點去除,濾除噪聲并減小輸入點云的大小。然后將過濾后點云用于姿態跟蹤和地面檢測,優化估計的軌跡。與濾波過程并行工作,一個預跟蹤器允許獲得預計算里程計,在跟蹤時用作輔助工具。通過g2o pose graph實現的高效閉環和位姿優化,是該SLAM流水線的最后步驟。系統的性能與當前基于點云的方法(LOAM、LeGO-LOAM、A-LOAM、LeGO-LOAM BOR和HDL)進行了比較,結果表明,系統達到了相同或更好的精度,并且可以輕松地處理無閉環的情況。使用KITTI和Radiante數據集對估算的軌跡位移量進行比較。
注:HDL(“A portable 3d lidar-based system for long-term and wide-area people behavior measurement”,IEEE T- HMS,2018)
代碼上線:github.com/MatteoF94/AR
ART(Accurate Real-Time)- SLAM的框架如下:該系統由多個不同模塊組成,基本兩個主塊。第一個塊是必需的(灰色),是ART-SLAM的核心,在輸入點云上執行SLAM的所有模塊(圖中為橙色)。其他塊是可選的,用于主系統與來自不同傳感器數據集成,或和重新處理輸入集成。
給定入射激光掃描,第一步是在預濾波器中進行處理,減小其尺寸并去除噪聲。過濾后的點云同時發送到兩個模塊。最重要的模塊是跟蹤器,與先前濾波的掃描進行scan-to- scan匹配(比如實用方法 ICP, GICP, VGICP 和 NDT),估計機器人當前位移。另一個是地面檢測器,發現機器人相對地面的姿勢,增加對軌跡的高度和旋轉一致性。當前姿勢估計連同其對應點云一起發送到閉環檢測器(基于SC算法)模塊,在新點云和以前點云之間找到閉環,再次執行scan-to- scan匹配。此外,用姿勢、閉環和地面系數(由地面檢測器模塊估計)構建pose graph,表征機器人的軌跡。最后,對pose graph進行優化,以提高姿態估計精度。
IMU和GPS數據(圖中粉紅色區域)可以集成在pose graph生成器模塊,提高估計軌跡的精度。此外,預計算里程計(例如,通過不同的傳感器或系統)可以作為scan matching的初始猜測提供給跟蹤器。最后,預跟蹤器模塊(圖中綠色區域)執行多級scan-to- scan匹配,在跟蹤之前快速估計機器人運動。
每個模塊的架構如下:它由一個或多個observers、一個或多個dispatch隊列、一個core和一個或多個notifiers組成。此外,ART-SLAM是一種零拷貝軟件,允許對大量數據進行完善改進,同時將其保存在內存中。
observer允許模塊在數據可用時立即捕獲數據,與類型無關。由于數據到達速率可能不同于處理所需時間,observer將接收到的數據放入一個或多個dispatch隊列,即FIFO結構,避免丟失傳入數據。模塊中core是主要特點:一次為每個dispatch完善改進一個數據,從相對dispatch隊列中提取數據。一旦core完成任務,會將模塊的副產品發送給notifier程序,將這些副產品廣播給所有需要的模塊。使用dispatch隊列的優點是,如果不需要時間一致性,可以在多個線程并行執行相同core任務。
pose graph中的每個節點表示機器人的位置和在該位置獲取的測量值(點云);此外,每個節點都與相應的關鍵幀相關聯。兩個節點之間的邊,包含節點對應機器人姿勢變換的概率分布。這些變換,要么是跟蹤器模塊在連續位置之間給出的里程計測量值,要么是通過兩個關鍵幀之間獲取的傳感器測量值對齊來估計。由于傳感器噪聲和機器人里程計中的漂移,相關邊只表示軟約束且不固定。但是,可以插入絕對約束,不做任何方式修改。這些約束的示例包括地面系數、GPS或IMU數據,盡管也可以設置為非絕對約束,因為傳感器或測量帶有不確定性。此外,當執行閉環檢測和進行閉合的時候,可以在圖中的非連續節點之間添加新邊。
5 “A Biologically Inspired Simultaneous Localization and Mapping System Based on LiDAR Sensor“,September,2021
受嚙齒動物的海馬模型(rodent hippocampus)啟發,本文提出一種基于激光雷達傳感器的生物啟發SLAM系統,用海馬模型構建認知地圖(cognitive map) 并估計機器人在室內環境中的姿勢。基于生物啟發模型,SLAM系統用激光雷達傳感器的點云數據,用來自激光雷達里程計的自運動線索和來自激光雷達局部視圖單元(local view cells) 的局部視圖線索來構建認知地圖和估計機器人姿勢。
整個SLAM系統架構如下:包括激光雷達里程計,激光雷達局部視圖單元和姿態單元網絡(pose cell network)。
“激光雷達里程計“為機器人生成運動數據起著重要作用。“激光雷達局部視圖單元”模塊提供基于激光雷達觀測處理和集成局部視圖線索。”姿態單元網絡“,根據”激光雷達里程計“的自運動數據和”激光雷達局部視圖單元“模塊的局部視圖線索,通過路徑積分和閉環,估計機器人的3-DoF姿態。
“激光雷達局部視圖單元“模塊,將激光雷達觀測結果處理為視圖模板(view templates),表示場景的特征信息。“激光雷達局部視圖”模板用于維護局部視圖,并向“姿勢單元網絡”提供局部視圖線索信息。實時激光雷達觀測輸入與學習的局部視圖進行比較,要么在成功找到匹配視圖時生成一個姿勢標定活動,要么在沒有匹配視圖時將其添加到學習的局部視圖中,學習新局部視圖。
一個局部視角的兩步匹配(two-stage matching)算法如下:
該文由RatSLAM(“Ratslam: a hippocampal model for simultaneous localization and mapping,” IEEE ICRA’04) 啟發,提出姿勢單元網絡來保持姿勢表征,集成來自激光雷達里程計的自運動線索和來自激光雷達局部視圖單元的局部視圖線索,旨在減少里程計漂移、解決制圖過程中的局部視圖多義性問題。利用姿勢單元網絡,SLAM系統能夠基于自運動線索做路徑積分來構建認知地圖。此外,借助激光雷達視圖線索,姿勢單元網絡執行閉環來標定估計的姿勢和在線認知地圖,以減少激光雷達里程計累積誤差和漂移。
姿勢單元網絡是一個3D連續吸引網絡,即3D-CAN(“Path integration and cognitive mapping in a continuous attractor neural network model,” Journal of Neuroscience, 1997) ,表征為活動的3D矩陣。姿勢單元網絡的每個姿勢單元,通過興奮性(excitatory)和抑制性(inhibitory)連接,與其相鄰單元相連,以3-D形式圍繞在網絡的邊界,這樣姿勢單元網絡能夠表征有限數量姿勢單元的無界空間(unbounded space)。
姿勢單元網絡,加入基于3-D高斯分布的局部興奮和全局抑制活動,隨時間自更新姿勢單元網絡動力學。作為激活細胞聚集的姿勢單元網絡穩定狀態,如OpenRatSLAM(“Openratslam: an open source brain-based slam system,” Autonomous Robots, 2013) ,姿勢估計則編碼為活動包(activity packet)質心。
給定來自局部視圖單元的激光雷達局部視圖線索,一個標定活動會注入姿勢單元網絡,執行進一步的閉環和重定位。為解決局部視圖的多義性,當連續局部視圖的更新超過閾值,讓姿態單元的主活動包可以移動。
在制圖過程中,激光雷達里程計、激光雷達局部視圖單元和姿勢單元網絡的信息,組合和累積在一起估計機器人姿勢,并構建認知地圖作為機器人運動經驗的拓撲圖。當觀察學習的局部視圖檢測到閉環時,在兩個現有經驗節點之間建立新的轉換(transition),在認知圖中帶來新循環。
6 “Learning Efficient Multi-agent CooperativeVisual Exploration“,arXiv,October,2021
任務是視覺多智體室內探索,其中智體用盡可能少的步驟合作探索整個室內。傳統的基于規劃方法,通常在每個推理步驟都會遭遇特別昂貴的計算以及協作策略有限的表現力。相比之下,強化學習(RL)具備任意復雜策略的建模能力和最小推理開銷,所以成為應對這一挑戰的一種趨勢典范。
本文引入一種基于RL全局目標規劃器,即空間協調規劃器(Spatial Coordination Planner,SCP) ,將單智體RL解決方案,即主動神經SLAM(Active Neural SLAM,ANS) ,擴展到多智體環境,以端到端的方式,利用每個智體的空間信息有效地引導智體,以高探索效率對不同的空間目標導航。
SCP組成包括兩個:一個基于transformer的relation encoder用于捕獲智體內交互,和一個spatial action decoder生成準確目標。此外,實現一些多智體增強功能,處理來自每個智體的局部信息,實現對齊的空間表征和更精確的規劃方案。最終的解決方案,即多智體主動神經SLAM(Multi-Agent Active Neural SLAM,MAANS) ,結合所有這些技術,在視覺逼真的物理試驗臺Habitat中,進行實驗。
基于規劃的解決方案已被廣泛應用于單智體和多智體場景中的機器人導航問題。基于規劃的方法只需要很少的訓練,可以直接應用于不同的場景。然而,這些方法通常在協調策略上的表現力有限,需要對每個測試場景進行不同尋常的超參數調整,由于在每個決策步驟重復重規劃,因此特別耗時。
相比之下,強化學習(RL),對一些決策問題而言,包括各種視覺導航任務,是一種很有前途的方案。基于RL的智體通常被參數化為深度神經網絡,并根據原始傳感器信號直接生成動作。一旦策略通過RL算法得到很好的訓練,機器人就可以捕獲任意復雜的策略,并通過高效的推理計算(即神經網絡的單次前傳)生成實時決策。然而,訓練有效的RL政策可能特別具有挑戰性。因此,大多數現有的機器人探索問題,其RL方法集中在單智體設置上,而大多數多智體RL方法,僅在迷宮(maze)或網格世界等簡單場景下進行評估。
如圖是原ANS的框架:根據傳入的RGB觀測和傳感器數據,預測地圖和智體姿勢估計。全局策略使用該地圖和姿勢輸出長期目標(long-term goal),用分析路徑規劃器轉換為短期目標(short-term goal)。訓練一個局部策略,實現這一短期目標。
這里全局規劃器采用增強的以智體為中心的局部地圖作為輸入,包括指示已探測區域、未探測區域及障礙和歷史軌跡的通道,從長期目標坐標的兩個高斯分布中輸出兩個實數。該全局規劃器被參數化為CNN策略,并通過PPO算法進行訓練。
而局部規劃器在智體為中心的局部地圖執行經典規劃,即FMM(Fast Marching Method)算法,實現給定的長期目標,并輸出短期子目標的軌跡。最后,局部策略生成給定RGB圖像和子目標的動作,并通過模仿學習進行訓練。
如圖是ANS中Neural SLAM架構:該模塊通過監督學習進行訓練,以RGB圖像、姿勢感知信號及其過去的輸出作為輸入,并輸出更新的2D重建地圖和當前姿勢估計。
每個智體首先將其姿態感知信號和RGB圖像傳遞給NeuralSLAM模塊,獲得智體為中心的局部地圖和姿態估計。地圖細化(map refiner) 對每個局部地圖進行規范化,并與其他特定于智體的信息結合,作為空間協調規劃器(SCP)的輸入全局地圖。對ID=k的每個智體,SCP接收ID信息,在所有輸入地圖的提取特征應用基于 transformer的關系編碼器(relation encoder) ,并通過智體k的空間動作解碼器(spatial action decoder) 生成全局目標。局部規劃器在合并的全局地圖上為全局目標執行軌跡規劃。最后,由局部策略生成一個動作。
如圖是SCP模塊示意圖:包括N個CNN-based feature extractors, 一個relation encoder 和一個 spatial action decoder。
如圖是地圖細化(map refiner)和地圖合并(map merger) 的計算工作流:
“地圖細化“,首先合成所有以前以智體為中心的局部地圖,恢復以智體為中心的全局地圖。然后,基于姿勢估計變換坐標系,規范化來自同一坐標系的所有智體全局地圖。相應地規范化的全局地圖,包含圍繞實際可探測室內區域的無法探測的大邊界。為了確保SCP的特征提取只關注可實現部分,并導致更集中的空間動作空間,裁剪歸一化地圖的不可解釋邊界,并放大室內區域作為最終的細化地圖。
在“地圖細化”獲得N個放大的全局地圖后,“地圖合并”對每個像素位置應用max-pooling操作簡單地集成這些地圖。也就是說,對于合并的全局地圖的每個像素,成為障礙的概率是,在所有放大的全局地圖中該像素位置的最大值。人工合并的全局地圖僅用于局部規劃器,而不用于全局規劃器SCP。
7 “MegBA: A High-Performance and Distributed Library for Large-Scale Bundle Adjustment“,arXiv December,2021
大規模BA是3D視覺應用的關鍵(例如,SfM和SLAM)。盡管重要,但現有BA庫(如Ceres和g2o)對大規模BA的支持較差。這些庫未充分利用加速器(即GPU),并且缺乏有效分配BA計算的算法,因此限制了BA問題的規模。本文提出MegBA,一個用于大規模BA的高性能分布式庫。MegBA有一種端到端矢量化BA算法 ,可以在GPU上完全釋放大量并行核,從而加快整個BA計算。它還具有一種精確分布式BA算法 ,可以自動劃分BA問題,并用分布式GPU解決BA子問題。GPU用網絡高效的集體通信(collective communication)同步中間求解狀態,并且設計同步最小化通信成本。MegBA有一個內存高效的GPU運行,并公開了和g2o兼容的API。實驗表明,在公共大型BA基準測試中,MegBA的性能比最先進的BA庫(即Ceres和DeepLM)分別高出47.6倍和6.4倍。
MegBA概覽如圖所示5步:(1) MegBA基于邊劃分BA問題;BA子問題的大小相同,調遣到分布式GPU;(2)在每個GPU用矢量化運算計算雅可比矩陣;(3) 采用矢量化運算構造線性系統;(4)采用矢量化分布式PCG算法求解線性系統,并通過集體通信同步中間PCG狀態。迭代執行步驟(2)-(3)-(4),直到滿足(5)收斂標準。
求解BA,經常利用Schur Complement (SC) ,即
SIMD-optimised Vectorised BA的算法如下:
SIMD-optimised vertorised PCG的算法如下:
在高層看,MegBA分布式BA算法有兩個主要組成部分:(i)一種可以將BA問題劃分為子問題的方法,這些子問題可以由并行矢量化PCG解決;(ii)一種可以同步并行PCG狀態的算法,以便可以共同解決原始全局BA問題。
在Nvidia GPU上實現MegBA,整個實現基于兩項技術優化內存效率:
與g2o和Ceres完全兼容的方式實現MegBA的API,MegBA API包含兩個主要組件:
8 “Fast Direct Stereo Visual SLAM“, arXiv,December,2021
本文提出一種不依賴于特征檢測和匹配的快速、準確的立體視覺SLAM方法,DSV(direct-stereo-vision)-SLAM。將單目DSO(Direct Sparse Odometry)方法擴展到立體視覺系統,通過優化3D點尺度來最小化立體視覺的光度(photometric)誤差;與傳統的立體匹配相比,這是一種計算效率高且魯棒的方法。進一步擴展到有閉環的完全SLAM系統,減少累積誤差。在假設攝像機向前運動的情況下,從視覺里程計獲得3D點,模擬激光雷達掃描,用激光雷達點云描述子進行位置識別,更有效地檢測閉環。然后,用直接對齊法(direct alignment)估計相對姿態,最小化潛在閉環的光度誤差。可選地是,用ICP(Iterative Closest Point)算法對直接對齊方法進一步改進。最后,優化一個pose graph,提高全局SLAM精度。因為避免SLAM系統的特征檢測或匹配,確保較高的計算效率和魯棒性。對公共數據集的徹底實驗,驗證表明其有效性。
https: //github.com/IRVLab/direct_stereo_slam
如圖是該方法DSV-SLAM的概覽:將尺度優化和基于激光雷達描述子的位置識別方法結合到直接立體視覺SLAM系統中,(1) 從Cam0開始,單目VO估計攝像機姿勢并生成3D點;(2) Scale Optimization模塊用3D點估計并保持VO尺度;(3) 閉環檢測(loop closure detection)模塊基于VO的3D點檢測閉環;(4) 對于潛在閉環,Loop Correction模塊估計閉環的相對姿勢,并全局性優化姿勢。
尺度優化方法取自作者論文(“Extending Monocular Visual Odometry to Stereo Camera Systems by Scale Optimization”. IROS, 2019) ,優化的主要思想是將Cam0的單目VO點投影到Cam1,找到使光度誤差最小的最佳尺度。
而基于激光雷達描述子的閉環檢測取自作者論文(“A Fast and Robust Place Recognition Approach for Stereo Visual Odometry Using LiDAR Descriptors“. IROS, 2020) 。從VO局部累積3D點,獲得一組局部點,然后圍繞當前姿勢生成一組Spherical Points,模擬激光雷達掃描。
SC算法的主要思想是使用城市區域(例如建筑物)的高度分布來描述激光雷達生成的點云。原始SC將點云相對于 IMU 重力方向對齊。由于不希望引入額外的傳感器(即IMU)到視覺SLAM系統中,因此用PCA來對齊點云。水平面(PCA 平面)根據半徑和方位角劃分為多個bins。每個bin的最大高度連接起來,形成當前位置的簽名(signature)。在SC算法之前用ring-key進行快速初步搜索,SC編碼半徑確定每個ring的occupancy ratio 。
如圖所示即模擬激光雷達掃描ring-key和SC描述子的簡化圖(假設建筑物和樹木的高度分別為10米和3米):
系統中,對于立體視覺VO的每個關鍵幀,該方法模擬激光雷達掃描,并用修改SC描述子生成位置簽名。然后,在簽名數據庫(signature database)搜索潛在的閉環。首先通過ring-key進行搜索,其操作速度快,但不易區分,因此我們選擇前三位候選做SC,這樣再做出最終決定。