Demonstrate eigenvector assignment using an STOVL Model
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. -------------------------------------------------------------------------
s = {'longitudinal hover' ... 'lateral/directional hover' ... 'longitudinal transition' ... 'lateral/directional transition'}; i = 1:4; lambda = {}; vD = {}; fC = {}; x = {};
Desired eigenstructures
%------------------------
Longitudinal Hover
%------------------- j = sqrt(-1); lambda{1} = [ -1.5+j*2; -1.5-j*2; -0.667; -1.0; -1.25]; vD{1} = [ 0 0 1 0 0;... 0 0 0 1 nan;... 1 nan 0 0 0;... nan 1 nan nan nan;... nan nan nan nan 1;... nan*ones(2,5)]; fC{1} = [1 1 1 0 0; 0 0 0 1 1]; x{1} = [1;0;0;0;0;0;0];
Lateral Hover
%-------------- lambda{2} = [ -1.5+j*2;-1.5-j*2;-.667;-4;-1]; vD{2} = [ nan nan 1 0 0;... 1 nan nan 0 0;... nan 1 nan nan nan;... 0 0 0 1 nan;... 0 0 0 nan 1;... nan*ones(2,5)]; fC{2} = [1 1 1 0 0; 0 0 0 1 1]; x{2} = [1;0;0;0;0;0;0];
Longitudinal transition
%------------------------ lambda{3} = [ -1.25+j; -1.25-j; -7.5; -1.4]; vD{3} = [ 1 nan 0 0;... nan 1 0 0;... 0 0 nan 1;... 0 0 1 nan;... nan*ones(3,4)]; fC{3} = [1 1 0 0; 0 0 1 0; 0 0 0 1]; x{3} = [1;0;0;0;0;0;0]; r = [];
Lateral transition
%------------------- lambda{4} = [ -1.4+j*1.43; -1.4-j*1.43; -2.1+j*2.14; -2.1-j*2.14]; vD{4} = [0 0 1 nan;... 1 nan 0 0;... nan 1 0 0;... 0 0 nan 1;... nan*ones(3,4)]; fC{4} = [1 1 0 0;0 0 1 1]; x{4} = [1;0;0;0;0;0;0]; for k = i disp(' ') disp('========================================') disp(s{k}) disp('========================================') % System %------- g = STOVL( s{k}) ; disp(' ') disp('----------------------') disp('Open loop eigenvalues') disp('----------------------') eig(g) % Compute the gain and the achieved eigenvectors %----------------------------------------------- f = ESAssign( g, lambda{k}, vD{k},fC{k}); disp(' ') disp('-----------------------') disp('Gain') disp('-----------------------') disp(f) % Create the closed loop system %------------------------------ [a, b, c] = getabcd( g ); aCL = a - b*f*c; disp(' ') disp('-----------------------') disp('Closed loop eigenvalues') disp('-----------------------') eig(aCL) % Simulate %--------- g = set( g, aCL, 'a' ); IC( g, x{k}, 0.01, 1000 ); end %--------------------------------------
======================================== longitudinal hover ======================================== ---------------------- Open loop eigenvalues ---------------------- ans = 0 + 0i -0.014 + 0i 0.30556 + 0i -0.21428 + 0.29724i -0.21428 - 0.29724i -50 + 0i -4 + 0i ----------------------- Gain ----------------------- -0.54281 0.31936 0.69081 0 0 0 0 0 1.0326 0.441 ----------------------- Closed loop eigenvalues ----------------------- ans = -46.456 + 0i -1.5001 + 2i -1.5001 - 2i -0.66639 + 0i -1.7657 + 0i -1.0047 + 0i -1.244 + 0i ======================================== lateral/directional hover ======================================== ---------------------- Open loop eigenvalues ---------------------- ans = 0 + 0i -0.013 + 0i 0.65401 + 0i -0.379 + 0.59485i -0.379 - 0.59485i -50 + 0i -50 + 0i ----------------------- Gain ----------------------- 0.067459 0.04815 0.092453 0 0 0 0 0 -0.44616 -0.34769 ----------------------- Closed loop eigenvalues ----------------------- ans = -46.743 + 0i -44.933 + 0i -3.9913 + 0i -1.386 + 1.791i -1.386 - 1.791i -1.0655 + 0i -0.61269 + 0i ======================================== longitudinal transition ======================================== ---------------------- Open loop eigenvalues ---------------------- ans = -2.5144 + 0i 1.8883 + 0i -0.024921 + 0.1597i -0.024921 - 0.1597i -50 + 0i -50 + 0i -4 + 0i Warning: The selected eigenvector for eigenvalue 2 leads to an ill-conditioned inverse. Warning: The selected eigenvector for eigenvalue 4 leads to an ill-conditioned inverse. ----------------------- Gain ----------------------- 1.0955 2.0764 0 0 0 0 -1.8914 0 0 0 0 0.53071 ----------------------- Closed loop eigenvalues ----------------------- ans = -45.069 + 0i -49.471 + 0i -4.0474 + 0.29163i -4.0474 - 0.29163i -0.77002 + 1.0853i -0.77002 - 1.0853i -0.50182 + 0i ======================================== lateral/directional transition ======================================== ---------------------- 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 ----------------------- Gain ----------------------- 1.2904 2.0104 0 0 0 0 6.1928 -3.5525 ----------------------- 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