Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Penduloinvertido

708 views

Published on

Análisis matemático de un pendulo invertido

  • Be the first to comment

  • Be the first to like this

Penduloinvertido

  1. 1. Simulaci´n de un p´ndulo invertido o e Proyecto fin de carrera Titulaci´n: Ingeniero T´cnico en Inform´tica de Sistemas o e a Autor: Jose Luis Beltr´n Alonso a Director: Pascual P´rez Blasco e 6 de Diciembre de 2010
  2. 2. 2
  3. 3. ´Indice general1. Introducci´n o 7 1.1. Descripci´n del p´ndulo invertido . . . . . . . . . . . . . . . . . . . . . . . . . . . o e 7 1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82. Modelado Matem´tico del P´ndulo a e 9 2.1. An´lisis de las fuerzas y sistema de ecuaciones . . . . . . . . . . . . . . . . . . . . a 9 2.2. Funci´n de transferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 11 2.3. Ecuaci´n de estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 13 2.4. Respuesta a lazo abierto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4.1. Soluci´n: Mediante funci´n de transferencia . . . . . . . . . . . . . . . . . o o 16 2.4.2. Soluci´n: Mediante espacio de estados . . . . . . . . . . . . . . . . . . . . o 183. Estabilizaci´n del p´ndulo o e 21 3.1. Controlador PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.1. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.2. Dise˜o PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n 23 3.1.3. Ejemplo p´ndulo invertido. . . . . . . . . . . . . . . . . . . . . . . . . . . e 27 3.2. Regulador LQR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.2.1. Base te´rica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 32 3.2.2. Dise˜o en espacio de estados . . . . . . . . . . . . . . . . . . . . . . . . . n 34 3.3. Observadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.3.1. Observador a lazo abierto . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.3.2. Observador de orden reducido . . . . . . . . . . . . . . . . . . . . . . . . . 39 3
  4. 4. 4. Implementaci´n o 41 4.1. P´ndulo invertido en Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 41 4.2. Conversi´n ’Matlab to Java’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 44 4.2.1. Funci´n c2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 45 4.2.2. Funci´n expm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 46 4.2.3. Funci´n dlqr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 46 4.3. Aplicaci´n Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 47 4.3.1. Dise˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n 47 4.3.2. C´digo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 515. Librer´ ıas 53 5.1. Librer´ Jama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıa 53 5.2. Librer´ Ejml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıa 54 5.3. Librer´ JMathLib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıa 55Ap´ndices e 58A. Pendulo.m 61B. Simulaci´n alternativa.m o 67C. C´digo fuente applet o 73D. Regulador 87 4
  5. 5. ´Indice de figuras 1.1. Esquema p´ndulo invertido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 8 2.1. Diagramas de cuerpo libre del sistema. . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2. Respuesta F.D.T en lazo abierto . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3. Respuesta mediante espacio de estados . . . . . . . . . . . . . . . . . . . . . . . . 20 3.1. Diagrama en bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2. Regulador P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3. PID: Respuesta ante impulso de entrada . . . . . . . . . . . . . . . . . . . . . . . 29 3.4. PID: Respuesta ante incremento proporcional . . . . . . . . . . . . . . . . . . . . 29 3.5. PID: Respuesta ante incremento derivativo . . . . . . . . . . . . . . . . . . . . . 30 3.6. PID: Respuesta carrito ante impulso . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.7. Regulador LQR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.8. Respuesta controlador LQR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.9. Respuesta controlador LQR ante incremento de x,y . . . . . . . . . . . . . . . . . 37 3.10. Observador a lazo abierto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.1. Representaci´n p´ndulo invertido en Matlab . . . . . . . . . . . . . . . . . . . . . o e 42 4.2. Representaci´n alternativa en Matlab o . . . . . . . . . . . . . . . . . . . . . . . . 43 4.3. Fuerza aplicada al carro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 ´ 4.4. Angulo y posici´n del carro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 44 4.5. Par´metros p´ndulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a e 47 4.6. Panel arranque p´ndulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 48 4.7. Panel control Autom´tico/Manual . . . . . . . . . . . . . . . . . . . . . . . . . . a 48 4.8. Posici´n y ´ngulo del p´ndulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o a e 49 5
  6. 6. 4.9. Panel de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.10. Interfaz applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6
  7. 7. Cap´ ıtulo 1Introducci´n o El p´ndulo invertido es conocido por ser uno de los problemas m´s importantes y cl´sicos de e a ala teor´ de control. Se trata de un control inestable y no lineal. A menudo, es utilizado como ıaejemplo acad´mico, principalmente por ser un sistema de control m´s accesible, y por otro lado, e apermite mostrar las principales diferencias de control de bucle abierto y de su estabilizaci´n a obucle cerrado. Pese a existir diferentes t´cnicas a la hora de dise˜ar el regulador ´ptimo capaz e n ode estabilizar el p´ndulo, no todas representan la mejor opci´n. En la presente memoria se e oanalizar´n alguno de los m´todos m´s conocidos. a e a1.1. Descripci´n del p´ndulo invertido o e El p´ndulo invertido es un servo mecanismo que consta de un carro en el cual est´ mon- e atado un p´ndulo que puede girar libremente. El carro est´ controlado por un servomotor y su e aprincipal funci´n es la de aplicar fuerzas al p´ndulo. Como la finalidad de este proyecto es dar o ela posibilidad de ejecutar el algoritmo de control en un sistema real (como, por ejemplo, unSegway), implica que el carro puede desplazarse sin limitaci´n alguna, es decir, que si estuviese omontado sobre un riel, ´ste no tendr´ topes. e ıa Si se considera al p´ndulo separado del carro, ´ste tiene dos puntos de equilibrio: uno estable, e eabajo; y otro inestable, arriba. El objetivo del control es cambiar la din´mica del sistema para aque en la posici´n vertical, arriba, se tenga un punto de equilibrio estable. En otras palabras, la oidea es encontrar la fuerza que ha de aplicarse al carro para que el p´ndulo no se caiga, incluso e 7
  8. 8. si se le perturba con un empuj´n tipo escalera o impulso. o Figura 1.1: Esquema p´ndulo invertido e1.2. Objetivos El proyecto que se presenta a continuaci´n permite la simulaci´n del comportamiento f´ o o ısicode un sistema din´mico que evoluciona con el tiempo. El objetivo es dise˜ar un sistema de control a no´ptimo que permita estabilizar un p´ndulo invertido asi como el desarrollo de una aplicaci´n ca- e opaz de simularlo. Los sistemas de control requieren del hardware adecuado para obtener los datosde forma precisa. Normalmente, se consigue con un microcontrolador o un DSP, pero en este ca-so, se har´ mediante una simulaci´n. La aplicaci´n ha sido realizada en un Applet de Java lo que a o ofacilita su ejecuci´n desde cualquier navegador web. Sin embargo, para el dise˜o del regulador se o nha utilizado la herramienta Matlab, principalmente, por su f´cil manejo en el c´culo de matrices. a a Respecto al algoritmo de control, el objetivo es estabilizar el p´ndulo partiendo ´ste inicial- e emente en la parte superior, por lo que no se contempla el algoritmo encargado de levantar elp´ndulo y lograr estabilizarlo en su posici´n vertical. e o 8
  9. 9. Cap´ ıtulo 2Modelado Matem´tico del P´ndulo a e El objetivo de la fase de modelado, es encontrar una expresi´n matem´tica que represente el o acomportamiento f´ ısico del sistema. Para modelar el sistema existen dos estrategias. La primeraes tratar al sistema como un “caja negra” y realizar sobre ´l un conjunto de acciones (se˜ales de e nentrada) observando c´mo se comporta (estudiar las salidas) deduciendo un modelo matem´tico o apara ´ste. Un ejemplo ser´ la t´cnica de Ziegler-Nichols. La segunda consiste en estudiar los e ıa eprocesos f´ ısicos que tienen lugar en el sistema para deducir su ley de comportamiento. El re-sultado que se pretende es la identificaci´n del sistema a trav´s de su funci´n de transferencia. o e o2.1. An´lisis de las fuerzas y sistema de ecuaciones a La mayor parte del ´xito a la hora de dise˜ar un buen regulador pasa por tener un modelo e ndel sistema correcto. Hallarlo es una tarea complicada, y por ello, a menudo es necesario recurrira la sencillez. En el caso del p´ndulo, se consigue con el an´lisis por separado de cada uno de e alos cuerpos. 9
  10. 10. Figura 2.1: Diagramas de cuerpo libre del sistema. El p´ndulo invertido se puede concebir b´sicamente como un cuerpo r´ e a ıgido cuyo movimientose limita a dos dimensiones. Las ecuaciones fundamentales de movimiento plano de un cuerpor´ ıgido son: Fi = mai (2.1) Fj = maj (2.2) FG = Iαg (2.3) Sumando las fuerzas en el diagrama de cuerpo libre del carro en la direcci´n horizontal, se oobtiene la siguiente ecuaci´n del movimiento: o M x + bx + N = F ¨ ˙ (2.4) Tambi´n se podr´ sumar las fuerzas en la direcci´n vertical, pero no se ganar´ ninguna e ıa o ainformaci´n util. Por otro lado, sumando las fuerzas en el diagrama de cuerpo libre del p´ndulo o ´ een la direcci´n horizontal, se puede obtener una ecuaci´n para N: o o ¨ ˙ N = m¨ + mlθcosθ − mlθ2 sinθ x (2.5) Si se sustituye esta ecuaci´n en la (2.4), se obtiene la primera ecuaci´n del movimiento de o oeste sistema: x ˙ ¨ ˙ (M + m)¨ + bx + mlθcosθ − mlθ2 sinθ = F (2.6) 10
  11. 11. Para obtener la segunda ecuaci´n del movimiento, es necesario sumar las fuerzas perpendi- oculares al p´ndulo. Resolviendo el sistema a lo largo de este eje se simplifica el c´lculo algebraico. e a ¨ P sinθ + N cosθ − mgsinθ = mlθ + m¨cosθ x (2.7) Para librarse de los t´rminos P y N en la ecuaci´n (2.7), se han sumado los momentos e osobre el centroide del p´ndulo para obtener la primera ecuaci´n (2.8) mostrada a continuaci´n. e o oFinalmente, combinando dicha ecuaci´n con la (2.6), se obtiene la segunda ecuaci´n din´mica o o a(2.9). ¨ −P lsinθ − N lcosθ = I θ (2.8) ¨ (I + ml2 )θ + mglsinθ = −ml¨cosθ x (2.9) Para facilitar la labor, se puede trabajar solo con funciones lineales. Para ello, se asume quetheta = Pi + ø, donde ø representa un peque˜o ´ngulo en la direcci´n vertical. Por lo tanto, las n a odos ecuaciones de movimiento ser´n: a ¨ (I + ml2 )φ − mglφ = ml¨ x (2.10) x ˙ ¨ (M + m)¨ + bx − mlφ = u (2.11)2.2. Funci´n de transferencia o Cualquier sistema f´ ısico (mec´nico, el´ctrico, etc.) se puede traducir a una serie de valores a ematem´ticos a trav´s de los cuales se conoce el comportamiento de estos sistemas frente a valores a econcretos. Esto es lo que permite la funci´n de transferencia. Se trata de un modelo matem´tico o aque a trav´s de un cociente relaciona la respuesta de un sistema (salida) a una se˜al de entrada e no excitaci´n. Por definici´n una funci´n de transferencia se puede determinar seg´n la expresi´n: o o o u o Y (s) H(s) = (2.12) U (s) 11
  12. 12. Donde H(s) es la funci´n de transferencia (tambi´n denotada como G(s)). Y(s) es la trans- o eformada de Laplace de la respuesta y U(s) es la trasformada de Laplace de la se˜al de entrada. n Aplic´ndolo al p´ndulo invertido, para obtener anal´ a e ıticamente la funci´n de transferencia de olas ecuaciones del sistema linealizado, se ha de tomar primero la transformada de Laplace de lasecuaciones del sistema. Donde se obtienen las siguientes ecuaciones: (I + ml2 )Φ(s)s2 − mglΦ(s) = mlX(s)s2 (2.13) (M + m)X(s)s2 + bX(s)s − mlΦ(s)s2 = U (s) (2.14)Dado que la salida de inter´s en este caso es el ´ngulo Phi, en primer caso se resuelve la primera e aecuaci´n para X(s), donde posteriormente se sustituir´ en la segunda ecuaci´n: o a o (I + ml2 ) g X(s) = − 2 Φ(s) (2.15) ml s (I + ml2 ) g (I + ml2 ) g (M + m) + Φ(s)s2 + b + Φ(s)s − mlΦ(s)s2 = U (s) (2.16) ml s ml sReordenando la funci´n de transferencia se obtiene: o ml 2 Φ(s) q s = b(I+ml2 ) 3 (2.17) U (s) s4 + q s − (M +m)mgl s2 q − bmgl q s q = (M + m)(I + ml2 ) − (ml)2De la funci´n de transferencia de arriba puede verse que hay un polo y un cero en el origen. oEstos puede ser cancelados y la funci´n de transferencia ser´: o a ml Φ(s) q s = b(I+ml2 ) 2 (2.18) U (s) s3 + q s − (M +m)mgl s q − bmgl q q = (M + m)(I + ml2 ) − (ml)2 12
  13. 13. En este punto ya se tiene calculada la funci´n de transferencia que representa al sistema f´ o ısicodel p´ndulo invertido. Mediante esta ecuaci´n ya se puede realizar pruebas para comprobar si e oel sistema es estable a lazo abierto (v´ase 2.4 “Respuesta a lazo abierto”) e2.3. Ecuaci´n de estado o El espacio de estados es otro m´todo que permite modelar un sistema f´ e ısico. Se representa porun conjunto de entradas, salidas y variables de estado relacionadas por ecuaciones diferencialesde primer orden que se combinan en una ecuaci´n diferencial matricial de primer orden. A esta orepresentaci´n se le llama ecuaci´n de estado. Una forma general de expresar la din´mica de un o o asistema lineal es: x = Ax + Bu y = Cx + Du Donde el vector x es el estado del sistema y contiene n elementos para un sistema de ordenn. u es el vector de entrada y contiene m elementos. y contiene p elementos y es el vector desalida. A, de dimensi´n n x n es la matriz del sistema. B, de dimensi´n n x m es la matriz de o oentrada. C, de dimensi´n p x n es la matriz de salida y D es una matriz de dimensi´n p x m. o o Este tipo de representaci´n tiene la ventaja de que permite conocer el comportamiento in- oterno del sistema, adem´s de que se puede trabajar con sistemas cuyas condiciones iniciales sean adiferentes de cero. Otra ventaja es que se facilita el dise˜o asistido por computadora, ya que los npaquetes de software normalmente dependen de esta representaci´n. o El vector x que determina el estado del sistema contendr´ cuatro elementos (posici´n del a ocarro, primera derivada, posici´n del ´ngulo y su derivada). En el caso del vector y se ha con- o asiderado que el p´ndulo consta de tres sensores, uno para la posici´n del carro r, otro para el e oa´ngulo φ y el ultimo para la velocidad del carro r. El vector u tiene un unico elemento que es la ´ ˙ ´fuerza aplicada al carro. Una vez conocida esta informaci´n se pueden determinar las matrices ode C y D (donde D=0). 13
  14. 14.     x1 r         x1 1 0 0 0  x2   Φ          x= = y =  x2  C= 0 1 0 0  u=F           x3   r  ˙         x3 0 0 1 0 x4 ˙ Φ Para obtener A y B es necesario expresar las ecuaciones 2.1 y 2.6 en la forma: x = f (x, u) ˙ (2.19) de tal forma que: x1 = f1 (x, u) = x3 ˙ (2.20) x2 = f2 (x, u) = x4 ˙ (2.21)de la ecuaci´n 2.6 y haciendo α = M1 ls o αx4 cosx2 − αx4 2 senx2 − Fr x3 + u ˙ x3 = ˙ (2.22) M αx3 cosx2 + αgsenx2 − Cx4 ˙ x4 = ˙ (2.23) ΘSustituyendo 2.22 en 2.19 se obtiene x3 = f3 (x, u) pero la ecuaci´n resultante no es lineal. Para ˙ opoder representarla como ecuaci´n de estado lineal debe tener la siguiente forma: o n xi = ˙ aij xj + bi u (2.24) j=1Donde aij y bi son constantes. Para linealizar la ecuaci´n x3 = f3 (x, u) se puede expresar f3 (x, u) o ˙como una serie de Taylor y utilizar unicamente el primer t´rmino. ´ e   4 x3 ≈ ˙  ∂f3 (x, u)) ∆xi  + ∂f3 (x, u) ∆u (2.25) ∂xi ∂u i=1 x=0,u=0 x=0,u=0Al calcular las derivadas parciales y hacer β = ΘM − α2 se tiene: 14
  15. 15. ∂f3 (x, u) a31 = =0 (2.26) ∂x1 x=0,u=0 ∂f3 (x, u) α2 g a32 = = (2.27) ∂x2 β x=0,u=0 ∂f3 (x, u) ΘFr a33 = = (2.28) ∂x3 β x=0,u=0 ∂f3 (x, u) αC a34 = =− (2.29) ∂x1 β x=0,u=0 ∂f3 (x, u) Θ b3 = =− (2.30) ∂u β x=0,u=0Para el caso de x4 hay que seguir el mismo procedimiento que el realizado para x3 . A partir de ˙ ˙este punto, ya se pueden determinar los coeficientes de A y B.     0 0 1 0 0      0 0 0 1  0       A=    B=     0 a32 a33 a34   b3      0 a42 a43 a44 b4 Finalmente, ya puede expresarse en la forma de espacio de estados: ˙ Xn = An xn + Bn u Yn = Cxn        x ˙ 0 1 0 0 x ˙ 0        −(I+ml2 )b m2 gl2 I+ml2  x   0 ¨ 0  x   ¨        I(M +m)+M ml2 ) I(M +m)+M ml2 ) I(M +m)+M ml2 )   ˙ =  ˙  +  (2.31)          Φ   0 0 0 1  Φ   0         ¨ −mlb mgl(M +m) ¨ ml Φ 0 I(M +m)+M ml2 ) I(M +m)+M ml2 ) 0 Φ I(M +m)+M ml2 )   1 0 0 0 y=  0 0 1 0 15
  16. 16. 2.4. Respuesta a lazo abierto Una vez obtenidos los modelos matem´ticos y antes de comenzar con el dise˜o de un regu- a n lador, es necesario comprobar si el sistema es estable a lazo abierto. Para ello, se har´ una a simulaci´n con Matlab donde se asumir´n los siguientes valores que se mantendr´n durante o a a todos los ejercicios pr´cticos: a M: Masa del carro = 0.5 Kg m: Masa del p´ndulo = 0.5 Kg e b: Fricci´n del carro = 0.1 N/m/seg o l: Longitud p´ndulo = 0.3 m e I: Inercia del p´ndulo = 0.006 Kg*m2 e F: Fuerza aplicada al carro x: Coordenadas de posici´n del carro o ´ Θ: Angulo del p´ndulo e Dado que se han obtenido dos modelos matem´ticos diferentes por m´todos distintos, el a e siguiente paso ser´ hacer una simulaci´n para cada uno de ellos. Cada simulaci´n har´ uso de a o o a unos requerimientos de dise˜o diferentes debido al tipo de variables con el que trabaja. n 2.4.1. Soluci´n: Mediante funci´n de transferencia o o En el caso de la funci´n de transferencia solo se va a tratar con una sistema de unica salida o ´ (el ´ngulo del p´ndulo), y por lo tanto, los requerimientos de dise˜o son: a e n - Tiempo de establecimiento menor a 5 segundos. ´ - Angulo del p´ndulo siempre menor que 0.05 radianes de la vertical. e El numerador y denominador de la funci´n de transferencia se almacenaran en vectores de o tal forma que el c´digo quedar´ as´ o ıa ı:1 M = 0.5;2 m = 0.2;3 b = 0.1;4 i = 0.006; 16
  17. 17. 5 g = 9.8;6 l = 0.3;7 q = ( M + m ) *( i + m * l ^2) -( m * l ) ^2;8 num = [ m * l / q 0]9 den = [1 b *( i + m * l ^2) / q -( M + m ) * m * g * l / q -b * m * g * l / q ] Donde su salida deber´ ser: ıa num = 4.5455 0 den = 1.0000 0.1818 -31.1818 -4.4545 Para observar la respuesta del sistema a una fuerza impulsiva de 1N aplicada al carro, se in- troducir´ un impulso a la entrada mediante la funci´n impulse. Para ello es necesario a˜adir el a o n siguiente c´digo: o11 t =0:0.01:5;12 impulse ( num , den , t )13 axis ([0 1 0 60]) La funci´n axis se encarga de dibujar los ejes que aparecer´n en la gr´fica. En este caso, el eje X o a a representa el tiempo en segundos y el vector Y la amplitud. Como resultado de la simulaci´n se o obtiene la gr´fica donde puede observarse como la respuesta es totalmente insatisfactoria. Como a era de esperar no es estable a lazo abierto y por lo tanto ser´ necesario dise˜ar un regulador a n capaz de estabilizar el p´ndulo (ver cap´ e ıtulo 3). 17
  18. 18. Figura 2.2: Respuesta F.D.T en lazo abierto 2.4.2. Soluci´n: Mediante espacio de estados o En este caso los requerimientos de dise˜o son distintos pues se trata de un sistema multisa- n lida y el objetivo ya no es solo controlar el ´ngulo del p´ndulo sino tambi´n la posici´n del carro. a e e o Por lo tanto, los requerimientos de dise˜o a tener en cuenta son: n - Tiempo de establecimiento de x y θ menor a 5 segundos. - Tiempo de subida para x menor que 0.5 segundos. - Sobrepico de θ menor que 20 grados. En primer lugar hay que calcular las matrices A,B,C y D a partir de la expresi´n obtenida o en 2.311 M = 0.5;2 m = 0.2;3 b = 0.1;4 i = 0.006;5 g = 9.8;6 l = 0.3;78 p = i *( M + m ) + M * m * l ^2; %denominador para las matrices A y B 18
  19. 19. 9 A = [0 1 0 0;10 0 -( i + m * l ^2) * b / p ( m ^2* g * l ^2) / p 0;11 0 0 0 1;12 0 -( m * l * b ) / p m * g * l *( M + m ) / p 0]13 B = [0;14 ( i + m * l ^2) / p ;15 0;16 m*l/p]17 C = [1 0 0 0;18 0 0 1 0]19 D = [0; 0] Como resultado se obtiene: A = 0 1.0000 0 0 0 -0.1818 2.6727 0 0 0 0 1.0000 0 -0.4545 31.1818 0 B = 0 1.8182 0 4.5455 C = 1 0 0 0 0 0 1 0 D = 0 0 Al igual que en el caso anterior hay que introducir una entrada que en este caso ser´ un a escal´n de 0,2 metros. A˜adiendo el siguiente c´digo: o n o21 T =0:0.05:10;22 U =0.2* ones ( size ( T ) ) ;23 [Y , X ]= lsim (A ,B ,C ,D ,U , T ) ;24 plot (T , Y )25 axis ([0 2 0 100]) 19
  20. 20. Se observa la salida donde la l´ ınea azul representa la posici´n del carro y la l´ o ınea verde el ´ngulo adel p´ndulo. Al igual que en la figura anterior, para mejorar la din´mica del sistema es necesario e aincluir alguna clase de control. Este regulador se dise˜ar´ en el apartado 3.2. n a Figura 2.3: Respuesta mediante espacio de estados 20
  21. 21. Cap´ ıtulo 3Estabilizaci´n del p´ndulo o e Llegados a este punto se ha comprobado que la din´mica del sistema por si sola no es acapaz de mantener el p´ndulo estable. Aqu´ nace la necesidad de incluir un regulador capaz e ıde “decidir” en cada momento cu´l es la acci´n a realizar sobre el carro para que el p´ndulo a o eno se desestabilice. Existen distintos m´todos para dise˜ar un regulador. En este cap´ e n ıtulo seabordar´ concretamente el dise˜o en espacio de estados mediante la creaci´n de un regulador a n oLQR. Tambi´n se mostrar´ otras tres posibles soluciones al problema del p´ndulo invertido, e a emediante el m´todo del Lugar de las Ra´ e ıces, haciendo uso de un control PID, y con el m´todo ede respuesta en frecuencia.3.1. Controlador PID Los controladores PID han logrado colocarse en un sector importante en la industria pueshan demostrado ser muy robusto para muchas de sus aplicaciones. El objetivo de este apartadoes lograr dise˜ar un PID capaz de estabilizar el p´ndulo invertido y analizar posteriormente si n eel controlador dise˜ado ser´ el m´s adecuado para el sistema. n a a3.1.1. Estructura La estructura de un controlador PID es simple pero en ocasiones su sencillez puede sertambi´n su debilidad. Considerando un lazo de control de una entrada y una salida (SISO) de eun grado de libertado obtenemos el siguiente diagrama: 21
  22. 22. Figura 3.1: Diagrama en bloques A diferencia del cap´ ıtulo anterior, ahora se est´ trabajando con sistemas a lazo cerrado, es adecir, con realimentaci´n. Donde restando el valor de la referencia a la salida anterior se obtiene oel error que el PID ir´ tratando hasta que sea nulo. Los miembros de la familia de controladores aPID, incluyen tres acciones: proporcional (P), integral (I) y derivativa (D). Estos controladoresson los denominados P, I, PI, PD y PID. P: Acci´n de control proporcional da una salida del controlador que es proporcional o al error, es decir: u(t) = KP e(t). Un controlador proporcional puede controlar cualquier planta estable, pero posee desempe˜o limitado y error en r´gimen permanente. n e I: Acci´n de control integral da una salida del controlador que es proporcional al error o acumulado, lo que implica que es un modo de controlar lento. t u(t) = Ki e(τ )dτ 0 La se˜al de control u(t) tiene un valor diferente de cero cuando la se˜al de error e(t) es n n cero. Por lo que se concluye que dada una referencia constante, o perturbaciones, el error en r´gimen permanente es cero. e I: Acci´n de control proporcional-integral se define mediante o t Kp u(t) = Kp e(t) + e(τ )dτ Ti 0 donde Ti se denomina tiempo integral y es quien ajusta la acci´n integral. Con un control o proporcional, es necesario que exista error para tener una acci´n de control distinta de o cero. Con acci´n integral, un error peque˜o positivo siempre nos dar´ una acci´n de control o n a o creciente, y si fuera negativo la se˜al de control ser´ decreciente. Este razonamiento sencillo n a muestra que el error en r´gimen permanente ser´ siempre cero. e a 22
  23. 23. I: Acci´n de control proporcional-derivativa se define mediante: o de(t) u(t) = Kp e(t) + Kp Td dt donde Td es una constante denominada tiempo derivativo. Esta acci´n tiene car´cter o a de previsi´n, lo que hace m´s r´pida la acci´n de control, aunque tiene la desventaja o a a o importante que amplifica las se˜ales de ruido y puede provocar saturaci´n en el actuador. n o La acci´n de control derivativa nunca se utiliza por s´ sola, debido a que s´lo es eficaz o ı o durante per´ ıodos transitorios. PID: Acci´n de control proporcional-integral-derivativa, esta acci´n combinada o o re´ne las ventajas de cada una de las tres acciones de control individuales. La ecuaci´n de u o un controlador con esta acci´n combinada se obtiene mediante: o t Kp de(t) u(t) = Kp e(t) + e(τ )d(τ ) + Kp Td Td 0 dt 1 CP ID (s) = kp 1 + + Td s Ti s3.1.2. Dise˜ o PID n El objetivo de este apartado es calcular manualmente la funci´n de transferencia que repre- osente el regulador ´ptimo. Normalmente, el procedimiento v´lido a la hora de dise˜ar un PID o a nes comenzar utilizando s´lo el control proporcional. De forma que el diagrama de bloques ser´ o ıa: Figura 3.2: Regulador P 23
  24. 24. La ecuaci´n caracter´ o ıstica del bucle cerrado viene dada por: Ku G(z) M (z) = (3.1) 1 + Ku G(z)El denominador aparece sumado ya que la realimentaci´n es negativa, en caso de ser positiva ohabr´ que sustituirlo por 1 - Ku G(z). Para entender mejor la teor´ a continuaci´n, se detalla ıa ıa, oun ejemplo manual sencillo. En el caso del p´ndulo invertido se har´ uso de la herramienta e aMatlab tal y como se detalla en el apartado 3.1.3. La forma de dise˜ar este PID es haciendo uso del m´todo de ajuste de Nichols-Ziegler. n eB´sicamente consiste en lograr unos valores para la I (integral) y D (derivados) de modo que la aganancia sea cero. La funci´n de transferencia del regulador tiene la siguiente estructura: o a0 z 2 + a1 z + a2 Gr (z) = (3.2) z(z − 1) Td T 2Td Td ao = kc 1 + ; a1 = Kc −1 + − ; a2 = kc (3.3) T Ti T TPara cada tipo de controlador se sigue los siguientes par´metros: a - Controlador P: Kc =0.5Ku - Controlador PI: Kc =0.45Ku Ti = Tu /1,2 - Controlador PID: Kc =0.6Ku Ti = Tu /2Td = Tu /8Donde, 2π 1 β Tu = Wu = arctg Wu T α 24
  25. 25. Para este ejemplo, se va a asumir que se tiene la siguiente funci´n de transferencia: o 1 G(z) = (3.4) z2 − 0,87• Paso 1 Calcular Ku Conociendo la ecuaci´n caracter´ o ıstica en bucle cerrado se puede igualar a cero el denominadorpara despejar Ku: 1 + KuG(z) = 0 (3.5) 1 1 + Ku =0 (3.6) z2 − 0, 87El siguiente paso ser´ resolver la ecuaci´n de segundo grado manteniendo la inc´gnita Ku y a o oforzando a que el m´dulo de los polos sea 1. o 0, 8 ± 0, 82 − 4Ku z= (3.7) 2 2 0, 8 4Ku − 0, 82 |z| = 1 = + (3.8) 2 2 4Ku − 0, 82 1 = 0, 42 + (3.9) 4Finalmente, despejando se obtiene que Ku=1• Paso 2. Obtener polos para Ku Una vez obtenida Ku ya se puede sustituir en la ecuaci´n de segundo grado (3.7): o √ 0, 8 ± 0, 82 − 4 0, 8 ± 0, 64 − 4 0, 8 ± 1, 83j z= = = = 0, 4 ± 0, 916j (3.10) 2 2 2 25
  26. 26. • Paso 3. Calculo de Tu Se supone que el valor de periodo es de 0.1. Es importante destacar que la divisi´n entre oα y β se calcula en radianes. 1 0, 4 Wu = arctg = 11, 593 0,1 0, 916 2π Tu = = 0, 542 (3.11) 11, 593• Paso 4. Obtener regulador discreto. - Kc = 0, 6Ku = 0, 6 ∗ 1 = 0, 6 - Ti = Tu /2 = 0, 271 - Td = Tu /8 = 0, 06775• Paso 5. Obtener fdt del regulador discreto. En este punto, sustituyendo los valores obtenidos en la funci´n 3.3 se puede hallar los valores opara a0 , a1 y a2 . 1, 0065z 2 − 1, 1916z + 0, 4065 Gr (z) = (3.12) z(z − 1)• Paso 6. Obtener ecuaci´n en diferencia para implementar en PC o Llegados a este punto ya se ha obtenido el regulador que se estaba buscando y no es necesariocontinuar. No obstante, se va a detallar como obtener la ecuaci´n en diferencia, es decir, sacar ola expresi´n capaz de ser interpretada por un ordenador.El procedimiento a seguir ser´ obtener o ala antitransformada a partir de la f.d.t calculada en el anterior apartado. 26
  27. 27. M (z) a0 z 2 + a1 z + a2 Gr (z) = = (3.13) E(z) z2 − z (a0 z 2 + a1 z + a2 )E(z) = (z 2 − z)U (z) (3.14) a0 e(k) + a1 (l − 1) + a2 e(k − 2) = u(k) − u(k − 1) (3.15) u(k) = a0 e(k) + a1 e(k − 1) + a2 (k − 2) + u(k − 1) (3.16) 3.1.3. Ejemplo p´ndulo invertido. e En el caso del p´ndulo invertido, como ya se ha mencionado anteriormente, se va a hacer e uso de la herramienta Matlab. Asi que partiendo del c´digo ya utilizado en el apartado 2.4.1 o y siguiendo con los requerimientos de dise˜o especificados en el mismo apartado ya se puede n comenzar a realizar pruebas:1 M = .5;2 m = 0.2;3 b = 0.1;4 i = 0.006;5 g = 9.8;6 l = 0.3;78 q = ( M + m ) *( i + m * l ^2) -( m * l ) ^2; %simplifica entrada910 num = [ m * l / q 0]11 den = [1 b *( i + m * l ^2) / q -( M + m ) * m * g * l / q -b * m * g * l / q ] En ocasiones la mejor forma de obtener un regulador ´ptimo es a base de prueba y error, por o ello, en principio, se asume que el valor proporcionar, integral y derivativo valdr´ 1: a 27
  28. 28. 13 kd = 1;14 k = 1;15 ki = 1;16 numPID = [ kd k ki ];17 denPID = [1 0];18 numc = conv ( num , denPID )19 denc = polyadd ( conv ( denPID , den ) , conv ( numPID , num ) ) La funci´n polyadd no existe en Matlab pero ha sido creada en un fichero ’m’ distinto con el o prop´sito de sumar dos polinomios aun cuando no tuviesen la misma longitud. A continuaci´n, o o se muestra el c´digo del fichero polyadd.m 1 . o 1 %Copyright 1996 Justin Shriver 2 %POLYADD ( poly1 , poly2 ) : suma dos polinomios posiblemente no apareados 3 if length ( poly1 ) 0 4 poly =[ zeros (1 , mz ) , short ]+ long ; 5 else 6 poly = long + short ; 7 end Ahora ya se puede comenzar con la simulaci´n real donde introduciendo un impulso a la entrada o la salida es:21 t =0:0.01:5;22 impulse ( numc , denc , t )23 axis ([0 1.5 0 40]) 1 No es necesario importar el fichero a Matlab si se encuentra en el mismo directorio que el proyecto con el que se est´ trabajando. a 28
  29. 29. Figura 3.3: PID: Respuesta ante impulso de entradaComo se observa la respuesta a´n no es estable. Como primera prueba, se incrementa la pro- uporcional dando un valor k=100. Y su salida es: Figura 3.4: PID: Respuesta ante incremento proporcional Se puede observar que el tiempo de establecimiento empieza a ser aceptable pues es cercanoa los 2 segundos. Adem´s, el error estacionario es cero, as´ que no es necesario ning´n control a ı uintegral. 29
  30. 30. El siguiente paso es intentar reducir el sobrepico, para ello, se prueba con un valor Kd de 20: Figura 3.5: PID: Respuesta ante incremento derivativo Como se puede ver, el sobrepico se redujo de modo que el p´ndulo no se mueve m´s que 0.05 e a radianes de la vertical. Se han satisfecho todos los criterios de dise˜o, as´ que ya no se necesita n ı m´s iteraciones. Al parecer ya se ha obtenido un PID capaz de hacer estable el p´ndulo pero no a e se ha tenido en cuenta que ocurre con la posici´n del carro. Simulando el sistema con la funci´n o o de transferencia en lazo cerrado que incluye la posici´n del carro, se obtiene: o 1 M = 0.5; 2 m = 0.2; 3 b = 0.1; 4 i = 0.006; 5 g = 9.8; 6 l = 0.3; 7 8 q = ( M + m ) *( i + m * l ^2) -( m * l ) ^2; 9 num1 = [ m * l / q 0 0];10 den1 = [1 b *( i + m * l ^2) / q -( M + m ) * m * g * l / q -b * m * g * l / q 0];11 num2 = [( i + m * l ^2) / q 0 -m * g * l / q ];12 den2 = den1 30
  31. 31. 13 kd = 20;14 k = 100;15 ki = 1;16 numPID = [ kd k ki ];17 denPID = [1 0];1819 numc = conv ( num2 , denPID ) ;20 denc = polyadd ( conv ( denPID , den2 ) , conv ( numPID , num1 ) ) ;21 t =0:0.01:5;22 impulse ( numc , denc , t ) Figura 3.6: PID: Respuesta carrito ante impulso Como se observa, el carro se desplaza a una velocidad constante y nunca se detiene. A pesar de que el controlador PID estabiliza el ´ngulo del p´ndulo, este dise˜o no es util para el objetivo a e n ´ que se pretende alcanzar. Por ello, el siguiente paso es intentar un dise˜o en espacio de estado. n 31
  32. 32. 3.2. Regulador LQR La ventaja de tener el sistema representado en el espacio de estados es que el dise˜o de nun controlador LQR resulta m´s sencillo. La idea es establecer una retroalimentaci´n completa a omediante una combinaci´n lineal de las variables de estado. A pesar de ser lo ideal, la realidad oes que el estado que se mide no es completo, por lo que ser´ conveniente utilizar un observador ıade orden reducido para estimar parte del estado. En este caso, se asume que todos los estadosson medibles. El resultado final del algoritmo de control ser´ el siguiente: ıa Figura 3.7: Regulador LQR3.2.1. Base te´rica o En la figura 3.7 se puede ver un esquema del algoritmo de control. K es la matriz que retroali-menta el estado para obtener la se˜al de control, es decir: u(k)= -Kx(k). El siguiente paso en el nproceso de dise˜o es encontrar el vector K que determina la ley de control para la realimentaci´n. n oEsto puede hacerse de varias formas. La primera opci´n es asignar arbitrariamente el patr´n de o opolos que se desee que tenga el sistema en lazo cerrado. Y la otra opci´n es hacer uso de un ocontrol ´ptimo variable en el tiempo. En este caso la opci´n elegida es un control ´ptimo LQR. o o oSe trata de minimizar la funci´n: o N J= Xn (k)QXn (k) + uT (k)Ru(k) T (3.17) k=0 32
  33. 33. J es una funci´n de costo que generalmente est´ asociada con la energ´ del sistema. Se trata o a ıa o ıa. o Tde un control ´ptimo en el sentido de que busca minimizar la energ´ La expresi´n Xn (k)QXn (k)representa la energ´ que aporta cada estado, Q es una matriz no negativa definida (una posi- ıabilidad es una matriz diagonal, cuyos elementos sean positivos). A trav´s de Q se puede elegir e Tel peso que tiene cada estado en la funci´n J. Se puede conceptualizar Xn (k)QXn (k), como ouna x2 (la energ´ normalizada) en un sistema con una sola variable. Como en este caso u(k) ıacontiene un s´lo elemento, R ≥ 0 es un elemento que indica el peso que se le quiere dar a la oenerg´ asociada con la se˜al de control. ıa nLa ecuaci´n 3.13 est´ sujeta a la restricci´n impuesta por el sistema (ver funcion 2.31). o a o Xn (k + 1) = Ad Xn (k) + Bd u(k) (3.18)Resolver estas ecuaciones requiere de la utilizaci´n de m´todos num´ricos. Dado que el resultado o e ees dif´ de obtener, solo mencionar que la soluci´n resulta de una ley de control variable en ıcil otiempo: u(k) = −K(k)Xn (k) Para sistemas con coeficientes constantes, K(k) permanece fija durante un periodo de tiempoy luego decae a cero. Si se hace N → ∞ en 3.13 entonces la ganancia del controlador permanecefija todo el tiempo: K(k) = K El valor exacto de J no es relevante, solo se pretende encontrar la K que asegure que seam´ ınimo. Lo importante es el valor relativo que tienen los elementos de Q y R entre s´ Dichos ı.par´metros ser´n los encargados de balancear la importancia relativa de la entrada y los estados a aen la funci´n de costo que se esta tratando de optimizar. El caso m´s simple es considerar R=1 o ay proponer Q a partir de ah´ ı. 33
  34. 34. 3.2.2. Dise˜ o en espacio de estados n Una vez analizada la parte te´rica ya se puede completar el regulador al que se hac´ refe- o ıa rencia en el apartado 2.4.2. En dicho apartado se tomaban los siguientes criterios de dise˜o: n - Tiempo de establecimiento de x y theta menor que 5 segundos. - Tiempo de Subida para x menor que 0.5 segundos. - Sobrepico de theta menor que 20 grados (0.35 radianes). A los cuales adem´s se incluye un cuarto criterio, un error estacionario entre el 2 %. Las a caracter´ ısticas del p´ndulo siguen siendo las mismas: e1 M = 0.5;2 m = 0.2;3 b = 0.1;4 i = 0.006;5 g = 9.8;6 l = 0.3; Echando un vistazo a la simulaci´n se determinaron que las ecuaciones de estado para este o problema son:        x ˙ 0 1 0 0 x ˙ 0         x   0 −0,1818 2,6727 0   x   1,8182  ¨ ¨         ˙ =  ˙  +  (3.19)          Φ   0 0 0 1  Φ   0         ¨ Φ 0 −0,4545 31,1818 0 ¨ Φ 4,5455   x ˙      1 0 0 0  x  ¨ 0   y=   ˙ +    u 0 0 1 0  Φ  0   ¨ Φ 34
  35. 35. Para la obtenci´n del regulador se va a utilizar la funci´n “lqr” que dar´ el controlador o o a o ´ptimo. Esta funci´n permite elegir dos par´metros, R y Q, donde, como ya se dijo anterior- o a mente, el caso m´s simple es considerar R=1, y Q, por ejemplo, valdr´ Q=C’*C. El m´todo a a e LQR, b´sicamente permite el control de ambas salidas. Para obtener una respuesta deseable, el a controlador puede sintonizarse cambiando los elementos no nulos en la matriz Q. Para obtener la matriz Q es suficiente con introducir el comando C’*C Q = 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 El elemento en la posici´n 1,1 se usar´ para la posici´n del carro y el elemento en la posici´n o a o o 3,3 para el ´ngulo del p´ndulo. El valor de la entrada R permanecer´ en 1. Ahora que se conoce a e a la matriz Q ya se puede calcular el valor de K y mostrar gr´ficamente el resultado. a1 x =1;2 y =1;3 Q =[ x 0 0 0;4 0 0 0 0;5 0 0 y 0;6 0 0 0 0];7 R = 1;8 K = lqr (A ,B ,Q , R )9 Ac = [( A - B * K ) ];10 Bc = [ B ];11 Cc = [ C ];12 Dc = [ D ];1314 T =0:0.01:5;15 U =0.2* ones ( size ( T ) ) ;16 [Y , X ]= lsim ( Ac , Bc , Cc , Dc ,U , T ) ;17 plot (T , Y )18 legend ( ’ Carrito ’ , ’ P´ ndulo ’) e 35
  36. 36. K = -1.0000 -1.6567 18.6854 3.4594 Figura 3.8: Respuesta controlador LQR La curva en verde representa el ´ngulo del p´ndulo, en radianes y la curva azul representa la a eposici´n del carro en metros. Como se puede ver, este gr´fico no es satisfactorio. Los sobrepicos o adel p´ndulo y del carro parecen estar bien, pero debe mejorarse sus tiempos de asentamiento, y edebe bajarse el tiempo de subida del carro. Tambi´n puede observarse que el carrito no se halla cerca de la ubicaci´n deseada sino que e ode hecho se ha movido en la direcci´n contraria. Este error ser´ tratado en la secci´n siguiente, o a oen este momento hay que resolver los tiempos de subida y de establecimiento. Para ello hay que variar los valores de las variables x e y para modificar as´ la matriz Q. Por ıejemplo, incrementando la variable x, se consigue que los tiempos de establecimiento disminuyan,por otro lado, incrementando ’y’ se reduce el movimiento angular del p´ndulo. e 36
  37. 37. Para valores x=5000; y=100 se obtiene la siguiente respuesta:K = -70.7107 -37.8345 105.5298 20.9238 Figura 3.9: Respuesta controlador LQR ante incremento de x,y Como se puede ver si se sigue incrementando x e y, se podr´ mejorar aun m´s la respuesta ıa apero tambi´n ser´ mayores los esfuerzos de control usados. La respuesta del sistema tiene un e ıantiempo de establecimiento por debajo de los 2 segundos. Llegados a este punto se ha cumplidoel objetivo de dise˜ar un regulador capaz de estabilizar tanto el ´ngulo del p´ndulo como la n a eposici´n del carro. o 37
  38. 38. 3.3. Observadores En el control con realimentaci´n de estados se asum´ la disponibilidad de las variables de o ıaestado. En la pr´ctica este caso no siempre es posible, ya sea porque ciertos estados no son amedibles, bien porque es muy dif´ o muy caro medirlos. Para implementar una realimentaci´n ıcil ocompleta de estados, entonces, es necesario a˜adir un dispositivo din´mico, llamado observador n ao estimador de estados, cuya salida sea una estimaci´n del vector de estados. En esta secci´n o ose introduce observadores de orden completo, donde el observador tiene el mismo orden que laplanta,es decir, se estima todo el vector de estados. Se considera entonces el sistema: x(t) = Ax(t) + Bu(t) ˙ y(t) = Cx(t)donde A,B y C son conocidas, y la entrada u(t) y la salida y(t) son medibles, aunque no el es-tado x(t). El problema es estimar x(t) de esta informaci´n. Para ello hay dos soluciones posibles: o - Observador a lazo abierto. - Observador de orden reducido.3.3.1. Observador a lazo abierto Conociendo A y B, es posible duplicar la ecuaci´n de estados original construyendo el sistema: o x(t)=Aˆ(t)+Bu(t) ˆ xEsta duplicaci´n es un observador a lazo abierto, donde si se tuvieran las mismas condiciones oinciales, entonces para toda entrada u(t) se tiene que x(t)=x(t), ∀T ≥ 0. B´sicamente si el ˆ asistema es observable se puede utilizar un observador en lazo abierto para estimar el vector deestados. Sin embargo, el observador en lazo abierto tiene la desventaja de tener que calcular elestado inicial cada vez que se utilice el estimador. 38
  39. 39. Figura 3.10: Observador a lazo abierto3.3.2. Observador de orden reducido Si el par (A,C) es observable, usando la matriz no singular: En estas coordenadas la salida queda como el primer estado, y as´ no es necesario construir ı,un observador para estimar todo el estado, sino solamente los n-1 restantes. Este observador esde orden reducido. 39
  40. 40. 40
  41. 41. Cap´ ıtulo 4Implementaci´n o La aplicaci´n que se presenta en este cap´ o ıtulo permite la simulaci´n del comportamiento of´ ısico de un sistema din´mico, sistema que evoluciona con el tiempo. Dicha aplicaci´n ha sido a odesarrollada en forma de applet Java utilizando la programaci´n orientada a objetos. Para ello, ose han utilizado tanto los entornos de desarollo integrado (IDE) de NetBeans, como Eclipse,ambos proyectos de c´digo abierto fundado por Sun MicroSystems. o Como producto final, el applet tiene el objetivo de permitir estudiar el comportamiento delp´ndulo invertido de un modo visual, permitiendo al usuario interactuar sobre ´l en tiempo real. e eGracias a la portabilidad que Java ofrece, es posible integrar dicho applet a una p´gina Web y avisualizarlo desde cualquier navegador compatible con java (Internet Explorer, Mozilla Firefox,Google Chrome, etc).4.1. P´ndulo invertido en Matlab e En los cap´ ıtulos anteriores, se ha estudiado como obtener el modelo del p´ndulo invertido eas´ como el controlador capaz de estabilizarlo. La herramienta que se utiliz´ entonces para ir ı orealizando las pruebas era Matlab. El motivo de utilizar ´sta herramienta y no otra, es b´sica- e amente, por las altas prestaciones para el c´lculo num´rico y la facilidad que Matlab ofrece a la a ehora de trabajar con matrices. Por este motivo, una vez terminado todo el proceso de dise˜o, nel resultado obtenido se ha almacenado en un fichero ’m’ al que se le ha llamado “pendulo.m”(v´ase Ap´ndice A). e e 41
  42. 42. Al ejecutar el fichero puede observarse como el p´ndulo va estabiliz´ndose de forma gradual e aante una inclinaci´n inicial de once grados. El resultado final es el mostrado en la siguiente ogr´fica donde el eje x representa la distancia y el eje y la altura (ambos en metros). a Figura 4.1: Representaci´n p´ndulo invertido en Matlab o e Naturalmente esta representaci´n se puede mejorar, aunque no hay que olvidar que el obje- otivo es la comprobaci´n del correcto funcionamiento del regulador. No obstante, en internet se opueden encontrar ejemplos de reguladores que muestran al usuario una simulaci´n m´s comple- o ata, donde, no solo se puede comprobar el estado del p´ndulo sino tambi´n la fuerza aplicada al e ecarro as´ como el ´ngulo y la posici´n que ´ste mantiene en cada momento (v´ase Ap´ndice B). ı a o e e ePor usar un ejemplo, a continuaci´n se muestra la simulaci´n de un p´ndulo invertido que parte o o ede inclinaci´n de 15o : o 42
  43. 43. Figura 4.2: Representaci´n alternativa en Matlab o Figura 4.3: Fuerza aplicada al carro 43
  44. 44. ´ Figura 4.4: Angulo y posici´n del carro o4.2. Conversi´n ’Matlab to Java’ o Una vez obtenido el c´digo en Matlab y comprobada su correcta funcionalidad, se ha deci- odido portarlo a Java. El motivo de esta decisi´n, es la intenci´n de integrar la aplicaci´n applet o o oen un servidor Web. De este modo, se facilita su acceso desde cualquier equipo con acceso ainternet y, por otro lado, evita la necesidad de tener un Matlab instalado en la m´quina. a Los principales inconvenientes encontrados a la hora de pasar a Java el c´digo con el que se otrabaj´ en Matlab son: o - El tratamiento con matrices. - Las funciones de control. El problema para tratar con matrices (sobre todo a la hora de operar con ellas) viene da-do porque Java no ofrece herramientras concretas para trabajar con matrices. Para resolver elproblema, es necesario acudir a librer´ creadas por terceros que implementan con ´xito las ıas eoperaciones b´sicas con las que se va a trabajar. En el “Cap´ a ıtulo 5. Librer´ ıas” se detalla cadauna de las librer´ utilizadas, as´ como que funcionalidad tiene cada una de ellas y cu´l se ha ıas ı a 44
  45. 45. adaptado mejor a las necesidades del proyecto. En lo que respecta a las funciones de control, al igual que el problema de las matrices, noexisten en Java funciones ya creadas con las que se pueda trabajar. Esto crea la necesidad deempezar desde cero aquellas funciones que sean necesarias. Para el proyecto en cuesti´n ha sido onecesario crear: - Funci´n c2d. o - Funci´n expm. o - Funci´n dlqr. o4.2.1. Funci´n c2d o La funci´n “continuous to discrete” (c2d) es necesaria para obtener la discretizaci´n del sis- o otema cont´ ınuo en espacio de estados. El c´digo fuente puede obtenerse del fichero c2d.m donde oprincipalmente se encuentra:f unction[P hi, Gamma] = c2d(a, b, t)...[m, n] = size(a);[m, nb] = size(b);s = expm([[ab] ∗ t; zeros(nb, n + nb)]);P hi = s(1 : n, 1 : n);Gamma = s(1 : n, n + 1 : n + nb); La funci´n recibe como argumentos las matrices A y B del espacio de estados y un tercer oargumento t que es el tiempo de muestreo. Como argumentos de salida devuelve dos matricesPhi y Gamma que son las que se utilizar´n posteriormente para el observador y el c´lculo a adel regulador ´ptimo. La principal complicaci´n de esta funci´n es la obtenci´n de la matriz s o o o oresultante de la llamada a expm. 45
  46. 46. 4.2.2. Funci´n expm o Es utilizada desde la funci´n c2d. El c´digo fuente puede obtenerse del fichero Matlab o oexpm.m. Echando un vistazo al c´digo, ´ste puede parecer un poco engorroso, no obstante, o ela idea principal para resolverlo reside en calcular lo siguiente: EIG(X) and EXPM(X) = V*diag(exp(diag(D)))/V X es la matriz que la funci´n recibe como argumento. V corresponde a los eigenvectores de ola matriz X y D es la matriz con los eigenvalues. Matlab cuenta con una funci´n llamada eig() oque devuelve las dos matrices (V,D) con el resultado. En el caso de Java, esta funci´n viene oincorporada en la librer´ Jama de modo que no ha sido necesario implementarla. ıa4.2.3. Funci´n dlqr o Al igual que anteriores casos, ha sido necesario crearse una funci´n partiendo desde cero. En oeste caso se trata de la funci´n dlqr, la cu´l, en Matlab se encarga de obtener el regulador lqr o ao´ptimo.function [K,K1]=regulador(G,H,C,D,Peso)G1= [ G zeros(4,1); -C* G 1];H1= [H; -C*H];Q= [Peso(1) 0 0 0 0; 0 Peso(2) 0 0 0 ; 0 0 Peso(3) 0 0 ; 0 0 0 Peso(4) 0; 0 0 0 0 1]R= [1];Pact=diag(0,4);var=1;i=0;while ((abs(var)¿0.0001) && (i¡6000 ))Pant=Pact;Pact=Q+G1’*Pant*G1-G1’*Pant*H1*inv(R+H1’*Pant*H1)*H1’*Pant*G1;Pact-Pant;var=sum(sum(Pact-Pant));i=i+1;end 46
  47. 47. P=Pact;KK=inv(R+H1’*P*H1)*H1’*P*G1;K=[KK(1) KK(2) KK(3) KK(4)];K1=-KK(5);4.3. Aplicaci´n Java o4.3.1. Dise˜ o n El applet a desarrollar es un peque˜o programa hecho en Java que puede incrustarse en un ndocumento HTML lo que permite crear programas que cualquier usuario puede ejecutar desdesu navegador. En el dise˜o del applet, Java proporciona dos paquetes gr´ficos: AWT y Swing. En n ala aplicaci´n se ha decidido utilizar Swing por tener mayor cantidad de controles y componentes oprefabricados que facilitan el dise˜o a la vez que enriquecen la interfaz. nPanel par´metros actuales a La funcionalidad de este panel reside en mostrar al usuario los par´metros actuales con los aque el p´ndulo est´ en ese momento. El valor de cada par´metro es editable lo que permite hacer e a auna simulaci´n bajo distintas situaciones. o Figura 4.5: Par´metros p´ndulo a e 47
  48. 48. Panel Iniciar/Detener Sirve para iniciar o detener la simulaci´n del p´ndulo. Para introducir nuevos valores en el o epanel de “Par´metros actuales”, es necesario detener la simulaci´n e iniciarla de nuevo para que a o´stos tengan efecto.e Figura 4.6: Panel arranque p´ndulo ePanel control autom´tico/manual a Formado por dos checkbox donde solo puede estar activo uno al mismo tiempo, su fun-cionalidad consiste en decidir si el p´ndulo se ejecuta en modo autom´tico o manual. En modo e aautom´tico, el p´ndulo se ejecuta con los par´metros del panel “Par´metros actuales”, en modo a e a amanual, se controla mediante la barra de scroll. Inicialmente el p´ndulo aparece estabilizado eformando un ´ngulo de 90o respecto al carro. a Figura 4.7: Panel control Autom´tico/Manual a 48
  49. 49. Estado p´ndulo e Consta de dos JTextField que muestran el valor de la posici´n y ´ngulo en cada instante. o a Figura 4.8: Posici´n y ´ngulo del p´ndulo o a ePanel de dibujo Fijado en la parte superior del applet es la zona donde aparece representado el p´ndulo. eEst´ compuesto por un JPanel de fondo blanco. La funci´n “paint(Graphics g)”, dibuja 3 figuras a o(cuadrado, l´ ınea y c´ ırculo) con la siguiente uni´n: o g.fillRect(xx, 250, 70, 30); g.fillOval((375+Math.sin(radianes)*150),(250-Math.cos(radianes)*150), 20, 20); g.drawLine((385+Math.sin(radianes)*150),100,xx+35,250); Figura 4.9: Panel de dibujo 49
  50. 50. Interaz del applet La vista completa de la interfaz queda de la siguiente forma: Figura 4.10: Interfaz applet 50
  51. 51. 4.3.2. C´digo o El applet se ha creado en un fichero de tipo “Visual Class” llamado “simulador.java”quepermite el dise˜o de la interfaz de forma visual, generando autom´ticamente el c´digo de los n a oobjetos a˜adidos. La clase extiende de JApplet e implementa Runnable para el uso de hilos. n Como todo applet, ´ste cuenta con un m´todo init() encargado de inicializar los componentes e edel mismo. Adem´s, se utiliza el m´todo para establecer un tama˜o fijo de la ventana (800x600). a e nPor otro lado, se crea un hilo independiente llamado “Timer” que se encargar´ de todo el c´culo a anum´rico del p´ndulo mientras que el hilo principal ser´ el encargado del refresco de imagen. e e a Con el inicio del hilo “Timer.start()” se lanza el m´todo run() que contiene tanto la dis- ecretizaci´n del espacio de estados as´ como la obtenci´n del regulador ´ptimo. Como ultima o ı o o ´tarea, se ejecuta un bucle “while” encargado de obtener la posici´n y ´ngulo del p´ndulo en o a ecada instante de tiempo. Tras cada iteraci´n, el hilo se duerme durante un periodo de 2 milise- ogundos, tiempo suficiente para que el otro hilo pueda refrescar la imagen con los nuevos valores. 51
  52. 52. 52

×