RTAB-Map:適用大範圍長週期的開源雷達視覺SLAM庫

RTAB-Map:適用大範圍長週期的開源雷達視覺SLAM庫

轉自  https://blog.csdn.net/qq_38649880/article/details/90666446

    摘要
    Introduction
    ROS上的主流SLAM算法
        基於雷達的算法
            Gmapping
            Hector
            ICP-Mapper
            Karto SLAM和Cartographer
            BLAM
            SegMatch
        視覺SLAM
            maplab和VINS-Mono
            ORB-SLAM2和雙目PTAM
            DVO-SLAM RGBiD-SLAM
            ElasticFusion
    RTAB-Map描述
        里程計節點(Odometry node)
            視覺里程計
            雷達里程計
            Synchronization(同步)
            STM(short-term memory)
            loop closure(visual)and proximity detection (laser)
            圖優化
            全局地圖組裝
    不同傳感器的軌跡性能評估
    RTAB的視覺和雷達配置的計算性能評估
    Discussion


寫在前面
最近一直在做無人機自主定位和導航的相關工作,雖然開源方案很多,但是放在實物上之後效果總是感覺不太理想。2018年8月份,Field Robot接受了一篇論文《RTAB‐Map as an open‐source lidar and visual simultaneous localization and mapping library for large‐scale and long‐term online operation》,這篇論文對目前ROS平臺上的開源SLAM做了一個全面的總結,並且着重介紹了RTAB-Map的算法框架和不同傳感器在數據集下的運行結果。之前也瞭解過RTAB,但是沒想到近一兩年更新這麼多新東西,從之前的rgbd、雙目相機擴展到相機、雷達都可以進行定位建圖的完整SLAM系統。並且在每個模塊都提供了很多集成方案,所以準備先從論文入手,然後上飛機實測一下。

摘要

RTAB從2013年開始作爲開源庫,作爲一個基於外觀(appearance-based)閉環檢測方法,同時擁有一個內存管理(memory management)在線處理大尺度、長時間(large-scale and long-term)定位和建圖問題。由於每個應用程序都對傳感器,處理能力和運動帶來了一系列限制,因此它提出了在成本,準確性,計算能力和集成簡易性方面最適合使用哪種SLAM方法的問題。很多SLAM系統都是基於視覺或者雷達信息的,因此很難對比它們的性能。因此,我們決定擴展RTAB-Map以支持視覺和激光雷達SLAM,在一個軟件包中提供一個工具,允許用戶使用不同的機器人和傳感器實現和比較各種3D和2D解決方案,適用於各種應用。本文介紹了RTAB-Map的這一擴展版本,以及它在定量和定性地比較大量流行的真實數據集, 從自主導航應用的實用角度概述視覺和激光雷達SLAM配置的優勢和侷限性。
Introduction

rtab的發展流程,2009年開始設計,2013年首次開源,2016年完全基於圖優化,2017年擴展了很多新應用,目前被髮展成跨平臺獨立的C++庫和一個ROS功能包。能滿足以下實際需求。

    在線處理:接收傳感器數據後,SLAM模塊的輸出應限制爲最大延遲。 特別是對於基於圖(graph)的SLAM,隨着地圖(map)的增長,需要更多的處理時間進行閉環檢測,優化graph和組合map。 此外,與用於控制,導航,避障,用戶交互,目標識別等的其他處理模塊的集成,還可能限制CPU對SLAM的計算力。 因此,儘可能限制計算負荷有利於避免SLAM系統與其他模塊的滯後問題,以防止不安全情況的產生。
    魯棒、低漂移的里程計:雖然閉環檢測可以修正大多數的里程計漂移,但是在真實環境中,機器人通常不能在map中準確定位自身,因爲它探索新的區域或者環境中沒有足夠的特徵。在這段時間內,里程計漂移應該儘可能地被減小以至於在定位準確之前能完成自主導航,避免錯誤的覆蓋已經建圖的區域(例如在房間的入口錯誤的添加了障礙物,使其成爲封閉空間)。當環境中有足夠的特徵時,使用相機和lidars等外部感知傳感器來估計里程可以非常準確,但如果只使用一種感知模式,當它們在環境中跟蹤的特徵不再可見時,就會出現問題,容易導致定位失敗。使用本體感覺(如車輪編碼器、慣性測量單元[IMU])和外部感覺傳感器的組合,將增強對里程計估計的魯棒性。
    魯棒的定位:當機器人重新訪問之前的位置(閉環檢測)時,SLAM方法必須有所識別,並且修正地圖。動態環境、光照變化、幾何形狀變化,甚至重複的環境都可能導致不正確的定位或定位失敗,因此,這種方法應該對錯誤(假陽性)具有魯棒性。
    實際地圖的生成和開發:主流導航算法都基於佔用柵格,因此發展能提供3D或2D佔有柵格來方便其他算法集成的SLAM方法是有益的。此外,當環境大部分是靜態的時候,更實際的做法是進行mapping session,然後切換到定位,設置內存使用情況,並節省建圖管理時間。
    multisession mapping(也稱爲綁架機器人或初始狀態問題):當一個機器人開始工作時,它不知道它相對於之前創建地圖的位置,這使得無人機不可能規劃一條路徑去往之前訪問過的位置。爲了避免機器人重置建圖過程,以及使用以前建過的地圖,multisession mapping允許SLAM方法在啓動時根據自己的參考去初始化一個新的map,然後當一個之前訪問過的位置出現時,兩個map之間的轉換被計算出來。這帶來的好處就是,避免了只有一小部分重映射或者一塊新的區域需要加進來的時候,機器人重映射整個環境。

