TRABAJO FINAL DE CARRERA

T´TULO DEL TFC : Interfaz LabView para programar el sistema de control de I quadrotores ´ ´ ´ TITULACION: Doble titulacion : Ingenier´a Tecnica de Telecomunicaciones, esı ´ ´ ´ pecialidad en Sistemas de Telecomunicacion e Ingenier´a Tecnica Aeronautica, ı ´ especialidad en Aeronavegacion AUTOR: Jordi Bracke Manzanares DIRECTOR: Oscar Casas Piedrafita FECHA: 22 de julio de 2010

T´tulo : Interfaz LabView para programar el sistema de control de quadrotores ı Autor: Jordi Bracke Manzanares Director: Oscar Casas Piedrafita Fecha: 22 de julio de 2010

Resumen ˜ ´ En este trabajo se desarrolla el diseno y construccion del software de abordo de un quadrotor. Se explican los pasos necesarios para estabilizarlo y controlarlo as´ como tamı ´ ´ ´ bien la creacion de una interfaz de prototipado para probar nuevas tecnicas de control y guiado. Dicha interfaz se basa en un quadrotor comercial con las m´nimas modificaciones ı posibles conectado a un ordenador personal. ´ La implementacion se ha realizado sobre el sistema que comercializa Mikrokopter. Se ˜ ´ ha eliminado el firmware de la unidad de vuelo y se ha disenado uno que a traves del puerto serie env´e los datos de los sensores de abordo y reciba unos valores de potencia ı a entregar a los motores. Mediante un conversor serie-usb se ha conectado la unidad de ´ vuelo a un ordenador portatil. El software de vuelo de ejecuta en un PC y se ha escrito en ´ Labview dado que es muy indicado para control y visualizacion de datos. Este sistema permite acelerar enormemente el desarrollo de software de control de ´ quadrotores. La capacidad de visualizar de forma grafica los datos de los sensores de la ´ ˜ ´ unidad de vuelo simplifica la deteccion de errores de diseno y refuerza la realimentacion ˜ ´ que experimenta el usuario con su diseno. La capa de abstraccion que ofrece el sistema ˜ evita al disenador tener que tratar directamente con el hardware de la unidad de vuelo y ´ ˜ la potencia de calculo del PC permite al disenador el uso de coma flotante casi sin restricciones. Por otra parte el uso de Labview evita al programador tener que tratar con uno de ´ los errores mas comunes de C: el mal uso de los punteros.

All necessary steps in order to fly and control it are explained as well as the creation of an interface to prototype control and guidance techniques. This system decreases the developing time of quadrotor’s flight software. 2010 Overview This project is about the design of quadrotor’s fligth software. The communication has been done connecting a serial-usb converter from the quadrotor to a personal computer. The abstraction layer helps him not to deal directly with hardware and the use of Labview prevents mistakes that are very common in C. The designer can visualize sensor data helping him to detect errors. .Title : Labview interface to program a quadrotor’s control system Author: Jordi Bracke Manzanares Director: Oscar Casas Piedrafita Date: July 22. The implementation has been done on the Mikrokopter quadrotor. The new firmware is capable of sending onboard sensor data and receiving motor power data from a personal computer. The flight software is executed on the personal computer and it’s written in Labview as it’s very suitable for control and data visualization. The interface is based on a commercial quadrotor connected to a personal computer. The firmware has been removed in order to install a new one with different capabilities.

.

. . Modificacion y programacion del firmware de la unidad de vuelo . . . . . . . . . . . . . . .5. . . . . . .4. . . . . .2. . ´ CAP´TULO 3. . . . Veh´culos aereos no tripulados I ı . . . . . . . . . . . . . . . . .1. . . . 2. . ´ ´ ´ 3. . . . Quadrotor . . . . . . . .1. . . 2. . . . .2. . . . . . . . . . . . . . . Definicion. . . . .2. . . . . . . . . . . . . . ´ 3. . . . . . . . . . . . Detalles de implementacion . . . . . . . . .1. . . . . . . . . . . . . . . . . . 21 I ´ 3. . . . . . . . Quadrotor o quadricoptero . .2. . . . Descarga del codigo fuente del firmware de la Flight Control . . . . .1. . . . Piloto manual . .5. . . . ı ´ ´ 3. . . . . . . . . . . . . .2. . . . ´ 3. . . . . . .1. . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. . . . Tablas de mezclado (Mixer tables) . . Lenguaje para la programacion del software de control . . . . . . . . . Consideraciones al trabajar con varias plataformas . . . . . ´ 3. . . . . 3. . . Implementacion del quadrotor . . . .6. .1. . . . . . . . . . . . . . . . . ´ 1. . . . . .´NDICE GENERAL I ´ CAP´TULO 1. . . . ´ CAP´TULO 2. . . . 11 11 11 11 12 1. .3. . . . .1. . .2. . . . . . . . . . . . . . .1. . . .2. . . Compilacion del codigo en Windows y programacion del microcontrolador . . . . . 13 13 15 17 19 ´ 2.2. . . . . . Electronica .1. . . . 3. . .3. . 2. . .2. . . . Enlace de comunicacion . . . . . . . . . . . . . . . .1. . . . . . . . . . . . . .4. . . . . . UAVs . . .1. . . . ´ 3. . . .3. . .4. . . . . Eleccion de la plataforma . . . . . . . . . . . . . . Quadrotores actuales . . . . . . .3. ´ 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Esquema y fotograf´a de la plataforma . . Controlador PID . . . . . . . . . . . . . .4. . . . . historia y aplicaciones . . . . . 21 21 26 26 27 27 29 30 30 31 31 33 37 37 38 3. . . . 3. . . . . Comunicacion del quadrotor con el PC . .3. . 13 I ı ´ 2. . . . . . . . . . . . . . ´ 3. . . . . . . . . . . . . . . . . . . . . . . . . ´ 3. . . . . . . . . . . . . . . . . . . . . . . .1. . . .2. . . . . . . . . Programacion del conjunto . . . 1. . . . . . . . . . Fusion de datos . . . . . . . . PC . . . ´ 1. . . . . . . Instalacion del compilador y el gestor de Makefiles . . . . . . . . . . . . . . . . .1. . . . . . . . . Alimentacion del conjunto . . . . . . . Gu´a para la estabilizacion de un quadrotor . . . .1. . . . ´ 3.

. . . Fragmentacion para transportar los datos del GPS . . . Protocolo de comunicacion . . . Placa Navigation Control . . . . . .2. . . . .1. . . . . . . . . . . . . . . . . . . . . . . . . Conclusiones . . . . . . . . . . . . . . . . . Brujula . . .4. . . . . ´ 4. . . . . 41 42 42 43 44 44 45 CAP´TULO 5. .1. . . . . . . . . 4. . . . . . . . . . .1. .3. . . . . . . . . . . . . . . Modelo de eliminacion de falsas lecturas . . . . 47 I . . . . . . 41 I 4.´ CAP´TULO 4. .2. . . . .3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sonar EZ0 .1. . . . . . . . . ´ ´ 4. . . . . .4. . . . . Ampliacion de hardware . . . . . . . . ´ 4. 4. . . . . . . . . . . . . ´ 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GPS . . . . . . . . . . . . . .

