【模型预测】A-4D战斗机姿态控制的模型预测控制方法(Matlab代码实现)

本文探讨了A-4D战斗机的姿态控制问题,采用模型预测控制(MPC)方法,包括基于状态和基于输出的参考跟踪MPC。通过对线性化姿态动力学模型的分析,证明了系统在不同预测地平线长度下的稳定性。实验表明,该战斗机能有效抑制干扰并跟踪特定俯仰角。
摘要由CSDN通过智能技术生成

👨‍🎓个人主页:研学社的博客    

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

飞行器姿态控制通过复杂的动力学来描述,这使得该系统的控制算法的设计变得困难。除此之外,战斗机尤其被设计成天生不稳定的,因为这使它们更加敏捷,能够进行侵略性机动。出于这个原因,需要先进的控制技术来确保飞机的稳定性和控制。目前在飞行器和航天器中,姿态控制的许多研究工作都集中在增量非线性动态反演上。

本文研究了一种应用于A-4D战斗机姿态控制的模型预测控制方法。MPC控制器中使用的动力学模型是飞机旋转动力学的线性化。本文考虑了两种类型的MPC控制,即基于状态的参考跟踪MPC和具有扰动抑制的基于输出的参考追踪MPC,并通过稳定性分析证明了跟踪问题的渐近闭环稳定性。

研究发现,A-4D战斗机的线性化姿态动力学是开环稳定的,无论预测地平线长度如何,都会导致稳定性。此外,还发现A-4D战斗机在跟踪特定俯仰角时能够抑制干扰。

📚2 运行结果

主函数部分代码:

clear all
clc
close all
​
%% Data
​
% states = [angle of attack, pitch rate, pitch angle]
​
dt = 0.1;    %time step
T=15;        %simulation time
Nsim = T/dt; %number of simulation steps
​
%Continuous-time model dynamics
​
A = [ -0.5507  1      0;
      -9.7621 -0.9983 0;
       0       1      0 ];              
B = [ -0.0545
      -14.494
      0 ];               
C = [ 0 1 0;
      0 0 1 ];
D = [ 0;  0 ];
​
%Discrete-time model dynamics
​
sys = ss(A, B, C, D);                       %state-space model
sys = c2d(sys, dt);                         %discrete state-space model
​
%LTI system definition
​
LTI.A = sys.A;
​
LTI.B = sys.B;
​
LTI.C = sys.C;
​
LTI.D = sys.D;
              
LTI.x0 = [ 0.0; 0; 0.0 ];
LTI.d = [ 0.0; 0.0 ];
LTI.yref = [ 0.0; 0.0 ];
​
%Definition of system dimension
​
dim.nx = 3;     %state dimension
dim.nu = 1;     %input dimension
dim.ny = 2;     %output dimension
dim.nd = 2;     %disturbance dimension
dim.N =  5;     %horizon
​
%Definition of quadratic cost function
​
weight.Q = diag([10, 10, 500]);                  %weight on output
weight.R = eye(dim.nu);                          %weight on input
weight.P = dare(sys.A,sys.B,weight.Q,weight.R);  %terminal cost
​
%% Observer gain and disturbance matrices
​
K = place(LTI.A',(LTI.C*LTI.A)',[0.85; 0.90; 0.55])';      %tuning gain matrix
L = [K; eye(2)];                                           %observer gain
LTI.Bd = K;
LTI.Cd = eye(2) - C*K;
​
%% Check observability condition
​
rank = rank([eye(dim.nx)-LTI.A -LTI.Bd; LTI.C LTI.Cd]);
disp(rank)
​
%% Augmented system dynamics
​
LTIe.A = [ LTI.A LTI.Bd; zeros(dim.nd,dim.nx) eye(dim.nd) ];
LTIe.B = [ LTI.B; zeros(dim.nd,dim.nu) ];
LTIe.C = [ LTI.C LTI.Cd ];
LTIe.x0 = [ LTI.x0; LTI.d ];
LTIe.yref = LTI.yref;
​
%Definition of system dimension
dime.nx = 5;     %state dimension
dime.nu = 1;     %input dimension
dime.ny = 2;     %output dimension
dime.N  = dim.N; %horizon
​
%Definition of quadratic cost function
weighte.Q = blkdiag(weight.Q, zeros(dim.nd));            %weight on output
weighte.R = weight.R;                                    %weight on input
weighte.P = blkdiag(weight.P, zeros(dim.nd));            %terminal cost

🎉3 参考文献

[1]孙秀云. 小型无人直升机自主飞行控制算法研究[D].南开大学,2013.

部分理论引用网络文献,若有侵权联系博主删除。

🌈4 Matlab代码实现

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值