對比幾種在ROS中常用的幾種SLAM算法


在此因為要總結寫一個文檔,所以查閱資料,將總結的內容記錄下來,歡迎大家指正!

文章將介紹使用的基於機器人操作系統(ROS)框架工作的SLAM算法。 在ROS中提供的五種基於2D激光的SLAM算法分別是HectorSLAM,Gmapping,KartoSLAM,CoreSLAM和LagoSLAM。當然最后還有比較經典的google開源的cartographer,雖然不是基於ROS的但是大牛們已經將它修改為基於ROS的版本的cartographer_ros,

ROS(Robot Operating System)是一個基於Linux的開源操作系統,目的在於構建一個能夠整合不同研究成果,實現算法,代碼重用的機器人軟件平台。ROS是當前比較流行的機器人控制框架,它讓我們節省時間構建機器人的系統框架,更專注算法層面的研究。極大的提高了開發效率。提供了包括硬件抽象描述、底層設備控制、常用功能的實現,程序間信息的傳遞、程序包管理以及一些可視化數據程序和軟件庫,並在此平台的基礎上開源了很多諸如定位構圖,運動與規划,感知與決策等應用軟件包。

  機器人爆炸式增長的一個主要問題是不能在不同的機器人平台上重復使用代碼。然而,ROS中的硬件抽象層及其消息服務允許創建可用於許多不同機器人平台的新代碼。而且,ROS提供了一套穩定的機器人軟件包,公認的SLAM評估方法都依賴於機器人社區可用的標准數據集。 本文中研究了基於激光的主要二維SLAM算法,所有SLAM的結果都使用占用網格作為最終輸出,使用地圖相似性的性能指標進行分析。 重點是放在地圖質量,而不是姿態估計誤差,因為映射輸出受到本地化問題的高度影響。 主要目標是提供ROS中所有五種算法的優缺點概述,提供簡單而准確的定量比較,從而為ROS開發者定義一個通用的指導方針,以選擇最符合他們需求的算法。

(1)HectorSLAM

HectorSLAM是一種結合了魯棒性較好的掃描匹方法2D SLAM方法和使用慣性傳感系統的導航技術。傳感器的要求:高更新頻率小測量噪聲的激光掃描儀.不需要里程計,使空中無人機與地面小車在不平坦區域運行存在運用的可能性.作者利用現代激光雷達的高更新率和低距離測量噪聲,通過掃描匹配實時地對機器人運動進行估計。所以當只有低更新率的激光傳感器時,即便測距估計很精確,對該系統都會出現一定的問題,如下圖是該系統生成的二維地圖。

http://kaspar.informatik.uni-freiburg.de/~slamEvaluation/datasets.php

http://www.ros.org/wiki/hector_slam

利用已經獲得的地圖對激光束點陣進行優化, 估計激光點在地圖的表示,和占據網格的概率.,其中掃描匹配利用的是高斯牛頓的方法進行求解. 找到激光點集映射到已有地圖的剛體轉換(x,y,theta).具體的公式如下:

             

 下圖二維地圖是hectorSLAM 多分辨率地圖的表示。 網格單元格長度(從左到右):20厘米,10厘米和5厘米 ,使用多分辨率地圖表示,以避免陷入局部最小化。 這個解決方案背后的想法是在內存中有不同的地圖,同時使用之前估計的姿勢來更新它們。 計算成本 仍然很低,所以地圖總是一致的

 最后,3D空間導航狀態估計是基於EKF濾波器。 但是,這種情況是僅在IMU存在時才需要,例如在空中機器人的情況下。 因此,這里我們只討論二維的SLAM

它會將不再這項工作中使用。如下圖顯示了HectorSLAM方法的概述。

 (2)Gmapping

