SLAM原理基礎

2021-02-21 上官致遠

機器人想要在未知的環境中實現自主移動、自主避障就必須知道自己在哪「定位」,環境中有什麼障礙物、周圍是什麼情況「建圖」等。SLAM就是幫助機器人實現定位與地圖構建功能的一種方案或技術。SLAM的全稱為Simultaneous Localization And Mapping即「同時定位與地圖構建」。它最早用於軍事核潛艇中的海底定位。最近幾年由於機器人、無人機、自動駕駛、AI以及VR和AR技術的發展,SLAM技術逐漸被人們熟知,因為SLAM技術是這些領域的核心與難點。

SLAM的實現方式有很多種,也有大量的硬體平臺可供選擇,比如思嵐科技的SLAMWARE,整套硬體平臺嵌入SLAM技術,配合自家產的雷射雷達以及ROS中的導航功能包可實現室內機器人的自主定位與導航。SLAM是一個概念而不是一個單一的算法,SLAM過程有很多步驟組成,包括地標提取、數據關聯、狀態估計、狀態更新以及地標更新等。並且每一個部分都可以由不同的算法來實現。其中EKF (Extended Kalman Filter)即擴展卡爾曼濾波即是一種實現SLAM過程的方法。

SLAM可以用於二維空間運動也可以用於三維空間運動,像目前流行的AR領域、無人機自主避障領域等即是SLAM的三維空間使用實例。

完成SLAM首先需要一個機器人移動平臺,可以藉助無人機,或者移動機器人來實現。移動機器人平臺一般選擇輪式,有全向移動方式或者兩輪移動方式。從輪子的轉動圈數可以大致估計機器人的運動裡程,但是這種方式通常是不準確的,因此還需要其他的測距設備來輔助完成機器人的位置估計。比如IMU慣性導航模塊以及雷射雷達測距設備等,當然還包括其他的單目、雙目等視覺傳感器設備。

雷射雷達可以掃描環境中的障礙物,通過SLAM過程生成帶有地標信息的環境地圖,提供給機器人。因為雷射雷達精度高、輸出效率高、不需要太多的計算過程,所以應用廣泛。但是雷射雷達並不便宜,並且雷射雷達不會檢測到玻璃這種透明的障礙物,也不能用於水下,因為水會阻礙光的傳輸,因此雷射雷達也有一定的應用場合限制。

視覺SLAM計算量很大,並且很容易受光照度的影響。但是近幾年隨著硬體性能的提升,視覺SLAM也得到快速的發展和應用。在大型的室外無人駕駛過程中一般同時選擇視覺傳感器、毫米波雷達、多線雷射雷達、IMU、GPS等多傳感器組合完成,並且車身周圍配備多臺同類型傳感器實現汽車對周圍環境的自動感知。

SLAM過程由若干步驟完成,其主要目的是利用環境來更新機器人的位置信息。大致過程包括地標提取、數據關聯、狀態估計、狀態更新以及地標更新等。

單純的依賴機器人的運動來估計其位置的方式是不準確的,因為機器人的裡程計通常存在一定的誤差。通常藉助雷射雷達等測距設備來獲取環境信息後與裡程計信息融合從而更準確的獲取機器人的位置。這裡通常有很多種方法實現,EKF即是常見的一種SLAM實現方式。EKF是SLAM的核心,它持續的對機器人的位置和周圍環境信息進行估計,通過迭代運算,較為準確的估計出機器人的位置。

下圖是SLAM的簡單過程描述:

機器人運動時,它的位置發生變化,機器人將裡程計觀測的信息以及雷射雷達獲取的地標信息進行關聯,EKF將當前觀測的位置、機器人的運動位置進行綜合運算,估計出機器人的準確位置信息。

通過幾張圖我們詳細的看一下位置估計的過程:

我們用一個三角形表示機器人,五角星表示地標;圖1中機器人首先通過雷射雷達測量地標相對於自身的距離和角度信息;圖2中機器人開始向前移動,到達一個新位置;機器人首先根據裡程計或運動方程預測它當前所處的位置;到達圖3中的位置後,機器人會通過雷射雷達重新測量各個地標相對於機器人的位置和角度信息。這個測量得到的距離和角度顯然不一定和機器人根據運動方程所估計的位置重合,並且機器人更傾向於相信通過雷射雷達測量得到的位置和角度信息;在圖4中我們用實線三角形表示的機器人位置,用虛線三角形表示機器人通過運動方程估計的位置;顯然兩個位置不重合,機器人這個時候通過EKF綜合預測和測量進行機器人真實位置的估計,圖5中的實線三角形表示通過EKF運算後估計出的位置;

機器人通常依賴裡程計來獲取自身運動狀態的估計,一般通過輪子的轉動圈數來實現,在和雷射雷達數據進行融合時必須要保證兩個數據信息的時間同步性,否則會造成狀態的錯誤估計;地標必須具備很強的區分性並易於觀測。地標太少不容易被觀察,並且地標不能隨意變動,一般選取靜止的物體作為觀測地標。