由於SLAM方法的多樣性,在特定的平臺和場景中決定使用哪一種成了一個困難任務,因爲缺乏各種算法之間的對比分析。SLAM方法通常基於視覺(Fuentes‐Pacheco, Ruiz‐Ascencio, & Rendón‐Mancha, 2015),或者基於雷達(Thrun,2002),並且僅使用一個相機或者雷達在數據集上測試,很難有一個有意義的對比。尤其是算法只能離線運行或者缺少機器人平臺上所需的輸入格式時,情況變得更加困難。當前,在ROS中集成的視覺SLAM算法通常不在自主機器人上測試,只是通過手持傳感器的方法,這樣測試省去了一些SLAM之外的研究(路徑規劃,障礙規避等),但是,這同時也限制了各種SLAM方法的比較。

因此,自從RTAB-Map向解決實際問題發展,我們決定去擴展rtab的功,對比視覺和雷達SLAM配置解決機器人自主導航。rtab是一個閉環方法,以內存管理作爲核心,它獨立於所使用的里程計方法,這意味着它可以使用視覺、雷達甚至是車輪里程計。也就是rtab可以應用於視覺、雷達或者二者結合的方法,使在一個真實機器人上對比不用傳感器配置成爲可能。這篇論文描述了rtab庫的擴展版本,並陳述了與當前主流方法的使用情況對比,最後列出提綱,說明兩種範例在實際應用中的限制。
ROS上的主流SLAM算法
基於雷達的算法
Gmapping

在這裏插入圖片描述
基於粒子濾波方法並且有迴環檢測過程,是ROS默認的SLAM方法,廣泛應用於生成2D柵格地圖,地圖建好後,可以配合蒙特卡洛定位方法使用。
Hector

在這裏插入圖片描述
快速,低計算資源的建立2D柵格地圖,被證實在真實環境中產生很低的定位漂移,也可以加入IMU來估計機器人的3D位置,但是它不算一個完整的SLAM算法,因此沒有迴環檢測。同時,該算法不需要里程計,在沒有很多幾何約束的環境下效果受限。
ICP-Mapper

在這裏插入圖片描述
可以創建2D柵格地圖和點雲圖,和Hector相似,沒有閉環檢測。
Karto SLAM和Cartographer

在這裏插入圖片描述
都是基於圖的雷達SLAM方法,在mapping時,它們創建由圖中的約束連接的submap,當檢測到閉環時,submap的位置被重優化來修正誤差(由傳感器噪聲和掃描匹配的精度引起),與Hector不同的是,它們可以接收其他外置里程計,在低幾何複雜度的環境中,得到更魯棒的掃描匹配。
BLAM

在這裏插入圖片描述
基於圖的雷達SLAM方法,且僅支持3D雷達。當機器人出現在之前訪問過的位置時,通過scan matching局部地進行閉環檢測(全局優化效果一般)。
SegMatch

在這裏插入圖片描述
3D雷達閉環檢測,基於圖。閉環檢測通過匹配3D分割信息(車輛,建築,樹木等)。在這些方法中,僅SegMatch方法支持multisession或multirobot mapping。

在這裏插入圖片描述
視覺SLAM

關於視覺SLAM,有很多開源方法存在,但在機器人上使用起來並不容易。對於導航功能,爲了避免處理尺度不確定性問題,我們將綜述的範圍限制在能估計環境真實尺度的方法上(雙目相機、RGBD相機或者VIO)。
maplab和VINS-Mono

