SlideShare una empresa de Scribd logo
1 de 87
Descargar para leer sin conexión
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
´
Indice general

1. Introducci´n
             o                                                                                        7

  1.1. Descripci´n del p´ndulo invertido . . . . . . . . . . . . . . . . . . . . . . . . . . .
                o       e                                                                             7

  1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      8


2. 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                                                                                18


3. 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. 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                                                                                   51

5. Librer´
         ıas                                                                                        53
   5.1. Librer´ Jama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
              ıa                                                                                    53
   5.2. Librer´ Ejml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
              ıa                                                                                    54
   5.3. Librer´ JMathLib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
              ıa                                                                                    55

Ap´ndices
  e                                                                                                 58

A. Pendulo.m                                                                                        61

B. Simulaci´n alternativa.m
           o                                                                                        67

C. C´digo fuente applet
    o                                                                                               73

D. Regulador                                                                                        87




                                                  4
´
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
4.9. Panel de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      49
4.10. Interfaz applet   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   50




                                                6
Cap´
   ıtulo 1


Introducci´n
          o

   El p´ndulo invertido es conocido por ser uno de los problemas m´s importantes y cl´sicos de
       e                                                          a                  a
la teor´ de control. Se trata de un control inestable y no lineal. A menudo, es utilizado como
       ıa
ejemplo acad´mico, principalmente por ser un sistema de control m´s accesible, y por otro lado,
            e                                                    a
permite mostrar las principales diferencias de control de bucle abierto y de su estabilizaci´n a
                                                                                            o
bucle cerrado. Pese a existir diferentes t´cnicas a la hora de dise˜ar el regulador ´ptimo capaz
                                          e                        n                o
de estabilizar el p´ndulo, no todas representan la mejor opci´n. En la presente memoria se
                   e                                         o
analizar´n alguno de los m´todos m´s conocidos.
        a                 e       a



1.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                                                                           a
tado un p´ndulo que puede girar libremente. El carro est´ controlado por un servomotor y su
         e                                              a
principal funci´n es la de aplicar fuerzas al p´ndulo. Como la finalidad de este proyecto es dar
               o                               e
la posibilidad de ejecutar el algoritmo de control en un sistema real (como, por ejemplo, un
Segway), implica que el carro puede desplazarse sin limitaci´n alguna, es decir, que si estuviese
                                                            o
montado 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                          e
abajo; y otro inestable, arriba. El objetivo del control es cambiar la din´mica del sistema para
                                                                          a
que en la posici´n vertical, arriba, se tenga un punto de equilibrio estable. En otras palabras, la
                o
idea es encontrar la fuerza que ha de aplicarse al carro para que el p´ndulo no se caiga, incluso
                                                                      e

                                                7
si se le perturba con un empuj´n tipo escalera o impulso.
                              o




                             Figura 1.1: Esquema p´ndulo invertido
                                                  e




1.2.     Objetivos

   El proyecto que se presenta a continuaci´n permite la simulaci´n del comportamiento f´
                                           o                     o                      ısico
de un sistema din´mico que evoluciona con el tiempo. El objetivo es dise˜ar un sistema de control
                 a                                                      n
o
´ptimo que permita estabilizar un p´ndulo invertido asi como el desarrollo de una aplicaci´n ca-
                                   e                                                      o
paz de simularlo. Los sistemas de control requieren del hardware adecuado para obtener los datos
de 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              o
facilita su ejecuci´n desde cualquier navegador web. Sin embargo, para el dise˜o del regulador se
                   o                                                          n
ha 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                e
mente en la parte superior, por lo que no se contempla el algoritmo encargado de levantar el
p´ndulo y lograr estabilizarlo en su posici´n vertical.
 e                                         o




                                                8
Cap´
   ıtulo 2


Modelado 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       a
comportamiento f´
                ısico del sistema. Para modelar el sistema existen dos estrategias. La primera
es tratar al sistema como un “caja negra” y realizar sobre ´l un conjunto de acciones (se˜ales de
                                                           e                             n
entrada) observando c´mo se comporta (estudiar las salidas) deduciendo un modelo matem´tico
                     o                                                                a
para ´ste. Un ejemplo ser´ la t´cnica de Ziegler-Nichols. La segunda consiste en estudiar los
     e                   ıa    e
procesos 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             o




2.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                      n
del sistema correcto. Hallarlo es una tarea complicada, y por ello, a menudo es necesario recurrir
a la sencillez. En el caso del p´ndulo, se consigue con el an´lisis por separado de cada uno de
                                e                            a
los cuerpos.




                                                9
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 movimiento
se limita a dos dimensiones. Las ecuaciones fundamentales de movimiento plano de un cuerpo
r´
 ı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
                                                                             o
obtiene 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                            a
informaci´n util. Por otro lado, sumando las fuerzas en el diagrama de cuerpo libre del p´ndulo
         o ´                                                                             e
en 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                                           o
este sistema:

                                x    ˙     ¨         ˙
                         (M + m)¨ + bx + mlθcosθ − mlθ2 sinθ = F                          (2.6)

                                                10
Para obtener la segunda ecuaci´n del movimiento, es necesario sumar las fuerzas perpendi-
                                 o
culares 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                         o
sobre el centroide del p´ndulo para obtener la primera ecuaci´n (2.8) mostrada a continuaci´n.
                        e                                    o                             o
Finalmente, 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 que
theta = Pi + ø, donde ø representa un peque˜o ´ngulo en la direcci´n vertical. Por lo tanto, las
                                           n a                    o
dos 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        e
matem´ticos a trav´s de los cuales se conoce el comportamiento de estos sistemas frente a valores
     a            e
concretos. Esto es lo que permite la funci´n de transferencia. Se trata de un modelo matem´tico
                                          o                                               a
que a trav´s de un cociente relaciona la respuesta de un sistema (salida) a una se˜al de entrada
          e                                                                       n
o 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
Donde H(s) es la funci´n de transferencia (tambi´n denotada como G(s)). Y(s) es la trans-
                         o                         e
formada 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
                                                                         o
las ecuaciones del sistema linealizado, se ha de tomar primero la transformada de Laplace de las
ecuaciones 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                     a
ecuaci´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       s


Reordenando 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)2



De la funci´n de transferencia de arriba puede verse que hay un polo y un cero en el origen.
           o
Estos 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
En este punto ya se tiene calculada la funci´n de transferencia que representa al sistema f´
                                               o                                              ısico
del p´ndulo invertido. Mediante esta ecuaci´n ya se puede realizar pruebas para comprobar si
     e                                     o
el sistema es estable a lazo abierto (v´ase 2.4 “Respuesta a lazo abierto”)
                                       e




2.3.     Ecuaci´n de estado
               o

   El espacio de estados es otro m´todo que permite modelar un sistema f´
                                  e                                     ısico. Se representa por
un conjunto de entradas, salidas y variables de estado relacionadas por ecuaciones diferenciales
de primer orden que se combinan en una ecuaci´n diferencial matricial de primer orden. A esta
                                             o
representaci´n se le llama ecuaci´n de estado. Una forma general de expresar la din´mica de un
            o                    o                                                 a
sistema 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 orden
n. u es el vector de entrada y contiene m elementos. y contiene p elementos y es el vector de
salida. A, de dimensi´n n x n es la matriz del sistema. B, de dimensi´n n x m es la matriz de
                     o                                               o
