Demonstrate eigenvector assignment using an STOVL Model for transition.
The example is taken from:
Lee, H. P., Jr., Yousseff, H.M. and R.P. Habek, "Application of Eigenstructure Assignment to the Design of STOVL Flight Control Systems," AIAA 88-4140-CP.
------------------------------------------------------------------------ See also STOVL, ESAssign, IC ------------------------------------------------------------------------
Contents
%-------------------------------------------------------------------------- % Copyright (c) 2003 Princeton Satellite Systems, Inc. % All rights reserved. %--------------------------------------------------------------------------
System
%------- g = STOVL('lateral/directional transition'); disp(' ') disp('---------------------') disp('Open loop eigenvalues') disp('---------------------') eig(g)
---------------------
Open loop eigenvalues
---------------------
ans =
-0.5 + 0i
0.068541 + 1.5783i
0.068541 - 1.5783i
-0.89017 + 0i
-0.059012 + 0i
-50 + 0i
-50 + 0i
Desired eigenvalues
%-------------------- j = sqrt(-1); lambda = [ -1.4 + j*1.43;... -1.4 - j*1.43;... -2.1 + j*2.14;... -2.1 - j*2.14]; vD = [0 0 1 nan;... 1 nan 0 0;... nan 1 0 0;... 0 0 nan 1;... nan*ones(3,4)]; disp(vD); fC = [1 1 0 0;0 0 1 1];
0 0 1 NaN
1 NaN 0 0
NaN 1 0 0
0 0 NaN 1
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
Compute the gain and the achieved eigenvectors
%----------------------------------------------- disp(' ') disp('----') disp('Gain') disp('----') k = ESAssign( g, lambda, vD, fC); disp(k);
----
Gain
----
1.2904 2.0104 0 0
0 0 6.1928 -3.5525
Create the closed loop system
%------------------------------ [a, b, c] = getabcd( g ); aCL = a - b*k*c; disp(' ') disp('-----------------------') disp('Closed loop eigenvalues') disp('-----------------------') eig(aCL)
-----------------------
Closed loop eigenvalues
-----------------------
ans =
-47.974 + 0i
-42.818 + 0i
-5.3652 + 0i
-2.3756 + 0i
-1.1369 + 1.5463i
-1.1369 - 1.5463i
-0.50548 + 0i
Digitize the closed loop system using a zero order hold
%-------------------------------------------------------- % Simulate %--------- x = [0;0;0;0;0;pi/180;0]; IC( g, x, 0.01, 1000 ); g = set( g, aCL, 'a' ); x = [0;0;0;0;0;pi/180;0]; IC( g, x, 0.01, 1000 ); %--------------------------------------