Está en la página 1de 49

TRABAJO FINAL DE CARRERA

T ITULO DEL TFC : Interfaz LabView para programar el sistema de control de quadrotores : Ingenier TITULACION: Doble titulacion a Tecnica de Telecomunicaciones, es e Ingenier pecialidad en Sistemas de Telecomunicacion a Tecnica Aeronautica, especialidad en Aeronavegacion AUTOR: Jordi Bracke Manzanares DIRECTOR: Oscar Casas Piedrata 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 Piedrata Fecha: 22 de julio de 2010

Resumen y construccion del software de abordo de un En este trabajo se desarrolla el diseno quadrotor. Se explican los pasos necesarios para estabilizarlo y controlarlo as como tam la creacion de una interfaz de prototipado para probar nuevas tecnicas bien de control y guiado. Dicha interfaz se basa en un quadrotor comercial con las m nimas modicaciones posibles conectado a un ordenador personal. se ha realizado sobre el sistema que comercializa Mikrokopter. Se La implementacion del ha eliminado el rmware de la unidad de vuelo y se ha disenado uno que a traves 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 El software de vuelo de ejecuta en un PC y se ha escrito en vuelo a un ordenador portatil. de datos. Labview dado que es muy indicado para control y visualizacion Este sistema permite acelerar enormemente el desarrollo de software de control de quadrotores. La capacidad de visualizar de forma graca los datos de los sensores de la de errores de diseno y refuerza la realimentacion unidad de vuelo simplica la deteccion La capa de abstraccion que ofrece el sistema que experimenta el usuario con su diseno. 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 otante casi sin restricciones. Por otra parte el uso de Labview evita al programador tener que tratar con uno de comunes de C: el mal uso de los punteros. los errores mas

Title : Labview interface to program a quadrotors control system Author: Jordi Bracke Manzanares Director: Oscar Casas Piedrata Date: July 22, 2010

Overview This project is about the design of quadrotors igth software. All necessary steps in order to y and control it are explained as well as the creation of an interface to prototype control and guidance techniques. The interface is based on a commercial quadrotor connected to a personal computer.

The implementation has been done on the Mikrokopter quadrotor. The rmware has been removed in order to install a new one with different capabilities. The new rmware is capable of sending onboard sensor data and receiving motor power data from a personal computer. The communication has been done connecting a serial-usb converter from the quadrotor to a personal computer. The ight software is executed on the personal computer and its written in Labview as its very suitable for control and data visualization.

This system decreases the developing time of quadrotors ight software. The designer can visualize sensor data helping him to detect errors. The abstraction layer helps him not to deal directly with hardware and the use of Labview prevents mistakes that are very common in C.

INDICE GENERAL
CAP ITULO 1. Veh culos aereos no tripulados
. . . . . . . . . . . . . 11 11 11 11 12

1.1. UAVs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . historia y aplicaciones . . . . . . . . . . . . . . . . . . . 1.1.1. Denicion, 1.1.2. Quadrotor o quadricoptero . . . . . . . . . . . . . . . . . . . . . .

1.2. Quadrotores actuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

de un quadrotor . . . . . . 13 CAP ITULO 2. Gu a para la estabilizacion


2.1. Electronica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 13 15 17 19

de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Fusion 2.3. Tablas de mezclado (Mixer tables) . . . . . . . . . . . . . . . . . . . . . .

2.4. Controlador PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5. Piloto manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

del quadrotor . . . . . . . . . . . . . . . 21 CAP ITULO 3. Implementacion


de la plataforma 3.1. Eleccion . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 21 26 26 27 27 29 30 30 31 31 33 37 37 38

3.1.1. Quadrotor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2. PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . del software de control . . . . . . . . 3.1.3. Lenguaje para la programacion . . . . . . . . . . . . . . . . . . . . . . . . 3.1.4. Enlace de comunicacion del conjunto . . . . . . . . . . . . . . . . . . . . . . . 3.1.5. Alimentacion 3.1.6. Esquema y fotograf a de la plataforma . . . . . . . . . . . . . . . . y programacion del rmware de la unidad de vuelo . . . . . 3.2. Modicacion 3.2.1. Descarga del codigo fuente del rmware de la Flight Control . . . . . del compilador y el gestor de Makeles . . . . . . . . . . 3.2.2. Instalacion del codigo del microcon3.2.3. Compilacion en Windows y programacion trolador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . del quadrotor con el PC . . . . . . . . . . . . . . . . 3.2.4. Comunicacion del conjunto . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3. Programacion 3.3.1. Consideraciones al trabajar con varias plataformas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4. Detalles de implementacion

de hardware . . . . . . . . . . . . . . . . . . . 41 CAP ITULO 4. Ampliacion


4.1. Placa Navigation Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. GPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . para transportar los datos del GPS . . . . . . . . . . 4.2.1. Fragmentacion 4.3. Brujula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1. Protocolo de comunicacion 4.4. Sonar EZ0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . de falsas lecturas . . . . . . . . . . . . . . . 4.4.1. Modelo de eliminacion 41 42 42 43 44 44 45

CAP ITULO 5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . 47

INDICE DE FIGURAS
1.1 Estructura basica de un quadrotor . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Draganyer V5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 2.2 2.3 2.4 de la aceleracion estatica Descomposicion y dinamica mediante ltrado . . de la gravedad . . . . . . . . . . . . . . . . . . . . . . . Descomposicion Esquema de las 4 maniobras que queremos controlar sobre un draganyer Mando Logitech utilizado para controlar los angulos . . . . . . . . . . . . . . . . . . . . . 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.1 Esquema de la plataforma: la placa del medio es un puente serie-usb . . . . . 3.2 Kit del Mikrokopter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Placa Flight Control vista desde arriba y desde abajo . . . . . . . . . . . . . . 3.4 Brushless Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 El conversor MKUSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6 Motor sin escobillas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7 MK3MAG brujula electronica . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8 MKGPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9 Asus M51V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . graca 3.10Ejemplo de programacion en Labview . . . . . . . . . . . . . . . . . . 3.11Fuente ATX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.12Puente para encender la fuente ATX . . . . . . . . . . . . . . . . . . . . . . . de subsistemas y fotograf 3.13Esquema de la interconexion a de la plataforma . . . 3.14Tortoise SVN haciendo un checkout al repositorio de Mikrokopter . . . . . . . . 3.15Codigo de la Flight Control compilado con exito usando make 3.81 y WINAVR20100110 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.16Programando el microcontrolador usando el MK-Tool . . . . . . . . . . . . . . de la latencia virtual que introduce el sistema operativo . . . . . . . 3.17Reduccion 3.18Incremento de la latencia del sistema por medio de feedback nodes . . . . . . 3.19Adaptador Xbee USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.20Cliente ping hecho en Labview para medir la latencia de los dos modulos . . . entre dos modulos 3.21Latencia de la comunicacion zigbee . . . . . . . . . . . . . 3.22Placa Nano ITX. Las dimensiones son perfectas para llevar en un quadrotor . . 3.23Big Endian vs Little Endian . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.24Intercambio de bytes en un array con ancho de palabra de 16 bits . . . . . . . de la estructura sea multiplo 3.25Padding para que el tamano de 32 bit (Linux) . . . 3.26Esqueleto en Labview para programar quadrotores . . . . . . . . . . . . . . . del puerto serie en Labview . . . . . . . . . . . . . . 3.27Apertura y conguracion 3.28Env o del comando 5 al rmware . . . . . . . . . . . . . . . . . . . . . . . . 3.29Bucle principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 4.2 4.3 4.4 4.5 4.6 NaviCtrl con MKGS y MK3MAG . . . . . . . . . . . . . . . . . . . . . . . . . Esquema de la placa adaptadora . . . . . . . . . . . . . . . . . . . . . . . . . Placa adaptadora montada . . . . . . . . . . . . . . . . . . . . . . . . . . . . GPS la latencia pasa de ser casi constante a ser variable Al anadir informacion GPS . . . . . . . . . . . . . . . . . . . . . . . Problema al anadir informacion de falsas lecturas del sonar Eliminacion . . . . . . . . . . . . . . . . . . . . .

