【控制】人工势场法及人工势场函数

article/2025/8/23 17:18:18

目录

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


人工势场法-维基百科

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

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

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


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

引力场 (attractive/gravitation field)

常用的引力函数:
U a t t ( q ) = 1 2 ξ ρ 2 ( q , q g o a l ) U_{att}(q) = \frac{1}{2}\xi\rho^2(q,q_{goal}) Uatt(q)=21ξρ2(q,qgoal)

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


斥力场 (repulsive field)

传统的斥力场公式
U r e p ( q ) = { 1 2 η ( 1 ρ ( q , q o b s ) − 1 ρ 0 ) 2 , if  ρ ( q , q o b s ) ≤ ρ 0 0 , if  ρ ( q , q o b s ) > ρ 0 U_{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ρ01)2,if ρ(q,qobs)ρ00,if ρ(q,qobs)>ρ0

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

斥力就是斥力场的梯度
F r e p ( q ) = − ∇ U r e p ( q ) = { η ( 1 ρ ( q , q o b s ) − 1 ρ 0 ) ⋅ 1 ρ 2 ( q , q o b s ) ∇ ρ ( q , q o b s ) , if  ρ ( q , q o b s ) ≤ ρ 0 0 , if  ρ ( q , q o b s ) > ρ 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ρ01)ρ2(q,qobs)1ρ(q,qobs),0,if ρ(q,qobs)ρ0if ρ(q,qobs)>ρ0


总场

总的场就是斥力场合引力场的叠加,也就是 U = U a t t + U r e p U=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

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


http://chatgpt.dhexx.cn/article/s53NiJe5.shtml

相关文章

移动机器人路径规划:人工势场法

人工势场法是一种原理比较简单的移动机器人路径规划算法,它将目标点位置视做势能最低点,将地图中的障碍物视为势能高点,计算整个已知地图的势场图,然后理想情况下,机器人就像一个滚落的小球,自动避开各个障…

人工势场法matlab讲解_【机器人路径规划】人工势场法

阅读本文需要的基础知识为: 理解机器人的构型空间。建议阅读:机器人运动规划中的C space怎样理解?为什么不直接在笛卡尔坐标系下运算呢? 本文的实现程序与使用说明见我的学习工具箱:小明工坊:【个人开源】机器人运动规划学习工具箱使用说明 基本原理 1.概述 我们打两个比…

学习笔记:人工势场法

一、算法简介 1986年Khatib首先提出人工势场法,并将其应用在机器人避障领域,而现代汽车可以看作是一个高速行驶的机器人,所以该方法也可应用于汽车的避障路径规划领域。 二、算法思想 1、人工势场法的基本思想是在障碍物周围构建障碍物斥力…

人工势场法matlab讲解,传统人工势场法(matlab)

【实例简介】 人工势场法路径规划是由Khatib提出的一种虚拟力法(Oussama Khatib,Real-Time obstacle Avoidance for Manipulators and Mobile Robots. Proc of The 1994 IEEE.)。它的基本思想是将机器人在周围环境中的运动,设计成一种抽象的人造引力场中的运动,目标点对移动…

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

人工势场法是局部路径规划的一种比较常用的方法。这种方法假设机器人在一种虚拟力场下运动。 一、简介 如图所示,机器人在一个二维环境下运动,图中指出了机器人,障碍和目标之间的相对位置。 这个图比较清晰的说明了人工势场法的作用&#…

人工势场法

文章目录 前言一、人工势场法二、简要理解 1.示例2.代码总结 前言 路径规划是移动机器人领域的一个重要组成部分,传统的路径规划代表算法包括 A*算法、Dijkstra 算法、人工势场法以及仿生学的蚁群算法。人工势场法是机器人路径规划算法中一种简单有效的方法。人工势…

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

人工势场法是局部路径规划的一种比较常用的方法。这种方法假设机器人在一种虚拟力场下运动。 1. 简介 如图所示,机器人在一个二维环境下运动,图中指出了机器人,障碍和目标之间的相对位置。 这个图比较清晰的说明了人工势场法的作用&#xf…

路径规划算法3.1 人工势场法APF

路径规划算法3.1 人工势场法APF 前言电场与电势场人工势场人工势场的构建梯度下降与局部最小问题后记 前言 人工势场法APF(Artificial Potential Field),是非场经典的寻路方法,常用于移动机器人的局部路径规划,其主要思想是通过目标的引力与…

【路径规划】局部路径规划算法——人工势场法(含python实现 | c++实现)

文章目录 参考资料1. 算法简介2. 算法精讲2.1 引力势场2.2 斥力势场2.3 合力势场 3. 引力斥力推导计算4. 算法缺陷与改进4.1 目标不可达的问题4.2 陷入局部最优的问题4.3 解决方案4.3.1 改进障碍物斥力势场函数4.3.2 道路边界斥力势场 5. python实现6. c实现 参考资料 路径规划…

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

本文主要对人工势场法路径规划算法进行介绍,主要涉及人工势场法的简介、引力和斥力模型及其推导过程、人工势场法的缺陷及改进思路、人工势场法的Python与MATLAB开源源码等方面 一、人工势场法简介 人工势场法是由Khatib于1985年在论文《Real-Time Obstacle Avoidan…

美团笔试题之查找幸运星

美团笔试题之查找幸运星 题目其实很简单,特别简单,当时看一眼题目我心中就有思路了,问题就是我卡在了如何循环输入上了,简直是不可思议, 当时我想复杂了,现在看来如此简单的问题我卡了这么久,…

美团笔试题解2022-3-12号

第一题 签到 题目大意 n组数据&#xff0c;判断每组是否可以被11整除或者还有两个数位1 两个条件满足其一输出yes 否则输出no 第二题 双指针 题目大意 输入一个序列 只含1 输出连续子序列乘积为正的数目 #include<bits/stdc.h> using namespace std; const int N…

美团笔试题及解析(时间:2022年9月3号)

最新美团笔试题及解析&#xff08;时间&#xff1a;2022年9月3号&#xff09; T1 乒乓球 乒乓球&#xff0c;被称为中国的“国球”&#xff0c;是一种世界流行的球类体育项目。一局比赛的获胜规则如下&#xff1a; 当一方赢得至少11分&#xff0c;并且超过对方2分及以上时&…

春招秋招--忆美团笔试

请看https://mp.weixin.qq.com/s/LKIHHOWAT_nRsD6D9Sma3Q ** **

2023校招美团笔试

这两天状态不是很好&#xff0c;美团笔试的题比较常规&#xff0c;五个编程&#xff0c;没有选择填空&#xff0c;做的一般&#xff0c;A了两道多&#xff0c;脑子感觉因为天天熬夜有点迟钝&#xff0c;最后几个题直接摆烂了。 第一题&#xff1a;送外卖 这道题当时思路出了点…

美团笔试题_20220409

前言 笔试一共五道编程题&#xff08;四一&#xff09;&#xff0c;一为专项编程题&#xff0c;估计不同岗位有题目不一样&#xff0c;使用的是赛码网&#xff0c;允许跳出界面使用自己的IDE。 在此感谢筱羊冰冰提供的部分题目及题解。 题目一&#xff1a;数圈游戏 给定一个…

美团笔试记录

美团笔试 今天下午参加了美团校招的笔试&#xff08;web前端/移动端&#xff09;&#xff0c;题型如下&#xff1a;20道选择题、20道专项选择题、2道编程题、1道论述题。但是我肯定不能说出具体是什么题目&#xff0c;毕竟好像要保护题目的隐私。 选择题 选择题难度有点大&a…

美团2023年春招在线前端笔试题回忆版

提示&#xff1a;题目不一定完全正确&#xff0c;只能说给大家参考会考察哪些知识点。 文章目录 前言一、单选&#xff08;计算机基础知识&#xff09;二、专项选择三、编程题1. 某地有一个火车站如下图所示&#xff0c;小红很好奇火车是怎么驶进驶出的&#xff0c;然后每天记录…

关于信息学奥赛一本通(C++版)在线评测系统 1153 绝对素数

信息学奥赛一本通&#xff08;C版&#xff09;在线评测系统网址&#xff1a;信息学奥赛一本通&#xff08;C版&#xff09;在线评测系统 (ssoier.cn) 1153&#xff1a;绝对素数 时间限制: 1000 ms 内存限制: 65536 KB …

信奥一本通1365

1365&#xff1a;FBI树(fbi) 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 6443 通过数: 4366 【题目描述】 我们可以把由“0”和“1”组成的字符串分为三类&#xff1a;全“0”串称为B串&#xff0c;全“1”串称为I串&#xff0c;既含“0”又含“1”的串则称为…