在這裏插入圖片描述
在這裏插入圖片描述
二者都是視覺-慣導,基於圖的視覺SLAM方法。maplab的工作流程分爲兩部分:
(1)僅使用VIO記錄開環數據;
(2)離線完成地圖管理(閉環檢測,圖優化,稠密建圖等)。

得到的視覺地圖可以在之後的定位模式中使用。相反,vins-mono的地圖管理進程是在線的,TSDF可以在GPU上實時計算來提供障礙規避和路徑規劃。爲了保持大尺度環境的處理時間,vins-mono限制了graph的尺寸,首先移除沒有閉環的節點,然後根據graph的稠密度移除其他節點。
ORB-SLAM2和雙目PTAM

在這裏插入圖片描述
這兩個算法是目前視覺SLAM中的state-of-the-art。二者都是基於圖的算法,閉環基於DBoW2,map優化使用BA。在單獨的線程中對閉環後的graph進行優化,以避免影響相機跟蹤幀率性能。 對於ProSLAM,通過直接比較map中的描述子來檢測循環閉包,而不是使用詞袋的方法。閉環檢測和圖優化進程的耗時隨着map的增長會產生明顯延遲,並且map是稀疏特徵,沒有佔用柵格和稠密地圖,因此很難用在實際平臺上。
DVO-SLAM RGBiD-SLAM

在這裏插入圖片描述
估計運動時不使用特徵(feature)而是使用所有像素的光度和深度誤差。DVO沒有閉環檢測,大尺度建圖劣勢。
ElasticFusion

在這裏插入圖片描述
可以在線重建surfel-based地圖,需要GPU提供計算力。建圖比較精細,但是不支持ROS。

之前提出的SLAM方法假設相機從未被遮擋,或者圖像中一直有足夠多的特徵。這兩個假設在實際飛行中不可能一直滿足,以下兩種方法在實際中的魯棒性更好一些:
(1)多相機PTAM:使用多個相機來增大FOV,至少一個相機感知到視覺特徵,該方法就可以完成位置追蹤。
(2)RGBDSLAMV2:
在這裏插入圖片描述
多種傳感器的里程計信息融合(通過EKF),同時生成稠密地圖和3D佔用柵格地圖。

表1對SLAM算法進行了總結,文字描述省略。
在這裏插入圖片描述
RTAB-Map描述

rtab基於graph,流程如圖1所示。
在這裏插入圖片描述
這個流程圖是一個標準的基於圖的SLAM架構,傳感器信息經過時間對準之後,進入STM模塊,然後進行前端處理(和VO那套差不多),後端進行圖優化和全局地圖維護。論文中提到一個參數“rtabmap/DetectionRate”,原文“according to how much data created from nodes should overlap each other”,根據從節點創建的數據應該彼此重疊多少(翻譯的感覺很怪)。但是舉了一個例子:當機器人運動快並且相機視場小的時候,這個值應該被提高,來保證連續節點的數據有重疊,但是設置太大會佔用內存和耗費時間。link(鏈接)包含了兩個節點之間的剛性變換(rigid transform),在這裏有三種鏈接:鄰居,閉環,相似。“鄰居”連接是在STM裏面通過odom轉換建立的,“閉環”和“相似”也是通過閉環檢測和相似性檢測實現的。這些連接都用作圖優化的約束條件。當一個新閉環或者相似產生時,圖優化將計算誤差傳播到全圖來減小里程計漂移。伴隨着優化過程,Octomap,點雲,2D柵格地圖都在被全局更新。
對於SLAM的常規操作就不多說了,接下來說rtab比較有特點的內存管理方法(Labbé & Michaud,2013)。
在這裏插入圖片描述
爲了防止地圖變大帶來的問題,rtab的內存被分成工作內存(WM)和長期內存(LTM),當一個節點被分到LTM中後,WM的流程對其不再起作用。當rtab的更新時間超過固定閾值“Rtabmap/TimeThr”,在WM的節點會被轉換成LTM中來限制WM的size。同樣,還有一個閾值“Rtabmap/MemoryThr”,可以設置WM中最大保持的節點數。

