人工势场路径规划matlab仿真,基于人工势场法的移动机器人路径规划MAtlab程序

传统人工势场法程序

主程序:

clear

clc

Xo=[0 0];%起点位置

k=15;%计算引力需要的增益系数

m=4;%计算斥力的增益系数,都是自己设定的。

Po=2.5;%障碍影响距离,当障碍和车的距离大于这个距离时,斥力为0,即不受该障碍的影响。也是自己设定。

n=7;%障碍个数

l=0.2;%步长

J=600;%循环迭代次数

%如果不能实现预期目标,可能也与初始的增益系数,Po设置的不合适有关。

%end

%给出障碍和目标信息

Xsum=[10 10;1 1.5;3 2.2;4 4.5;3 6;6 2;5.5 6;8 8.2];%这个向量是(n+1)*2维,其中[10 10]是目标位置,剩下的都是障碍的位置。

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);%计算出目标对车的引力在x,y方向的两个分量值。

for i=1:n

angle_re(i)=Theta(i+1);%计算斥力用的角度,是个向量,因为有n个障碍,就有n个角度。end

%调用计算斥力模块

[Yrerxx,Yreryy]=compute_repulsion(Xj,Xsum,m,angle_re,n,Po);%计算出斥力在x,y方向的分量数组。

%计算合力和方向,这有问题,应该是数,每个j循环的时候合力的大小应该是一个唯一的数,不是数组。应该把斥力的所有分量相加,引力所有分量相加。

Fsumyj=Faty+Yreryy;%y方向的合力

Fsumxj=Fatx+Yrerxx;%x方向的合力

Position_angle(j)=atan(Fsumyj/Fsumxj);%合力与x轴方向的夹角向量

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值