Tabla de contenido
Campo potencial artificial tradicional
Problemas existentes en el método tradicional de campo potencial artificial
Función mejorada del campo potencial artificial
Implementación del código Matlab
Link de referencia:
[1] Zhu Weida. Investigación sobre la planificación de rutas para evitar obstáculos en vehículos basada en un método mejorado de campo potencial artificial [D], Universidad de Jiangsu, 2017.
En 1986, Khatib propuso por primera vez el método del campo potencial artificial y lo aplicó en el campo de la evitación de obstáculos por parte de robots. La idea básica de este método es construir un campo potencial repulsivo de obstáculo alrededor del obstáculo y un campo potencial gravitacional alrededor del punto objetivo, que es similar al campo electromagnético en física. El objeto controlado está sometido a una fuerza repulsiva y una fuerza gravitacional en el campo compuesto formado por estos dos campos potenciales. La fuerza resultante de la fuerza repulsiva y la fuerza gravitacional guía el movimiento del objeto controlado y busca un camino para evitar obstáculos sin colisiones.
Este método tiene una estructura simple y es conveniente para el control en tiempo real de bajo nivel. Se ha utilizado ampliamente para evitar obstáculos en tiempo real y controlar trayectorias suaves. Sus desventajas radican en la existencia de soluciones óptimas locales, objetivos inalcanzables y colisiones. con obstáculos.
Campo potencial artificial tradicional
campo potencial gravitacional
campo potencial repulsivo
El factor que determina el campo potencial de repulsión del obstáculo es la distancia entre el automóvil y el obstáculo. Cuando el automóvil no entra en el rango de influencia del obstáculo, el valor de energía potencial que recibe es cero; después de que el automóvil ingresa en el rango de influencia del obstáculo. obstáculo, la distancia entre los dos Cuanto mayor es la distancia, menor es el valor de la energía potencial del automóvil, y cuanto menor es la distancia, mayor es el valor de la energía potencial del automóvil.
campo de potencial de fuerza
+ =
Problemas existentes en el método tradicional de campo potencial artificial
Función mejorada del campo potencial artificial
Implementación del código Matlab
principal función principal
%main主函数
%created by MW
%date: 2023/2/28
%func: Artificial Potential Field(APF) avoiding obstacle
clc;
clear;
%% 创建并绘制障碍物
obstacle = [2 5;
3 8;
7 9;
4 2;
6 6;
9 3];
figure(1);
scatter(obstacle(:,1),obstacle(:,2),'r')
axis equal;
%% 创建并绘制初始位置和目标位置
start = [0 0];
goal = [10 10];
hold on;
scatter(start(1),start(2),'filled','g');
scatter(goal(1),goal(2),'filled','g');
%% 图片标注
text(start(1),start(2),'起点');
text(goal(1),goal(2),'终点');
grid on;
axis equal;
axis([0 10 0 10]);
xlabel('x');
ylabel('y');
title('人工势场法生成避障路径')
%% 生成并绘制避障路径
path = APF2D(start, goal, obstacle);
hold on;
plot(path(:,1), path(:,2),'LineWidth',1,'Color','b');
La función principal del método del campo de potencial artificial:
function path = APF2D(start,goal,obstacle)
% Artificial Potential Field(APF)avoiding obstacle path
%%APF参数初始化
%如果不能实现预期目标,可能也与初始的增益系数,Po设置的不合适有关。
att = 35;%引力增益系数
req = 10;%斥力增益系数
p0 = 5;%障碍物产生影响的最大距离,当障碍与移动目标之间距离大于Po时,斥力为0。
step = 2;%步长
maxIter = 200;%最大循环迭代次数
n = length(obstacle(:,1));%障碍物个数
path = start;%路径初始化
newNode = start;
for i = 1:maxIter
%% 引力计算
V_att = goal - newNode;%路径点到目标点的向量
r_att = sqrt(V_att(1)^2 + V_att(2)^2);%路径点到目标点的欧氏距离
P_att = att * V_att;%引力
%% 斥力计算
%改进的人工势场法,将斥力分散一部分到引力方向。通过添加随机扰动r_att^n实现,r_att为路径点到目标点的欧氏距离,本文n取2。
V_req = zeros(n,2);
for j =1:n
V_req(j,:) = [obstacle(j,1) - newNode(1), obstacle(j,2) - newNode(2)];%路径点到各个障碍物的向量
r_req(j) = sqrt(V_req(j,1)* V_req(j,1) + V_req(j,2)* V_req(j,2));%路径点到各个障碍物的欧氏距离
end
P_req = 0;
for k = 1:n
if r_req(k) <= p0
P_req1 = req * (1 / r_req(k) - 1 / p0) * r_att^2 / r_req(k)^2;%斥力分量1:障碍物指向路径点的斥力
P_req2 = req * (1 / r_req(k) - 1 / p0)^2 * r_att;%斥力分量2:路径点指向目标点的分引力
P_reqk = P_req1 / r_req(k) * V_req(k,:) + P_req2 / r_att * V_att;%合力分散到x,y方向
P_req = P_req + P_reqk;%斥力
end
end
%% 合力计算
P = P_att + P_req;
newNode = newNode + step * P / norm(P);
path = [path; newNode];
end
end
resultado:
Cabe señalar que la selección de gravedad, ganancia de repulsión y tamaño del paso afectará el resultado y se puede ajustar adecuadamente.
En particular, el método del campo de potencial artificial tiende a caer en un mínimo local, incluso si se mejora agregando un factor de ajuste, en algunos casos sigue siendo inevitable.