
SLAM 算法基于計算幾何和計算機視覺的概念,用于機器人導航、機器人測繪和虛擬現(xiàn)實或增強現(xiàn)實測距。SLAM 算法是根據(jù)可用資源量身定制的,目的不是完美,而是操作合規(guī)性。已發(fā)布的方法應(yīng)用于自動駕駛汽車、無人機、自主水下航行器、行星漫游車、新型家用機器人,甚至人體內(nèi)部。
流行的近似求解方法包括粒子濾波器、擴展卡爾曼濾波器、協(xié)方差交集和 GraphSLAM。
SLAM多年來一直是技術(shù)研究的課題。但隨著計算機處理速度的大幅提高以及相機和激光測距儀等低成本傳感器的出現(xiàn),SLAM 算法現(xiàn)已在越來越多的領(lǐng)域得到實際應(yīng)用。
SLAM 算法在許多其他應(yīng)用中也很有用,例如導航移動機器人車隊在倉庫中安排貨架、將自動駕駛汽車停放在空位上,或者通過在未知環(huán)境中導航無人機來遞送包裹。
從廣義上講,有兩種類型的技術(shù)組件用于實現(xiàn) SLAM。第 一類是傳感器信號處理,包括前端處理,這很大程度上取決于所使用的傳感器。第二種類型是位姿圖優(yōu)化,包括與傳感器無關(guān)的后端處理。
視覺 SLAM、激光雷達 SLAM 和多傳感器 SLAM
顧名思義,視覺 SLAM(或 vSLAM)使用從攝像機和其他圖像傳感器獲取的圖像。視覺SLAM可以使用簡單相機(廣角、魚眼和球面相機)、復眼相機(立體和多相機)和RGB-D相機(深度和ToF相機)。
視覺 SLAM 可以通過相對便宜的相機以低成本實現(xiàn)。此外,由于相機提供大量信息,因此它們可用于檢測地標(先前測量的位置)。地標檢測還可以與基于圖的優(yōu)化相結(jié)合,實現(xiàn) SLAM 實施的靈活性。
單目 SLAM 是 SLAM 算法的一種,當 vSLAM 使用單個攝像頭作為唯 一傳感器時,這使得定義深度變得具有挑戰(zhàn)性。這可以通過檢測 AR 標記、棋盤或圖像中的其他已知物體進行定位來解決,或者將攝像頭信息與慣性測量單元 (IMU) 等其他傳感器融合,后者可以測量速度和方向等物理量。與vSLAM相關(guān)的技術(shù)包括運動結(jié)構(gòu)(SfM)、視覺里程計和束調(diào)整。
視覺SLAM算法大致可以分為兩類。稀疏方法匹配圖像的特征點,使用PTAM、ORB-SLAM等算法。密集方法利用圖像的整體亮度,并使用 DTAM、LSD-SLAM、DSO 和 SVO 等算法。
單目vSLAM
立體vSLAM
RGB-D vSLAM
光探測和測距(激光雷達)是一種主要使用激光傳感器(或距離傳感器)的方法。
與相機、ToF 和其他傳感器相比,激光的精 確度明顯更高,適用于自動駕駛汽車和無人機等高速移動車輛的應(yīng)用。激光傳感器的輸出值通常是 2D (x, y) 或 3D (x, y, z) 點云數(shù)據(jù)。激光傳感器點云提供高精度距離測量,并有效地使用 SLAM 算法構(gòu)建地圖。通過注冊點云來估計運動。計算出的運動(行駛距離)用于定位車輛。要估計點云之間的相對變換,您可以使用配準算法,例如迭代最近點 (ICP) 和正態(tài)分布變換 (NDT)?;蛘?,您可以使用基于特征的方法,例如基于 FPFH 特征的激光雷達里程計和測繪 (LOAM) 或快速全局配準 (FGR)。2D 或 3D 點云圖可以表示為網(wǎng)格圖或體素圖。
由于這些挑戰(zhàn),自動駕駛車輛的定位可能涉及融合其他測量數(shù)據(jù),例如車輪里程計、全球?qū)Ш叫l(wèi)星系統(tǒng) (GNSS) 和 IMU 數(shù)據(jù)。對于倉庫機器人等應(yīng)用,通常使用2D 激光雷達 SLAM ,而使用 3D 點云的 SLAM通常用于無人機和自動駕駛
SLAM 與 2D LiDAR
SLAM 與 3D LiDAR
多傳感器 SLAM 是 SLAM 算法的一種,它利用多種傳感器(包括攝像頭、IMU(慣性測量單元)、GPS、激光雷達、雷達等)來增強 SLAM 算法的精度和魯棒性。通過利用不同傳感器的優(yōu)勢互補并減輕其各自的局限性,多傳感器 SLAM 可以實現(xiàn)卓越的性能。例如,雖然攝像頭可以提供詳細的視覺數(shù)據(jù),但它們在低光或高速場景下可能會出現(xiàn)問題;另一方面,激光雷達在不同的照明條件下表現(xiàn)一致,但在某些表面材料上可能會遇到困難。通過集成各種來源的數(shù)據(jù),多傳感器 SLAM 提供了比單傳感器解決方案更可靠的解決方案。因子圖是一個模塊化且適應(yīng)性強的框架,集成了多種傳感器類型,例如攝像頭、IMU 和 GPS。此外,因子圖通過將數(shù)據(jù)轉(zhuǎn)換為姿態(tài)因子來容納自定義傳感器輸入(如激光雷達和里程計)。此功能支持各種多傳感器 SLAM 配置,例如單目視覺慣性 SLAM和激光雷達 IMU SLAM。
盡管 SLAM 算法已用于一些實際應(yīng)用,但一些技術(shù)挑戰(zhàn)阻礙了更通用的采用。每個人都有一個可以幫助克服障礙的對策。
SLAM 算法估計順序運動,其中包含一定的誤差幅度。誤差隨著時間的推移而累積,導致與實際值的顯著偏差。它還可能導致地圖數(shù)據(jù)崩潰或扭曲,使后續(xù)搜索變得困難。我們以繞方形通道行駛為例。隨著誤差的累積,機器人的起點和終點不再匹配。這稱為循環(huán)閉合問題。像這樣的姿勢估計錯誤是不可避免的。檢測閉環(huán)并確定如何糾正或消除累積的錯誤非常重要。
對于多傳感器 SLAM,傳感器的精 確校準至關(guān)重要。差異或校準錯誤可能會導致傳感器融合不準確并破壞系統(tǒng)的整體功能。因子圖優(yōu)化可以進一步幫助校準過程,包括相機-IMU 系統(tǒng)的對準。
一種對策是記住以前訪問過的地方的一些特征作為地標,并最 大限度地減少定位誤差。構(gòu)建姿勢圖是為了幫助糾正錯誤。通過將誤差最小化作為優(yōu)化問題來解決,可以生成更準確的地圖數(shù)據(jù)。這種優(yōu)化在視覺SLAM中稱為捆綁調(diào)整。
圖像和點云映射沒有考慮機器人運動的特征。在某些情況下,這種方法可能會生成不連續(xù)的位置估計。例如,計算結(jié)果顯示,以 1 m/s 速度移動的機器人突然向前跳躍了 10 米。可以通過使用恢復算法或?qū)⑦\動模型與多個傳感器融合以根據(jù)傳感器數(shù)據(jù)進行計算來防止這種定位失敗。
使用具有傳感器融合的運動模型的方法有多種。一種常見的方法是使用卡爾曼濾波進行定位。由于大多數(shù)差動驅(qū)動機器人和四輪車輛通常使用非線性運動模型,因此經(jīng)常使用擴展卡爾曼濾波器和粒子濾波器(蒙特卡羅定位)。在某些情況下,還可以使用更靈活的貝葉斯濾波器,例如無跡卡爾曼濾波器。一些常用的傳感器是慣性測量設(shè)備,例如 IMU、姿態(tài)和航向參考系統(tǒng)或AHRS、慣性導航系統(tǒng)或 INS、加速度計傳感器、陀螺儀傳感器和磁傳感器。安裝在車輛上的車輪編碼器通常用于里程計。
當定位失敗時,恢復的對策是記住以前訪問過的地方的地標作為關(guān)鍵幀。在搜索地標時,會以高速掃描的方式應(yīng)用特征提取過程。一些基于圖像特征的方法包括特征袋(BoF)和視覺詞袋(BoVW)。最近,深度學習已被用于比較特征的距離。
在車輛硬件上實現(xiàn) SLAM 算法時,計算成本是一個問題。計算通常在處理能力有限的緊湊且低能耗的嵌入式微處理器上執(zhí)行。為了實現(xiàn)精 確定位,必須高頻度地執(zhí)行圖像處理和點云匹配。另外,閉環(huán)等優(yōu)化計算屬于高計算過程。挑戰(zhàn)在于如何在嵌入式微型計算機上執(zhí)行這種計算成本高昂的處理。
一種對策是并行運行不同的進程。特征提取等過程是匹配過程的預處理,比較適合并行化。使用多核 CPU 進行處理、單指令多數(shù)據(jù) (SIMD) 計算和嵌入式 GPU 在某些情況下可以進一步提高速度。此外,由于位姿圖優(yōu)化可以在相對較長的周期內(nèi)執(zhí)行,因此降低其優(yōu)先級并定期執(zhí)行此過程也可以提高性能。
公眾號 掃碼咨詢
![]() | 上海市閔行區(qū)中春路4999號莘莊商務(wù)樓1326室 |
![]() | service@covond.com |
![]() | m.jxetj.com |
![]() | 交換機:18017588179(孫經(jīng)理) 無人機:13311882358(孫總) |