Veh culos aereos no tripulados

11

CAP ITULO 1. VEH ICULOS AEREOS NO TRIPULADOS


1.1.
1.1.1.

UAVs
historia y aplicaciones Denicion,

Unmanned Aerial Vehicle) es un veh humana Un UAV (del ingles culo aereo sin tripulacion a desarrollar despues de la Primera Guerra Mundial. a bordo. Su potencial se empezo Fueron ampliamente utilizados en operaciones militares, tanto para entrenamiento como para misiones. 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, busqueda de civiles en catastrofes y fotograf a aerea entre otras, sin olvidar el aeromod elismo.

1.1.2.

Quadrotor o quadricoptero

que una estructura simetrica Un quadrotor no es mas que consiste en dos barras cruzadas en forma de + o x con motores en sus extremos. En lugar de usarse supercies de control el control se efectua como en un avion, variando la potencia de los motores. Esto provoca variaciones en los momentos del quadrotor que dan lugar al movimiento que se desea obtener. El sentido de giro de las helices en dos motores es horario mientras que en otros dos es antihorario, de esta forma se conserva el par motor y evita que gire sobre si mismo.

Figura 1.1: Estructura basica de un quadrotor cobrando cada vez mas importancia gracias a Dentro de los UAVs los quadrotores estan su gran maniobrabilidad y su capacidad VTOL (Vertical Take Off and Landing). Se pueden encontrar incluso en el ambito del consumidor a partir de 400 euros. Esto ha permiti tanto para do que numerosas universidades lo utilicen como plataforma de investigacion aplicaciones de control, robotica o incluso inteligencia articial.

12

Interfaz LabView para programar el sistema de control de quadrotores

1.2.

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. Dentro del ambito del consumidor algunos han encontrado su vertiente comercial como Dragany, 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.

Figura 1.2: Draganyer V5 Los objetivos de este proyecto son:

de una interfaz de comunicacion entre un quadrotor comercial y un or1. creacion a nivel de prototipo del software de denador personal que permita la optimizacion y control. navegacion de un esqueleto en Labview que haga uso de dicha interfaz. 2. creacion el software de vuelo de un quadrotor sobre el esqueleto anterior. Este soft3. disenar elementos programables que podran ajustarse/adaptarse a cada uno ware tendra de los prototipos de quadrotor que quiera utilizarse.

de un quadrotor Gu a para la estabilizacion

13

CAP ITULO 2. GU IA PARA LA ESTABILIZACION DE UN QUADROTOR


2.1. Electronica

leer magnitudes f de La electronica permitira sicas y convertirlas a un valor digital ademas controlar los motores. Entre los sensores se pueden distinguir: 1. Giroscopios: Miden la velocidad angular. Con ellos se puede medir tambien la gravedad. 2. Acelerometros: Miden la aceleracion. 3. Brujula: Mide el campo magnetico, se utiliza para no perder la orientacion. Mide la presion atmosferica. 4. Sensor de presion: Permite conocer la altura aproximada. Pese a que los dos ultimos no son necesarios son recomendables. de acondicionarse se conectan al conversor A/D del microTodos los sensores despues una respuesta que se enviara a los motores. Es un sistema controlador. Este calculara se produce a traves del entorno f de lazo cerrado pues la realimentacion sico por el que de potencia a un motor se mueve variando sus magnitudes. Por ejemplo la aplicacion un aumento/disminucion de la aceleracion y/o velocidad angular. generara

2.2.

de datos Fusion

El objetivo principal para mantener el quadrotor estabilizado es mantener el angulo de cercano posible a 0. Idealmente si las helices pitch y roll lo mas son perfectas, la estructura que proporciona el motor simetrica y el angulo es 0 toda la componente que propulsion se utiliza para la ascension. Por lo tanto si se desea conseguir el angulo cercano a 0 es importante que se conozca este con la mayor exactitud posible. Para calcularlo se utilizaran giroscopios que proporcionan la velocidad angular. Integrando el la velocidad angular se obtiene el angulo. Pero durante el proceso se integra tambien ruido que proviene tanto del conversor A/D como del propio giroscopio. Depende de la mayor o menor. calidad del giroscopio el error sera pequeno, pero es cuestion de segundos, minutos u horas (deAl principio el error sera pende de la calidad del giroscopio y del conversor) que el error pase a ser inaceptable. Para evitar que este se propague se debe contrastar el angulo con otra fuente de infor macion. Es aqu donde entran en juego los acelerometros que miden tanto aceleracion

14

Interfaz LabView para programar el sistema de control de quadrotores

estatica (gravedad) como la dinamica. El problema es que miden la suma de las dos por lo tanto se ha de recurrir a ltros paso alto para obtener la componente dinamica y ltros paso bajo para obtener la componente de la gravedad como muestra la Figura 2.1

de la aceleracion estatica Figura 2.1: Descomposicion y dinamica mediante ltrado Si se determina la componente gravitatoria que se tiene en cada eje se puede averiguar la del cuerpo con una simple operacion trigonometrica. inclinacion En la Figura 2.2 se puede el eje X experimenta una aceleracion apreciar que a medida que aumenta la inclinacion estatica mayor.

de la gravedad Figura 2.2: Descomposicion El problema que presenta este metodo es que es lento debido al retraso que introduce varias muestras para hacer un promediado el ltro. Al ser un ltro paso bajo necesitara un retardo en el calculo cosa que provocara de la componente gravitatoria y por tanto un retardo en el calculo del angulo. Una respuesta lenta puede provocar que no el sistema y que por tanto sea inestable. no pueda responder a tiempo para generar una correccion En resumen: se tienen los giroscopios que permiten calcular un angulo lo sucientemente rapido para poder estabilizar el sistema a costa de un error que crece en cada paso de y se tienen los acelerometros integracion que permiten calcular un angulo con un error consiste en fusionar que no va a crecer pero con un retraso considerable. La solucion una matriz DCM (Direct Cosine Matrix) con fusion de datos ambos datos. Se utilizara de un controlador PI [2]. El algoritmo se basa principalmente de acelerometros a traves la cual se va actualizando multiplicando por una matriz de en una matriz de rotacion, del angulo de un angulos pequenos.La realimentacion del acelerometro se hace a traves controlador PI. El detalle de funcionamiento se puede encontrar en diydrones.com*

de un quadrotor Gu a para la estabilizacion

15

*diydrones.com es una comunidad online amateur sobre UAVs. Se puede encontrar mucha sobre navegacion,control,sensores... informacion Un ejemplo lo podemos encontrar en el como referencia para la impleArduIMU Quadcopter de Jose Julio [1], el cual se uso del algoritmo DCM mentacion

2.3.

Tablas de mezclado (Mixer tables)

lo siguiente Una vez que se conocen los angulos del quadrotor con una cierta precision que hay que plantearse es de que manera se pueden variar. Controlar la potencia de los 4 motores puede resultar un tanto complicado por lo que debemos crear una capa en lugar de intentar controlar la potencia de cada motor se debe intentar de abstraccion, controlar maniobras que se denen en la Figura 2.3: 1. Incrementar/Decrementar angulo de Pitch (rojo) 2. Incrementar/Decrementar angulo de Roll (verde pistacho) 3. Incrementar/Decrementar angulo de Yaw (naranja) 4. Incrementar altura (azul) actue La idea es que se pueda actuar sobre una maniobra y la capa de abstraccion sobre los motores.

Figura 2.3: Esquema de las 4 maniobras que queremos controlar sobre un draganyer como si el resto Se van a desglosar que actuaciones requiere cada maniobra y se trataran de maniobras no existiera para luego aplicar superposicion.

1. 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). Para incrementar el angulo se debe aumentar la potencia en el motor 4 a la vez que se reduce la potencia en

