# MIMO - structured uncertainty boundary, Is it too conservative?

Hello Everybody,
I am trying to control a model of the B1 aircraft, with robust control. I have linearized the model twice, changing the aircraft
parameters a little bit (mass +-3*, aerodynamic coefficients +- 3%, Inertia moments, etc) so that I have a nominal (Gn) and a real model (Gp)
The linearized model has 2 inputs and 2 outputs (in fact I have a very complete model, but I am using it simplified).
The inputs are:
(El) - Elevator (CV) - Control Vane Canards.
The B1 bomber is a very elastic airplane, and that means when the elevator (El) is deflected, the aircraft body bends. The aircraft has two canards (CV) in
the nose to compensate the elastic modes and perform vibration control.
The two outputs are:
Alpha - Angle of Attack Eta_dot - derivative of the generalized coordinate of the aircraft's first elastic mode (or simply the derivative of the aircraft deflection)
To make things very simple, my control requirement is to robustly follow an angle of attack reference keeping Eta_dot = 0.
When studying the shape of the robustness boundary sigma(1/m) =sigma(Gn*(Gn-Gp)^-1)) it is strange to see that it increases from - inf to 20 db for the low frequencies [-inf 1] and then decreases again.
Obs.: Although I call it is low frequencies, this range includes ([- inf 1]) part of the dynamics for the aircraft fugoidal (long period) response
The reason I believe it is strange, is that in steady state, eta_dot always goes to zero, either by an elevator command or by a CV command. Also, the alpha output always goes to zero (steady state) when the CV is comanded (because the high pass filter that returns the CV to zero), and becouse of
that, the robustness boundary should be wider for low frequencies. In other words:
- For a step in El we have a constant Alfa and Eta_dot =0 in the steady state - For a step in CV we have Alfa =0 and Eta_dot =0 in the steady state
That means that the only steady state error Gp-Gn existent in the transfer function matrix is in the element 1,1 (between alpha and the elevator) and this
relative error is small.

ans -0.003243929862614 0.000000000000000 0 0
but the relative error ((Gn-Gp)) does not behave like that:

ans 1.0e+013 *
-0.000000000000006 -4.706320891937156 -0.000000000000000 -0.000000000000003
The (1,2) element goes to infinity when the frequency goes to zero, and that creates a boundary sigma(1/m) impossible to meet, since for the frequencies below w=0.02 the boundary is smaller then '1' (20*log(sigma(1/m)) < 0) and then I cannot have a close loop transfer function with zero error in steady state.
My question is, do I have to respect such a boundary for "low" frequencies where the absolute error goes to zero, but the relative error goes to infinity? It seems the criteria is too conservative for this plant.
I have a .m file copied below, that should help me to explain my question:
%Nominal Aircraft AnQeQpn
=[-0.0081,0.0733,-13.5485,-9.7843,0,0,0;-0.0781,-0.2956,198.572,-0.66,-0.0011,-0.5271,-0.0181;0.0005,-0.0102,-0.5981,0,-0,-0.0411,-0.0024;0,0,1,0,0,0,0;-0.06
73,0.9977,0,-200,0,0,0;0,0,0,0,0,0,1;3.0573,0.1518,-162.5816,0,0.0347,-151.7671,-1.5842;] BnQeQpn =[0.0473,0.011;-0.1249,-0.0293;-0.059,0.018;0,0;0,0;0,0;-32.8464,-21.8012;] CnaAlphaQpn = [0,-0.005,0,0,0,0,0;0,0,0,0,0,0,0.0233;];
%Real Aircraft AnQeQp
=[-0.0081,0.0751,-13.8648,-9.7832,0,0,0,0.0468,0.011;-0.0777,-0.2939,198.3648,-0.6766,-0.0011,-0.5208,-0.0177,-0.1231,-0.0292;0.0006,-0.0103,-0.5959,0,-0,-0.
0406,-0.0024,-0.059,0.0179;0,0,1,0,0,0,0,0,0;-0.069,0.9976,0,-200,0,0,0,0,0;0,0,0,0,0,0,1,0,0;3.1068,0.1606,-162.5818,0,0.0352,-151.7671,-1.5842,-32.8461,-21
.8012;0,0,0,0,0,0,0,-50,0;0,0,0,0,0,0,0,0,-50;] BnQeQp =[0,0;0,0;0,0;0,0;0,0;0,0;0,0;50,0;0,50;] CnaAlphaQp = [CnaAlphaQpn [0 0;0 0]];
%High pass mode control vane filter F=[1 0;0 tf([1 0],[1 10])]; Gn=ss(AnQeQpn,BnQeQpn,CnaAlphaQpn,0)*F; Gp=ss(AnQeQp,BnQeQp,[CnaAlphaQpn [0 0;0 0]],0)*F;
[SV,W]=sigma(((Gn-Gp)/Gn),w); m=(SV(1,:));
semilogx(W,20*log10(1./m),'r');
%Absolute Error Absolute =(evalfr(((Gn-Gp)),0.0000000000001)) %Relative Error Relative =(evalfr(((Gn-Gp)/Gn),0.0000000000001))
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>