Sei sulla pagina 1di 5

Ejemplo: Diseo en Espacio de estado para el pndulo invertido

Polos a lazo abierto Diseo LQR Agregado de la entrada de referencia Diseo de Observadores
Las ecuaciones de estado para este problema son:

El criterio de diseo para este sistema con el carrito soportando una entrada escaln de 0.2m es como sigue: Tiempo de establecimiento para x y theta menor que 5 segundos. Tiempo de Subida para x menor que 1 segundo. Sobrepico de theta menor que 20 grados (0.35 radianes). Error de estado estacionario entre el 2%. Como pudo haber notado si hubiese pasado por alguno de los otros ejemplos del pndulo invertido los criterios de diseo para este ejemplo son diferentes. En los otros ejemplos hemos trabajado con un impulso y no con un escaln de entrada. Adems, solo nos interesamos en el ngulo del pndulo y nos desinteresamos de la posicin del carro en el diseo del controlador. Sin embargo, para un pndulo invertido no es real considerar nicamente la salida simple del sistema. Usando mtodos de espacio de estado es relativamente simple trabajar con un sistema de salida mltiple, as que en este ejemplo vamos a disear un controlador considerando tanto el ngulo del pndulo cuanto la posicin del carrito. Para ver cmo se prepar originalmente este problema, consulte el modelado del pndulo invertido . Este problema puede resolverse mediante realimentacin completa de estados. El esquema de este tipo de control sistema se muestra abajo:

Si se interesa en correr una animacin de este ejemplo basado en tcnicas de control usadas en el tutorial de espacio de estado, por favor vaya a Pndulo Invertido : Pgina de Animacin luego de completar este tutorial.

Polos a lazo abierto


En este problema R representa la entrada de comando escaln al carrito. Los 4 estados representan la posicin y velocidad del carro y el ngulo y velocidad angular del pndulo. La salida y contiene tanto la posicin del carro cuanto el ngulo de el pndulo. Queremos disear un controlador de modo que cuando se da al sistema una entrada escaln, el pndulo pudiera se desplazado, pero eventualmente retornar a cero (e.d. la vertical) y el carrito debiera moverse a su posicin de comando nueva. Para ver la respuesta del sistema a lazo abierto pinche en Modelado del pndulo invertido El primer paso para disear este tipo de controlador es determinar los polos a lazo abierto del sistema. Ingrese las siguientes lneas de cdigo en un archivo-m:
M m b i g l = = = = = = 0.5; 0.2; 0.1; 0.006; 9.8; 0.3;

p = i*(M+m)+M*m*l^2; %denominador A = [0 1 0 0; 0 -(i+m*l^2)*b/p (m^2*g*l^2)/p 0; 0 0 0 1; 0 -(m*l*b)/p m*g*l*(M+m)/p 0]; B = [0; (i+m*l^2)/p; 0; m*l/p]; C = [1 0 0 0; 0 0 1 0]; D = [0;0];

p = eig(A)

La ventana de comandos del Matlab devolver el siguiente texto como resultado:


p = 0 -0.1428 5.5651 -5.6041

Como puede ver, hay un polo en el semiplano derecho en 5.5651. Esto confirmar su intuicin que el sistema es inestable a lazo abierto.

Diseo LQR
El paso siguiente en el proceso de diseo es asumir que tenemos realimentacin completa de estados (e.d. que podemos medir los cuatro estados), y encontrar el vector K que determina la ley de control para la realimentacin. Esto puede hacerse de varias formas. Si sabe donde estn los polos a lazo cerrado deseados, puede usar los comandos place o acker. Otra opcin es usar la funcin lqr; sta le dar el controlador ptimo (bajo ciertas consideraciones; para mayores detalles, consulte su libro de control). la funcin lqr le permite elegir dos parmetros, R y Q, las que balancearn la importancia relativa de la entrada y los estados en la funcin de costo que est tratando de optimizar. El caso ms simple es considerar R=1, y Q=C'*C. habr notado que estamos usando ambas salidas (el ngulo del pndulo y la posicin del carro). El mtodo LQR, bsicamente permite el control de ambas salidas. En este caso, es bastante fcil de hacerlo. Para obtener una respuesta deseable, el controlador puede sintonizarse cambiando los elementos no nulos en la matriz Q . Nota: Los comandos Matlab de la toolbox de control de sistema se destacan en rojo. Para hallar la estructura de Q, ingrese lo siguiente en la ventana de comandos del Matlab:
C'*C

