Vous êtes sur la page 1sur 9

21/5/2014 CTM Ejemplo: Diseo en Espacio de estado para el pndulo invertido

http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invSS.html 1/9
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 .
21/5/2014 CTM Ejemplo: Diseo en Espacio de estado para el pndulo invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invSS.html 2/9
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 = 0.5;
m = 0.2;
b = 0.1;
i = 0.006;
g = 9.8;
l = 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:
21/5/2014 CTM Ejemplo: Diseo en Espacio de estado para el pndulo invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invSS.html 3/9
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;
21/5/2014 CTM Ejemplo: Diseo en Espacio de estado para el pndulo invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invSS.html 4/9
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 :
21/5/2014 CTM Ejemplo: Diseo en Espacio de estado para el pndulo invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invSS.html 5/9
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:
21/5/2014 CTM Ejemplo: Diseo en Espacio de estado para el pndulo invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invSS.html 6/9
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
21/5/2014 CTM Ejemplo: Diseo en Espacio de estado para el pndulo invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invSS.html 7/9
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 + 7.9283i
-8.4910 - 7.9283i
-4.7592 + 0.8309i
-4.7592 - 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 =
21/5/2014 CTM Ejemplo: Diseo en Espacio de estado para el pndulo invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invSS.html 8/9
1.0e+03 *
0.0826 -0.0010
1.6992 -0.0402
-0.0014 0.0832
-0.0762 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.
Submit Feedback Reset
21/5/2014 CTM Ejemplo: Diseo en Espacio de estado para el pndulo invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invSS.html 9/9
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

Vous aimerez peut-être aussi