entrada. 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-
                            o
terno del sistema, adem´s de que se puede trabajar con sistemas cuyas condiciones iniciales sean
                       a
diferentes de cero. Otra ventaja es que se facilita el dise˜o asistido por computadora, ya que los
                                                           n
paquetes 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                         o
carro, primera derivada, posici´n del ´ngulo y su derivada). En el caso del vector y se ha con-
                               o      a
siderado que el p´ndulo consta de tres sensores, uno para la posici´n del carro r, otro para el
                 e                                                 o
a
´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
                                                         o
de C y D (donde D=0).



                                               13
                         
              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
                                     ˙                            o
poder representarla como ecuaci´n de estado lineal debe tener la siguiente forma:
                               o

                                                               n
                                                       xi =
                                                       ˙             aij xj + bi u                          (2.24)
                                                               j=1



Donde 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=0



Al calcular las derivadas parciales y hacer β = ΘM − α2 se tiene:

                                                                     14
∂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=0



Para 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
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
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:
                o

11   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
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.31

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   p = i *( M + m ) + M * m * l ^2; %denominador para las matrices A y B

                                                      18
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                      o

21   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
Se observa la salida donde la l´
                               ınea azul representa la posici´n del carro y la l´
                                                             o                  ınea verde el ´ngulo
                                                                                              a
del p´ndulo. Al igual que en la figura anterior, para mejorar la din´mica del sistema es necesario
     e                                                             a
incluir 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
Cap´
   ıtulo 3


Estabilizaci´n del p´ndulo
            o       e

   Llegados a este punto se ha comprobado que la din´mica del sistema por si sola no es
                                                    a
capaz 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                                         e
no se desestabilice. Existen distintos m´todos para dise˜ar un regulador. En este cap´
                                        e               n                            ıtulo se
abordar´ concretamente el dise˜o en espacio de estados mediante la creaci´n de un regulador
       a                      n                                          o
LQR. Tambi´n se mostrar´ otras tres posibles soluciones al problema del p´ndulo invertido,
          e            a                                                 e
mediante el m´todo del Lugar de las Ra´
             e                        ıces, haciendo uso de un control PID, y con el m´todo
                                                                                      e
de respuesta en frecuencia.




3.1.     Controlador PID

   Los controladores PID han logrado colocarse en un sector importante en la industria pues
han demostrado ser muy robusto para muchas de sus aplicaciones. El objetivo de este apartado
es lograr dise˜ar un PID capaz de estabilizar el p´ndulo invertido y analizar posteriormente si
              n                                   e
el controlador dise˜ado ser´ el m´s adecuado para el sistema.
                   n       a     a



3.1.1.   Estructura

   La estructura de un controlador PID es simple pero en ocasiones su sencillez puede ser
tambi´n su debilidad. Considerando un lazo de control de una entrada y una salida (SISO) de
     e
un grado de libertado obtenemos el siguiente diagrama:

                                              21
Figura 3.1: Diagrama en bloques



   A diferencia del cap´
                       ıtulo anterior, ahora se est´ trabajando con sistemas a lazo cerrado, es
                                                   a
decir, con realimentaci´n. Donde restando el valor de la referencia a la salida anterior se obtiene
                       o
el error que el PID ir´ tratando hasta que sea nulo. Los miembros de la familia de controladores
                      a
PID, incluyen tres acciones: proporcional (P), integral (I) y derivativa (D). Estos controladores
son 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
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 s




3.1.2.   Dise˜ o PID
             n

   El objetivo de este apartado es calcular manualmente la funci´n de transferencia que repre-
                                                                o
sente el regulador ´ptimo. Normalmente, el procedimiento v´lido a la hora de dise˜ar un PID
                   o                                      a                      n
es comenzar utilizando s´lo el control proporcional. De forma que el diagrama de bloques ser´
                        o                                                                   ıa:




                                      Figura 3.2: Regulador P




                                                23
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
                                                    o
habr´ que sustituirlo por 1 - Ku G(z). Para entender mejor la teor´ a continuaci´n, se detalla
    ıa                                                            ıa,           o
un ejemplo manual sencillo. En el caso del p´ndulo invertido se har´ uso de la herramienta
                                            e                      a
Matlab 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                                 e
B´sicamente consiste en lograr unos valores para la I (integral) y D (derivados) de modo que la
 a
ganancia 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                   T


Para 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 /8


Donde,


                                         2π              1             β
                                  Tu =            Wu =     arctg
                                         Wu              T             α




                                                    24
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 denominador
para despejar Ku:
                                          1 + KuG(z) = 0                                    (3.5)
                                                        1
                                        1 + Ku                 =0                           (3.6)
                                                  z2   − 0, 87


El siguiente paso ser´ resolver la ecuaci´n de segundo grado manteniendo la inc´gnita Ku y
                     a                   o                                     o
forzando 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)
                                                           4


Finalmente, 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
• 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
                                                                 o
para 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 necesario
continuar. No obstante, se va a detallar como obtener la ecuaci´n en diferencia, es decir, sacar
                                                               o
la expresi´n capaz de ser interpretada por un ordenador.El procedimiento a seguir ser´ obtener
          o                                                                          a
la antitransformada a partir de la f.d.t calculada en el anterior apartado.




                                                       26
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;
7

8    q = ( M + m ) *( i + m * l ^2) -( m * l ) ^2;         %simplifica entrada
9


10   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
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
Figura 3.3: PID: Respuesta ante impulso de entrada



Como se observa la respuesta a´n no es estable. Como primera prueba, se incrementa la pro-
                              u
porcional 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 cercano
a los 2 segundos. Adem´s, el error estacionario es cero, as´ que no es necesario ning´n control
                      a                                    ı                         u
integral.

                                              29
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
13   kd = 20;
14   k = 100;
15   ki = 1;
16   numPID = [ kd k ki ];
17   denPID = [1 0];
18

19   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
3.2.     Regulador LQR

   La ventaja de tener el sistema representado en el espacio de estados es que el dise˜o de
                                                                                      n
un controlador LQR resulta m´s sencillo. La idea es establecer una retroalimentaci´n completa
                            a                                                     o
mediante una combinaci´n lineal de las variables de estado. A pesar de ser lo ideal, la realidad
                      o
es que el estado que se mide no es completo, por lo que ser´ conveniente utilizar un observador
                                                           ıa
de orden reducido para estimar parte del estado. En este caso, se asume que todos los estados
son medibles. El resultado final del algoritmo de control ser´ el siguiente:
                                                            ıa




                                    Figura 3.7: Regulador LQR




3.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
                                  n
proceso de dise˜o es encontrar el vector K que determina la ley de control para la realimentaci´n.
               n                                                                               o
Esto puede hacerse de varias formas. La primera opci´n es asignar arbitrariamente el patr´n de
                                                    o                                    o
polos que se desee que tenga el sistema en lazo cerrado. Y la otra opci´n es hacer uso de un
                                                                       o
control ´ptimo variable en el tiempo. En este caso la opci´n elegida es un control ´ptimo LQR.
        o                                                 o                        o
Se trata de minimizar la funci´n:
                              o

                                    N
                            J=          Xn (k)QXn (k) + uT (k)Ru(k)
                                         T
                                                                                           (3.17)
                                 k=0

                                                32
J es una funci´n de costo que generalmente est´ asociada con la energ´ del sistema. Se trata
                 o                               a                      ıa
              o                                                   ıa.         o   T
