激光雷達(dá)分單線和多線這兩大類,針對(duì)這兩類Lidar所使用的算法也不盡相同。 首先單線雷達(dá)一般應(yīng)用在平面運(yùn)動(dòng)場(chǎng)景,多線雷達(dá)則可以應(yīng)用于三維運(yùn)動(dòng)場(chǎng)景。
2D Lidar SLAM
一般將使用單線雷達(dá)建構(gòu)二維地圖的SLAM算法,稱為2D Lidar SLAM。大家熟知的2D Lidar SLAM算法有:gmapping, hector, karto, cartographer。通常數(shù)據(jù)和運(yùn)動(dòng)都限制在2D平面內(nèi)且運(yùn)動(dòng)平面與激光掃描平面平行。
gmapping[1]
基于粒子濾波的2D激光雷達(dá)SLAM,構(gòu)建二維柵格地圖。融合里程計(jì)信息,沒有回環(huán)檢測(cè)。 優(yōu)點(diǎn)是在小場(chǎng)景中,計(jì)算量小,速度較快。 缺點(diǎn)是每個(gè)粒子都攜帶一幅地圖,無法應(yīng)對(duì)大場(chǎng)景(內(nèi)存和計(jì)算量巨大);如果里程不準(zhǔn)或標(biāo)定參數(shù)不準(zhǔn),在長回廊等環(huán)境中容易把圖建歪。
hector[2]
hector SLAM是完全基于scan-matching的,使用迭代優(yōu)化的方法來求匹配的最佳位置,為避免陷入局部極值,也采用多分辨率的地圖匹配。 由于完全依賴于scan matching,要求雷達(dá)的測(cè)量精度較高、角度范圍大,掃描速度較高(或移動(dòng)速度慢)。噪聲多、邊角特征點(diǎn)少的場(chǎng)景就很容易失敗。 原文所提出方法的特點(diǎn)還在于,加入IMU,使用EKF估計(jì)整體的6DoF位姿,并根據(jù)roll, pitch角將激光掃描數(shù)據(jù)投影到XY平面,因而支持激光雷達(dá)有一定程度的傾斜,比如手持或機(jī)器人運(yùn)動(dòng)在不是很平整的地面上。
karto[3][4]
karto是基于scan-matching,回環(huán)檢測(cè)和圖優(yōu)化SLAM算法,采用SPA(Sparse Pose Adjustment)進(jìn)行優(yōu)化。 關(guān)于karto 和 cartographer 的比較,可以看看這里:https://blog.csdn.net/hzy925/article/details/78857241
cartographer[5][6]
cartographer是谷歌開源的激光SLAM框架,主要特點(diǎn)在于: 1.引入submap,scan to submap matching,新到的一幀數(shù)據(jù)與最近的submap匹配,放到最優(yōu)位置上。如果不再有新的scan更新到最近的submap,再封存該submap,再去創(chuàng)建新的submap。 2.回環(huán)檢測(cè)和優(yōu)化。利用submap和當(dāng)前scan作回環(huán)檢測(cè),如果當(dāng)前scan與已經(jīng)創(chuàng)建的submap在距離上足夠近,則進(jìn)行回環(huán)檢測(cè)。檢測(cè)到回環(huán)之后用ceres進(jìn)行優(yōu)化,調(diào)整submap之間的相對(duì)位姿。為了加快回環(huán)檢測(cè),采用分枝定界法。 cartographer也可以應(yīng)用于3D Lidar SLAM(我還沒試過),不過最出名的還是她在2D Lidar SLAM方面的出色表現(xiàn),畢竟論文標(biāo)題就是“Real-time loop closure in 2D LIDAR SLAM”。
3D Lidar SLAM
3D Lidar SLAM主要是針對(duì)多線雷達(dá)的SLAM算法。比較出名的有LOAM, LeGO-LOAM, LOAM-livox等。
LOAM[7]
LOAM是針對(duì)多線激光雷達(dá)的SLAM算法,主要特點(diǎn)在于:1) 前端抽取平面點(diǎn)和邊緣點(diǎn),然后利用scan-to-scan的匹配來計(jì)算幀間位姿,也就形成了里程計(jì);2) 由估計(jì)的幀間運(yùn)動(dòng),對(duì)scan中的每一個(gè)點(diǎn)進(jìn)行運(yùn)動(dòng)補(bǔ)償;3) 生成map時(shí),利用里程計(jì)的信息作為submap-to-map的初始估計(jì),再在利用submap和map之間的匹配做一次優(yōu)化。 LOAM提出的年代較早(2014),還沒有加入回環(huán)優(yōu)化。 關(guān)于LOAM的詳細(xì)解析,可以參考這篇專欄文章: https://zhuanlan.zhihu.com/p/111388877ALOAM[8]是Advanced implementation of LOAM,使用Eigen和ceres-solver簡(jiǎn)化代碼實(shí)現(xiàn)。
LeGO-LOAM[9]
LeGO-LOAM在LOAM的基礎(chǔ)上主要改進(jìn):1) 地面點(diǎn)分割,點(diǎn)云聚類去噪;2)添加了ICP回環(huán)檢測(cè)和gtsam優(yōu)化。 關(guān)于LeGO-LOAM的詳細(xì)解析,可以查看這個(gè)專欄文章: https://zhuanlan.zhihu.com/p/115986186
LOAM_livox[10]
大疆2019年公布的面向小FOV Lidar的LOAM算法。相比LOAM,做了一些改動(dòng)。算法的特點(diǎn): 1.添加策略提取更魯棒的特征點(diǎn):a) 忽略視角邊緣有畸變的區(qū)域; b) 剔除反射強(qiáng)度過大或過小的點(diǎn) ; c) 剔除射線方向與所在平臺(tái)夾角過小的點(diǎn); d) 部分被遮擋的點(diǎn) 2.與LOAM一樣,有運(yùn)動(dòng)補(bǔ)償 3.里程計(jì)中剔除相對(duì)位姿解算后匹配度不高的點(diǎn)(比如運(yùn)動(dòng)物體)之后,再優(yōu)化一次求解相對(duì)位姿。
視覺和Lidar 融合的SLAM算法
VLOAM[11]
VLOAM 是視覺和激光雷達(dá)緊耦合的方案。
視覺里程計(jì)部分,圖像幀之間的相對(duì)位姿估計(jì)以60Hz運(yùn)行。先抽取和匹配圖像特征,雷達(dá)點(diǎn)云融合成深度地圖,再將深度地圖與視覺特征點(diǎn)關(guān)聯(lián)起來,以幫助計(jì)算兩幀之間的相對(duì)位姿。 雷達(dá)里程計(jì)部分,將1s內(nèi)的數(shù)據(jù)作為一個(gè)完整掃描 sweep。Sweep-to-Sweep refinement模塊優(yōu)化求解兩個(gè)sweep之間的相對(duì)運(yùn)動(dòng)并去除運(yùn)動(dòng)畸變,Sweep-to-Map Registration模塊將局部點(diǎn)云注冊(cè)到已經(jīng)構(gòu)建的地圖上面。 Transform Integration模塊則結(jié)合兩個(gè)里程計(jì),以視覺里程計(jì)的高幀率輸出位姿估計(jì)。 待補(bǔ)充 。。。
方法二
2D:效果最好的應(yīng)當(dāng)是Google的Cartographer,此外還有基于粒子濾波的gmapping,基于優(yōu)化的hector slam等等。 3D領(lǐng)域: 經(jīng)典的LOAM(A-LOAM),用特征點(diǎn):planar points & edge points 來進(jìn)行幀間匹配,無回環(huán) LeGO-LOAM ICP 的方法加入了回環(huán),用于減小漂移,一致性更強(qiáng) G-LOAM 引入 GPS 作為新增的位姿約束,用 Levenberg-Marquardt 方法優(yōu)化位姿圖 LOAM-Livox (HKU Mars Lab)一套可用于固態(tài)激光雷達(dá)的SLAM算法 Fast-LIO (HKU Mars Lab),一套可用于無人機(jī)的基于EKF的雷達(dá)慣導(dǎo)里程計(jì)
審核編輯 :李倩
-
算法
+關(guān)注
關(guān)注
23文章
4587瀏覽量
92501 -
SLAM
+關(guān)注
關(guān)注
23文章
415瀏覽量
31758 -
激光雷達(dá)
+關(guān)注
關(guān)注
967文章
3921瀏覽量
189436
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論