爲了決定哪個節點被分到LTS中,一個權重機制決定了“哪個位置”更重要,使用一種啓發式的方法:一個位置被觀測的越長,它越重要,就應該放在WM中。 因此,當一個新的節點到來時,初始化它的權重爲0,並且與上一個節點進行可視化比較(我感覺計算一個相似度的意思),如果它們很相似(對應的視覺單詞超過相似閾值“Mem/RehearsalSimilarity“),新節點的權重等於舊節點權重加上1,同時將舊的節點權重置爲零(我覺得就是一個權重傳遞過程),如果機器人沒有移動,直接將舊的節點刪除避免擴大graph的size。當時間或者內存滿了,優先將權重最低的舊節點放到LTM裏面。
在這裏插入圖片描述
當WM的一個位置發生閉環檢測時,這個position的相鄰節點(neighbor nodes)會被從LTM調回WM,當機器人在之前到過的地方移動時,它可以增量地記住過去的位置以擴展當前map並使用過去的位置進行定位。
里程計節點(Odometry node)

里程計節點可以使用任何一種簡單的里程計方式(車輪、IMU、單相機、單雷達)。獨立於使用的傳感器,里程計爲rtab提供至少一種位姿估計信息,以odometry message形式配合tf使用(例如/odom to /base_link),當本體傳感器不準確時,視覺和雷達傳感器是必需的。視覺里程計方面,rtab應用了兩種標準的里程計方法,Frame-to-Map(F2M)和Frame-to-Frame(F2F)。
在這裏插入圖片描述
F2M就是當前幀和一張特徵圖進行關聯,當然特徵圖有之前很多幀圖像的特徵(有用的、顯著的)。F2F就是當前幀和上一幀進行關聯。雷達傳感器的scan-to-scan和scan-to-map同理於視覺(雷達的point cloud可以認爲和視覺的3D visual features在前端等價)。
視覺里程計

貼個大圖,很清晰的結構,有slam基礎的看起來應該很輕鬆。

    1

在這裏插入圖片描述

    特徵檢測(feature detection)
    當一個新的frame被捕獲時,GoodFeatureToTrack(GFTT)特徵被檢測,最大數量由”Vis/MaxFeatures“參數給出。rtab支持opencv中的所有特徵。雙目相機根據光流法來計算左右圖像的特徵視差,rgb-d相機的深度圖作爲GFTT的mask,避免了提取深度無效的特徵。
    在這裏插入圖片描述
    特徵匹配(feature matching)
    特徵匹配使用的是最近鄰搜索(nearest neighbor search),引入BRIEF描述子。將當前幀的圖像特徵和特徵圖中的圖像特徵基於描述子進行操作。特徵圖包含帶有來自最近幾個關鍵幀的描述子的3D特徵。對於F2F,光流直接作用在GFTT特徵上,而不用提取描述子,這樣提供更快的關鍵幀特徵對應。
    在這裏插入圖片描述
    運動預測(motion prediction)
    運動預測是來預測key frame或者feature map的特徵應該出現在當前幀的什麼位置上,根據是之前的運動轉換(類似於狀態方程)。這可以限制feature matching過程中的搜索窗口來提供更好的匹配,尤其是在動態環境和重複的紋理特徵。搜索窗口半徑由”Vis/CorGuessWinSize“給出,該過程中,一個恆定的速度運動模型被使用。

在這裏插入圖片描述

    運動估計(motion estimation)
    當相關性被計算出來之後,PnP RANSAC等算法被用來計算當前幀的轉換,基於F2F和F2M的特徵點。inliers的最小值”vis/mininliers“作爲接受轉換結果的條件。