de 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-
                   ıa
bilidad es una matriz diagonal, cuyos elementos sean positivos). A trav´s de Q se puede elegir
                                                                       e
                                                                        T
el peso que tiene cada estado en la funci´n J. Se puede conceptualizar Xn (k)QXn (k), como
                                         o
una x2 (la energ´ normalizada) en un sistema con una sola variable. Como en este caso u(k)
                ıa
contiene un s´lo elemento, R ≥ 0 es un elemento que indica el peso que se le quiere dar a la
             o
energ´ asociada con la se˜al de control.
     ıa                  n


La 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         e
es dif´ de obtener, solo mencionar que la soluci´n resulta de una ley de control variable en
      ıcil                                      o
tiempo:

                                      u(k) = −K(k)Xn (k)

   Para sistemas con coeficientes constantes, K(k) permanece fija durante un periodo de tiempo
y luego decae a cero. Si se hace N → ∞ en 3.13 entonces la ganancia del controlador permanece
fija todo el tiempo:

                                           K(k) = K

   El valor exacto de J no es relevante, solo se pretende encontrar la K que asegure que sea
m´
 ı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          a
en la funci´n de costo que se esta tratando de optimizar. El caso m´s simple es considerar R=1
           o                                                       a
y proponer Q a partir de ah´
                           ı.




                                               33
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:
                         e

1   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
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.
                                                                a

1    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 ];
13


14   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
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           e
posici´n del carro en metros. Como se puede ver, este gr´fico no es satisfactorio. Los sobrepicos
      o                                                 a
del p´ndulo y del carro parecen estar bien, pero debe mejorarse sus tiempos de asentamiento, y
     e
debe 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                                                                 o
de hecho se ha movido en la direcci´n contraria. Este error ser´ tratado en la secci´n siguiente,
                                   o                           a                    o
en 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
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             a
pero tambi´n ser´ mayores los esfuerzos de control usados. La respuesta del sistema tiene un
          e     ıan
tiempo de establecimiento por debajo de los 2 segundos. Llegados a este punto se ha cumplido
el objetivo de dise˜ar un regulador capaz de estabilizar tanto el ´ngulo del p´ndulo como la
                   n                                              a           e
posici´n del carro.
      o




                                                37
3.3.      Observadores

   En el control con realimentaci´n de estados se asum´ la disponibilidad de las variables de
                                 o                    ıa
estado. En la pr´ctica este caso no siempre es posible, ya sea porque ciertos estados no son
                a
medibles, bien porque es muy dif´ o muy caro medirlos. Para implementar una realimentaci´n
                                ıcil                                                    o
completa de estados, entonces, es necesario a˜adir un dispositivo din´mico, llamado observador
                                             n                       a
o estimador de estados, cuya salida sea una estimaci´n del vector de estados. En esta secci´n
                                                    o                                      o
se introduce observadores de orden completo, donde el observador tiene el mismo orden que la
planta,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)
                                         ˆ     x


Esta duplicaci´n es un observador a lazo abierto, donde si se tuvieran las mismas condiciones
              o
inciales, entonces para toda entrada u(t) se tiene que x(t)=x(t), ∀T ≥ 0. B´sicamente si el
                                                       ˆ                   a
sistema es observable se puede utilizar un observador en lazo abierto para estimar el vector de
estados. Sin embargo, el observador en lazo abierto tiene la desventaja de tener que calcular el
estado inicial cada vez que se utilice el estimador.

                                                38
Figura 3.10: Observador a lazo abierto



3.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 es
de orden reducido.




                                              39
40
Cap´
   ıtulo 4


Implementaci´n
            o

   La aplicaci´n que se presenta en este cap´
              o                             ıtulo permite la simulaci´n del comportamiento
                                                                     o
f´
 ısico de un sistema din´mico, sistema que evoluciona con el tiempo. Dicha aplicaci´n ha sido
                        a                                                          o
desarrollada en forma de applet Java utilizando la programaci´n orientada a objetos. Para ello,
                                                             o
se 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 del
p´ndulo invertido de un modo visual, permitiendo al usuario interactuar sobre ´l en tiempo real.
 e                                                                            e
Gracias a la portabilidad que Java ofrece, es posible integrar dicho applet a una p´gina Web y
                                                                                   a
visualizarlo 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
                                                                            e
as´ como el controlador capaz de estabilizarlo. La herramienta que se utiliz´ entonces para ir
  ı                                                                         o
realizando las pruebas era Matlab. El motivo de utilizar ´sta herramienta y no otra, es b´sica-
                                                         e                               a
mente, por las altas prestaciones para el c´lculo num´rico y la facilidad que Matlab ofrece a la
                                           a         e
hora de trabajar con matrices. Por este motivo, una vez terminado todo el proceso de dise˜o,
                                                                                         n
el 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
Al ejecutar el fichero puede observarse como el p´ndulo va estabiliz´ndose de forma gradual
                                                   e                  a
ante una inclinaci´n inicial de once grados. El resultado final es el mostrado en la siguiente
                  o
gr´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-
                                 o
tivo es la comprobaci´n del correcto funcionamiento del regulador. No obstante, en internet se
                     o
pueden encontrar ejemplos de reguladores que muestran al usuario una simulaci´n m´s comple-
                                                                             o   a
ta, donde, no solo se puede comprobar el estado del p´ndulo sino tambi´n la fuerza aplicada al
                                                     e                e
carro as´ como el ´ngulo y la posici´n que ´ste mantiene en cada momento (v´ase Ap´ndice B).
        ı         a                 o      e                               e      e
Por usar un ejemplo, a continuaci´n se muestra la simulaci´n de un p´ndulo invertido que parte
                                 o                        o         e
de inclinaci´n de 15o :
            o



                                              42
Figura 4.2: Representaci´n alternativa en Matlab
                        o




      Figura 4.3: Fuerza aplicada al carro


                      43
´
                             Figura 4.4: Angulo y posici´n del carro
                                                        o




4.2.     Conversi´n ’Matlab to Java’
                 o

   Una vez obtenido el c´digo en Matlab y comprobada su correcta funcionalidad, se ha deci-
                        o
dido portarlo a Java. El motivo de esta decisi´n, es la intenci´n de integrar la aplicaci´n applet
                                              o                o                         o
en un servidor Web. De este modo, se facilita su acceso desde cualquier equipo con acceso a
internet 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
                                                                            o
trabaj´ 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 el
problema, es necesario acudir a librer´ creadas por terceros que implementan con ´xito las
                                      ıas                                        e
operaciones b´sicas con las que se va a trabajar. En el “Cap´
             a                                              ıtulo 5. Librer´
                                                                           ıas” se detalla cada
una de las librer´ utilizadas, as´ como que funcionalidad tiene cada una de ellas y cu´l se ha
                 ıas             ı                                                    a

                                               44
adaptado mejor a las necesidades del proyecto.



      En lo que respecta a las funciones de control, al igual que el problema de las matrices, no
existen en Java funciones ya creadas con las que se pueda trabajar. Esto crea la necesidad de
empezar desde cero aquellas funciones que sean necesarias. Para el proyecto en cuesti´n ha sido
                                                                                     o
necesario crear:



        - Funci´n c2d.
               o
        - Funci´n expm.
               o
        - Funci´n dlqr.
               o