16

Interfaz LabView para programar el sistema de control de quadrotores

velocidad y el motor 3. Al incrementar la potencia en el motor 4, la helice ganara un aumento en la sustentacion haciendo subir al brazo que sujeta el experimentara lo contrario: la disminucion de potencia provocara un motor. En el motor 3 sucedera y tendera a caer. El resultado que experimentara la estrucperdida de sustentacion lo tura es un incremento del angulo de Pitch. Para decrementar el angulo se hara (incrementar potencia en 3 y decrementar en 4). mismo al reves 2. Incrementar/Decrementar angulo de Roll: Dada la simetr a del quadrotor la manio que cambiando los motores sobre los que bra de Roll es igual a la de Pitch solo se actuan. Se incrementa el angulo aumentando la potencia en 1 a la vez que se reduce en 2 y viceversa. 3. Incrementar/Decrementar angulo de Yaw: Para esta maniobra se debe conservar el balance de Pitch y Roll. Es decir la potencia con la que se actue sobre el motor 4 debera ser igual a la del motor 3 y la potencia con la que se actue sobre el motor 1 ser igual a la del motor 2. Esto es as debera porque no se desea que cada vez que se actue sobre la maniobra de Yaw se vean afectadas las de Pitch/Roll. Por otra parte se debe ser consciente de que el balance de potencia neta sobre los se vera afectada. 4 motores debe ser 0 de otra forma la maniobra de ascension de esta maniobra depende de como se tengan colocadas las helices. La realizacion en sentido horario estan en los motores 1 y Dependiendo si las helices que estan en los motores 3 y 4. La idea general consiste en decre2 o por el contrario estan 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. 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. 4. Incrementar altura: Esta maniobra es muy simple: consiste en aumentar la potencia de los 4 motores por igual.

La potencia obtenida para cada motor por cada una de las 4 maniobras se suma. 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. La forma matematica de un vector por una matriz por esta razon de hacer esto corresponde a la multiplicacion la potencia que hay que entregar se dene un vector de maniobras, donde se establecera para hacer cada maniobra. para decrementar el angulo Las potencias negativas seran y las potencias positivas seran para incrementar el angulo.

P P Pm = P Pt
ahora por una tabla de mezclado. Este vector de valores se multiplicara

(2.1)

de un quadrotor Gu a para la estabilizacion

17

0,75 0,75 0,75 0,75 0,25 0,25 0,25 0,25 Mixer = 0,25 0,25 0 0 0 0 0,25 0,25

(2.2)

Es importante tener en cuenta que los calculos se van a hacer en un PC y por tanto se pueden usar decimales, pero el uso de coma otante en un microcontrolador penaliza mucho en el rendimiento. Para obtener la potencia total:

PT = Pm Mixer P 0,75 0,75 0,75 0,75 PMotorFrontal P 0,25 0,25 0,25 0,25 PMotorTrasero = PT = P 0,25 0,25 0 0 PMotorIzquierdo Pt 0 0 0,25 0,25 PMotorDerecho

(2.3)

(2.4)

Haciendo referencia a la Figura 2.3 el motor frontal es el 3, el trasero el 4, el izquierdo el 1 y el derecho el 2.

2.4.

Controlador PID

Ahora que ya se conoce el angulo y como actuar sobre los motores para obtener el angu lo que se desea, se necesita un controlador que monitoree el angulo y actue sobre las maniobras denidas anteriormente para corregirlo. Existen una gran diversidad de contro proporcionar respuestas mas suaves pero ladores. Los hay muy sosticados que podran por su sencillez se va a utilizar en el controlador PID (Proporcional Integral Derivativo). Un controlador PID basico dispone de una entrada y una salida

que se desea obtener y la que se tiene ac1. Error: es la diferencia entre la senal realizando maniobras se detualmente. Por ejemplo cuando el quadrotor no este o un angulo en el eje de seara de Pitch y Roll de 0 . Si se produce una perturbacion mayor, por ejemplo 3o . El error que se tendr Pitch este angulo sera a en este caso es de 3 grados. Es la salida sobre la que tiene que actuar para corregir el error. 2. Salida de actuacion: ser corregidos con una Por ejemplo los 3o anteriores en el eje de Pitch deberan maniobra de Decrementar el angulo de Pitch.

entre la salida y la entrada. Generalmente se Debe haber algun tipo de realimentacion de un medio f se produce produce a traves sico. En el caso de quadrotor la realimentacion

18

Interfaz LabView para programar el sistema de control de quadrotores

