目录

  • 人工势场法-维基百科
  • 路径规划-人工势场法(Artifical Potential Field)
    • 引力场 (attractive/gravitation field)
    • 斥力场 (repulsive field)
    • 总场
  • 【机器人路径规划】人工势场法
  • Paper
  • Matlab 代码
  • 自己编写的 Matlab
    • 1. 仅考虑引力的情况

人工势场法-维基百科

人工势场法是由Khatib提出的一种机器人路径规划算法。该算法将目标和障碍物分别看做对机器人有引力和斥力的物体,机器人沿引力与斥力的合力来进行运动。

该法结构简单,便于低层的实时控制,在实时避障和平滑的轨迹控制方面,得到了广泛应用,其不足在于存在局部最优解,容易产生死锁现象,因而可能使移动机器人在到达目标点之前就停留在局部最优点。

From: 人工势场法-维基百科


路径规划-人工势场法(Artifical Potential Field)

引力场 (attractive/gravitation field)

常用的引力函数:
Uatt(q)=12ξρ2(q,qgoal)U_{att}(q) = \frac{1}{2}\xi\rho^2(q,q_{goal})Uatt​(q)=21​ξρ2(q,qgoal​)

这里的 ξ\xiξ 是尺度因子,ρ(q,qgoal)\rho(q,q_{goal})ρ(q,qgoal​) 表示物体当前状态与目标的距离。引力场有了,那么引力就是引力场对距离的导数(类比物理里面 W=FXW=FXW=FX):
Fatt(q)=−∇Uatt(q)=ξ(qgoal−q)F_{att}(q) = -\nabla U_{att}(q) = \xi(q_{goal}-q)Fatt​(q)=−∇Uatt​(q)=ξ(qgoal​−q)


斥力场 (repulsive field)