下面貼一張使用cartographer技術實現的SLAM實例,詳細可參考:https://github.com/googlecartographer/cartographer

下面是香港科技大學開源的基於單目視覺與慣導融合的SLAM技術實例,有ROS版本和IOS版本,研究價值很高,詳細可訪問:https://github.com/HKUST-Aerial-Robotics/VINS-Mono

SLAM技術隨著AI技術的發展逐漸被人們所熟知,2D的雷射雷達SLAM技術目前較為成熟,有很多實際的應用。視覺SLAM領域仍然存在很多問題,仍然有很大的研究和改進的空間。比如無人駕駛中的多傳感器數據融合、數據關聯的優化、迴環檢測機制以及重定位精度等問題。視覺SLAM也許是將來的重點研究領域和發展方向。

水平有限,歡迎指正交流。


SLAM學習資源匯總

STM32到底如何與ROS進行通信

打造一個強大的ROS開發IDE

ROS下使用MPU6050慣性測量模塊

嵌入式軟體開發的發展路線

誰的人生不迷茫

ROS通信模型之深度分析

新版 <李雷與韓梅梅>   深度好文

深度解析卡爾曼濾波在IMU中的使用

看完別人的故事,走回自己的路

打磨編程技術 提高職場認知

「尚程功夫」

如果覺得文章不錯,歡迎轉發給更多的人