del motor que provoca un cambio en las magnitudes f medidas a traves sicas que seran por el conjunto de sensores. La salida del controlador PID se genera a partir de la suma de tres partes que se generan a partir del error de entrada. 1. Proporcional: La parte proporcional sale de multiplicar el error por una constante que llamaremos Kp. 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. En el caso del ejemplo anterior, a medida que aumenta el angulo de Pitch la salida que controla la maniobra de Pitch aumenta su potencia para recticar el angulo. Kp debe ser escogido de manera que se entregue potencia suciente para corregir pero no demasiada para sobrepasar la correccion. 2. Integral: La parte integral sale de multiplicar la integral del error por una constante que llamaremos Ki. La integral puede ser calculada sumando el error en cada tiempo de muestreo. Esta parte es importante porque tiende a cancelar el error. Imag peso colgado de un eje del quadrotor inemos el caso de que tenemos un pequeno de peso. Probablemente la parte proporcional no creando una descompensacion produciendo ese peso descomsea capaz de corregir el angulo de error que esta creciendo y por tanto pensatorio. A medida que pasa el tiempo la integral del error ira a incrementar su valor. Aunque el error haya quedado complela salida empezara su valor porque la integral es ir sumando el tamente corregido la salida conservara error y sumar 0 no altera el valor del resultado. Si la constante Ki es muy grande error haga crecer muy deprisa la salida de la parte puede provocar que un pequeno Si por el contrario Ki es muy pequeno integral produciendo una sobreactuacion. puede que no sea capaz de corregir a tiempo la descompesacion. 3. Derivativo: La parte derivativa sale de multiplicar la derivada del error por una constante que llamaremos Kd. La derivada puede ser calculada utilizando el valor del giroscopio. La parte derivativa puede ayudar a corregir sobreactuaciones en el sis a medida que el error tema ya que se anticipa a la salida para disminuir la actuacion puede ser muy fuerte y puede impedir se anula. Si Kd es muy grande la correccion deseada pero si es muy pequena puede que no al sistema alcanzar la correccion suavice la salida lo suciente y se produzcan oscilaciones. que el resultado de las tres partes de controlador. Finalmente la salida total no es mas

e(t ) = anguloDeseado anguloActual (t )


t

(2.5) (2.6)

Salida = K p e(t ) + Ki

e(t ) dt + Kd e (t )

sucesivos. Las constantes pueden ser calculadas a partir de algoritmos de aproximacion controladores PID independientes para cada maniobra. Su entrada error sera el Se usaran de datos entre angulo que deseamos obtener menos el angulo que proviene de la fusion al vector de potencias de los acelerometros y giroscopios. La salida del controlador ira maniobra (Formula 2.1).

de un quadrotor Gu a para la estabilizacion

19

por la tabla Cuando se tenga el vector de potencias de maniobra completo, se multiplicara la potencia que hemos de enviar de mezclado (Formula 2.2) de manera que se obtendra a cada motor.

2.5.

Piloto manual

El ultimo paso consiste en dotar al sistema de algun mecanismo para poder guiarlo sobre un espacio 3D. Dicho mecanismo consiste en variar los angulo del quadrotor. Al inclinarlo, que pasa a ser de avance. se pierde parte de la componente de ascension de error que La manera de controlar los angulos es actuar directamente sobre la senal estabilizado (0o entra al PID. Volviendo a la Formula 2.5,suponiendo que el sistema esta de ser 0 para Pitch y 0o Roll) , si se modica la variable anguloDeseado el error dejara minimizar el error provocando que verse incrementado (o decrementado) . El PID intentara el quadrotor se incline sobre el eje en que se haya actuado. De esta manera el quadrotor el angulo alcanzara propuesto.

Figura 2.4: Mando Logitech utilizado para controlar los angulos Se puede utilizar un mando como el de la Figura 2.4 y asignar a cada eje un angulo del quadrotor.

20

Interfaz LabView para programar el sistema de control de quadrotores

del quadrotor Implementacion

21

DEL CAP ITULO 3. IMPLEMENTACION QUADROTOR


del quadrotor sea distinta de las planteadas tradiSe pretende que la implementacion el rmware de un quadrotor comercial para convertir la unidad cionalmente. Se cambiara de vuelo en un sistema que se dedique: 1. leer datos de los sensores y enviarlos a un PC 2. recibir la potencia calculada por el PC para cada motor y actuar sobre estos montada de manera que solo se desarrollara el softPor tanto la electronica se comprara la unidad de vuelo con el ordenador. ware de vuelo y el rmware que comunicara

3.1.

de la plataforma Eleccion

en: La plataforma consistira 1. Un quadrotor: Se entiende por quadrotor el chasis con los motores y la electronica de abordo necesaria para poder volar a y ejecutara el prototipo. 2. Un ordenador donde se disenar

Figura 3.1: Esquema de la plataforma: la placa del medio es un puente serie-usb

3.1.1.
3.1.1.1.

Quadrotor
Eleccion

del quadrotor sobre el que va a correr el sistema se han planteado una Para la eleccion serie de requisitos:

22

Interfaz LabView para programar el sistema de control de quadrotores

de adquirir: ya que en caso de utilizarse para impartir clases se comprar 1. Facil an varios. No pueden haber problemas de disponibilidad. En caso de fallo de algu deben existir recambios y no deben ser dif na pieza de hardware tambien ciles de encontrar. de programar: a ser posible que la propia placa incorpore un bootloader. Esto 2. Facil evita a la universidad comprar equipos espec cos y permite cargar el nuevo soft ware rapidamente. equipos para impartir docencia con el 3. Economico: para permitir la compra de mas mismo presupuesto. El precio no deber a superar los 1000 por plataforma. de montar: que el montaje no sea complicado ni demasiado casero. A ser 4. Facil posible que todo encaje perfectamente. el Mikrokopter porque: Tras barajar varias opciones nalmente se escogio 1. El kit necesario para volar anadiendo la brujula y el GPS apenas supera los 1000 euros. 2. Es muy popular por lo que encontrar repuestos es facil. 3. Se puede programar con el mismo adaptador USB que viene con el kit. Este mismo adaptador sirve para establecer una interfaz con el PC. 4. El codigo fuente se puede descargar en el repositorio del la pagina web de Mikrokopter. 5. La calidad de los componentes del hardware es mayor que en otros productos del mismo precio. 6. La potencia de los motores es muy buena lo que permite levantar hasta medio kilogramo de peso. de montar. Las placas encajan perfectamente en el chasis que te viene en 7. Es facil tambien encajan perfectamente en el chasis. el kit. Las placas de expansion

3.1.1.2.

Descripcion

En este apartado se describen los modulos de los cuales consta el quadrotor Mikrokopter. El kit se compone de: 1. Flight Control: La unidad principal de vuelo. Contiene 3 giroscopios ADXRS610 y un metro de 3 ejes LIS344ALH. Opcionalmente se le puede instalar un sensor acelero Su procesador es un ATMEGA644P con una frecuencia de reloj de 20 de presion. del puerto Mhz. Incorpora un bootloader que permite actualizar el rmware a traves USB. Como interfaces accesibles sin necesidad de soldadura hay dos UARTs, un puerto dispone de dos pines uno de los cuales es utilizado SPI y un puerto I2C. Tambien como SLAVE SELECT para el puerto SPI y otro puede ser utilizado para PWM.

