ROS Navigation Stack之概要介紹
阿新 • • 發佈:2018-12-09
Navigation Stack概述
一句話概述的話,這個stack的作用就是根據外部感測器的資訊來驅動機器人完成導航.至於具體是如何實現的,我以後將對每一個包都會進行介紹和分析(歡迎關注),下面先看看這個框架中每個功能包的介紹.
各功能包介紹
- amcl:amcl的作用是根據機器人自身的里程數值以及地圖特徵,利用粒子濾波修正機器人在已知的地圖內的位置
- base_local_planner: 區域性路徑規劃器
- dwa_local_planner:也是區域性路徑規劃器,使用動態視窗法
- carrot_planner: 很簡單的全域性路徑規劃器,生成的路徑為目標點到機器人當前點的連線上的點
- clear_costmap_recovery: 無法規劃路徑的恢復演算法
- costmap_2d: 代價地圖實現
- fake_localization: 主要用來做定位模擬
- global_planner:全域性路徑規劃演算法包
- map_server: 提供代價地圖的管理服務
- move_base: 機器人移動導航框架(導航最主要的邏輯框架)
- move_slow_and_clear:也是一種恢復策略
- nav_core:提供介面,能夠實現外掛更換演算法的主要包
- nav_fn:全域性路徑規劃演算法
- robot_pose_ekf:綜合里程計、GPS、imu資料,通過拓展卡爾曼濾波進行位置估計
- rotate_recovery:旋轉恢復策略實現包
- voxel_grid:三維代價地圖
圖1. Navigation Stack原始碼包結構
從上圖可以看到,整個navigation stack可以分為三部分,在導航中,move_base為實現邏輯框架,而nav_core提供了全域性路徑規劃器/區域性路徑規劃器通過介面,通過這個介面可以實現按照外掛形式來更換演算法,另外還提供了兩種(二維和三維)柵格地圖;
地圖伺服器主要是管理地圖,用於讀寫地圖併發布地圖訊息供其他功能包訂閱.
定位方面fake_localization提供了一個實現,robot_pose_ekf主要是綜合感測器資訊修正機器人的里程值,而amcl主要是用於提供將機器人的里程計值和地圖結合,估算出機器人在地圖中位置。
相關連線
官方介紹:http://wiki.ros.org/navigation
原始碼地址: https://github.com/ros-planning/navigation.git