DWA Local Planner

Local Planner提供了一个控制器来驱动飞机上的移动基础。这个控制器用来连接路径规划器和机器人。通过使用地图,规划者可以为机器人创造一个运动轨迹,让机器人从一个开始到一个目标位置。在此过程中,规划人员至少在机器人周围创建了一个值函数,表示为一个网格映射。这个值函数编码遍历网格单元的成本。控制器的工作是使用这个值函数来确定dx,dy,dtheta速度来发送给机器人。

DWA 在机器人运动规划中属于Local Planner。

主要算法流程

  1. 在机器人控制空间进行速度离散采样(dx,dy,dtheta)

  2. 对每一个采样速度执行前向模拟,看看使用该采样速度移动一小段段时间后会发生什么

  3. 评价前向模拟中每个轨迹,评价准则如: 靠近障碍物,靠近目标,贴近全局路径和速度;丢弃非法轨迹(如哪些靠近障碍物的轨迹)

  4. 挑出得分最高的轨迹并发送相应速度给移动底座

  5. 重复上面步骤.

Frame Work

Trajectory Generator

Speed Search Space

General Motion Equations

Cost Function

原始论文中评价函数如下图所示形式:

ros中实现的评价函数如下图所示:

GridMapCostFunction

Easy Explanation

如上图所示,现在对DWA算法做一个通俗易懂的解释,类比到机器人的环境下。
河流的上游类比与机器人当前的位置,河流的下游类比与机器人的目标点。河流类比与机器人需要行走的路径(path),高山类比于机器人环境中的障碍物(costmap)。
大家都知道水往低处流,那么现在可以把DWA算法类比于此情形。因此,机器人运动需要具备两条特性.

  1. 河流可以流动需要一个势能差。河流的下游具有低势能,上游具有高势能,河流附近的高山具有高势能。
    对于机器人,GridMapCostFunction 构造了两个势能,分别是path目标和起始点之间的势能差,和远离path和贴近path之间的势能差--约束机器人follow path和 go toward goal。这两个势能类似与河流的上游,下游和河流附近的岸--约束河流流动的方向和目标。类似的,其他的CostFunction同样是为了构造势能差约束机器人运动。
  2. 水由于重力的原因会往低处流。对于机器人有了势能差之后,我们可以赋予往低势能走动的能力,Trajectory Generator 的目的是根据机器人当前的状态生成有限个轨迹,那么我们从中选择一条轨迹具有最低的势能岂不是就可以实现“水往低处流”?实际上正是如此。

Demo


Reference

http://wiki.ros.org/dwa_local_planner

D. Fox, W. Burgard, and S. Thrun. "The dynamic window approach to collision avoidance". The Dynamic Window Approach to local control.

Alonzo Kelly. "An Intelligent Predictive Controller for Autonomous Vehicles". A previous system that takes a similar approach to control.

Brian P. Gerkey and Kurt Konolige. "Planning and Control in Unstructured Terrain ". Discussion of the Trajectory Rollout algorithm in use on the LAGR robo

http://planning.cs.uiuc.edu/node647.html