💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥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.
部分理论引用网络文献,若有侵权联系博主删除。