4.2.1.      Funci´n c2d
                 o


      La funci´n “continuous to discrete” (c2d) es necesaria para obtener la discretizaci´n del sis-
              o                                                                          o
tema cont´
         ınuo en espacio de estados. El c´digo fuente puede obtenerse del fichero c2d.m donde
                                         o
principalmente 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
              o
argumento t que es el tiempo de muestreo. Como argumentos de salida devuelve dos matrices
Phi y Gamma que son las que se utilizar´n posteriormente para el observador y el c´lculo
                                       a                                          a
del regulador ´ptimo. La principal complicaci´n de esta funci´n es la obtenci´n de la matriz s
              o                              o               o               o
resultante de la llamada a expm.

                                                  45
4.2.2.    Funci´n expm
               o

   Es utilizada desde la funci´n c2d. El c´digo fuente puede obtenerse del fichero Matlab
                              o           o
expm.m. Echando un vistazo al c´digo, ´ste puede parecer un poco engorroso, no obstante,
                               o      e
la 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
                              o
la matriz X y D es la matriz con los eigenvalues. Matlab cuenta con una funci´n llamada eig()
                                                                             o
que devuelve las dos matrices (V,D) con el resultado. En el caso de Java, esta funci´n viene
                                                                                    o
incorporada en la librer´ Jama de modo que no ha sido necesario implementarla.
                        ıa




4.2.3.    Funci´n dlqr
               o

   Al igual que anteriores casos, ha sido necesario crearse una funci´n partiendo desde cero. En
                                                                     o
este caso se trata de la funci´n dlqr, la cu´l, en Matlab se encarga de obtener el regulador lqr
                              o             a
o
´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
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
                  o

4.3.1.    Dise˜ o
              n

   El applet a desarrollar es un peque˜o programa hecho en Java que puede incrustarse en un
                                      n
documento HTML lo que permite crear programas que cualquier usuario puede ejecutar desde
su navegador. En el dise˜o del applet, Java proporciona dos paquetes gr´ficos: AWT y Swing. En
                        n                                              a
la aplicaci´n se ha decidido utilizar Swing por tener mayor cantidad de controles y componentes
           o
prefabricados que facilitan el dise˜o a la vez que enriquecen la interfaz.
                                   n



Panel par´metros actuales
         a


   La funcionalidad de este panel reside en mostrar al usuario los par´metros actuales con los
                                                                      a
que el p´ndulo est´ en ese momento. El valor de cada par´metro es editable lo que permite hacer
        e         a                                     a
una simulaci´n bajo distintas situaciones.
            o




                                Figura 4.5: Par´metros p´ndulo
                                               a        e


                                                47
Panel Iniciar/Detener

   Sirve para iniciar o detener la simulaci´n del p´ndulo. Para introducir nuevos valores en el
                                           o       e
panel 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
                                                          e



Panel 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                              a
autom´tico, el p´ndulo se ejecuta con los par´metros del panel “Par´metros actuales”, en modo
     a          e                            a                     a
manual, se controla mediante la barra de scroll. Inicialmente el p´ndulo aparece estabilizado
                                                                  e
formando un ´ngulo de 90o respecto al carro.
            a




                        Figura 4.7: Panel control Autom´tico/Manual
                                                       a




                                               48
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           e



Panel de dibujo

   Fijado en la parte superior del applet es la zona donde aparece representado el p´ndulo.
                                                                                    e
Est´ 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
Interaz del applet

   La vista completa de la interfaz queda de la siguiente forma:




                                 Figura 4.10: Interfaz applet




                                              50
4.3.2.   C´digo
          o


   El applet se ha creado en un fichero de tipo “Visual Class” llamado “simulador.java”que
permite el dise˜o de la interfaz de forma visual, generando autom´ticamente el c´digo de los
               n                                                 a              o
objetos 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                   e
del mismo. Adem´s, se utiliza el m´todo para establecer un tama˜o fijo de la ventana (800x600).
               a                  e                            n
Por otro lado, se crea un hilo independiente llamado “Timer” que se encargar´ de todo el c´culo
                                                                            a             a
num´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-
                                                       e
cretizaci´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           e
cada instante de tiempo. Tras cada iteraci´n, el hilo se duerme durante un periodo de 2 milise-
                                          o
gundos, tiempo suficiente para que el otro hilo pueda refrescar la imagen con los nuevos valores.




                                              51
52
Cap´
   ıtulo 5


Librer´
      ıas

   En este cap´
              ıtulo se presentan las distintas librer´ utilizadas durante el proyecto. En cap´
                                                     ıas                                     ıtu-
los anteriores, se mencionaba la necesidad de recurrir a ´stas librer´ para solventar las deficien-
                                                         e           ıas
cias de Java respecto al tratamiento con matrices. En secciones siguientes se describe brevemente
en que consiste cada una de ellas. Aunque solo Jama ha sido implantada finalmente en el proyec-
to, las dem´s se incluyen porque en un principio se estudi´ la posibilidad de comunicar el applet
           a                                              o
con Matlab para que este ultimo se encargara del c´lculo num´rico.
                         ´                        a         e



5.1.     Librer´ Jama
               ıa

   Se trata de un paquete b´sico de ´lgebra lineal que ofrece clases de nivel de usuario para con-
                           a        a
struir y manipular matrices reales. Tiene como objetivo servir como matriz de la clase est´ndar
                                                                                          a
para Java. La librer´ ha sido desarrollada por The MathWorks y por el Instituto Nacional de
                    ıa
Est´ndares y Tecnolog´ “National Institute of Standards and Technology”, NIST.
   a                 ıa
Jama se compone de seis clases Java:

       - CholeskyDecomposition.
       - EigenvalueDecomposition.
       - LUDecomposition.
       - Matrix.
       - QRDecomposition.
       - SingularValueDecomposition.



                                               53
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido
Penduloinvertido

Más contenido relacionado

La actualidad más candente (15)

Criptografia (1)
Criptografia (1)Criptografia (1)
Criptografia (1)
 
Vba excel numericos
Vba excel numericosVba excel numericos
Vba excel numericos
 
Curso logica digital unam
Curso logica digital unamCurso logica digital unam
Curso logica digital unam
 
R manual
R manualR manual
R manual
 
Manual cpp
Manual cppManual cpp
Manual cpp
 
Física i [usach]
Física i [usach]Física i [usach]
Física i [usach]
 
Muestreo y reconstruccion UPTC 2011
Muestreo y reconstruccion UPTC 2011Muestreo y reconstruccion UPTC 2011
Muestreo y reconstruccion UPTC 2011
 
Criptografia
CriptografiaCriptografia
Criptografia
 
8.1. libro tierras
8.1. libro tierras8.1. libro tierras
8.1. libro tierras
 
VXC: Computer Vision
VXC: Computer VisionVXC: Computer Vision
VXC: Computer Vision
 
Mecánica clásica [usach]
Mecánica clásica [usach]Mecánica clásica [usach]
Mecánica clásica [usach]
 
Algoritmos y estructura_de_datos
Algoritmos y estructura_de_datosAlgoritmos y estructura_de_datos
Algoritmos y estructura_de_datos
 
Esquemas iterativos en paralelo con OpenMP
Esquemas iterativos en paralelo con OpenMPEsquemas iterativos en paralelo con OpenMP
Esquemas iterativos en paralelo con OpenMP
 
Fisica y Quimica - Mecanica cuantica I
Fisica y Quimica - Mecanica cuantica IFisica y Quimica - Mecanica cuantica I
Fisica y Quimica - Mecanica cuantica I
 
Documento_Diaz_de_Argandona_Ignacio
Documento_Diaz_de_Argandona_IgnacioDocumento_Diaz_de_Argandona_Ignacio
Documento_Diaz_de_Argandona_Ignacio
 

Destacado

Fotos ecos 25 – 88
Fotos ecos 25 – 88Fotos ecos 25 – 88
Fotos ecos 25 – 88
gounougaya
 
Conquistadores - Cyrela
Conquistadores - CyrelaConquistadores - Cyrela
Conquistadores - Cyrela
Grupo Phocus
 
La historia de las cosas
La historia de las cosasLa historia de las cosas
La historia de las cosas
ivanaguero
 
La innovación técnica y el desarrollo sustentable
La innovación técnica y el desarrollo sustentableLa innovación técnica y el desarrollo sustentable
La innovación técnica y el desarrollo sustentable
viridianaruizmata
 
Mis ninfas, cuando eran pollitos
Mis ninfas, cuando eran pollitosMis ninfas, cuando eran pollitos
Mis ninfas, cuando eran pollitos
didocarmencita
 
Cuadro de receña
Cuadro de receñaCuadro de receña
Cuadro de receña
Mayra Salas
 
Prod2 actividad3
Prod2 actividad3Prod2 actividad3
Prod2 actividad3
florjesma
 

Destacado (20)

Jdownloader
JdownloaderJdownloader
Jdownloader
 
Trabajo docente
Trabajo docenteTrabajo docente
Trabajo docente
 
Panel de expertos2: "Entornos 2.0 de interacción"
Panel de expertos2: "Entornos 2.0 de interacción"Panel de expertos2: "Entornos 2.0 de interacción"
Panel de expertos2: "Entornos 2.0 de interacción"
 
Xeo
XeoXeo
Xeo
 
Deber de jhon granados
Deber de jhon granadosDeber de jhon granados
Deber de jhon granados
 
Fotos ecos 25 – 88
Fotos ecos 25 – 88Fotos ecos 25 – 88
Fotos ecos 25 – 88
 
Malware
MalwareMalware
Malware
 
Conquistadores - Cyrela
Conquistadores - CyrelaConquistadores - Cyrela
Conquistadores - Cyrela
 
Revelación de Orígenes en Adopción
Revelación de Orígenes en AdopciónRevelación de Orígenes en Adopción
Revelación de Orígenes en Adopción
 
El sistema solar
El sistema solarEl sistema solar
El sistema solar
 
La historia de las cosas
La historia de las cosasLa historia de las cosas
La historia de las cosas
 
Quinto de ciencias
Quinto de cienciasQuinto de ciencias
Quinto de ciencias
 
¿Por qué las organizaciones no saben aprender? parte 4
¿Por qué las organizaciones no saben aprender? parte 4¿Por qué las organizaciones no saben aprender? parte 4
¿Por qué las organizaciones no saben aprender? parte 4
 
Gestionar el conocimiento para sobrevivir 6
Gestionar el conocimiento para sobrevivir 6Gestionar el conocimiento para sobrevivir 6
Gestionar el conocimiento para sobrevivir 6
 
La innovación técnica y el desarrollo sustentable
La innovación técnica y el desarrollo sustentableLa innovación técnica y el desarrollo sustentable
La innovación técnica y el desarrollo sustentable
 
Mis ninfas, cuando eran pollitos
Mis ninfas, cuando eran pollitosMis ninfas, cuando eran pollitos
Mis ninfas, cuando eran pollitos
 
Cuadro de receña
Cuadro de receñaCuadro de receña
Cuadro de receña
 
Grupo Scout Encuentro
Grupo Scout EncuentroGrupo Scout Encuentro
Grupo Scout Encuentro
 
T u t o r i a l
T u t o r i a lT u t o r i a l
T u t o r i a l
 
Prod2 actividad3
Prod2 actividad3Prod2 actividad3
Prod2 actividad3
 

Similar a Penduloinvertido (20)

Rarepaso
RarepasoRarepaso
Rarepaso
 
Memoria
MemoriaMemoria
Memoria
 
Fibras opticas
Fibras opticasFibras opticas
Fibras opticas
 
Real Surfaces
Real SurfacesReal Surfaces
Real Surfaces
 
Matematicas
MatematicasMatematicas
Matematicas
 
Guia de mate
Guia de mateGuia de mate
Guia de mate
 
GUIA UCV
GUIA UCVGUIA UCV
GUIA UCV
 
Teoria de la medida
Teoria de la medidaTeoria de la medida
Teoria de la medida
 
Econometria aplicada con gretl
Econometria aplicada con gretlEconometria aplicada con gretl
Econometria aplicada con gretl
 
Fundamentos de-calculo
Fundamentos de-calculoFundamentos de-calculo
Fundamentos de-calculo
 
Introduccion poo con_java
Introduccion poo con_javaIntroduccion poo con_java
Introduccion poo con_java
 
Fractales.minimonograph
Fractales.minimonographFractales.minimonograph
Fractales.minimonograph
 
Redestelecomunicacion
RedestelecomunicacionRedestelecomunicacion
Redestelecomunicacion
 
Apuntes fi2001rmm201002
Apuntes fi2001rmm201002Apuntes fi2001rmm201002
Apuntes fi2001rmm201002
 
Vba excel mnumericos1
Vba excel mnumericos1Vba excel mnumericos1
Vba excel mnumericos1
 
Vba excel mnumericos
Vba excel mnumericosVba excel mnumericos
Vba excel mnumericos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Apuntes
ApuntesApuntes
Apuntes
 
Tutorial de maxima
Tutorial de maximaTutorial de maxima
Tutorial de maxima
 
Calculo diferencial
Calculo diferencialCalculo diferencial
Calculo diferencial
 

