SLAM可以說(shuō)是近幾年最火的機(jī)器人技術(shù)之一,也是機(jī)器人領(lǐng)域的關(guān)鍵技術(shù)。不少同學(xué)表示,學(xué)了幾年還在「爬坑」,甚至感覺「越學(xué)越難」。本文通過整理機(jī)器人領(lǐng)域常用的SLAM算法架構(gòu)及特點(diǎn),希望為大家的方向選擇提供一些參考。
01?SLAM是啥?
我們先界定一下SLAM技術(shù)。SLAM,是指即時(shí)定位和地圖構(gòu)建,一種同時(shí)實(shí)現(xiàn)機(jī)器人自身定位和環(huán)境地圖構(gòu)建的技術(shù)。
原理是使用相機(jī)、激光雷達(dá)、慣性測(cè)量單元等傳感器,來(lái)收集環(huán)境信息,然后用算法將這些信息融合起來(lái),以確定機(jī)器人在未知環(huán)境中的位置,并構(gòu)建一張環(huán)境地圖。
通過SLAM技術(shù),機(jī)器人可以在未知環(huán)境中進(jìn)行自主探索和導(dǎo)航。像家用的掃地機(jī),就是一個(gè)非常好的應(yīng)用實(shí)例。
?SLAM技術(shù)也不只用于機(jī)器人,還廣泛應(yīng)用在AR、VR、無(wú)人機(jī)、自動(dòng)駕駛等領(lǐng)域。
02?SLAM的通用架構(gòu)
根據(jù)傳感器的不同,機(jī)器人用的SLAM算法可以分為二維激光SLAM、三維激光SLAM,以及視覺SLAM。
其中,二維激光SLAM常用的有Cartographer、Karto,三維激光SLAM較流行的是LIO-SAM和LOAM系列,視覺SLAM主流的方案為ORB-SLAM3、VINS-Fusion……
?不同的SLAM算法,實(shí)現(xiàn)的具體細(xì)節(jié)會(huì)有所不同,但一般都包含前端和后端。
前端
從傳感器中獲取原始數(shù)據(jù),并將這些數(shù)據(jù)與已有地圖進(jìn)行關(guān)聯(lián),從而確定機(jī)器人軌跡的過程。
-
數(shù)據(jù)采集:通過傳感器獲取機(jī)器人周圍環(huán)境的數(shù)據(jù),如激光點(diǎn)云數(shù)據(jù)、圖像數(shù)據(jù)等。?
-
數(shù)據(jù)時(shí)空同步:將從不同傳感器或不同時(shí)間戳接收到的數(shù)據(jù)進(jìn)行同步,以便后續(xù)配準(zhǔn)。
-
特征提取:從采集的數(shù)據(jù)中提取用于建圖的特征點(diǎn),如關(guān)鍵點(diǎn)、特征描述子等。
-
數(shù)據(jù)融合:將不同傳感器獲取的數(shù)據(jù)融合起來(lái),提高建圖的準(zhǔn)確性和穩(wěn)定性。
-
數(shù)據(jù)關(guān)聯(lián):將當(dāng)前幀的特征與之前的地圖,或者其他幀之間的特征進(jìn)行匹配,以確定機(jī)器人的運(yùn)動(dòng)軌跡。
-
運(yùn)動(dòng)估計(jì):通過數(shù)據(jù)關(guān)聯(lián)得到機(jī)器人的運(yùn)動(dòng)軌跡,可以是平移、旋轉(zhuǎn)等運(yùn)動(dòng)。



前端的質(zhì)量對(duì)SLAM系統(tǒng)的準(zhǔn)確性及穩(wěn)定性有著至關(guān)重要的影響,因此前端的算法設(shè)計(jì)和實(shí)現(xiàn)需要精心制定,以確保系統(tǒng)的可靠性和實(shí)用性。
后端
根據(jù)前端獲取的運(yùn)動(dòng)軌跡和地圖信息,對(duì)機(jī)器人的狀態(tài)、地圖和傳感器誤差等進(jìn)行估計(jì)和優(yōu)化的過程。
-
非線性優(yōu)化:通過非線性最小二乘法等,對(duì)機(jī)器人姿態(tài)和地圖進(jìn)行優(yōu)化,使得機(jī)器人的位置和地圖更加準(zhǔn)確。
-
回環(huán)檢測(cè):識(shí)別機(jī)器人經(jīng)過的相似位置,避免累積誤差的產(chǎn)生。可以有效降低機(jī)器人的定位誤差,提高SLAM算法的精度和魯棒性。
后端優(yōu)化的關(guān)鍵,是對(duì)整個(gè)系統(tǒng)的運(yùn)動(dòng)軌跡和地圖進(jìn)行全局優(yōu)化,以消除積累誤差和提高定位的準(zhǔn)確性。
03?6大主流SLAM算法
-
Cartographer
由谷歌開發(fā)的一款基于激光雷達(dá)和RGB-D相機(jī)數(shù)據(jù)的SLAM算法。可以跨平臺(tái)使用,支持Lidar、IMU、Odemetry、GPS、Landmark等多種傳感器配置,被廣泛用于機(jī)器人導(dǎo)航、自動(dòng)駕駛等領(lǐng)域。