Debera verse lo siguiente en la ventana de comandos:


ans = 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0

El elemento en la posicin 1,1 se usar para pesar la posicin del carro y el elemento en la posicin 3,3 se usar para pesar el ngulo del pndulo. El peso de la entrada R permanecer en 1. Ahora que sabemos cmo debera verse la matriz Q, podemos experimentar para hallar la matriz K que nos de un controlador bueno. Luego encontraremos la matriz K y dibujaremos la respuesta,todo en un solo paso de modo que puedan hacerse cambios en el control y y verse automticamente en la respuesta. Ingrese el siguiente texto en su archivo-m:
x=1; y=1; Q=[x 0 0 0; 0 0 0 0; 0 0 y 0; 0 0 0 0]; R = 1; K = lqr(A,B,Q,R) Ac = [(A-B*K)]; Bc = [B]; Cc = [C]; Dc = [D]; T=0:0.01:5; U=0.2*ones(size(T)); [Y,X]=lsim(Ac,Bc,Cc,Dc,U,T); plot(T,Y) legend('Carrito','Pndulo')

Debera obtenerse el siguiente valor para K y un grfico de la respuesta:


K = -1.0000 -1.6567 18.6854 3.4594

La curva en verde representa el ngulo del pndulo, en radianes y la curva azul representa la posicin del carro en metros. Como puede ver, este grfico no es

satisfactorio. los sobrepicos del pndulo y del carro parecen estar bien, pero debe mejorarse sus tiempos de asentamiento, y debe bajarse el tiempo de subida del carro. Seguramente habr notado que el carrito no se halla cerca de la ubicacin deseada sino que de hecho se ha movido en la direccin contraria. Este error ser tratado en la seccin siguiente, en este momento nos ocuparemos de los tiempos de trepada y de establecimiento. Regrese a su archivo-m y cambie las variables x e y para ver si puede obtener una mejor respuesta. Hallar que incrementando x se hace que los tiempos de trepada y de establecimiento bajen, y aminora movimiento del pndulo (angular). Usando x=5000 y y=100, se encontraron los valores siguientes de K y respuesta al escaln :
K = -70.7107 -37.8345 105.5298 20.9238

Habr notado que si incrementara x e y an ms, podra mejorar an ms la respuesta. La razn por la cual fue elegida esta figura fue porque satisface los requerimientos de diseo mientras se mantienen x e y tan pequeo como se pueda. En este problema, se han usado x e y para describir el peso relativo del error del seguimiento de la posicin del carro y del ngulo del pndulo versus el esfuerzo de control. Cuanto ms altos son x e y, tanto mayores son los esfuerzos de control usados, pero tanto menor ser el error de seguimiento. La respuesta del sistema tiene un tiempo de establecimiento por debajo de los 2 segundos.

Agregado de la entrada de referencia


Ahora queremos eliminar el error de estado estacionario. En contraste con los otros mtodos de diseo, donde realimentamos la salida y la comparamos con la entrada de referencia para calcular un error, con un controlador de realimentacin completa de estado estamos realimentando todos los estados. Necesitamos calcular cul debera ser el valor de estado estacionario de los estados, multiplicar por la ganancia K elegida, y usar el nuevo valor como referencia para la entrada. Esto puede lograrse agregando una ganancia constante Nbar luego de la referencia. El esquema de abajo muestra estas relaciones:

Nbar puede hallarse usando la funcin definida por el usuario rscale (cpiela en la carpeta en la que se halla su archivo-m). Borre la lnea con lsim y copie lo siguiente a su archivo-m y ejectelo para ver la respuesta al escaln con el agregado de la Nbar .
Cn=[1 0 0 0]; Nbar=rscale(A,B,Cn,0,K) Bcn=[Nbar*B]; [Y,X]=lsim(Ac,Bcn,Cc,Dc,U,T); plot(T,Y) legend('Carrito','Pndulo')

