Diseño e Implementación de un Control Òptimo LQR con la Tarjeta Raspberry Pi
104
0
0
Texto completo
(2)
(3) Diseño e implementación de un control óptimo LQR con la tarjeta Raspberry Pi Leidy Tatiana Poveda Galvis José David Martínez Velasco. Director: Ing. MsC Frank Nixon Giraldo Ramos. Trabajo de grado para optar por el título de Ingeniero en Control. Bogotá, Colombia 2016.
(4)
(5) La concepción y culminación de este proyecto contiene el aporte de muchas personas que a su manera contribuyeron, por lo tanto es menester dedicar este proyecto a una persona especial, el profesor Frank Giraldo que siempre procuró educarnos para la vida..
(6)
(7) Agradecimientos1 Tatiana Poveda A mi familia que siempre me apoyó y valoró mi preparación a pesar de las adversidades, en especial a mi hermano que supo darme su apoyo cuando más necesario fue. A los programas educativos de gobierno que permiten la inclusión social, considerando que hay muchas cosas por mejorar, haber sido formada por dicho sistema me llena de orgullo y satisfacción.. José Martínez A todas la personas que en mi proceso de formación me fortalecieron intelectual y anímicamente para culminar mis estudios de pregrado. En especial a mi Madre y mis hermanos que con sus consejos y ejemplo me prepararon con humildad y dedicación para enfrentar la vida. A mi padre que por su forzada ausencia forjó en mi, el carácter y la convicción de seguir adelante para poder logra mis objetivos y sueños. A Tatiana Poveda mi compañera de proyecto y amiga, agradecimientos especiales por que con su ayuda y dedicación este proyecto culmina satisfactoriamente.. 1 Documento. diseñado en LATEX versión 2.1.4..
(8)
(9) Resumen En este documento se describen las implicaciones prácticas y teóricas que supone la investigación correspondiente al diseño e implementación de un control óptimo LQR (Lineal Quadratic Regulator) en la tarjeta Raspberry Pi, esta técnica de control se aplica a una plataforma Stewart, identificada previamente. La planta a la cual se le implementaron las técnicas de control concernientes a este proyecto (LQR y PID -Proporcional, Integral, derivativo-) es un sistema bola y plato montado sobre una plataforma Stewart, cuyo diseño mecánico y ensamble fue llevado a cabo por los autores. Este dispositivo se encuentra clasificado entre los robots paralelos debido a que cuenta con seis brazos ubicados en diferentes puntos de la plataforma, estos tienen la función de soportarla y proporcionarle movilidad. Cada extremidad está unida a un actuador (servomotor en este caso) dispuesto allí con el fin de proveer los seis grados de libertad que la caracterizan y así variar su inclinación y rotación. La plataforma Stewart se controla con 2 técnicas de control: LQR y PID, esto con el fin de determinar con cuál de las dos se obtienen mejores resultados después de evaluar parámetros propios de la curva de reacción de la planta, tales como: máximo sobreimpulso, tiempo de estabilización, error de estado estacionario y robustez (en el caso del control óptimo). Como el título del proyecto lo especifica, tanto el desarrollo de las estrategias de control como la obtención de datos provenientes de la planta son ejecutados y procesados mediante la tarjeta Raspberry pi modelo B+, manejada con el lenguaje de programación Python cuyas líneas de código se ejecutan a través del sistema operativo Raspbian. Python cuenta con diferentes compiladores compatibles con Raspbian, este último se instaló sobre la tarjeta con el fin de controlar el módulo GPIO para así generar y recibir señales que se producen al implementar los algoritmos de control. Palabras clave: Python, Raspberry Pi, bola y plato- Plataforma Stewart, estrategias de control..
(10)
(11) Abstract In this work we will describe the practices and theoretical implications about the corresponding investigation for optimal control LQR design and implementation ( lineal quadratic regulator) in the raspberry pi card, this technique of control for a Stewart platform, it was previously simulated and identified. The plant which was implemented control techniques according to this project ( LQR and PID- proportional, integral and derivate controller) it is a ball and plant system put in a stewart platform, which mecanic and assembly design was made by the authors. This device is considered among the parallel robots because it has six arms located at different points of the platform, these have the function to support and give mobility . Each terminal is connected to an actuator (servomotor in this case) provided there in order to provide six degrees of freedom which characterize it and vary its inclination and rotation. The Stewart platform is controlled by two techniques LQR and PID with the purpose of deciding which one has better results evaluating own parameters of the reaction curve plant. Such as overshoot, stabilization time, steady – state error and sturdiness (in the case of optimal control). As the project title specified, the development of control strategies as obtaining data from the plant were executed and processed by the raspberry pi card model B+ through programming language Python its lines of Code are executed through the raspbian operation system. Python has different compatible compilers With raspbian, the last one was installed on the card in order to control the GPIO module to generate and receive signals produced by implementing control algorithms. Keywords: Python, raspberry pi, ball and plate- Stewart platform, control Strategies..
(12)
(13) Contenidos C APÍTULO 1—P RELIMINARES 1.1 I NTRODUCCIÓN. . . . . . . . . . . . . . . . . . . . . . . . . .. 1. 1.2 O BJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3. 1.2.1. General .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 3. 1.2.2. Específicos .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 3. 1.3 M ETODOLOGÍA DE DESARROLLO . . . . . . . . . . . . . . . . . . .. 4. 1.4 TARJETA DE DESARROLLO : R ASPBERRY PI . . . . . . . . . . . . . . . .. 6. 1.4.1. Lenguaje de programación Python 2.0 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 7. 1.4.2. Uso del módulo GPIO .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 8. 1.4.3. Módulo externo ADC .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 9. C APÍTULO 2—P LANTA SELECCIONADA 2.1 P LATAFORMA S TEWART UN ROBOT PARALELO . . . . . . . . . . . . . . 11 2.2 D ISEÑO Y ENSAMBLE PLATAFORMA S TEWART . . . . . . . . . . . . . . 12 2.3 C INEMÁTICA DE LA PLATAFORMA S TEWART . . . . . . . . . . . . . . . 17 2.4 A PLICACIÓN DE LA CINEMÁTICA DE LA PLATAFORMA S TEWART . . . . . . . 28 2.5 B OLA Y PLATO . . . . . . . . . . . . . . . . . . . . . . . . . . 33. C APÍTULO 3—C ONTROL PID 3.1 G ENERALIDADES . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.2 D ISCRETIZACIÓN DE LA ESTRATEGIA DE CONTROL . . . . . . . . . . . . 42 3.3 A LGORITMO DE CONTROL IMPLEMENTADO . . . . . . . . . . . . . . . 43 3.4 R ESULTADOS 3.4.1. . . . . . . . . . . . . . . . . . . . . . . . . . . 45. Experimento .. .. .. .. .. .. .. .. .. . I. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 45.
(14) C APÍTULO 4—C ONTROL LQR 4.1 G ENERALIDADES . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.1.1. Controlabilidad .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 53. 4.1.2. Observabilidad .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 54. 4.1.3. Selección de las matrices [ Q] y [ R] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 54. 4.2 O BSERVADORES DE ESTADO . . . . . . . . . . . . . . . . . . . . . 55 4.3 I MPLEMENTACIÓN LQR . . . . . . . . . . . . . . . . . . . . . . 56 4.3.1. Optimización de la ley de control .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 57. 4.3.2. Formulación del observador de estados .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 58. 4.4 C ÓDIGO LQR EN P YTHON 4.5 R ESULTADOS. .. . . . . . . . . . . . . . . . . . . . . . 59. . . . . . . . . . . . . . . . . . . . . . . . . . . 61. C APÍTULO 5—C OMPARACIÓN DE RESULTADOS 5.1 E STRATEGIAS DE CONTROL PID Y LQR. . . . . . . . . . . . . . . . . 65. 5.2 M EJORES RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . 66. C APÍTULO 6—C ONCLUSIONES A. Comunicación SSH. 69. A.1 C ONEXIÓN SSH . . . . . . . . . . . . . . . . . . . . . . . . . 69 A.1.1 Establecer ip estática en el computador. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 70. A.1.2 Establecer ip estática en la Raspberry Pi .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 70. A.1.3 Establecer conexión entre los dispositivos. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 71. A.2 U SAR GESTOR DE ARCHIVOS CON SSH . . . . . . . . . . . . . . . . . 71 A.3 P ROBLEMAS CONOCIDOS . . . . . . . . . . . . . . . . . . . . . . 73. B. Aclaraciones matemáticas. 75. B.1 I DENTIDAD SUMA DE SENO Y COSENO . . . . . . . . . . . . . . . . . 75. C. Condiciones físicas de la planta. 77. C.1 M EDICIÓN DE LAS PARTES DE LA PLATAFORMA . . . . . . . . . . . . . . 77 C.2 PWM NECESARIO PARA CADA SERVOMOTOR. B IBLIOGRAFÍA. II. . . . . . . . . . . . . . . 77.
(15) Índice de Figuras. 1.1. Diagrama de bloques para el control del sistema bola y plato montado sobre una plataforma Stewart [Autores]. . . . . . . . . . . . . . . . . . . . . . . . .. 2. 1.2. Diagrama de bloques metodología de desarrollo [Autores]. . . . . . . . . . .. 4. 1.3. Diagrama esquemático de la Raspberry Pi [Autores]. . . . . . . . . . . . . .. 7. 1.4. Diagrama esquemático del puerto GPIO Raspberry Pi modelo B [Autores].. 9. 2.1. Estructura física plataforma Stewart [Autores]. . . . . . . . . . . . . . . . . .. 12. 2.2. Dimensiones y estructura del servo motor SG90 [Autores]. . . . . . . . . . .. 13. 2.3. Pares de servomotores, posición inicial [Autores]. . . . . . . . . . . . . . . .. 14. 2.4. Vista isométrica de la pantalla táctil resistiva [Autores]. . . . . . . . . . . . .. 15. 2.5. Salidas de la pantalla táctil resistiva de 4 hilos, cada punto representa un hilo [Autores]. (a) Medida de la resistencia fija. (b) Configuración para leer la coordenada y. (c) Configuración para leer la coordenada x. . . . . . . . . .. 16. 2.6. Diagrama de Cuerpo libre para el i −ésimo brazo [1]. . . . . . . . . . . . . .. 18. 2.7. Rotación. (a) Con respecto al eje z. (b) Con respecto al eje y. (C) Con respecto al eje x. Figura basada en [1] página 1. . . . . . . . . . . . . . . . . . . . . . . .. 19. 2.8. Representaciones gráficas de la rotación del servomotor. (a) Hélice del i −ésimo servomotor anclada al i −ésimo brazo rígido S. (b) Representación cinemática del recorrido de la hélice del servomotor anclada a S. Figura basada en [1] página 3 y [2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.9. Recorrido angular de la hélice del servomotor con respecto a los tres ejes coordenados x, y y z. Figura basada en [1] páginas 4 y 5. . . . . . . . . . . . . .. 23. 2.10. Disposición física de cada par de servomotores [Autores]. . . . . . . . . . . .. 26. 2.11. Diagrama de bloques cinemática inversa plataforma Stewart [Autores]. . . .. 28. III.
(16) 2.12. Distribución espacial en las placas superior e inferior de la plataforma Stewart [Autores]. (a) Medición de los ángulos β. (b) Ubicación de los motores en la placa base. (C) Ubicación de las junturas en la placa superior. . . . . .. 30. 2.13. Sistema bola y plato acoplado a plataforma Stewart [Autores]. . . . . . . . .. 34. 3.1. Diagrama de bloques control PID proceso [Autores]. . . . . . . . . . . . . . .. 40. 3.2. Caracterización grafica de los parámetros de desempeño para una curva de reacción (grafica basada en [3] capitulo 4 página 151). . . . . . . . . . . . . .. 42. 3.3. (a) Curva de reacción para las constantes de control k pxy = −0, 092, k ixy = 0 y k dxy = −0, 76. (b) Recorrido de la esfera en la superficie de la placa móvil.. 46. 3.4. (a) Curva de reacción para las constantes de control en x con valores k px = −0, 04, k ix = 0 y k dx = −0, 76 y las constantes de control en y de valores k py = −0, 1, k iy = 0, k dy = −0, 25. (b) Recorrido de la esfera en la superficie de la placa móvil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 47. 3.5. (a) Curva de reacción para las constantes de control en x con valores k px = −0, 92, k ix = 0, 001 y k dx = −0, 76 y las constantes de control en y de valores k py = −0, 92, k iy = 0,001, k dy = −0, 76. (b) Recorrido de la esfera en la superficie de la placa móvil. . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 47. 3.6. (a) Curva de reacción para las constantes de control en x con valores k px = −0, 92, k ix = −0, 001 y k dx = −0, 76 y las constantes de control en y de valores k py = −0, 92, k iy = −0,001, k dy = −0, 76. (b) Recorrido de la esfera en la superficie de la placa móvil. . . . . . . . . . . . . . . . . . . . . . . . . .. 48. 3.7. (a)Curva de reacción para las constantes de control en x con valores k px = −0, 04, k ix = 0 y k dx = 0, 74 y las constantes de control en y de valores k py = −0, 1, k iy = 0, k dy = 0, 0022. (b) Recorrido de la esfera en la superficie de la placa móvil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 49. 3.8. Mejor respuesta del controlador PID para el proceso plataforma Stewartbola y plato (a)Curva de reacción para las constantes de control en x con valores k px = −0, 065, k ix = −0, 001 y k dx = −0, 82 y las constantes de control en y de valoresk py = −0, 065, k iy = −0, 001 y k dy = −0, 82 (b) Recorrido de la esfera en la superficie de la placa móvil. . . . . . . . . . . . .. 50. 4.1. Diagrama de bloques control LQR proceso [Autores]. . . . . . . . . . . . . .. 51. 4.2. Control LQR con realimentación de estados.(a) Topología control LQR (sin realimentación a la salida). (b) Control LQR y observador de estados [4]. . .. 56. 4.3. (a) Curva de reacción para valores de la matriz de constantes de control k11 = 1, k12 = 1, 414, k13 = 0, k14 = 0, k21 = 0, k22 = 0, k23 = 1, k24 = 1, 414. (b) Recorrido de la esfera en la superficie de la placa móvil. . . . . . . . . . .. 62. IV.
(17) 4.4. (a) Curva de reacción para valores de la matriz de constantes de control k11 = 13, 41, k12 = 5, 18, k13 = 0, k14 = 0, k21 = 0, k22 = 0, k23 = 13, 41, k24 = 5, 18. (b) Recorrido de la esfera en la superficie de la placa móvil. . . .. 62. 4.5. (a) Curva de reacción para valores de la matriz de constantes de control k11 = 38, 72, k12 = 8, 806, k13 = 0, k14 = 0, k21 = 0, k22 = 0, k23 = 38, 72, k24 = 8, 806. (b) Recorrido de la esfera en la superficie de la placa móvil. . .. 63. 4.6. (a) Curva de reacción para valores de la matriz de constantes de control k11 = 42, 42, k12 = 9, 211, k13 = 0, k14 = 0, k21 = 0, k22 = 0, k23 = 42, 42, k24 = 9, 211. (b) Recorrido de la esfera en la superficie de la placa móvil. . .. 64. A.1. Ventana de conexiones de red Ubuntu [Autores]. . . . . . . . . . . . . . . . .. 70. A.2. ip estática configurada [Autores].. . . . . . . . . . . . . . . . . . . . . . . . .. 71. A.3. Ventana para conectar a un servidor [Autores]. . . . . . . . . . . . . . . . . .. 72. A.4. Ventana para introducir la dirección del servidor con el que se quiere establecer conexión [Autores]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 72. A.5. Ventana para seleccionar el servidor con el que se quiere establecer conexión [Autores]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 73. B.1. Triángulo para deducción de la identidad [Autores].. . . . . . . . . . . . . .. 75. C.1. Medidas del brazo y de la leva de la plataforma. (a) Longitud del i-ésimo brazo rígido. (b) Longitud de la leva del i-ésimo servomotor medida desde la unión leva–motor [Autores]. . . . . . . . . . . . . . . . . . . . . . . . . . .. 78. C.2. Gráficas de funcionamiento de cada servomotor con respecto a la señal PWM necesaria para producir un movimiento angular específico [Autores]. (a) Servomotor 1. (b) Servomotor 2. (c) Servomotor 3. (d) Servomotor 4. (e) Servomotor 5. (f) Servomotor 6 [Autores]. . . . . . . . . . . . . . . . . . . . .. 79. V.
(18)
(19) Capítulo. 1. Preliminares. C ONTENIDOS DEL CAPÍTULO 1.1 I NTRODUCCIÓN. 1.3 M ETODOLOGÍA DE DESARROLLO 1.4 TARJETA DE DESARROLLO : R ASP -. 1.2 O BJETIVOS. BERRY PI. En este capitulo se describen aspectos previos que son de necesaria comprensión antes de la realización de los algoritmos de control en la tarjeta de desarrollo. Así mismo es imprescindible conocer cuáles son los objetivos y enfoques del trabajo que se nombrarán a continuación.. 1.1. I NTRODUCCIÓN. Dependiendo del proceso o planta que se quiera controlar puede surgir la necesidad de contar con sistemas de control robusto como lo es LQR, que constituye una excelente opción gracias a su aplicabilidad en casi cualquier proceso. Este tipo de control ha sido concebido para manejar procesos multivariables como lo son los SIMO (una entrada, múltiples salidas) y los MIMO (múltiples entradas, múltiples salidas) los cuales se caracterizan por presentar “matrices de transferencia” en lugar de “funciones de transferencia” . Cuando se habla de control óptimo, se hace referencia al sistema de control que es capaz de llevar un proceso a la estabilización al rededor de un punto de trabajo determinado mientras minimiza el coste que implica la operación dinámica de la planta controlada; esto es precisamente el control LQR, ajustar un controlador proporcional 1.
(20) 1. P RELIMINARES mediante algoritmos matemáticos para minimizar la función de costo, es decir se encuentran los ajustes que atenúan las desviaciones no deseadas ya que la función de coste está definida por la suma de las desviaciones de las mediciones de salida del proceso con respecto a los valores deseados [5]. En muchos casos se requiere control óptimo y robusto, razón por la cual se hace necesario disponer de soluciones que no afecten de manera significativa la rentabilidad, eficiencia o algún otro parámetro propio de un proceso, la alternativa llevada a cabo consiste en un algoritmo de control LQR el cual es ejecutado por la tarjeta de desarrollo Raspberry Pi. Debido a que dicha tarjeta programable es de uso libre, se perfila como una opción que puede implementarse con software libre y con la cual es posible efectuar estudios y experimentos en diferentes plantas. Además la experimentación con tecnologías emergentes como lo es la plataforma Raspberry Pi para la aplicación del control moderno, es imprescindible en cuanto al avance de las alternativas de solución que se dan cuando se pretende controlar un proceso. El licenciamiento del software comercial puede suponer un elevado costo y una atadura del usuario con su proveedor, adicional a esta desventaja del software privativo frente al software libre, los códigos fuente no están disponibles para su modificación y tener acceso a dichos códigos en algunos casos implica poder suplir necesidades específicas o adaptarse a nuevos cambios [6]. Para control moderno la utilización de tarjetas como lo es la Raspberry Pi es muy poco común, razón por la cual no se emplea con mucha frecuencia el control implementado sobre estas tarjetas en aplicaciones que requieren robustez ; la mayoría de aplicaciones de estas tarjetas de desarrollo corresponden a la utilización de esta como ordenador para funciones muy específicas o control de procesos simples [7]. Con el objetivo de obtener puntos de comparación que permitan conocer qué tan óptima es la estrategia LQR con respecto a una acción de control clásico como lo es el PID, se controló un sistema bola y plato integrado a una pantalla táctil resistiva montado sobre una plataforma Stewart, con la cual se localiza la posición de una esfera que posteriormente se estabiliza mediante el movimiento angular que proporcionan 6 servomotores, el diagrama de bloques del control aplicado a la plataforma Stewart puede verse en la Figura 1.1. x pre f , y pre f error + Control ref -. Figura 1.1: Diagrama de bloques para el control del sistema bola y plato montado sobre una plataforma Stewart [Autores].. x, y, z ψ, θ, ϕ. Proceso. Detección xp, yp. Analizando la respuesta de la planta anteriormente descrita a través de la experimentación con diferentes constantes de control, se demuestra que con la estrategia LQR 2.
(21) 1.2. Objetivos se logra un desplazamiento de la bola que no presenta trayectos innecesarios desde su posición inicial hasta el punto de referencia. Lo cual es un indicativo muy claro de que la estrategia de control óptimo aplicada presenta parámetros de desempeño más satisfactorios que cuando se aplica el control PID. Los problemas que se resuelven con la implementación del control LQR en una tarjeta Raspberry Pi son: ausencia de un algoritmo de control LQR de fácil implementación en procesos reales, la no utilización del software open source en la academia para aplicaciones de control robusto con la posibilidad de dar soluciones a nivel industrial, la falta de exploración de tecnologías emergentes para la puesta en marcha de estrategias de control moderno y una justificación que indique qué estrategia de control es más efectiva en procesos específicos si PID o LQR. El algoritmo LQR implementado en Python y ejecutado a través del SO Raspbian que se presenta en capítulos posteriores de este libro proporciona un importante punto de partida para su implementación en cualquier proceso; teniendo en cuenta consideraciones prácticas ya que se aplica al sistema dinámico real plato y bola- Plataforma Stewart.. 1.2. 1.2.1. O BJETIVOS. General. Diseñar un algoritmo de control óptimo LQR sobre la tarjeta de desarrollo Raspberry Pi para su posterior implementación.. 1.2.2. Específicos. Efectuar la identificación de un proceso experimental para emular su comportamiento dinámico. Evaluar el desempeño de la estrategia de control LQR mediante la observación de los parámetros de control clásico. Validar la estrategia del control propuesto comparándolo con un control PID cuando son implementados en un mismo proceso. Implementar la estrategia de control moderno LQR en una de las plataformas emergentes como lo es la Raspberry Pi. 3.
(22) 1. P RELIMINARES. Proceso Diseño y ensamble de la plataforma Stewart. Modelamiento matemático. Diseño del control LQR Comprobación de controlabilidad y observabilidad. Determinación de las variables a controlar. Selección de puntos de trabajo. Cálculo de parámetros. Validación. Diseño del control PID Estructuración del algoritmo de control PID en latarjeta de desarrollo Raspberry Pi. Estructuración del algoritmo de control LQR en la tarjeta Raspberry Pi. Observación de de curva reacción del proceso. Aplicación de algoritmo de control LQR en la plataforma. Cálculo de parametros de desempeño. Aplicación de algoritmo de control PID en la plataforma. Comparación entre parametros de desempeño. Determinación de las constantes de control. Determinación de matrices [ Q] y [ R]. Cálculo de matriz de constantes. Figura 1.2: Diagrama de bloques metodología de desarrollo [Autores].. 1.3. M ETODOLOGÍA DE DESARROLLO. A continuación se describen los pasos que se siguen para la estructuración e implementación del algoritmo de control LQR y su validación mediante la comparación con el desempeño de un control PID igualmente concebido. Tanto el algoritmo PID como el algoritmo LQR son implementados en la tarjeta de desarrollo Raspberry pi, los algoritmos del control se diseñaron de tal manera que las constantes de control puedan ser determinadas mediante el funcionamiento experimental de una plataforma Stewart previamente ensamblada. En la Figura 1.2 se ven tres bloques con línea continua en los cuales se incluyen subbloques con linaeas punteadas que nombran instrucciones necesarias para el cumplimiento de los objetivos planteados.. Proceso Se estructura todo lo referente al sistema plato y bola montado sobre una plataforma Stewart, tanto su diseño y ensamble físico como su análisis matemático el cual hace 4.
(23) 1.3. Metodología de desarrollo posible la implementación de una estrategia de control que permita estabilizarla en puntos de trabajo específicos. Después de efectuar el modelamiento matemático de la plataforma se procede a determinar constantes inmersas en su funcionamiento, determinar magnitudes tanto de entrada como de salida, definir cuales serán las variables de control y de proceso. En el punto de validación ya debe disponerse de un modelo matemático del proceso para que sea posible simularlo usando señales estímulo y evaluar qué tan acertada es la matemática empleada en la identificación de la dinámica de la plataforma Stewart, y así mejorar el cálculo de magnitudes específicas. De la realización de la validación se obtiene información acerca de los puntos de trabajo en los cuales la plataforma puede operar de manera estable y su grado de no linealidad, entonces se conocen las condiciones para el diseño de las acciones de control.. Diseño del control LQR Se inicia con la comprobación de observabilidad y controlabilidad para determinar si es viable la aplicación del control LQR a la plataforma, si alguno de los dos parámetros no se cumple no será posible controlar la planta mediante un control LQR. La determinación de observabilidad y controlabilidad se efectúa a partir del teorema de Cayley Hamilton tal y como se explicará más adelante. El planteamiento del algoritmo de control LQR que ejecuta y procesa la tarjeta de desarrollo Raspberry Pi se hace con código python por lo tanto el control LQR diseñado e implementado es discreto, luego se hace la selección de las matrices [ Q] y [ R] la cual depende del diseño de la estrategia de control.. [ Q] y [ R] son matrices necesarias para determinar la función de coste descrita que implica la operación de la plataforma. Los componentes de estas matrices pueden ser calculados utilizando varios métodos, en este caso el método que se usó fue el RVE (Realimentación de variables de estado).. Diseño del control PID La dificultad se encuentra en la estructuración de un algoritmo que permita la realización de un control que pueda manejar múltiples entradas y salidas, adicional a esto es necesario determinar las constantes de control que sean las más apropiadas para la dinámica del proceso. De la misma manera que el LQR, el control PID también se aplica en su forma discretizada cuyas constantes de control se hallan a partir de la función de transferencia del proceso en el dominio de Z. 5.
(24) 1. P RELIMINARES. Observación curva de reacción de proceso Cuando se le aplica una acción de control al sistema bola y plato montado sobre la plataforma Stewart, el objetivo es estabilizar una bola que recorre un plato oscilante; entonces en este caso la curva de reacción del proceso es la gráfica de las diferentes posiciones que recorre la bola antes de llegar al punto de referencia de manera estable, cuando la estabilización ocurre tanto el plato como la bola entran en movimiento traslacional y rotacional nulo. Ya que la esfera tiene movimiento en los ejes coordenados x y y son dos las curvas de reacción del proceso puestas en observación, el análisis de estas curvas de reacción permitirán saber la efectividad tanto de la deducción matemática del sistema dinámico como del control aplicado.. Cálculo de parámetros de desempeño Tanto para el control LQR como para el PID a partir de la curva de reacción obtenida cuando se controla el proceso deben calcularse los parámetros de desempeño que permiten evaluar cuál de las dos estrategias de control funciona “mejor” para controlar el proceso propuesto; dichos parámetros corresponden a: Máximo sobreimpulso, tiempo de estabilización, error de estado estacionario y robustez. Para la estrategia de control LQR también hay otros parámetros que indican el desempeño del mismo como lo son: Medida de la desviación de los estados con respecto a los estados deseados, medida del esfuerzo del control, entre otros.. Comparación de parámetros de desempeño En este caso la comparación entre parámetros de desempeño solo puede hacerse entre aquellos que corresponden al control clásico, por lo tanto es importante precisar que no solo la comparación entre estos parámetros es determinante para conocer cuál es la estrategia de control que mejores resultados presenta, también deben tenerse en cuenta los parámetros de desempeño adicionales que pueden ser calculados del control LQR.. 1.4. TARJETA DE DESARROLLO : R ASPBERRY PI. El dispositivo que procesa los datos y ejecuta los algoritmos realizados en este trabajo es la tarjeta Raspberry pi modelo B que se muestra en la Figura 1.3. Cuenta con una capacidad de memoria RAM (Random Access Memory -memoria de acceso aleatorio-) de 512 MB, puerto ethernet, arquitectura ARM, puerto HDMI, puertos USB y 17 pines del GPIO que pueden ser usados como entradas o salidas digitales a 3,3V a 20mA. 6.
(25) 1.4. Tarjeta de desarrollo: Raspberry pi. Vídeo RCA. Conector audio. Ledes de estado. USB 2.0 Ethernet. Conectores GPIO ARM11 700MHz Broadcom BCM2835. HDMI. Tarjeta SD Alimentación micro USB. Figura 1.3: Diagrama esquemático de la Raspberry Pi [Autores].. En la Figura 1.4 se puede ver la descripción de cada uno de los pines que se pueden utilizar para salida o entrada de datos, existen pines para propósitos especificos como lo es la comunicación RS232 o I2C. La nomenclatura de cada uno de ellos no tiene relación con el orden específico en el que se encuentran dispuestos; por ejemplo el pin que corresponde al GPIO14 es el que está en el lugar número 8. Para poner en marcha a la Rasberry Pi, es necesario instalar un sistema operativo en la memoria SD, la cual será utilizada como disco duro de este mini computador. Raspbian es un sistema operativo (SO) libre basado en Debian optimizado para el hardware de Raspberry Pi. Raspbian ofrece más que un SO puro, viene con más de 35000 paquetes, programas precompilados en un formato que hace más fácil su instalación en la Raspberry Pi [8]. Posterior a la instalación del SO esta tarjeta puede usarse como un computador, solo es cuestión de conectar periféricos como mouse, teclado (ambos mediante vía USB) y un monitor con conexión VGA. En el Apéndice A sección A.1 se explica de que manera puede usarse la Raspberry Pi desde un computador sin tener la necesidad de conectarla a periféricos usando un tipo de conexión llamada SSH.. 1.4.1. Lenguaje de programación Python 2.0. Este lenguaje no necesita compilador, es de alto nivel y solo requiere un interprete por lo tanto cuando se ejecutan las lineas de código se hace directamente y sin necesidad de generar ejecutables [9]. Otra característica importante es que Python es orientado a objetos, cuenta con elementos como : 7.
(26) 1. P RELIMINARES Clase: Modelo sobre el cual se crean y estructuran los objetos. Propiedad: Características de un objeto que se manejan como variables. Método: Función que contiene acciones que deben realizar los objetos, su sintaxis es Def nombre_metodo(): Objeto: Cualquier sustantivo cuyas características puedan describirse como cualidades o atributos, algunos tipos de objetos son: String, entero, float, char, etc; algunos de estos objetos pueden caracterizarse nombrando otros objetos. Cuando se programa en python no es necesario especificar el tipo del objeto, solo se le asigna un nombre y valor especifico. Herencia: Una clase puede heredar a otra si los objetos comparten propiedades y/o métodos. Para crear un objeto no es necesario declarar su tipo solo basta con asignarle un nombre y un valor, al momento de ejecutarlo el interprete le asignará un tipo de acuerdo a los valores a los que el nombre del objeto haya sido igualado. Cualquier código que se quiera ejecutar con python debe ser guardado con la extensión .py.. 1.4.2. Uso del módulo GPIO. Cuando se instala el sistema operativo Raspbian se tiene python instalado por defecto, con simples lineas de código puede seleccionarse un pin del GPIO y determinar si es de salida o entrada. Como se ve en la Figura 1.4 hay diferentes funcionalidades de cada pin del GPIO y de acuerdo a esto pueden agruparse en tres definiciones: Pines de alimentación que ofrecen voltajes de 5 V y de 3,3 V, pines GND y pines multipropósito. Los del último grupo pueden ser subdivididos en dos subgrupos: los de propósito específico (SPI, I2C, Rs232 y PWM) que son 9 y los restantes 8 de salida o entrada digital reciben o transmiten 3,3 V. Para empezar con el uso del GPIO desde python solo deben escribirse las siguientes lineas de código: import RPi.GPIO as GPIO se importa la librería que permite controlar los pines según su función; GPIO.setmode(GPIO.BCM) se pone el modulo GPIO en modo BCM para que la nomenclatura de cada pin pueda cumplirse como en la Figura 1.4; GPIO.setup(#pin, GPIO.Tipo_sal) esta línea de código es para especificar el número del pin y definir si se configura como salida o como entrada, la palabra Tipo_sal se reemplaza por IN para que funcione como entrada y OUT como salida, en caso de que el pin se configure como salida el código será GPIO.output(#pin, Nivel ) donde Nivel puede ser 1 para una salida de 3,3 V o 0 para una salida de 0 V, en el caso de que se configure como entrada el pin solo aceptaŕa niveles de voltaje digitales, es decir que estará solo en 1 o en 0 y para leerla se usa la línea GPIO.input(#pin). 8.
(27) 1.4. Tarjeta de desarrollo: Raspberry pi. I2C. pin nombre 01 3v3 03 GPIO2 (SDA) 05 GPIO3 (SCL) 07 GPIO4 09 Tierra 11 GPIO17 13 GPIO27 15 GPIO22 17 3V3 19 GPIO10 (MOSI) 21 GPIO9 (MISO) 23 GPIO9 (CLK) 25 Tierra. nombre 5v 5v Tierra GPIO14 (TXD) GPIO15 (RXD) GPIO18 Tierra GPIO23 GPIO24 Tierra GPIO25 GPIO8 (CE0) GPIO7 (CE1). pin 02 04 06 08 10 12 14 16 18 20 22 24 26. Figura 1.4: Diagrama esquemático del puerto GPIO Raspberry Pi modelo B [Autores].. Configuración del PWM A pesar de que existe un pin específico para el PWM que es el GPIO18, cualquier pin multipropósito configurado como salida puede producir una señal PWM. Primero debe configurarse el pin deseado como salida GPIO.setup(#pin, GPIO.OUT ), luego debe crearse el objeto PWM especificando pin y frecuencia de la señal var= GPIO.PWM(#pin, Freq) donde var es el objeto, se inicia el PWM con un ciclo útil determinado var.start(ciclo), si se requiere puede variar el ciclo útil con esta línea de código: var.ChangeDutyCycle(18) y por último se suspende la transmisión de la señal con var.stop().. 1.4.3. Módulo externo ADC. Debido a que la Raspberry modelo B no cuenta con ADC (conversor análogo- digital) ni con DAC (conversor digital- análogo) es imprescindible contar con algún módulo externo que le permita leer o entregar niveles de voltaje que estén dentro de un rango determinado. Dicho módulo puede ser un integrado o una tarjeta con la capacidad de transmitirle las lecturas analógicas usando un canal de comunicación serie como por ejemplo I2C o RS232, en este caso se maneja el primero en consecuencia de haber seleccionado un ADC de 16 bits y 4 canales. Para este trabajo se necesitó un ADC que posibilitara la lectura de los cambios de voltaje que presenta la pantalla táctil cuando se hace presión en algún punto de su superficie, entonces se eligió el integrado ADS1115 de la empresa Texas Instruments [10]. Se usan dos de sus cuatro canales para leer las dos coordenadas del punto de presión en la pantalla táctil, cada lectura es enviada vía I2C a la raspberry Pi, razón por la cual hay dos hilos de conexión entre el integrado y la tarjeta que son los pines GPIO2 y GPIO3. 9.
(28) 1. P RELIMINARES Adafruit que es una empresa fabricante de kits de desarrollo con componentes electrónicos, la compañía realizó una tarjeta que incluye el ADS1115 con el fin de disponer de una ganancia programable y un control de la comunicación I2C mediante una librería denominada Adafruit_ADS1x15 que se encarga también de gestionar la lectura de un canal determinado [11]. Dicha librería puede ser utilizada con líneas de código en python siempre y cuando este guardada en la misma carpeta del documento con extensión .py que la invoque con la línea de código en python: from Adafruit_ADS1x15 import ADS1x15 para importar la librería desarrollada por Adafruit, se especifica el valor de la ganancia del amplificador programable PGA, las muestras leídas por segundo SPS, con adc = ADS1x15(ic=0x01) se especifica la dirección del registro de lectura y por último puede ser leído un canal específico con la instrucción adc.readADCSingleEnded( canal, pga, sps). El dato leído del canal del ADC se obtiene en valores de mili voltios con más de tres cifras después de la coma flotante, así que son lecturas con una muy buena sensibilidad y precisión numérica muy útil para hallar las coordenadas de ubicación de la esfera de manera acertada.. 10.
(29) Capítulo. 2. Planta seleccionada. C ONTENIDOS DEL CAPÍTULO 2.1 P LATAFORMA BOT PARALELO. S TEWART UN RO -. 2.2 D ISEÑO Y ENSAMBLE PLATAFOR MA S TEWART. 2.3 C INEMÁTICA DE LA PLATAFORMA S TEWART 2.4 A PLICACIÓN DE LA CINEMÁTICA DE LA PLATAFORMA S TEWART 2.5 B OLA Y PLATO. En este capitulo se describe la estructura física y geométrica de la plataforma Stewart, se especifica cada parte que la compone y también se detallan los tres grados de libertad traslacionales y los tres grados de libertad rotacionales que posee; como ya se ha nombrado antes, esta plataforma ha sido adecuada para ejercer la función de estabilizar una esfera que gira y se desplaza sobre la superficie de una pantalla táctil resistiva (subsistema bola y plato), la cual se encarga de enviar las coordenadas de posición de dicha esfera para que sean procesadas por la Raspberry Pi y posteriormente se determine cual será el ángulo de rotación de los servomotores en cada instante de tiempo.. 2.1. P LATAFORMA S TEWART UN ROBOT PARALELO. Un robot paralelo es un mecanismo de lazo cerrado cuyo movimiento se origina a partir de por lo menos dos cadenas cinemáticas independientes, la plataforma Stewart es un robot paralelo que tiene seis cadenas y por lo tanto cuenta con la ventaja que caracteriza a los robots paralelos de no acumular errores en una sola cadena cinemática [12, 13]. 11.
(30) 2. P LANTA SELECCIONADA La plataforma está compuesta por dos placas, una inferior estática y una superior provista de movilidad gracias a las seis cadenas cinemáticas servocontroladas, estas a su vez tienen uniones con junturas esféricas tanto con el actuador como con la placa superior. Con el fin de obtener seis grados de libertad de la placa superior las junturas deben ser con uniones esféricas en los dos extremos de cada brazo, cabe aclarar que un extremo se une mediante una juntura al rotor del servomotor y el otro también está unido con una juntura a la placa superior como se ve en la figura 2.1. Rótula. Placa móvil. Brazo. Figura 2.1: Estructura física plataforma Stewart [Autores].. Placa base Rótula Leva Motor. La plataforma tipo Stewart tiene propiedades de rigidez porque al contar con 6 soportes se reducen las deformaciones de manera significativa, si se dispone alguna masa en la placa superior de la plataforma el peso de dicha masa será repartido entre sus extremidades, así cada una de ellas soportará un sexto del peso [14]. Al tener una tensión distribuida, la plataforma es capaz de soportar cargas superiores a su propio peso, a raíz de esto puede moverse rápidamente debido a que cada servomotor solo debe mover una fracción de la inercia total [12]. Cuando se habla de seis grados de libertad se hace referencia al movimiento tridimensional y la rotación de la placa superior al rededor de los tres ejes cartesianos, es decir que hay movimiento en tres direcciones lineales y tres direcciones angulares a través del movimiento armónico de los seis brazos.. 2.2. D ISEÑO Y ENSAMBLE PLATAFORMA S TEWART. Se han hecho varios diseños de la plataforma Stewart, los que más destacan son en los que la movilidad de su placa superior se origina en: Brazos o extensiones hidráulicas y los brazos servocontrolados. 12.
(31) 2.2. Diseño y ensamble plataforma Stewart Los actuadores de la plataforma con brazos hidráulicos son seis cilindros hidráulicos cuyo émbolo se conecta a la placa superior de la plataforma mediante una juntura esférica, que cuando funcionan provocan un cambio en la longitud que separa la placa superior y la placa inferior, a diferencia de esta los actuadores de la plataforma servocontrolada son servomotores que con movimiento rotacional hacen que los brazos de longitud fija se desplacen de manera tridimensional [13]. Estos dos tipos de diseño mecánico tienen en común que los extremos de cada brazo están unidos con la plataforma mediante junturas esféricas, en este caso se manejaron rótulas 2M (de dos milímetros de diámetro). Por cada brazo se utilizan 2 rótulas, una que lo une a la placa superior y otra lo une al rotor del servomotor.. Adecuación de los servomotores En la plataforma Stewart ensamblada se dispuso de seis servomotores iguales los cuales son los actuadores de las dimensiones y características que se muestran en la Figura 2.2, convierten la energía eléctrica en energía mecánica para proporcionar fuerza rotatoria y así mover la placa superior de la plataforma, se alimentan de 5 voltios y son capaces mover 9g de masa cada uno.. 32 mm 28,5 mm 19,5 mm. 12 mm. tierra Vcc PWM. 32 mm. 23 mm. Figura 2.2: Dimensiones y estructura del servo motor SG90 [Autores].. Este tipo de motor fue implementado en la planta debido a que es posible controlar su ángulo de rotación mediante una señal de control PWM la cual es recibida por el motor a través del hilo indicado en la figura 2.2 y entre más ancho sea el pulso, el rotor hará un desplazamiento angular más largo en el sentido de las manecillas del reloj. En el interior de este tipo de motores hay una caja reductora y un multiplicador de fuerza además de un circuito electrónico que responde a una señal de control para definir la cantidad de movimiento angular del motor, dicha señal debe ser un pulso de amplitud constante y frecuencia determinada en forma de tren de pulsos según las especificaciones técnicas del fabricante [15]. Cuando entra la señal al servomotor primero pasa por un conversor ancho de pulso/ voltaje, luego por un amplificador operacional que se encarga de calcular el error a través de la resta entre la salida del conversor y la salida del potenciómetro con acople mecánico a la caja reductora, esta diferencia será la señal que va directamente al motor. 13.
(32) 2. P LANTA SELECCIONADA Hay tres pares de servomotores acoplados a la plataforma, cada par tiene la leva o hélice enfrentada o dicho de otra forma tienen un eje de simetría vertical en la mitad del par tal como se ve en la Figura 2.3. P1. P2 s1. l1. Figura 2.3: Pares de servomotores, posición inicial [Autores].. B1 Impar. s2. A1 A2. l2. B2 Par. En cuanto a su radio de rotación el servomotor está limitado entre ±45° y por lo tanto el ancho de pulso de la señal de control también tiene un rango limitado de valores, dichos límites deben ser calculados empezando por la posición inicial de las levas enfrentadas. tiempo (2.1) r= [µseg/radian] angulo En (2.2) se describe el ancho de pulso para el servomotor derecho y (2.3) para el izquierdo; donde Wi0 es el ancho de pulso necesario para que el servomotor mantenga la leva en la posición inicial, αi es el ángulo que se forma entre la leva y los ejes coordenados, α0 corresponde al ángulo de la posición inicial de la leva y r descrito en (2.1) hace referencia a una constante que se calcula de acuerdo al tiempo de ciclo útil necesario para obtener un desplazamiento rotacional de acuerdo a los límites determinados, donde tiempo son los micro segundos que debe durar el ancho de pulso para que el servomotor rote hasta angulo en grados [1]. Wi = Wi0 + (αi − α0 ) r. (2.2). Wi = Wi0 − (αi − α0 ) r. (2.3). Se dan las ecuaciones (2.2) y (2.3) porque si bien la plataforma es simétrica con respecto al eje z, los servomotores han sido montados en pares y cada par es opuesto a su homólogo. Para hallar Wi0 y r es necesario observar las gráficas que describen el comportamiento de cada motor referente a la cantidad de ángulos de giro con respecto al ciclo útil del PWM aplicado, dichas gráficas pueden observarse en el Apéndice C sección C.2.. 14.
(33) 2.2. Diseño y ensamble plataforma Stewart. Sensor de posición aplicado: pantalla táctil Existen dos tipos de pantallas táctiles: resistivas y capacitivas, a la plataforma Stewart se le acopló una pantalla de tipo resistivo debido a que esta no es multitouch (capacidad de detectar más de un punto de presión al mismo tiempo) y para la función que debe cumplir, detectar más de un punto de presión significa errores en el control de posición de la esfera. La pantalla táctil resistiva usada tiene cuatro hilos a través de los cuales deben detectarse las coordenadas bidimensionales de posición de la esfera que hace presión debido a su peso. Físicamente la pantalla táctil elegida es de forma rectangular, tiene una dimensión de diez pulgadas y los ejes coordenados tienen valores máximos y mínimos ubicados como se muestra en la figura 2.4. Vmaxx. Vmaxy y. x. Vminy 10 in. Vminx. 12. 34. Figura 2.4: Vista isométrica de la pantalla táctil resistiva [Autores].. El primer paso que se efectúa para el reconocimiento de cada uno de los hilos de la pantalla es medir con un multímetro en qué par de hilos hay resistencia fija, es decir que no varía independientemente de que se haga presión en cualquier punto de la superficie de la pantalla; como se ve en la figura 2.5(a), el primer par de hilos en los que hay una resistencia fija es entre el 1 y el 3 y el segundo par es el 2 y el 4 . Después de tener plenamente identificados los hilos entre los cuales la resistencia es fija, debe saberse que si se energiza una de ellas podrá hallarse una coordenada y si se energiza la otra se hallará la coordenada que falta, claro está que se debe aterrizar el otro extremo de la resistencia fija que se ha energizado previamente [16]. En este punto debe aclararse el hecho de que cuando se trabaja con una pantalla resistiva no es posible hallar ambas coordenadas (x y y) de manera simultánea, entonces el procedimiento correcto es hallar una y luego la otra. Para leer la coordenada x primero se conectan los hilos de la pantalla como se muestra en la figura 2.5(c) y luego se lee y conectándola como se muestra en la figura 2.5(b); el hilo de lectura en cada caso son los que se referencian con A0 y A1 , los cuales presentan una variación en mili voltios con un valor máximo y mínimo a lo largo de cada eje según el punto de presión en la superficie de la pantalla como se muestra en la figura 2.4, cuando los hilos se conectan en alguna configuración que corresponda a la figura 2.5(b) o 2.5(c). 15.
(34) 2. P LANTA SELECCIONADA. R f ija. 1 NC. 2. 2. 3 A0. 4. 1. 2. 3. A1. 4 NC. 4. 1. 3. 10 kΩ 3, 3 V. R f ija (a). (b). 10 kΩ 3, 3 V (c). Figura 2.5: Salidas de la pantalla táctil resistiva de 4 hilos, cada punto representa un hilo [Autores]. (a) Medida de la resistencia fija. (b) Configuración para leer la coordenada y. (c) Configuración para leer la coordenada x.. El cambio de conexión de los cuatro hilos de la pantalla para leer cada coordenada se hace manipulando los pines I/O del GPIO de la Raspberry Pi Usando las lineas del listado de código 2.1. Cuando se necesita que un hilo de la pantalla resistiva esté en NC (No conexión) como se ve en la imagen 2.5, se configura el pin del GPIO conectado a él como entrada Listado de código 2.1: Manipulación pines GPIO para lectura de coordenadas de la pantalla táctil. #Lectura del eje x #disposición pines pantalla GPIO.setup(22, GPIO.IN) # Hilo 1 pantalla touch en No conexion GPIO.setup(17, GPIO.OUT) # Hilo 2 pantalla touch GPIO.setup(4, GPIO.OUT) # Hilo 3 pantalla touch GPIO.setup(27, GPIO.OUT) # Hilo 4 pantalla touch #salida de los pines GPIO.output(17, 1) # nivel alto de voltaje para base de transistor, hilo 3 a tierra GPIO.output(4, 0) # nivel bajo de voltaje para base de transistor, hilo 2 a canal ADC 1 GPIO.output(27, 1) #asignación de la lectura de la coordenada x= adc.readADCSingleEnded(0, pga, sps) #Lectura del eje y #disposición pines pantalla GPIO.setup(22, GPIO.OUT) # Hilo 1 pantalla touch GPIO.setup(17, GPIO.OUT) # Hilo 2 pantalla touch GPIO.setup(4, GPIO.OUT) # Hilo 3 pantalla touch GPIO.setup(27, GPIO.IN) # Hilo 4 pantalla touch en no conexión #salida de los pines GPIO.output(22, 1) GPIO.output(4, 1) # nivel alto de voltaje para base de transistor,. 16.
(35) 2.3. Cinemática de la plataforma Stewart hilo 2 a tierra GPIO.output(17, 0) # nivel bajo de voltaje para base de transistor, hilo 3 a canal ADC 0 #asignación de la lectura de la coordenada y= adc.readADCSingleEnded(1, pga, sps). Notese que para leer cualquier coordenada se necesita que uno de los hilos 2 o 3 de la pantalla esté a tierra y el otro conectado a la lectura del ADC, debido a que la lectura analógica se hace con un dispositivo externo (Ver capitulo 1) no se pueden instanciar las entradas de los canales de lectura para que sean una salida y así hacer conexión de uno de los dos hilos de la pantalla con tierra. Entonces lo que se hace con el fin cumplir la disposición de los hilos de la pantalla para leer cualquier coordenada como se ve en la figura 2.5, se hace un arreglo con un transistor NPN conectando su base a un pin del GPIO de la raspberry pi de tal manera que si se envía un nivel alto de voltaje el hilo de la pantalla haga conexión con con tierra y si se envía un nivel bajo, haga conexión con el canal ADC del dispositivo externo de lectura, esto se especifica en los comentarios del listado de código 2.1.. 2.3. C INEMÁTICA DE LA PLATAFORMA S TEWART. Independientemente de que modelo se aplique para deducir el comportamiento dinámico de la plataforma, debe saberse que existe una relación de la posición y la orientación de la plataforma móvil con las variables de articulación y los parámetros geométricos [13]. Para deducir el modelo dinámico de la plataforma hay dos tipos de análisis, el de cinemática inversa y el de cinemática directa. Si se quiere resolver el sistema mediante cinemática directa se requiere del planteamiento de ecuaciones no lineales en las cuales se describe la posición y la orientación del manipulador paralelo cuando sus longitudes son conocidas, el problema de este tipo de análisis es que se pueden obtener múltiples soluciones [12], más específicamente para el caso de la plataforma Stewart servocontrolada se obtiene un sistema de 18 ecuaciones con 40 posibles soluciones [2], para este tipo de problemas la aplicación de la cinemática inversa es más sencilla con respecto a la cinemática directa porque es más fácil calcular tanto las longitudes entre la placa superior e inferior (de los brazos que son los elementos que separan una de la otra), como los parámetros de los motores conociendo la posición deseada o los ángulos de giro de la placa superior móvil de la plataforma [13], en lugar de calcular la localización (posición y orientación) de la plataforma dados los parámetros de operación y elongación de los actuadores. Si se deduce el modelo dinámico de la plataforma haciendo uso de la cinemática inversa, es necesario calcular las variaciones de las distancias que separan a la placa superior móvil de la plataforma de la placa inferior fija y los parámetros de los motores conociendo la posición deseada de la plataforma. 17.
(36) 2. P LANTA SELECCIONADA. z. Placa superior móvil. ′. y O ′ x. ′. pi. Pi. T Placa inferior base fija. Figura 2.6: Diagrama de Cuerpo libre para el i −ésimo brazo [1].. qi. z O. x. li. y bi Bi. El problema de la cinemática inversa puede definirse en dos etapas: 1. Tener clara la referencia de posición y orientación deseada y determinar la rotación de las junturas esféricas al rededor de cada eje coordenado con respecto a las placas superior e inferior. 2. Determinar los ángulos de rotación de los servomotores, teniendo en cuenta la dinámica de las junturas analizadas en el paso anterior. Resolver la primera etapa requiere tener claros los puntos relevantes en el diagrama del cuerpo de la plataforma, tal y como se ve en la Figura 2.6, luego se calculan las distancias entre las junturas de la base y las junturas de la placa superior planteando matrices de rotación y traslación; con la ecuación (2.4) se expresa la longitud del i −ésimo brazo y en (2.5) se expresa qi que describe las coordenadas del punto de ancla Pi tomando como referencia la placa base. li = T + R PB pi − bi. (2.4). qi = T + R PB pi. (2.5). En (2.4) y (2.5) T hace referencia a la distancia que hay entre el punto central de la placa inferior O y el punto central de la placa superior O’ y también puede ser visto como el vector de traslación que varía conforme cambia la distancias entre las placas superior e inferior de la plataforma, esta distancia está dada por el desplazamiento de posición lineal entre los dos puntos centrales por lo tanto es el vector de traslación. pi es la distancia entre el punto central O’ de la placa superior y la i −ésima juntura esférica o rótula adherida a ella, la distancia pi puede ser definida como un vector en el cual se determinan las coordenadas del punto de ancla Pi con respecto a la placa superior. bi es la distancia entre el punto central O de la placa inferior y la i −ésima juntura esférica o rótula adherida a ella, la distancia bi representa el vector que define las coordenadas 18.
(37) 2.3. Cinemática de la plataforma Stewart. z. y. z P. P x′ y′. x′. ψ C. z′. z′. B. B. y′. φ. D. J. B. θ. O. A (a). P. θ. x. ψ. O. x. E (b). y. φ O. K (c). Figura 2.7: Rotación. (a) Con respecto al eje z. (b) Con respecto al eje y. (C) Con respecto al eje x. Figura basada en [1] página 1.. del punto de ancla Bi en la placa inferior. R PB (ver (2.6)) es la variación de la distancia que hay entre los puntos Pi y Bi que son los puntos en los cuales se ubica la i −ésima rótula de las placas superior e inferior. R PB = Rz (ψ) · Ry (θ ) · R x ( φ). (2.6). La placa base tiene los ejes ortogonales x, y y z y la placa móvil tiene los ejes ortogonales x’, y′ y z′ , para cada eje se pueden identificar 3 desplazamientos traslacionales con respecto a la base y 3 movimientos angulares que definen la orientación de la placa móvil con respecto a la base: . Rz (ψ): Ángulo de rotación ψ alrededor de z, el cual se deduce observando el modelo dinámico desde “arriba” como se ve en la Figura 2.7(a). En este caso se hallan las distancias x y y que van hasta el punto P, sabiendo ′ que deducir z = z para la matriz de rotación Rz (ψ) teniendo en cuenta que x x′ y = Rz (ψ) y′ . Para hallar x se mide la distancia desde el punto de z z′ origen O hasta el punto P sobre el eje x como se ve en (2.7). x = OA − CB. (2.7). Luego se expresa (2.7) en términos del ángulo ψ y las distancias de los ejes coordenados x ′ y y′ haciendo uso de las definiciones de las funciones trigonométricas seno y coseno como se ve en 2.8, haciendo la traslación necesaria de dicho ángulo 19.
(38) 2. P LANTA SELECCIONADA y proyectando los ejes coordenados de la Figura 2.7(a). x = x ′ cos (ψ) + y′ sin (ψ). (2.8). Ahora se halla y que es la distancia de O a P sobre el eje y como se ve en (2.9). y = AB + CP. (2.9). Se expresa (2.9) en términos de ψ y x ′ y y′ como se ve en (2.10). y = x ′ sin (ψ) + y′ cos (ψ) Así se obtiene Rz (ψ) disponiendo de (2.8) y (2.10) como se ve en (2.11). ′ x cos (ψ) sin (ψ) 0 x y = sin (ψ) cos (ψ) 0 y′ z 1 0 0 z′ cos (ψ) sin (ψ) 0 Rz (ψ) = sin (ψ) cos (ψ) 0 1 0 0. (2.10). (2.11). Ry (θ ): Ángulo de rotación θ alrededor de y, el cual se deduce observando el modelo dinámico “de frente” como se ve en la figura 2.7(b). En este caso se hallan las distancias x y z que van hasta el punto P, sabiendo que y = y′ para deducir la matriz de rotación Ry (θ ) teniendo en cuenta que ′ x x y = Ry (θ ) y′ . Para hallar x se mide la distancia desde el punto de z z′ origen O hasta el punto P sobre el eje x como se ve en (2.12). x = OE + BD. (2.12). (2.12) en términos de θ y de los ejes coordenados x ′ y z′ como se ve en (2.13) haciendo la traslación necesaria de dicho ángulo y proyectando los ejes coordenados de la Figura 2.7(b). x = x’ cos (θ ) + z′ sin (θ ). (2.13). Se halla z que es la distancia de O a P sobre el eje z como se ve en (2.14). z = BE − DP. (2.14). Se expresa (2.14) en términos de θ y x ′ y z′ como se ve en (2.15). z = z′ cos (θ ) − x ′ sin (θ ) 20. (2.15).
(39) 2.3. Cinemática de la plataforma Stewart Así se obtiene Ry (θ ) disponiendo de (2.13) y (2.15) como se ve en (2.16) ′ x cos (θ ) 0 sin (θ ) x y = 0 1 0 y′ z − sin (θ ) 0 cos (θ ) z′ . . cos (θ ) 0 sin (θ ) 0 1 0 Ry (θ ) = − sin (θ ) 0 cos (θ ). (2.16). R x ( φ): Ángulo de rotación φ alrededor de x, el cual se deduce observando el modelo dinámico “de lado” como se ve en la figura 2.7(c). En este caso se hallan las distancias y y z que van hasta el punto P, sabiendo ′ que x = x para deducir la matriz de rotación R x ( φ) teniendo en cuenta que x′ x y = R x ( φ) y′ . Para hallar y se mide la distancia desde el punto de z z′ origen O hasta el punto P sobre el eje y como se ve en (2.17). y = OK − JB. (2.17). Se expresa (2.17) en términos de φ y de los ejes coordenados y′ y z′ como se ve en (2.18) haciendo la traslación necesaria de dicho ángulo y proyectando los ejes coordenados de la Figura 2.7(c). y = y′ cos ( φ) − z′ sin ( φ). (2.18). Se halla z que es la distancia de O a P sobre el eje z como se ve en (2.19). z = KB + JP. (2.19). Se expresa (2.19) en términos de φ y y′ y z′ como se ve en (2.20). z = y′ sin ( φ) + z′ cos ( φ). (2.20). Así se obtiene R x ( φ) disponiendo de (2.18) y (2.20) como se ve en (2.21). ′ x 1 0 0 x y = 0 cos ( φ) − sin ( φ) y′ z′ z 0 sin ( φ) cos ( φ) . . 1 0 0 R x ( φ) = 0 cos ( φ) − sin ( φ) 0 sin ( φ) cos ( φ). (2.21). 21.
(40) 2. P LANTA SELECCIONADA Teniendo las matrices de rotación que corresponden a los ejes coordenados (2.11), (2.16) y (2.21) puede hallarse (2.6). . cos (ψ) sin (ψ) 0 cos (θ ) 0 sin (θ ) 1 0 0 · 0 cos ( φ) − sin ( φ) 0 1 0 R PB = sin (ψ) cos (ψ) 0 · 1 0 0 − sin (θ ) 0 cos (θ ) 0 sin ( φ) cos ( φ). . cos (ψ) cos (θ ) − sin (ψ) cos ( φ) + cos (ψ) sin (θ ) sin ( φ) R PB = sin (ψ) cos (θ ) cos (ψ) cos ( φ) + sin (ψ) sin (θ ) sin ( φ) − sin (θ ) cos (θ ) sin ( φ) sin (ψ) sin ( φ) + cos (ψ) sin (θ ) cos ( φ) − cos (ψ) sin ( φ) + sin (ψ) sin (θ ) cos ( φ) (2.22) cos (θ ) cos ( φ) Teniendo (2.22) se puede hallar la matriz de translación T para como se muestra en 2.23. ′ x T = R BA y′ (2.23) ′ z Concluida la primera etapa se procede a calcular el ángulo de rotación de cada servomotor, cuyo rotor está unido a los brazos de la plataforma como se ve en la Figura 2.8(a). Esto se realiza debido a la necesidad de saber cuánta variación de la longitud de cada unión brazo/hélice se produce con el movimiento angular del correspondiente motor anclado a dicha unión, para saberlo se hace el modelo cinemático que se ve en Figura 2.8(b).. s. li. Figura 2.8: Representaciones gráficas de la rotación del servomotor. (a) Hélice del i −ésimo servomotor anclada al i −ésimo brazo rígido S. (b) Representación cinemática del recorrido de la hélice del servomotor anclada a S.Figura basada en [1] página 3 y [2]. z. Pi. Pi. s li. y Ai α Bi. Bi. β (a). x x. (b). Donde Ai es el punto de ancla del i −ésimo brazo con la hélice del rotor de su correspondiente servomotor, Bi es el punto de unión de la hélice del servomotor con el rotor, S es la longitud del i −ésimo brazo rígido de la plataforma, li como se ve en (2.4) es la distancia variable que existe entre el punto de ancla Pi del brazo con la placa superior y 22.
(41) 2.3. Cinemática de la plataforma Stewart la juntura Bi , a es la longitud de la hélice del servo, w es un vector con coordenadas x y y cuyo origen está en Bi y sirve de referencia para hallar las coordenadas del punto de ancla Ai y el elipse punteado representa el recorrido rotacional de la hélice del servo que forma los ángulos: β con respecto a x y y y el ángulo α con respecto a x, y y z. La posición de los puntos Ai y Pi varía conforme se mueve el servomotor, en cambio el punto Bi es fijo; con el fin de encontrar las coordenadas de Ai en cada instante de tiempo, se grafican los ángulos α y β como se ve en la Figura 2.9. z. z Ai (i = impar). Ai (i = par) y. π−α π+β. α Bi. β x barrido de la leva. Ai y za ya ω xa. α β x. Figura 2.9: Recorrido angular de la hélice del servomotor con respecto a los tres ejes coordenados x, y y z. Figura basada en [1] páginas 4 y 5.. Las coordenadas de Ai se especifican en (2.24) y se hallan usando las definiciones funciones trigonométricas proyectando vectores y trasladando los ángulos α y β. . xa Ai = y a za xb Bi = yb zb xp Pi = y p zp. (2.24). . (2.25). A cada coordenada se le suma la correspondiente componente de Bi como se ve en (2.25) debido a que este punto no es (0,0,0), hay una distancia fija entre el origen y el centro de anclaje de la hélice con el rotor, a continuación se hallan las coordenadas de Ai para el servomotor par al cual le corresponden los ángulos α y β. x a Como se ve en la Figura 2.9 se pueden obtener las equivalencias w = x a / cos ( β) y w = a cos (α) que luego se igualan para obtener (2.26). x a = a cos (α) cos ( β) + xb. (2.26) 23.
(42) 2. P LANTA SELECCIONADA y a Las equivalencias trigonométricas según se ve en la Figura 2.9 para esta coordenada son: w = s cos (α) y w = y a / sin ( β) las cuales se igualan para obtener 2.27. y a = a cos (α) sin ( β) + yb (2.27) z a Se forma un solo equivalente trigonométrico sin (α) = z a /a, a es la longitud de la hélice del servomotor. Despejando dicha expresión se obtiene. z a = a sin (α) + zb. (2.28). Conociendo las coordenadas del punto Ai se procede a determinar el ángulo α que se forma entre la hélice del servomotor y los ejes coordenados, por lo tanto se halla la magnitud de los vectores a, S y l teniendo en cuenta los puntos de cada uno como se ve en la Figura 2.8(b), cabe aclarar que xb , yb y zb son coordenadas fijas. a2 = ( x a − x b )2 + ( y a − y b )2 + ( z a − z b )2 a2 = x2a − 2x a xb + xb2 + y2a − 2y a yb + y2b + z2a − 2z a zb + z2b a2 = x2a + y2a + z2a − 2 ( x a xb + y a yb + z a zb ) + xb2 + y2b + z2b 2 2 2 l 2 = x p − xb + y p − yb + z p − zb l 2 = x2p − 2x p xb + xb2 + y2p − 2y p yb + y2b + z2p − 2z p zb + z2b l 2 = x2p + y2p + z2p − 2 x p xb + y p yb + z p zb + xb2 + y2b + z2b. (2.29). (2.30). 2 2 2 S2 = x p − x a + y p − y a + z p − z a S2 = x2p − 2x p x a + x2a + y2p − 2y p y a + y2a + z2p − 2z p z a + z2a S2 = x2p + y2p + z2p − 2 x p x a + y p y a + z p z a + x2a + y2a + z2a. (2.31). De (2.29) y (2.30) se despejan las expresiones que se ven en (2.32) y (2.33) respectivamente. 2 x a + y2a + z2a = − a2 − 2 ( x a xb + y a yb + z a zb ) + xb2 + y2b + z2b (2.32) x2p + y2p + z2p = −l 2 − 2 x p xb + y p yb + z p zb + xb2 + y2b + z2b (2.33) Se reemplaza (2.32) y (2.33) en (2.31) y se obtiene (2.34).. S2 − l 2 − a2 = − xb2 + y2b + z2b + 2 x p xb + y p yb + z p zb − 2 x p x a + y p y a + z p z a − 2 xb + y2b + z2b − 2 ( x a xb + y a yb + z a zb ) (2.34) Se multiplicando toda la expresión (2.34) por -1 y reorganizando términos se obtiene (2.35). 24.
(43) 2.3. Cinemática de la plataforma Stewart. l 2 − s2 − a2 = 2 xb2 + y2b + z2b − 2 x p xb + y p yb + z p zb + 2x a x p − xb + 2y a y p − yb + 2z a z p − zb (2.35) Anteriormente se había hallado cada coordenada del punto Ai entonces se reemplaza (2.26), (2.27) y (2.28) en (2.35). l 2 − s2 − a2 = 2 xb2 + y2b + z2b − 2 x p xb + y p yb + z p zb + 2 ( a cos (α) cos ( β) + xb ) x p − xb + 2 ( a cos (α) sin ( β) + yb ) y p − yb + 2 ( a sin (α) + zb ) z p − zb l 2 − s2 − a2 = 2a sin (α) z p − zb + 2a cos (α) cos ( β) x p − xb + sin ( β) y p − yb (2.36) Se hace sustitución de variables para simplificar la expresión (2.36). M = 2a z p − zb (2.37) (2.38) N = 2a cos ( β) x p − xb + sin ( β) y p − yb L = l 2 − S2 − a2 (2.39) Se reemplaza (2.37), (2.38) y (2.39) en (2.36). L = M sin (α) + N cos (α). (2.40). En la sección (B.1) del apéndice B se explica con detalle el procedimiento seguido para hallar (2.41) a partir de (2.40). α = arcsin. √. L M2 + N 2. . . − arctan. N M. (2.41). Ahora puede calcularse la longitud entre las placas superior e inferior asociada al ángulo α de rotación del servomotor; antes de hacerlo es necesario saber cual es la posición inicial de los motores que dan la longitud inicial ho que separa ambas placas, en (2.42) q0 representa las coordenadas del punto de ancla Pi (situado en la placa superior) con respecto a la placa inferior para h0 . q0 = T + R PB pi 0 1 0 0 xp q0 = 0 + 0 1 0 y p h0 0 0 1 zp 0 xp q0 = 0 + y p h0 zp 25.
(44) 2. P LANTA SELECCIONADA xp yp q0 = h0 + z p . (2.42). Notese que el vector T de traslación para la posición inicial solo considera la distancia inicial h0 la cual se da con respecto al eje z y la matriz de rotación R PB para la posición inicial es una matriz identidad. P1. P2 s1. l1. Figura 2.10: Disposición física de cada par de servomotores [Autores].. B1. s2. A1 A2. Impar. l2. B2 Par. Se considera que la posición inicial del brazo del servo impar está enfrentada como espejo con respecto al brazo del servo par, como se ve en la Figura 2.10. Cuando el servo está en su posición inicial se forma un ángulo de 90° entre S y a entonces es posible calcular la distancia l inicial que está entre los puntos P y B usando el teorema de Pitágoras como se ve en (2.43). l 2 = S2 + a2. (2.43). Teniendo en cuenta la equivalencia de l hallada en (2.30) se tiene la ecuación (2.44). 2 2 2 l 2 = x p − xb + y p − yb + z p − zb. (2.44). Si se igualan (2.30) y (2.44) y se despeja h0 se obtiene (2.45). 2 2 2 S2 + a2 = x p − x b + y p − y b + z p − z b 2 2 2 S2 + a2 = x p − x b + y p − y b + h0 + z p. . . h0 + z p = h0 =. . . 2 2 S2 + a2 − x p − x b − y p − y b. 2 2 S2 + a2 − x p − x b − y p − y b − z p. (2.45). El cálculo de h0 se determina de la misma manera para los seis brazos de la plataforma dado que está construida simétricamente con respecto al eje z; Así también existe un 26.
(45) 2.3. Cinemática de la plataforma Stewart ángulo α0 que se define igual que α con la diferencia de que el primero se da cuando la plataforma esta en sus condiciones iniciales el cual se deduce de (2.4). li = T + R PB ( pi − bi ) xb 0 1 0 0 xp l0 = 0 + 0 1 0 y p − y b zb h0 0 0 1 zp 0 x p − xb l0 = 0 + y p − y b h0 zp − 0 x p − xb l0 = y p − y b h0 + z p . (2.46). Haciendo uso de (2.43) y de (2.46) se halla l0 como se ve en (2.47). 2 2 2 l02 = x p − xb + y p − yb + h0 + z p. (2.47). Para encontrar α0 se reescribe (2.41) como se ve en (2.48). α0 = arcsin . L0 M02 + N02. − arctan. . N0 M0. (2.48). Se especifican las equivalencias de M0 , N0 y L0 según las ecuaciones (2.37), (2.38) y (2.39), en el caso de L0 se tiene en cuenta (2.43) por lo tanto se reemplaza l y se obtiene (2.49). L0 = l 2 − S2 − a2 L0 = S2 + a2 − S2 − a2 L0 = 2a2. (2.49). Para M0 se tiene en cuenta (2.47) y para N0 se asume que β es 0° (situación que no podría verse en la realidad ya que si β variara seria necesario romper la leva del motor), entonces se obtiene (2.50) y (2.51). M0 = 2a h0 + z p N0 = 2a cos (0) x p − xb + sin (0) y p − yb N0 = 2a x p − xb. (2.50). (2.51) 27.
Figure
+7
Documento similar