來(lái)源:我想我思
SLAM(Simultaneous Localization and Mapping)同步定位與地圖構(gòu)建,一種同時(shí)實(shí)現(xiàn)設(shè)備自身定位和環(huán)境地圖構(gòu)建的技術(shù)。
原理是使用相機(jī)、激光雷達(dá)、慣性測(cè)量單元等傳感器,來(lái)收集環(huán)境信息,然后用算法將這些信息融合起來(lái),以確定設(shè)備在未知環(huán)境中的位置,并構(gòu)建一張環(huán)境地圖。
通俗解釋為:
用眼睛觀察周?chē)貥?biāo)如建筑、大樹(shù)、花壇等,并記住他們的特征(特征提取)
在自己的腦海中,根據(jù)雙目獲得的信息,把特征地標(biāo)在三維地圖中重建出來(lái)(三維重建)
當(dāng)自己在行走時(shí),不斷獲取新的特征地標(biāo),并且校正自己頭腦中的地圖模型(bundle adjustment or EKF)
根據(jù)自己前一段時(shí)間行走獲得的特征地標(biāo),確定自己的位置(trajectory)
當(dāng)無(wú)意中走了很長(zhǎng)一段路的時(shí)候,和腦海中的以往地標(biāo)進(jìn)行匹配,看一看是否走回了原路(loop-closure detection)。
SLAM包括以下幾個(gè)方面
傳感器:激光雷達(dá)、攝像頭、慣性測(cè)量單元(IMU)、里程計(jì)等。這些傳感器可以提供設(shè)備在運(yùn)動(dòng)過(guò)程中所需要的信息,如距離、角度、速度、方向等。
設(shè)備運(yùn)動(dòng)模型:運(yùn)動(dòng)模型用于估計(jì)設(shè)備的位姿,例如里程計(jì)模型、速度模型、加速度模型等。
視覺(jué)算法:視覺(jué)算法主要用于設(shè)備在環(huán)境中的感知和定位,如特征提取、特征匹配、圖像配準(zhǔn)等。
濾波算法:濾波算法用于估計(jì)設(shè)備的位姿和地圖中不同位置的概率分布,如卡爾曼濾波器、粒子濾波器等。
優(yōu)化算法:優(yōu)化算法用于優(yōu)化設(shè)備的位姿和地圖,如擴(kuò)展信息濾波器、位姿圖優(yōu)化等。
地圖表示:地圖表示方式可以有多種,如柵格地圖、拓?fù)涞貓D、點(diǎn)云地圖等。
常用的SLAM傳感器
激光雷達(dá):激光雷達(dá)是一種通過(guò)發(fā)射激光束來(lái)探測(cè)目標(biāo)并測(cè)量距離的傳感器。它可以提供高精度、高分辨率的距離和角度信息,被廣泛應(yīng)用于SLAM中。
攝像頭:攝像頭可以通過(guò)拍攝環(huán)境中的圖像來(lái)獲取場(chǎng)景的信息,如特征點(diǎn)、輪廓等。在SLAM中,攝像頭可以用于實(shí)現(xiàn)視覺(jué)SLAM或者輔助其他傳感器進(jìn)行定位。攝像頭種類(lèi)有單目、雙目、單目結(jié)構(gòu)光、雙目結(jié)構(gòu)光、ToF。
慣性測(cè)量單元(IMU):IMU可以測(cè)量機(jī)器人的加速度和角速度等信息,通過(guò)積分可以得到機(jī)器人的位姿信息。IMU通常與其他傳感器結(jié)合使用,用于實(shí)現(xiàn)多傳感器融合。
里程計(jì):里程計(jì)是一種通過(guò)測(cè)量輪子旋轉(zhuǎn)的信息來(lái)推算機(jī)器人位移的傳感器。雖然里程計(jì)的精度較低,但在SLAM中仍然是一個(gè)非常重要的傳感器。
此外,還有其他一些傳感器,如GPS、磁力計(jì)等,可以用于SLAM中。不同的傳感器有不同的特點(diǎn)和適用場(chǎng)景,根據(jù)具體的應(yīng)用需求選擇合適的傳感器非常重要。
常用的兩種地圖類(lèi)型
覆蓋柵格地圖(Occupany Grid Map)
一種常見(jiàn)的地圖表示方式,主要用于描述環(huán)境中每個(gè)位置的占據(jù)狀態(tài)。在覆蓋柵格地圖中,環(huán)境被分成一個(gè)個(gè)網(wǎng)格單元,每個(gè)網(wǎng)格單元表示一個(gè)位置,并記錄該位置的占據(jù)狀態(tài),一般用二進(jìn)制值表示,例如0表示空閑,1表示占據(jù)。
覆蓋柵格地圖可以通過(guò)激光雷達(dá)等傳感器獲得環(huán)境中障礙物的位置信息,將障礙物所在的網(wǎng)格單元標(biāo)記為占據(jù)狀態(tài)。同時(shí),通過(guò)機(jī)器人的位姿信息,可以將機(jī)器人所在的網(wǎng)格單元標(biāo)記為占據(jù)狀態(tài),并在地圖中繪制出機(jī)器人的軌跡。
覆蓋柵格地圖的優(yōu)點(diǎn)在于簡(jiǎn)單、易于實(shí)現(xiàn)和可視化,可以用于快速構(gòu)建地圖和進(jìn)行導(dǎo)航。但是,由于覆蓋柵格地圖要求環(huán)境被劃分為網(wǎng)格單元,因此地圖的精度和分辨率可能會(huì)受到限制。同時(shí),覆蓋柵格地圖還需要消耗大量的存儲(chǔ)空間和計(jì)算資源,因?yàn)樾枰S護(hù)大量的網(wǎng)格單元。
需要注意的是,覆蓋柵格地圖只記錄了占據(jù)狀態(tài),并沒(méi)有記錄障礙物的形狀和大小等信息。如果需要更精確的地圖表示方式,可以使用其他地圖表示方法,如點(diǎn)云地圖、邊緣地圖等。
點(diǎn)云地圖(Point Cloud Map)
主要用于描述環(huán)境中物體的三維形狀和位置信息。在點(diǎn)云地圖中,環(huán)境被表示為一組三維點(diǎn)云,每個(gè)點(diǎn)表示一個(gè)位置,并記錄該位置的屬性信息,如顏色、方向量、反射率等。
點(diǎn)云地圖可以通過(guò)激光雷達(dá)、攝像頭等傳感器獲得環(huán)境中物體的位置和形狀信息,通過(guò)點(diǎn)云配準(zhǔn)和濾波等算法,可以將多個(gè)點(diǎn)云融合成一個(gè)完整的地圖,用于機(jī)器人的定位、導(dǎo)航和避障等任務(wù)。
相對(duì)于覆蓋柵格地圖等二維地圖表示方式,點(diǎn)云地圖的優(yōu)點(diǎn)在于可以提供更加真實(shí)的環(huán)境信息,可以描述物體的三維形狀和位置信息,同時(shí)也可以用于識(shí)別和分類(lèi)物體。但是,點(diǎn)云地圖的缺點(diǎn)在于數(shù)據(jù)量較大,需要消耗大量的存儲(chǔ)空間和計(jì)算資源,同時(shí)對(duì)點(diǎn)云數(shù)據(jù)的處理和配準(zhǔn)等算法也比較復(fù)雜。
需要注意的是,點(diǎn)云地圖的精度和分辨率取決于傳感器的精度和采樣率等因素,而點(diǎn)云地圖的質(zhì)量對(duì)機(jī)器人的定位和導(dǎo)航等任務(wù)影響很大,因此需要對(duì)點(diǎn)云地圖進(jìn)行精細(xì)的處理和優(yōu)化。
SLAM工作原理
不同的SLAM算法,實(shí)現(xiàn)的具體細(xì)節(jié)會(huì)有所不同,但一般都包含前端和后端。
前端:
從傳感器中獲取原始數(shù)據(jù),并將這些數(shù)據(jù)與已有地圖進(jìn)行關(guān)聯(lián),從而確定機(jī)器人軌跡的過(guò)程。
數(shù)據(jù)采集:通過(guò)傳感器獲取機(jī)器人周?chē)h(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ì):通過(guò)數(shù)據(jù)關(guān)聯(lián)得到機(jī)器人的運(yùn)動(dòng)軌跡,可以是平移、旋轉(zhuǎn)等運(yùn)動(dòng)。
后端:
根據(jù)前端獲取的運(yùn)動(dòng)軌跡和地圖信息,對(duì)機(jī)器人的狀態(tài)、地圖和傳感器誤差等進(jìn)行估計(jì)和優(yōu)化的過(guò)程。
非線性?xún)?yōu)化:通過(guò)非線性最小二乘法等,對(duì)機(jī)器人姿態(tài)和地圖進(jìn)行優(yōu)化,使得機(jī)器人的位置和地圖更加準(zhǔn)確。
回環(huán)檢測(cè):識(shí)別機(jī)器人經(jīng)過(guò)的相似位置,避免累積誤差的產(chǎn)生。可以有效降低機(jī)器人的定位誤差,提高SLAM算法的精度和魯棒性。
根據(jù)傳感器的不同,SLAM算法可以分為二維激光SLAM、三維激光SLAM,以及視覺(jué)SLAM。
二維激光SLAM常用的有Cartographer、Karto,三維激光SLAM較流行的是LIO-SAM和LOAM系列,視覺(jué)SLAM主流的方案為ORB-SLAM3、VINS-Fusion
激光SLAM
激光SLAM發(fā)展已相對(duì)較為成熟,它的研究?jī)?nèi)容主要包括:傳感器數(shù)據(jù)處理、前端配準(zhǔn)方法、回環(huán)檢測(cè)、后端優(yōu)化、圖優(yōu)化、已知定位的建圖、3D激光與視覺(jué)融合、多傳感器融合。
光探測(cè)與測(cè)距(激光雷達(dá))方法主要使用激光傳感器(或距離傳感器)。對(duì)比相機(jī)、ToF 和其他傳感器,激光可以使精確度大大提高,常用于自動(dòng)駕駛汽車(chē)和無(wú)人機(jī)等高速移動(dòng)運(yùn)載設(shè)備的相關(guān)應(yīng)用。激光傳感器的輸出值一般是二維 (x, y) 或三維 (x, y, z) 點(diǎn)云數(shù)據(jù)。激光傳感器點(diǎn)云提供了高精確度距離測(cè)度數(shù)據(jù),特別適用于 SLAM 建圖。一般來(lái)說(shuō),首先通過(guò)點(diǎn)云匹配來(lái)連續(xù)估計(jì)移動(dòng)。然后,使用計(jì)算得出的移動(dòng)數(shù)據(jù)(移動(dòng)距離)進(jìn)行車(chē)輛定位。對(duì)于激光點(diǎn)云匹配,會(huì)使用迭代最近點(diǎn) (ICP) 和正態(tài)分布變換 (NDT) 等配準(zhǔn)算法。二維或三維點(diǎn)云地圖可以用柵格地圖或體素地圖表示。但就密度而言,點(diǎn)云不及圖像精細(xì),因此并不總能提供充足的特征來(lái)進(jìn)行匹配。例如,在障礙物較少的地方,將難以進(jìn)行點(diǎn)云匹配,因此可能導(dǎo)致跟丟車(chē)輛。此外,點(diǎn)云匹配通常需要高處理能力,因此必須優(yōu)化流程來(lái)提高速度。鑒于存在這些挑戰(zhàn),自動(dòng)駕駛汽車(chē)定位可能需要融合輪式測(cè)距、全球?qū)Ш叫l(wèi)星系統(tǒng) (GNSS) 和 IMU 數(shù)據(jù)等其他測(cè)量結(jié)果。倉(cāng)儲(chǔ)機(jī)器人等應(yīng)用場(chǎng)景通常采用二維激光雷達(dá) SLAM,而三維激光雷達(dá)點(diǎn)云 SLAM 則可用于無(wú)人機(jī)和自動(dòng)駕駛。
視覺(jué)SLAM
使用從相機(jī)和其他圖像傳感器采集的圖像。視覺(jué) SLAM 可以使用普通相機(jī)(廣角、魚(yú)眼和球形相機(jī))、復(fù)眼相機(jī)(立體相機(jī)和多相機(jī))和 RGB-D 相機(jī)(深度相機(jī)和 ToF 相機(jī))。視覺(jué) SLAM 所需的相機(jī)價(jià)格相對(duì)低廉,因此實(shí)現(xiàn)成本較低。此外,相機(jī)可以提供大量信息,因此還可以用來(lái)檢測(cè)路標(biāo)(即之前測(cè)量過(guò)的位置)。路標(biāo)檢測(cè)還可以與基于圖的優(yōu)化結(jié)合使用,這有助于靈活實(shí)現(xiàn) SLAM。使用單個(gè)相機(jī)作為唯一傳感器的 vSLAM 稱(chēng)為單目 SLAM,此時(shí)難以定義深度。這個(gè)問(wèn)題可以通過(guò)以下方式解決:檢測(cè)待定位圖像中的 AR 標(biāo)記、棋盤(pán)格或其他已知目標(biāo),或者將相機(jī)信息與其他傳感器信息融合,例如測(cè)量速度和方向等物理量的慣性測(cè)量單元 (IMU) 信息。vSLAM 相關(guān)的技術(shù)包括運(yùn)動(dòng)重建 (SfM)、視覺(jué)測(cè)距和捆綁調(diào)整。視覺(jué) SLAM 算法可以大致分為兩類(lèi)。稀疏方法:匹配圖像的特征點(diǎn)并使用 PTAM 和 ORB-SLAM 等算法。稠密方法:使用圖像的總體亮度以及 DTAM、LSD-SLAM、DSO 和 SVO 等算法。
視覺(jué)SLAM整體流程大致可以概括為五步:
(1)傳感器信息讀取
在視覺(jué)SLAM中主要為相機(jī)圖像信息的讀取和預(yù)處理。如果是在機(jī)器人中,還可能有碼盤(pán)、慣性傳感器等信息的讀取和同步。
(2)視覺(jué)里程計(jì) (Visual Odometry,VO)
視覺(jué)里程計(jì)的任務(wù)是估算相鄰圖像間相機(jī)的運(yùn)動(dòng),以及局部地圖的樣子。VO又稱(chēng)為前端(FrontEnd)。
(3)后端優(yōu)化(Optimization)
后端接受不同時(shí)刻視覺(jué)里程計(jì)測(cè)量的相機(jī)位姿,以及回環(huán)檢測(cè)的信息,對(duì)它們進(jìn)行優(yōu)化,得到全局一致的軌跡和地圖。由于接在VO之后,又稱(chēng)為后端(Back End)。
(4)回環(huán)檢測(cè)(Loop Closing)
回環(huán)檢測(cè)判斷機(jī)器人是否到達(dá)過(guò)先前的位置。如果檢測(cè)到回環(huán),它會(huì)把信息提供給后端進(jìn)行處理。
(5)建圖(Mapping)
它根據(jù)估計(jì)的軌跡,建立與任務(wù)要求對(duì)應(yīng)的地圖。
其整體流程圖大致如下
SLAM算法實(shí)現(xiàn)4要素
地圖表示,比如dense和sparse都是它的不同表達(dá)方式,這個(gè)需要根據(jù)實(shí)際場(chǎng)景需求去抉擇
信息感知,需要考慮如何全面的感知這個(gè)環(huán)境,RGBD攝像頭FOV通常比較小,但激光雷達(dá)比較大
數(shù)據(jù)關(guān)聯(lián),不同的sensor的數(shù)據(jù)類(lèi)型、時(shí)間戳、坐標(biāo)系表達(dá)方式各有不同,需要統(tǒng)一處理
定位與構(gòu)圖,就是指怎么實(shí)現(xiàn)位姿估計(jì)和建模,這里面涉及到很多數(shù)學(xué)問(wèn)題,物理模型建立,狀態(tài)估計(jì)和優(yōu)化
其他的還有回環(huán)檢測(cè)問(wèn)題,探索問(wèn)題(exploration),以及綁架問(wèn)題(kidnapping)。
6大主流SLAM算法
Cartographer
由谷歌開(kāi)發(fā)的一款基于激光雷達(dá)和RGB-D相機(jī)數(shù)據(jù)的SLAM算法。可以跨平臺(tái)使用,支持Lidar、IMU、Odemetry、GPS、Landmark等多種傳感器配置,被廣泛用于機(jī)器人導(dǎo)航、自動(dòng)駕駛等領(lǐng)域。
Cartographer系統(tǒng)架構(gòu)圖
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系統(tǒng)架構(gòu)圖
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)軌跡的建圖。
LIO-SAM系統(tǒng)架構(gòu)圖
前端在傳統(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ù)的特征,如空間聚類(lèi)、連續(xù)性約束等來(lái)估計(jì)位姿。
LOAM系統(tǒng)架構(gòu)圖
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ì)。
基于LOAM系統(tǒng)的地圖構(gòu)建局部
ORB-SLAM3
當(dāng)前最優(yōu)秀的基于特征點(diǎn)的視覺(jué)SLAM系統(tǒng)之一,支持單目、雙目、RGB-D等多種相機(jī)模式,在特征提取、關(guān)鍵幀選取、地圖維護(hù)、位姿優(yōu)化等方面進(jìn)行了優(yōu)化,并能建立短期、中期和長(zhǎng)期的數(shù)據(jù)關(guān)聯(lián),使得該系統(tǒng)兼具精度和魯棒性。
ORB-SLAM3系統(tǒng)架構(gòu)圖
前端視覺(jué)里程計(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
一種基于視覺(jué)慣性傳感器的視覺(jué)SLAM算法。它將視覺(jué)和慣性信息進(jìn)行融合,來(lái)提高機(jī)器人在未知環(huán)境下的定位和導(dǎo)航能力。
VINS-Fusion系統(tǒng)架構(gòu)圖
前端和后端之間通過(guò)一個(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ì)。
SLAM方案選擇
1. 二維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)難度也不太高。
2. 三維SLAM則適用于機(jī)器人需要在三維空間中進(jìn)行建模和定位的場(chǎng)景,比如無(wú)人機(jī)在室外飛行、機(jī)器人在戶(hù)外環(huán)境中進(jìn)行探測(cè)等。
其中,LIO-SAM的魯棒性和實(shí)時(shí)性表現(xiàn)相對(duì)優(yōu)秀,適用于建圖面積和硬件資源有限的小型機(jī)器人應(yīng)用場(chǎng)景;在建圖面積和魯棒性方面比較弱的LOAM方案,適用于小而快速的機(jī)器人及小型場(chǎng)景的定位、建圖任務(wù)。
3.視覺(jué)SLAM通過(guò)攝像頭等可視傳感器來(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)綜合考慮。
SLAM應(yīng)用場(chǎng)景
隨著計(jì)算機(jī)處理速度顯著提升,且相機(jī)和激光測(cè)距儀等低成本傳感器大為普及,SLAM技術(shù)廣泛應(yīng)用于機(jī)器人、AR、VR、無(wú)人機(jī)、自動(dòng)駕駛等領(lǐng)域。
使用SLAM的掃地機(jī)器人可以使用滾輪轉(zhuǎn)數(shù)以及來(lái)自相機(jī)和其他成像傳感器的數(shù)據(jù)來(lái)確定移動(dòng)位置。機(jī)器人還可以同步使用相機(jī)和其他傳感器創(chuàng)建其周?chē)系K物的地圖,避免同一區(qū)域清潔兩次。即實(shí)現(xiàn)了定位和構(gòu)圖,從而保證了機(jī)器人可以按軌跡運(yùn)動(dòng),同時(shí)也降低了設(shè)備功耗。
SLAM 還用于許多其他應(yīng)用場(chǎng)景:
利用一個(gè)小攝像頭實(shí)現(xiàn)VR頭顯空間定位;
讓一隊(duì)移動(dòng)機(jī)器人在倉(cāng)庫(kù)中移動(dòng)并整理貨架;
讓自動(dòng)駕駛汽車(chē)停泊到空車(chē)位;
讓無(wú)人機(jī)在未知環(huán)境中完成送貨、無(wú)人機(jī)空中陣列表演等等。
SLAM面臨的挑戰(zhàn)
雖然 SLAM 已在某些場(chǎng)景下投入實(shí)際應(yīng)用,但是仍面臨諸多技術(shù)挑戰(zhàn)
(1)定位誤差累積,導(dǎo)致與實(shí)際值產(chǎn)生偏差
SLAM會(huì)估計(jì)連續(xù)移動(dòng),并容許一定的誤差。但是誤差會(huì)隨著時(shí)間累積,導(dǎo)致與實(shí)際值產(chǎn)生明顯偏差。誤差還會(huì)導(dǎo)致地圖數(shù)據(jù)瓦解或失真,讓后續(xù)搜索變得困難。我們來(lái)看一個(gè)繞正方形通道行駛的例子。隨著誤差累積,機(jī)器人的起點(diǎn)和終點(diǎn)對(duì)不上了。這稱(chēng)為閉環(huán)問(wèn)題。這類(lèi)位姿估計(jì)誤差不可避免。我們必須設(shè)法檢測(cè)到閉環(huán),并確定如何修正或抵消累積的誤差。對(duì)策之一是記住之前到過(guò)的某處的某些特征,將其作為路標(biāo),從而最小化定位誤差。構(gòu)建位姿圖有助于修正誤差。將誤差最小化問(wèn)題視為優(yōu)化問(wèn)題進(jìn)行求解,以生成更準(zhǔn)確的地圖數(shù)據(jù)。這種優(yōu)化在視覺(jué) SLAM 中稱(chēng)為捆綁調(diào)整。
(2)定位失敗,地圖上的位置丟失
圖像和點(diǎn)云建圖不考慮機(jī)器人的移動(dòng)特征。在某些情況下,這種方法會(huì)生成不連續(xù)的位置估計(jì)。例如,可能會(huì)有計(jì)算結(jié)果顯示,以 1 米/秒速度移動(dòng)的機(jī)器人突然向前“瞬移”了 10 米。避免這種定位失敗的辦法有兩種:一是使用恢復(fù)算法;二是將運(yùn)動(dòng)模型與多個(gè)傳感器融合,以基于傳感器數(shù)據(jù)計(jì)算。有多種方法可以實(shí)現(xiàn)運(yùn)動(dòng)模型的傳感器融合。一種常見(jiàn)方法是使用卡爾曼濾波進(jìn)行定位。由于大部分差速驅(qū)動(dòng)機(jī)器人和四輪車(chē)輛一般都使用非線性運(yùn)動(dòng)模型,因此通常會(huì)使用擴(kuò)展卡爾曼濾波器和粒子濾波器(蒙特卡羅定位)。某些情況下,也可以使用無(wú)跡卡爾曼濾波器等更加靈活的貝葉斯濾波器。一些常用傳感器是慣性測(cè)量裝置,例如慣性測(cè)量單元 (IMU)、航姿參考系統(tǒng) (AHRS)、慣性導(dǎo)航系統(tǒng) (INS)、加速度計(jì)傳感器、陀螺儀傳感器和磁力傳感器。安裝到車(chē)輛的輪式編碼器通常用于測(cè)距。定位失敗時(shí),一種恢復(fù)對(duì)策是記住之前經(jīng)過(guò)的某個(gè)位置的關(guān)鍵幀,將其作為路標(biāo)。搜索路標(biāo)時(shí),會(huì)以特定方法進(jìn)行特征提取以便高速掃描。有些方法基于圖像特征,例如特征袋 (BoF) 和視覺(jué)詞袋 (BoVW)。近年來(lái),人們也使用深度學(xué)習(xí)來(lái)比較特征距離。
(3)圖像處理、點(diǎn)云處理和優(yōu)化帶來(lái)高計(jì)算成本
在車(chē)輛硬件上實(shí)現(xiàn) SLAM 時(shí),計(jì)算成本是個(gè)問(wèn)題。計(jì)算通常在處理能力有限的緊湊型低功耗嵌入式微處理器上執(zhí)行。為了實(shí)現(xiàn)準(zhǔn)確定位,必須高頻率執(zhí)行圖像處理和點(diǎn)云匹配。此外,閉環(huán)等優(yōu)化計(jì)算都是高成本計(jì)算流程。此處的挑戰(zhàn)在于如何在嵌入式微處理器上執(zhí)行這種高成本處理。對(duì)策之一是并行運(yùn)行多個(gè)不同流程。例如,用于匹配流程前處理的特征提取就相對(duì)適合并行運(yùn)行。使用多核 CPU 進(jìn)行處理時(shí),單指令多數(shù)據(jù) (SIMD) 計(jì)算和嵌入式 GPU 在某些情況下可以進(jìn)一步提升速度。而且,由于位姿圖優(yōu)化可以在相對(duì)長(zhǎng)的周期里執(zhí)行,降低其優(yōu)先級(jí)并以規(guī)律間隔執(zhí)行也能提高性能。
審核編輯:湯梓紅
-
傳感器
+關(guān)注
關(guān)注
2560文章
52061瀏覽量
760746 -
攝像頭
+關(guān)注
關(guān)注
60文章
4912瀏覽量
97273 -
SLAM
+關(guān)注
關(guān)注
23文章
430瀏覽量
32218 -
激光雷達(dá)
+關(guān)注
關(guān)注
970文章
4124瀏覽量
191419
原文標(biāo)題:一文讀懂SLAM關(guān)鍵技術(shù)
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
單片機(jī)關(guān)鍵技術(shù)基礎(chǔ)詳解(一)

一文讀懂RRU關(guān)鍵技術(shù)

評(píng)論