传统的斥力场公式
Urep(q)={12η(1ρ(q,qobs)−1ρ0)2,if ρ(q,qobs)≤ρ00,if ρ(q,qobs)>ρ0U_{rep}(q) = \left\{\begin{aligned} \frac{1}{2} \eta (\frac{1}{\rho(q, q_{obs})} - \frac{1}{\rho_0})^2, \quad \text{if}\ \rho(q, q_{obs}) \le \rho_0 \\ 0,\quad \text{if}\ \rho(q, q_{obs}) > \rho_0 \end{aligned}\right.Urep​(q)=⎩⎪⎨⎪⎧​21​η(ρ(q,qobs​)1​−ρ0​1​)2,if ρ(q,qobs​)≤ρ0​0,if ρ(q,qobs​)>ρ0​​

其中,
η\etaη 是斥力尺度因子,
ρ(q,qobs)\rho(q, q_{obs})ρ(q,qobs​) 代表物体和障碍物之间的距离。
ρ0\rho_0ρ0​ 代表每个障碍物的影响半径。
换言之,离开一定的距离,障碍物就对物体没有斥力影响。

斥力就是斥力场的梯度
Frep(q)=−∇Urep(q)={η(1ρ(q,qobs)−1ρ0)⋅1ρ2(q,qobs)∇ρ(q,qobs),if ρ(q,qobs)≤ρ00,if ρ(q,qobs)>ρ0\begin{aligned}F_{rep}(q) &= -\nabla U_{rep}(q)\\ &= \left\{\begin{aligned} &\eta (\frac{1}{\rho(q, q_{obs})} - \frac{1}{\rho_0}) \\ & \cdot \frac{1}{\rho^2(q,q_{obs})}\nabla\rho(q,q_{obs}),\quad & \text{if}\ \rho(q, q_{obs}) \le \rho_0 \\ & 0,\quad & \text{if}\ \rho(q, q_{obs}) > \rho_0 \end{aligned}\right.\end{aligned}Frep​(q)​=−∇Urep​(q)=⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧​​η(ρ(q,qobs​)1​−ρ0​1​)⋅ρ2(q,qobs​)1​∇ρ(q,qobs​),0,​if ρ(q,qobs​)≤ρ0​if ρ(q,qobs​)>ρ0​​​


总场

总的场就是斥力场合引力场的叠加,也就是 U=Uatt+UrepU=U_{att}+U_{rep}U=Uatt​+Urep​,总的力也是对对应的分力的叠加,如下图所示:



From: 路径规划-人工势场法(Artifical Potential Field)


【机器人路径规划】人工势场法

1.概述

我们打两个比方来说明人工势场法的作用机理。首先,我们把构型空间比作一个电势场平面,机器人(的当前构型)比作空间中一点。如果让机器人的起点和障碍物带正电荷,终点带负电荷,机器人带正电荷。由于同性电荷相斥,异性电荷相吸的原理,机器人将会在电场力的作用下沿着某条路径向终点移动 ,并避开带正电荷的障碍物,如图1所示。


类似的,我们也可以把构型空间比作一个有起伏地形的区域。其中,起点和障碍物位于较高的区域,终点位于较低的区域,机器人视作一个球体。那么在重力的作用下,机器人将沿着某条轨迹从较高的起点滑落到较低的终点,并避开较高的障碍物。如图2[2]所示。

以上的两个例子其实就是电势场与重力势场的作用机制,电势场和重力势场都是自然势场。而人工势场法就是在已知起点、终点和障碍物位置的情况下,构建一个人工势场来模仿这种作用机制。人工势场法的优点在于,它其实是一种反馈控制策略,对控制和传感误差有一定的鲁棒性;缺点在于存在局部极小值问题,因此不能保证一定能找到问题的解。

From: 【机器人路径规划】人工势场法


Paper

M. Zhang, Y. Shen, Q. Wang and Y. Wang, “Dynamic artificial potential field based multi-robot formation control,” 2010 IEEE Instrumentation & Measurement Technology Conference Proceedings, 2010, pp. 1530-1534, doi: 10.1109/IMTC.2010.5488238.


close all;cleardensity = 0.2;
Grid_X = 0:density:10;
Grid_Y = 0:density:10;
Basic_Z = ones(length(Grid_X), length(Grid_Y));P0 = 20;
a = 20; %斥力影响因素
b = 10; %引力影响因素Goal = [10,10]; %目标
Obs = [ 3, 2;3, 3;5, 7;5.3, 6;6, 6;2, 4;3, 8;4, 7;8, 9]; %障碍物坐标
for k1 = 1: length(Grid_X)for k2 =1:length(Grid_Y)X_c = Grid_X(k1);Y_c = Grid_Y(k2);rre =[];rat = sqrt((Goal(1)-X_c)^2 +(Goal(2)-Y_c)^2);Y_rre = [];Y_ata = [];for k3 = 1:length(Obs)rre(k3) =    sqrt((Obs(k3,1)-X_c)^2 +(Obs(k3,2)-Y_c)^2);Y_rre(k3) = a*(1/rre(k3)  - 1/P0 ) *1/(rre(k3)^2); %基本斥力场公式if  isinf(Y_rre(k3))==1|| Y_rre(k3)>150 %为显示效果做的限制处理Y_rre = 150;endendY_ata = b*rat; %基本引力场公式,注意这里引力只有一个值Field_rre(k1,k2) = sum(Y_rre);Field_ata(k1,k2) =  Y_ata;end
endSUM = Field_rre  + Field_ata;
surf(Grid_X,Grid_Y,SUM) %总力场

Matlab 代码

人工势场算法 Matlab版源码


自己编写的 Matlab

1. 仅考虑引力的情况

% 自写人工势场法测试函数
% 说明:
% X 轴:时间 time
% Y 轴:小车横坐标
% Z 轴:小车纵坐标
% 初始位置:[0 0]'
% 目标位置:[10 10]'clearP0 = [0 0]';
Pt(:,1) = P0;
PGoal = [10 10]';
Ut(:,1) = [0 0]';% 时间参数
tBegin = 0;
tEnd = 10;
dT = 0.01;
T(1,1) = tBegin;
times = (tEnd - tBegin)/dT;% 其他参数
xi = 0.8;for time=1:timesT(1,time+1) = T(1,time) + dT;% 引力FGravitation = xi * (PGoal - Pt(:,time));% 斥力FRepulsive = 0;% 合力Ut(:,time+1) = FGravitation + FRepulsive;% 更新位置Pt(:,time+1) = Pt(:,time) + dT * Ut(:,time);
endfigure(1)
plot3(T,Pt(1,:),Pt(2,:))
xlabel('Time');
ylabel('XPosition');
zlabel('YPosition');
grid onfigure(2)
plot3(T,Ut(1,:),Ut(2,:))
xlabel('Time');
ylabel('XSpeed');
zlabel('YSpeed');
grid on


【控制】人工势场法及人工势场函数相关推荐

  1. 人工势场法路径规划算法(APF)

       本文主要对人工势场法路径规划算法进行介绍,主要涉及人工势场法的简介.引力和斥力模型及其推导过程.人工势场法的缺陷及改进思路.人工势场法的Python与MATLAB开源源码等方面    一.人工势 ...

  2. 机器人路径规划_人工势场法

    机器人路径规划_人工势场法 原理 人工势场法是由Khatib提出的一种虚拟力法.原理是:将机器人在环境中的运动视为一种机器人在虚拟的人工受力场的运动.障碍物对机器人产生斥力,目标点对机器人产生引力,引 ...

  3. matlab人工势场法三维演示图,人工势场法(Artificial Potential Field Method)的学习

    最近的工作重心回到到算法上之后,陆陆续续开始学习一些自动驾驶的控制算法.目前工作的方向主要是online trajectory generation和底层控制. 对于在线路径规划,一个重要的概念是其应 ...

  4. 基于人工势场法的二维平面内无人机的路径规划的matlab仿真,并通过对势场法改进避免了无人机陷入极值的问题

    目录 1.算法描述 2.matlab算法仿真效果 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 人工势场法原理是:首先构建一个人工虚拟势场,该势场由两部分组成,一部分是目标点对移动机器 ...

  5. 多机器人编队人工势场法协同避障算法原理及实现

    多机器人编队(二)多机器人编队人工势场法协同避障算法原理及实现 避障算法原理 避障算法仿真 多机器人协同编队需要将理论和实践紧密地结合起来,其应用包括编队队形生成.保持.变换和路径规划与避障等等都是基 ...

  6. 路径规划算法3 改进的人工势场法(Matlab)

    目录 传统人工势场 引力势场 斥力势场 合力势场 传统人工势场法存在的问题 改进的人工势场函数 Matlab代码实现 参考链接: [1]朱伟达. 基于改进型人工势场法的车辆避障路径规划研究[D]. 江 ...

  7. matlab人工势场法三维演示图,运动规划入门 | 5. 白话人工势场法,从原理到Matlab实现...

    如何利用人工势场进行运动规划? 1.1 引力势场(Attractive Potential Field) 人工势场这个特殊的势场并不是一个单一的场,其实它是由两个场叠加组合而成的,一个是引力场,一个是 ...

  8. 【全局规划】人工势场法(APF)

    人工势场法APF clc clear close all%% 初始化车的参数 d = 3.5; % 道路标准宽度 W = 1.8; % 汽车宽度 L = 4.7; % 车长P0 = [0,-d/2,1 ...

  9. 基于人工势场法的路径规划

    基于人工势场法的路径规划 \qquad 路径规划是移动机器人领域的一个重要组成部分,人工势场法是机器人路径规划算法中一种简单有效的方法. \qquad 势场法的基本思想是在移动机器人的工作环境中构造一 ...

  10. 路劲规划与轨迹跟踪学习4——人工势场法

    本文参考(85条消息) [路径规划]局部路径规划算法--人工势场法(含python实现 | c++实现)_CHH3213的博客-CSDN博客_人工势场法路径规划 路径规划与轨迹跟踪系列算法学习_第6讲 ...

最新文章

  1. Redis 10亿数据量只需要100MB内存,为什么这么牛?
  2. vfifo控制mig_MIG IP控制DDR3读写测试
  3. Gray Code LeetCode 89
  4. LeetCode 1276. 不浪费原料的汉堡制作方案(解方程)
  5. LeetCode 581. Shortest Unsorted Continuous Subarray
  6. 如何让JSON只从Model中输出一部分
  7. ASP.NET中Session简单原理图
  8. 安装slide后Powerpoint 不自动退出的解决方案
  9. python在windows 比linux 慢,为什么python在Windows上这么慢?
  10. SQLMAP 脱库过程(post请求,三种方法)
  11. 开源FTP客户端FileZilla Pro 3.53完整版
  12. Excel中的空值与数值比较
  13. Linux实战之ssl自签名证书
  14. Sqoop基于时间列的增量数据之LastModified方式
  15. 泛生子Q2及臻和招股书速读
  16. 苹果软件更新在哪里_苹果iOS 14.1/iPadOS 14.1正式版发布:新增更新机型[多图]-软件资讯...
  17. python eof是什么_python eoferror是什么异常
  18. Android获取局域网所有设备的ip地址
  19. 使用eagle导出PCB制造商可用的gerber文件
  20. 【转】Linux 虚拟内存

热门文章

  1. spring boot通过JPA访问Mysql
  2. 2021-2027全球与中国MSMS探针卡市场现状及未来发展趋势
  3. Qimage QBuffer
  4. Hadoop集群配置(二)免密登录和集群配置
  5. 《算法第4版》与《算法导论》比较
  6. 【Git】Git提交代码详细步骤
  7. 中达优控触摸屏编程视频教程_YKBuilder(中达优控触摸屏编程软件)下载 v5.0.200官方版-下载啦...
  8. 带你入门HTML+CSS网页设计,编写网页代码的思路
  9. Linux信号量详解
  10. java pkcs1转pkcs8_openssl生成RSA格式及pkcs1与pkcs8格式互相转换