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