基于偏置比例导引的任意指定攻击角度控制导引律(matlab源代码+原理)

**

基于偏置比例导引的任意指定攻击角度控制导引律(matlab源代码+原理)

**
1.问题描述
以平面内攻击静止目标为例,作如下导引几何关系
基于偏置比例导引的任意指定攻击角度控制导引律(matlab源代码+原理)

M-导弹,T-目标,M的速度V恒定,R-弹目距离,q-视线角,θ-导弹航迹角,φ-导弹前置角
导引方程如下:
dR=-Vcosφ, Rdq=v*sinφ, dθ=an/V, q=θ+φ
目标设计:
当R(t)➡0时,θ(t)➡0

2.导引律设计
偏置比例导引律结构如下:
an=NVdq+Vv,N取大于2的实数,v为未知函数(带设计的偏置项)
代入导引方程得:
dθ=N
dq+v
在区间[0,t]上积分
基于偏置比例导引的任意指定攻击角度控制导引律(matlab源代码+原理)

且在导引结束时刻,如果成功击中目标,则在导引结束时刻(t=tf时)有:
基于偏置比例导引的任意指定攻击角度控制导引律(matlab源代码+原理)
综上两式易得:
基于偏置比例导引的任意指定攻击角度控制导引律(matlab源代码+原理)
可以推断,在t时刻,偏置项v需满足如下等式:
基于偏置比例导引的任意指定攻击角度控制导引律(matlab源代码+原理)
令α(t)代替上式,只要使变量α从alpha0收敛到0,就可以满足攻击角度需求,于是构造偏执项v转化为构造使α收敛的期望动态,如:dα=-M(t)α,M(t)>0,为待定函数。
为确保当越接近目标时,α收敛的越快,可将1/R作为一个因子,由dR<0等价于cosφ>0,所以φ属于(-Π/2,Π/2),且比例导引律总是使φ收敛的,所以当φ➡Π/2时,停止调整,故将cosφ作为一个因子。
取M(t)=K
Vcosφ/R
α对时间t求导:dα=dθ-Ndq,进一步可得:dα=an/V-Ndq
所以导引律具体形式为:
**an=N
Vdq-KV^2cosφα/R
α=α-M(t)αdt** (代码中注意给alpha赋初值)

3.matlab仿真(源代码)

clear
clc

%----------导弹参数----------
v_m=250;
x_m=0;
y_m=0;
theta_m=30*pi/180;%导弹航迹角

%----------目标参数----------
v_t=0;%静止
x_t=100;
y_t=100;
theta_t=0;

%----------导弹变量定义----------
R=sqrt((x_m-x_t)^2+(y_m-y_t)^2);
q=atan((y_t-y_m)/(x_t-x_m));
dR=((x_m-x_t)*(v_m*cos(theta_m)-v_t*cos(theta_t))+(y_m-y_t)*(v_m*sin(theta_m)-v_t*sin(theta_t)))/sqrt((x_m-x_t)^2+(y_m-y_t)^2);
dq=((x_t-x_m)*(v_t*sin(theta_t)-v_m*sin(theta_m))-(y_t-y_m)*(v_t*cos(theta_t)-v_m*cos(theta_m)))/((x_m-x_t)^2+(y_m-y_t)^2);
n=1;
t=0;
dt=0.01;
hit_angle=60*pi/180;%终端攻击角度约束
phi=(q-theta_m)*180/pi;%导弹前置角
error_theta=(hit_angle-theta_m)*180/pi;%攻击角度误差

%----------导引律参数设置----------
N=3;
K=3;
alpha=theta_m-N*q+(N-1)*hit_angle;

x_m_store=[]; %保存横坐标
y_m_store=[]; %保存纵坐标
theta_m_store=[];

while (dR<0)
    %----------基于偏置比例导引律----------
    Am=N*v_m*dq-K*v_m*v_m*cos(phi)*alpha/R;
    alpha=alpha-K*v_m*cos(phi)*alpha*dt/R

    %----------计算坐标----------
    dtheta_m=Am/v_m; 
    theta_m=theta_m+dtheta_m*dt;
    x_m=x_m+v_m*cos(theta_m)*dt;
    y_m=y_m+v_m*sin(theta_m)*dt;

    R=sqrt((x_m-x_t)^2+(y_m-y_t)^2);
    q=atan((y_t-y_m)/(x_t-x_m));
    dR=((x_m-x_t)*(v_m*cos(theta_m)-v_t*cos(theta_t))+(y_m-y_t)*(v_m*sin(theta_m)-v_t*sin(theta_t)))/sqrt((x_m-x_t)^2+(y_m-y_t)^2);
    dq=((x_t-x_m)*(v_t*sin(theta_t)-v_m*sin(theta_m))-(y_t-y_m)*(v_t*cos(theta_t)-v_m*cos(theta_m)))/((x_m-x_t)^2+(y_m-y_t)^2);
  
   
    dt=0.01;
    hit_angle=60*pi/180;%终端攻击角度约束
    phi=q-theta_m;%导弹前置角
    error_theta=(hit_angle-theta_m)*180/pi;%攻击角度误差

    x_m_store(n)=x_m; %保存横坐标
    y_m_store(n)=y_m; %保存纵坐标
    theta_m_store(n)=theta_m*180/pi;%保存弹道航迹角

    n=n+1;
    t=t+dt;
end
disp('飞行时间为(s):')
t
disp('攻击角度误差(°):')
error_theta

figure(1)
plot(x_m_store,y_m_store)
xlabel('x/m')
ylabel('y/m')
title('弹道轨迹')
hold on

figure(2)
plot(1:n-1*dt,theta_m_store)
xlabel('time/s')
ylabel('弹道航迹角')
title('弹道航迹角')
hold on
grid on

4.仿真结果
基于偏置比例导引的任意指定攻击角度控制导引律(matlab源代码+原理)
基于偏置比例导引的任意指定攻击角度控制导引律(matlab源代码+原理)
可知导弹以指定攻击角度成功击中目标
个人邮箱:[email protected]

                                                                                                                                                     by PGTony