天天看點

導航包Navigation最全完整解析(四): 重要接口之BaseGlobalPlanner

導航包Navigation最全完整解析(四): 重要接口之BaseGlobalPlanner

本節解析move_base的全局路徑規劃器接口: BaseGlobalPlanner.

在前面的分析可以知道, 在move_base中調用全局規劃算法時會初始化全局路徑規劃接口;

這個接口通過nav_core包來傳遞核心的實作函數如(carrot_planner/global_planner等);

是以在本節中主要采用針對global_planner包來分析全局路徑規劃的接口函數調用;

其主要調用的函數流程為: move_base–>nav_core::BaseGlobalPlanner–>global_planner::BaseGlobalPlanner()

  • global_planner包核心函數

通過move_base調用nav_core::BaseGlobalPlanner接口,而global_planner繼承nav_core::BaseGlobalPlanner類, 重載了函數makeplan(), 是以在move_base調用時實際上是使用

基類指針指向了繼承類對象.

是以,在move_base中首先會初始化一個全局規劃器的共享指針,然後将該指針指向全局路徑規劃算法接口,進而生成全局路徑,具體的代碼接口如下:

// move_base.cpp(節選)
 boost::shared_ptr
           

繼續閱讀