人工势场法是局部路径规划的一种比较常用的方法。这种方法假设机器人在一种虚拟力场下运动。
如图所示,机器人在一个二维环境下运动,图中指出了机器人,障碍和目标之间的相对位置。
这个图比较清晰的说明了人工势场法的作用,物体的初始点在一个较高的“山头”上,要到达的目标点在“山脚”下,这就形成了一种势场,物体在这种势的引导下,避开障碍物,到达目标点。
人工势场包括引力场合斥力场,其中目标点对物体产生引力,引导物体朝向其运动(这一点有点类似于A*算法中的启发函数h)。障碍物对物体产生斥力,避免物体与之发生碰撞。物体在路径上每一点所受的合力等于这一点所有斥力和引力的和。这里的关键是如何构建引力场和斥力场。下面我们分别讨论一下:
引力场:
常用的引力函数:
这里的ε是尺度因子.ρ(q,q_goal)表示物体当前状态与目标的距离。引力场有了,那么引力就是引力场对距离的导数(类比物理里面W=FX):
关于梯度的算法可以参考相关资料,简单提一下,二元函数梯度是酱紫的[δx,δy],这个符号是偏导数,不太对,见谅。
Fig .引力场模型
斥力场:
公式(3)是传统的斥力场公式,现在还没有搞清楚是怎么推导出来的。公式中η是斥力尺度因子,ρ(q,q_obs)代表物体和障碍物之间的距离。ρ_0代表每个障碍物的影响半径。换言之,离开一定的距离,障碍物就对物体没有斥力影响。
斥力就是斥力场的梯度
Fig 斥力场模型
总的场就是斥力场合引力场的叠加,也就是U=U_att+U_rep,总的力也是对对应的分力的叠加,如下图所示:
路径规划算法初探http://blog.csdn.net/u011978022/article/details/49912515
关于人工势场方法的研http://kovan.ceng.metu.edu.tr/~kadir/academia/courses/grad/cs548/hmws/hw2/report/apf.pdf
人工势场方法整理http://letsmakerobots.com/artificial-potential-field-approach-and-its-problems
人工势场方法的改进版本http://www.doc88.com/p-738493052458.html
人工势场方法论坛版 http://www.ilovematlab.cn/thread-188840-1-1.html
人工势场法matlab 程序末点震荡版:http://download.csdn.net/detail/programming2015/8589191#comment
人工势场法简介PPThttp://www.cs.cmu.edu/~motionplanning/lecture/Chap4-Potential-Field_howie.pdf
人工势场法matlab程序改进成功版本:http://www.ilovematlab.cn/thread-93531-1-1.html