Cartographer算法在前端完成占據(jù)柵格地圖的構(gòu)建,得出激光雷達(dá)掃描幀的最佳位姿后,將掃描幀插入到子地圖Submap中,得到局部?jī)?yōu)化的子地圖并記錄位姿。
后端根據(jù)掃描幀間的位姿關(guān)系進(jìn)行全局的地圖優(yōu)化,并使用分支定界法加速求解,進(jìn)而得出閉環(huán)掃描幀在全局地圖中的最佳位姿。
-
Karto
一種基于位姿圖優(yōu)化的SLAM方法,使用了高度優(yōu)化和非迭代的cholesky矩陣對(duì)系統(tǒng)進(jìn)行解耦并求解。適用于各種室內(nèi)環(huán)境,可以處理靜態(tài)和動(dòng)態(tài)障礙物。

Karto使用圖論的標(biāo)準(zhǔn)形式表示地圖,其中每個(gè)節(jié)點(diǎn)代表了移動(dòng)機(jī)器人運(yùn)行軌跡上的一個(gè)位姿點(diǎn),以及當(dāng)前位姿下傳感器返回的感知信息。
節(jié)點(diǎn)之間的邊,代表了相鄰機(jī)器人位姿之間的位移矢量。對(duì)每一個(gè)新的位姿點(diǎn)定位,需要節(jié)點(diǎn)間匹配關(guān)系和邊帶來(lái)的約束,保持定位估計(jì)誤差的前后一致。
-
LIO-SAM
一種新型的激光慣性導(dǎo)航系統(tǒng),結(jié)合了激光雷達(dá)和慣性測(cè)量單元數(shù)據(jù),可以實(shí)現(xiàn)機(jī)器人的高精度定位和運(yùn)動(dòng)軌跡的建圖。

前端在傳統(tǒng)的LIDAR-SLAM基礎(chǔ)上,利用卡爾曼濾波和因子圖優(yōu)化算法,將激光雷達(dá)和IMU數(shù)據(jù)融合,進(jìn)一步提高機(jī)器人的定位精度和建圖效果。后端加入優(yōu)化算法,使得機(jī)器人的定位精度和建圖精度都得到極大提升。
-
LOAM系列
一種成熟的基于激光雷達(dá)的SLAM算法,包括LOAM、LOAM-Velodyne、LOAM-LiDAR等。
其中LOAM使用3D激光雷達(dá)的數(shù)據(jù)來(lái)進(jìn)行建圖和定位,利用點(diǎn)云數(shù)據(jù)的特征,如空間聚類、連續(xù)性約束等來(lái)估計(jì)位姿。

LOAM-Velodyne則使用Velodyne激光雷達(dá)的3D點(diǎn)云數(shù)據(jù),以實(shí)現(xiàn)更高精度的地圖重建和定位;LOAM-LiDAR采用LiDAR傳感器來(lái)進(jìn)行建圖和定位,可以高效獲取目標(biāo)物體的三維坐標(biāo)信息,在一些機(jī)器人應(yīng)用場(chǎng)景具有很大的優(yōu)勢(shì)。

-
ORB-SLAM3
當(dāng)前最優(yōu)秀的基于特征點(diǎn)的視覺SLAM系統(tǒng)之一,支持單目、雙目、RBG-D等多種相機(jī)模式,在特征提取、關(guān)鍵幀選取、地圖維護(hù)、位姿優(yōu)化等方面進(jìn)行了優(yōu)化,并能建立短期、中期和長(zhǎng)期的數(shù)據(jù)關(guān)聯(lián),使得該系統(tǒng)兼具精度和魯棒性。

