Navigation(四)global_planner源碼解析之框架


一、全局規划器概述

對於global planner,可以采用以下三種實現之一: "navfn/NavfnROS","global_planner/GlobalPlanner","carrot_planner/CarrotPlanner"

本文分析其中一種實現:global_planner/GlobalPlanner。
move_base調用global_planner需要修改的文件:
1、bgp_plugin.xml
2、package.xml
以上兩個文件都在/global_planner文件夾內

 

二、根據nav_core提供的BaseGlobalPlanner接口:

initialize(name, costmap) ——算法實例的選取
makePlan(start, goal, plan)——兩個步驟完成路徑的生成(①計算可行點矩陣potential_array (planner_->calculatePotentials) → ②從可行點矩陣中提取路徑plan (path_maker_->getPath))
主要是以下三個實例:
1.計算“一個點”的可行性 —— p_calc_:PotentialCalculator::calculatePotential()、 QuadraticCalculator::calculatePotential()
2.計算“所有”的可行點 —— planner_:DijkstraExpansion::calculatePotentials()、 AStarExpansion::calculatePotentials()
3.從可行點中“提取路徑” —— path_maker_:GridPath::getPath()、 GradientPath::getPath()

涉及到四個算法程序:A*, Dijkstra;gradient_path, grid_path

可以總結出global_planner框架:

 

 

參考資料:

https://zhuanlan.zhihu.com/p/46212318

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM