SLAM:經典演算法表格對比
本篇主要記錄目前在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進行概率更新。 |