導航包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