-
大小: 4KB文件类型: .m金币: 1下载: 0 次发布日期: 2021-06-02
- 语言: Matlab
- 标签:
资源简介
经典比例导引法,二维,详细注释每一行代码,适合比例导引法的入门学习
代码片段和文件信息
clear all;
close all;
clc;
Time=0;
TimeStep=0.005; %仿真步长
%-------初始化制导系统参数---------
pi=3.141592653;
g=9.8;
Ma=340;
%---------导弹参数--------------
Rmx=50;Rmy=0; %导弹初始位置
Vm=-3.24*Time^3+41.7*Time^2-248*Time+888; %导弹速度(m/s)
AmMay=500*g; %导弹最大机动能力
HeadError=-0.001; %指向角误差
%-------目标参数------------
Rt=6000; %目标初始距离(弹目斜距)
ThetaT=pi+8/180*pi; %目标速度方向
Rtx=Rt*cos(8/180*pi); %目标初始X轴位置
Rty=Rt*sin(8/180*pi); %目标初始Y轴位置
Vt=5*Ma; %目标速度(m/s)
AtMay=0*g; %目标机动能力
%--------导弹和目标几何运动学结算--------
Rtmx=Rtx-Rmx; %弹目在X轴方向的相对距离
Rtmy=Rty-Rmy; %弹目在Y轴方向的相对距离
Rtm=sqrt(Rtmx^2+Rtmy^2); %计算弹目相对距离
SightAngle=atan(Rtmy/Rtmx); %视线角
LeadAngle=asin(Vt*sin(SightAngle-ThetaT)/Vm); %指向角
Vmx=Vm*cos(SightAngle-LeadAngle+HeadError); %导弹沿X轴方向的速度分量
Vmy=Vm*sin(SightAngle-LeadAngle+HeadError); %导弹沿Y轴方向的速度分量
Vtx=Vt*cos(ThetaT); %目标沿X轴方向的速度分量
Vty=Vt*sin(ThetaT); %目标沿Y轴方向的速度分量
Vtmx=Vtx-Vmx; %弹目在X轴方向上的相对速度
Vtmy=Vty-Vmy; %弹目在Y轴上的相对速度
Vc=-(Rtmx*Vtmx+Rtmy*Vtmy)/Rtm; %弹目相对速度
q=1;
Am=0;
dSightAngle=0;
% b1(11)=Rtm;
while(1)
rmx2(1q)=Rmx;
rmy2(1q)=Rmy;
rtx2(1q)=Rtx;
rty2(1q)=Rty;
a2(1q)=Am;
time2(1q)=Time;
dq1(1q)=SightAngle;
dq2(1q)=dSightAngle;
b1(1q)=Rtm;
t1(1q)=ThetaT;
vm1(1q)=Vm;
if(abs(Rtm)<1) %击中目标
break;
end
if(abs(Rtm)<500)
TimeStep=0.00005;
end
dSightAngle=(Rtmx*Vtmy-Rtmy*Vtmx)/(Rtm^2); %视线角速率
kd=3;
%----------导弹加速度(导弹加速度矢量垂直于视线角速度方向)-------
Am=Vc*dSightAngle*kd; %比例导引律
if Am>AmMay %限制机动能力
Am=AmMay;
end
if Am<-AmMay
Am=-AmMay;
end
Amx=-Am*sin(SightAngle); %沿x轴的加速度分量
Amy=Am*cos(SightAngle); %沿Y轴的加速度分量
%---------状态刷新-----------------
Time=Time+TimeStep;
Rmx=Rmx+TimeStep*Vmx;
评论
共有 条评论