SLAM 通常與開發(fā)自動駕駛汽車和機器人相關(guān)。SLAM 的其他應(yīng)用領(lǐng)域還包括增強/虛擬現(xiàn)實(AR/VR)(用于跟蹤對象和用戶)、農(nóng)業(yè)(用于跟蹤田野并實現(xiàn)數(shù)據(jù)驅(qū)動決策)以及醫(yī)學(xué)(尤其是在使用細(xì)長器械的微創(chuàng)手術(shù)中)蜿蜒穿過小切口。
結(jié)合了工程、傳感器融合、統(tǒng)計學(xué)、概率、計算、計算機科學(xué)等技術(shù),SLAM算法和變體有很多。因此,SLAM 并不是指單一的技術(shù)或方法,而是它們的一個家族(類似于機器學(xué)習(xí)如何指代廣泛的技術(shù))。
根據(jù)主要技術(shù)/屬性將 SLAM 算法分為三類:基于過濾器的 SLAM、基于圖的 SLAM 和基于深度學(xué)習(xí)的 SLAM。
基于過濾器的 SLAM
基于過濾器的 SLAM 將 SLAM 問題視為狀態(tài)估計問題,其中狀態(tài)包含有關(guān)當(dāng)前位置和地圖的信息。狀態(tài)由過濾器遞歸更新,過濾器根據(jù)操作和測量來估計當(dāng)前位置和地圖。隨著收集到的數(shù)據(jù)越來越多,估計值也會得到增強和完善。
一些基于過濾器的 SLAM 算法是:
l 卡爾曼濾波器:這是一種遞歸算法,分兩個步驟工作:預(yù)測步驟和更新步驟。預(yù)測步驟根據(jù)系統(tǒng)的動態(tài)對狀態(tài)進(jìn)行預(yù)測,而更新步驟使預(yù)測與測量相一致,以產(chǎn)生改進(jìn)的狀態(tài)估計。來自預(yù)測和測量的信息根據(jù)其不確定性/(協(xié))方差進(jìn)行權(quán)衡??柭鼮V波器算法假設(shè)一個具有高斯誤差/噪聲的線性世界;事實上,在優(yōu)化估計狀態(tài)和真實狀態(tài)之間的均方誤差時,卡爾曼濾波器是線性高斯世界中的最優(yōu)/最 佳估計器。然而,卡爾曼濾波器的局限性在于線性和/或高斯誤差/噪聲并不總是適用。
l 擴展卡爾曼濾波器(EKS):擴展卡爾曼濾波器(EKS)擴展了卡爾曼濾波器,允許我們通過使用線性化來放松線性假設(shè)。該技術(shù)涉及在估計值周圍使用一階泰勒展開,并保留大部分卡爾曼濾波器機制。EKS 算法由于其靈活性和效率而成為一種非常流行的非線性狀態(tài)估計技術(shù)。然而,EKS 也會在估計中引入較大的誤差并導(dǎo)致性能不佳。
l 無跡卡爾曼濾波器 (UKS):無跡卡爾曼濾波器 (UKS) 擴展了卡爾曼濾波器,允許我們通過近似概率分布來放松線性假設(shè)。該技術(shù)涉及使用無跡變換來計算經(jīng)歷非線性變換的隨機變量的統(tǒng)計數(shù)據(jù),例如均值或方差(通過對表示狀態(tài)分布的西格瑪點進(jìn)行采樣)。UKS 可以為狀態(tài)提供更準(zhǔn)確的估計,尤其是在非線性系統(tǒng)中,但計算成本可能更高。
l 粒子濾波器:粒子濾波器將估計表示為一組粒子,其中每個粒子代表一種可能的狀態(tài);權(quán)重較高的粒子被認(rèn)為更能反映真實狀態(tài)。隨著收集到更多信息,粒子將根據(jù)其與觀察到的測量值的匹配重新加權(quán)。粒子濾波器的一個關(guān)鍵優(yōu)勢在于,它對底層系統(tǒng)的假設(shè)很少,考慮到復(fù)雜性,并且能夠處理非線性系統(tǒng)和非高斯誤差/噪聲(與卡爾曼濾波器不同)。因此,它非常靈活,可以在多種情況下使用。然而,粒子濾波器也有局限性,例如維度(即可能需要大量粒子來準(zhǔn)確表達(dá)狀態(tài)分布)、發(fā)散性(即粒子可能偏離真實狀態(tài))和復(fù)雜性(即所需的計算可能會很密集)。有一些基于粒子過濾器的變體可以解決這些限制。
一般來說,基于過濾器的 SLAM 在動態(tài)已知的結(jié)構(gòu)化環(huán)境中表現(xiàn)出色——在這種設(shè)置中,它可以提高計算效率,并有可能提供實時估計。
基于圖的SLAM
基于圖的 SLAM 將 SLAM 問題視為圖問題,其中位置信息由節(jié)點表示,地圖由邊導(dǎo)出。在機器人領(lǐng)域,通常使用位姿圖優(yōu)化。在姿勢圖中,節(jié)點表示姿勢和地標(biāo),邊表示它們之間的約束。當(dāng)檢測到新姿勢和地標(biāo)時添加新節(jié)點,并且約束將順序節(jié)點與有關(guān)運動的信息連接起來。例如,從一個點移動到另一點將用兩個節(jié)點表示,每個節(jié)點包含有關(guān)姿勢和測量的地標(biāo)的信息,通過邊緣連接,包含有關(guān)運動和其他觀察的信息。在構(gòu)建姿勢圖時,如果節(jié)點足夠相似,我們還可以在節(jié)點之間添加邊,表示返回到一些先前的姿勢和地標(biāo)。當(dāng)兩個節(jié)點非常相似時,它會提供信息來更新位姿圖,并可能添加指示它們接近程度的新邊(這有時也稱為檢測循環(huán)閉合)。
目標(biāo)是通過最小化姿勢、地標(biāo)和約束中的誤差,根據(jù)觀察到的測量結(jié)果來優(yōu)化圖形?;趫D的 SLAM 算法旨在高效地執(zhí)行優(yōu)化;一些例子是:
l 平方根平滑和映射(平方根 SAM):該算法通過因式分解解決圖優(yōu)化問題。該算法利用了 SLAM 圖稀疏的特性,這意味著每個節(jié)點僅連接到幾個其他節(jié)點/只有幾個往返于它的邊。SLAM 圖稀疏的原因是因為節(jié)點連接/邊僅在連續(xù)姿勢之間或返回到先前姿勢時形成。與我們跟蹤的不同姿勢的數(shù)量相比,后一個原因(返回到先前的姿勢)相對較少。此外,認(rèn)為兩個姿勢相同的閾值通常很高。當(dāng)我們將圖表示為矩陣時,其中行和列代表節(jié)點,條目代表節(jié)點之間的邊連接,該矩陣將有許多零元素,因此是一個稀疏矩陣。使用線性代數(shù)的因式分解技術(shù)(平方根 SAM 算法的作用)可以有效地優(yōu)化稀疏矩陣,以提供更穩(wěn)定、更高效的數(shù)值估計。
l 增量平滑和映射 (iSAM):該算法利用類似于平方根 SAM 的因式分解,并允許在收集新測量值時增量更新估計值。與 Square Root SAM 不同的是,Square Root SAM 是一種基于批處理的方法,這意味著它在優(yōu)化之前等待所有可用數(shù)據(jù),而 iSAM 是動態(tài)執(zhí)行的,因此更加實時。此外,由于它是按每次增量更新而不是批量更新,因此減少了計算復(fù)雜性和所需的內(nèi)存。
l General Framework for Graph Optimization (g2o):這是一個用于圖優(yōu)化的開源 C++ 框架。它建立在平方根 SAM 和 iSAM 的思想之上。該框架設(shè)計靈活、可擴展、快速,適用范圍廣泛。例如,該框架允許不同的優(yōu)化算法(例如,高斯-牛頓、萊文伯格-馬夸特、鮑威爾狗腿等)和噪聲/錯誤處理(例如,Huber、Geman-McClure、動態(tài)協(xié)方差縮放等)。對于那些對框架的不同實現(xiàn)以及性能感興趣的人,請參閱這篇關(guān)于g2o 框架下基于圖的 SLAM 算法分析的論文。
一般來說,當(dāng)存在較大的不確定性或非高斯噪聲時,基于圖的 SLAM 由于其靈活性而比基于過濾的 SLAM 表現(xiàn)更好。然而,它的一個限制是計算成本可能很高。因此,基于圖的SLAM的一個主要研究領(lǐng)域是提高效率。
基于深度學(xué)習(xí)的SLAM
基于深度學(xué)習(xí)的SLAM嘗試?yán)蒙窠?jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)來解決SLAM問題。深度學(xué)習(xí)可用于整個 SLAM 問題,從描述特征到調(diào)整不同的測量結(jié)果再到進(jìn)行估計。
該領(lǐng)域的一些算法是:
l RatSLAM:RatSLAM 最初開發(fā)于 2004 年,是最早使用類似“神經(jīng)網(wǎng)絡(luò)”技術(shù)來處理 SLAM 的算法之一。該算法使用海馬模型將視覺線索和里程計/運動信息處理成用于導(dǎo)航的環(huán)境表示。海馬模型基于嚙齒動物/大鼠的海馬體,因此命名為 RatSLAM。實驗結(jié)果表明該算法在某些情況下(即具有最小演化動態(tài)的視覺里程計)穩(wěn)定可靠,但在其他情況下的通用性受到限制。
l LIFT-SLAM:該算法專注于視覺數(shù)據(jù)的SLAM,并將基于深度學(xué)習(xí)的特征描述符與傳統(tǒng)的幾何特征描述符相結(jié)合。該算法使用學(xué)習(xí)不變特征變換 (LIFT)、一種深度神經(jīng)網(wǎng)絡(luò) (DNN),基于卷積神經(jīng)網(wǎng)絡(luò) (CNN) 進(jìn)行局部特征檢測、方向估計和描述。KITTI和EuRoC數(shù)據(jù)集的基準(zhǔn)顯示了有希望的結(jié)果。然而,一些限制是所需的計算資源,這對于設(shè)備上或?qū)崟r計算來說可能很困難。此外,LIFT-SLAM 難以處理照明不佳(即太亮或太暗)、模糊(即難以區(qū)分特征)或低紋理(即沒有太多明顯特征)的視覺數(shù)據(jù)。
l EnvSLAM:該算法通過使用神經(jīng)網(wǎng)絡(luò)進(jìn)行 SLAM 來解決效率挑戰(zhàn)。除了準(zhǔn)確的結(jié)果之外,設(shè)備上的實時性能也很重要。該算法找到了準(zhǔn)確性和效率之間的權(quán)衡,從而實現(xiàn)了更快的 SLAM 算法。此外,神經(jīng)網(wǎng)絡(luò)的設(shè)計旨在輕量級。EnvSLAM 的局限性在于準(zhǔn)確性降低,并且對所有 SLAM 實現(xiàn)/情況的通用性有限。
總的來說,基于深度學(xué)習(xí)的 SLAM 是一個新興且令人興奮的研究領(lǐng)域。將深度學(xué)習(xí)算法的成功從其他任務(wù)轉(zhuǎn)移到 SLAM 領(lǐng)域,如果成功,它可以提供新的最 先進(jìn)的結(jié)果,并適用于更廣泛的 SLAM 問題?;谏疃葘W(xué)習(xí)的 SLAM 的局限性通常在于與深度學(xué)習(xí)相關(guān)的計算要求以及這些算法的通用性。
結(jié)論
SLAM 是指生成環(huán)境地圖并確定位置。對于自主、機器人、增強現(xiàn)實等領(lǐng)域來說,這是一個困難但基本的問題。有許多方法、算法和積極的研究來解決 SLAM 問題。在本文中,我們根據(jù)主要技術(shù)對 SLAM 空間進(jìn)行了細(xì)分:基于過濾器的 SLAM(將 SLAM 視為狀態(tài)估計問題)、基于圖的 SLAM(將 SLAM 視為圖優(yōu)化問題)以及基于深度學(xué)習(xí)的 SLAM(將 SLAM 視為圖優(yōu)化問題)。利用深度學(xué)習(xí)來改善 SLAM 結(jié)果。
公眾號 掃碼咨詢
![]() | 上海市閔行區(qū)中春路4999號莘莊商務(wù)樓1326室 |
![]() | service@covond.com |
![]() | www.jxetj.com |
![]() | 交換機:18017588179(孫經(jīng)理) 無人機:13311882358(孫總) |