一、文件结构(代码组成)

由5部分组成,第一部分负责数据类型的转换;第二部分负责具体的局部规划的具体实现,是核心代码;第三部分是move_base局部规划器和本局部规划器具体实现的中间转换接口;第四部分是将局部规划转成速度(cmd_vel或twist_cmd)控制指令;第五部分是RVIZ可视化设置,方便调试;
程序流程:eband_local_planner_ros ----->eband_local_planner ----->eband_trajectory_controller;
move_base.cpp中直接调用这些函数(继承nav_core::BaseLocalPlanner),最终通过方法computeVelocityCommands获得运动控制指令cmd_vel或者,并发布出去!那么具体的cmd_vel是如何得出来的呢?
二、类之间的关系
step1:move_base与eband_local_planner_ros
move_base.cpp调用局部规划算法时,调用的对象是boost::shared_ptr<nav_core::BaseLocalPlanner> tc_;
controller_plan_ = latest_plan_;
.......
tc_->setPlan(*controller_plan_);
通过使用对象 tc_

本文详细分析了eband_local_planner的源码架构,从文件结构到类之间的关系,揭示了如何将全局规划路径转化为速度控制指令cmd_vel。核心流程包括:eband_local_planner_ros -> eband_local_planner -> eband_trajectory_controller,涉及数据转换、band处理和速度控制器的交互。最后提到了关键论文《Elastic_Bands_Connecting_Path_Planning and Robot Control》。

2153





