人工势场法是一种经典的机器人路径规划算法。该算法将目标和障碍物分别看做对机器人有引力和斥力的物体,机器人沿引力与斥力的合力来进行运动。
2D空间的引力场。图片来自参考文献1
下图是一个机器人在有障碍物的二维环境下的运动示例,动图可以比较清晰的说明人工势场法是怎么工作的。人工势场法根据运动环境生成势力场,然后机器人沿着势力场的引导,从"山顶"出发,途中避开障碍物形成的"小山峰",一路奔向目标位置所在的"山脚"。
有障碍物的2D机器人运动环境。图片来自参考文献3
有障碍物的2D环境中的人工势力场。图片来自参考文献3
机器人在有障碍物的2D人工势力场中运动。图片来自参考文献3
3D人工势能场。图片来自参考文献2
引力势能效果。图片来自参考文献5
障碍物斥力场效果。图片来自参考文献5
将引力场和斥力场叠加,就形成了人工势力场。
合成人工势场。图片来自参考文献5
从高等数学的知识中,我们知道梯度方向是函数上升最快的方向。
从人工势力场求解运动路径的过程,就是从当前位置开始,沿着负梯度方向不断前进,直至达到梯度为0的位置。
梯度下降算法,来自参考文献5
梯度下降算法的输出是路径规划点序列:
势场算法的挑战之一就是是局部最小值陷阱问题,当所有人工势场(引力势场和斥力势场)相互抵消时,比如在障碍物正好处于机器人和目标位置之间就可能会发生这种情况。虽然这些局部极小值点梯度为零,但并不是我们想要的目标位置。
局部最小值点。图片来自参考文献1
解决局部最小值陷阱的方法有很多,一种方法是引入High Level的Planner, 使得机器人不仅可以随时使用传感器的检测信息,而且仍然保持全局规划的能力。
还有一些补救式的方案,允许机器人陷入局部最优,然后再采用其它方案修复这个问题,比如我们可以在局部最小值处加入一个扰动(随机行走)或回溯,以跳出局部极小值。