局部路径规划中的人工势场法

人工势场法是局部路径规划的一种比较常用的方法。这种方法假设机器人在一种虚拟力场下运动。

一、简介

如图所示,机器人在一个二维环境下运动,图中指出了机器人,障碍和目标之间的相对位置。 

 

这个图比较清晰的说明了人工势场法的作用,物体的初始点在一个较高的“山头”上,要到达的目标点在“山脚”下,这就形成了一种势场,物体在这种势的引导下,避开障碍物,到达目标点。

人工势场包括引力场和斥力场,其中目标点对物体产生引力,引导物体朝向其运动(这一点有点类似于A*算法中的启发函数h)。障碍物对物体产生斥力,避免物体与之发生碰撞。物体在路径上每一点所受的合力等于这一点所有斥力和引力的和。这里的关键是如何构建引力场和斥力场。下面我们分别讨论一下:

引力场:

常用的引力函数:

这里的ε是尺度因子.ρ(q,q_goal)表示物体当前状态与目标的距离。引力场有了,那么引力就是引力场对距离的导数(类比物理里面W=FX)(这个计算不一定对,具体在使用时,还是好好求导,或者查一下引力函数的导数):

关于梯度的算法可以参考相关资料,简单提一下,二元函数梯度是酱紫的[δx,δy],这个符号是偏导数,不太对,见谅。

 Fig .引力场模型(相同样色的区域表示其与目标之间产生的引力相同,右上角最远,引力最大,左下角是目标点,引力为0)

斥力场:

公式(3)是传统的斥力场公式,现在还没有搞清楚是怎么推导出来的。公式中η是斥力尺度因子,ρ(q,q_obs)代表物体和障碍物之间的距离。ρ_0代表每个障碍物的影响半径。换言之,离开一定的距离,障碍物就对物体没有斥力影响。

斥力就是斥力场的梯度

 

 

 Fig 斥力场模型(相同颜色的位置说明该位置与障碍物的之间的斥力相同,特别需要注意的是两个“山顶”区域,它们处于障碍物本体上,斥力为0。此图只说明两个障碍物与区域内各位置之间的斥力,不考虑目标所在位置。)

总的场就是斥力场和引力场的叠加,也就是U=U_att+U_rep,总的力也是对对应的分力的叠加(下图只是两个场的叠加,并不会力的叠加),如下图所示:

二、存在的问题

(a) 当物体离目标点比较远时,引力将变的特别大,相对较小的斥力在甚至可以忽略的情况下,物体路径上可能会碰到障碍物
(b)当目标点附近有障碍物时,斥力将非常大,引力相对较小,物体很难到达目标点
(c)在某个点,引力和斥力刚好大小相等,方向想反,则物体容易陷入局部最优解或震荡

三、各种改进版本的人工势场法

(a)对于可能会碰到障碍物的问题,可以通过修正引力函数来解决,避免由于离目标点太远导致引力过大

和(1)式相比,(5)式增加了范围限定。d*_goal 给定了一个阈值限定了目标和物体之间的距离。对应的梯度也就是引力相应变成:

 

b)目标点附近有障碍物导致目标不可达的问题,引入一种新的斥力函数

这里在原有斥力场的基础上,加上了目标和物体距离的影响,(n是正数,我看到有篇文献上n=2)。直观上来说,物体靠近目标时,虽然斥力场要增大,但是距离在减少,所以在一定程度上可以起到对斥力场的拖拽作用

相应斥力变成:

 

所以可以看到这里引力分为两个部分,编程时要格外注意
(c)局部最优问题是一个人工势场法的一个大问题,这里可以通过加一个随机扰动,让物体跳出局部最优值。类似于梯度下降法局部最优值的解决方案。

四、代码整理

网上matlab 写的代码良莠不齐,bug很多,正在验证,通过了会贴上来。
综合了网上的各种代码,发现基本都是出自一个人的matlab code,然后改成自己的。但是最开始哪个版本的code应该是有很多的错误,尤其集中在计算角度和斥力的子函数上,经过很多人的修改,这个代码已经改的相对比较完善了,整理了一下,具体实现可以参考:改进版maltab 程序
国外的一款友好的matlab人工势场法程序(附详细说明文档)

资料链接

路径规划算法初探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

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
人工势场法是一种用于机器人路径规划的方法,它基于将机器人在环境的运动设计成一种抽象的人造引力场的运动。在人工势场法,目标点对机器人产生引力,障碍物对机器人产生斥力。通过求合力来控制机器人的运动,从而规划出一条相对平滑和安全的路径。然而,人工势场法存在局部最优点问题,即当障碍物与目标点距离过近时,机器人到达目标点后仍受到斥力的作用,导致无法停下来达到目标点。这可能使机器人在目标点附近震荡或无法到达目标点。为了解决局部最优点问题,可以采取一些策略。一种方法是引入随机的虚拟力,使机器人能够跳出局部最优点的状态。另一种方法是处理密集的障碍物,将多个障碍物看作一个整体来计算斥力。此外,还可以通过设置子目标点的方式来帮助机器人逃离局部最优点。这些方法可以提高人工势场法局部路径规划能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [人工势场法路径规划算法(APF)](https://blog.csdn.net/qq_44339029/article/details/128510395)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值