del quadrotor Implementacion

23

Figura 3.2: Kit del Mikrokopter

Figura 3.3: Placa Flight Control vista desde arriba y desde abajo

24

Interfaz LabView para programar el sistema de control de quadrotores

2. Brushless Controller: Las controladoras de motores sin escobillas. Funcionan a de I2C o PPM. Pueden soportar una potencia de 110 W en cont traves nua y un 220 W de pico trabajando a 11.1 V. Disponen de medidor de corriente incorporado.

Figura 3.4: Brushless Controller

3. MKUSB: Es un simple conversor serie-USB basado en el famoso FT232RL. Proporciona un conector que se puede conectar directamente a la Flight Control.

Figura 3.5: El conversor MKUSB

4. Motores sin escobillas,chasis,cables... y todo lo necesario para montar el quadrotor.

Figura 3.6: Motor sin escobillas

del quadrotor Implementacion

25

5. Componentes opcionales: (a) MK3MAG: Brujula electronica. Lleva 3 sensores de campo magnetico para de sobre el heading. Recomendable terminar el norte y proporcionar informacion Es para corregir la deriva en el angulo de Yaw debido al error de integracion. el unico componente que no se puede anclar bien a la estructura.

Figura 3.7: MK3MAG brujula electronica

a u-blox capaz de enviar codigo (b) MKGPS: Lleva un GPS de la compan de in NMEA 0183 as descritos en formacion como codigos propietarios que estan el datasheet. Ancla perfectamente a la estructura.

Figura 3.8: MKGPS

26

Interfaz LabView para programar el sistema de control de quadrotores

3.1.2.

PC

toda la carga de procesado del sistema. Se ha utilizado El PC es el terminal que soportara de gama media-baja ASUS M51V. Su precio en 2009 fue de 600 euros. Cuenta un portatil con un procesador de doble nucleo P8400 y 4 GB de RAM. El sistema operativo instalado es Windows 7. Es capaz de procesar los datos de los sensores en tiempo real.

Figura 3.9: Asus M51V

3.1.3.

del software de control Lenguaje para la programacion

en un PC que se comunicara con el quadrotor recibiEl software de control se ejecutara endo datos en tiempo real de los sensores y enviando datos de potencia a los motores. El para que pueda cumplir dicha rmware del microcontrolador del quadrotor se modicara funcion. Labview para programar el software de control ya que facilita mucho la viSe escogio de los datos . Con los modulos Control o sualizacion adicionales como el kit de Vision, funcionalidades acelerando el diseno de manera muy de Robotica se pueden anadir mas signicativa.

graca Figura 3.10: Ejemplo de programacion 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

del quadrotor Implementacion

27

de prototipos. de Labview Se ha desarrollado un esqueleto en C para facilitar la portabilidad del diseno que provee de las siguientes funcionalidades: a C (una vez nalizado el diseno) con el Mikrokopter: funciones de apertura de puerto serie y env 1. Comunicacion o de datos. Incluye rutinas de codicacion. 2. Red: para enviar y recibir datos por UDP a Labview de DirectX 3. Joystick: para leer la entrada de Joystick a traves del software de un quadroDe esta manera el planteamiento sugerido para la programacion tor ser a el siguiente:

el prototipo en Labview (PC) 1. Disenar 2. Vericar el correcto funcionamiento del sistema a C en un PC 3. Portar el diseno en C del prototipo 4. Vericar la correcta implementacion 5. Hacer los cambios necesarios para compilar en codigo en la plataforma objetivo cruzada) (compilacion

3.1.4.

Enlace de comunicacion

se hara por puerto serie debido a que es mas simple que la utilizacion de La comunicacion un conversor serie-USB ya otros puertos como puede ser el USB. No obstante se utilizara que la mayor a de portatiles no incorporan ya puerto serie. Dicho conversor viene incluido basado en el chip FT232RL que proporciona a traves de en el Kit de Mikrokopter y esta sus drivers un puerto serie de manera transparente.

3.1.5.

del conjunto Alimentacion

La forma directa de alimentar el conjunto es mediante la bater a que se proporciona en el kit. El problema es que con los motores encendidos el consumo es muy elevado y la los 20 minutos de duracion. El tiempo m bater a rara vez alcanzara nimo de carga de la bater a es de 1h (bater a estandar de carga a 1C). Es muy molesto tener que cambiar una alternativa para poder trabajar sin las bater as tan frecuentemente, por ello se busco interrupciones pudiendo conectar el quadrotor a la red electrica. Una manera muy economica de hacerlo es reciclar una fuente ATX de PC. Proporcionan el conector de 12 V (cable amarillo salidas de 3.3 V 5 V y 12 V. Para este proyecto se usara de un cable electrico y negro de los conectores de 4 pines). A traves se puede alargar la

28

Interfaz LabView para programar el sistema de control de quadrotores

Figura 3.11: Fuente ATX

libertad. La fuente ha de permanecer en el suelo toma para brindar al quadrotor de mas sea necesario levantar el peso del cable. de manera que solo Para encender la fuente se debe puentear el cable verde con un cable negro. Si todo ha ido bien el ventilador debe encenderse.

Figura 3.12: Puente para encender la fuente ATX

del quadrotor Implementacion

29

3.1.6.

Esquema y fotograf a de la plataforma

de subsistemas y fotograf Figura 3.13: Esquema de la interconexion a de la plataforma

30

Interfaz LabView para programar el sistema de control de quadrotores

3.2.

y programacion del rmware de la unidad Modicacion de vuelo

El rmware que viene de serie no provee de las sucientes funcionalidades para estable cer una interfaz con el PC lo sucientemente rapida por lo que se tuvo que crear un nuevo rmware a medida.

3.2.1.

Descarga del codigo fuente del rmware de la Flight Control

el codigo En lugar de empezar desde 0, se descargara fuente del rmware del repositorio la mayor parte pero se conservara el esqueleto. Es imporpara modicarlo. Se eliminara con facilidad y saber que partes tante estudiar antes del codigo para moverse dentro de el se pueden modicar y que partes no. ligados a las Se puede obtener el codigo del repositorio svn. El login y password estan cuentas del foro de Mikrokopter por lo que es necesario crear una cuenta para poder acceder. se puede descargar haciendo un checkout a http://mikrokopter.de/mikrosvn/FlightCtrl/. Despues

Figura 3.14: Tortoise SVN haciendo un checkout al repositorio de Mikrokopter se puede consultar online. Se ha utilizado Tortoise SVN para descargar el codigo. Tambien Basta con buscar en Google Mikrokopter SVN. Nota: Es muy recomendable utilizar la rama de Killagreg. El codigo es muy legible y ademas esta en ingles en lugar de aleman

del quadrotor Implementacion

31

3.2.2.

del compilador y el gestor de Makeles Instalacion

del codigo La compilacion se gestiona mediante Makeles. Estos archivos contienen el procedimiento que hay que seguir para compilar el codigo y enlazar los distintos archivos objeto que genera el compilador. Se interpretan con el comando make. Hay varias opciones para usar make:

1. Linux. El uso de make es muy comun en Linux por lo que es relativamente facil. de la API de 2. Windows usando Cygwin. Cygwin proporciona una capa de emulacion Linux que permite recompilar facilmente programas de Linux para Windows. Entre el set de programas que proporciona se puede encontrar make. 3. make 3.81. Es la que se utiliza en el proyecto actualmente. 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. No obstante esta funciona muy bien con Windows 7 . version

utilizada en este Como compilador GCC para AVR se puede utilizar WINAVR. La version proyecto ha sido WINAVR-20100110. Se debe editar el Makele para que las rutas apunten a donde se ha instalado el compilador

3.2.3.

del codigo del miCompilacion en Windows y programacion crocontrolador

Una vez se ha descargado el codigo y se han hecho las modicaciones oportunas hay necesaria que compilar y enlazar el codigo. El archivo Makele contiene la informacion en el microcontrolador. para hacerlo. Finalmente se asheara Para compilar el codigo debemos: 1. Abrir un terminal. Inicio-Ejecutar-cmd.exe 2. Dirigirse al directorio donde se ha guardado el codigo de la Fligth Control. Esto se hara con la orden cd. Por ejemplo

cd

C:\FlightCtrl\branches\codigo_modificado

3. Ejecutar make. 4. Si todo ha ido bien el codigo deber a compilar sin errores. El chero para ashear es el .hex. El resultado se puede ver en la Figura 3.15

32

Interfaz LabView para programar el sistema de control de quadrotores

Figura 3.15: Codigo de la Flight Control compilado con exito usando make 3.81 y WINAVR20100110

el MK-TOOL. Hay que dirigirse a Para cargar el rmware en el microcontrolador se usara Update Software que aparece tras pulsar el boton Controller Update & Terminal la opcion con el bootloader como muestra la Figura 3.16. La herramienta de Mikrokopter conectara instalado en el microcontrolador y lo programara. Si el sistema no es capaz de conectar con el microcontrolador se debe revisar la conexion del puerto serie y resetear el micro. Si el microcontrolador utiliza otra velocidad de puerto hacer un reset manual mientras salga Connectserie diferente de 57,6 Kbps se debera que salte el bootloader y se autocongure a 57,6 Kbps reconoing.... El reset provocara ciendo el comando de programacion.

Figura 3.16: Programando el microcontrolador usando el MK-Tool

del quadrotor Implementacion

33

3.2.4.

del quadrotor con el PC Comunicacion

Con el nuevo rmware ya se pueden leer los datos a una velocidad suciente como para entre el estabilizar el quadrotor. No obstante aun queda por establecer la comunicacion quadrotor y el PC de manera que ambos se entiendan. La placa Flight Control utiliza un protocolo especial. El nuevo rmware utiliza rutinas del rmware original a efectos de reuti por buses de comunicacion lizar codigo. Por otra parte, al tener que transmitir informacion externos aparecen unos problemas que deben tenerse en cuenta.

3.2.4.1.

Protocolo de la Flight Control

que se encuentran en el codigo Las funciones se comunicacion fuente siguen este protocolo:

#: Todos los mensajes empiezan con este caracter. 1. Byte de sincronizacion de origen/destino b: Normalmente se utiliza la b para indicar que las 2. Direccion transmisiones van de/hacia la Flight Control 3. Datos: Los datos vienen codicados en base64 en parte para evitar que aparez dentro de los datos.Dentro de los datos viene el ca el caracter de sincronizacion identicador de comando. 4. CRC: Codigo de Redundancia C clica para vericar la validez de los bytes. 5. Retorno de carro: Para indicar el n de la transmision.

En el SVN se pueden encontrar funciones para gestionar el protocolo en Labview bajo la rama Projects/GroundStation proporcionadas por el usuario Speedy.

3.2.4.2.

de la latencia de la plataforma Medicion

Se puede denir la latencia del sistema como el tiempo que tarda un paquete de datos en ir y volver. capaz de responder a tiempo y Si la latencia es demasiado grande el sistema no sera estabilizarse. Para poder medirla se programaron funciones de ping-pong en el no podra el siguiente procedimiento: microcontrolador y seguidamente se uso

1. El PC inicia una solicitud de ping 2. El microcontrolador recibe la solicitud y guarda el estado del reloj del sistema y lo env a al PC el estado del reloj del sistema y la devuelve sin 3. El PC recibe en la contestacion procesar

34

Interfaz LabView para programar el sistema de control de quadrotores

4. 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. No se puede desactivar totalmente pero se puede reducir de 16 ms que viene por defecto a 1 ms. Para ello se debe ir a Administrador de dispositivos y buscar el puerto COM sobre trabajando. el que se esta

de la latencia virtual que introduce el sistema operativo Figura 3.17: Reduccion

3.2.4.3.

Velocidad del puerto serie y Full Duplex

Pese a que el conversor serie-usb es full-duplex las pruebas demostraron que fuera de el receptor velocidades estandar no se comporta como tal. Para certicarlo se desactivo que la tasa de recepcion de datos no de la UART en el microcontrolador y se comprobo usar 115,2 era proporcional al incremento de velocidad. Por ello nalmente se decidio Kbps en lugar de 500 Kbps que es la maxima velocidad de trasferencia que soporta el microcontrolador. se llego a la conclusion que al funcionar en conmutacion (half-duplex) la latencia Tambien variable que trabajando en full-duplex. era mas

3.2.4.4.

Estudio sobre la posibilidad de incorporar un modulo RF

multicamino. Esto ademas Los modulos RF pueden verse afectados por la propagacion antes puede verse agravado porque muchos modulos necesitan paquetizar la informacion de enviarla. Paquetizar la informacion implica tener que llenar un buffer antes de enviar la

del quadrotor Implementacion

35

es decir un tiempo de espera. En el de una red Wi, la informacion no viaja informacion, dependiendo del estado de la red. siempre por el mismo camino por ello la latencia variara estudio que conAnte las dudas de sobre como podr a a afectar se hizo un pequeno en: sistio 1. observar el comportamiento del quadrotor cuando este era sometido a una latencia ja y una variable. 2. ver la latencia que presentan dos modulos Xbee un ciclo de reloj en electronica Para retrasar la informacion se utilizan biestables. La manera de hacer esto en Labview es mediante un feedback node. As por cada feedback node retrasando la informacion a razon de un medio de la latencia haque se ponga se estara bitual. Estos se colocaran justo antes de enviar los datos con la potencia de los motores.

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 se variaba la latencia mas hab reajustaran los parametros los PID. Contra mas a que variar se observo un comportamiento mas perezoso.a medida los parametros del PID. Tambien que la latencia iba creciendo. 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 inestable. adaptando los parametros del PID dinamicamente y por tanto este se volvera un comportamiento Durante las pruebas de vuelo con latencia variable el quadrotor mostro violento e inestable. Para poder comprobar la latencia de los modulos RF se utilizaron dos Xbee PRO conectados a un adaptador USB

Figura 3.19: Adaptador Xbee USB Se hicieron dos programas en Labview implementado la funcionalidad de ping. Un cliente y un servidor. El servidor tan solo deb a devolver lo mismo que enviaba el cliente (un timestamp). El cliente representaba una diferencia de timestamps que correspond a a la latencia. El pico que se aprecia en la Figura 3.21 puede ser suciente para llevar al quadrotor fuera en de la zona de estabilidad. Una vez fuera de esta zona es dif cil recuperarlo. Entrara una oscilacion creciente hasta que nalmente se estrellara.

36

Interfaz LabView para programar el sistema de control de quadrotores

Figura 3.20: Cliente ping hecho en Labview para medir la latencia de los dos modulos

entre dos modulos Figura 3.21: Latencia de la comunicacion zigbee

muy sobrecargado Otra causa del aumento de latencia brusco puede ser el PC. Si esta de es posible que Labview no tenga tiempo de CPU suciente para procesar y tarde mas lo esperado en generar el resultado. a la conclusion que Tras pensar en formas de eliminar los cables que lo limitan se llego mas inmediata es embarcar el ordenador en el quadrotor. En el mercado exla solucion isten placas de PC a partir de 12cm x 12cm . No obstante se debe brindar la proteccion suciente pues al ser un sistema de prototipos las posibilidades de estrellarlo son altas.

Figura 3.22: Placa Nano ITX. Las dimensiones son perfectas para llevar en un quadrotor

del quadrotor Implementacion

37

3.3.
3.3.1.
3.3.1.1.

del conjunto Programacion


Consideraciones al trabajar con varias plataformas
Endianness

El endianness se reere a como se guardan las palabras en memoria en arquitecturas de de 8 bits (suponiendo 8 bits como elemento atomico). mas

Figura 3.23: Big Endian vs Little Endian Como muestra la Figura 3.23 si se pasaran los datos de la memoria de una maquina a otra cada una ver a numeros distintos aun Las dos maquinas siendo el mismo numero. tienen el mismo numero pero lo guardan y leen de manera distinta. Es por ello que se debe tener en cuenta y reordenar los bytes. Puede ser una tarea sencilla cuando se trata de arrays donde cada elemento tiene el mismo ancho de bits, es decir un array de 16 todos los campos de 16 bits y la ordenacion sera tan simple como hacer un bits tendra intercambio de bytes cada 2 bytes.

Figura 3.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 de los bytes de cada elemento se debe hacer por entes tamanos ya que la ordenacion separado.

38

Interfaz LabView para programar el sistema de control de quadrotores

3.3.1.2.

de memoria Alineacion

Aun trabajando con la misma arquitectura puede ser que el sistema operativo trabaje de de memoria. Algunos sistemas operativos manera diferente. Es el caso de la alineacion como Linux por temas de eciencia utilizan alineamiento a 32 bits. Es decir todas las ser multiplos los bytes que estructuras deberan de 32 bits de lo contrario se rellenaran de la estructura sea un multiplo falten hasta que el tamano de 32 bits.

de la estructura sea multiplo Figura 3.25: Padding para que el tamano de 32 bit (Linux) Por ejemplo: supongamos que se tiene una estructura que ocupa 5 bytes. Para llegar a ser multiplo de 32 bits (alineamiento a 4 bytes) deber a ocupar 8 bytes. Los 3 bytes que faltan para completar se rellenan aunque no se utilicen. Es decir en realidad la estructura ocupando 8 bytes como muestra la Figura 3.25 estara a 1 byte por lo que La plataforma ha sido disenada en Windows que utiliza alineacion que modicar las funciones de copia de si se quiere utilizar en Linux o Mac se tendran de datos. estructuras en los bloques de recepcion

3.4.
3.4.0.3.

Detalles de implementacion
Especicaciones del rmware disenado

anteriormente el rmware que viene de serie no es capaz de satisComo ya se menciono facer las necesidades que presenta este proyecto. 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. Las caracter sticas principales son:

1. velocidad de trabajo incrementada a 115,2 Kbps en lugar de 57,6 Kbps para satisfacer a tiempo la demanda de datos hacia el ordenador. maxima 2. periodo de trabajo de 7 ms. Permite un frecuencia de operacion de 143Hz con toda la electronica de abordo funcionando. de un reset actua 3. soporte para GPS: despues de manera transparente como si estuviera conectado directamente al PC. Esto permite hacer las conguraciones oportunas desde el software ublox center. 4. calculo de latencia en tiempo real.

del quadrotor Implementacion

39

5. soporte para brujula MK3MAG utilizando el protocolo I2C. del puerto cambiando el protocolo de 6. soporte para sonar pwm gracias a liberacion la brujula. 7. soporte de control de potencia de motores.

Los comandos que acepta siguiendo el protocolo de la Flight Control son: 1. 6 : Calibrar la brujula. directa de datos GPS y empezar la transmision cont 2. 5 : Desactivar la transmision nua de datos de la electronica de abordo cada 7 ms. de los 4 motores. Junto con los motores se env 3. 4: Enviar informacion a el timestamp de la ultima muestra recibida para calcular la nueva latencia . para depurar. 4. r: Encender/Apagar el led rojo. Util Y los comandos que env a: 1. I : Paquete de datos con las medidas de la electronica de abordo. Se ha de enviar un comando 5 previamente.

3.4.0.4.

Modelo de operacion

de manera que las operaciones de lectura del Por sencillez el codigo se implementara del propuerto serie bloqueen el programa. De esta manera la velocidad de ejecucion segun grama se regulara el ujo de entrada de datos. Es decir cada vez que se soliciten a la espera hasta que lleguen y posteriormente datos, si no hay, el programa quedara los nuevos datos adquiridos. procesara Este metodo funciona bien para programas que no tengan mucha carga computacional. En otro caso se desperdicia mucho tiempo de CPU durante el bloqueo. En la Figura 3.26 muestra el esqueleto software de un quadrotor.

Figura 3.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.27)