1 Esquema de la plataforma: la placa del medio es un puente serie-usb . . .11Fuente ATX . . . . . . . . . . . . . . . . . . . . . .27Apertura y configuracion del puerto serie en Labview . . . . . . . . . . . . . . . . . . . . . . . . 3. . .1 Estructura basica de un quadrotor . . . . . . . . . . . . . . . . ı 3. . . .13Esquema de la interconexion de subsistemas y fotograf´a de la plataforma . . . . . ´ 3. . . . . . . . . . . . . . 3. . . . . . . . . . . . . . . . . . . . . . .2 Draganflyer V5 . . . . . . . . . . . . . . . . . . . . . . . . 3. . .25Padding para que el tamano de la estructura sea multiplo de 32 bit (Linux) . . . .4 ´ ´ ´ ´ Descomposicion de la aceleracion estatica y dinamica mediante filtrado . . . . . . . . . . . . . . Esquema de la placa adaptadora . . . . . . .7 MK3MAG brujula electronica . . . .5 El conversor MKUSB . . .2 Kit del Mikrokopter . . . . . .17Reduccion de la latencia virtual que introduce el sistema operativo . . . . . ´ 3. . . . . .23Big Endian vs Little Endian . . . . . . . . . . . . . . . . . . . . . . .15Codigo de la Flight Control compilado con exito usando make 3. . . . . . . . . .2 2. . . 1. . .26Esqueleto en Labview para programar quadrotores . . 3. . . . . . . . . . . . . . . . . . . . . . . 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 2. . . . . . . . . . . . . ´ 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. . . . ı 3. . . . . . . .20Cliente ping hecho en Labview para medir la latencia de los dos modulos . 3. . . . ˜ ´ Al anadir informacion GPS la latencia pasa de ser casi constante a ser variable ˜ ´ Problema al anadir informacion GPS . . . . . . . . . . . . . . . . . . . . . . . .4 4. ´ 3. . . . . . . . . . . . .18Incremento de la latencia del sistema por medio de feedback nodes . . . . . . . 4. . . 3. . . . . . . . . . . Placa adaptadora montada . . . . . . . . . . . . . . . .24Intercambio de bytes en un array con ancho de palabra de 16 bits . . . . Las dimensiones son perfectas para llevar en un quadrotor . . . . 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 4. . . . . . ´ Descomposicion de la gravedad . . . . . . .3 Placa Flight Control vista desde arriba y desde abajo .6 Motor sin escobillas . . ´ ´ 3. . . ´ 3. . . . . . . . . . . . . . . . . . . . . . . .8 MKGPS . . .2 4. . . . . . . . . . . . . . .´NDICE DE FIGURAS I ´ 1. . . . . . . . . . . . . . . . . . . . . . . .4 Brushless Controller . . . .22Placa Nano ITX.9 Asus M51V . . . . Esquema de las 4 maniobras que queremos controlar sobre un draganflyer ´ Mando Logitech utilizado para controlar los angulos . . . . . . . . . . . . . . . . . . . . . . . .21Latencia de la comunicacion entre dos modulos zigbee . . . .5 4. . . . . . . . . . . . . . . . . ´ 3. . . . . . 3. .3 2. . . . . . . . . . . . . . . . . . . . . . .28Env´o del comando ’5’ al firmware . . . . . . . . . . . . .19Adaptador Xbee USB . . . . . 3. . . . . . . . . . . . . . . . . . ´ ´ Eliminacion de falsas lecturas del sonar . . . . . . . . . . . . ´ ´ 3. . . . . . .16Programando el microcontrolador usando el MK-Tool . . ´ 3. . . . . . .3 4. . . . . . . . . . . . 11 12 14 14 15 19 21 23 23 24 24 24 25 25 26 26 28 28 29 30 32 32 34 35 35 36 36 36 37 37 38 39 40 40 40 41 41 42 42 43 45 3. . . . . . . . .81 y WINAVR20100110 . 3. . . . . . . . . . . . .29Bucle principal . . . . . . . . . . . . . .14Tortoise SVN haciendo un checkout al repositorio de Mikrokopter . . . . . . . . . . . . . . . 3. . . . .6 NaviCtrl con MKGS y MK3MAG . . . . . . . . . 2. ˜ 3. . . . . . . . . . . . . . . . . . . . ´ ´ 3. . . . . .12Puente para encender la fuente ATX . . . . . . . .10Ejemplo de programacion grafica en Labview . . . . . . . . . 3. . . . . . . . . . . . . . . . 3.

.

1: Estructura basica de un quadrotor ´ ´ Dentro de los UAVs los quadrotores estan cobrando cada vez mas importancia gracias a su gran maniobrabilidad y su capacidad VTOL (Vertical Take Off and Landing). A pesar de tener su inicio en el ejercito tienen un gran potencial para aplicaciones de uso civil por lo que se han utilizado en campos como la vigilancia. telemetr´a.1. Se pueden ´ encontrar incluso en el ambito del consumidor a partir de 400 euros. 1. Esto provoca ´ variaciones en los momentos del quadrotor que dan lugar al movimiento que se desea ´ obtener. 1. Esto ha permiti´ do que numerosas universidades lo utilicen como plataforma de investigacion tanto para ´ aplicaciones de control. robotica o incluso inteligencia artificial.1. ´ Quadrotor o quadricoptero ´ ´ Un quadrotor no es mas que una estructura simetrica que consiste en dos barras cruzadas en forma de + o x con motores en sus extremos.1. . historia y aplicaciones ´ ´ ´ Un UAV (del ingles Unmanned Aerial Vehicle) es un veh´culo aereo sin tripulacion humana ı ´ ´ a bordo. El sentido de giro de las helices en dos motores es horario mientras que en otros dos es antihorario. VEH´CULOS AEREOS NO I I TRIPULADOS 1.´ Veh´culos aereos no tripulados ı 11 ´ CAP´TULO 1. ´ Figura 1. sin olvidar el aeromodı ´ elismo. Su potencial se empezo a desarrollar despues de la Primera Guerra Mundial. de esta forma se conserva el par motor y evita que gire sobre si mismo. Fueron ampliamente utilizados en operaciones militares. En lugar de usarse superficies de control ´ como en un avion. tanto para entrenamiento como ´ para misiones.1. UAVs ´ Definicion. el control se efectua variando la potencia de los motores.2. ı ´ ´ busqueda de civiles en catastrofes y fotograf´a aerea entre otras.

Quadrotores actuales Hacer volar un quadrotor ha dejado de ser algo innovador para convertirse en un reto dado ´ que existen una gran cantidad de modelos. ´ 2. creacion de un esqueleto en Labview que haga uso de dicha interfaz.12 Interfaz LabView para programar el sistema de control de quadrotores 1. ˜ 3. otros a pesar de ser comerciales requieren alrededor de 10 horas de montaje como es el caso de Mikrokopter y otros sin embargo se puede adquirir la lista de materiales y construirlo como el AeroQuad o el Quadcopter.2. . creacion de una interfaz de comunicacion entre un quadrotor comercial y un or´ denador personal que permita la optimizacion a nivel de prototipo del software de ´ navegacion y control. disenar el software de vuelo de un quadrotor sobre el esqueleto anterior.2: Draganflyer V5 Los objetivos de este proyecto son: ´ ´ 1. Este soft´ ´ ware tendra elementos programables que podran ajustarse/adaptarse a cada uno de los prototipos de quadrotor que quiera utilizarse. Figura 1. Dentro del ambito del consumidor algunos han encontrado su vertiente comercial como Draganfly.

Acelerometros: Miden la aceleracion. Con ellos se puede medir tambien la gravedad. ´ Fusion de datos ´ El objetivo principal para mantener el quadrotor estabilizado es mantener el angulo de ´ ´ pitch y roll lo mas cercano posible a 0. Por ejemplo la aplicacion de potencia a un motor ´ ´ ´ generara un aumento/disminucion de la aceleracion y/o velocidad angular.´ Gu´a para la estabilizacion de un quadrotor ı 13 ´ CAP´TULO 2. la estructura ´ ´ ´ simetrica y el angulo es 0 toda la componente que propulsion que proporciona el motor ´ se utiliza para la ascension. Para calcularlo se utilizaran giroscopios que proporcionan la velocidad angular. Permite conocer la altura aproximada. ´ ´ ´ ´ 4. ´ Por lo tanto si se desea conseguir el angulo cercano a 0 es importante que se conozca ´ este con la mayor exactitud posible. Idealmente si las helices son perfectas.2. ´ ´ Para evitar que este se propague se debe contrastar el angulo con otra fuente de infor´ Es aqu´ donde entran en juego los acelerometros que miden tanto aceleracion ´ ´ macion. ´ ´ ´ 2. Este calculara una respuesta que se enviara a los motores. Depende de la ´ calidad del giroscopio el error sera mayor o menor. GU´A PARA LA ESTABILIZACION I I DE UN QUADROTOR 2. Sensor de presion: Mide la presion atmosferica. ´ ˜ ´ Al principio el error sera pequeno. Entre los sensores se pueden distinguir: 1.1. se utiliza para no perder la orientacion. 2. ı . ´ ´ 3. Giroscopios: Miden la velocidad angular. Es un sistema ´ ´ de lazo cerrado pues la realimentacion se produce a traves del entorno f´sico por el que ı ´ se mueve variando sus magnitudes. Integrando ´ ´ la velocidad angular se obtiene el angulo. Pese a que los dos ultimos no son necesarios son recomendables. ´ Electronica ´ ´ ´ La electronica permitira leer magnitudes f´sicas y convertirlas a un valor digital ademas de ı controlar los motores. Brujula: Mide el campo magnetico. pero es cuestion de segundos. minutos u horas (depende de la calidad del giroscopio y del conversor) que el error pase a ser inaceptable. ´ ´ Todos los sensores despues de acondicionarse se conectan al conversor A/D del micro´ ´ ´ controlador. Pero durante el proceso se integra tambien el ruido que proviene tanto del conversor A/D como del propio giroscopio.