前端視覺里程計(jì)基于ORB特征,建立圖像幀之間特征點(diǎn)的數(shù)據(jù)關(guān)聯(lián),以及圖像特征點(diǎn)和地圖點(diǎn)之間3D到2D的數(shù)據(jù)關(guān)聯(lián),具有較好的魯棒性和提取效率,回環(huán)檢測(cè)和重定位也基于ORB特征實(shí)現(xiàn)。
-
VINS-Fusion
一種基于視覺慣性傳感器的視覺SLAM算法。它將視覺和慣性信息進(jìn)行融合,來(lái)提高機(jī)器人在未知環(huán)境下的定位和導(dǎo)航能力。

前端和后端之間通過一個(gè)狀態(tài)傳遞機(jī)制來(lái)交換數(shù)據(jù)。前端將IMU和圖像數(shù)據(jù)合并,生成一組狀態(tài)量,然后將其傳遞給后端進(jìn)行融合和優(yōu)化;后端將優(yōu)化后的狀態(tài)量傳遞回前端,以便更新機(jī)器人的運(yùn)動(dòng)估計(jì)。
04?如何選擇SLAM方案?
事實(shí)上,不同方案的SLAM算法,都有它的應(yīng)用空間。
二維SLAM就適合在二維平面上運(yùn)動(dòng)的機(jī)器人,如掃地機(jī)、配送機(jī)器人、迎賓機(jī)器人等。
具體來(lái)看,Cartographer的總體表現(xiàn)最為優(yōu)秀,定位精度和建圖質(zhì)量都很高,同時(shí)魯棒性也很強(qiáng),能承受一定的噪聲和漂移干擾,可以應(yīng)用于大范圍建圖;Karto適合建圖面積不是太大的低成本應(yīng)用場(chǎng)景,可以在一定程度上滿足建圖需求,同時(shí)工程實(shí)現(xiàn)難度也不太高。
三維SLAM則適用于機(jī)器人需要在三維空間中進(jìn)行建模和定位的場(chǎng)景,比如無(wú)人機(jī)在室外飛行、機(jī)器人在戶外環(huán)境中進(jìn)行探測(cè)等。
其中,LIO-SAM的魯棒性和實(shí)時(shí)性表現(xiàn)相對(duì)優(yōu)秀,適用于建圖面積和硬件資源有限的小型機(jī)器人應(yīng)用場(chǎng)景;在建圖面積和魯棒性方面比較弱的LOAM方案,適用于小而快速的機(jī)器人及小型場(chǎng)景的定位、建圖任務(wù)。
視覺SLAM通過攝像頭等可視傳感器來(lái)獲取機(jī)器人與環(huán)境之間的相對(duì)位置關(guān)系,不需要其他傳感器,更為輕量化。但對(duì)于光照變化、運(yùn)動(dòng)模糊等情況的處理仍存在挑戰(zhàn)。
定位精度和實(shí)時(shí)性都比較高的ORB-SLAM3,面對(duì)場(chǎng)景變化能夠快速適應(yīng),適用于多種場(chǎng)景的建圖。與之相比,VINS-Fusion適用于對(duì)定位精度要求較高,且建圖面積相對(duì)較小的機(jī)器人應(yīng)用場(chǎng)景。
?總的來(lái)說(shuō),這些算法各有優(yōu)劣,如何選擇最合適的算法,需要根據(jù)具體的應(yīng)用場(chǎng)景和實(shí)際需求來(lái)綜合考慮。
以上就是本期的全部?jī)?nèi)容,后續(xù)我們還將對(duì)個(gè)別算法進(jìn)行詳細(xì)解讀和細(xì)節(jié)分析,感興趣的同學(xué)可以持續(xù)關(guān)注。
參考資料:
[1]https://zhuanlan.zhihu.com/p/501102444
[2]羅琦-基于慣性測(cè)量單元和激光點(diǎn)云的SLAM算法優(yōu)化.廣西大學(xué)
[3]朱建康-結(jié)構(gòu)化場(chǎng)景下的主動(dòng)SLAM算法研究.電子科技大學(xué)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-447877.html
[4]王琪-基于非線性優(yōu)化的單目VINS系統(tǒng)的研究.哈爾濱工業(yè)大學(xué)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-447877.html
到了這里,關(guān)于盤點(diǎn)機(jī)器人常用的幾大主流SLAM算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!