激光SLAM導航系列(二)SLAM與導航系統框架

激光SLAM系統框架

在激光SLAM系統中,Gmapping獲取掃描的激光雷達信息以及里程計數據可動態的生成2D柵格地圖。導航包則利用這個柵格地圖,里程計數據和激光雷達數據做出適合的路徑規劃和定位,最後轉換爲機器人的速度指令。下圖爲激光SLAM系統的框架,方框裏爲傳感器獲得的數據或者生成的數據,橢圓裏爲ROS節點。


系統框架圖

1、建圖系統框架

 建圖框架

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

 導航框架

機器人使用navigation棧導航時,move_base這個模塊負責整個navigation 行爲的調度, 包括初始化costmap與planner, 監視導航狀態適時更換導航策略等[監視導航狀態、適時更換導航策略等]. 涉及到行爲的控制, move_base 具體實現就是有限狀態機, 定義了若干recovery_behavior , 指定機器人導航過程中出問題後的行爲. 具體的邏輯流程如下:
(1)move_base首先啓動了global_planner和local_planner兩個規劃器,負責全局路徑規劃和局部路徑規劃,通過costmap組件生成自己的代價地圖(global_costmap和local_costmap)。
(2)通過全局路徑規劃,計算出機器人到目標位置的全局路線,實現的方法是基於柵格地圖的cost搜索找最優。
(3)然後通過局部規劃,負責做局部避障的規劃,具體navigation中實現的算法是Dynamic Windows Approach,具體流程是:
1.由移動底盤的運動學模型得到速度的採樣空間
2.在採樣空間中, 計算每個樣本的目標函數
3.得到期望速度, 插值成軌跡輸出
(4)在機器人運行過程中,根據機器人的狀態做出規劃(喚醒規劃器),操作(計算合法速度併發布),清理(recovery_behavior)等操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章