La realimentacion del angulo del acelerometro se hace a traves de un controlador PI. El problema es que miden la suma de las dos por ´ lo tanto se ha de recurrir a filtros paso alto para obtener la componente dinamica y filtros paso bajo para obtener la componente de la gravedad como muestra la Figura 2. La solucion consiste en fusionar ´ ´ ambos datos.2 se puede ´ ´ apreciar que a medida que aumenta la inclinacion el eje X experimenta una aceleracion ´ estatica mayor. ´ En resumen: se tienen los giroscopios que permiten calcular un angulo lo suficientemente ´ rapido para poder estabilizar el sistema a costa de un error que crece en cada paso de ´ ´ ´ integracion y se tienen los acelerometros que permiten calcular un angulo con un error ´ que no va a crecer pero con un retraso considerable.com* .14 Interfaz LabView para programar el sistema de control de quadrotores ´ ´ estatica (gravedad) como la dinamica. El algoritmo se basa principalmente ´ en una matriz de rotacion.1: Descomposicion de la aceleracion estatica y dinamica mediante filtrado Si se determina la componente gravitatoria que se tiene en cada eje se puede averiguar la ´ ´ ´ inclinacion del cuerpo con una simple operacion trigonometrica. Al ser un filtro paso bajo necesitara varias muestras para hacer un promediado ´ ´ cosa que provocara un retardo en el calculo de la componente gravitatoria y por tanto un ´ ´ retardo en el calculo del angulo. la cual se va actualizando multiplicando por una matriz de ´ ˜ ´ ´ ´ ´ angulos pequenos. ´ Figura 2. El detalle de funcionamiento se puede encontrar en diydrones. Una respuesta lenta puede provocar que no el sistema ´ no pueda responder a tiempo para generar una correccion y que por tanto sea inestable.1 ´ ´ ´ ´ Figura 2.2: Descomposicion de la gravedad ´ El problema que presenta este metodo es que es lento debido al retraso que introduce ´ el filtro. En la Figura 2. Se utilizara una matriz DCM (Direct Cosine Matrix) con fusion de datos ´ ´ de acelerometros a traves de un controlador PI [2].

Tablas de mezclado (Mixer tables) ´ ´ Una vez que se conocen los angulos del quadrotor con una cierta precision lo siguiente que hay que plantearse es de que manera se pueden variar. Se puede encontrar mucha ´ ´ informacion sobre navegacion.3: ´ 1.3.3: Esquema de las 4 maniobras que queremos controlar sobre un draganflyer ´ Se van a desglosar que actuaciones requiere cada maniobra y se trataran como si el resto ´ de maniobras no existiera para luego aplicar superposicion.sensores. Un ejemplo lo podemos encontrar en el ´ ArduIMU Quadcopter de Jose Julio [1]. Figura 2. Incrementar/Decrementar angulo de Yaw (naranja) 4. el cual se uso como referencia para la imple´ mentacion del algoritmo DCM 2. ´ 1.. Incrementar/Decrementar angulo de Pitch (rojo) ´ 2.´ Gu´a para la estabilizacion de un quadrotor ı 15 *diydrones.com es una comunidad online amateur sobre UAVs. en lugar de intentar controlar la potencia de cada motor se debe intentar controlar maniobras que se definen en la Figura 2. Para incrementar el angulo se debe aumentar la potencia en el motor 4 a la vez que se reduce la potencia en .control. Incrementar/Decrementar angulo de Roll (verde pistacho) ´ 3. Controlar la potencia de los 4 motores puede resultar un tanto complicado por lo que debemos crear una capa ´ de abstraccion. Incrementar/Decrementar angulo de Pitch: Se coge como referencia incrementar ir ´ de 4 hacia 3 y decrementar ir de 3 a 4 (ver Figura 2..3). Incrementar altura (azul) ´ La idea es que se pueda actuar sobre una maniobra y la capa de abstraccion actue sobre ´ los motores.

Se incrementa el angulo aumentando la potencia en 1 a la vez que se ´ reduce en 2 y viceversa. Al incrementar la potencia en el motor 4. De esta forma se descompensa el par de giro y provoca un incremento en la velocidad angular. Los incrementos y decrementos que se hagan deben ser ´ de la misma magnitud para que se mantenga la potencia de ascension. Incrementar/Decrementar angulo de Yaw: Para esta maniobra se debe conservar el balance de Pitch y Roll. ´ ´ ´ Dependiendo si las helices que estan en sentido horario estan en los motores 1 y ´ 2 o por el contrario estan en los motores 3 y 4. ´ ´ La realizacion de esta maniobra depende de como se tengan colocadas las helices. La potencia obtenida para cada motor por cada una de las 4 maniobras se suma.  (2.1) . la helice ganara velocidad y ´ ´ experimentara un aumento en la sustentacion haciendo subir al brazo que sujeta el ´ ´ ´ motor. La idea general consiste en decre´ mentar la potencia por igual en los motores que tengan las helices girando en un sentido a la vez que se incrementar la potencia por igual en los otros dos motores y viceversa. Es decir la potencia obtenida para el motor 1 en la maniobra de Pitch se suma con la potencia ´ obtenida para el motor 1 en la maniobra de Roll y as´ sucesivamente.  PΦ P  Pm =  Θ  PΨ  Pt ´ Este vector de valores se multiplicara ahora por una tabla de mezclado. Esto es as´ porque no se desea que cada vez que ı se actue sobre la maniobra de Yaw se vean afectadas las de Pitch/Roll. Es decir la potencia con la que se actue sobre el motor 4 ´ ´ ser igual a la del motor 3 y la potencia con la que se actue sobre el motor 1 debera ´ ´ debera ser igual a la del motor 2. La forma matematica ı ´ ´ de hacer esto corresponde a la multiplicacion de un vector por una matriz por esta razon ´ se define un vector de maniobras. ´ 3.16 Interfaz LabView para programar el sistema de control de quadrotores ´ ´ el motor 3. Para decrementar el angulo se hara lo ´ mismo al reves (incrementar potencia en 3 y decrementar en 4). Incrementar altura: Esta maniobra es muy simple: consiste en aumentar la potencia de los 4 motores por igual. donde se establecera la potencia que hay que entregar para hacer cada maniobra. El resultado que experimentara la estruc´ ´ ´ tura es un incremento del angulo de Pitch. Incrementar/Decrementar angulo de Roll: Dada la simetr´a del quadrotor la manioı ´ bra de Roll es igual a la de Pitch solo que cambiando los motores sobre los que ´ se actuan. 4. ´ ´ ´ Las potencias negativas seran para decrementar el angulo y las potencias positivas seran ´ para incrementar el angulo. ´ Por otra parte se debe ser consciente de que el balance de potencia neta sobre los ´ ´ 4 motores debe ser 0 de otra forma la maniobra de ascension se vera afectada. ´ 2. En el motor 3 sucedera lo contrario: la disminucion de potencia provocara un ´ ´ ´ ´ perdida de sustentacion y tendera a caer.

El error que se tendr´a en este caso ı es de 3 grados.75 PMotorFrontal P  0.75 0. el izquierdo el 1 y el derecho el 2. En el caso de quadrotor la realimentacion se produce ı .25 −0.25 (2.3) (2. Generalmente se ´ ´ ´ produce a traves de un medio f´sico.25 0. por ejemplo 3o . Existen una gran diversidad de contro´ ´ ladores. se necesita un controlador que monitoree el angulo y actue sobre las ´ maniobras definidas anteriormente para corregirlo. ´ Por ejemplo los 3o anteriores en el eje de Pitch deberan ser corregidos con una ´ maniobra de Decrementar el angulo de Pitch.25  Mixer =  0.25 0. el trasero el 4. Si se produce una perturbacion en el eje de ´ ´ Pitch este angulo sera mayor. Controlador PID ´ ´ Ahora que ya se conoce el angulo y como actuar sobre los motores para obtener el angu´ lo que se desea.3 el motor frontal es el 3.25 0 0  PMotorIzquierdo  Pt 0 0 0.4. ´ Un controlador PID basico dispone de una entrada y una salida ˜ 1. Por ejemplo cuando el quadrotor no este realizando maniobras se deo ´ ´ ´ seara un angulo de Pitch y Roll de 0 . ´ Debe haber algun tipo de realimentacion entre la salida y la entrada.25 0.75 0.75 0.25 PMotorDerecho  (2.75 0. 2.25 0.25 −0. Para obtener la potencia total: PT = Pm · Mixer      PΦ 0.25 0 0  0 0 0.75 0.25 0.´ Gu´a para la estabilizacion de un quadrotor ı 17   0.25 −0. ´ 2. Los hay muy sofisticados que podran proporcionar respuestas mas suaves pero por su sencillez se va a utilizar en el controlador PID (Proporcional Integral Derivativo). Salida de actuacion: Es la salida sobre la que tiene que actuar para corregir el error.25 −0.2) ´ Es importante tener en cuenta que los calculos se van a hacer en un PC y por tanto se pueden usar decimales.25 0.4) Haciendo referencia a la Figura 2.25  PMotorTrasero  =  PT =  Θ  ·  PΨ  0. pero el uso de coma flotante en un microcontrolador penaliza mucho en el rendimiento. Error: es la diferencia entre la senal que se desea obtener y la que se tiene ac´ tualmente.75 0.75 0.

La salida del controlador PID se genera a partir de la suma de tres partes que se generan a partir del error de entrada. De esta manera sin error la salida ser´a 0 y a medida que el ı error crece se ir´a aumentando el valor de salida. 1. A medida que pasa el tiempo la integral del error ira creciendo y por tanto ´ la salida empezara a incrementar su valor. 2. La salida del controlador ira al vector de potencias de ´ maniobra (Formula 2.5) (2. La derivada puede ser calculada utilizando el valor del giroscopio. La parte derivativa puede ayudar a corregir sobreactuaciones en el sis´ tema ya que se anticipa a la salida para disminuir la actuacion a medida que el error ´ se anula.1). Derivativo: La parte derivativa sale de multiplicar la derivada del error por una constante que llamaremos Kd. La integral puede ser calculada sumando el error en cada tiempo de muestreo. Si la constante Ki es muy grande ˜ puede provocar que un pequeno error haga crecer muy deprisa la salida de la parte ´ ˜ integral produciendo una sobreactuacion. Si Kd es muy grande la correccion puede ser muy fuerte y puede impedir ´ ˜ al sistema alcanzar la correccion deseada pero si es muy pequena puede que no suavice la salida lo suficiente y se produzcan oscilaciones.6) Salida = K p · e(t) + Ki · 0 e(t) dt + Kd · e(t) ˙ ´ Las constantes pueden ser calculadas a partir de algoritmos de aproximacion sucesivos. En el caso del ejemplo anterior. Esta parte es importante porque tiende a cancelar el error. ´ ´ Se usaran controladores PID independientes para cada maniobra. Kp debe ser escogido de manera que se entregue potencia suficiente para corregir pero no demasiada para sobrepasar ´ la correccion. a ı ´ medida que aumenta el angulo de Pitch la salida que controla la maniobra de Pitch ´ aumenta su potencia para rectificar el angulo. ´ Finalmente la salida total no es mas que el resultado de las tres partes de controlador. Probablemente la parte proporcional no ´ ´ sea capaz de corregir el angulo de error que esta produciendo ese peso descom´ pensatorio. Imag˜ inemos el caso de que tenemos un pequeno peso colgado de un eje del quadrotor ´ creando una descompensacion de peso. 3. Aunque el error haya quedado comple´ tamente corregido la salida conservara su valor porque la integral es ir sumando el error y sumar 0 no altera el valor del resultado.18 Interfaz LabView para programar el sistema de control de quadrotores ´ ´ a traves del motor que provoca un cambio en las magnitudes f´sicas que seran medidas ı por el conjunto de sensores. Su entrada error sera el ´ ´ ´ angulo que deseamos obtener menos el angulo que proviene de la fusion de datos entre ´ ´ los acelerometros y giroscopios. Integral: La parte integral sale de multiplicar la integral del error por una constante que llamaremos Ki. Si por el contrario Ki es muy pequeno ´ puede que no sea capaz de corregir a tiempo la descompesacion. . Proporcional: La parte proporcional sale de multiplicar el error por una constante que llamaremos Kp. e(t) = anguloDeseado − anguloActual(t) t (2.

´ se pierde parte de la componente de ascension que pasa a ser de avance. Al inclinarlo. se multiplicara por la tabla ´ ´ de mezclado (Formula 2.5.2) de manera que se obtendra la potencia que hemos de enviar a cada motor.4: Mando Logitech utilizado para controlar los angulos ´ Se puede utilizar un mando como el de la Figura 2. Volviendo a la Formula 2. si se modifica la variable anguloDeseado el error dejara de ser 0 para ´ verse incrementado (o decrementado) . Piloto manual El ultimo paso consiste en dotar al sistema de algun mecanismo para poder guiarlo sobre ´ ´ ´ un espacio 3D. De esta manera el quadrotor ´ ´ alcanzara el angulo propuesto.4 y asignar a cada eje un angulo del quadrotor. 2. ´ Figura 2.´ Gu´a para la estabilizacion de un quadrotor ı 19 ´ Cuando se tenga el vector de potencias de maniobra completo. .suponiendo que el sistema esta estabilizado (0o ´ ´ Pitch y 0o Roll) . Dicho mecanismo consiste en variar los angulo del quadrotor. ´ ˜ La manera de controlar los angulos es actuar directamente sobre la senal de error que ´ ´ entra al PID.5. El PID intentara minimizar el error provocando que el quadrotor se incline sobre el eje en que se haya actuado.

20 Interfaz LabView para programar el sistema de control de quadrotores .

1. Se cambiara el firmware de un quadrotor comercial para convertir la unidad de vuelo en un sistema que se dedique: 1. Un quadrotor: Se entiende por quadrotor el chasis con los motores y la electronica de abordo necesaria para poder volar ˜ ´ ´ 2. ´ Eleccion de la plataforma ´ La plataforma consistira en: ´ 1. leer datos de los sensores y enviarlos a un PC 2. Un ordenador donde se disenara y ejecutara el prototipo.1. Figura 3.1.1.´ Implementacion del quadrotor 21 ´ CAP´TULO 3. 3. Quadrotor ´ Eleccion ´ Para la eleccion del quadrotor sobre el que va a correr el sistema se han planteado una serie de requisitos: .1: Esquema de la plataforma: la placa del medio es un puente serie-usb 3.1. IMPLEMENTACION DEL I QUADROTOR ´ Se pretende que la implementacion del quadrotor sea distinta de las planteadas tradi´ cionalmente.1. recibir la potencia calculada por el PC para cada motor y actuar sobre estos ´ ´ ´ ´ Por tanto la electronica se comprara montada de manera que solo se desarrollara el soft´ ware de vuelo y el firmware que comunicara la unidad de vuelo con el ordenador. 3.

´ 7. Este mismo adaptador sirve para establecer una interfaz con el PC. 3. Las placas de expansion tambien encajan perfectamente en el chasis. ´ 2. El precio no deber´a superar los 1000 por plataforma. Economico: para permitir la compra de mas equipos para impartir docencia con el mismo presupuesto. No pueden haber problemas de disponibilidad. Facil de montar: que el montaje no sea complicado ni demasiado casero. Se puede programar con el mismo adaptador USB que viene con el kit. A ser posible que todo encaje perfectamente.2. un puerto ´ SPI y un puerto I2C. ´ ´ 4. Facil de adquirir: ya que en caso de utilizarse para impartir clases se comprar´an ı varios. Contiene 3 giroscopios ADXRS610 y un ´ acelero metro de 3 ejes LIS344ALH.1. ´ ´ 3. La calidad de los componentes del hardware es mayor que en otros productos del mismo precio. 6. El codigo fuente se puede descargar en el repositorio del la pagina web de Mikrokopter. 3. Opcionalmente se le puede instalar un sensor ´ de presion. En caso de fallo de algu´ na pieza de hardware tambien deben existir recambios y no deben ser dif´ciles de ı encontrar. . ´ Descripcion ´ En este apartado se describen los modulos de los cuales consta el quadrotor Mikrokopter. Las placas encajan perfectamente en el chasis que te viene en ´ ´ el kit. 5. ´ Tras barajar varias opciones finalmente se escogio el Mikrokopter porque: ˜ 1. Flight Control: La unidad principal de vuelo.1. Tambien dispone de dos pines uno de los cuales es utilizado como SLAVE SELECT para el puerto SPI y otro puede ser utilizado para PWM. El kit necesario para volar anadiendo la brujula y el GPS apenas supera los 1000 ´ euros. Como interfaces accesibles sin necesidad de soldadura hay dos UARTs. Es muy popular por lo que encontrar repuestos es facil.22 Interfaz LabView para programar el sistema de control de quadrotores ´ 1. ´ 2. Incorpora un bootloader que permite actualizar el firmware a traves del puerto USB. ı ´ 4. Esto evita a la universidad comprar equipos espec´ficos y permite cargar el nuevo softı ´ ware rapidamente. El kit se compone de: 1. La potencia de los motores es muy buena lo que permite levantar hasta medio kilogramo de peso. Facil de programar: a ser posible que la propia placa incorpore un bootloader. Su procesador es un ATMEGA644P con una frecuencia de reloj de 20 ´ Mhz. Es facil de montar.

2: Kit del Mikrokopter Figura 3.´ Implementacion del quadrotor 23 Figura 3.3: Placa Flight Control vista desde arriba y desde abajo .

Brushless Controller: Las controladoras de motores sin escobillas. Pueden soportar una potencia de 110 W en cont´nua y un ı 220 W de pico trabajando a 11.24 Interfaz LabView para programar el sistema de control de quadrotores 2.4: Brushless Controller 3. y todo lo necesario para montar el quadrotor.. MKUSB: Es un simple conversor serie-USB basado en el famoso FT232RL. Funcionan a ´ traves de I2C o PPM. Figura 3.5: El conversor MKUSB 4. Disponen de medidor de corriente incorporado.chasis. Motores sin escobillas.1 V. Proporciona un conector que se puede conectar directamente a la Flight Control.cables.6: Motor sin escobillas . Figura 3.. Figura 3.

Es el unico componente que no se puede anclar bien a la estructura.8: MKGPS . Figura 3. Componentes opcionales: ´ ´ (a) MK3MAG: Brujula electronica. ´ ´ Figura 3.´ Implementacion del quadrotor 25 5. Ancla perfectamente a la estructura. Lleva 3 sensores de campo magnetico para de´ ´ terminar el norte y proporcionar informacion sobre el heading.7: MK3MAG brujula electronica ´ ˜ı ´ (b) MKGPS: Lleva un GPS de la compan´a u-blox capaz de enviar codigo de in´ ´ ´ formacion NMEA 0183 as´ como codigos propietarios que estan descritos en ı el datasheet. Recomendable ´ ´ para corregir la deriva en el angulo de Yaw debido al error de integracion.

El ´ firmware del microcontrolador del quadrotor se modificara para que pueda cumplir dicha ´ funcion. Cuenta con un procesador de doble nucleo P8400 y 4 GB de RAM. Su precio en 2009 fue de 600 euros.26 Interfaz LabView para programar el sistema de control de quadrotores 3. Figura 3. Control o ´ ˜ ´ ˜ de Robotica se pueden anadir mas funcionalidades acelerando el diseno de manera muy significativa. ´ Se escogio Labview para programar el software de control ya que facilita mucho la vi´ ´ ´ sualizacion de los datos . ´ Lenguaje para la programacion del software de control ´ ´ El software de control se ejecutara en un PC que se comunicara con el quadrotor recibiendo datos en tiempo real de los sensores y enviando datos de potencia a los motores.3. Es capaz de procesar los datos de los sensores en tiempo real.10: Ejemplo de programacion grafica en Labview No obstante el C es el lenguaje por excelencia para aplicaciones embebidas de bajo ´ coste por lo que unicamente se pretende que sea una plataforma para la programacion ´ . PC ´ El PC es el terminal que soportara toda la carga de procesado del sistema. Se ha utilizado ´ un portatil de gama media-baja ASUS M51V.2. ´ ´ Figura 3.9: Asus M51V 3.1.1. Con los modulos adicionales como el kit de Vision. El sistema operativo instalado ´ es Windows 7.

Incluye rutinas de codificacion. Disenar el prototipo en Labview (PC) 2. Dicho conversor viene incluido ı ´ ´ en el Kit de Mikrokopter y esta basado en el chip FT232RL que proporciona a traves de sus drivers un puerto serie de manera transparente. Es muy molesto tener que cambiar ı ı ´ las bater´as tan frecuentemente.1. Hacer los cambios necesarios para compilar en codigo en la plataforma objetivo ´ (compilacion cruzada) 3. Verificar la correcta implementacion en C del prototipo ´ 5. ´ Enlace de comunicacion ´ ´ ´ ´ La comunicacion se hara por puerto serie debido a que es mas simple que la utilizacion de ´ otros puertos como puede ser el USB. Red: para enviar y recibir datos por UDP a Labview ´ 3.3 V 5 V y 12 V. Comunicacion con el Mikrokopter: funciones de apertura de puerto serie y env´o de ı ´ datos. ˜ Se ha desarrollado un esqueleto en C para facilitar la portabilidad del diseno de Labview ˜ a C (una vez finalizado el diseno) que provee de las siguientes funcionalidades: ´ 1. ´ Una manera muy economica de hacerlo es reciclar una fuente ATX de PC. Proporcionan ´ salidas de 3. 2. Joystick: para leer la entrada de Joystick a traves de DirectX ´ De esta manera el planteamiento sugerido para la programacion del software de un quadrotor ser´a el siguiente: ı ˜ 1.5.4. Para este proyecto se usara el conector de 12 V (cable amarillo ´ ´ y negro de los conectores de 4 pines). El tiempo m´nimo de carga de la ı ı ´ bater´a es de 1h (bater´a estandar de carga a 1C). por ello se busco una alternativa para poder trabajar sin ı ´ interrupciones pudiendo conectar el quadrotor a la red electrica. ´ Alimentacion del conjunto La forma directa de alimentar el conjunto es mediante la bater´a que se proporciona en ı el kit.1. A traves de un cable electrico se puede alargar la . El problema es que con los motores encendidos el consumo es muy elevado y la ´ ´ bater´a rara vez alcanzara los 20 minutos de duracion. 3. Portar el diseno a C en un PC ´ 4. No obstante se utilizara un conversor serie-USB ya ´ que la mayor´a de portatiles no incorporan ya puerto serie. Verificar el correcto funcionamiento del sistema ˜ 3.´ Implementacion del quadrotor 27 de prototipos.

12: Puente para encender la fuente ATX . Figura 3.11: Fuente ATX ´ toma para brindar al quadrotor de mas libertad.28 Interfaz LabView para programar el sistema de control de quadrotores Figura 3. Si todo ha ido bien el ventilador debe encenderse. Para encender la fuente se debe puentear el cable verde con un cable negro. La fuente ha de permanecer en el suelo ´ de manera que solo sea necesario levantar el peso del cable.

´ Implementacion del quadrotor 29 3.1.6. Esquema y fotograf´a de la plataforma ı ´ Figura 3.13: Esquema de la interconexion de subsistemas y fotograf´a de la plataforma ı .

14: Tortoise SVN haciendo un checkout al repositorio de Mikrokopter ´ ´ Se ha utilizado Tortoise SVN para descargar el codigo. 3.de/mikrosvn/FlightCtrl/.1. ´ Despues se puede descargar haciendo un checkout a http://mikrokopter. Tambien se puede consultar online. El codigo es muy legible y ´ esta en ingles en lugar de aleman ´ ´ ´ ademas . El login y password estan ligados a las cuentas del foro de Mikrokopter por lo que es necesario crear una cuenta para poder acceder. Es impor´ ´ tante estudiar antes del codigo para moverse dentro de el con facilidad y saber que partes se pueden modificar y que partes no.30 Interfaz LabView para programar el sistema de control de quadrotores 3. ´ Nota: Es muy recomendable utilizar la rama de Killagreg.2. Se eliminara la mayor parte pero se conservara el esqueleto. Figura 3. ´ ´ Modificacion y programacion del firmware de la unidad de vuelo El firmware que viene de serie no provee de las suficientes funcionalidades para estable´ cer una interfaz con el PC lo suficientemente rapida por lo que se tuvo que crear un nuevo firmware a medida. se descargara el codigo fuente del firmware del repositorio ´ ´ para modificarlo.2. Basta con buscar en Google ”Mikrokopter SVN”. ´ ´ Se puede obtener el codigo del repositorio svn. ´ Descarga del codigo fuente del firmware de la Flight Control ´ ´ En lugar de empezar desde 0.

Finalmente se flasheara en el microcontrolador.hex. Dirigirse al directorio donde se ha guardado el codigo de la Fligth Control. No obstante esta ´ version funciona muy bien con Windows 7 .15 . Entre el set de programas que proporciona se puede encontrar make. ´ 4. Hay varias opciones para usar make: ´ 1. Windows usando Cygwin. ´ ´ ´ Compilacion del codigo en Windows y programacion del microcontrolador ´ Una vez se ha descargado el codigo y se han hecho las modificaciones oportunas hay ´ ´ que compilar y enlazar el codigo. Esto se ´ con la orden cd. Se debe editar el Makefile para que las rutas apunten a donde se ha instalado el compilador 3. El archivo Makefile contiene la informacion necesaria ´ para hacerlo. Hay varias versiones de make para Windows pero no todas funcionan correctamente por lo que se estuvo durante un tiempo haciendo uso de las dos opciones anteriores. Inicio-Ejecutar-cmd. ´ Instalacion del compilador y el gestor de Makefiles ´ ´ La compilacion del codigo se gestiona mediante Makefiles. Se interpretan con el comando make. ´ ´ 2. El resultado se puede ver en la Figura 3. El uso de make es muy comun en Linux por lo que es relativamente facil. Por ejemplo hara cd C:\FlightCtrl\branches\codigo_modificado 3. 3. El fichero para flashear ı es el . La version utilizada en este proyecto ha sido WINAVR-20100110.2.81.2.2. make 3.´ Implementacion del quadrotor 31 3. Si todo ha ido bien el codigo deber´a compilar sin errores. Ejecutar make. ´ Para compilar el codigo debemos: 1.3. ´ Como compilador GCC para AVR se puede utilizar WINAVR.exe ´ 2. Abrir un terminal. Cygwin proporciona una capa de emulacion de la API de ´ Linux que permite recompilar facilmente programas de Linux para Windows. Estos archivos contienen el ´ procedimiento que hay que seguir para compilar el codigo y enlazar los distintos archivos objeto que genera el compilador. Es la que se utiliza en el proyecto actualmente. Linux.

6 Kbps recono´ ciendo el comando de programacion. Si el microcontrolador utiliza otra velocidad de puerto ´ serie diferente de 57..32 Interfaz LabView para programar el sistema de control de quadrotores ´ ´ Figura 3. El reset provocara que salte el bootloader y se autoconfigure a 57.6 Kbps se debera hacer un reset manual mientras salga Connect´ ing. ´ Si el sistema no es capaz de conectar con el microcontrolador se debe revisar la conexion del puerto serie y resetear el micro. Figura 3... La herramienta de Mikrokopter conectara con el bootloader ´ instalado en el microcontrolador y lo programara.16.15: Codigo de la Flight Control compilado con exito usando make 3.81 y WINAVR20100110 ´ Para cargar el firmware en el microcontrolador se usara el MK-TOOL.16: Programando el microcontrolador usando el MK-Tool . Hay que dirigirse a ´ ´ la opcion Update Software que aparece tras pulsar el boton Controller Update & Terminal ´ como muestra la Figura 3.

El PC inicia una solicitud de ping 2.´ Implementacion del quadrotor 33 3. ´ Si la latencia es demasiado grande el sistema no sera capaz de responder a tiempo y ´ no podra estabilizarse. Retorno de carro: Para indicar el fin de la transmision.2. Por otra parte. ´ 2.4.4. Direccion de origen/destino ’b’: Normalmente se utiliza la b para indicar que las transmisiones van de/hacia la Flight Control 3. 3. El PC recibe en la contestacion el estado del reloj del sistema y la devuelve sin procesar .4. 3. Para poder medirla se programaron funciones de ping-pong en el ´ microcontrolador y seguidamente se uso el siguiente procedimiento: 1. Byte de sincronizacion ’#’: Todos los mensajes empiezan con este caracter. El microcontrolador recibe la solicitud y guarda el estado del reloj del sistema y lo env´a al PC ı ´ 3. ´ 4.2. ı ´ 5. CRC: Codigo de Redundancia C´clica para verificar la validez de los bytes. Datos: Los datos vienen codificados en base64 en parte para evitar que aparez´ ´ ca el caracter de sincronizacion dentro de los datos.Dentro de los datos viene el identificador de comando. En el SVN se pueden encontrar funciones para gestionar el protocolo en Labview bajo la rama Projects/GroundStation proporcionadas por el usuario Speedy. No obstante aun queda por establecer la comunicacion entre el ´ quadrotor y el PC de manera que ambos se entiendan.2. al tener que transmitir informacion por buses de comunicacion externos aparecen unos problemas que deben tenerse en cuenta. Protocolo de la Flight Control ´ ´ Las funciones se comunicacion que se encuentran en el codigo fuente siguen este protocolo: ´ ´ 1.1. ´ Medicion de la latencia de la plataforma Se puede definir la latencia del sistema como el tiempo que tarda un paquete de datos en ir y volver. La placa Flight Control utiliza un protocolo especial. El nuevo firmware utiliza rutinas del firmware original a efectos de reuti´ ´ ´ lizar codigo.2. ´ Comunicacion del quadrotor con el PC Con el nuevo firmware ya se pueden leer los datos a una velocidad suficiente como para ´ estabilizar el quadrotor.

Esto ademas ´ ´ puede verse agravado porque muchos modulos necesitan paquetizar la informacion antes ´ implica tener que llenar un buffer antes de enviar la de enviarla.4. Para certificarlo se desactivo el receptor ´ ´ de la UART en el microcontrolador y se comprobo que la tasa de recepcion de datos no ´ era proporcional al incremento de velocidad.4.2. No se puede desactivar totalmente pero se puede reducir de 16 ms que viene por defecto a 1 ms. El microcontrolador recibe el paquete con el estado del reloj del sistema y a partir del nuevo estado del reloj calcula los milisegundos que ha tardado en volver el paquete El sistema operativo puede incrementar virtualmente esta latencia reteniendo los datos. Para ello se debe ir a Administrador de dispositivos y buscar el puerto COM sobre ´ el que se esta trabajando. Velocidad del puerto serie y Full Duplex Pese a que el conversor serie-usb es full-duplex las pruebas demostraron que fuera de ´ ´ velocidades estandar no se comporta como tal. Por ello finalmente se decidio usar 115.2 ´ Kbps en lugar de 500 Kbps que es la maxima velocidad de trasferencia que soporta el microcontrolador. ´ Figura 3. ´ ´ ´ ´ Tambien se llego a la conclusion que al funcionar en conmutacion (half-duplex) la latencia ´ era mas variable que trabajando en full-duplex.3.4.34 Interfaz LabView para programar el sistema de control de quadrotores 4.2.17: Reduccion de la latencia virtual que introduce el sistema operativo 3. 3. Paquetizar la informacion . ´ Estudio sobre la posibilidad de incorporar un modulo RF ´ ´ ´ Los modulos RF pueden verse afectados por la propagacion multicamino.

El servidor tan solo deb´a devolver lo mismo que enviaba el cliente (un ı timestamp).´ Implementacion del quadrotor 35 ´ ´ informacion. Tambien se observo un comportamiento mas ”perezoso. ´ una oscilacion .19: Adaptador Xbee USB Se hicieron dos programas en Labview implementado la funcionalidad de ping.21 puede ser suficiente para llevar al quadrotor fuera ´ de la zona de estabilidad. El cliente representaba una diferencia de timestamps que correspond´a a la ı latencia. Contra mas se variaba la latencia mas hab´a que variar ı ´ ´ ´ ´ los parametros del PID. ˜ Ante las dudas de sobre como podr´a a afectar se hizo un pequeno estudio que conı ´ sistio en: 1. El pico que se aprecia en la Figura 3. La manera de hacer esto en Labview es mediante un feedback node. ´ Durante las pruebas de vuelo con latencia variable el quadrotor mostro un comportamiento violento e inestable. ´ Para poder comprobar la latencia de los modulos RF se utilizaron dos Xbee PRO conectados a un adaptador USB Figura 3.18: Incremento de la latencia del sistema por medio de feedback nodes Los resultados demostraron que el sistema se manten´a estable siempre y cuando se ı ´ ´ ´ reajustaran los parametros los PID. observar el comportamiento del quadrotor cuando este era sometido a una latencia fija y una variable. es decir un tiempo de espera. Una vez fuera de esta zona es dif´cil recuperarlo. Como consecuencia se deduce que la latencia variable afecta muy negativamente a la estabilidad del sistema debido a que el sistema no va a ir ´ ´ ´ adaptando los parametros del PID dinamicamente y por tanto este se volvera inestable. As´ por cada feedback node ı ´ ´ ´ que se ponga se estara retrasando la informacion a razon de un medio de la latencia habitual. Un cliente y un servidor. Entrara en ı ´ creciente hasta que finalmente se estrellara. Figura 3. En el de una red Wifi. ´ 2. la informacion no viaja ´ siempre por el mismo camino por ello la latencia variara dependiendo del estado de la red. ver la latencia que presentan dos modulos Xbee ´ ´ Para retrasar la informacion un ciclo de reloj en electronica se utilizan biestables. Estos se colocaran justo antes de enviar los datos con la potencia de los motores.a medida ´ que la latencia iba creciendo.

Las dimensiones son perfectas para llevar en un quadrotor . ´ ´ Tras pensar en formas de eliminar los cables que lo limitan se llego a la conclusion que ´ ´ la solucion mas inmediata es embarcar el ordenador en el quadrotor.20: Cliente ping hecho en Labview para medir la latencia de los dos modulos ´ ´ Figura 3. No obstante se debe brindar la proteccion suficiente pues al ser un sistema de prototipos las posibilidades de estrellarlo son altas. Si esta muy sobrecargado ´ es posible que Labview no tenga tiempo de CPU suficiente para procesar y tarde mas de lo esperado en generar el resultado.36 Interfaz LabView para programar el sistema de control de quadrotores ´ Figura 3. Figura 3. En el mercado ex´ isten placas de PC a partir de 12cm x 12cm .21: Latencia de la comunicacion entre dos modulos zigbee ´ Otra causa del aumento de latencia brusco puede ser el PC.22: Placa Nano ITX.

23: Big Endian vs Little Endian ´ Como muestra la Figura 3. Puede ser una tarea sencilla cuando se trata de arrays donde cada elemento tiene el mismo ancho de bits. 3.1. Figura 3. es decir un array de 16 ´ ´ ´ bits tendra todos los campos de 16 bits y la ordenacion sera tan simple como hacer un intercambio de bytes cada 2 bytes. Las dos maquinas ı ´ ´ ´ tienen el mismo numero pero lo guardan y leen de manera distinta.3. ´ Programacion del conjunto Consideraciones al trabajar con varias plataformas Endianness El endianness se refiere a como se guardan las palabras en memoria en arquitecturas de ´ ´ mas de 8 bits (suponiendo 8 bits como elemento atomico).1.24: Intercambio de bytes en un array con ancho de palabra de 16 bits Pero la cosa se puede complicar cuando hay estructuras que albergan elementos de difer˜ ´ entes tamanos ya que la ordenacion de los bytes de cada elemento se debe hacer por separado. 3. Figura 3.3.3. Es por ello que se ´ debe tener en cuenta y reordenar los bytes. .23 si se pasaran los datos de la memoria de una maquina a ´ otra cada una ver´a numeros distintos aun siendo el mismo numero.1.´ Implementacion del quadrotor 37 3.

´ 3.4. ´ ´ 2.2 Kbps en lugar de 57. ´ Alineacion de memoria Aun trabajando con la misma arquitectura puede ser que el sistema operativo trabaje de ´ ´ manera diferente. Algunos sistemas operativos como Linux por temas de eficiencia utilizan alineamiento a 32 bits. ´ ˜ Figura 3. 3. periodo de trabajo de 7 ms. calculo de latencia en tiempo real. ´ Detalles de implementacion ˜ Especificaciones del firmware disenado ´ Como ya se menciono anteriormente el firmware que viene de serie no es capaz de satisfacer las necesidades que presenta este proyecto. ´ 4. Es decir en realidad la estructura ´ estara ocupando 8 bytes como muestra la Figura 3.0.3. Los 3 bytes que ı ´ faltan para completar se rellenan aunque no se utilicen.25: Padding para que el tamano de la estructura sea multiplo de 32 bit (Linux) ´ Por ejemplo: supongamos que se tiene una estructura que ocupa 5 bytes. Esto permite hacer las configuraciones oportunas desde el software ublox center. Permite un frecuencia de operacion maxima de 143Hz ´ con toda la electronica de abordo funcionando. Por ello pese a conservar el esqueleto ˜ se han anadido cosas y se han quitado otras muchas que no se van a utilizar como por ejemplo funcionalidades de vuelo. Es decir todas las ´ ´ estructuras deberan ser multiplos de 32 bits de lo contrario se rellenaran los bytes que ´ ˜ falten hasta que el tamano de la estructura sea un multiplo de 32 bits. velocidad de trabajo incrementada a 115.4. Las caracter´sticas principales son: ı 1.1. . 3.2. soporte para GPS: despues de un reset actua de manera transparente como si ´ estuviera conectado directamente al PC.3. Es el caso de la alineacion de memoria. Para llegar a ser multiplo de 32 bits (alineamiento a 4 bytes) deber´a ocupar 8 bytes.6 Kbps para satisfacer a tiempo la demanda de datos hacia el ordenador.25 ˜ ´ La plataforma ha sido disenada en Windows que utiliza alineacion a 1 byte por lo que ´ si se quiere utilizar en Linux o Mac se tendran que modificar las funciones de copia de ´ estructuras en los bloques de recepcion de datos.38 Interfaz LabView para programar el sistema de control de quadrotores 3.

Es decir cada vez que se soliciten ´ ´ datos. Figura 3.4. ´ ´ ´ 2. Y los comandos que env´a: ı ´ 1. ´ 3. ’6’ : Calibrar la brujula. 3. Junto con los motores se env´a el timesı tamp de la ultima muestra recibida para calcular la nueva latencia . ’4’: Enviar informacion de los 4 motores.26 muestra el esqueleto software de un quadrotor. soporte para sonar pwm gracias a liberacion del puerto cambiando el protocolo de la brujula. En otro caso se desperdicia mucho tiempo de CPU durante el bloqueo. ’5’ : Desactivar la transmision directa de datos GPS y empezar la transmision cont´nua ı ´ de datos de la electronica de abordo cada 7 ms. Se ha de enviar un comando ’5’ previamente. ´ ´ ´ 6. En la Figura 3.0.4. ’r’: Encender/Apagar el led rojo.27) . si no hay. soporte de control de potencia de motores. ´ Modelo de operacion ´ ´ Por sencillez el codigo se implementara de manera que las operaciones de lectura del ´ puerto serie bloqueen el programa. ´ Este metodo funciona bien para programas que no tengan mucha carga computacional. ’I’ : Paquete de datos con las medidas de la electronica de abordo. De esta manera la velocidad de ejecucion del pro´ grama se regulara segun el flujo de entrada de datos. soporte para brujula MK3MAG utilizando el protocolo I2C. ´ 7. el programa quedara a la espera hasta que lleguen y posteriormente ´ procesara los nuevos datos adquiridos.26: Esqueleto en Labview para programar quadrotores El primer paso consiste el abrir el puerto serie para trabajar a un velocidad de 115.2 Kbps (Figura 3. Los comandos que acepta siguiendo el protocolo de la Flight Control son: 1.´ Implementacion del quadrotor 39 5. ´ ´ 4. Util para depurar.

Del ”MK READ ı ´ DATA”se extrae tambien el timestamp para calcular la nueva latencia. Es aqu´ donde se tiene que disenar todo el sistema.29: Bucle principal ´ Los datos de los motores se env´an a traves del array rellenado con ceros. Esta funcion facilita los datos a traves de ı ´ ´ un cluster que permite obtener informacion de todos los sensores de abordo ademas del ˜ GPS.28). ı Figura 3. Este bucle se ejecuta cada 7 ms (deter´ ´ ´ minado por el firmware) gracias al funcion ”MK READ DATA”. Esta funcion ha sido creada ´ a medida para comunicarse con el firmware de forma optima. el programa ´ ´ ´ se para aqu´ a la espera de que lleguen mas.28: Env´o del comando ’5’ al firmware ı El siguiente paso consiste en enviarle el comando ’5’ para que empiece a enviar los datos ´ de los sensores de forma periodica cada 7 ms(Figura 3. Si no hay datos. ´ El ultimo paso es la creacion del bloque principal.27: Apertura y configuracion del puerto serie en Labview Figura 3. ı . Una vez todo empaquetado se env´a de vuelto al quadrotor utilizando el comando ’4’.40 Interfaz LabView para programar el sistema de control de quadrotores ´ Figura 3.

AMPLIACION DE HARDWARE I 4.2 y su montaje se puede ver en la Figura 4. A traves del GPS permite anadir funcionalidades como ”vuelta o ”mantener posicion”. ´ ´ las ecuaciones de navegacion y liberar de carga computacional a la Flight Control. Finalmente ´ ´ se decidio conectar el resto de la electronica a la Flight Control usando una placa expan˜ ´ sora disenada para tal fin cuyo esquema esta en la Figura 4. Placa Navigation Control Figura 4. Para ello utiliza un microcontrolador de 32 bit para resolver ´ a casa. A traves ´ de un puerto SPI se transfiere la informacion calculada de la NaviCtrl a la Flight Control.1: NaviCtrl con MKGS y MK3MAG ´ Mikrokopter provee de una placa de expansion llamada NaviCtrl que amplia las funcional´ ˜ idades de la Flight Control. En este proyecto se estuvo barajando la posibilidad de usar la placa pero finalmente tras ´ ´ numerosas pruebas se llego a la conclusion que penalizaba sobre la latencia.2: Esquema de la placa adaptadora .´ Ampliacion de hardware 41 ´ CAP´TULO 4.1.3 Figura 4.

La latencia pasa de ser ´ ´ fija a ser variable con un patron que se va repitiendo a lo largo de la grafica (Figura ´ 4. 4.4: Al anadir informacion GPS la latencia pasa de ser casi constante a ser variable ´ Los datos del GPS tienen una baja frecuencia de actualizacion con la contra que el pa´ quete de informacion es muy grande.42 Interfaz LabView para programar el sistema de control de quadrotores Figura 4.4). Es ˜ ´ dif´cil mantenerlo en el aire y una pequena perturbacion lo hace reaccionar violentamente ı ´ sobreactuando y estrellandolo contra el suelo (o el mobiliario en el caso de vuelo interior).3: Placa adaptadora montada 4.1. GPS ´ Fragmentacion para transportar los datos del GPS ´ Al incorporar informacion GPS empiezan a aparecer problemas.2.2. El quadrotor hace eco de esta situacion y se comporta de manera nerviosa. En un inicio el periodo de muestreo del firmware era . ˜ ´ Figura 4.

5 aparece esquematizado lo que suced´a. No obstante ´ ´ este puerto era necesario para el sonar por lo que se tuvo que cambiar el protocolo de la brujula e implementar la lectura a partir del I2C. El total de la informacion de la estructura se recib´a al cabo de 15 ciclos. El caso es que el tiempo ı disponible para el env´o antes de que se enviara el siguiente bloque de datos de sensores ı era de 1.´ Ampliacion de hardware 43 ´ ´ ´ cada 4 ms. ı ˜ ´ Figura 4. En ı la Figura 4. 4.3. Aumentar el periodo de muestreo: El periodo total de muestreo deber´a ser cada 13 ı ms.7 ms. Fragmentar los datos: Los datos del GPS se deben fragmentar de manera que de ´ tiempo a transmitirse en el tiempo que hay disponible justo despues de los datos (zona pintada de verde). 2. ´ 3. Durante este tiempo no se pod´an enviar datos de los sensores. ´ Finalmente tras varias pruebas se decidio aumentar el periodo de muestreo a 7 ms y ´ fragmentar los datos del GPS en bloques de 8 bytes. Brujula ´ ´ La Flight Control tiene implementada la lectura de la brujula a traves de PWM. Una combinacion de las dos anteriores: Aumentar el tiempo de muestreo a la vez ´ que se hace uso de la fragmentacion de datos. Las pruebas de vuelo efectuadas no presentaron ´ incidencias salvo que se tuvieron que modificar los parametros de los PIDs debido al cambio de la latencia. ´ . Un bloque de GPS tardaba en enviarse 11.5: Problema al anadir informacion GPS ´ Despues de transmitir un paquete de datos (IMU DATA) se comprobaba si hab´an datos ı ´ GPS para transferir y si los hab´an se enviaban justo despues. La informacion de un bloque GPS ten´a una duracion teorica de 11. Se tuvo que modificar el firmware para tal fin ı aumentando la complejidad del mismo.7 ms.3 ms. ı ´ Ante esta situacion podemos optar entre 3 soluciones: 1.

Se escogio el puerto PWM para la lectura de datos. Escribir datos 5. Para leer de la brujula: ´ 1. Escribir 50h (direccion I2C escritura de la brujula) ´ 3.44 Interfaz LabView para programar el sistema de control de quadrotores 4.1. Generar START ´ 2. Escribir 51h (direccion I2C lectura de la brujula) ´ 6. ´ Protocolo de comunicacion EL problema de la brujula de Mikrokopter es que no tiene especificaciones por lo que para ´ ´ ´ entender el protocolo de comunicacion se debe recurrir al codigo fuente del repositorio. Escribir 50h (direccion I2C escritura de la brujula) ´ 3. ´ Sonar EZ0 ´ El sonar EZ0 es capaz de medir distancias por ultrasonidos y proporcionar la lectura a ´ ´ traves de varios puertos.4. Escribir comando 4. Generar Stop 4. Generar START ´ 5. Leer 7. Generar START ´ 2. .3. Escribir CRC 6. Escribir comando 4. ´ ´ ´ Tras varios analisis del codigo y pruebas se determino la secuencia de lectura y escritura. Leer CRC 8. Generar Stop Para escribir en la brujula ´ 1.

4. ´ Modelo de eliminacion de falsas lecturas ´ Al funcionar por ultrasonidos es probable que el sonar obtenga falsas lecturas debido a rebotes con el medio. Su principio de funcionamiento es muy simple: la muestra actual menos la anterior en valor absoluto no debe sobrepasar un umbral. El filtro ´ ˜ paso bajo se utiliza para suavizar la senal.6: Eliminacion de falsas lecturas del sonar .´ Ampliacion de hardware 45 4. Para evitar esto se implemento un sistema antirebotes. En caso de sobrepasarlo se usa la ultima lectura.1. ´ ´ Figura 4.

46 Interfaz LabView para programar el sistema de control de quadrotores .

Con el software y los algoritmos de control implementados es capaz de volar en interiores en control manual y realizar cambios ´ ´ de rumbo bruscos sin perder la estabilidad. ´ ´ En un futuro se desea perfeccionar el quadrotor. . Muchas de las soluciones planteadas ´ en este escrito son solo una de multiples que se han probado. completar el software de navegacion GPS ´ ´ ´ as´ como dotar al sistema de vision artificial. Ademas el software desarrollado es facilmente ´ escalable y se adapta muy facilmente a otras plataformas de quadrotores distintas que la que se ha utilizado (Mikrocopoter) Pese a que se han cumplido todos los objetivos. Para esto ultimo se ha de “convertir” el sistema ´ ´ ˜ disenado en un sistema embebido en el propio hardware de la plataforma.Conclusiones 47 CAP´TULO 5. la dificultad ha sido mucho mayor de la prevista debido a la multidisciplinaridad del proyecto. Si es posible tambien se intentara presentarlo ı ´ a algun concurso de ambito internacional. CONCLUSIONES I El sistema cumple todos los objetivos planteados.

48 Interfaz LabView para programar el sistema de control de quadrotores .

http://www. http://diydrones.mikrokopter.com IMU:Theory” .BIBLIOGRAF´A I 49 BIBLIOGRAF´A I [1] Jose Julio.googlecode. “DCM http://gentlenav.de [4] “Diydrones” .com/profiles/blogs/arduimu- [2] Premerlani-William and Bizard-Paul.pdf [3] “Mikrokopter” . http://www.diydrones.com/files/DCMDraft2. quadcopter “ArduImu Quadcopter”. .

Sign up to vote on this title
UsefulNot useful

Master Your Semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master Your Semester with a Special Offer from Scribd & The New York Times

Cancel anytime.