A PÉNDICE I C ONFIGURACIÓN DEL C ONTROLADOR L INEAL LQR La versión actual del programa de control para el vehículo autobalanceado implementa un controlador lineal con realimentación de los tres principales estados: ángulo de inclinación, velocidad angular de inclinación y velocidad lineal del vehículo. De igual modo en este programa se considera únicamente el desplazamiento del vehículo en línea recta, por lo que la señal de control que se calcule se aplicará de igual manera a ambos motores considerados simétricos. El controlador implementado tiene la siguiente estructura: θ u = KX = k0 [k1 k2 k3 ] θ̇ = k0 (k1 θ + k2 θ̇ + k3 ν) ν (I.1) Para compensar la posible desviación entre el ángulo cero marcado por la IMU y el cero del centro de gravedad, se va a introducir un término de offset configurable al igual que los otros parámetros del controlador. De esta forma la ecuación quedaría: u = k0 k1 (θ + θ0 ) + k2 θ̇ + k3 ν (I.2) El criterio de signos tomado para la referencia del ángulo de inclinación, velocidad angular y velocidad lineal del vehículo se muestra en la Fig. 9.1. Es importante tener en cuenta que el signo del ángulo se está tomando como referencia a partir de un perfil concreto del vehículo, es decir, visto desde el lado donde se encuentra el microcontrolador (lado contrario a la IMU), tal y como se muestra en la Fig. 9.2. De esta forma, la inclinación hacia el lado en el que el vehículo no tiene elementos en su base sería positiva y negativa hacia el lado en el que se encuentra la antena bluetooth. 153 I. CONFIGURACIÓN DEL CONTROLADOR LINEAL LQR Figura 9.1: Criterio de signos para ángulos y velocidad. Figura 9.2: Aclaración del perfil desde el que se toma el criterio de signos. Los motores de corriente continua utilizados en el vehículo presentan una zona muerta con respecto a la señal de control, es decir, el motor no presenta movimiento hasta superar cierto nivel en la señal de control. Esto se debe a la fuerza que el motor tiene que vencer en el conjunto de engranajes para mover todo el sistema y se puede compensar añadiendo un término de offset en la señal de control. Este término puede ser no simétrico por las características físicas del motor, por ello se han de incluir dos términos para compensar el movimiento en ambas direcciones de manera independiente. 154 I. CONFIGURACIÓN DEL CONTROLADOR LINEAL LQR En resumen, para realizar un experimento se ha de configurar una serie de parámetros en el controlador lineal implementado y estos parámetros serán: k1: Término de ganancia del controlador relacionada con el ángulo de inclinación del vehículo. k2: Término de ganancia del controlador relacionada con la velocidad angular del vehículo. k3: Término de ganancia del controlador relacionada con la velocidad lineal del vehículo. k0: Término de ganancia general del controlador. th0: Término de offset sobre el ángulo de inclinación del vehículo (en radianes). zmp: Término de offset para la zona muerta de los motores en sentido positivo (en unidades de la señal de control). zmn: Término de offset para la zona muerta de los motores en sentido negativo (en unidades de la señal de control). La configuración de estos parámetros implica asignar los valores en la memoria del microcontrolador, y si la asignación se realiza en el código del programa, esto implicará que sea necesario compilar el programa cada vez que se desee modificar esos valores y que se vuelva a cargar el programa en el microcontrolador. Todo este proceso conlleva un tiempo de trabajo que pese a no ser muy elevado se hace bastante considerable si se realiza varias veces de manera repetida para reajustar el controlador. En esa configuración o ajuste del controlador, la estructura del mismo se mantiene inalterada, es decir, se cambian los valores de los parámetros pero el algoritmo sigue siendo el mismo. De esta forma, sería deseable mantener un programa en memoria del microcontrolador y asignar los valores de los parámetros en línea, o lo que es lo mismo, teniendo un único programa compilado, cargado y en funcionamiento en el microprocesador, cambiar los valores de los parámetros por defecto para utilizar esos nuevos valores en el controlador. Gracias a la utilización del adaptador RS232-Bluetooth, podremos establecer una comunicación entre un PC y el microcontrolador de manera que se pueda transmitir información de forma genérica y a través de esto configurar los parámetros. Para la configuración de estos parámetros se ha creado una función en Matlab capaz de comunicarse con el microcontrolador a través del enlace bluetooth establecido por los adaptadores entre los puertos RS232 del PC y la placa del microcontrolador. La comunicación consistirá en: 155 I. CONFIGURACIÓN DEL CONTROLADOR LINEAL LQR Envío por parte del PC de los parámetros a configurar con un formato y orden preestablecido. Recepción e interpretación de los parámetros por parte del microcontrolador. Asignación de valores al controlador en curso. Envío hacia el PC de un asentimiento indicando que se han recibido los parámetros. La función de Matlab indicará al usuario si la comunicación se ha realizado correctamente o no existe la confirmación del microcontrolador. Los valores por defecto con los que se inicia el control una vez que se enciende el microcontrolador se encuentran en la memoria no volátil. Por este motivo, los valores por defecto si deben introducirse en el código del programa que tendrá que ser compilado y cargado en el controlador tras su modificación. Los valores que se configuran en línea para el ajuste de los mismos, estarán ubicados en memoria volátil y por tanto desaparecerán al apagar el controlador. Los valores por defecto se encuentran en el módulo principal del código del programa. En la zona de definición de variables se han agrupado y se les da valor inicial. Es en este punto del código donde se ha de asignar esos nuevos valores por defecto. En la comunicación para la configuración de los parámetros en línea se utiliza un formato fijo de envío y esto mismo se tiene en la lectura e interpretación por parte del microcontrolador. Por esto será necesario asignar y enviar todos los parámetros aunque su valor no se modifique con respecto a los de pruebas anteriores o incluso con respecto a los valores por defecto. El formato para la utilización de la función de Matlab creada es el que se muestra a continuación: paramVBal( k1, k2, k3, k0, th0, zmp, zmn ) Ejemplo: paramVBal(-5.5,-0.2,-0.0005,220,-0.011,6,-7) En caso de que se reciba respuesta del microcontrolador, se interpretará que la comunicación y asignación de parámetros han sido correctas, y se mostrará el mensaje: ”Parámetros cargados correctamente”. Mientras que en caso contrario se mostrará el mensaje ”Error en la asignación de parámetros” para hacer saber al usuario que debe volver a configurar los parámetros: La recepción de parámetros en el microcontrolador está implementada para ser realizada mientras el vehículo está en parada (LED azul del pulsador superior apagado) y, por supuesto, a la vez con el vehículo activado (alimentación activada). 156 I. CONFIGURACIÓN DEL CONTROLADOR LINEAL LQR Para evitar problemas en la comunicación, antes de ejecutar la función de configuración de parámetros en Matlab, será necesario esperar a que el adaptador bluetooth establezca la conexión (LED azul del adaptador encendido y fijo) y comprobar que el vehículo esté en modo de parada (LED del pulsador superior apagado). Al establecerse la conexión entre los adaptadores, éstos se intercambian varios octetos de datos que podrían interferir con la comunicación que se pretende realizar. En caso de que el receptor no esté preparado, se producirá un error en Matlab por superar el tiempo de espera para la comunicación. Es posible que en ese caso sea necesario reiniciar el programa para desvincular el puerto de comunicaciones COM1 que se está usando para el adaptador y poder volver a conectar. Si la comunicación de parámetros se realiza no estando el vehículo en modo de parada, puede que la interpretación de valores no se realice correctamente y sería necesario apagar la alimentación del vehículo para volver a los parámetros por defecto e intentar una nueva configuración. 157 I. CONFIGURACIÓN DEL CONTROLADOR LINEAL LQR 158