1. 程式人生 > >ROS Navigation Stack之概要介紹

ROS 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:三維代價地圖
    Navigation Stack
    圖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