Gmapping是一種基於激光的SLAM算法,它已經集成在ROS中,是移動機器人中使用最多的SLAM算法。這個算法已經由Grisetti等人提出是一種基於 Rao-Blackwellized的粒子濾波的 SLAM方法。基於粒子濾波的算法用許多加權粒子表示路徑的后驗概率,每個粒子都給出一個重要性因子。但是,它們通常需要大量的粒子才能獲得比較好的的結果,從而增加該算法的的計算復雜性。此外,與PF重采樣過程相關的粒子退化耗盡問題也降低了算法的准確性。粒子退化問題包括在重采樣階段從樣本集粒子中消除大量的粒子。發生這種情況是因為它們的重要性權重可能變得微不足道。因此,這意味着有一定的小概率時間會消除正確的假設的粒子。為了避免粒子的退化問題,已經開發了自適應重采樣技術。

作者還提出了一種計算精確分布的方法,不僅考慮機器人平台的運動,還考慮最近的觀察。提出了在使用測距運動模型時結合觀測值提出建議分布。然而,當一個移動機器人裝備一個非常精確的傳感器LRF時,可以使用該傳感器的模型,因為它可以實現了極高的似然函數。 基於此,作者整合了最近的傳感器觀測zt,並且他們計算高斯分布近似有效地獲得下一代粒子分布。

 

這種自適應重采樣降低了PF預測步驟中機器人姿態的不確定性。 結果,由於掃描匹配過程,所需的粒子數量減少,因為不確定性較低。 實驗中,Gmapping使用的粒子數量是30,與普通PF方法相比,這是非常低的。

 (3)LagoSLAM

   LagoSLAM 是線性近似圖優化,不需要初始假設。基本的圖優化slam的方法就是利用最小化非線性非凸代價函數.每次迭代, 解決局部凸近似的初始問題來更新圖配置,過程迭代一定次數直到局部最小代價函數達到. (假設起始點經過多次迭代使得局部代價函數最小). 。假設圖中每個節點的相對位置和方向都是獨立的,作者求解了一個等價於非凸代價函數的方程組。為此,提出了一套基於圖論的程序,通過線性定位和線性位置估計,得到非線性系統的一階近似。

 (4)KartoSLAM

KartoSLAM是基於圖優化的方法,用高度優化和非迭代 cholesky矩陣進行稀疏系統解耦作為解.圖優化方法利用圖的均值表示地圖,每個節點表示機器人軌跡的一個位置點和傳感器測量數據集,箭頭的指向的連接表示連續機器人位置點的運動,每個新節點加入,地圖就會依據空間中的節點箭頭的約束進行計算更新.

  KartoSLAM的ROS版本,其中采用的稀疏點調整(the Spare Pose Adjustment(SPA))與掃描匹配和閉環檢測相關.landmark越多,內存需求越大,然而圖優化方式相比其他方法在大環境下制圖優勢更大.在某些情況下KartoSLAM更有效,因為他僅包含點的圖(robot pose),求得位置后再求map.

 (5)CoreSLAM

        COreSLAM最小化性能損失的一種slam算法.將算法簡化為距離計算與地圖更新的兩個過程,  第一步,每次掃描輸入,基於簡單的粒子濾波算法計算距離,粒子濾波的匹配器用於激光與地圖的匹配,每個濾波器粒子代表機器人可能的位置和相應的概率權重,這些都依賴於之前的迭代計算. 選擇好最好的假設分布,即低權重粒子消失,新粒子生成..在更新步驟,掃描得到的線加入地圖中,當障礙出現時,圍繞障礙點繪制調整點集,而非僅一個孤立點。

           

 以上各種激光測距儀的SLAM的算法的對比:

(6)cartographer

cartographer是Google的實時室內建圖項目,傳感器安裝在背包上面,可以生成分辨率為5cm的2D格網地圖。獲得的每一幀laser scan數據,利用scan match在最佳估計位置處插入子圖(submap)中,且scan matching只跟當前submap有關。在生成一個submap后,會進行一次局部的回環(loop close),利用分支定位和預先計算的網格,所有submap完成后,會進行全局的回環。

 

申明以上部分內容是參考了別人的博客,如有侵權,請告知,我將刪除!

 關於該文檔的下載http://download.csdn.net/download/u013019296/10191358

有興趣可以關注微信公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM