传统人工势场法---经典算法

网上代码很多,这个可以直接使用。

Xo=[0 0];%起点位置
k=50;%计算引力需要的增益系数
K=0;%初始化
m=15;%计算斥力的增益系数,都是自己设定的。
Po=0.5;%障碍影响距离,当障碍和车的距离大于这个距离时,斥力为0,即不受该障碍的影响。也是自己设定。
n=6;%障碍个数
a=0.5;
l=0.2;%步长
J=200;%循环迭代次数
Xsum=[6 10;1 1.2;3 2.5;4 4.5;3 6;6 2;5.5 5.5;];%这个向量是(n+1)*2维,其中[10 10]是目标位置,剩下的都是障碍的位置。也可以用XGOAL重新另写一行
Xj=Xo;%j=1循环初始,将车的起始坐标赋给Xj
%***************初始化结束,开始主体循环******************
for j=1: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);%计算斥力用的角度,是个向量,因为有n个障碍,就有n个角度。
     end
%调用计算斥力模块
[Frerxx,Freryy,Fataxx,Fatayy]=compute_repulsion(Xj,Xsum,m,angle_at,angle_re,n,Po,a);%计算出斥力在x,y方向的分量数组。
%计算出X,Y方向向量
    Fsumyj=Faty+Freryy+Fatayy;
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值