幾種常見建圖算法簡介


一、gmapping

gmaping主要是采用一個粒子濾波的方式來實現。主要框架如下:

(1) 數據輸入 
在ROS GMapping包中,獲取激光和里程計數據傳入openslam GMapping包中,為新一時刻的建圖做准備。 
(2)運動模型 
根據t-1時刻的粒子位姿以及里程計數據,預測t時刻的粒子位姿,在初始值的基礎上增加高斯采樣的noisypoint。 
(3)掃描匹配 
對每個粒子執行掃描匹配算法,GMapping默認采用30個采樣粒子。掃描匹配的作用是找到每個粒子在t時刻位姿的最佳坐標。為后面每個粒子權重更新做准備。如果此處掃描匹配失敗,則粒子權重更新則采用默認的似然估計。 
(4)建議分布 
混合了運動模型和觀測模型的建議分布,根據上一步掃描匹配獲得的最佳坐標,圍繞該坐標取若干位置樣本(距離差值小於某閾值)計算均值與方差,使得當前粒子位置滿足該均值方差的高斯分布。 
(5)權重計算 
對各個粒子的權重進行更新,更新之后還需進行歸一化操作。注意:重采樣前更新過一次,重采樣后又更新過一次。 
(6)重采樣 
使用Neff判斷是否進行重采樣(重采樣頻率越高,粒子退化越嚴重,即粒子多樣性降低,導致建圖精確度降低,有必要設定一個判定值改善粒子退化問題)。 
(7)粒子維護地圖 
每個粒子都維護了屬於自己的地圖,即運動軌跡。該步驟執行的操作是更新每個粒子維護的地圖。 
(8)地圖更新 
在ros中進行地圖更新。先得到最優的粒子(使用權重和 weightSum判斷 ),得到機器人最優軌跡,地圖膨脹更新。 

參考:http://blog.csdn.net/lqygame/article/details/71158558

優點:依賴里程計(odometry),無法適用無人機及地面小車不平坦區域;無回環;

缺點:在長廊及低特征場景中建圖效果好;

二、cartographer 

整個建圖系統框架如下所示:

 

主要的流程從框架圖可以看出來,輸入主要是:里程計、imu、雷達(或者點雲、超聲波等),輸出為submap

Cartographer主要理論是通過閉環檢測來消除構圖過程中產生的累積誤差[1]。用於閉環檢測的基本單元是submap。一個submap是由一定數量的laser scan構成。將一個laser scan插入其對應的submap時,

會基於submap已有的laser scan及其它傳感器數據估計其在該submap中的最佳位置。submap的創建在短時間內的誤差累積被認為是足夠小的。然而隨着時間推移,越來越多的submap被創建后,submap間的誤差累積則會越來越大。

因此需要通過閉環檢測適當的優化這些submap的位姿進而消除這些累積誤差,這就將問題轉化成一個位姿優化問題。當一個submap的構建完成時,也就是不會再有新的laser scan插入到該submap時,該submap就會加入到閉環檢測中。

閉環檢測會考慮所有的已完成創建的submap。當一個新的laser scan加入到地圖中時,如果該laser scan的估計位姿與地圖中某個submap的某個laser scan的位姿比較接近的話,那么通過某種 scan match策略就會找到該閉環。

Cartographer中的scan match策略通過在新加入地圖的laser scan的估計位姿附近取一個窗口,進而在該窗口內尋找該laser scan的一個可能的匹配,如果找到了一個足夠好的匹配,則會將該匹配的閉環約束加入到位姿優化問題中

Cartographer的重點內容就是融合多傳感器數據的局部submap創建以及用於閉環檢測的scan match策略的實現。

參考:http://blog.csdn.net/u012700322/article/details/53513527

 


免責聲明!

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



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