当前位置:网站首页>人人工势场法
人人工势场法
2022-07-02 16:17:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
人工势场法是局部路径规划的一种比较常用的方法。这种方法假设机器人在一种虚拟力场下运动。
一、简介
如图所示,机器人在一个二维环境下运动,图中指出了机器人,障碍和目标之间的相对位置。
这个图比较清晰的说明了人工势场法的作用,物体的初始点在一个较高的“山头”上,要到达的目标点在“山脚”下,这就形成了一种势场,物体在这种势的引导下,避开障碍物,到达目标点。
人工势场包括引力场合斥力场,其中目标点对物体产生引力,引导物体朝向其运动(这一点有点类似于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 程序
国外的一款友好的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
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148259.html原文链接:https://javaforall.cn
边栏推荐
- [golang | grpc] generate certificates using OpenSSL
- MySQL --- 数据库的基本操作
- Taiwan Feiling fm8pb513b MCU provides MCU program development product design
- Huimang micro IO MCU ft60f011a-rb
- Design of the multi live architecture in different places of the king glory mall
- Pms132b single chip microcomputer TWS digital tube Bluetooth charging chamber program development
- Two pieces of nature a day! Duan Fengfeng, an alumnus of the University of science and technology of China, was the third Chinese winner of the belby medal
- WPS inserts a picture and displays it completely
- 把xshell連接服務器關掉,運行的jar包就自動停止的解决方案
- uva1169
猜你喜欢

win10 kms activator

MySQL --- 数据库的基本概念

Linux中,mysql设置job任务自动启动

Keras深度学习实战——基于VGG19模型实现性别分类

WPS inserts a picture and displays it completely

Modbus protocol communication exception

Microsoft LDAP 配置页中输入有效的用户名及密码,microsoft ldap 配置页中输入有效的用户名

MySQL -- basic operation of database
![[golang | grpc] use grpc to realize simple remote call](/img/93/ae6eba2ba65d6e23bd00f45d04a2ed.png)
[golang | grpc] use grpc to realize simple remote call

Virtual lab basic experiment tutorial -7 Polarization (2)
随机推荐
Troubleshooting ideas that can solve 80% of faults
Typescript
What is the experience of maintaining Wanxing open source vector database
Huimang micro IO MCU ft60f11f-mrb
能解决 80% 故障的排查思路
PMS132B单片机TWS数码管蓝牙充电仓方案开发
Many scenic spots are temporarily closed due to the typhoon. The provincial culture and tourism department reminds you to pay attention to safety!
一个优秀程序员可抵五个普通程序员!
Easyai notes - deep learning
Solution pour arrêter automatiquement les paquets Jar en cours d'exécution en éteignant le serveur de connexion xshell
Does pytorch support 32 bits?
Two pieces of nature a day! Duan Fengfeng, an alumnus of the University of science and technology of China, was the third Chinese winner of the belby medal
PHP gets the number of days, hours, minutes and seconds between the two timestamps
Wasserstein slim gain with clipping penalty (wsgain-cp) introduction and code implementation -- missing data filling based on generating countermeasure network
[target tracking] |siamfc
【Golang | gRPC】使用openssl生成证书
Viewing technological changes through Huawei Corps (VI): smart highway
架构设计——ID生成器「建议收藏」
售价仅40元,树莓派Pico开发板加入WiFi模块,刚上市就脱销
切换变换的时候记得使用三元表达式