Nota: Los comandos no estndares del Matlab se destacan en verde. Debe usarse una C diferente porque la funcin rscale no operar con mltiples salidas. Sin embargo, el Nbar hallado es correcto, como puede ver de la salida de abajo:
Nbar = -70.7107

Ahora, el error de estado estacionario est dentro de los mrgenes, los tiempos de asentamiento y trepada han sido logrados y el sobrepico del pndulo est

dentro del rango de los criterios de diseo.

Diseo de Observadores
Esta respuesta es buena, pero fue hallada considerando realimentacin completa de estado, la cual casi nunca ser una consideracin vlida. Para compensar esto, a continuacin disearemos un estimador de orden completo para estimar aquellos estados que no se han medido. Se muestra abajo, un esquema de este tipo de sistema sin Nbar:

Para comenzar, debemos encontrar primero los polos del controlador. Para hacerlo copie el siguiente cdigo al final de su archivo-m:
p = eig(Ac)

Si cambiara los factores de peso x e y de arriba a x=5000 e y=100, debiera ver los siguiente polos en la ventana de comandos del Matlab:
p = -8.4910 -8.4910 -4.7592 -4.7592 + + 7.9283i 7.9283i 0.8309i 0.8309i

Queremos que los polos del estimador diseado sean cerca de 4-10 veces ms rpidos que el ms chico de los polos, digamos en -40. Se usar el comando place para hallar el vector L (note que acker tambin funcionara). Recuerde que con el comando place no puede poner todos los polos deseados en el mismo lugar. Borre el comando lsim e ingrese el siguiente texto al final de su archivo-m para hallar la matriz L :
P = [-40 -41 -42 -43]; L = place(A',C',P)'

Estamos usando ambas salidas (el ngulo de el pndulo y la posicin del carro) para disear el observador. El sistema no es observable si usamos como salida solo el ngulo del pndulo; puede verificar esto en Matlab calculando el rango con rank(obsv(A,C(2,:))). Esto debe tener sentido para usted: si lo nico que puede medir es el ngulo de el pndulo, no puede determinar cul ser la posicin del carro. Debera verse lo siguiente en la ventana de comandos:
L = 1.0e+03 * 0.0826 1.6992 -0.0014 -0.0762 -0.0010 -0.0402 0.0832 1.7604

Combinaremos ahora la ley de control con el estimador diseados para obtener el compensador. La respuesta debera ser similar a la del diseo de la ley de control. Para establecer el compensador copie el siguiente cdigo al final de su archivo-m:
Ace = [A-B*K B*K; zeros(size(A)) (A-L*C)]; Bce = [ B*Nbar; zeros(size(B))]; Cce = [Cc zeros(size(Cc))]; Dce = [0;0]; T = 0:0.01:5; U = 0.2*ones(size(T)); [Y,X] = lsim(Ace,Bce,Cce,Dce,U,T); plot(T,Y) legend('Carrito','Pndulo')

despus de haber corrido este archivo-m, se devolver la siguiente simulacin de la respuesta al escaln :

Esta respuesta es casi la misma que antes. Todos los requerimientos de diseo han sido logrados con el mnimo esfuerzo de control, as que no se necesita ms iteraciones. Como puede ver, es mucho ms sencillo controlar sistemas con entrada mltiple o salidas mltiples con el mtodo de espacio de estado que con cualquier otro mtodo. Si se interesa en correr un ejemplo de animacin del pndulo invertido basado en tcnicas de control usadas en este tutorial por favor vaya a Pndulo Invertido : Pgina de Animacin.

User Feedback

We would like to hear about suggestions you have for improvement, difficulties you had with the tutorials, errors that you found, or any other comments that you have. This feedback is anonymous.

Espacio de Estado: Ejemplos


Control de Marcha | Velocidad del Motor | Posicin de un Motor | Suspensin de un Colectivo | Pndulo Invertido | Control de Inclinacin | Barra y Bola

Pndulo Invertido : Ejemplos


Modelacin | PID | Lugar de Races | Respuesta en Frecuencia | Espacio de Estado | Control Digital | Animacin

Tutoriales
Matlab Bsico | Modelacin | PID | Lugar de Races | Respuesta en Frecuencia | Espacio de Estado | Control Digital | Ejemplos

8/12/97 CJC

Potrebbero piacerti anche