在這裏插入圖片描述

    局部BA優化
    轉換結果通過對特徵使用局部BA方法進行修正。在F2M模式下是將轉換結果基於所有關鍵幀的特徵上做優化,F2F只能基於上一幀的特徵點。
    在這裏插入圖片描述
    位姿更新(pose update)
    結合估計的轉換,里程計輸出被更新,/odom to /base_link。
    在這裏插入圖片描述
    關鍵幀和特徵圖更新(key frame and feature map update)
    如果運動估計過程中inliers的數量低於固定閾值“odom/keyframethr”,則關鍵幀或者特徵地圖被更新(這個閾值來衡量當前幀的信息是否豐富)。對於F2F,關鍵幀被當前幀代替,對於F2M,特徵地圖被更新(添加了新frame中沒有匹配的特徵),並且更新之前匹配過的特徵點(經過BA優化後)的位置。當特徵地圖的size大於閾值之後,採取一些措施來維護特徵地圖,比如丟棄沒有和當前幀匹配上的oldest特徵。
    在這裏插入圖片描述
    在這裏插入圖片描述
    如果當前相機的運動和預測值相差很多時,可能是沒有找到一個有效的transformation,這時特徵會再次匹配但是不伴隨於運動預測。
    (1)對於F2M,當前幀的特徵會和特徵地圖的所有特徵進行對比,然後會計算得到另一個transformation。
    (2)對於F2F,爲了提高無效結果出現時的系統魯棒性,特徵匹配使用NNDR而不是光流,然後提取BRIEF描述子。
    如果transformation還是沒用被計算出,里程計被認爲已經丟失(之前是里程計可能丟失),並且下一幀圖像會在沒有運動預測的情況下進行對比(也許是重新初始化?)。此時里程計輸出的位姿會被設置爲null且方差很大,這是里程計失效的信息會被模塊訂閱到。
    在這裏插入圖片描述
    rtab的里程計是獨立於mapping過程的,因此其他的視覺里程計可以被集成在rtab中,並且方便不同里程計之間的比較。rtab繼承了七種方法:(1)fast visual odometry(2)Viso2(3)DVO(4)OKVIS(5)ORB-SLAM2(6)MSCKF(7)Google Project Tango。12346五種方法都是vo或者vio可以直接將里程計輸出給rtab系統。
    在這裏插入圖片描述
    ORB-SLAM2是一個完整的SLAM方法,集成在rtab中時,ORB的閉環檢測不能使用,但是ORB的局部BA優化依然工作,使得修改之後的模塊與F2M相似。大的區別是被提取特徵的種類(ORB)和匹配它們的方法(直接描述符比較而不是NNDR,之前說到rtab的F2M的特徵匹配方法是NNDR,orb原始框架也是基於NNDR)。 orb-slam2沒有維護特徵地圖的大小,在集成orb到rtab時,彌補了orb本身的這個不足(保證實時性)。
    爲了集成google project tango到rtab庫,area learning特徵被禁用,而是直接使用它的vio。

雷達里程計

先放一張雷達里程計的流程圖

    1

在這裏插入圖片描述
使用類似於視覺里程錶的術語,關鍵幀指的是點雲(point cloud,3D雷達)或激光掃描(laser scan,2D雷達)。當機器人在scan過程中移動時,激光掃描會產生一些運動畸變(motion distortions),這裏假定在將掃描提供給RTAB‐Map之前糾正了這種畸變。注意:如果激光掃描儀的旋轉頻率相對於機器人速度較高,激光掃描的運動畸變非常小,因此可以忽略校正,而不會顯著降低配準精度。(我覺得北洋的雷達好像不進行畸變校準就挺好用的,包括之前cartographer上的測試)。

    點雲濾波
    對輸入的點雲進行降採樣運算並計算法線,利用tf信息將點雲轉換到機器人的基礎幀。
    ICP registration
    register(登記?處理?融合?添加?)新的點雲信息到點雲圖(S2M,和視覺中的特徵圖一樣)或者上個關鍵幀(S2S),迭代最近點(ICP)是通過使用Libpointmatcher完成的。點雲地圖(point cloud map)是由過去的關鍵幀組成的,registration可以由點到點(point-to-point)或點到平面(point-to-plan)對應來實現。在有很多平面時優先選擇P2N。
    運動預測
    由於ICP處理的是未知的對應關係,因此該模塊在估計變換前需要一個有效的運動預測,無論是以前的配準方法還是通過TF外部測程方法。當機器人在有兩面平行牆壁的環境會出現一些問題,因爲沿着兩條平行線中間移動的時候獲得的點雲信息沒什麼變化。或者當室外很空曠的時候,雷達多數量測失效這時需要加入外部里程計(IMU)來估計運動。然後如何定義環境複雜度,論文中給出了一點說明,但是我沒有仔細瞭解。
    位姿更新
    register成功後,里程計位姿將被更新。當使用外部里程計被使用時,tf輸出是對外部里程計tf的修正,使兩種變換可以位於同一tf樹中(odom_icp->odom->base_link)。
    關鍵幀和點雲圖更新
    判斷關鍵幀是根據一個相關性閾值決定,在S2S中,當前幀直接變成關鍵幀,但是在S2M中,當前幀要經過和原map融合的過程,添加新信息,刪除舊信息(維護一個固定大小的地圖)。

如果ICP找不到轉換,里程計就會丟失。與視覺里程計不同,當運動預測爲零時,激光雷達測程無法從丟失中恢復。爲了避免了較大的測程誤差,然後必須重置激光雷達測程。然而,只要激光雷達能夠感知環境結構,機器人就很少會迷路。注意,如果使用外部里程計,運動預測仍然會給出一個有效的估計,因此,如果機器人回到丟失跟蹤的位置,ICP配準可以從丟失中恢復。
Synchronization(同步)