40

Interfaz LabView para programar el sistema de control de quadrotores

del puerto serie en Labview Figura 3.27: Apertura y conguracion

Figura 3.28: Env o del comando 5 al rmware

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.28). del bloque principal. Este bucle se ejecuta cada 7 ms (deterEl ultimo paso es la creacion MK READ DATA. Esta funcion ha sido creada minado por el rmware) gracias al funcion a medida para comunicarse con el rmware de forma optima. Si no hay datos, el programa Esta funcion facilita los datos a traves de se para aqu a la espera de que lleguen mas. de todos los sensores de abordo ademas del un cluster que permite obtener informacion todo el sistema. GPS. Es aqu donde se tiene que disenar

Figura 3.29: Bucle principal del array rellenado con ceros. Del MK READ Los datos de los motores se env an a traves el timestamp para calcular la nueva latencia. Una vez todo empaDATAse extrae tambien quetado se env a de vuelto al quadrotor utilizando el comando 4.

de hardware Ampliacion

41

DE HARDWARE CAP ITULO 4. AMPLIACION


4.1. Placa Navigation Control

Figura 4.1: NaviCtrl con MKGS y MK3MAG llamada NaviCtrl que amplia las funcionalMikrokopter provee de una placa de expansion del GPS permite anadir idades de la Flight Control. A traves funcionalidades como vuelta o a casa. mantener posicion. Para ello utiliza un microcontrolador de 32 bit para resolver y liberar de carga computacional a la Flight Control. A traves las ecuaciones de navegacion calculada de la NaviCtrl a la Flight Control. de un puerto SPI se transere la informacion En este proyecto se estuvo barajando la posibilidad de usar la placa pero nalmente tras a la conclusion que penalizaba sobre la latencia. Finalmente numerosas pruebas se llego conectar el resto de la electronica se decidio a la Flight Control usando una placa expan en la Figura 4.2 y su montaje se puede ver sora disenada para tal n cuyo esquema esta en la Figura 4.3