Penduloinvertido

  • 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
  • 3. ´ Indice general 1. Introducci´n o 7 1.1. Descripci´n del p´ndulo invertido . . . . . . . . . . . . . . . . . . . . . . . . . . . o e 7 1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2. 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 18 3. 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. 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 51 5. Librer´ ıas 53 5.1. Librer´ Jama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıa 53 5.2. Librer´ Ejml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıa 54 5.3. Librer´ JMathLib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıa 55 Ap´ndices e 58 A. Pendulo.m 61 B. Simulaci´n alternativa.m o 67 C. C´digo fuente applet o 73 D. Regulador 87 4
  • 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. 4.9. Panel de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.10. Interfaz applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6
  • 7. Cap´ ıtulo 1 Introducci´n o El p´ndulo invertido es conocido por ser uno de los problemas m´s importantes y cl´sicos de e a a la teor´ de control. Se trata de un control inestable y no lineal. A menudo, es utilizado como ıa ejemplo acad´mico, principalmente por ser un sistema de control m´s accesible, y por otro lado, e a permite mostrar las principales diferencias de control de bucle abierto y de su estabilizaci´n a o bucle cerrado. Pese a existir diferentes t´cnicas a la hora de dise˜ar el regulador ´ptimo capaz e n o de estabilizar el p´ndulo, no todas representan la mejor opci´n. En la presente memoria se e o analizar´n alguno de los m´todos m´s conocidos. a e a 1.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 a tado un p´ndulo que puede girar libremente. El carro est´ controlado por un servomotor y su e a principal funci´n es la de aplicar fuerzas al p´ndulo. Como la finalidad de este proyecto es dar o e la posibilidad de ejecutar el algoritmo de control en un sistema real (como, por ejemplo, un Segway), implica que el carro puede desplazarse sin limitaci´n alguna, es decir, que si estuviese o montado 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 e abajo; y otro inestable, arriba. El objetivo del control es cambiar la din´mica del sistema para a que en la posici´n vertical, arriba, se tenga un punto de equilibrio estable. En otras palabras, la o idea es encontrar la fuerza que ha de aplicarse al carro para que el p´ndulo no se caiga, incluso e 7
  • 8. si se le perturba con un empuj´n tipo escalera o impulso. o Figura 1.1: Esquema p´ndulo invertido e 1.2. Objetivos El proyecto que se presenta a continuaci´n permite la simulaci´n del comportamiento f´ o o ısico de un sistema din´mico que evoluciona con el tiempo. El objetivo es dise˜ar un sistema de control a n o ´ptimo que permita estabilizar un p´ndulo invertido asi como el desarrollo de una aplicaci´n ca- e o paz de simularlo. Los sistemas de control requieren del hardware adecuado para obtener los datos de 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 o facilita su ejecuci´n desde cualquier navegador web. Sin embargo, para el dise˜o del regulador se o n ha 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 e mente en la parte superior, por lo que no se contempla el algoritmo encargado de levantar el p´ndulo y lograr estabilizarlo en su posici´n vertical. e o 8
  • 9. Cap´ ıtulo 2 Modelado 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 a comportamiento f´ ısico del sistema. Para modelar el sistema existen dos estrategias. La primera es tratar al sistema como un “caja negra” y realizar sobre ´l un conjunto de acciones (se˜ales de e n entrada) observando c´mo se comporta (estudiar las salidas) deduciendo un modelo matem´tico o a para ´ste. Un ejemplo ser´ la t´cnica de Ziegler-Nichols. La segunda consiste en estudiar los e ıa e procesos 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 o 2.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 n del sistema correcto. Hallarlo es una tarea complicada, y por ello, a menudo es necesario recurrir a la sencillez. En el caso del p´ndulo, se consigue con el an´lisis por separado de cada uno de e a los cuerpos. 9
  • 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 movimiento se limita a dos dimensiones. Las ecuaciones fundamentales de movimiento plano de un cuerpo r´ ı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 o obtiene 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 a informaci´n util. Por otro lado, sumando las fuerzas en el diagrama de cuerpo libre del p´ndulo o ´ e en 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 o este sistema: x ˙ ¨ ˙ (M + m)¨ + bx + mlθcosθ − mlθ2 sinθ = F (2.6) 10
  • 11. Para obtener la segunda ecuaci´n del movimiento, es necesario sumar las fuerzas perpendi- o culares 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 o sobre el centroide del p´ndulo para obtener la primera ecuaci´n (2.8) mostrada a continuaci´n. e o o Finalmente, 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 que theta = Pi + ø, donde ø representa un peque˜o ´ngulo en la direcci´n vertical. Por lo tanto, las n a o dos 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 e matem´ticos a trav´s de los cuales se conoce el comportamiento de estos sistemas frente a valores a e concretos. Esto es lo que permite la funci´n de transferencia. Se trata de un modelo matem´tico o a que a trav´s de un cociente relaciona la respuesta de un sistema (salida) a una se˜al de entrada e n o 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. Donde H(s) es la funci´n de transferencia (tambi´n denotada como G(s)). Y(s) es la trans- o e formada 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 o las ecuaciones del sistema linealizado, se ha de tomar primero la transformada de Laplace de las ecuaciones 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 a ecuaci´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 s Reordenando 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)2 De la funci´n de transferencia de arriba puede verse que hay un polo y un cero en el origen. o Estos 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. En este punto ya se tiene calculada la funci´n de transferencia que representa al sistema f´ o ısico del p´ndulo invertido. Mediante esta ecuaci´n ya se puede realizar pruebas para comprobar si e o el sistema es estable a lazo abierto (v´ase 2.4 “Respuesta a lazo abierto”) e 2.3. Ecuaci´n de estado o El espacio de estados es otro m´todo que permite modelar un sistema f´ e ısico. Se representa por un conjunto de entradas, salidas y variables de estado relacionadas por ecuaciones diferenciales de primer orden que se combinan en una ecuaci´n diferencial matricial de primer orden. A esta o representaci´n se le llama ecuaci´n de estado. Una forma general de expresar la din´mica de un o o a sistema 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 orden n. u es el vector de entrada y contiene m elementos. y contiene p elementos y es el vector de salida. A, de dimensi´n n x n es la matriz del sistema. B, de dimensi´n n x m es la matriz de o o entrada. 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- o terno del sistema, adem´s de que se puede trabajar con sistemas cuyas condiciones iniciales sean a diferentes de cero. Otra ventaja es que se facilita el dise˜o asistido por computadora, ya que los n paquetes 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 o carro, primera derivada, posici´n del ´ngulo y su derivada). En el caso del vector y se ha con- o a siderado que el p´ndulo consta de tres sensores, uno para la posici´n del carro r, otro para el e o a ´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 o de C y D (donde D=0). 13
  • 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 ˙ o poder representarla como ecuaci´n de estado lineal debe tener la siguiente forma: o n xi = ˙ aij xj + bi u (2.24) j=1 Donde 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=0 Al calcular las derivadas parciales y hacer β = ΘM − α2 se tiene: 14
  • 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=0 Para 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. 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. 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: o 11 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. 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.31 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 p = i *( M + m ) + M * m * l ^2; %denominador para las matrices A y B 18
  • 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 o 21 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. Se observa la salida donde la l´ ınea azul representa la posici´n del carro y la l´ o ınea verde el ´ngulo a del p´ndulo. Al igual que en la figura anterior, para mejorar la din´mica del sistema es necesario e a incluir 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. Cap´ ıtulo 3 Estabilizaci´n del p´ndulo o e Llegados a este punto se ha comprobado que la din´mica del sistema por si sola no es a capaz 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 e no se desestabilice. Existen distintos m´todos para dise˜ar un regulador. En este cap´ e n ıtulo se abordar´ concretamente el dise˜o en espacio de estados mediante la creaci´n de un regulador a n o LQR. Tambi´n se mostrar´ otras tres posibles soluciones al problema del p´ndulo invertido, e a e mediante el m´todo del Lugar de las Ra´ e ıces, haciendo uso de un control PID, y con el m´todo e de respuesta en frecuencia. 3.1. Controlador PID Los controladores PID han logrado colocarse en un sector importante en la industria pues han demostrado ser muy robusto para muchas de sus aplicaciones. El objetivo de este apartado es lograr dise˜ar un PID capaz de estabilizar el p´ndulo invertido y analizar posteriormente si n e el controlador dise˜ado ser´ el m´s adecuado para el sistema. n a a 3.1.1. Estructura La estructura de un controlador PID es simple pero en ocasiones su sencillez puede ser tambi´n su debilidad. Considerando un lazo de control de una entrada y una salida (SISO) de e un grado de libertado obtenemos el siguiente diagrama: 21
  • 22. Figura 3.1: Diagrama en bloques A diferencia del cap´ ıtulo anterior, ahora se est´ trabajando con sistemas a lazo cerrado, es a decir, con realimentaci´n. Donde restando el valor de la referencia a la salida anterior se obtiene o el error que el PID ir´ tratando hasta que sea nulo. Los miembros de la familia de controladores a PID, incluyen tres acciones: proporcional (P), integral (I) y derivativa (D). Estos controladores son 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. 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 s 3.1.2. Dise˜ o PID n El objetivo de este apartado es calcular manualmente la funci´n de transferencia que repre- o sente el regulador ´ptimo. Normalmente, el procedimiento v´lido a la hora de dise˜ar un PID o a n es comenzar utilizando s´lo el control proporcional. De forma que el diagrama de bloques ser´ o ıa: Figura 3.2: Regulador P 23
  • 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 o habr´ que sustituirlo por 1 - Ku G(z). Para entender mejor la teor´ a continuaci´n, se detalla ıa ıa, o un ejemplo manual sencillo. En el caso del p´ndulo invertido se har´ uso de la herramienta e a Matlab 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 e B´sicamente consiste en lograr unos valores para la I (integral) y D (derivados) de modo que la a ganancia 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 T Para 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 /8 Donde, 2π 1 β Tu = Wu = arctg Wu T α 24
  • 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 denominador para despejar Ku: 1 + KuG(z) = 0 (3.5) 1 1 + Ku =0 (3.6) z2 − 0, 87 El siguiente paso ser´ resolver la ecuaci´n de segundo grado manteniendo la inc´gnita Ku y a o o forzando 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) 4 Finalmente, 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. • 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 o para 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 necesario continuar. No obstante, se va a detallar como obtener la ecuaci´n en diferencia, es decir, sacar o la expresi´n capaz de ser interpretada por un ordenador.El procedimiento a seguir ser´ obtener o a la antitransformada a partir de la f.d.t calculada en el anterior apartado. 26
  • 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; 7 8 q = ( M + m ) *( i + m * l ^2) -( m * l ) ^2; %simplifica entrada 9 10 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. 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. Figura 3.3: PID: Respuesta ante impulso de entrada Como se observa la respuesta a´n no es estable. Como primera prueba, se incrementa la pro- u porcional 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 cercano a los 2 segundos. Adem´s, el error estacionario es cero, as´ que no es necesario ning´n control a ı u integral. 29
  • 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. 13 kd = 20; 14 k = 100; 15 ki = 1; 16 numPID = [ kd k ki ]; 17 denPID = [1 0]; 18 19 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. 3.2. Regulador LQR La ventaja de tener el sistema representado en el espacio de estados es que el dise˜o de n un controlador LQR resulta m´s sencillo. La idea es establecer una retroalimentaci´n completa a o mediante una combinaci´n lineal de las variables de estado. A pesar de ser lo ideal, la realidad o es que el estado que se mide no es completo, por lo que ser´ conveniente utilizar un observador ıa de orden reducido para estimar parte del estado. En este caso, se asume que todos los estados son medibles. El resultado final del algoritmo de control ser´ el siguiente: ıa Figura 3.7: Regulador LQR 3.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 n proceso de dise˜o es encontrar el vector K que determina la ley de control para la realimentaci´n. n o Esto puede hacerse de varias formas. La primera opci´n es asignar arbitrariamente el patr´n de o o polos que se desee que tenga el sistema en lazo cerrado. Y la otra opci´n es hacer uso de un o control ´ptimo variable en el tiempo. En este caso la opci´n elegida es un control ´ptimo LQR. o o o Se trata de minimizar la funci´n: o N J= Xn (k)QXn (k) + uT (k)Ru(k) T (3.17) k=0 32
  • 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 T de 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- ıa bilidad es una matriz diagonal, cuyos elementos sean positivos). A trav´s de Q se puede elegir e T el peso que tiene cada estado en la funci´n J. Se puede conceptualizar Xn (k)QXn (k), como o una x2 (la energ´ normalizada) en un sistema con una sola variable. Como en este caso u(k) ıa contiene un s´lo elemento, R ≥ 0 es un elemento que indica el peso que se le quiere dar a la o energ´ asociada con la se˜al de control. ıa n La 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 e es dif´ de obtener, solo mencionar que la soluci´n resulta de una ley de control variable en ıcil o tiempo: u(k) = −K(k)Xn (k) Para sistemas con coeficientes constantes, K(k) permanece fija durante un periodo de tiempo y luego decae a cero. Si se hace N → ∞ en 3.13 entonces la ganancia del controlador permanece fija todo el tiempo: K(k) = K El valor exacto de J no es relevante, solo se pretende encontrar la K que asegure que sea m´ ı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 a en la funci´n de costo que se esta tratando de optimizar. El caso m´s simple es considerar R=1 o a y proponer Q a partir de ah´ ı. 33
  • 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: e 1 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. 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. a 1 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 ]; 13 14 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. 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 e posici´n del carro en metros. Como se puede ver, este gr´fico no es satisfactorio. Los sobrepicos o a del p´ndulo y del carro parecen estar bien, pero debe mejorarse sus tiempos de asentamiento, y e debe 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 o de hecho se ha movido en la direcci´n contraria. Este error ser´ tratado en la secci´n siguiente, o a o en 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. 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 a pero tambi´n ser´ mayores los esfuerzos de control usados. La respuesta del sistema tiene un e ıan tiempo de establecimiento por debajo de los 2 segundos. Llegados a este punto se ha cumplido el objetivo de dise˜ar un regulador capaz de estabilizar tanto el ´ngulo del p´ndulo como la n a e posici´n del carro. o 37
  • 38. 3.3. Observadores En el control con realimentaci´n de estados se asum´ la disponibilidad de las variables de o ıa estado. En la pr´ctica este caso no siempre es posible, ya sea porque ciertos estados no son a medibles, bien porque es muy dif´ o muy caro medirlos. Para implementar una realimentaci´n ıcil o completa de estados, entonces, es necesario a˜adir un dispositivo din´mico, llamado observador n a o estimador de estados, cuya salida sea una estimaci´n del vector de estados. En esta secci´n o o se introduce observadores de orden completo, donde el observador tiene el mismo orden que la planta,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) ˆ x Esta duplicaci´n es un observador a lazo abierto, donde si se tuvieran las mismas condiciones o inciales, entonces para toda entrada u(t) se tiene que x(t)=x(t), ∀T ≥ 0. B´sicamente si el ˆ a sistema es observable se puede utilizar un observador en lazo abierto para estimar el vector de estados. Sin embargo, el observador en lazo abierto tiene la desventaja de tener que calcular el estado inicial cada vez que se utilice el estimador. 38
  • 39. Figura 3.10: Observador a lazo abierto 3.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 es de orden reducido. 39
  • 40. 40
  • 41. Cap´ ıtulo 4 Implementaci´n o La aplicaci´n que se presenta en este cap´ o ıtulo permite la simulaci´n del comportamiento o f´ ısico de un sistema din´mico, sistema que evoluciona con el tiempo. Dicha aplicaci´n ha sido a o desarrollada en forma de applet Java utilizando la programaci´n orientada a objetos. Para ello, o se 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 del p´ndulo invertido de un modo visual, permitiendo al usuario interactuar sobre ´l en tiempo real. e e Gracias a la portabilidad que Java ofrece, es posible integrar dicho applet a una p´gina Web y a visualizarlo 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 e as´ como el controlador capaz de estabilizarlo. La herramienta que se utiliz´ entonces para ir ı o realizando las pruebas era Matlab. El motivo de utilizar ´sta herramienta y no otra, es b´sica- e a mente, por las altas prestaciones para el c´lculo num´rico y la facilidad que Matlab ofrece a la a e hora de trabajar con matrices. Por este motivo, una vez terminado todo el proceso de dise˜o, n el 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. Al ejecutar el fichero puede observarse como el p´ndulo va estabiliz´ndose de forma gradual e a ante una inclinaci´n inicial de once grados. El resultado final es el mostrado en la siguiente o gr´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- o tivo es la comprobaci´n del correcto funcionamiento del regulador. No obstante, en internet se o pueden encontrar ejemplos de reguladores que muestran al usuario una simulaci´n m´s comple- o a ta, donde, no solo se puede comprobar el estado del p´ndulo sino tambi´n la fuerza aplicada al e e carro as´ como el ´ngulo y la posici´n que ´ste mantiene en cada momento (v´ase Ap´ndice B). ı a o e e e Por usar un ejemplo, a continuaci´n se muestra la simulaci´n de un p´ndulo invertido que parte o o e de inclinaci´n de 15o : o 42
  • 43. Figura 4.2: Representaci´n alternativa en Matlab o Figura 4.3: Fuerza aplicada al carro 43
  • 44. ´ Figura 4.4: Angulo y posici´n del carro o 4.2. Conversi´n ’Matlab to Java’ o Una vez obtenido el c´digo en Matlab y comprobada su correcta funcionalidad, se ha deci- o dido portarlo a Java. El motivo de esta decisi´n, es la intenci´n de integrar la aplicaci´n applet o o o en un servidor Web. De este modo, se facilita su acceso desde cualquier equipo con acceso a internet 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 o trabaj´ 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 el problema, es necesario acudir a librer´ creadas por terceros que implementan con ´xito las ıas e operaciones b´sicas con las que se va a trabajar. En el “Cap´ a ıtulo 5. Librer´ ıas” se detalla cada una de las librer´ utilizadas, as´ como que funcionalidad tiene cada una de ellas y cu´l se ha ıas ı a 44
  • 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, no existen en Java funciones ya creadas con las que se pueda trabajar. Esto crea la necesidad de empezar desde cero aquellas funciones que sean necesarias. Para el proyecto en cuesti´n ha sido o necesario crear: - Funci´n c2d. o - Funci´n expm. o - Funci´n dlqr. o 4.2.1. Funci´n c2d o La funci´n “continuous to discrete” (c2d) es necesaria para obtener la discretizaci´n del sis- o o tema cont´ ınuo en espacio de estados. El c´digo fuente puede obtenerse del fichero c2d.m donde o principalmente 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 o argumento t que es el tiempo de muestreo. Como argumentos de salida devuelve dos matrices Phi y Gamma que son las que se utilizar´n posteriormente para el observador y el c´lculo a a del regulador ´ptimo. La principal complicaci´n de esta funci´n es la obtenci´n de la matriz s o o o o resultante de la llamada a expm. 45
  • 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 o expm.m. Echando un vistazo al c´digo, ´ste puede parecer un poco engorroso, no obstante, o e la 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 o la matriz X y D es la matriz con los eigenvalues. Matlab cuenta con una funci´n llamada eig() o que devuelve las dos matrices (V,D) con el resultado. En el caso de Java, esta funci´n viene o incorporada en la librer´ Jama de modo que no ha sido necesario implementarla. ıa 4.2.3. Funci´n dlqr o Al igual que anteriores casos, ha sido necesario crearse una funci´n partiendo desde cero. En o este caso se trata de la funci´n dlqr, la cu´l, en Matlab se encarga de obtener el regulador lqr o a o ´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. 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 o 4.3.1. Dise˜ o n El applet a desarrollar es un peque˜o programa hecho en Java que puede incrustarse en un n documento HTML lo que permite crear programas que cualquier usuario puede ejecutar desde su navegador. En el dise˜o del applet, Java proporciona dos paquetes gr´ficos: AWT y Swing. En n a la aplicaci´n se ha decidido utilizar Swing por tener mayor cantidad de controles y componentes o prefabricados que facilitan el dise˜o a la vez que enriquecen la interfaz. n Panel par´metros actuales a La funcionalidad de este panel reside en mostrar al usuario los par´metros actuales con los a que el p´ndulo est´ en ese momento. El valor de cada par´metro es editable lo que permite hacer e a a una simulaci´n bajo distintas situaciones. o Figura 4.5: Par´metros p´ndulo a e 47
  • 48. Panel Iniciar/Detener Sirve para iniciar o detener la simulaci´n del p´ndulo. Para introducir nuevos valores en el o e panel 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 e Panel 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 a autom´tico, el p´ndulo se ejecuta con los par´metros del panel “Par´metros actuales”, en modo a e a a manual, se controla mediante la barra de scroll. Inicialmente el p´ndulo aparece estabilizado e formando un ´ngulo de 90o respecto al carro. a Figura 4.7: Panel control Autom´tico/Manual a 48
  • 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 e Panel de dibujo Fijado en la parte superior del applet es la zona donde aparece representado el p´ndulo. e Est´ 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. Interaz del applet La vista completa de la interfaz queda de la siguiente forma: Figura 4.10: Interfaz applet 50
  • 51. 4.3.2. C´digo o El applet se ha creado en un fichero de tipo “Visual Class” llamado “simulador.java”que permite el dise˜o de la interfaz de forma visual, generando autom´ticamente el c´digo de los n a o objetos 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 e del mismo. Adem´s, se utiliza el m´todo para establecer un tama˜o fijo de la ventana (800x600). a e n Por otro lado, se crea un hilo independiente llamado “Timer” que se encargar´ de todo el c´culo a a num´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- e cretizaci´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 e cada instante de tiempo. Tras cada iteraci´n, el hilo se duerme durante un periodo de 2 milise- o gundos, tiempo suficiente para que el otro hilo pueda refrescar la imagen con los nuevos valores. 51
  • 52. 52
  • 53. Cap´ ıtulo 5 Librer´ ıas En este cap´ ıtulo se presentan las distintas librer´ utilizadas durante el proyecto. En cap´ ıas ıtu- los anteriores, se mencionaba la necesidad de recurrir a ´stas librer´ para solventar las deficien- e ıas cias de Java respecto al tratamiento con matrices. En secciones siguientes se describe brevemente en que consiste cada una de ellas. Aunque solo Jama ha sido implantada finalmente en el proyec- to, las dem´s se incluyen porque en un principio se estudi´ la posibilidad de comunicar el applet a o con Matlab para que este ultimo se encargara del c´lculo num´rico. ´ a e 5.1. Librer´ Jama ıa Se trata de un paquete b´sico de ´lgebra lineal que ofrece clases de nivel de usuario para con- a a struir y manipular matrices reales. Tiene como objetivo servir como matriz de la clase est´ndar a para Java. La librer´ ha sido desarrollada por The MathWorks y por el Instituto Nacional de ıa Est´ndares y Tecnolog´ “National Institute of Standards and Technology”, NIST. a ıa Jama se compone de seis clases Java: - CholeskyDecomposition. - EigenvalueDecomposition. - LUDecomposition. - Matrix. - QRDecomposition. - SingularValueDecomposition. 53