DWA算法

Dynamic Window Apporach

  • 概念:动态窗口方法的基本思想是根据机器人运动模型在速度空间(V,ω)中采样多组速度,创建一个具有所有可行速度的动态窗口,预测机器人在时间t中的每组速度(v,ω)潜在轨迹,使用特定的评估功能同时评估集合的轨迹,并执行具有最高评估的集合,直到下一个执行。

DWA(Dynamic Window Approach)算法是一种用于机器人局部路径规划的经典实时避障算法。它通过评估在动态环境中机器人可能的速度和方向选择(线速度与角速度的组合),寻找一条最优轨迹,使机器人沿着该轨迹移动到目标点,同时避免碰撞。

  • 核心思想:机器人通过短时间内的运动模拟,预测自身轨迹,评估不同速度组合在短时间内的效果,然后选择最优的速度组合(线速度和角速度)作为下一时刻的控制命令。

DWA算法的输入

  1. 机器人当前的状态

    • 当前的线速度 ${v}$
    • 当前的角速度 ${\omega}$
    • 当前的位置和方向${(x,y,\theta)}$
  2. 机器人的运动学约束

    • 最大和最小的线速度:${v_{min} \leq v \leq v_{max}}$
    • 最大和最小的角速度:${\omega_{min} \leq \omega \leq \omega_{max} }$
    • 最大线加速度和角加速度:${a_v}$ 和 ${a_\omega}$
  3. 目标位置

    • 目标点的坐标${(x_{goal}, y_{goal)}}$
  4. 障碍物信息

    • 障碍物的环境地图(通过雷达或摄像头获得环境中障碍物的分布)。
  5. 机器人动态模型

    • 模拟机器人在短时间内的运动轨迹。

DWA算法的主要步骤

1. 确定动态窗口

动态窗口是指在当前时刻内,根据机器人的运动学约束和动态限制划定可能的速度范围:

$$
v_{range} = [v_{min}, v_{max}] \cap [v - a_v \cdot \Delta t, v + a_v \cdot \Delta t]\
$$

$$
\omega_{range} = [\omega_{min}, \omega_{max}] \cap [\omega - a_\omega \cdot \Delta t, \omega + a_\omega \cdot \Delta t]
$$
其中,${[v - a_v \cdot \Delta t, v + a_v \cdot \Delta t]}$和${[\omega - a_\omega \cdot \Delta t, \omega + a_\omega \cdot \Delta t]}$是根据加速度限制计算的瞬时速度范围。

动态窗口比单纯使用机器人物理限制更实际,因为它考虑了短时间内速度的动态变化范围。

2. 基于速度采样模拟轨迹

在动态窗口内,对可能的速度组合(线速度 ${v}$和角速度 ${\omega}$ 进行采样,生成轨迹。轨迹的预测基于机器人运动模型,例如:

假设机器人当前的状态为位置 ${(x, y, \theta)}$,一个时间间隔 ( T ) 的预测轨迹可以通过如下公式模拟:
$$
x’ = x + v \cdot \cos(\theta) \cdot T
$$
$$
y’ = y + v \cdot \sin(\theta) \cdot T
$$
$$
\theta’ = \theta + \omega \cdot T
$$

3. 轨迹评估

传统 DWA 算法中对速度对(v, w,即线速度和角速度)的选择,依赖一个**评价函数(objective function)**来评估每个候选速度对轨迹的优劣。算法流程就是在速度空间内采样可行的速度对,并用评价函数给它们打分,最终选择分数最高的速度对来执行。


3.评价函数的表达式

3.1. 经典形式(Fox et al. 1997 原论文):

原始论文中的 DWA 评价函数一般为如下加权和形式:

$$
G(v, w) = \alpha \cdot heading(v, w) + \beta \cdot dist(v, w) + \gamma \cdot vel(v, w)
$$
其中:

  • ${v}$ :线速度
  • ${\omega}$:角速度
  • ${\alpha, \beta, \gamma}$:权重系数(用于平衡各项重要性)

3.2. 各项含义解释

  1. heading(v, w):朝向目标的得分
    • 描述当前轨迹末端(模拟一小段时间后的位置)与目标点之间的距离或方向误差。
    • 目的是鼓励轨迹朝向目标前进。
    • 通常值越大,表示末端越靠近目标朝向。

具体公式:
$$
heading(v,\omega)=\pi-|\theta_g - \theta_t|
$$

  • ${\theta_g}$ : 机器人当前点指向目标点的连线和x轴之间的角度
  • ${\theta_t}$: 机器人在预测轨迹的末端(目标点)的姿态角与水平线/x轴之间的夹角
  1. dist(v, w):距离障碍物的得分
  • 评估沿着当前轨迹行进时,能保持多大的安全距离(离障碍物最近的距离)。
  • 目的是让轨迹尽可能远离障碍物,提高安全性。
  • 可以定义为轨迹上离障碍物的最近距离,或与安全距离的差值。

具体公式:(这里归一化了,防止过于高),距离最近的障碍物的距离越大越好
$$
dist(v,w)=min(1, \frac{d_{min}}{d_{safe}})
$$

  • ${d_{min}}$:轨迹中离障碍物最近的距离.
  • ${d_{safe}}$:定义的安全距离(如 0.5 米,得分最大为1)
  1. vel(v, w):速度得分
  • 对当前速度分量 v 的奖励,偏好较高的行进速度加快到达目标。
  • 通常直接用 (v) 或用 ${\frac{v}{v_{max}}}$归一化。

3.3. 综合

将这三项做加权和,得到的得分越高表示该速度对优先级越高。


论文原文公式参考

原文给出:

“The value function G(v,ω) for each sampled (v,ω) pair is calculated as a weighted sum of the following three criteria:

  1. heading(v,ω): The difference between the robot’s heading and the direction to the goal after a short forward simulation,
  2. dist(v,ω): The minimum distance to the nearest obstacle along the trajectory generated by (v,ω),
  3. vel(v,ω): The forward velocity (encouraging faster trajectories).”

传统 DWA 的评价函数是目标朝向、避障安全和速度的加权求和,这三者在决策速度和转向时作为优先级评估基础。

4. 选择最优速度

在所有的速度采样中,选择得分最高的速度组合(线速度${v}$ 和角速度${ \omega}$),作为当前时刻的控制命令。

5. 更新状态,循环执行

根据选取的速度组合更新机器人的运动状态,重复上述过程,直至机器人到达目标点。


DWA算法的优缺点

优点

  1. 实时性强:DWA以短时间窗口内的动态信息进行评估,适合实时路径规划。
  2. 高效:通过动态窗口限制搜索范围,大大减少了计算量。
  3. 普遍适用性:适用于具有速度和加速度约束的机器人,易于部署。
  4. 灵活性:可以权衡多种评价指标(如速度、目标距离、障碍物距离),适应不同场景。

缺点

  1. 局部最优问题:因只关注短时间内的轨迹,可能导致机器人陷入局部最优(如某些复杂障碍物死角)。
  2. 对参数敏感:权重参数的设置对性能影响很大,调整不当会导致效果欠佳。
  3. 不适应全局路径规划:DWA本质是局部路径规划方法,如缺乏合理的全局规划指引,可能偏离全局最优路径。
  4. 复杂障碍物环境适应性较差:在障碍物密集或动态障碍物较多的场景下,DWA可能存在效率和安全性问题。

总结

传统DWA通过动态窗口对速度空间进行约束,对每种可能的速度组合进行评估并选出最优速度,适合于动态实时机器人局部规划任务。然而,由于其是短时间范围的局部优化方法,容易受到局部最优、复杂障碍环境等问题影响。