Figura 4.2: Esquema de la placa adaptadora

42

Interfaz LabView para programar el sistema de control de quadrotores

Figura 4.3: Placa adaptadora montada

4.2.
4.2.1.

GPS
para transportar los datos del GPS Fragmentacion

GPS empiezan a aparecer problemas. La latencia pasa de ser Al incorporar informacion que se va repitiendo a lo largo de la graca ja a ser variable con un patron (Figura y se comporta de manera nerviosa. Es 4.4). El quadrotor hace eco de esta situacion perturbacion lo hace reaccionar violentamente dif cil mantenerlo en el aire y una pequena sobreactuando y estrellandolo contra el suelo (o el mobiliario en el caso de vuelo interior).

GPS la latencia pasa de ser casi constante a ser variable Figura 4.4: Al anadir informacion con la contra que el paLos datos del GPS tienen una baja frecuencia de actualizacion es muy grande. En un inicio el periodo de muestreo del rmware era quete de informacion

de hardware Ampliacion

43

de un bloque GPS ten teorica cada 4 ms. La informacion a una duracion de 11.7 ms. En la Figura 4.5 aparece esquematizado lo que suced a.

GPS Figura 4.5: Problema al anadir informacion de transmitir un paquete de datos (IMU DATA) se comprobaba si hab Despues an datos El caso es que el tiempo GPS para transferir y si los hab an se enviaban justo despues. disponible para el env o antes de que se enviara el siguiente bloque de datos de sensores era de 1.3 ms. Un bloque de GPS tardaba en enviarse 11.7 ms. Durante este tiempo no se pod an enviar datos de los sensores. podemos optar entre 3 soluciones: Ante esta situacion

1. Aumentar el periodo de muestreo: El periodo total de muestreo deber a ser cada 13 ms. 2. Fragmentar los datos: Los datos del GPS se deben fragmentar de manera que de de los datos tiempo a transmitirse en el tiempo que hay disponible justo despues (zona pintada de verde). de las dos anteriores: Aumentar el tiempo de muestreo a la vez 3. Una combinacion de datos. que se hace uso de la fragmentacion aumentar el periodo de muestreo a 7 ms y Finalmente tras varias pruebas se decidio de la fragmentar los datos del GPS en bloques de 8 bytes. El total de la informacion estructura se recib a al cabo de 15 ciclos. Se tuvo que modicar el rmware para tal n aumentando la complejidad del mismo. Las pruebas de vuelo efectuadas no presentaron incidencias salvo que se tuvieron que modicar los parametros de los PIDs debido al cambio de la latencia.

4.3.

Brujula

de PWM. No obstante La Flight Control tiene implementada la lectura de la brujula a traves 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.

44

Interfaz LabView para programar el sistema de control de quadrotores

4.3.1.

Protocolo de comunicacion

EL problema de la brujula de Mikrokopter es que no tiene especicaciones por lo que para se debe recurrir al codigo entender el protocolo de comunicacion fuente del repositorio. la secuencia de lectura y escritura. Tras varios analisis del codigo y pruebas se determino Para leer de la brujula: 1. Generar START I2C escritura de la brujula) 2. Escribir 50h (direccion 3. Escribir comando 4. Generar START I2C lectura de la brujula) 5. Escribir 51h (direccion 6. Leer 7. Leer CRC 8. Generar Stop Para escribir en la brujula 1. Generar START I2C escritura de la brujula) 2. Escribir 50h (direccion 3. Escribir comando 4. Escribir datos 5. Escribir CRC 6. Generar Stop

4.4.

Sonar EZ0

El sonar EZ0 es capaz de medir distancias por ultrasonidos y proporcionar la lectura a de varios puertos. Se escogio el puerto PWM para la lectura de datos. traves

de hardware Ampliacion

45

4.4.1.

de falsas lecturas Modelo de eliminacion

Al funcionar por ultrasonidos es probable que el sonar obtenga falsas lecturas debido a rebotes con el medio. Para evitar esto se implemento un sistema antirebotes. Su principio de funcionamiento es muy simple: la muestra actual menos la anterior en valor absoluto no debe sobrepasar un umbral. En caso de sobrepasarlo se usa la ultima lectura. El ltro paso bajo se utiliza para suavizar la senal.

de falsas lecturas del sonar Figura 4.6: Eliminacion

46

Interfaz LabView para programar el sistema de control de quadrotores

Conclusiones

47

CAP ITULO 5. CONCLUSIONES


El sistema cumple todos los objetivos planteados. Con el software y los algoritmos de control implementados es capaz de volar en interiores en control manual y realizar cambios el software desarrollado es facilmente de rumbo bruscos sin perder la estabilidad. Ademas 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, la dicultad ha sido mucho mayor de la prevista debido a la multidisciplinaridad del proyecto. Muchas de las soluciones planteadas una de multiples en este escrito son solo que se han probado. GPS En un futuro se desea perfeccionar el quadrotor, completar el software de navegacion articial. Si es posible tambien se intentara presentarlo as como dotar al sistema de vision a algun internacional. Para esto ultimo se ha de convertir el sistema concurso de ambito disenado en un sistema embebido en el propio hardware de la plataforma.

48

Interfaz LabView para programar el sistema de control de quadrotores

BIBLIOGRAF IA

49

BIBLIOGRAF IA
[1] Jose Julio. quadcopter ArduImu Quadcopter. http://diydrones.com/proles/blogs/arduimu-

[2] Premerlani-William and Bizard-Paul. DCM http://gentlenav.googlecode.com/les/DCMDraft2.pdf [3] Mikrokopter . http://www.mikrokopter.de [4] Diydrones . http://www.diydrones.com

IMU:Theory

También podría gustarte