【路径规划】基于人工势场算法机器人避障路径规划

369 阅读3分钟

1 简介

针对移动机器人的实时导航和避障设计了基于人工势场的控制算法,用该算法控制移动机器人能在未知的环境中,实时检测出障碍物,并实时规划出合理路径,稳定,平滑连续地向目标行驶,给出了机器人行驶的实验结果.通过小车车体方位计算确定了避障方法-人工势场法,即目标位置对移动机器人产生一种虚拟的吸引力,而障碍物对机器人产生一种虚拟的排斥力,这两种力的合成就决定了移动机器人的运动.通过对处于静态环境下的小车的路径进行了规划并进行计算机仿真.仿真结果表明,该人工势场法能有效地实现机器人小车的避障功能.

2 部分代码

```
clear all;
clc
close all
%障碍和目标,起始位置都已知的路径规划,意图实现从起点可以规划出一条避开障碍到达目标的路径。
%初始化车的参数
Xo=[0 0];% 起点位置
k=1000;% 计算引力需要的增益系数
%K=0;% 初始化
m=10;% 计算斥力的增益系数,都是自己设定的。
Po=1;%障碍影响距离,当障碍和车的距离大于这个距离时,斥力为0,即不受该障碍的影响。也是自己设定。
n=9;%障碍个数
a=0.5;
l=0.1;% 步长
J=300;%循环迭代次数
r = 0.5;
%如果不能实现预期目标,可能也与初始的增益系数, Po 设置的不合适有关。
%end
%给出障碍和目标信息
Xsum=[10 10;1 1.5;3 2.2;4 4.5;3 6;6 2.5;5.5 6; 6 4.5;9 9;8.5 5];% 这个向量是(n+1)*2 维,其中[10 10] 是目标位置,剩下的都是障碍的位置。
Xj=Xo;%j=1 循环初始,将车的起始坐标赋给Xj
%*************** 初始化结束,开始主体循环******************

end%大循环结束
K=j;
Goal(K,1)=Xsum(1,1);% 把路径向量的最后一个点赋值为目标
Goal(K,2)=Xsum(1,2);
%*********************************** 画出障碍, 起点, 目标, 路径点*************************
%画出路径
X=Goal(:,1);
Y=Goal(:,2);
axis([0,10,0,10]);
circle(Xsum,1);
for i = 2:length(Xsum)
rectangle('Position',[Xsum(i,1)-r,Xsum(i,2)-r,2*r,2*r],'Curvature',[1,1],'facecolor','r','linestyle','-'),axis equal 
end
%'facecolor','r' 内部填充颜色
%'edgecolor','r' 边框颜色
hold on;
%路径向量Goal 是二维数组,X,Y 分别是数组的x,y 元素的集合,是两个一维数组。
x=[1 3 4 3 6 5.5 6  9 8.5];% 障碍的x 坐标
y=[1.5 2.2 4.5 6 2.5 6 4.5 9 5];
plot(10,10,'v',0,0,'ms',X,Y ,'-k','linewidth',3);

Pathkm = K*l
```

 3 仿真结果

 

4 参考文献

[1]吕春峰等. "基于人工势场法机器人小车避障的研究." 昆明理工大学学报(自然科学版) s1(2005).

### 博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,有科研问题可私信交流。

**部分理论引用网络文献,若有侵权联系博主删除。**