激光SLAM论文简单导读--LOAM、VLOAM、LeGO-LOAM、LIO-SAM、LVI-SAM、LIMO、LIC-FUSION、TVL-SLAM、R2LIVE、R3LIVE
激光SLAM論文簡單導讀--LOAM、VLOAM、LeGO-LOAM、LIO-SAM、LVI-SAM、LIMO、LIC-FUSION、TVL-SLAM、R2LIVE、R3LIVE
- 時間線
- 開篇巨作LOAM (張輯,RSS 2014, CMU)
- 算法框圖
- LIDAR ODOMETRY
- LIDAR MAPPING
- 思考
- 激光視覺里程計VLOAM(張輯,ICRA2015, CMU)
- 視覺里程計
- 雷達里程計
- 激光-視覺-慣性里程計(張輯,JFR2018, CMU)
- IMU預測子系統
- VIO子系統
- lidar 匹配子系統
- 傳感器退化
- 基于給定地圖的定位
- 結果對比
- LeGO-LOAM:利用地面和平面聚類進行優化(Tixiao Shan, 2018, Stevens Institute of Technology)
- 分割與特征提取
- Lidar Odometry
- Lidar Mapping
- 緊耦合IMU的激光慣性里程計--LIO SAM (Tixiao Shan, 2020,MIT)
- IMU預積分約束
- 雷達里程計約束
- GPS因子和回環因子
- LVI-SAM: 在LIO-SAM的基礎上融合視覺(Tixiao Shan, 2021,MIT)
- LIC-FUSION: 基于MSCKF框架的雷達-慣性-視覺融合 (左星星, 2019, 浙大)
- 系統介紹
- LIC-FUSION2.0:在LIC-FUSION的基礎上添加滑窗和平面跟蹤算法(左星星,IROS2020,浙大/ETH)
- LIMO:激光單目視覺里程計(Johannes Graeter,Karlsruhe Institute of Technology,IROS2018)
- PL-LVO:基于點線特征的激光視覺里程計(Shi-Sheng Huang,IROS2020,清華)
- R2LIVE:激光-視覺-IMU緊耦合的狀態估計器(lin jiarong, 港大, 2021)
- R3LIVE:雷達慣性和視覺慣性里程計的融合(lin jiarong, 港大, 2022)
- SVIL-SLAM:雙目視覺慣性雷達SLAM(Weizhao Shao, CMU,IROS2019)
- TVL-SLAM:緊耦合視覺-雷達SLAM
- 激光與視覺之間的輔助
- 融合方法
本博客以簡述為主,不打算細講論文細節,給出了相關詳細導讀的鏈接,歡迎溝通交流。
時間線
開篇巨作LOAM (張輯,RSS 2014, CMU)
LOAM是該方向的開山鼻祖,其主要的貢獻在于使用前端里程計和后端建圖優化兩個線程(可能借鑒了視覺SLAM思想?),實現一個高精度激光SLAM系統, 該系統實際實驗中采用的硬件是一個平面激光雷達加一個旋轉軸,也取得優異的結果。
困難點:激光數據接收時間不同,運動導致的畸變很明顯嚴重, 不利于后續的定位建圖。
解決辦法:采用兩個線程(前端frame-frame里程計 + 后端frame-map優化)進行定位建圖任務。
算法框圖
論文對于激光雷達數據,定義了兩個不同的術語:scan和sweep,依據論文,個人理解為前者為平面激光雷達繞本體旋轉軸一周形成的點云,頻率為10hz,該頻率和平面激光雷達的旋轉頻率是一致的, 后者則是指激光雷達繞外面的軸旋轉一個周期(180度)的點云,為1hz,相當于10scans的合成(而不是現在常用的那種昂貴的3D激光雷達)。流程圖中,p^\widehat{p}p?代表一個scan的點云,pkp_kpk?代表一個sweep的點云。每一個scan結束都會進行一次Lidar Odometry, 每一次sweep結束才進行一次Lidar Mapping。
LIDAR ODOMETRY
特征提取: 設計下列公式計算一個度量值,用于判斷每個點屬于平面點或者線段點。注意該過程從每個獨立的scan中提取特征(原因可能是由于傳感器限制)。
在該度量中,c值較大的為edge point, c值較小的為planar point。此外還有一些工程策略,使得選擇的特征分布均勻且可靠。
特征數據關聯:采用frame-frame的思想尋找當前幀相對上一幀的匹配, 注意當前幀是隨著時間在增長的,采用最近匹配方法尋找點-線和點-面匹配,最后通過最小化他們之間的距離來優化位姿。
整個里程計端的算法如下:
LIDAR MAPPING
后端mapping采用sweep-local map的方式進行,當前端一個sweep結束時,即啟動該過程。
在k+1 sweep結束時,里程計模塊生成了一個去畸變后的點云pˉk+1\bar{p}_{k+1}pˉ?k+1?, 該sweep [tk+1t_{k+1}tk+1?, tk+2t_{k+2}tk+2?]內的位姿變換Tk+1LT_{k+1}^LTk+1L?,mapping階段將該點云pˉk+1\bar{p}_{k+1}pˉ?k+1?匹配和注冊到世界系下。
Mapping階段的匹配和位姿估計流程和Odometry階段類似,但做了一些參數上的適應和工程上的優化。這一階段在當前sweep特征提取的數量是Odometry階段的10倍,然后根據位姿變換將其投影到世界系,再利用最近匹配方法尋找匹配,不同的地方在于, 尋找匹配線和面時是采用先求點云周圍協方差,然后進行特征值分解的方法。對于邊緣點,特征值的某一個值會遠遠大于另外兩個值;而對于面點,兩個特征值會遠遠大于另一個值。最后也是通過最小化點-線、點-面距離來估計位姿。
思考
- 為何如此提取點線特征?點線特征在整個位姿估計中的作用分別是?論文缺乏對應的消融實驗(包括特征提取涉及到的工程化手段帶來的好處沒有實驗支撐)
- 采用現在的3D激光雷達以后,這種特征提取方法是否可以進行優化?
激光視覺里程計VLOAM(張輯,ICRA2015, CMU)
算法簡介:先利用視覺里程計估計位姿,并將雷達點云數據進行高頻率低精度注冊,然后基于雷達里程計的scan匹配同時優化運動估計和點云注冊。相較LOAM而言,利用更高頻率的視覺里程計提高點云去畸變和匹配的效果,進而提高算法精度。位姿估計過程并沒用到視覺特征,是一個典型的視覺輔助激光的方案。算法的流程圖如下:
視覺里程計
視覺里程計模塊,利用視覺特征做幀-幀之間的快速相對位姿估計,從雷達數據中獲取部分視覺特征點的深度值。
雷達里程計
雷達里程計由兩階段組成: sweep-sweep優化運動估計 + sweep-map在地圖上匹配和注冊當前sweep。該過程與LOAM的很類似,可看作是LOAM的odometry和mapping的結合,不同之處在于操作對象都是sweep,而不是scan。最后結合視覺里程計,可以輸出與視覺相同頻率的位姿。
從整體來看,視覺的作用主要是用于點云去畸變和提供后續點云匹配時的初始位姿,而最終的位姿估計并沒用上視覺信息,在KITTI上的表現比LOAM好一丟丟。
激光-視覺-慣性里程計(張輯,JFR2018, CMU)
常見的激光視覺慣性里程計采用卡爾曼濾波或者因子圖優化的方法,但作者觀察到,本體位姿估計的漂移頻率遠遠低于模塊自身的運行頻率,因此采用從粗到細的流水線pipeline,該方法采用一種模塊化的數據處理流程用于處理圖像、imu和雷達數據,并通過多層次的優化來進行運動估計和建圖, 該流程如下圖所示
主要貢獻如下:
- We propose a modularized data processing pipeline to leverage range, vision, and inertial sensing for motion estimation and mapping through mulilayer optimization. Therefore, it achieves high accuracy and low drift.提出一種模塊化的數據處理流程,利用雷達、視覺和慣性數據進行基于多層次優化的運動估計和建圖;
- The proposed pipeline is dynamically reconfigurable. It fully or partially bypasses failure modules and combines the rest of the pipeline to handle sensor degradation. Therefore, it can handle environmental degradation and aggressive motion. 所提方法具有動態自適應,可以應對傳感器退化的情況;
- The proposed pipeline employs a two‐level voxel representation and a multithread processing implementation to accelerate scan matching.所提流程采用兩層次的體素表征方法來描述地圖,并采用多線程加速匹配;
- The proposed pipeline is extendable to localization on an existing map and therefore can enable collaborative mapping, for example, between ground and air。所提流程被擴展到基于給定地圖的定位,因此也可用于協同建圖。
這個算法可分為四個子系統:IMU預測子系統, VIO子系統和雷達匹配子系統。
IMU預測子系統
這一部分主要涉及相機系下(此處與常用的IMU系下的測量模型不同)的IMU測量模型和bias更新。
VIO子系統
VIO子系統主要借鑒作者之前的工作《Real‐time depth enhanced monocular odometry》,流程如下:
該系統是一個基于關鍵幀和特征點的VIO,不同之處在于只估計位姿,不估計特征點位置,這是因為從雷達獲取的深度值足夠準確。
lidar 匹配子系統
該子系統主要參考了作者之前的工作LOAM,參考其中的sweep-map匹配過程,整個子系統的流程如下:
此外還利用voxel對Map進行存儲和多線程技術,以加速該匹配過程。
傳感器退化
本方法可以有效應對傳感器退化問題
基于給定地圖的定位
整體流程與里程計流程一致,不同點在于雷達匹配階段匹配的是給定地圖,而且是一段時間(2s)內累積的lidar scan與給定地圖進行匹配(降低算力考慮)。
結果對比
其中One-step方法的pipeline如下:
LeGO-LOAM:利用地面和平面聚類進行優化(Tixiao Shan, 2018, Stevens Institute of Technology)
LOAM的限制:計算資源較大, 低算力平臺難以滿足,因為它需要計算稠密三維點云的每一個點特征;當應用與地面無人車時,地面及其附近元素引起的噪聲將一直影響算法。
解決辦法:針對地面附近元素帶來的干擾,提出使用地面分割的方法以提高對地面附近不穩定元素的適應性;針對算力問題,提出使用兩階段優化法來估計位姿:首先利用地面來估計[tzt_ztz?, θroll\theta_{roll}θroll?, θpitch\theta_{pitch}θpitch?],然后利用剩下部分的邊緣點元素來估計其余的[txt_xtx?, tyt_yty?, θyaw\theta_{yaw}θyaw?],使得整個系統可以在嵌入式平臺上面實時運行。
整個算法流程框圖如下:
分割與特征提取
采用傳統的幾何和圖像處理方法對激光點云進行分割,以提取地面。特征提取與LOAM的一致,最終只保留使用屬于地面部分的平面點和其他部分的邊緣點,點云示意如下:
Lidar Odometry
與LOAM的機制一樣,采用幀-幀之間的點-線和點-面匹配來估計雷達里程計。不同之處在于,該方法只對屬于地面的平面點和非地面點的邊緣點進行匹配,且在匹配過程中利用了分割的類別信息以篩出錯誤的匹配。然后采用兩階段的L-M優化法來估計位姿:首先最小化地平面點到地面的距離來估計[tzt_ztz?, θroll\theta_{roll}θroll?, θpitch\theta_{pitch}θpitch?],然后利用剩下部分的邊緣點元素來估計其余的[txt_xtx?, tyt_yty?, θyaw\theta_{yaw}θyaw?]。兩步優化法可在算力減小35%的情況下獲得同樣的精度。
Lidar Mapping
該階段與LOAM的一致,主要不同處在于地圖的存儲方式:LOAM存儲單個點云地圖,本方法則存儲單個的特征集合。同時改方法還可在回環后使用Pose Graph以糾正漂移。
緊耦合IMU的激光慣性里程計–LIO SAM (Tixiao Shan, 2020,MIT)
LOAM的局限:難以回環,難以融合其他傳感器,特征豐富區域時難以在線優化,大范圍場景中會有漂移。為此提出一種采用因子圖+滑窗+緊耦合lidar融合IMU的方法,該融合思路與VINS 和相似。
整個因子圖中包含四種因子約束:lidar odometry、IMU預積分、GPS和回環約束。
IMU預積分約束
該約束和VINS中的一樣,具體可參考On-Manifold Preintegration for Real-Time Visual-Inertial Odometry 和 VINS
雷達里程計約束
采用關鍵幀思想,每隔一段距離或角度則選擇一個關鍵幀。在關鍵幀中提取平面和邊緣線的點特征,歷史最新的n幀合成sub-keyframes,將其中的特征變換到世界系下形成local voxel map。 特征的匹配采用LOAM的緊鄰匹配方法,將幀經過變換與其之前的local voxel map進行匹配,該幀的初始位姿由IMU積分得到
GPS因子和回環因子
GPS因子可以提供一個全局絕對約束,可減少漂移, 回環因子則與視覺中的回環基本一樣, 實驗表明回環可以極大地改進高度方向的估計漂移問題。
LVI-SAM: 在LIO-SAM的基礎上融合視覺(Tixiao Shan, 2021,MIT)
該方法是LIS與VIS的集成,且兩者之間又互相促進,其中VIS為LIS提供初始位姿估計,支持后者的匹配,LIS則為VIS提供更好的初始化和特征深度值,利用VIS做回環檢測,利用LIS進行之后的回環校驗。這兩個系統只要有一個正常,整個系統就可以正常運行,展示了很好的系統魯棒性。
VIS系統借鑒使用了VINS-MONO,但利用了Lidar數據輔助初始化,并給特征值賦予深度值。
LIS系統則利用LIO-SAM。
簡言之,LVI-SAM = VINS-Mono + LIO-SAM + 視覺與激光之間的輔助。
LIC-FUSION: 基于MSCKF框架的雷達-慣性-視覺融合 (左星星, 2019, 浙大)
主要貢獻:提出一種在MSCKF框架上的雷達-慣性-視覺里程計,同時具有傳感器外參標定功能。熟悉MSCKF的就懂,下面會涉及一大堆的數學推倒。
系統介紹
A,系統狀態量
系統狀態量包括IMU系的位姿、速度和bias;相機、激光雷達的外參;相機、雷達的位姿。
B,IMU遞推(運動學)
該部分是常用的IMU運動學
C,狀態增廣
每當收到新的圖像或者雷達數據,IMU就會根據運動學對系統狀態進行推算,該過程既是EKF中的狀態預測,獲得新時刻下的狀態及其協方差矩陣。
D, 測量模型
-
雷達特征測量
參考LOAM的思路,在雷達幀上提取線和面上的點特征,采用最近了匹配的方式實現特征跟蹤,可得到線上的點特征殘差(點-線距離)為:
上述殘差在推算位姿處線性化:
為了進行狀態更新, 需要知道上述殘差的協方差CrC_rCr?:
該協方差矩陣取決于傳感器測量噪聲。對于面上的點特征,可采用相同的流程處理。 -
視覺特征測量
與MSCKF的一致, 提取FAST交點, 光流跟蹤, 殘差為重投影誤差, 采用零空間投影,只估計sliding window內的位姿,不估計特征點位置。
E, 測量壓縮
殘差在新位姿處線性化后的方程可提煉為
為降低計算量,對線性化矩陣HXH_XHX?進行QR分解:
有了上述協方差矩陣、預測位姿和協方差和線性化后的殘差等,即可采用標準的EKF流程更新得到新的狀態及協方差。
LIC-FUSION2.0:在LIC-FUSION的基礎上添加滑窗和平面跟蹤算法(左星星,IROS2020,浙大/ETH)
參考師兄大佬的論文導讀
主要內容是在MSCKF和OpenVINS框架中加入激光測量信息,借鑒了視覺SLAM的pipeline,提出了一種新的激光-慣性-視覺里程計:LIC-Fusion2。它的前身是LIC-Fusion,在此基礎上加入了如下特性:
- 將激光平面特征的跟蹤從相鄰兩幀擴展到滑動窗口中的多幀中,并提出一種先進的用于改進平面跟蹤的外點去除方法;
- 在狀態變量中加入激光平面特征。同時估計滑窗中的傳感器位姿,視覺特征點和激光平面。
該方法采用LOAM的方法提取平面點,并用平面點擬合得到平面,該版本并沒用到LOAM中的邊點特征,但在future work中提到會研究基于邊緣特征的跟蹤。
LIMO:激光單目視覺里程計(Johannes Graeter,Karlsruhe Institute of Technology,IROS2018)
詳情的論文導讀可以參考師兄的博客【論文閱讀41】LIMO: LiDAR-Monocular Visual Odometry
本方法是一個典型的激光輔助視覺的SLAM方法,主要貢獻思想是提出了一種基于LiDAR點云的視覺特征點深度估計方法,如下流程所示,該方法被用于后續的多種視覺-雷達融合方案所借鑒。同時針對關鍵幀選擇,特征點選擇等工程優化方面提出許多策略。思路簡單,但取得的效果很好。
從雷達數據中獲取特征點深度距離的方法:
1)首先尋找該特征點周圍的矩形框內的激光點。
2)然后對這些激光點按照深度進行劃分。
3)尋找最靠近該特征點的深度區間的點云,擬合平面。
4)我們認為該特征點位于該平面上,根據光心和特征點的連線與平面的交點記為該特征點的深度。
5)檢測估計深度的準確性:光心和特征點連線與平面的夾角必須小于某個閾值;拒絕深度高于30m的特征點以防外點。
PL-LVO:基于點線特征的激光視覺里程計(Shi-Sheng Huang,IROS2020,清華)
利用點線特征的激光雷達-視覺里程計,詳細論文解讀可參考https://zhuanlan.zhihu.com/p/153264331
該方法是一個典型的激光輔助視覺的里程計方案,從視覺圖像中提取點線特征,而后從激光數據中獲得點線的深度距離信息,用于恢復尺度和執行后續的ICP位姿估計。
R2LIVE:激光-視覺-IMU緊耦合的狀態估計器(lin jiarong, 港大, 2021)
主要貢獻:
- 我們以緊耦合的方式融合了激光雷達、慣導、視覺的數據,實驗證明我們的方法可以魯邦處理包括劇烈運動、傳感器退化、甚至是有很多移動物體的隧道場景,包括激光雷達只有很小FoV的場景。
- 我們提出的框架包括一個高頻運行的基于濾波方法的里程計模塊,和一個低頻運行的基于因子圖的優化模塊。里程計模塊以一個kalman濾波器迭代融合雷達、慣導、視覺傳感器,取得了實時的狀態估計。因子圖優化模塊進一步優化滑窗內的各傳感器位姿和視覺地圖點位置。
流程圖:
該方法由一個基于誤差的迭代卡爾曼濾波器和一個基于因子圖的圖優化模塊組成。
迭代卡爾曼濾波器采用標準的卡爾曼流程,IMU作為預測,激光雷達或者視覺作為觀測。滑窗優化則借鑒了VINS-Mono的方法,該因子圖如下圖所示,其中雷達幀位姿和和激光雷達特征在滑窗中保持不變。
R3LIVE:雷達慣性和視覺慣性里程計的融合(lin jiarong, 港大, 2022)
該方法包含兩個子系統:激光雷達-慣性里程計 (LIO) 和視覺-慣性里程計 (VIO)。其中LIO (FAST-LIO) 利用 LiDAR和慣性傳感器的測量數據構建全局地圖幾何結構(3D 點云位置);VIO 利用視覺-慣性傳感器的數據來渲染地圖紋理(3D 點云顏色),同時VIO 還通過最小化幀到地圖的光度誤差來直接、有效地融合視覺數據。
主要貢獻:
- 提出了一個融合框架,包含定位建圖和上色,框架里包含一個LIO模塊和一個VIO模塊,整個系統可以實時的重建密集3D彩色環境。
- 基于彩色RGB點云提出了一個新的VIO系統,通過最小化三維地圖點顏色和該三維點在當前圖像幀中的顏色的光度誤差,避免了提取突出的視覺特征點的需求,提升了運行速度,并且使得這個VIO對于無紋理環境更加魯棒。
從系統處理流程來看,該方案是一個松耦合融合激光雷達和視覺的方法。
SVIL-SLAM:雙目視覺慣性雷達SLAM(Weizhao Shao, CMU,IROS2019)
詳細論文解讀可參考:【論文閱讀16】Stereo Visual Inertial LiDAR SLAM
雙目視覺里程計采用的是,采用光流跟蹤、滑窗和邊緣化思想,類似雙目VINS。
雷達建圖部分有借鑒LOAM的思路,通過最小化點-線和點-面特征來進行基于雷達的定位建圖,使用高頻的VIO位姿提供初始位姿進行幀圖匹配和點云去畸變。同時,雷達數據被用于回環時提供ICP匹配來提高回環檢測的準確率。
TVL-SLAM:緊耦合視覺-雷達SLAM
不同于之前的視覺雷達slam,將視覺的結果作為雷達的初始值,或者雷達給視覺提供深度測量值,本方法采用BA的方法在后端同時優化視覺殘差和雷達殘差。為了實現大規模的BA優化,本方法借鑒使用ORB_SLAM2和LOAM,關注后端準確而有效的雷達殘差壓縮。本方法主要貢獻如下:
- 視覺和雷達測量都被用于運動估計,利用視覺和雷達運動的交叉校驗來去除外點,克服視覺或者雷達退化的情況,在但傳感器退化的情況下獲得了相較獨立視覺或者雷達方法更高的精度。
- 視覺和雷達的回環檢測在閉環階段被聯合使用以確保高精度。為了提升計算效率,我們提出通用雷達因子(GLF)以將多雷達殘差壓縮成六維殘差;
- 視覺-雷達融合框架被拓展成具有標定功能的SLAM,以緩解不準確的外參帶來的不利影響;
- 在KITTI上取得非常好的效果。
融合Lidar后的改進:
- 視覺位姿跟蹤后,計算雷達的scan-map注冊,并通過視覺-雷達緊耦合來進一步優化位姿;
- 在局部和全局BA時加入額外的雷達殘差和雷達子地圖原點位姿
- 在視覺回環檢測之外新增額外的基于雷達的回環檢測模塊;
- 為了更好地評估SLAM精度,SLAM流程被修改成單線程和阻塞式;
激光與視覺之間的輔助
- 激光給視覺提供特征深度,如LIMO,PL-LVO
- 視覺提供高頻位姿初值和輔助激光去畸變,如VLOAM,SVIL-SLAM
- 因子圖中兩種特征獨立共存,提高算法魯棒性,如LVI-SAM,R3LIVE,TVL-SLAM,R2LIVE,LIC-FUSION
- 利用視覺-激光對場景進行重建,如R3LIVE
- 視覺利用3D激光地圖進行定位, 如Stereo Camera Localization in 3D LiDAR Maps
- 視覺-激光聯合閉環檢測:LVI-SAM,SVIL-SLAM
- 特征層次的融合: 暫無,也可能成為研究方向點
融合方法
EKF:R3LIVE, LVIO, LIC-FUSION
因子圖優化:TVL-SLAM, LVI-SAM
EKF+因子圖優化:R2LIVE
總結
以上是生活随笔為你收集整理的激光SLAM论文简单导读--LOAM、VLOAM、LeGO-LOAM、LIO-SAM、LVI-SAM、LIMO、LIC-FUSION、TVL-SLAM、R2LIVE、R3LIVE的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Thinkpad E440启动顺序设置
- 下一篇: MySQL Show命令的用法大全