无人车基于人工势场法的路径规划算法仿真 m文件代码可以直接运行 clc clear close all %初始化车的参数 tic Xo=[0 0];%起点位置 k=15;%计算引力需要的增益系数 K=0;%初始化 m=5;%计算斥力的增益系数,都是自己设定的。 Po=2.5; %障碍影响距离,当障碍和车的距离大于这个距离时,斥力为0,即不受该障碍的影响。也是自己设定。 n=7;%障碍个数 a=0.5; %开平方? l=0.2;%步长 J=200;%循环迭代次数 %如果不能实现预期目标,可能也与初始的增益系数,Po设置的不合适有关。 %end %给出障碍和目标信息 Xsum=[10 10;1 1.2;3 2.5;4 4.5;3 6;6 2;5.5 5.5;8 8.5]; Xsum=[10 10;1 1;2 1;3 1;4 1;5 1;6 1;7 1;];%这个向量是(n+1)*2维,其中[10 10]是目标位置,剩下的都是障碍的位置。 Xj=Xo;%j=1循环初始,将车的起始坐标赋给Xj %***************初始化结束,开始主体循环****************** for j=1:J %循环开始 Xsum(1,1)=0.2*j; Xsum(1,2)=0.2*j; Goal(j,1)=Xj(1); %Goal是保存车走过的每个点的坐标。刚开始先将起点放进该向量。 Goal(j,2)=Xj(2); %调用计算角度模块 Theta=compute_angle(Xj,Xsum,n);%Theta是计算出来的车和障碍,和目标之间的与X轴之间的夹角,统一规定角度为逆时针方向,用这个模块可以计算出来。 %调用计算引力模块 Angle=Theta(1); %Theta(1)是车和目标之间的角度,目标对车是引力。 angle_at=Theta(1);%为了后续计算斥力在引力方向的分量赋值给angle_at [Fatx,Faty]=compute_Attract(Xj,Xsum,k,Angle,0,Po,n); %计算出目标对车的引力在x,y方向的两个分量值。 for i=1:n angle_re(i)=Theta(i+1);%计算斥力用的角度,是个
评论2