1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        一文讀懂SLAM關鍵技術

        共 8890字,需瀏覽 18分鐘

         ·

        2023-09-21 21:59

        點擊下方卡片,關注“新機器視覺”公眾號

        視覺/圖像重磅干貨,第一時間送達

         

        來源: 我想我思


        SLAM(Simultaneous Localization and Mapping)同步定位與地圖構建,一種同時實現(xiàn)設備自身定位和環(huán)境地圖構建的技術。

        原理是使用相機、激光雷達、慣性測量單元等傳感器,來收集環(huán)境信息,然后用算法將這些信息融合起來,以確定設備在未知環(huán)境中的位置,并構建一張環(huán)境地圖。

        通俗解釋為:

        1. 用眼睛觀察周圍地標如建筑、大樹、花壇等,并記住他們的特征(特征提?。?/span>

        2. 在自己的腦海中,根據(jù)雙目獲得的信息,把特征地標在三維地圖中重建出來(三維重建)

        3. 當自己在行走時,不斷獲取新的特征地標,并且校正自己頭腦中的地圖模型(bundle adjustment or EKF)

        4. 根據(jù)自己前一段時間行走獲得的特征地標,確定自己的位置(trajectory)

        5. 當無意中走了很長一段路的時候,和腦海中的以往地標進行匹配,看一看是否走回了原路(loop-closure detection)。


        SLAM包括以下幾個方面

        1. 傳感器:激光雷達、攝像頭、慣性測量單元(IMU)、里程計等。這些傳感器可以提供設備在運動過程中所需要的信息,如距離、角度、速度、方向等。

        2. 設備運動模型:運動模型用于估計設備的位姿,例如里程計模型、速度模型、加速度模型等。

        3. 視覺算法:視覺算法主要用于設備在環(huán)境中的感知和定位,如特征提取、特征匹配、圖像配準等。

        4. 濾波算法:濾波算法用于估計設備的位姿和地圖中不同位置的概率分布,如卡爾曼濾波器、粒子濾波器等。

        5. 優(yōu)化算法:優(yōu)化算法用于優(yōu)化設備的位姿和地圖,如擴展信息濾波器、位姿圖優(yōu)化等。

        6. 地圖表示:地圖表示方式可以有多種,如柵格地圖、拓撲地圖、點云地圖等。


        常用的SLAM傳感器

        1. 激光雷達:激光雷達是一種通過發(fā)射激光束來探測目標并測量距離的傳感器。它可以提供高精度、高分辨率的距離和角度信息,被廣泛應用于SLAM中。

        2. 攝像頭:攝像頭可以通過拍攝環(huán)境中的圖像來獲取場景的信息,如特征點、輪廓等。在SLAM中,攝像頭可以用于實現(xiàn)視覺SLAM或者輔助其他傳感器進行定位。攝像頭種類有單目、雙目、單目結構光、雙目結構光、ToF。

        3. 慣性測量單元(IMU):IMU可以測量機器人的加速度和角速度等信息,通過積分可以得到機器人的位姿信息。IMU通常與其他傳感器結合使用,用于實現(xiàn)多傳感器融合。

        4. 里程計:里程計是一種通過測量輪子旋轉的信息來推算機器人位移的傳感器。雖然里程計的精度較低,但在SLAM中仍然是一個非常重要的傳感器。

        此外,還有其他一些傳感器,如GPS、磁力計等,可以用于SLAM中。不同的傳感器有不同的特點和適用場景,根據(jù)具體的應用需求選擇合適的傳感器非常重要。

        常用的兩種地圖類型

        1. 覆蓋柵格地圖(Occupany Grid Map)

        一種常見的地圖表示方式,主要用于描述環(huán)境中每個位置的占據(jù)狀態(tài)。在覆蓋柵格地圖中,環(huán)境被分成一個個網格單元,每個網格單元表示一個位置,并記錄該位置的占據(jù)狀態(tài),一般用二進制值表示,例如0表示空閑,1表示占據(jù)。

        覆蓋柵格地圖可以通過激光雷達等傳感器獲得環(huán)境中障礙物的位置信息,將障礙物所在的網格單元標記為占據(jù)狀態(tài)。同時,通過機器人的位姿信息,可以將機器人所在的網格單元標記為占據(jù)狀態(tài),并在地圖中繪制出機器人的軌跡。

        覆蓋柵格地圖的優(yōu)點在于簡單、易于實現(xiàn)和可視化,可以用于快速構建地圖和進行導航。但是,由于覆蓋柵格地圖要求環(huán)境被劃分為網格單元,因此地圖的精度和分辨率可能會受到限制。同時,覆蓋柵格地圖還需要消耗大量的存儲空間和計算資源,因為需要維護大量的網格單元。

        需要注意的是,覆蓋柵格地圖只記錄了占據(jù)狀態(tài),并沒有記錄障礙物的形狀和大小等信息。如果需要更精確的地圖表示方式,可以使用其他地圖表示方法,如點云地圖、邊緣地圖等。

        1. 點云地圖(Point Cloud Map)

        主要用于描述環(huán)境中物體的三維形狀和位置信息。在點云地圖中,環(huán)境被表示為一組三維點云,每個點表示一個位置,并記錄該位置的屬性信息,如顏色、方向量、反射率等。

        點云地圖可以通過激光雷達、攝像頭等傳感器獲得環(huán)境中物體的位置和形狀信息,通過點云配準和濾波等算法,可以將多個點云融合成一個完整的地圖,用于機器人的定位、導航和避障等任務。

        相對于覆蓋柵格地圖等二維地圖表示方式,點云地圖的優(yōu)點在于可以提供更加真實的環(huán)境信息,可以描述物體的三維形狀和位置信息,同時也可以用于識別和分類物體。但是,點云地圖的缺點在于數(shù)據(jù)量較大,需要消耗大量的存儲空間和計算資源,同時對點云數(shù)據(jù)的處理和配準等算法也比較復雜。

        需要注意的是,點云地圖的精度和分辨率取決于傳感器的精度和采樣率等因素,而點云地圖的質量對機器人的定位和導航等任務影響很大,因此需要對點云地圖進行精細的處理和優(yōu)化。

        SLAM工作原理


        不同的SLAM算法,實現(xiàn)的具體細節(jié)會有所不同,但一般都包含前端和后端。

        前端:

        從傳感器中獲取原始數(shù)據(jù),并將這些數(shù)據(jù)與已有地圖進行關聯(lián),從而確定機器人軌跡的過程。

        • 數(shù)據(jù)采集:通過傳感器獲取機器人周圍環(huán)境的數(shù)據(jù),如激光點云數(shù)據(jù)、圖像數(shù)據(jù)等。

        • 數(shù)據(jù)時空同步:將從不同傳感器或不同時間戳接收到的數(shù)據(jù)進行同步,以便后續(xù)配準。

        • 特征提?。簭牟杉臄?shù)據(jù)中提取用于建圖的特征點,如關鍵點、特征描述等。

        • 數(shù)據(jù)融合:將不同傳感器獲取的數(shù)據(jù)融合起來,提高建圖的準確性和穩(wěn)定性。

        • 數(shù)據(jù)關聯(lián):將當前幀的特征與之前的地圖,或者其他幀之間的特征進行匹配,以確定機器人的運動軌跡。

        • 運動估計:通過數(shù)據(jù)關聯(lián)得到機器人的運動軌跡,可以是平移、旋轉等運動。


        后端:

        根據(jù)前端獲取的運動軌跡和地圖信息,對機器人的狀態(tài)、地圖和傳感器誤差等進行估計和優(yōu)化的過程。

        • 非線性優(yōu)化:通過非線性最小二乘法等,對機器人姿態(tài)和地圖進行優(yōu)化,使得機器人的位置和地圖更加準確。

        • 回環(huán)檢測:識別機器人經過的相似位置,避免累積誤差的產生。可以有效降低機器人的定位誤差,提高SLAM算法的精度和魯棒性。


        根據(jù)傳感器的不同,SLAM算法可以分為二維激光SLAM、三維激光SLAM,以及視覺SLAM。

        二維激光SLAM常用的有Cartographer、Karto,三維激光SLAM較流行的是LIO-SAM和LOAM系列,視覺SLAM主流的方案為ORB-SLAM3、VINS-Fusion

        激光SLAM

        激光SLAM發(fā)展已相對較為成熟,它的研究內容主要包括:傳感器數(shù)據(jù)處理、前端配準方法、回環(huán)檢測、后端優(yōu)化、圖優(yōu)化、已知定位的建圖、3D激光與視覺融合、多傳感器融合。

        光探測與測距(激光雷達)方法主要使用激光傳感器(或距離傳感器)。對比相機、ToF 和其他傳感器,激光可以使精確度大大提高,常用于自動駕駛汽車和無人機等高速移動運載設備的相關應用。激光傳感器的輸出值一般是二維 (x, y) 或三維 (x, y, z) 點云數(shù)據(jù)。激光傳感器點云提供了高精確度距離測度數(shù)據(jù),特別適用于 SLAM 建圖。一般來說,首先通過點云匹配來連續(xù)估計移動。然后,使用計算得出的移動數(shù)據(jù)(移動距離)進行車輛定位。對于激光點云匹配,會使用迭代最近點 (ICP) 和正態(tài)分布變換 (NDT) 等配準算法。二維或三維點云地圖可以用柵格地圖或體素地圖表示。但就密度而言,點云不及圖像精細,因此并不總能提供充足的特征來進行匹配。例如,在障礙物較少的地方,將難以進行點云匹配,因此可能導致跟丟車輛。此外,點云匹配通常需要高處理能力,因此必須優(yōu)化流程來提高速度。鑒于存在這些挑戰(zhàn),自動駕駛汽車定位可能需要融合輪式測距、全球導航衛(wèi)星系統(tǒng) (GNSS) 和 IMU 數(shù)據(jù)等其他測量結果。倉儲機器人等應用場景通常采用二維激光雷達 SLAM,而三維激光雷達點云 SLAM 則可用于無人機和自動駕駛。

        視覺SLAM

        使用從相機和其他圖像傳感器采集的圖像。視覺 SLAM 可以使用普通相機(廣角、魚眼和球形相機)、復眼相機(立體相機和多相機)和 RGB-D 相機(深度相機和 ToF 相機)。視覺 SLAM 所需的相機價格相對低廉,因此實現(xiàn)成本較低。此外,相機可以提供大量信息,因此還可以用來檢測路標(即之前測量過的位置)。路標檢測還可以與基于圖的優(yōu)化結合使用,這有助于靈活實現(xiàn) SLAM。使用單個相機作為唯一傳感器的 vSLAM 稱為單目 SLAM,此時難以定義深度。這個問題可以通過以下方式解決:檢測待定位圖像中的 AR 標記、棋盤格或其他已知目標,或者將相機信息與其他傳感器信息融合,例如測量速度和方向等物理量的慣性測量單元 (IMU) 信息。vSLAM 相關的技術包括運動重建 (SfM)、視覺測距和捆綁調整。視覺 SLAM 算法可以大致分為兩類。稀疏方法:匹配圖像的特征點并使用 PTAM 和 ORB-SLAM 等算法。稠密方法:使用圖像的總體亮度以及 DTAM、LSD-SLAM、DSO 和 SVO 等算法。

        視覺SLAM整體流程大致可以概括為五步:

        (1)傳感器信息讀取

        在視覺SLAM中主要為相機圖像信息的讀取和預處理。如果是在機器人中,還可能有碼盤、慣性傳感器等信息的讀取和同步。

        (2)視覺里程計 (Visual Odometry,VO)

        視覺里程計的任務是估算相鄰圖像間相機的運動,以及局部地圖的樣子。VO又稱為前端(FrontEnd)。

        (3)后端優(yōu)化(Optimization)

        后端接受不同時刻視覺里程計測量的相機位姿,以及回環(huán)檢測的信息,對它們進行優(yōu)化,得到全局一致的軌跡和地圖。由于接在VO之后,又稱為后端(Back End)。

        (4)回環(huán)檢測(Loop Closing)

        回環(huán)檢測判斷機器人是否到達過先前的位置。如果檢測到回環(huán),它會把信息提供給后端進行處理。

        (5)建圖(Mapping)

        它根據(jù)估計的軌跡,建立與任務要求對應的地圖。

        其整體流程圖大致如下

        SLAM算法實現(xiàn)4要素

        1. 地圖表示,比如dense和sparse都是它的不同表達方式,這個需要根據(jù)實際場景需求去抉擇

        2. 信息感知,需要考慮如何全面的感知這個環(huán)境,RGBD攝像頭FOV通常比較小,但激光雷達比較大

        3. 數(shù)據(jù)關聯(lián),不同的sensor的數(shù)據(jù)類型、時間戳、坐標系表達方式各有不同,需要統(tǒng)一處理

        4. 定位與構圖,就是指怎么實現(xiàn)位姿估計和建模,這里面涉及到很多數(shù)學問題,物理模型建立,狀態(tài)估計和優(yōu)化

        其他的還有回環(huán)檢測問題,探索問題(exploration),以及綁架問題(kidnapping)。

        6大主流SLAM算法

        • Cartographer

        由谷歌開發(fā)的一款基于激光雷達和RGB-D相機數(shù)據(jù)的SLAM算法??梢钥缙脚_使用,支持Lidar、IMU、Odemetry、GPS、Landmark等多種傳感器配置,被廣泛用于機器人導航、自動駕駛等領域。

        Cartographer系統(tǒng)架構圖

        Cartographer算法在前端完成占據(jù)柵格地圖的構建,得出激光雷達掃描幀的最佳位姿后,將掃描幀插入到子地圖Submap中,得到局部優(yōu)化的子地圖并記錄位姿。

        后端根據(jù)掃描幀間的位姿關系進行全局的地圖優(yōu)化,并使用分支定界法加速求解,進而得出閉環(huán)掃描幀在全局地圖中的最佳位姿。

        • Karto

        一種基于位姿圖優(yōu)化的SLAM方法,使用了高度優(yōu)化和非迭代的cholesky矩陣對系統(tǒng)進行解耦并求解。適用于各種室內環(huán)境,可以處理靜態(tài)和動態(tài)障礙物。

        Karto系統(tǒng)架構圖

        Karto使用圖論的標準形式表示地圖,其中每個節(jié)點代表了移動機器人運行軌跡上的一個位姿點,以及當前位姿下傳感器返回的感知信息。

        節(jié)點之間的邊,代表了相鄰機器人位姿之間的位移矢量。對每一個新的位姿點定位,需要節(jié)點間匹配關系和邊帶來的約束,保持定位估計誤差的前后一致。

        • LIO-SAM

        一種新型的激光慣性導航系統(tǒng),結合了激光雷達和慣性測量單元數(shù)據(jù),可以實現(xiàn)機器人的高精度定位和運動軌跡的建圖。

        LIO-SAM系統(tǒng)架構圖

        前端在傳統(tǒng)的LIDAR-SLAM基礎上,利用卡爾曼濾波和因子圖優(yōu)化算法,將激光雷達和IMU數(shù)據(jù)融合,進一步提高機器人的定位精度和建圖效果。后端加入優(yōu)化算法,使得機器人的定位精度和建圖精度都得到極大提升。

        • LOAM系列

        一種成熟的基于激光雷達的SLAM算法,包括LOAM、LOAM-Velodyne、LOAM-LiDAR等。

        其中LOAM使用3D激光雷達的數(shù)據(jù)來進行建圖和定位,利用點云數(shù)據(jù)的特征,如空間聚類、連續(xù)性約束等來估計位姿。

        LOAM系統(tǒng)架構圖

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

        基于LOAM系統(tǒng)的地圖構建局部

        • ORB-SLAM3

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

        ORB-SLAM3系統(tǒng)架構圖

        前端視覺里程計基于ORB特征,建立圖像幀之間特征點的數(shù)據(jù)關聯(lián),以及圖像特征點和地圖點之間3D到2D的數(shù)據(jù)關聯(lián),具有較好的魯棒性和提取效率,回環(huán)檢測和重定位也基于ORB特征實現(xiàn)。

        • VINS-Fusion

        一種基于視覺慣性傳感器的視覺SLAM算法。它將視覺和慣性信息進行融合,來提高機器人在未知環(huán)境下的定位和導航能力。

        VINS-Fusion系統(tǒng)架構圖

        前端和后端之間通過一個狀態(tài)傳遞機制來交換數(shù)據(jù)。前端將IMU和圖像數(shù)據(jù)合并,生成一組狀態(tài)量,然后將其傳遞給后端進行融合和優(yōu)化;后端將優(yōu)化后的狀態(tài)量傳遞回前端,以便更新機器人的運動估計。

        SLAM方案選擇

        1. 二維SLAM就適合在二維平面上運動的機器人,如掃地機、配送機器人、迎賓機器人等。

        具體來看,Cartographer的總體表現(xiàn)最為優(yōu)秀,定位精度和建圖質量都很高,同時魯棒性也很強,能承受一定的噪聲和漂移干擾,可以應用于大范圍建圖;Karto適合建圖面積不是太大的低成本應用場景,可以在一定程度上滿足建圖需求,同時工程實現(xiàn)難度也不太高。

        2. 三維SLAM則適用于機器人需要在三維空間中進行建模和定位的場景,比如無人機在室外飛行、機器人在戶外環(huán)境中進行探測等。

        其中,LIO-SAM的魯棒性和實時性表現(xiàn)相對優(yōu)秀,適用于建圖面積和硬件資源有限的小型機器人應用場景;在建圖面積和魯棒性方面比較弱的LOAM方案,適用于小而快速的機器人及小型場景的定位、建圖任務。

        3.視覺SLAM通過攝像頭等可視傳感器來獲取機器人與環(huán)境之間的相對位置關系,不需要其他傳感器,更為輕量化。但對于光照變化、運動模糊等情況的處理仍存在挑戰(zhàn)。

        定位精度和實時性都比較高的ORB-SLAM3,面對場景變化能夠快速適應,適用于多種場景的建圖。與之相比,VINS-Fusion適用于對定位精度要求較高,且建圖面積相對較小的機器人應用場景。

        總的來說,這些算法各有優(yōu)劣,如何選擇最合適的算法,需要根據(jù)具體的應用場景和實際需求來綜合考慮。

        SLAM應用場景

        隨著計算機處理速度顯著提升,且相機和激光測距儀等低成本傳感器大為普及,SLAM技術廣泛應用于機器人、AR、VR、無人機、自動駕駛等領域。

        使用SLAM的掃地機器人可以使用滾輪轉數(shù)以及來自相機和其他成像傳感器的數(shù)據(jù)來確定移動位置。機器人還可以同步使用相機和其他傳感器創(chuàng)建其周圍障礙物的地圖,避免同一區(qū)域清潔兩次。即實現(xiàn)了定位和構圖,從而保證了機器人可以按軌跡運動,同時也降低了設備功耗。

        SLAM 還用于許多其他應用場景:

        • 利用一個小攝像頭實現(xiàn)VR頭顯空間定位;

        • 讓一隊移動機器人在倉庫中移動并整理貨架;

        • 讓自動駕駛汽車停泊到空車位;

        • 讓無人機在未知環(huán)境中完成送貨、無人機空中陣列表演等等。

        SLAM面臨的挑戰(zhàn)

        雖然 SLAM 已在某些場景下投入實際應用,但是仍面臨諸多技術挑戰(zhàn)

        (1)定位誤差累積,導致與實際值產生偏差

        SLAM會估計連續(xù)移動,并容許一定的誤差。但是誤差會隨著時間累積,導致與實際值產生明顯偏差。誤差還會導致地圖數(shù)據(jù)瓦解或失真,讓后續(xù)搜索變得困難。我們來看一個繞正方形通道行駛的例子。隨著誤差累積,機器人的起點和終點對不上了。這稱為閉環(huán)問題。這類位姿估計誤差不可避免。我們必須設法檢測到閉環(huán),并確定如何修正或抵消累積的誤差。對策之一是記住之前到過的某處的某些特征,將其作為路標,從而最小化定位誤差。構建位姿圖有助于修正誤差。將誤差最小化問題視為優(yōu)化問題進行求解,以生成更準確的地圖數(shù)據(jù)。這種優(yōu)化在視覺 SLAM 中稱為捆綁調整。

        (2)定位失敗,地圖上的位置丟失

        圖像和點云建圖不考慮機器人的移動特征。在某些情況下,這種方法會生成不連續(xù)的位置估計。例如,可能會有計算結果顯示,以 1 米/秒速度移動的機器人突然向前“瞬移”了 10 米。避免這種定位失敗的辦法有兩種:一是使用恢復算法;二是將運動模型與多個傳感器融合,以基于傳感器數(shù)據(jù)計算。有多種方法可以實現(xiàn)運動模型的傳感器融合。一種常見方法是使用卡爾曼濾波進行定位。由于大部分差速驅動機器人和四輪車輛一般都使用非線性運動模型,因此通常會使用擴展卡爾曼濾波器和粒子濾波器(蒙特卡羅定位)。某些情況下,也可以使用無跡卡爾曼濾波器等更加靈活的貝葉斯濾波器。一些常用傳感器是慣性測量裝置,例如慣性測量單元 (IMU)、航姿參考系統(tǒng) (AHRS)、慣性導航系統(tǒng) (INS)、加速度計傳感器、陀螺儀傳感器和磁力傳感器。安裝到車輛的輪式編碼器通常用于測距。定位失敗時,一種恢復對策是記住之前經過的某個位置的關鍵幀,將其作為路標。搜索路標時,會以特定方法進行特征提取以便高速掃描。有些方法基于圖像特征,例如特征袋 (BoF) 和視覺詞袋 (BoVW)。近年來,人們也使用深度學習來比較特征距離。

        (3)圖像處理、點云處理和優(yōu)化帶來高計算成本

        在車輛硬件上實現(xiàn) SLAM 時,計算成本是個問題。計算通常在處理能力有限的緊湊型低功耗嵌入式微處理器上執(zhí)行。為了實現(xiàn)準確定位,必須高頻率執(zhí)行圖像處理和點云匹配。此外,閉環(huán)等優(yōu)化計算都是高成本計算流程。此處的挑戰(zhàn)在于如何在嵌入式微處理器上執(zhí)行這種高成本處理。對策之一是并行運行多個不同流程。例如,用于匹配流程前處理的特征提取就相對適合并行運行。使用多核 CPU 進行處理時,單指令多數(shù)據(jù) (SIMD) 計算和嵌入式 GPU 在某些情況下可以進一步提升速度。而且,由于位姿圖優(yōu)化可以在相對長的周期里執(zhí)行,降低其優(yōu)先級并以規(guī)律間隔執(zhí)行也能提高性能。

        來源: 我想我思我想我死

        聲明:部分內容來源于網絡,僅供讀者學習、交流之目的。文章版權歸原作者所有。如有不妥,請聯(lián)系刪除。


        —THE END—

        瀏覽 625
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            91中文字幕+乱码 | 国产内射在线观看 | 西西444WWW无码大胆图 | 黄片操逼视频大全 | 逼逼AV网站 | brazzersxxxxhdhdkaylanile | 五月天欧美性爱 | 91精品久久久久久久久久久久 | 清清草在线视频 | 电家庭影院午夜 |