DWA Local Planner这部分是属于Local planner,在Navigation中有两个包:
dwa_local_planner 和base_local_planner 查看了dwa_local_planner ,发现其实际是调用的base_local_planner 中的函数,而base_local_planner 中包含了两种planner :DWA 或者Trajectory Rollout approach 。所以结论就是,只需要搞清楚base_local_planner 的执行就OK。
base_local_planner package 实际是继承于BaseLocalPlanner :
class TrajectoryPlannerROS : public nav_core::BaseLocalPlanner
对于基类接口定义:
namespace nav_core {
class BaseLocalPlanner{
public:
virtual bool computeVelocityCommands(geometry_msgs::Twist& cmd_vel) = 0;
virtual bool isGoalReached() = 0;
virtual bool setPlan(const std::vector<geometry_msgs::PoseStamped>& plan) = 0;
virtual void initialize(std::string name, tf::TransformListener* tf, costmap_2d::Costmap2DROS* costmap_ros) = 0;
virtual ~BaseLocalPlanner(){}
protected:
BaseLocalPlanner(){}
};
};
因此,派生类必须实现基类的接口。类TrajectoryPlannerROS 的方法:
在成员变量中,重要的几个变量如下:
WorldModel* world_model_; ///< @brief The world model that the controller will use
TrajectoryPlanner* tc_; ///< @brief The trajectory controller
costmap_2d::Costmap2DROS* costmap_ros_;

DWA Local Planner是Navigation包中的局部路径规划器,它基于Differential Drive Model。该算法通过在x, y, theta三个维度的速度和加速度采样,评估候选velocity的成本,并结合costmap计算代价。关键步骤包括根据global_plan更新costmap,以及使用扩散算法更新目标距离。"
116930061,7363442,TestNG入门教程:从安装到实战,"['单元测试', 'TestNG框架', 'maven项目', 'Java开发', '测试工具']
最低0.47元/天 解锁文章
2388

被折叠的 条评论
为什么被折叠?