傳感器種類多了之後涉及到ROS環境中的時鐘同步問題,沒太細看。不過這部分按照說明進行配置,使用起來效果還不錯,畢竟都是常用的傳感器和ros包。
STM(short-term memory)

第一段說明當新節點在STM裏生成時,會得到一個局部佔用柵格(local occupancy grid),基於地圖的圖位姿(pose of the map‘s graph)能把局部的柵格圖拼成全局的,並且經過優化後的graph對建立全局柵格圖很有幫助。
第二段說明了根據傳感器的不同格式可以生成不同的柵格地圖,簡單說就是2D數據只能生成2D柵格,3D數據可以生成2D或者3D。
loop closure(visual)and proximity detection (laser)

閉環檢測是基於2013年提出的基於詞袋(bag-of-words)方法,STM提取新節點的視覺特徵,並將它們量化爲一個遞增的視覺單詞詞彙表。特徵可以用opencv中的SURF,SIFT,ORB等表示。當視覺里程計F2F或F2M被使用時,我們可以使用里程計中提取出來的特徵來進行閉環檢測。這節省了提取兩次特徵的時間。閉環檢測需要的特徵不需要想里程計中那麼多,因此只需要之前特徵集合的一個子集(典型特徵組成的子集)來完成閉環檢測。新建立的node和WM(work memory保留着整個過程中重要的nodes)中的nodes進行比較來檢測閉環,STM裏面的nodes都是最近才加入map的,因此這些節點不會用來去進行閉環檢測。STM可以作爲一個buffer在節點被移動至WM中,爲了計算新節點和WM中所有節點的相似性(likelihood),Tf-IDF方法被使用去建立一個貝葉斯濾波器估計閉環假設。
在這裏插入圖片描述
如果閉環檢測滿足閉環條件,此時有里程計解算出來的轉換關係就可以作爲一個新的link加到graph中。
2017年提出的proximity detection是基於雷達scan來定位接近當前位置的nodes。 舉例:在以不同的方向穿越長廊時,相機沒法找到閉環,這時proximity detection就有幫助了。閉環檢測的複雜度取決於WM的size,proximity detection的複雜度取決於靠近機器人的nodes數量。這些nodes在graph中必須很靠近(機器人運動增量很小),也就是說,這些nodes和最新node的連接(links)數必須小於一個閾值(原因綠色部分有說明)。
這段主要說明了視覺和雷達在SLAM後端過程的兩種策略。
在這裏插入圖片描述
圖優化

閉環檢測和近似檢測之後,圖優化方法開始最小化map中的誤差(errors)。rtab集成了三種圖優化方法(1)TORO(2)G2O(3)GTSAM,(2)和(3)比(1)快,但是魯棒性略差。但是經驗表明,在6DoF的maps中G2O和GTSAM效果更好。
在這裏插入圖片描述
視覺閉環檢測不是完全準確的,在相似的地方會觸發無效的閉環檢測,這反倒增加了map中的誤差。爲了檢測到這些無效的處理,rtab使用了一個新參數,如果經過優化後,link的轉換改變大於平移方差的一個因子“RGBD/optimizemaxerror”(假設兩個節點理論上的link距離分佈爲N(0.5,0.2),而結果得到了2,明顯就是優化錯誤。),所有基於新節點的閉環檢測結果都被reject,保持閉環檢測之前的graph。
全局地圖組裝

在局部柵格地圖信息上先“拼成”全局地圖,然後根據後端優化結果對map進行修正。然後map發佈在ros標準格式(sensor_msgs/pointcloud2)上。方便其他算法的開發和調試。
不同傳感器的軌跡性能評估

數據集
RTAB的視覺和雷達配置的計算性能評估

數據集
Discussion

感覺這部分的總結都比較常規,簡單說一些結論:
(1)室內導航,雙目精度高,但是更推薦RGBD相機,因爲可以檢測到紋理特徵少的表面來規避障礙。如果室內有玻璃等反射物品,視覺不再安全。
(2)多相機模式能增大FOV,但是有標定和計算載荷問題,對於2D環境使用有點冗餘。
(3)對於無人機的3D導航,多相機模式比3D雷達模式在成本上更有優勢。
舉例子也沒有舉無人機應用的例子……
————————————————
版權聲明:本文爲CSDN博主「dckwin」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_38649880/article/details/90666446

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章