DWA(动态窗口)算法是用于局部路径规划的算法,已经在ROS中实现,在move_base堆栈中:http://wiki.ros.org/dwa_local_planner
DWA算法第一次提出应该是1997年,发在了《IEEE Robotics and Automation Magazines》上
路径规划算法主要包括全局路径规划和局部路径规划。局部路径规划主要用于动态环境下的导航和避障,对于无法预测的障碍物DWA算法可以较好地解决。DWA算法的优点是计算负复杂度较低,由于考虑到速度和加速度的限制,只有安全的轨迹会被考虑,且每次采样的时间较短,因此轨迹空间较小。采样的速度即形成了一个动态窗口。
对于轨迹的评价函数主要包括三个方面:与目标的接近程度、机器人前进的速度、与下一个障碍物的距离。简而言之就是在局部规划出一条路径,希望与目标越来越近,且速度较快,与障碍物尽可能远。评价函数权衡以上三个部分得到一条最优路径。
该论文相对于之前的创新点在于:
- 该方法是由一个移动机器人的运动动力学推导出来的
- 考虑到机器人的惯性(代码中计算了刹车距离),这对于具有扭矩限制机器人在高速行驶时很重要。
- 在动态杂乱环境中速度可以较快,对于速度较快的机器人以及低电动机转矩的机器人较为实用。
相关工作
该部分作者说明了全局路径规划的优点在于计算时可以离线进行,但是目前ROS中全局路径也在导航过程中不断变化。缺点在于不能适应环境变化以及计算复杂度太高,尤其是环境不断变化时。局部路径规划的缺点在于不能保证得到最优解,容易陷入局部最优(如U形障碍环境)。优点在于计算速度快,适合环境不断变化。
对比了其他的局部路径规划算法的优缺点,势场法计算速度很快,但是在狭窄区域会产生震荡,如果目标点在两个很近的障碍物之间,则可能找不到路径。
同步传动机器人运动学方程
为了使运动学方程更加接近实际,将模型的速度设为随时间变化的分段函数,在该假设下,机器人轨迹可看做许多的圆弧积分组成,采用该方法使得障碍物碰撞检测很方便,因为圆弧与障碍物的交点很好求。
$令x(t)$,$y(t)$,$\theta(t)$分别表示机器人在$t$时刻的x坐标、y坐标以及朝向角,$x(t_0)$和$x(t_n)$分别表示机器人在$t_0$和$t