人人工势场法

人人工势场法人工势场法是局部路径规划的一种比较常用的方法。这种方法假设机器人在一种虚拟力场下运动。一、简介如图所示,机器人在一个二维环境下运动,图中指出了机器人,障碍和目标之间的相对位置。 这个图比较清晰的说明了人工势场法的作用,物体的初始点在一个较高的“山头”上,要到达的目标点在“山脚”下,这就形成了一种势场,物体在这种势的引导下,避开障碍物,到达目标点。

大家好,又见面了,我是你们的朋友全栈君。

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

一、简介

人人工势场法

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

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


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

引力场:

常用的引力函数:

人人工势场法

这里的ε是尺度因子.ρ(q,q_goal)表示物体当前状态与目标的距离。引力场有了,那么引力就是引力场对距离的导数(类比物理里面W=FX):

人人工势场法

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

人人工势场法

 Fig .引力场模型

斥力场:

人人工势场法

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

斥力就是斥力场的梯度

人人工势场法

人人工势场法

                                                                         Fig 斥力场模型

总的场就是斥力场合引力场的叠加,也就是U=U_att+U_rep,总的力也是对对应的分力的叠加,如下图所示:

人人工势场法

二、存在的问题

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

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

(a)对于可能会碰到障碍物的问题,可以通过修正引力函数来解决,避免由于离目标点太远导致引力过大
     
人人工势场法
和(1)式相比,(5)式增加了范围限定。d*_goal 给定了一个阈值限定了目标和物体之间的距离。对应的梯度也就是引力相应变成:
人人工势场法
(b)目标点附近有障碍物导致目标不可达的问题,引入一种新的斥力函数
人人工势场法
这里在原有斥力场的基础上,加上了目标和物体距离的影响,(n是正数,我看到有篇文献上n=2)。直观上来说,物体靠近目标时,虽然斥力场要增大,但是距离在减少,所以在一定程度上可以起到对斥力场的拖拽作用
相应斥力变成:
人人工势场法
所以可以看到这里引力分为两个部分,编程时要格外注意
(c)局部最优问题是一个人工势场法的一个大问题,这里可以通过加一个随机扰动,让物体跳出局部最优值。类似于梯度下降法局部最优值的解决方案。

四、代码整理

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



资料链接

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148259.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • EasyOCR_easyocr语言包

    EasyOCR_easyocr语言包软硬件环境windows1064bitanacondawithpython3.7nvidiagtx1066pytorch1.6easyocr简介EasyOCR是一款用py…

    2022年10月22日
  • 基于fpga的256M SDRAM控制器 【内含256m sdram仿真模型】

    基于fpga的256m的SDRAM控制器2018/7/26受教于邓堪文老师,开始真真学习控制sdram由于自己买的sdram模块是256的,原来老师的是128,所以边学边改,不知道最后好不好使,但是我有信心一.sdram的初始化sdram介绍啥的就不用了,上来就是干,简单粗暴。1.下面是引脚说明,看不懂自己可以用百度翻译,需要注意的是红框内的地址引脚和行列地址是复…

    2022年4月13日
  • 深度学习#1.有监督学习和无监督学习

    深度学习#1.有监督学习和无监督学习机器学习#1.有监督学习和无监督学习人工智能与机器学习与深度学习机器学习有监督学习无监督学习人工智能与机器学习与深度学习什么是人工智能?人类用各种方式让机器拥有与人类相仿的“智能”,就是人工智能。什么是机器学习?机器学习就是实现人工智能的一种方式。什么是深度学习?深度学习就是实现机器学习的一种技术。机器学习为什么要机器学习呢?你想啊,人类这么聪明是为什么,还不是因为在整个人类历史…

    2022年5月27日
  • 《架构之美》笔记_印象笔记如何创建目录

    《架构之美》笔记_印象笔记如何创建目录美是创造矛盾并解决矛盾。架构的多关注点(例如业务逻辑、系统扩展性、持久、并发)和简洁性就是一种矛盾,美丽的架构能解决这种矛盾,使人内心产生愉悦;随着关注点的增加,架构也在不断演进;术:分层、组件化、服务化、标准化、缓存、分离、队列、复制、冗余、代理;道:如何恰到好处地使用术,例如顿悟变化的道理、博弈中寻找平衡、相对与绝对的奥秘、开放的心态;爱因斯坦说:『让它尽可能简单,但不要过于简单』,美

    2022年11月3日
  • oracle中integer最大值,integer表示的最大整数[通俗易懂]

    oracle中integer最大值,integer表示的最大整数[通俗易懂]Integer类型的变量可能存在的最大整数为?A.256BInteger类的数据范围为,最小值为-2^31,最大值为2^31-1;验证如下,创建java类TestInteger,做测试验证用,编写java代码,创建Integer对象,值为256,数据可以输出,Integeri=newInteger(256);System.out.println(i);java中int型最大值…

    2022年9月8日
  • Boston 旅游

    Boston 旅游海滩:http://www.hamptonbeach.org/ http://www.newportmansions.org/ http://www.foxwoods.com/http://www.sunshineboston.com/bustours/mohegansun/ LaoShiChun:ConvenientPlaza,502BostonRd.Bille

    2022年6月12日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号