本篇主要記錄目前在ROS下開源的幾種基於激光雷達的SLAM算法的特點以及優劣,目的在於對日后工作中選擇合適的算法提供指導,因此,下面將Karto,Hector,Gmapping,Cartographer等幾種開源算法通過列表的形式進行了對比:
Hector |
Gmapping |
Karto |
cartographer |
scan-matching(Gaussian-Newton equation) +傳感器的要求高 |
mapping采用的是RBPF的方法 |
KartoSLAM是基於圖優化的方法,用高度優化和非迭代 cholesky矩陣進行稀疏系統解耦作為解. |
artographer是Google的實時室內建圖項目,傳感器安裝在背包上面,可以生成分辨率為5cm的2D格網地圖 |
要求: 高更新頻率小測量噪聲的激光掃描儀.不需要里程計,使空中無人機與地面小車在不平坦區域運行存在運用的可能性. |
粒子濾波的方法一般需要大量的粒子來獲取好的結果,但這必會引入計算的復雜度;粒子是一個依據過程的觀測逐漸更新權重與收斂的過程,這種重采樣的過程必然會代入粒子耗散問題(depletion problem), 大權重粒子顯著,小權重粒子會消失(有可能正確的粒子模擬可能在中間的階段表現權重小而消失). |
圖優化方法利用圖的均值表示地圖,每個節點表示機器人軌跡的一個位置點和傳感器測量數據集,箭頭的指向的連接表示連續機器人位置點的運動,每個新節點加入,地圖就會依據空間中的節點箭頭的約束進行計算更新. |
獲得的每一幀laser scan數據,利用scan match在最佳估計位置處插入子圖(submap)中,且scan matching只跟當前submap有關。在生成一個submap后,會進行一次局部的回環(loop close),利用分支定位和預先計算的網格,所有submap完成后,會進行全局的回環。 |
利用已經獲得的地圖對激光束點陣進行優化, 估計激光點在地圖的表示,和占據網格的概率. 為避免局部最小而非全局最優的出現,地圖采用多分辨率的形式. |
自適應重采樣技術引入減少了粒子耗散問題 , 計算粒子分布的時候不單單僅依靠機器人的運動(里程計),同時將當前觀測考慮進去, 減少了機器人位置在粒子濾波步驟中的不確定性. |
KartoSLAM的ROS版本,其中采用的稀疏點調整(the Spare Pose Adjustment(SPA))與掃描匹配和閉環檢測相關.landmark越多,內存需求越大,然而圖優化方式相比其他方法在大環境下制圖優勢更大.在某些情況下KartoSLAM更有效,因為他僅包含點的圖(robot pose),求得位置后再求map. |
submap的構造是一個重復迭代配准scan和submap的過程。利用配准估算出pose對scan進行剛體變換,插入到submap中。 連續的scan用來構造submap,這里submap以概率格網的形式表現。每一個scan,在插入格網(submap)時,每一個grid有hits和miss兩種情況。離scan終點最近的grid為hits,在scan原點和終點之間相交的grid為miss。之前未觀察的grid分配一個概率,已觀察的grid進行概率更新。 |
在總結的時候主要參考了,下述的兩篇博客,在此表示感謝。
https://blog.csdn.net/u012700322/article/details/52953768
https://blog.csdn.net/zyh821351004/article/details/47381135