2. Theoretical Perspective and Methodology
2.8. Form, Re-Entry, Guiding Distinction, Code, and Programs
5.3.1. Discretización PD . . . 53 5.3.2. Simulación control PD . . . 54 5.3.3. Implementación control PD . . . 55
5.4. Diseño de control LQR . . . 56
5.4.1. Sistemas discretos en el espacio de estados . . . 58 5.4.2. Observador de estados . . . 60 5.4.3. Calculo K . . . 62 5.4.4. Calculo de Ke . . . 64 5.4.5. Ganancias LQR y feedforward . . . 64 5.4.6. Simulación control LQR . . . 66 5.4.7. Implementación control LQR . . . 67
En este capítulo se describe el diseño de la interfaz de usuario a través de procesamiento de imágenes, para el reconocimiento de un punto de color verde por medio de una cámara web, el cual representa la posición de la bola dentro del plato y describe una trayectoria que la bola seguirá, se plantea la solución de un laberinto de manera interactiva, se presentan los pseudocodigos para su implementación. A demás el diseño del control PID a través de la función de transferencia y el análisis de lugar de las raíces con Sisotool de Matlab donde se obtiene las ganancias correspondientes, se realiza la ecuación en diferencias del control PID discreto, la simulación y se presenta el pseudocodigo para su implementación, de igual manera para el control LQR se obtienen las matrices de estados en tiempo discreto, se realiza un observador de estados completo y un seguimiento de referencia por feedforward, la solución de Ricatti en tiempo discreto para obtener las ganancias de optimización del LQR, la simulación y se presenta el pseudocodigo para su implementación.
5.1.
Interfaz de usuario
La interfaz de usuario se divide en dos partes, la primera corresponde a la visualización del movimiento del plato en 3D por medio de una unidad de movimiento inercial compuesta de un acelerometro y giroscopo; la segunda es un procesamiento de imágenes con una cámara web en la que se captura la imagen de un punto de color verde que representa la referencia en las coordenadas (X, Y) de la bola en el plato se diseñan dos modos, el primero para variación libre de la referencia y el segundo en modo de control para seguimiento de una trayectoria capaz de resolver un laberinto, para esto se utiliza la librería OpenCV de procesamiento de
42 CAPÍTULO 5. DISEÑO DE INTERFAZ DE USUARIO, CONTROL PID Y LQR
imágenes, OpenGl para gráficar en 3D y Pygame para el desarrollo de juegos en 2D, todas de código abierto para Python. En ambos casos la publicación y adquisición de los datos se hace en un servidor local web para lo cual se crearon dos programas que permiten publicar los datos en el servidor, su pseudocodigo para su implementación se ve en la figura (5.1) y para la adquisición se accede al servidor y se almacena los datos, en la figura (5.2) se ve su pseudocodigo para su implementación.
Figura 5.1: Pseudocodigo publicación datos en un servidor local
5.1. INTERFAZ DE USUARIO 43
5.1.1.
Visualización del plato en 3D
Para poder ver el movimiento del plato en 3D se requiere de un sensor que permita obtener el ángulo de giro de un objeto, para esto se utiliza una unidad de movimiento inercial que se compone de un acelerometro que permite medir la aceleración de un objeto y de un giroscopo que mide la velocidad angular, el sensor utilizado es el mpu 6050, capaz tomar estas medidas en los tres ejes en los que se puede mover un objeto en el espacio (x, y, z) ver figura (5.3), al tomar la gravedad de la tierra como aceleración constante para el eje Z, se define el eje horizontal, para luego formar el sistema de referencia aplicando la ley de la mano derecha del electromagnetismo se ubica el eje X y el eje Y respectivamente. Una vez se oriente el sensor con la variación de la aceleración de los ejes (x,y) y aplicando trigonométrica se calcula el ángulo de inclinación de cada eje, se debe conocer la aceleración del eje contrario que forma el cateto opuesto del ángulo y la distancia del eje correspondiente con respecto al eje z ver figura (5.4) y aplicando arcotanente de estos valores se obtiene el ángulo correspondiente[23].
Figura 5.3: Ángulos de navegación de un objeto en tres dimensiones
Figura 5.4: Calculo ángulo de inclinación
La lectura del sensor se realiza por I2C en la dirección 0x68 definida para el mpu6050 como esclavo, por medio de la Raspberry Pi se realizan estos cálculos, los datos se envían a un servidor local vía web, el figura (5.5) se ve el pseudocodigo para su implementación .
44 CAPÍTULO 5. DISEÑO DE INTERFAZ DE USUARIO, CONTROL PID Y LQR
Figura 5.5: Pseudocodigo lectura mpu6050 de ángulos de movimiento X Y
Para gráficar en 3D el movimiento del plato se crea un aplicativo en Python con la librería OpenGl de código abierto, se define un objeto con 6 caras conectado por los vértices de cada cara definidos en un sistema de 3 coordenadas (x, y, z) de esta manera se crea el plato, se hace una lectura de los ángulos en el servidor local y se asignan a las propiedades de rotación del objeto definido , en la figura (5.6) se ve el pseudocodigo para su implementación, el resultado final se ve el la figura (5.7) donde se aprecia el objeto de 6 caras visto en tres dimensiones con los movimientos que realiza el plato físicamente.
5.1. INTERFAZ DE USUARIO 45
Figura 5.6: Pseudocodigo diseño 3D del plato
46 CAPÍTULO 5. DISEÑO DE INTERFAZ DE USUARIO, CONTROL PID Y LQR
5.1.2.
Procesamiento de imágenes
La interfaz de usuario principal consiste en un aplicativo que permita cambiar el punto de referencia de la bola dentro del plato por medio del procesamiento de imágenes para la identificación de un circulo verde de 7 cm de diámetro cuyo centro sera la referencia que debe tomar el control y posicionar la bola en dicho punto.Se crearon dos modos de variación de referencia, el primero un modo libre que permite ubicar la bola el cualquier parte sobre el plato y el segundo un modo control que permite crear una trayectoria para que la bola la siga de manera gradual capaz de realizar un recorrido dentro de un laberinto.
Para el procesamiento de imágenes se utiliza la librería OpenCv que define el acceso al dispositivo de captura que es una cámara web y permite la manipulación de los atributos de la imagen capturada, como la matriz RGB, de contraste, blanco y negro, umbral etc; con estas herramientas se diseña una librería que realiza la captura de la imagen define una mascara entre los valores de tonalidades de verde, para filtrar todo lo diferente a esa gama de color ver figura (5.8), define el área del objeto encontrado y ubica el centro con un punto rojo que da una par de coordenadas (x, y) que serán la referencia que seguirá el controlador[24], el la figura (5.9) se ve el pseudocodigo para su implementación.
5.1. INTERFAZ DE USUARIO 47
Figura 5.9: Pseudocodigo librería reconocimiento de imagenes
Para gráficar en 2D el plato y la esfera tanto para el modo libre como para el modo control se utiliza la librería Pygame que permite pintar diferentes figuras geométricas, en el modo libre se pinta un rectángulo de bordes azules y un circulo que representan el plato y la bola respectivamente, como condición el circulo nunca podrá sobrepasar los bordes azules, en la figura (5.10) se ve el pseudocodigo para su implementación y en la figura (5.11) se ve la interfaz al momento de ejecutarse.
48 CAPÍTULO 5. DISEÑO DE INTERFAZ DE USUARIO, CONTROL PID Y LQR
5.1. INTERFAZ DE USUARIO 49
Figura 5.11: Interfaz de usuario Modo libre
Para el modo control se pinta de igual forma que el modo libre pero se agregan cuatro triángulos que indican la dirección de la bola, entre mas se acerque el circulo a los limites de los triángulos estos cambiaran de color indicando una variación alta del punto de referencia, en la figura (5.12) se ve el pseudocodigo para su implementación y en la figura (5.13) se ve la interfaz al momento de ejecutarse.
50 CAPÍTULO 5. DISEÑO DE INTERFAZ DE USUARIO, CONTROL PID Y LQR
Figura 5.12: Pseudocodigo interfaz 2D modo control
5.2. PARÁMETROS DE DISEÑO DE CONTROLADORES 51
5.2.
Parámetros de diseño de controladores
Para realizar los controles PID y LQR en tiempo discreto se definen unos parámetros de diseño propios del sistema, como el tiempo de muestro, que esta directamente relacionado con la ubicación de los polos deseados que se obtienen del análisis de la función de transferencia del sistema ver ecuación (5.1) se ve que tiene dos polos en el origen lo cual indica que es inestable por tanto se debe desarrollar un controlador para estabilizarlo en cualquiera de sus múltiples puntos de equilibrio en el plato[25].
G(s) = 7
S2 (5.1)
La asignación de los polos para el sistema de control se eligen de acuerdo a las características de la respuesta transitoria, como el grado del denominador es dos, se debe aplicar para un sistema de segundo orden el máximo sobre impulso M p, tiempo de asentamiento ts con un criterio del 2 %, el factor de amortiguamientoξdebe estar entre 0.4 y 0.8, valores menores de ξ <0,4 producen un valor excesivo de sobre elongación y valores mayores deξ >0,8responde con lentitud[26]. Para el criterio del 2 % se tiene que eltses 4 veces la constante de tiempo del sistema que es inversamente el producto del factor de amortiguamiento y la frecuencia natural no amortiguada del sistemaωn, el valor mínimo para el tiempo de asentamiento seda conξ= 0,76[15].
M p=e − ξ q 1−ξ2π ·100 % (5.2) ts= 4T ts= ξω4 n (5.3) Para un tiempo de asentamiento dets= 0,7 segundos se tiene
ωn= 0,764∗0,7
ωn= 7,52
El M pesta directamente relacionado con la elección de ξcon lo cual se obtiene
M p=e − 0,76 q 1−0,762 π ·100 % M p= 31 %
Los polos conjugados se expresan bajo los parámetros deξyωnde la forma (5.4), los polos deseados para
el sistema se muestran en (5.5). S1,2=−ξωn±jωn p 1−ξ2 (5.4) S1,2=−0,76∗7,52±j7,52 p 1−0,762 S1,2=−5,72±j4,89 (5.5) Ahora se calcula el periodo de muestreoT que se requiere para los polos asignados aplicando la ecuación (5.5) se ve que el periodo de muestreo mínimo para N = 15 muestras por oscilación es 85ms como se ve en la ecuación (5.6) sin embargo en el momento de la implementación se debe tener en cuenta el tiempo de procesamiento de la lectura del conversor adc y los cálculos para realizar el control no sobrepasen este tiempo.
T = 2π N·ωn· p 1−ξ2 (5.6) T =15∗24π,89 T = 0,08566s (5.7)
52 CAPÍTULO 5. DISEÑO DE INTERFAZ DE USUARIO, CONTROL PID Y LQR