鐳射slam理論與實踐
本篇是記錄曾書格老師的課程《鐳射slam理論與實踐》
先貼一下個人總結(有理解的不正確的,麻煩指出來):
第一章:鐳射SLAM簡要介紹
1、輸出Metrical map尺度地圖,slam分為兩種:基於濾波的 filter-based 的SLAM,和Graph-based的SLAM。
2、
(1)基於Graph-based的代表是cartographer,可以修復 t 時刻之前的誤差分為兩部分Front-end ,和Back-end。
(2)基於PF的代表gmapping,只能估計X(t)當前時刻的位姿,不能修復之前時刻產生的誤差。在大面積的情況下,就無法建圖了。粒子濾波實際上是一個貝葉斯估計的過程,其流程是一個狀態預測的過程,分為6步:
卡爾曼是貝葉斯線上性高斯的特殊情況。
(3)
實際中,IMU算角度,里程計算距離
(4)幀間匹配演算法:
ICP 是計算點對點的,沒人用了。而PI-ICP是計算點對線的。
NDT用於三維的slam。
CSM:是最主要的方法。
scan-scan已經沒人用了;
scan-to-Map代表是cartographer。
Map-to-Map還沒有用,但是效果最好。與X(t)時刻之前的幾幀進行迴環檢測。
3、2D鐳射SLAM(用的2D的鐳射雷達)
(1)2D鐳射slam的幀間匹配
(A)PI-ICP
(B)CSM(Correlation Scan Match)
(C)梯度優化的方法:Hector—SLAM
(D)CSM+梯度優化:cartographer
(2)2D 鐳射SLAM的迴環檢測方法
(A)分支定界Branch and Bound&lazy Decison(延遲決策) ,代表:cartographer
(B)Scan-to-Map
(3)
(A)EKF-SLAM構建的是feature 地圖,而不是grid柵格地圖,所以無法用於導航,只能用於定位。
(B)gmapping是Grid版本的FastSLAM,加入了scan-match。
(C)在Optimal RBPF在gmapping上做了優化,是MRPT上的一個開源演算法。
2010年之後就由FP 轉化為 圖優化的方法了。
Karto SLAM 執行時經常崩潰。所以在此基礎上Catographer作了優化。Catographer是所以開源演算法中效果最好的。
(4)、資料的預處理
4、3D鐳射雷達
(1)3D鐳射雷達的幀間匹配
(A)Point-to-Plance ICP 點到面的匹配
(B)Feature-based Method
第二章:感測器資料處理I:里程計運動模型及標定
1、里程計運動模型
(1)兩輪差分底盤的運動學模型
(2)航跡推算(Dead Reckoning)
2、里程計標定
(1)線性最小二乘的基本原理
通常就是 求解一個近似解。
(2)最小二乘的直線擬合
(3)最小二乘在里程計標定中的應用:
a,直接線性方法,精度不高,但實現簡單;用這個方法
b,基於模型的方法,精度高,但是現實起來相當複雜,是一個非線性的過程。不用。
作業:實現一個直接線性方法的里程計標定模組
小結:由於機器人結構的系統性誤差(比如輪子直徑的大小不一樣,機械結構縫隙等),所以需要坐里程計標定,達到去除系統誤差的目的,而隨機誤差無法去除。
第三章:感測器資料處理II:鐳射雷達數學模型和運動畸變去除
1、概念
(1)鐳射lidar介紹:基於三角測距原理,距離越近,精度相對越高。而飛行時間(TOF)遠距離時精度才可以,價格昂貴。高階的lidar有德國的sick,日本的北陽。
固態lidar:是一個發展趨勢,價格低,類似於深度相機了,100線——300線。
如果lidar的幀率小於10HZ的話,那麼運動畸變是非常明顯的。
(2)鐳射lidar數學模型介紹:
光束模型:一幀鐳射與地圖的重合程度,計算量太大,現在已經不用了。
似然場模型:對影象進行高斯平滑,計算量低。應用的多。
(3)運動畸變介紹:
產生的原因:在獲取一幀鐳射lidar的資料用時 t 時,機器人的位置發生了運動,導致每個鐳射點的基準位置不是固定的。
2、畸變去除方法
(1)純估計方法:ICP 的方法,就是點雲匹配。
考慮到機器人的運動,採用VICP的方法。(Velocity estimate ICP)
(2)感測器輔助方法:(IMU/odom)
odom,直接測量位移和角度。更新頻率(100Hz——200Hz),而IMU測量的是加速度,還需要積分。
二次曲線的近似:一幀鐳射資料N個鐳射點,每個鐳射點對應的位姿{P1,P2 ... Pn}通過這種方法得到,把轉換後的鐳射資料釋出出去。
作業:實現一個鐳射雷達運動畸變去除模組
小結:由於機器人存在運動畸變,所以要釋出publish經過去除畸變的鐳射lidar資料。
第四章:鐳射SLAM的前端配準方法
幀間匹配方法:
(1)ICP 匹配方法:點到點的距離作為誤差,一階收斂。
(2)PL-ICP方法:點到線的距離作為誤差,二階收斂,精度比ICP更高。
(3)基於優化的匹配方法(Optimization-based Method):應用於Hector SLAM 和cartographer
梯度的優化:Hector SLAM,不需要里程計,純靠優化的方法。
cartographer 是CSM+優化。
(4)相關匹配方法和分枝定界加速:Karto SLAM,cartographer,分枝定界在相關方法中的加速作用。
第五章:基於濾波器的鐳射SLAM方法(Filter-based)
1、(1)只估計當前時刻的狀態X(t)叫濾波。視覺地圖——feature特徵地圖;鐳射——》柵格地圖
2、
(1)Bayes濾波:是一類方法的統稱,卡爾曼家族和PF都屬於貝葉斯濾波。
(2)粒子濾波:PF是Bayes濾波的特例。應用於物體跟蹤,機器人定位,SLAM導航。用一系列的粒子近似概率分佈。
有一個重取樣的過程,即去除權重小的粒子。權重表示和地圖的匹配程度。
重取樣的目的:生成後驗分佈的粒子群。總粒子數不變。
對於SLAM,存在粒子耗散問題,且無法解決,所以在環境小的時候才有用。
(3)FastSLAM:是gmapping的基本原理,也是基於PF的。存在三個問題和優化a,b,c:
a.每個粒子都包含自己的柵格地圖,佔用較大的記憶體;保持粒子數量較小,提升proposal取樣的位姿質量;
b.粒子耗散問題;緩解粒子耗散;減少重取樣的次數;
c.在a的基礎上再優化,把proposal限制在一個較小的區域
(4)Gmapping:以FastSLAM為基礎。在fastSLAM的基礎上實現了優化a和b,沒有使用優化c。
主要是兩個函式: addScan( ) 和 processScan( )
第六章:基於圖優化的鐳射SLAM方法(Grid-based)
1、Grid-based 是基於非線性最小二乘原理的求解。Grid-based包含前段Front-end和後端Back-end。
2、非線性最小二乘:f(x) = z ,f(x)是一個非線性的函式 ,z可以是一個預測值,然後通過感測器可以得到一個測量值z',根據二者就可以去非線性最小二乘。
3、有迴環檢測。
4、高斯牛頓方法
5、cartographer方法中mapping_2d目錄:
第七章:基於已知定位的建圖
位姿估計包含 幀間匹配和優化的方法,兩者構成圖優化,通過對機器人的位姿(x ,y , θ)來構建地圖。
1、地圖分類:(柵格地圖、特徵地圖和點雲地圖,都屬於)尺度地圖、拓撲地圖、語義地圖
2、覆蓋柵格建圖演算法(gmapping裡面用的這個):
柵格地圖的數學模型:給定機器人的位姿(由里程計資訊得到)和鐳射lidar的資料,來估計出柵格地圖。
地圖估計:柵格是一個二元隨機變數。1 標準佔用,0表示沒被佔用。
鐳射穿過的柵格為free,鐳射擊中的柵格為occupied
3、計數(count model)建圖演算法:
鐳射擊中的次數 / 鐳射穿過的次數 到達一個比值,就表示障礙物,occupied。
第八章: 3D鐳射SLAM介紹
1、3D鐳射SLAM
2D鐳射SLAM和3D鐳射SLAM的區別:
(1)2D :單線鐳射lidar,只能在一個截面,形成2D柵格地圖,室內機器人
(2)3D:多線鐳射lidar,形成三維點雲地圖或者三維柵格地圖,室外移動機器人
2、3D幀間匹配:
(1)點面ICP
(2) Feature-based method
(3) NDT 方法 normal-distribution-Transform
2、LOAM (lidar odometry and mapping)
(1)是3D 鐳射SLAM演算法,只有匹配,沒有迴環。
(2) KITTI資料集Odometry排行榜上長期霸佔第一