相關焦點

  • SLAM基礎:相機與圖像
    針孔相機模型初中物理裡都會有一個小孔成像的實驗,這個小孔成像的模型可以看作是針孔相機模型的基礎。這裡盜圖一張,來自高博的《視覺slam十四講》如上圖所示,相機坐標係為O-x-y-z,想像人站在相機後面,O 為相機光心,z軸指向相機前方,x 軸向右而y 軸向下。
  • 新開源RadarSLAM: 不懼風雪雨霧夜的全天候大場景雷射SLAM!
    /摘要近年來,依靠各類傳感器的slam已經得到了廣泛使用。然而,slam算法在極端天氣下的魯棒性問題一直未得到解決。在本文中,作者提出了一種全天候,大場景下的雷達slam框架。通過全新的特徵匹配和概率點雲地圖實現了包括位姿估計、局部建圖、迴環檢測以及位姿圖優化一系列功能。作者在公開數據集和自己收集的數據集中進行了廣泛的實驗,結果表明了在各種惡劣天氣條件下,如黑夜、濃霧和大雪等天氣條件下。算法擁有良好的可靠性已經定位精度。
  • 【泡泡機器人公開課預告】閆志鑫-RGBD Direct SLAM 方法原理介紹
    2018年8月19日 (周日)上午 10:00,由閆志鑫給大家帶來一次公開課,公開課題目為:RGBD Direct SLAM 方法原理介紹
  • 我手寫了個SLAM算法(二)!
    針對my_slam_gmapping進行了如下三部分的改變(1)嵌入雷射雷達運動畸變去除到my_slam_gmapping中(2)對my_slam_gmapping的結構調整2.3、加入運動畸變去除的作用:作用(1)建圖效果明顯提升,低幀率雷射雷達也能達到高幀率的效果(2)地圖精度大幅提升,特別是走廊長度3、my_slam_gmapping
  • 2D雷射SLAM算法匯總
    GmappingGmapping是應用最為廣泛的2D slam方法,主要是利用RBPF(Rao-Blackwellized Particle Filters)方法,所以需要了解粒子濾波的方法(利用統計特性描述物理表達式下的結果)。Gmapping在RBPF算法上做了兩個主要的改進:改進提議分布和選擇性重採樣。Gmapping可以實時構建室內地圖,在構建小場景地圖所需的計算量較小且精度較高。
  • SLAM和三維重建有什麼區別?
    akkaze-鄭安坤稍微修改一下這個回答,準確點說slam應該去和sfm比較,不能直接和三維重建比較。slam最重要的作用是定位,相機要知道自己的姿態,因為需要的姿態通常都是3d的,所以在恢復3d姿態的時候,使用pnp方法能得到不少3d點,這些3d點也能成為新的地圖,但是多半是稀疏的,當然這是非直接法,直接法會計算圖像梯度變換比較大的地方的深度,所以最終能得到半稀疏的地圖。
  • ∇SLAM:自動可微分SLAM
    實現完全可微的SLAM系統的核心目標是計算圖,這是大多數基於梯度的學習技術的基礎.我們觀察到,如果一個完整的SLAM系統可以分解成所有可微的基本運算,我們可以組合這些基本運算來保持可微性.然而現代稠密的SLAM系統相當複雜,這使得開發這樣系統具有挑戰性.
  • 如何在移動機器人中部署Gmapping SLAM算法
    3.2 SLAM功能配置在工作空間中的src文件下創建一個名為limo_slam的功能包,其中再創建一個launch文件夾,關於Gmapping啟動配置的launch文件就放到這裡。啟動文件gmapping.launch的詳細內容如下,如果使用其他機器人,需要根據各自的情況,對下面文件中注釋的部分進行更改。
  • 新書推薦|衛星導航基礎原理
    本書的主要特色是並未專注於某一現有的導航系統,而是以通俗易懂的語言描述衛星導航系統的基本原理和運算公式,且涵蓋了衛星導航系統的通用原理。此外,本書使用了MATLAB作為編程工具,對重要的概念和技術進行闡述。
  • SLAM 領域國內外優秀實驗室匯總(一)
    existentialrobotics.org/pages/publications.html👦 Nikolay Atanasov:個人主頁 谷歌學術📜 語義 SLAM 經典論文:Bowman S L, Atanasov N, Daniilidis K, et al.Probabilistic data association for semantic slam
  • 視頻基本原理 -數字視頻基礎
    前面的文章已經系統介紹了模擬視頻的基礎知識,模擬視頻的主要特點是:以模擬電信號的形式來記錄依靠模擬調幅的手段在空間傳播
  • MRI基礎原理 | PID控制概論(2)
    MR技術博大精深,上一篇老王給大家介紹了PID控制的基本原理框圖,帶大家首先認識什麼是PID控制,以及介紹了在MR設備裡面梯度系統和病床系統中的兩個典型應用。具備了基礎概念,我們進一步以梯度系統的PID控制為例,進一步分析控制系統對設備性能參數的影響。
  • 視頻基本原理 --CMOS Sensor 基礎
    CCD型和CMOS型固態圖像傳感器在光檢測方面都利用了矽的光電效應原理,不同點在於像素光生電荷的讀出方式。CMOS圖像傳感器晶片的結構如下圖所示。採用CMOS技術可以將光電攝像器件陣列、驅動和控制電路、信號處理電路、模/數轉換器、全數字接口電路等完全集成在一起,可以實現單晶片成像系統。典型的CMOS像素陣列,是一個二維可編址傳感器陣列。
  • 北鬥/GPS定位基礎原理
    原理圖如下:2、GPS車輛定位原理圖在車上安放定位器,定位器計算出位置信息之後,通過安裝在設備裡面的SIM卡,以無線傳輸的方式,把位置數據通過無線網絡傳輸到指定的伺服器。伺服器上安裝的軟體系統,把位置坐標信息展示在電子地圖上面,並可以延伸出速度,方向,裡程,油耗等其他數據統計信息,用戶可以通過電腦登陸或者手機APP登陸查看相關信息。
  • 2020年至今-NN SLAM各領域必讀的最新研究論文整理分享
    資源整理自網絡,源地址:https://github.com/UltronAI/awesome-nn-slam#slam-system目錄    SLAM架構    深度估計    視覺裡程估計
  • 機載雷射雷達(Lidar)基礎原理與應用
    機載雷射雷達作為航測服務行業常用的手段,大家想必對機載雷射雷達有些好奇,現在帶大家了解一下機載雷射雷達的基礎原理與現在的應用。機載雷射雷達是一種可以精確、快速獲取地面或大氣三維空間信息的主動探測技術,應用範圍和發展前景十分廣闊。
  • 電子元器件基礎知識——示波器探頭原理
    圖8 無源探頭的補償高壓探頭是帶補償的無源探頭的基礎上,增大輸入電阻,使得衰減加大(如:100:1或1000:1等)。因為需要使用耐高壓的元器件,所以高壓探頭一般物理尺寸較大。電流探頭在測試直流和低頻交流時的工作原理:當電流鉗閉合,把一通有電流的導體圍在中心時,響應地會出現一個磁場。這些磁場使霍爾傳感器內的電子發生偏轉,在霍爾傳感器的輸出產生一個電動勢。電流探頭根據這個電動勢產生一個反向(補償)電流送至電流探頭的線圈,使電流鉗中的磁場為零,以防止飽和。電流探頭根據反向電流測得實際的電流值。
  • 視頻基本原理 -- CCD Sensor 基礎 (一)
    前面我們已經分析了攝像管攝像機的機構和基本原理,隨著技術發展和使用需求的提高,攝像器件主要朝著高靈敏、高解析度、低功耗、低成本和小型化方向發展。要實現上述功能,採用固體攝像器件是關鍵。固體攝像器件的功能:把入射到傳感器光敏面上按空間分布的光強信息(可見光、紅外輻射等),轉換為按時序串行輸出的電信號——視頻信號,而視頻信號能再現入射的光輻射圖像。
  • 【基礎】聲學基本原理的知識大匯總!
    物理聲學和理論聲學是各分支的基礎。它研究各種機械振動的原理和聲波的收、發器。近年來,非線性聲學也有引人注目的發展。音樂聲學探討各種樂器製作過程中的定音、音調及音色的機理,為向人們提供各種悅耳的樂器提供理論指導。 水聲學是近代聲吶設計和海洋開發的技術基礎。軍事上所用的聲吶設備及海洋開發中所用的地震勘探設備、剖面儀等都是利用水聲技術研製出來的。