SLAM for Dummies SLAM初學者教程
A Tutorial Approach to Simultaneous Localization and Mapping 一本關於實時定位及繪圖(SLAM)的入門指導教程
目錄
1. 目錄
2. 簡介
3. 關於SLAM
4. 硬件
-機器人
-距離量測設備
5. SLAM處理過程
6. 雷達數據
7. 里程計數據
8. 地標
9. 地標提取
SPIKE地標
RANSAC
多種策略
10. 數據結合
11. EKF擴展科爾曼濾波
過程簡介
矩陣(系統狀態:X,協方差矩陣:P,卡爾曼增益:K,測量模型的雅克比矩陣:H,預測模型的雅克比矩陣:A,SLAM特殊雅克比矩陣:Jxr和Jz,處理過程噪聲:Q和W,測量噪聲:R和V)
第一步:使用里程計數據更新當前狀態
第二步:通過重觀測地標更新狀態
第三步:添加新的地標到當然狀態
12. 最終評語
13. 參考
14. 附錄A:坐標轉換
15. 附錄B:SICK LMS 200 接口代碼
16. 附錄C:ER1 接口代碼
17. 附錄D:地標提取代碼
2. 簡介
本文檔的目的是為了簡要介紹移動機器人的SLAM。讀了本文章你應該能夠實施SLAM了。SLAM可以通過許多方式得到實施。有很多的硬件可供選擇。SLAM更像是一個概念而非一個單獨的算法。SLAM涉及很多步驟,而這些步驟又可以使用不同的算法得到實施。在大多數情況下我們針對各個步驟各自只解釋一個方法,但隱含地讀者可以通過更多的閱讀得到還有其他可能的方法來實現它們。
寫這篇文章的目的是幫助我們自己理解它。一個人能夠通過講解更好地理解這個知識。而且當前的SLAM文章大都太理論化而且大多數只集中在SLAM的各個小領域,不夠總結性。因此,本文的目的便是實用而且集中在一個小的而且是基本的SLAM算法上,從而可以作為一個出發點更好地理解SLAM這個概念。對於在SLAM方面有一些背景知識的人來說,我們這里提供了一個完整基於EKF(擴展卡爾曼濾波器)算法的解決方案。當然我們並不能保證這個解決方案完美,我們只是說能夠覆蓋所有所需要的基本步驟,從而使實施能夠啟動並且運行。另一方面需要注意的是SLAM還沒有被完全解決,在該領域還有很多研究在進行。
為了更容易實現所有的代碼均提供了下載,所以只需要下載下來,編譯,安裝到硬件上(SICK牌雷達掃描器,ER1牌機器人),然后執行程序;即插即用。我們使用了Microsoft Visual Studio C#語言編寫的代碼,在.net framework v.1.1下編譯的。大部分代碼都是非常直觀的,幾乎可以當成偽代碼閱讀,所以轉換成其他的語言或平台應該來說是非常容易的。
3. 關於SLAM
術語SLAM是Simultaneous Localization And Mapping的縮略詞。它是關於解決使用移動機器人創建一個未知環境的地圖,同時使用該地圖在該環境中導航。
SLAM包括多個組成部分;地標提取,數據融合,狀態估計,狀態更新,和地標更新。每個小部分都有多種方法來解決。我們將展示各個部分的實例。這也意味着某些部分是可以使用新方法替代它們的。作為一個實例我們將展示兩種不同的方法來解決地標提取問題,並對不同的方法進行評論。觀點就是你能夠使用我們的方法並且使用你針對這些算法自己的新奇方法擴展它。我們決定集中精力在一個室內環境移動機器人上。你可以選擇改變這些算法以使得它可以用在不同的環境中。
SLAM可以使用在2D和3D運動中。我們這里只考慮2D運動。
如果讀者已經熟悉了SLAM的話這將是有用的。有很多好的簡介比如參考[6][4]。知道一點EKF算法也很有幫助。有很多介紹比如參考[3][5]。有一點背景知識總是有幫助的,因為這會讓你更容易地理解本教程,但是並不嚴格要求你去理解這些。
4. 硬件
機器人的硬件是非常重要的。要做SLAM需要一個移動機器人和一個距離測量器。我們這里使用的移動機器人是滾輪室內機器人。該文檔集中主要在SLAM的軟件使用,並不探究機器人復雜的運動模型(比如機器人是如何運動的)比如人型機器人,自動水下設備,無人機,奇怪的滾輪構造機器人等。
我們這里介紹一些常用的用於移動機器人SLAM的基本的測量設備。
機器人
需要考慮的重要的參數有易用、可量距和價格適中。
可量距性決定了機器人能否通過滾輪的轉動很好地估計它的自身位置。機器人不應該有超過2cm/米、2度/45度的誤差。典型的機器人驅動器允許機器人報告它的笛卡爾坐標系統下的(x,y)位置,並且報告機器人當前的軸承/航向。
當然可以從頭開始建機器人。但是這將會是很耗時的,但也是一個學習的過程。但是很可以買一個現成的機器人了,像Real World Interface或者像Evolution Robotics ER1 robot。RW1並不在各處售賣,但是通常在世界各地的許多計算機實驗室中可以見到。但RW1機器人有眾所周知的測距差的毛病。這增加了預測當前位置的困難,讓SLAM更加難做。這里我們使用了ER1。這個又小又便宜。它作科研使用只需要200美元,做私人使用需要300美元。它帶有一個攝像頭和一個機器人控制系統。我們已經在附錄以及網站上提供了非常基本的驅動器。
