激光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排行榜上長期霸占第一
總結
以上是生活随笔為你收集整理的激光slam理论与实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openstack进阶:虚拟桌面usb重
- 下一篇: MATLAB谐波均值滤波