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