estimación de estados observadoresdea.unsj.edu.ar/control2/clase09a-observadores de estados.pdf ·...
TRANSCRIPT
2
Estimación de Estados
La realimentación de los estados requiere poder medirlos pero normalmente no tenemos acceso directo a todos los estados.
¿Entonces, como implementamos la realimentación de estados? Si el sistema es observable los estados podrán ser estimados mediante un observador.
Un observador es un sistema dinámico que estima los estados de la planta a partir de las mediciones de las entradas y las salidas.
3
Estimación de Estados: Observador a lazo abierto
¿Cómo construir un observador? La figura muestra un camino intuitivo. Copiar el modelo de la planta y dejar “correr” los sistemas simultáneamente para
obtener una estimación de los estados (̂ )x t .
El problema con este diseño a lazo abierto es que la planta y su “copia” en el observador tienen condiciones iniciales distintas, la estimación normalmente no converge a los valores verdaderos.
4
Estimación de Estados: Observador de realimentación
Esta estructura a lazo cerrado es mucho mejor. Se realimenta el error de salida para corregir. Eligiendo apropiadamente la matriz de ganancia L, se puede ajustar el observador para que los estados estimados converjan asintóticamente a los estados verdaderos.
5
Estimación de Estados: Estructura final del observador
Reordenando el diagrama en bloques anterior, se obtiene la estructura final del observador.
Si el sistema es observable, se puede elegir la ganancia L para ubicar los autovalores de
( )A LC arbitrariamente.
Obviamente se busca que el observador sea estable!
Del diagrama en bloques se obtienen las ecuaciones del observador
ˆ ˆ ˆ( ) ( ) ( ) [ ( ) ( )]
ˆ( ) ( ) ( ) ( )
x t Ax t Bu t Ly t Cx
A LC x t Bu t
t
Ly t (O)
6
Estimación de Estados
De la ecuación del observador: ˆ ˆ( ) ( ) ( ) ( ) ( )x t A LC x t Bu t Ly t
Y de las ecuaciones de estado de la planta: ( ) ( ) ( )
( ) ( )
x t Ax t Bu t
y t Cx t
Podemos obtener el error del estimador: ˆ( ) ( )x x t x t
ˆ ˆ ˆ( ) ( ) ( ) ( ) ( ) ( ) [ ( ) ( )]
ˆ ˆ[ ( ) ( )] [ ( ) ( )]
( )
( ) ( )ˆ( )[ ( ) ( )]
x t x t Ax t Bu t Ax t Bu t Ly t Cx t
Ax t x t LC x t x t
A LC x t x t
t
A LC t
x
x
( ) ( ) ( )x t xA LC t
Si la matriz ( )A LC es Hurwitz ˆ( ) ( ) ( ) 0t x t x tx , por lo tanto
(̂ ) ( )x t x t . El error converge asintóticamente a cero.
7
Diseño del Observador: Para diseñar el observador se utilizan
las matrices A, B y C de la planta y se forma la ecuación del estimador
ˆ ˆ( ) ( ) ( ) ( ) ( )x t A LC x t Bu t Ly t
Para que el observador sea estable el vector columna L se debe
elegir para que los autovalores de ( )A LC tengan la parte real
negativa.
¿Cómo se elige L? Podemos aprovechar la dualidad y utilizar
el mismo procedimiento que vimos para el diseño de la ganancia de realimentación de estados K para que la matriz (A-
BK) sea Hurwitz. Observar que la matriz transpuesta
( )T T T Tdual dual dualA LC A C L A B K
Elegimos dualK para que dual dual dualA B K sea Hurwitz, finalmente
Tdual
L K
8
El problema de diseñar un observador es idéntico (vía modelo
dual) al de diseñar la realimentación K de estados. Vimos que el problema de hallar K era sencillo si el modelo estaba en la forma canónica controlable. Ahora por ser el problema dual el problema de hallar L es sencillo si el modelo está en la forma canónica observable.
Ejemplo de Diseño de un Observador
( ) ( ) ( )
( ) ( )
x t Ax t Bu t
y t Cx t
3 1 0, , 1 0
0 5 1A B C
Los valores propios (polos) del observador los queremos en
2( ) ( 10)( 10) 20 100dP s s s s s
Los polos reales dobles y rápidos, al ser reales la respuesta es amortiguada.
9
Construimos el polinomio característico y lo igualamos al deseado.
1 21 1 2
2
3 1( ) ( 8) (5 15)
5
s lPc s sI A LC s l s l l
l s
2 21 1
1 2
2
( ) ( )
( 8)
12 ,
(5 15) 20
5
1 0
2
0
Pc s Pcd s
s l s l l
l
s
l
s
12
25L
Alternativamente podemos utilizar la fórmula de Ackermann
1 1
2
2 1
0 1 0 0( ) ( 20 100 )
1 3 1 1
3 1 3 1 100 0 1 0 020
0 5 0 5 0 100 3 1 1
12
25
CL A A A I
CA
Simulamos para 1 2
( ) 0( ), (0) 2, (0) 3u t regulador x x
10
clear, clc, close all
A=[-3 1;0 -5]; B=[0 1]'; C=[1 0];D=0;
lambdas_obs=[-10 -10]; %Autovalores deseados del observador
L=acker(A',C',lambdas_obs)';
planta=ss(A,B,C,D); x0=[2 -3]; % x0 son los valores iniciales de los estados
t=[0:0.01:1.5];u= zeros(length(t),1);
[y,t,x]=lsim(planta,u,t,x0); % Se simula la planta para u(t)=0 y x0
observer=ss(A-L*C,[B L],eye(length(A)),0);
[ye,t,xe]=lsim(observer,[u x(:,1)],t,zeros(1,length(A)));
plot(t,x(:,1),'--k',t,x(:,2),'--b',t,xe(:,1),'k',t,xe(:,2),'b','LineWidth',2)
legend('x1(t)','x2(t)','xe1(t)','xe2(t)'), grid on
Observaciones:
1) [y,t,x]=lsim(planta,u,t,x0) simula la planta para u(t) = 0 y condiciones iniciales de los
estados x0 = x(0). Se puede reemplazar por el comando initial (This MATLAB function calculates
the unforced response of a state-space (ss) model sys with an initial condition on the states specified
by the vector x0).
[y,t,x] = initial(planta,x0,t)
2) observer=ss(A-L*C,[B L],eye(length(A)),0) crea el modelo en estados del observador,
puede reemplazarse por el comando estim.
observer = estim(planta,L,[1],[1]); % Igual a ss(A-L*C,[B L],eye(length(A)),0);
11
clear, clc, close all
A=[-3 1;0 -5]; B=[0 1]'; C=[1 0];D=0;
lambdas_obs=[-10 -10]; %Autovalores deseados del observador
L=acker(A',C',lambdas_obs)';
planta=ss(A,B,C,D); x0=[2 -3]; % x0 son los valores iniciales de los estados
t=[0:0.01:1.5];u= zeros(length(t),1);
[y,t,x] = initial(planta,x0,t);
observer = estim(planta,L,[1],[1]); % Igual a ss(A-L*C,[B L],eye(length(A)),0);
[ye,t,xe]=lsim(observer,[u x(:,1)],t,zeros(1,length(A)));
plot(t,x(:,1),'--k',t,x(:,2),'--b',t,xe(:,1),'k',t,xe(:,2),'b','LineWidth',2)
legend('x1(t)','x2(t)','xe1(t)','xe2(t)'), grid on
12
Aunque la controlabilidad es invariante con respecto a la realimentación de estados, la observabilidad no lo es, como se veremos en el siguiente ejemplo.
Ejemplo: El sistema
1 2 0
3 1 1
1 2
( ) ( ) ( )
( ) ( )
x t x t u t
y t x t
es controlable y observable, ya que las matrices de controlabilidad 0 2
1 1[ ]B AB y observabilidad 1 2
7 4
C
CA, son no singulares.
El control por realimentación de estados ( ) ( ) [3 1] ( )u t r t x t lleva al
sistema a lazo cerrado
1 2 0
0 0 1
1 2
( ) ( ) ( )
( ) ( )
x t x t u t
y t x t
13
La matriz de controlabilidad de sistema a lazo cerrado es 0 2
1 0cl, que es
no singular y comprueba que el sistema realimentado es controlable. Sin
embargo, la matriz de observabilidad ahora es 1 2
1 2cl, que es singular,
por lo que el sistema con esta realimentación no es observable.
La observabilidad de un sistema no es invariante con respecto a realimentación de estados.
15
Realimentación de los estados estimados
Consideremos nuevamente la planta: ( ) ( ) ( )
( ) ( )
x t Ax t Bu t
y t Cx t
Si (A,B) es controlable, la realimentación de estados u=r-Kx
asignará los autovalores de (A-BK) en cualquier posición deseada.
Si las variables de estado no están disponibles para la
realimentación pero (A,C) es observable, podemos construir un
observador con autovalores arbitrarios.
ˆ ˆ( ) ( ) ( ) ( ) ( )x t A LC x t Bu t Ly t
ˆ( ) ( ) ( )u t r t Kx t
La conexión controlador-observador, es efectivamente un
controlador dinámico que realimenta la salida.
17
Es conveniente agregar un precompensador para reducir el error en
estado estacionario ante una entrada escalón.
18
Las ecuaciones que describen el sistema completo (juntando las del sistema y las del observador y con ˆ( ) ( ) ( )u t r t Kx t son:
( ) ( ) ( )
( ) ( )
ˆ( ) ( ) ( )
ˆ ˆ( ) ( ) ( ) ( ) ( )
ˆ( ) ( ) ( ) ( )
ˆ ˆ( ) ( ) ( ) ( ) ( )
x t Ax t Bu t
y t Cx t
u t Fr t Kx t
x t A LC x t Bu t Ly t
x t Ax t BKx t BFr t
x t LCx t A LC BK x t BFr t
( ) ( )( )
ˆˆ ( )( )
( )( ) 0
(̂ )
cl cl
cl
A B
C
x t A BK x t BFr t
LC A LC BK x t BFx t
x ty t C
x t
19
clear, clc, close all; A=[-3 1;0 -5]; B=[0 15]'; C=[1 0];
lambdas_cont=[-2+2*i -2-2*i];%Autovalores deseados en -2+-j2 para el controlador
lambdas_obs=[-10 -10]; %Autovalores dobles en -10 para el observador
K=acker(A,B,lambdas_cont); L=acker(A',C',lambdas_obs)';
Alc=[A -B*K; L*C A-L*C-B*K]; F=8/15;
Bcl=[B*F; B*F]; Ccl=[C zeros(1,2)]; Dcl=0;
planta_lc=ss(Alc,Bcl,Ccl,Dcl); %Modelo de la planta a lazo cerrado
t=[0:0.01:3]; [y,t,X]=lsim(planta_lc,ones(1,length(t)),t,[0 -3 0 0]);
x=[X(:,1) X(:,2)]; xe=[X(:,3) X(:,4)];
% F es la precompensación para que la respuesta al escalón este escalada se calcula de la
% siguiente manera: se hace F=1 y se corre la simulación, luego se calcula el F necesario con el comando dcgain(planta_lc): F=1/dcgain(planta_lc)
plot(t,x(:,1),'--k',t,x(:,2),'--b',t,xe(:,1),'k',t,xe(:,2),'b','LineWidth',2)
legend('x1(t)','x2(t)','xe1(t)','xe2(t)'), grid on
figure; plot(t,y,'b','LineWidth',2), legend('Salida y(t)'), grid on; axis([0 3 -.25 1.25])
20
Las ecuaciones anteriores se pueden reescribir en función del error de estimación
ˆ ˆ( ) ( ) ( ) ( ) ( ) ( )x t x t x t x t x t x t
( ) ( ) ( ) ( ) ( )
( ) ( ) ( )
( ) ( )
(̂ ) ( ) ( )
x t A BK x t BKx t BFr t
x t A LC x t
y t Cx t
x t x t x t
( ) ( )( )
( ) 0 ( ) 0
( )( ) 0
( )
cl cl
cl
A B
C
x t A BK BK x t BFr t
x t A LC x t
x ty t C
x t
Se llega al mismo modelo equivalente mediante la transformación lineal
( ) ( ) 0 ( ) ( )
ˆ ˆ ˆ( ) ( ) ( ) ( ) ( )
x t x t I x t x tP
x t x t x t I I x t x t
21
Se observa que la matriz del sistema es triangular (por bloques). El polinomio característico es:
( )( ) 0
0 ( )
sI A BK BKPc s
sI A LC
( ) ( ) ( ) 0cP s sI A BK sI A LC
Los autovalores del sistema completo son la unión de los autovalores de A-BK y A-LC. Esto implica que el estimador no afecta la realimentación de estados original; tampoco son afectados los autovalores del observador por la realimentación de estados.
Propiedad de separación de control y observación: Los diseños del control por realimentación de estados y el observador pueden realizarse en forma independiente.
22
Finalmente, notemos que en la última representación del sistema:
( ) ( )( )
( ) 0 ( ) 0
x t A BK BK x t BFr t
x t A LC x t
la matriz de controlabilidad no es de rango completa.
1 1
( )
0 0 0 0 0n n
BF A BK BK BF BF A BK BF
A LC
Esto se debe a que los estados ( )x t son no controlables ya que
( ) ( ) ( )x t A LC x t , no depende de ( )r t .
Los autovalores asociados a estos estados no aparecerán en la función transferencia del sistema completo (recordar que la función de transferencia solo representa la parte controlable y observable del sistema).
1( ) ( ) ( ) ( )
( ) ( )( ) ( )
x t A BK x t Br tG s C sI A BK B
y t Cx t
23
Como el último modelo (desacoplado) es equivalente al primero este resultado es general. Nunca aparecen los polos de estimador en la Función de Transferencia a lazo cerrado.
% Ejemplo A=[-3 1;0 -5]; B=[0 1]'; C=[1 0];D=0;n= length(A); %Con la fórmula de Ackerman se calculan los autovalores %deseados del sistema a lazo cerrado en -2+-j2 K=acker(A,B,[-2-2*1i -2+2*1i]); %Con la fórmula de Ackerman se calculan los autovalores %deseados del observador dobles en -10 L=acker(A',C',[-10 -10])'; syms s Acl=[A-B*K B*K; zeros(2,2) A-L*C]; Bcl=[B;zeros(2,1)]; Ccl=[C zeros(1,2)]; Dcl=0; Gcl_sym=Ccl*inv(s*eye(length(Acl))-Acl)*Bcl; Gcl_sym=collect(Gcl_sym,s);clc disp(['Gcl(s) =' ]); pretty(Gcl_sym)
2
1
4 8( )cl
s sG s
No aparecen los polos del observador
24
Función de Transferencia Observador-Controlador
Queremos calcular ahora la función de transferencia conjunta del observador-controlador ( )ocG s teniendo en cuenta que ˆ( ) ( )u t Kx t
ˆ ˆ( ) ( ) ( ) ( )x t A LC BK x t Ly t
1ˆ( ) ( ) ( )X s sI A LC BK LY s
1ˆ( ) ( ) ( ) ( )U s KX s K sI A LC BK LY s
1( )( ) ( )
( )ocU s
G s K sI A LC BK LY s
25
La matriz del controlador-observador A LC BK puede o no ser
estable, aunque A BK y A LC se escojan estables. De hecho, en algunos casos la matriz A LC BK puede ser pobremente estable o incluso inestable.
adj( )( )oc
K sI A LC BK LG s
sI A LC BK
Esto se debe a que ahora los autovalores del observador y el controlador no están desacoplados. El polinomio característico del observador-controlador es:
( )
ocGP s sI A BK LC
Y el polinomio característico del sistema completo a lazo cerrado vimos que es:
( ) ( ) ( )P s sI A BK sI A LCcl
26
Ejemplo de Observador-Controlador
( ) ( ) ( )
( ) ( )
x t Ax t Bu t
y t Cx t
0 1 0, , , 1 0
20.6 0 1A B C
los polos en lazo cerrado deseados para este sistema se eligen en:
1 21.8 2.4, 1.8 2.4j j
La matriz de ganancias de realimentación del estado K para este caso es:
29.6 3.6K
los polos del observador se eligen dobles en: 3 48 , 8
La matriz de ganancias del observador es 16
84.6L
28
La función de transferencia del controlador-observador es:
2
adj( )( )( )
( )
16 1 16 778.2 3690.729.6 3.6
93.6 3.6 84.4 19.6 151.2
co
K sI A LC BK LU sG s
Y s sI A LC BK
s ss s s
29
Por ser R(s)=0 la función de transferencia del observador controlador
puede estar el lazo de realimentación.
Para R(s) = 0 la respuesta es la misma para ambas configuraciones
para R(s) ≠ 0 la respuesta no es la misma. La script siguiente grafica
la respuesta al escalón para ambas configuraciones (precompensadas
para que la respuesta sea unitaria).
30
G=tf([1],[1 0 -20.6 ]); Gco=tf([778.2 3690.7],[1 19.6 151.2]);
F1=576/3691; F2=576/151.2;
Gcl1=F1*feedback(Gco*G,1); Gcl2=F2*feedback(G,Gco); step(Gcl1,Gcl2)
% Se ha precompensado con F1 y F2 para tener respuesta unitaria al escalón
% 778.2 s + 3691 % Gcl1(s) = ------------------------------------------ % s^4 + 19.6 s^3 + 130.6 s^2 + 374.4 s + 576 % s^2 + 19.6 s + 151.2 % Gcl2(s) = ------------------------------------------ % s^4 + 19.6 s^3 + 130.6 s^2 + 374.4 s + 576
31
La función de transferencia de la planta es:
Cadj( )( )( )
( )G
G
sI A BN sG s
D s sI A
La función de transferencia del controlador-observador es:
( ) adj( )( )
( )co
co
Gco
G
N s K sI A LC BK LG s
D s sI A LC BK
Para la configuración 1 (el controlador en serie con la planta), la función
de transferencia del sistema a lazo cerrado es:
( ) ( )( ) ( )( )
1 ( ) ( ) ( ) ( ) ( ) ( )co
co co
G Gcocl
co G G G G
N s N sG s G sG s
G s G s D s D s N s N s
Para la configuración 2 (el controlador en la realimentación), la función de
transferencia del sistema a lazo cerrado es:
( ) ( )( )( )
1 ( ) ( ) ( ) ( ) ( ) ( )co
co co
G Gcl
co G G G G
D s N sG sG s
G s G s D s D s N s N s
32
En ambos casos el polinomio característico a lazo cerrado es el mismo:
( ) ( ) ( ) ( ) ( )co coG G G GP s D s D s N s N scl (*)
Anteriormente vimos que el polinomio característico a lazo cerrado era:
( ) ( )
( ) ( ) ( ) ( ) ( )
dco dob
dco dob
P s P s
P s sI A BK sI A LC P s P scl (**)
con:
1 2
11 1 0
( ) ( ) ( )( ) ( )
0
dco n
n c n c cn
P s sI A BK s s s
s s s
1 2 2
11 1 0
( ) ( ) ( )( ) ( )
0
dob n n n
n o n o on
P s sI A LC s s s
s s s
Donde 1, 2,…, n, son los autovalores (polos) deseados para el sistema a
lazo cerrado (autovalores del controlador) y n+1, n+2,…, 2n, son los
autovalores deseados del observador de orden completo.
33
Ambos polinomios característicos (*) y (**) deben ser iguales.
( ) ( ) ( ) ( ) ( ) ( )co coG G G G dco dobD s D s N s N s P s P s
Al comenzar el diseño conocemos la planta (NG(s) y DG(s)) y las
especificaciones de diseño (Pdco(s) y Pdob(s) a partir de los autovalores
deseados a lazo cerrado y del observador) y nuestro objetivo es
encontrar el controlador, o lo que es equivalente los polinomios
NGco(s) y DGco(s) (indirectamente vía la teoría de variables de estado).
La identidad anterior es una ecuación polinómica cuyas incógnitas son
los polinomios NGco(s) y DGco(s). Esta ecuación polinómica es muy
conocida con distintos nombres en la literatura de control, se la
denomina ecuación diofantina, de Aryabhatta, o de Bezout.
34
Ecuacion Diofantina-Aryabhatta-Bezout
( ) ( ) ( ) ( )( ) ( )co coG GG G dco dobD s ND s N s s P s P s
La function de Matlab diofantina.p (disponible en el sitio de Dropbox
de la materia) devuelve los polinomios NGco y DGco si se le ingresa los
polinomios NG, DG y conv(Pdco,Pdob), (recordar que la convolución de
dos polinomios realiza el producto).
co coG G G G dco dobD ,N = diofantina D ,N ,conv(P ,P )
Para el ejemplo hallamos anteriormente que la función de transferencia del
controlador-observador es:
2
adj( ) 778.2 3690.7( )
19.6 151.2co
K sI A LC BK L sG s
sI A LC BK s s
Obtenemos el mismo resultado utilizando la function diofantina.p
35
clear;clc
% Datos y especificaciones
A=[0 1;20.6 0]; B=[0 ; 1]; C=[1 0];D=0; %Planta en variables de estado
[Ng,Dg]=ss2tf(A,B,C,D); %Numerador y denominador de la ft de la planta
lambdas_cont=[-1.8+2.4*1i -1.8-2.4*1i];% Polos deseados a lazo cerrado
lambdas_obs=[-8 -8]; %Polos del observador
% Calculamos los polinomios deseados
Pdco=poly(lambdas_cont); Pdob=poly(lambdas_obs);
% Resolvemos la diofantina y obtenemos el numerado y denominador de la
% función de transferencia del controlador-observador
[Dgco,Ngco]=diofantina(Dg,Ng,conv(Pdco,Pdob)), Gco=tf(Ngco,Dgco)
% Da la misma función de transferencia hallada anteriormente
% 778.2 s + 3691
% Gco = --------------------
% s^2 + 19.6 s + 151.2
2
778.2( 4.74)778.2 3690.7( )
( 9.8 7.43)( 9.8 7.43)19.6 151.2co
ssG s
s j s js s
36
Comentarios 1. Al diseñar un sistema regulador, obsérvese que si los
polos dominantes del controlador se colocan lejos a la izquierda del
eje j, los elementos de la matriz de ganancia de realimentación del
estado K se harán grandes. Grandes valores de la ganancia K harán que la salida del actuador sea también grande, de manera que puede dar lugar a saturación de los actuadores.
2. También, al colocar los polos del observador suficientemente lejos
a la izquierda del eje j, el controlador-observador se hace
inestable, aunque el sistema en lazo cerrado es estable. Un controlador observador inestable no es aceptable.
3. Si el controlador observador se hace inestable, se mueven los polos del observador a la derecha en el semiplano izquierdo del plano s hasta que se estabilice. También, la localización de los polos en lazo cerrado deseados puede tener que modificarse.
37
4. Obsérvese que si los polos del observador se colocan lejos a la
izquierda del eje j, el ancho de banda del observador aumentará y
originará problemas de ruido. El requisito general es que el ancho de banda debería ser suficientemente bajo para que el ruido del
sensor que mide y(t) y se realimenta al observador no se convierta
en un problema.
En resumen, los polos del observador deben ser
bastante más rápidos que los de la planta a lazo cerrado,
pero no tanto como para que generen problema de
inestabilidad y ruido. Como regla general, los polos del
observador deben ser de dos a cinco veces más rápidos
que los polos del controlador para asegurarse de que el
error de observación (error de estimación) converge a
cero rápidamente.