You are on page 1of 119

CONTROL DE UN CUADRICÓPTERO

PARA VUELOS AUTÓNOMOS


EN INTERIORES

UNIVERSIDAD PONTIFICIA DE COMILLAS


ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA
ICAI

TRABAJO DE FIN DE GRADO

TRABAJO DE FIN DE GRADO

Autor: Directores:

Juan Martínez Olondo Juan Luis Zamora Macho


José Porras Galán

14 de junio de 2015
AUTORIZACIÓN PARA LA DIGITALIZACIÓN, DEPÓSITO Y DIVULGACIÓN EN ACCESO
ABIERTO (RESTRINGIDO) DE DOCUMENTACIÓN

1º. Declaración de la autoría y acreditación de la misma.

El autor D. Juan Martínez Olondo, como estudiante de la UNIVERSIDAD PONTIFICIA COMILLAS


(COMILLAS), DECLARA

que es el titular de los derechos de propiedad intelectual, objeto de la presente cesión, en


relación con la obra “Control de un cuadricóptero para vuelos autónomos en interiores”
(Trabajo de Fin de Grado) 1, que ésta es una obra original, y que ostenta la condición de autor
en el sentido que otorga la Ley de Propiedad Intelectual como titular único o cotitular de la
obra.

En caso de ser cotitular, el autor (firmante) declara asimismo que cuenta con el
consentimiento de los restantes titulares para hacer la presente cesión. En caso de previa
cesión a terceros de derechos de explotación de la obra, el autor declara que tiene la oportuna
autorización de dichos titulares de derechos a los fines de esta cesión o bien que retiene la
facultad de ceder estos derechos en la forma prevista en la presente cesión y así lo acredita.

2º. Objeto y fines de la cesión.

Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la
Universidad y hacer posible su utilización de forma libre y gratuita ( con las limitaciones que
más adelante se detallan) por todos los usuarios del repositorio y del portal e-ciencia, el autor
CEDE a la Universidad Pontificia Comillas de forma gratuita y no exclusiva, por el máximo plazo
legal y con ámbito universal, los derechos de digitalización, de archivo, de reproducción, de
distribución, de comunicación pública, incluido el derecho de puesta a disposición electrónica,
tal y como se describen en la Ley de Propiedad Intelectual. El derecho de transformación se
cede a los únicos efectos de lo dispuesto en la letra (a) del apartado siguiente.

3º. Condiciones de la cesión.

Sin perjuicio de la titularidad de la obra, que sigue correspondiendo a su autor, la cesión de


derechos contemplada en esta licencia, el repositorio institucional podrá:

(a) Transformarla para adaptarla a cualquier tecnología susceptible de incorporarla a internet;


realizar adaptaciones para hacer posible la utilización de la obra en formatos electrónicos, así

1
Especificar si es una tesis doctoral, proyecto fin de carrera, proyecto fin de Máster o cualquier otro
trabajo que deba ser objeto de evaluación académica

1
como incorporar metadatos para realizar el registro de la obra e incorporar “marcas de agua”
o cualquier otro sistema de seguridad o de protección.

(b) Reproducirla en un soporte digital para su incorporación a una base de datos electrónica,
incluyendo el derecho de reproducir y almacenar la obra en servidores, a los efectos de
garantizar su seguridad, conservación y preservar el formato. .

(c) Comunicarla y ponerla a disposición del público a través de un archivo abierto institucional,
accesible de modo libre y gratuito a través de internet. 2

(d) Distribuir copias electrónicas de la obra a los usuarios en un soporte digital. 3

4º. Derechos del autor.

El autor, en tanto que titular de una obra que cede con carácter no exclusivo a la Universidad
por medio de su registro en el Repositorio Institucional tiene derecho a:

a) A que la Universidad identifique claramente su nombre como el autor o propietario de los


derechos del documento.

b) Comunicar y dar publicidad a la obra en la versión que ceda y en otras posteriores a través
de cualquier medio.

c) Solicitar la retirada de la obra del repositorio por causa justificada. A tal fin deberá ponerse
en contacto con el vicerrector/a de investigación (curiarte@rec.upcomillas.es).

d) Autorizar expresamente a COMILLAS para, en su caso, realizar los trámites necesarios para
la obtención del ISBN.

d) Recibir notificación fehaciente de cualquier reclamación que puedan formular terceras


personas en relación con la obra y, en particular, de reclamaciones relativas a los derechos de
propiedad intelectual sobre ella.

2
En el supuesto de que el autor opte por el acceso restringido, este apartado quedaría redactado en los
siguientes términos:

(c) Comunicarla y ponerla a disposición del público a través de un archivo institucional, accesible de
modo restringido, en los términos previstos en el Reglamento del Repositorio Institucional

3
En el supuesto de que el autor opte por el acceso restringido, este apartado quedaría eliminado.

2
5º. Deberes del autor.

El autor se compromete a:

a) Garantizar que el compromiso que adquiere mediante el presente escrito no infringe ningún
derecho de terceros, ya sean de propiedad industrial, intelectual o cualquier otro.

b) Garantizar que el contenido de las obras no atenta contra los derechos al honor, a la
intimidad y a la imagen de terceros.

c) Asumir toda reclamación o responsabilidad, incluyendo las indemnizaciones por daños, que
pudieran ejercitarse contra la Universidad por terceros que vieran infringidos sus derechos e
intereses a causa de la cesión.

d) Asumir la responsabilidad en el caso de que las instituciones fueran condenadas por


infracción de derechos derivada de las obras objeto de la cesión.

6º. Fines y funcionamiento del Repositorio Institucional.

La obra se pondrá a disposición de los usuarios para que hagan de ella un uso justo y
respetuoso con los derechos del autor, según lo permitido por la legislación aplicable, y con
fines de estudio, investigación, o cualquier otro fin lícito. Con dicha finalidad, la Universidad
asume los siguientes deberes y se reserva las siguientes facultades:

a) Deberes del repositorio Institucional:

- La Universidad informará a los usuarios del archivo sobre los usos permitidos, y no garantiza
ni asume responsabilidad alguna por otras formas en que los usuarios hagan un uso posterior
de las obras no conforme con la legislación vigente. El uso posterior, más allá de la copia
privada, requerirá que se cite la fuente y se reconozca la autoría, que no se obtenga beneficio
comercial, y que no se realicen obras derivadas.

- La Universidad no revisará el contenido de las obras, que en todo caso permanecerá bajo la
responsabilidad exclusiva del autor y no estará obligada a ejercitar acciones legales en nombre
del autor en el supuesto de infracciones a derechos de propiedad intelectual derivados del
depósito y archivo de las obras. El autor renuncia a cualquier reclamación frente a la
Universidad por las formas no ajustadas a la legislación vigente en que los usuarios hagan uso
de las obras.

- La Universidad adoptará las medidas necesarias para la preservación de la obra en un


futuro.

b) Derechos que se reserva el Repositorio institucional respecto de las obras en él registradas:

3
- retirar la obra, previa notificación al autor, en supuestos suficientemente justificados, o en
caso de reclamaciones de terceros.

Madrid, a 14 de Julio de 2015

ACEPTA

Fdo……………………………………………………………

4
Proyecto realizado por el alumno:

Juan Martínez Olondo

Fdo.: …………………… Fecha: 12/ 6/ 2015

Autorizada la entrega del proyecto cuya información no es de carácter


confidencial

EL DIRECTOR DEL PROYECTO

Juan Luis Zamora Macho

Fdo.: …………………… Fecha: 12/ 6/ 2015

José Porras Galán

Fdo.: …………………… Fecha: 12/ 6/ 2015

Vº Bº del Coordinador de Proyectos

Álvaro Sánchez Miralles

Fdo.: …………………… Fecha: ……/ ……/ ……


CONTROL DE UN CUADRICÓPTERO
PARA VUELOS AUTÓNOMOS
EN INTERIORES

UNIVERSIDAD PONTIFICIA DE COMILLAS


ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA
ICAI

TRABAJO DE FIN DE GRADO

TRABAJO DE FIN DE GRADO

Autor: Directores:

Juan Martínez Olondo Juan Luis Zamora Macho


José Porras Galán

14 de junio de 2015
Agradecimientos

A Juan Luis por orientarme y ayudarme a perseverar

A Dani por su apoyo en los temas de electrónica

A José y a Antonio por todos sus arreglos

A mi familia por su interés y preocupación

A María por su apoyo y cariño


CONTROL DE UN CUADRICÓPTERO
PARA VUELOS AUTÓNOMOS
EN INTERIORES

UNIVERSIDAD PONTIFICIA DE COMILLAS


ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA
ICAI

TRABAJO DE FIN DE GRADO

MEMORIA

Autor: Directores:

Juan Martínez Olondo Juan Luis Zamora Macho


José Porras Galán

14 de junio de 2015
2
Índice
Capítulo 1 . .................................................................................................................................... 5
1.1 Vehículos aéreos no tripulados........................................................................................... 5
1.2 Motivación del proyecto y objetivos .................................................................................. 6
1.3 Metodología y recursos ...................................................................................................... 7
Capítulo 2 . .................................................................................................................................... 9
2.1 Introducción histórica ......................................................................................................... 9
2.2 Modelado de la planta ...................................................................................................... 10
2.2.1 Sistema de ejes y matriz de cambio de base de Euler .............................................. 10
2.2.2 Fuerzas y momentos ................................................................................................. 12
2.2.3 Ecuaciones mecánicas de movimiento ..................................................................... 14
2.2.4 Dinámica de los motores........................................................................................... 15
2.2.5 Efecto suelo y efecto techo ....................................................................................... 16
2.2.6 Modelo dinámico del cuadricóptero ......................................................................... 18
2.3 Métodos de control .......................................................................................................... 19
2.3.1 PID ............................................................................................................................. 19
2.3.2 LQR ............................................................................................................................ 20
2.3.3 Control de linealización mediante realimentación ................................................... 20
2.3.4 Otros controles.......................................................................................................... 20
2.4 Estimadores de estado...................................................................................................... 21
2.4.1 Filtro complementario .............................................................................................. 21
2.4.2 Filtro de Kalman ........................................................................................................ 22
2.5 Software ............................................................................................................................ 22
2.5.1 Driver blocks .............................................................................................................. 22
2.5.2 ArduPilot Mega ......................................................................................................... 23
2.5.3 Máquinas de estados ................................................................................................ 24
Capítulo 3 . .................................................................................................................................. 25
3.1 Elementos del cuadricóptero ............................................................................................ 25
3.1.1 Estructura .................................................................................................................. 25
3.1.2 Motores ..................................................................................................................... 26
3.1.3 Controlador electrónico de velocidad ....................................................................... 26
3.1.4 Baterías...................................................................................................................... 26
3.1.5 Circuito impreso ........................................................................................................ 29
3.1.6 Unidad de medición inercial (IMU) ........................................................................... 29
3.1.7 Sistemas de comunicaciones..................................................................................... 30
3.1.8 Sensorización............................................................................................................. 31

3
3.2 Instalación y calibración de sensores infrarrojos.............................................................. 33
3.3 Circuito de monitorización de la batería........................................................................... 34
3.4 Circuito de alimentación de la tarjeta y los sensores infrarrojos ..................................... 36
3.5 Instalación y conexiones de la tarjeta HKPilot Mega ........................................................ 37
3.6 Configuración de la emisora ............................................................................................. 38
3.7 Memoria flash ................................................................................................................... 39
Capítulo 4 . .................................................................................................................................. 41
4.1 Implantación del modelo del cuadricóptero .................................................................... 41
4.2 Entorno de simulación ...................................................................................................... 42
Capítulo 5 . .................................................................................................................................. 45
5.1 Control de estabilización................................................................................................... 46
5.2 Control de distancia a la pared ......................................................................................... 51
5.3 Control de altura ............................................................................................................... 52
5.4 Control de guiñada............................................................................................................ 54
5.4.1 Estimación por filtro de Kalman ................................................................................ 54
5.4.2 Medida con sensores infrarrojos .............................................................................. 55
5.4.3 Fusión de la estimación y los sensores infrarrojos.................................................... 55
Capítulo 6 . .................................................................................................................................. 57
6.1 Máquinas de estados ........................................................................................................ 57
6.1.1 Máquina de estados para vuelo manual ................................................................... 57
6.1.2 Máquina de estados completa para vuelo autónomo .............................................. 58
6.2 Ajuste del control en tiempo real ..................................................................................... 60
6.3 Ensayo de vuelo estacionario ........................................................................................... 62
Capítulo 7 . .................................................................................................................................. 63
7.1 Resumen de tareas realizadas .......................................................................................... 63
7.2 Resumen de resultados..................................................................................................... 64
7.3 Futuras mejoras ................................................................................................................ 64
Capítulo 8 . .................................................................................................................................. 65
Anexo A . .................................................................................................................................. 67
Anexo B . .................................................................................................................................. 71
Anexo C . .................................................................................................................................. 75
Anexo D . .................................................................................................................................. 81
Anexo E . .................................................................................................................................. 89
Anexo F . .................................................................................................................................. 93

4
Capítulo 1 .

Introducción

La electrónica es hoy en día la rama de la ingeniería que más rápidamente evoluciona, y que
más revoluciona todas las demás tecnologías. Gracias al desarrollo en la capacidad y la potencia
de los microprocesadores, y gracias también a su reducción de tamaño, es posible controlar
sistemas que hace 30 años parecía imposible. En este aspecto, la regulación automática y los
sistemas de control han jugado un papel clave, especialmente en los medios de transporte, y más
concretamente en los medios de transporte aéreos. Debido a la alta estabilidad y precisión que
requieren estos sistemas, no ha sido posible avanzar en este campo hasta que no han existido los
medios electrónicos necesarios.

En este proyecto se usará esta tecnología para controlar un cuadricóptero y que sea capaz de
volar de manera autónoma en un recinto cerrado. Con la ayuda de una serie de sensores de
distancia, podrá orientarse en el interior de una habitación y avanzar siguiendo una pared. Para
ello se emplearán una tarjeta electrónica de Arduino preparada específicamente para este tipo de
fines, y el entorno de programación Matlab/Simulink para diseñar e implementar todo el control.

1.1 Vehículos aéreos no tripulados


Los vehículos aéreos no tripulados (del inglés UAVs, Unmanned Aerial Vehicle), conocidos
coloquialmente como drones, son el último ejemplo de las posibilidades que ofrecen las nuevas
tecnologías. Existen diversas alternativas, desde los drones de combate hasta los drones de
Amazon para mensajería. La gran ventaja de los UAVs es que permiten prescindir del piloto, y
eso supone grandes ventajas, tanto por el ahorro en coste económico y humano, como por la
libertad de maniobra que adquieren los drones, al desaparecer la restricción de la comodidad de
la tripulación.

Sin embargo, dentro de los UAVs, probablemente los más potentes son los multicópteros,
también llamados multirrotores: vehículos dotados de varias hélices controladas de manera
coordinada que permiten definir con precisión su trayectoria. Cada hélice aporta un grado de
libertad, por lo que puede trabajarse con cuatro (cuadricópteros), seis (hexacópteros) e incluso
ocho (octocópteros). En los casos de seis y ocho hélices, incluso aunque una de ellas sufriera
daños, el vehículo sería capaz de suplirla con las restantes. Esto se debe a que, en total, los cuerpos
tridimensionales tienen 6 grados de libertad, pero como en los multicópteros van asociados el giro
con respecto a un eje horizontal y el movimiento lineal en perpendicular a ese eje, basta con 4
grados de libertad para controlarlo completamente.

La ventaja de los multicópteros frente a otras opciones como los aviones, es que tienen una
gran capacidad de maniobra, además de lograr un despegue vertical sin necesitar de grandes
pistas, y de ser capaces de mantenerse quietos suspendidos en el aire. No obstante, un problema

5
que todavía está por resolver es su reducida autonomía, debido a que se alimentan con baterías
que no suelen durar más allá de 20 minutos. A pesar de ello, estas funcionalidades hacen de los
multicópteros herramientas muy útiles a la hora de llegar a lugares remotos o de difícil acceso
para realizar mediciones, tomar fotografías o transportar paquetes, por lo que su uso está
aumentando rápidamente.

1.2 Motivación del proyecto y objetivos


En este proyecto se va a utilizar un cuadricóptero, debido a la simplicidad de control frente a
las alternativas con más hélices, ya que no supone necesariamente una peor estabilidad. Cada una
de las cuatro hélices está conectada a un motor que regula su velocidad angular. Con el control
adecuado, el aparato es capaz de levantar el vuelo verticalmente, mantenerse suspendido en el
aire (vuelo estacionario), seguir trayectorias concretas –tanto en vuelo manual como autónomo–
y aterrizar verticalmente. El objetivo de este proyecto será diseñar e implementar un control capaz
de hacer todo esto. Para ello, se utilizará el entorno de Matlab/Simulink, con la herramienta
ArduPilot Mega, diseñada específicamente para implementar controles en diversos vehículos
aéreos, y entre ellos en cuadricópteros.

Se busca lograr un control que funcione tanto en simulación, a partir del modelo ya existente
del cuadricóptero que se va a utilizar, como sobre la planta real. El objetivo final es que a partir
de unos sensores colocados en los laterales y en la parte inferior, el vehículo sea capaz de despegar
verticalmente, seguir la pared a una distancia fijada y aterrizar cuando se le indique o cuando la
batería baje de un umbral. Es decir, está pensado únicamente para vuelos en interiores.

Como se ha comentado anteriormente, en el campo de la aeronáutica el control de los


cuadricópteros está aún desarrollándose, y tiene un enorme potencial. Con este proyecto se espera
dar a la Universidad Pontificia de Comillas experiencia en este tema, con un doble objetivo: por
un lado, la formación de los estudiantes en el ámbito académico, ya que el control de un
cuadricóptero permite aplicar los conocimientos de diversas materias como mecánica (modelado),
máquinas eléctricas (motores brushless), sistemas electrónicos (sensores y actuadores),
electrónica de potencia (tarjeta y conexión a los motores) o comunicaciones (sistema de
comunicación entre el ordenador y la nave, y entre la emisora y la nave). En cualquier caso, la
materia fundamental de este proyecto es la regulación automática (control). Todo el sistema se
implementará en el entorno Matlab/Simulink, con el propósito de utilizar unas herramientas
potentes pero adaptadas a los estudiantes.

Por otro lado, este proyecto pretende ser la continuación de otro proyecto anterior de la
universidad, en el que aunque no se consiguió estabilizar el cuadricóptero, se avanzó en aspectos
tales como el diseño y construcción de la aeronave y su modelado. El objetivo es recuperar los
resultados de dicho proyecto, revisarlos e intentar controlar el cuadricóptero para vuelo autónomo
en interiores.

Los objetivos que se pretenden cumplir con el proyecto son los siguientes:

1. Adaptación del actual modelo del cuadricóptero a la herramienta ArduPilot Mega


utilizando Matlab y Simulink, para crear un simulador sobre el que se puedan probar
diferentes estrategias de control
2. Diseño de un control que funcione sobre el modelo en el entorno de simulación

6
3. Implantación del control en el cuadricóptero para vuelo estacionario

Además se pretende avanzar hacia el objetivo final de la línea de trabajo en la que se enmarca
este proyecto. Por esta razón se plantea como un objetivo último el siguiente:

4. Orientación en recinto cerrado y vuelo autónomo del cuadricóptero que incluya las fases
de despegue vertical, orientación en esquina, seguimiento de pared y aterrizaje vertical.

Este objetivo es ambicioso y no se ha logrado cumplir plenamente. Sin embargo se han


realizado grandes avances que permiten que se culmine en proyectos sucesivos.

1.3 Metodología y recursos


Para alcanzar estos objetivos, se han definido las siguientes tareas, que se recogen en el
cronograma de la Figura 1.1:

• Revisión del modelo mecánico actual de Simulink.


• Instalación y configuración de la herramienta ArduPilot Mega (APM) para
Matlab/Simulink en los ordenadores de trabajo, y familiarización con ella.
• Integración del modelo en un sistema de control con APM para construir un simulador.
• Diseño de un control de estabilización que funcione en simulación.
• Ajuste de los parámetros del control para conseguir un control robusto en simulación,
añadiendo ruidos y offsets a las medidas.
• Diseño de una máquina de estados para vuelo estacionario e implementación en
Matlab/Simulink.
• Instalación de la tarjeta de control.
• Diseño y montaje de un circuito de monitorización de la batería.
• Diseño y montaje de un circuito de alimentación para la tarjeta de control.
• Ensayo del control sobre la planta real en vuelo estacionario.
• Diseño de un programa para descargar los datos almacenados durante el vuelo.
• Ajuste de los parámetros del control para conseguir un control robusto sobre la planta real.
• Elección y calibración de los sensores de distancia y su comunicación con la tarjeta.
• Inclusión de las medidas de los sensores de distancia en el modelo de simulación.
• Diseño de un control de distancia que funcione en simulación.
• Diseño de un control de altura que funcione en simulación.
• Ajuste de los parámetros del control para conseguir un control robusto en simulación,
añadiendo ruidos y offsets a las medidas.
• Ensayo de orientación en esquina sobre la planta real.

A continuación se muestra el cronograma con el seguimiento de las tareas realizadas:

7
Enero Febrero Marzo Abril Mayo
Tarea Sm Sm Sm Sm Sm Sm Sm Sm Sm Sm Sm Sm Sm Sm Sm Sm Sm Sm Sm Sm
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
Revisión del modelo mecánico
Instalación y configuración de APM
Integración del modelo en simulador
Control de estabilización para simulación
Ajuste del control de simulación
Inclusión de los sensores en el modelo
Control de distancia para simulación
Control de altura para simulación
Ajuste del control de simulación
Diseño de la máquina de estados inicial
Instalación de la tarjeta de control
Montaje de circuitos
Ensayo en vuelo estacionario
Programa para descargar datos del vuelo
Ajuste del control para vuelo estacionario
Instalación de sensores de posición
Calibración de sensores de posición
Ensayo de orientación en esquina
Diseño de la máquina de estados completa
Redacción de la memoria

Figura 1.1. Cronograma del Proyecto.

En cuanto a los recursos utilizados para llevar a cabo el proyecto, se han utilizado:

• Cuadricóptero de Hobby King con PCB integrado, con motores brushless y ESC.
• Emisora de radio control y receptor de Turnigy.
• Tarjeta de control HKPilot Mega 2.7.
• Ordenador con el programa Matlab 2014b y Simulink, donde instalar la herramienta APM2.
• 6 sensores de posición infrarrojos.
• 2 placas para soldar, resistencias, amplificador operacional, diodo, condensadores y pines
de conexión para hacer un circuito de monitorización de la batería y otro de alimentación.
• Batería LiPo para el cuadricóptero y LiFe para la emisora, y cargador-balanceador.
• Conector USB-microUSB y cables.

8
Capítulo 2 .

Estado de la cuestión

2.1 Introducción histórica


Desde la invención del transistor, el campo de la electrónica ha revolucionado auténticamente
la sociedad. Hoy en día todos aquellos inventos que hace 50 años aparecían en películas de ciencia
ficción son una realidad cotidiana, o incluso desfasada. Además, la electrónica sigue evolucionando
y desarrollándose exponencialmente, como ya predijo Moore [1] hace hoy medio siglo.

Las innovaciones en esta materia han sido aplicadas a todo tipo de tecnologías, entre las que
destacan los medios de transporte. El desarrollo de chips cada vez más pequeños y potentes ha
permitido equipar a los vehículos con ordenadores de a bordo, a los aviones con pilotos automáticos
o regular las comunicaciones entre los trenes y la estación central. En concreto, en el campo de la
regulación automática y el control, el hecho de disponer de microprocesadores potentes ha sido
clave debido al alto coste computacional. Gracias a estos avances, la precisión se ha elevado
cuantitativamente y esto, aplicado a sistemas que por sí solos son inestables, es algo crucial.

Históricamente, el uso de vehículos aéreos ha comportado siempre una complicada mecánica


que permitiera mantenerlos en el aire y hacerlos avanzar. Desde el primer vuelo de los hermanos
Wright en 1903, las aeronaves han sufrido importantes cambios para conferirles la estabilidad
actual. La mecánica asociada sigue complejas ecuaciones para conseguir controlarlas de manera
sencilla. Por ejemplo, en aviones o helicópteros, la estrategia para conseguir regular su movimiento
consiste en variar el ángulo de ataque de las palas, o el de flaps y slats, para modificar las fuerzas
aerodinámicas.

Con la aparición de los multicópteros, gracias a las mejoras en la teoría de control, es posible
sustituir la complejidad mecánica por controles más sofisticados que trabajen independientemente
sobre cada una de las hélices. Sin embargo, el origen de estos aparatos está en la primera mitad
del siglo XX. En 1922, el ingeniero francés Etienne Oehmichen efectuó su primer vuelo en un
cuadrirrotor, el Oehmichen 2 [2]. Este vehículo fue capaz de batir el récord para un vehículo rotor
de avanzar a lo largo de 360 m en el aire. Constaba de un único motor que movía las cuatro hélices
principales y de cuatro propulsores secundarios para regular la orientación. Sin embargo, la
dificultad de controlar simultáneamente los cuatro rotores hizo que la investigación se centrase
más en helicópteros con una sola hélice principal.

Figura 2.1. Cuadrirrotor Oehmichen 2.

9
Más adelante, en 1956, la empresa Convertawing desarrolló un cuadrirrotor que ya constaba
de cuatro motores independientes, por lo que se pudo prescindir de los propulsores secundarios.
No prosperó debido al poco interés que despertó en el ámbito militar, pero sentó las bases ara los
futuros cuadricópteros.

Figura 2.2. Modelo ‘A’ del cuadrirrotor de Convertawing.

A principios de este siglo, el interés por los cuadricópteros ha resurgido debido a la facilidad
de implementar controles complejos que definan con precisión sus trayectorias, ayudados por
nuevos sensores, como acelerómetros y giróscopos, o por nuevas tecnologías, como el GPS. Un
ejemplo de este interés se ve en el proyecto STARMAC de la Universidad de Stanford para
controlar pequeños cuadricópteros y que funcionen de manera autónoma.

2.2 Modelado de la planta


La estructura y las ecuaciones que rigen los movimientos de un cuadricóptero son muy
parecidas independientemente del modelo concreto. A continuación se presentan los elementos
principales del estudio de estas ecuaciones y algunos modelos matemáticos relevantes para este
proyecto.

2.2.1 Sistema de ejes y matriz de cambio de base de Euler

Para definir el movimiento de un cuadricóptero es necesario comenzar definiendo el sistema


de ejes. Existen varias alternativas, pero el usado en la gran mayoría de la literatura, que es el
mismo que se usará en este proyecto, consta de un sistema de ejes fijo {X, Y, Z}, que es el sistema
inercial, y otro solidario al cuadricóptero {x, y, z} (Ver Figura 2.3). Los cuatro grados de libertad
permiten mover el cuadricóptero en sus tres ejes y girar sobre su eje z (guiñada, yaw en inglés).
Los dos grados de libertad físicos restantes, que corresponden a los giros en torno a los ejes x, y
(alabeo, roll en inglés, y cabeceo, pitch en inglés), se asocian a los desplazamientos horizontales
según los ejes y, x, respectivamente. La definición de los ángulos de giro de esta manera
corresponde con los ángulos de Tait-Bryan.

Una anomalía de este sistema de ejes con respecto a otros sistemas utilizados es que, como se
observa en la Figura 2.3, el eje Z está orientado hacia abajo, lo que afectará al signo de los vectores
en las ecuaciones mecánicas.

10
Figura 2.3. Sistemas de ejes y movimientos del cuadricóptero. [3]

Para trabajar las ecuaciones mecánicas que rigen el comportamiento de un sólido rígido, lo
más común es utilizar las ecuaciones de Euler. Su ventaja es que describe la orientación del cuerpo
en función de los ángulos ϕ, θ, ψ, de cabeceo, alabeo y guiñada. También es posible trabajar con
cuaterniones, que son elementos matemáticos que permiten definir completamente la orientación
de un cuerpo, y tienen la ventaja de salvar situaciones críticas, como los ángulos de 90º en alabeo
y cabeceo. Sin embargo, debido a su complejidad, en este proyecto se ha descartado su uso porque
no se consideran necesarios para la funcionalidad que se pretende en el cuadricóptero.

Para expresar las coordenadas de un vector en el sistema inercial {e1I, e2I, e3I} en la base
solidaria al cuerpo {e1B, e2B, e3B} se utilizan matrices de giro. Los tres giros posibles se componen
uno sobre otro, siendo el primero el de alabeo sobre el eje X. A continuación se efectúa el giro de
cabeceo sobre el eje Y1, es decir, el eje Y una vez se ha aplicado sobre él el giro de alabeo. Por
último, se aplica el giro de guiñada sobre el eje Z2, que es el resultado de girar el eje Z primero el
ángulo de alabeo y a continuación el de cabeceo. Estos giros se ilustran con las ecuaciones (2.1),
(2.2) y (2.3).

𝑋𝑋 1 0 0 𝑋𝑋1
�𝑌𝑌 � = �0 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 −𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠� · � 𝑌𝑌1 � (2.1)
𝑍𝑍 0 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑍𝑍1

𝑋𝑋1 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 0 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑋𝑋2


� 𝑌𝑌1 � = � 0 1 0 � · � 𝑌𝑌2 � (2.2)
𝑍𝑍1 −𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 0 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑍𝑍2

𝑋𝑋2 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 −𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 0 𝑋𝑋3 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 −𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 0 𝑥𝑥


𝑌𝑌
� 2 � = � 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑌𝑌
0� · � 3 � = � 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑦𝑦
0� · � � (2.3)
𝑍𝑍2 0 0 1 𝑍𝑍3 0 0 1 𝑧𝑧

Al componer los tres giros, aparece una matriz final de cambio de base (2.4), resultado del
producto de las tres matrices de giro anteriores, que transforma directamente un vector de la base
solidaria a la base fija. Esta matriz, llamada Matriz de Rotación, se expresa en función de los
ángulos de Euler y resulta:

11
𝑐𝑐𝑐𝑐𝑐𝑐𝜃𝜃 · 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑠𝑠𝑠𝑠𝑠𝑠𝜙𝜙 · 𝑠𝑠𝑖𝑖𝑖𝑖𝑖𝑖 · 𝑐𝑐𝑐𝑐𝑐𝑐𝜓𝜓 − 𝑐𝑐𝑐𝑐𝑐𝑐𝜙𝜙 · 𝑠𝑠𝑠𝑠𝑠𝑠𝜓𝜓 𝑐𝑐𝑐𝑐𝑐𝑐𝜙𝜙 · 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 · 𝑐𝑐𝑐𝑐𝑐𝑐𝜓𝜓 + 𝑠𝑠𝑠𝑠𝑠𝑠𝜙𝜙 · 𝑠𝑠𝑠𝑠𝑠𝑠𝜓𝜓
𝑹𝑹 = � 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 · 𝑠𝑠𝑠𝑠𝑠𝑠𝜓𝜓 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 · 𝑠𝑠𝑠𝑠𝑠𝑠𝜃𝜃 · 𝑠𝑠𝑠𝑠𝑠𝑠𝜓𝜓 + 𝑐𝑐𝑐𝑐𝑐𝑐𝜙𝜙 · 𝑐𝑐𝑐𝑐𝑐𝑐𝜓𝜓 𝑐𝑐𝑐𝑐𝑐𝑐𝜙𝜙 · 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 · 𝑠𝑠𝑠𝑠𝑠𝑠𝜓𝜓 − 𝑠𝑠𝑠𝑠𝑠𝑠𝜃𝜃 · 𝑐𝑐𝑐𝑐𝑐𝑐𝜓𝜓 � (2.4)
−𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑠𝑠𝑠𝑠𝑠𝑠𝜙𝜙 · 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑐𝑐𝑐𝑐𝑐𝑐𝜙𝜙 · 𝑐𝑐𝑐𝑐𝑐𝑐𝜃𝜃

La Matriz de Rotación, como toda matriz de giro, tiene la propiedad de ser ortogonal. Esto
significa que los productos escalares de sus vectores fila o columna con ellos mismos son 1, y con
los demás vectores son 0. Esta propiedad hace además que la matriz inversa coincida con la
transpuesta, por lo que para realizar el cambio de base recíproco, del sistema fijo al solidario,
basta con usar la Matriz de Rotación transpuesta Rt.

2.2.2 Fuerzas y momentos

Para el cálculo de las fuerzas y los momentos, se sigue el proceso descrito en [4], por ser uno
de los más rigurosos, aunque como se verá más adelante, para el modelado del cuadricóptero que
se va a utilizar en este proyecto, se harán algunas modificaciones.

Las suposiciones de partida que se hacen son las siguientes:


• Estructura rígida.
• Estructura simétrica, por lo que el tensor de inercia se supone diagonal, con Ixx = Iyy.
• Centro de gravedad situado en el centro físico de la estructura y origen de coordenadas.
• Palas rígidas que no varían su ángulo de ataque al girar.
• La fuerza vertical o empuje (thrust) y momento de arrastre (drag) derivados del giro de
los propulsores se supone proporcional a cuadrado de su velocidad angular.

El primer paso es identificar todos los efectos que intervienen en la dinámica del
cuadricóptero. Estos efectos se recogen en la Tabla 2.1:

Efecto Fuente Formulación

2
Efectos aerodinámicos − Rotación de las palas 𝐶𝐶𝜔𝜔𝑚𝑚

Pares de inercia − Cambio en la velocidad 𝐼𝐼𝑚𝑚 𝜔𝜔̇ 𝑚𝑚


angular de los rotores

Efecto gravitatorio − Posición del centro de masa

Efectos giroscópicos − Cambio en la orientación 𝐼𝐼𝜃𝜃̇ 𝜓𝜓̇


del cuerpo rígido

− Cambio en la orientación 𝐼𝐼𝑚𝑚 𝛺𝛺𝑟𝑟 𝜃𝜃̇ , 𝜙𝜙,̇


del plano de fuerzas

Fricción − Movimiento del cuadricóptero 𝐶𝐶𝜃𝜃,̇ 𝜙𝜙,̇ 𝜓𝜓̇

12
Tabla 2.1. Efectos físicos que actúan sobre un cuadricóptero. [4]

A continuación, se detallan uno por uno cada uno de estos efectos. Primero, los efectos
aerodinámicos: Las fuerzas de sustentación del cuadricóptero son las cuatro fuerzas verticales que
ejercen los propulsores. Estas fuerzas se suponen proporcionales al cuadrado de las velocidades
de giro de los motores, por lo que se define como factor de empuje (empuje factor) b, a la
constante de proporcionalidad. De la misma manera se define el factor de arrastre (drag factor)
d, como la constante de proporcionalidad entre los cuadrados de las velocidades angulares de los
propulsores y el momento de resistencia aerodinámica que generan.

Las cuatro fuerzas por tanto se calculan según la Ecuación (2.5)

𝐹𝐹𝑖𝑖 = 𝑏𝑏 · 𝜔𝜔𝑖𝑖2 (2.5)

El sentido de giro de los propulsores es según se muestra en la Figura 2.4, con dos de ellos
girando en sentido horario (CW) y los otros dos en sentido anti horario (CCW), enfrentados dos
a dos. La configuración para definir los ejes del cuadricóptero es una configuración en +, por lo
que los ejes x, y coinciden con sus brazos.

Figura 2.4. Sentido de giro de los propulsores.

Además de estas fuerzas, y del propio peso del cuadricóptero, aparecen otras horizontales
debido al efecto aerodinámico del giro de las palas. Sin embargo, estas fuerzas se consideran
despreciables en comparación con el empuje vertical.

Para simplificar la expresión de las fuerzas y momentos, se definen cuatro variables llamadas
mandos, relacionadas con la fuerzas de empuje:
2 2 2 2
𝑢𝑢1 𝑏𝑏(𝜔𝜔1 + 𝜔𝜔2 + 𝜔𝜔3 + 𝜔𝜔4 )
⎡ ⎤
𝑢𝑢2 ⎢ 𝑏𝑏(𝜔𝜔42 − 𝜔𝜔22 ) ⎥
�𝑢𝑢 � = ⎢ 2 2 ⎥
3
⎢ 𝑏𝑏(𝜔𝜔1 − 𝜔𝜔 3 ) ⎥
(2.6)
𝑢𝑢4
⎣𝑑𝑑(𝜔𝜔12 − 𝜔𝜔22 + 𝜔𝜔32 − 𝜔𝜔42 )⎦

El primer mando u1 es el empuje vertical total. El segundo es la diferencia entre los dos
empujes que generan momento con respecto al eje x. El tercero es análogo con respecto al eje y.
Por último, el cuarto es el momento total generado por las palas en el eje z, que es el mismo que
sufren éstas por el efecto aerodinámico, pero aplicado en sentido contrario debido a la ley de
acción y reacción.

De esta forma, se define la fuerza neta según la Ecuación (2.7):

13
𝐹𝐹⃗ = 𝑚𝑚𝑚𝑚 · 𝑒𝑒⃗3𝐼𝐼 − 𝑏𝑏(𝜔𝜔12 + 𝜔𝜔22 + 𝜔𝜔32 + 𝜔𝜔42 ) · 𝑒𝑒⃗3𝐵𝐵 (2.7)

Expresando la ecuación anterior en la base fija, utilizando la Matriz de Rotación, queda:

𝐹𝐹𝑋𝑋 −(𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 · 𝑐𝑐𝑐𝑐𝑐𝑐𝜙𝜙 · 𝑐𝑐𝑐𝑐𝑐𝑐𝜓𝜓 + 𝑠𝑠𝑠𝑠𝑠𝑠𝜓𝜓 · 𝑠𝑠𝑠𝑠𝑠𝑠𝜙𝜙) · 𝑢𝑢1


�𝐹𝐹𝑌𝑌 � = �−(𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 · 𝑐𝑐𝑐𝑐𝑐𝑐𝜙𝜙 · 𝑠𝑠𝑠𝑠𝑠𝑠𝜓𝜓 + 𝑐𝑐𝑐𝑐𝑐𝑐𝜓𝜓 · 𝑠𝑠𝑠𝑠𝑠𝑠𝜙𝜙) · 𝑢𝑢1 � (2.8)
𝐹𝐹𝑍𝑍 𝑚𝑚𝑚𝑚 − 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 · 𝑐𝑐𝑐𝑐𝑐𝑐𝜙𝜙 · 𝑢𝑢1

También se definen los pares generados por el efecto aerodinámico de las palas como:
𝜏𝜏𝑥𝑥 𝑙𝑙 · 𝑢𝑢2
�𝜏𝜏𝑦𝑦 � = �𝑙𝑙 · 𝑢𝑢3 � (2.9)
𝜏𝜏𝑧𝑧 𝑢𝑢4

Donde l es la longitud desde cada motor hasta el centro del cuadricóptero. Estos pares están
referidos a los ejes solidarios al cuerpo.

Después es necesario tener en cuenta los efectos giroscópicos. Aparecen dos efectos; uno
debido a la aparición simultánea de velocidades angulares en dos ejes distintos, y otro debido a la
aparición de una velocidad angular en un eje simultánea al giro de los rotores. Este último efecto
se manifiesta en forma de momento de fuerza, pero solamente en los ejes x e y, ya que los ejes de
giro de los propulsores son paralelos al eje z, y no generan efecto giroscópico. Las ecuaciones
reflejan estos momentos, respectivamente

𝜏𝜏′𝑥𝑥 (𝐼𝐼𝑦𝑦𝑦𝑦 − 𝐼𝐼𝑧𝑧𝑧𝑧 )𝜃𝜃̇ 𝜓𝜓̇


�𝜏𝜏′𝑦𝑦 � = �(𝐼𝐼𝑧𝑧𝑧𝑧 − 𝐼𝐼𝑥𝑥𝑥𝑥 )𝜙𝜙̇𝜓𝜓̇� (2.10)
𝜏𝜏′𝑧𝑧 (𝐼𝐼𝑥𝑥𝑥𝑥 − 𝐼𝐼𝑦𝑦𝑦𝑦 )𝜙𝜙̇𝜃𝜃̇

𝜏𝜏′′𝑥𝑥 𝐼𝐼 𝜃𝜃̇(𝜔𝜔1 − 𝜔𝜔2 + 𝜔𝜔3 − 𝜔𝜔4 )


� � = � 𝑚𝑚 � (2.11)
𝜏𝜏′′𝑦𝑦 −𝐼𝐼𝑚𝑚 𝜙𝜙̇(𝜔𝜔1 − 𝜔𝜔2 + 𝜔𝜔3 − 𝜔𝜔4 )

Por último, los pares de inercia al acelerar los motores, que se pueden considerar despreciables
si la dinámica de los motores es suficientemente rápida, afectarían únicamente en el eje z. En
cuanto a la fricción aerodinámica de avance del cuadricóptero, se considera como una perturbación.

2.2.3 Ecuaciones mecánicas de movimiento

En los muchos estudios que se han realizado acerca de la aerodinámica y el cálculo de fuerzas
y momentos en un cuadricóptero, se tienen en cuenta varios efectos, como la variación del ángulo
de las hélices cuando éstas se desplazan horizontalmente [5]. Sin embargo, al estar este proyecto
orientado a vuelo en interiores, se recogen únicamente las ecuaciones simplificadas a partir de los
momentos y fuerzas descritos anteriormente.

Partiendo de las fuerzas en los tres ejes de la Ecuación (2.8), se calculan las aceleraciones en
los ejes fijos dividiendo entre la masa.

14
𝑢𝑢1
⎡−(𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 · 𝑐𝑐𝑐𝑐𝑐𝑐𝜙𝜙 · 𝑐𝑐𝑐𝑐𝑐𝑐𝜓𝜓 + 𝑠𝑠𝑠𝑠𝑠𝑠𝜓𝜓 · 𝑠𝑠𝑠𝑠𝑠𝑠𝜙𝜙) · 𝑚𝑚 ⎤
𝑋𝑋̈ ⎢ 𝑢𝑢1 ⎥
�𝑌𝑌̈ � = ⎢ −(𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 · 𝑐𝑐𝑐𝑐𝑐𝑐𝜙𝜙 · 𝑠𝑠𝑠𝑠𝑠𝑠𝜓𝜓 + 𝑐𝑐𝑐𝑐𝑐𝑐𝜓𝜓 · 𝑠𝑠𝑠𝑠𝑠𝑠𝜙𝜙) · ⎥ (2.12)
⎢ 𝑚𝑚 ⎥
𝑍𝑍̈ ⎢ 𝑢𝑢1 ⎥
⎣ 𝑔𝑔 − 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 · 𝑐𝑐𝑐𝑐𝑐𝑐𝜙𝜙 · ⎦
𝑚𝑚

De las ecuaciones de momentos, se deduce la expresión de los momentos netos de alabeo,


cabeceo y guiñada, a partir de los cuales se deducen las expresiones de las aceleraciones angulares:

𝐼𝐼𝑥𝑥𝑥𝑥 𝜙𝜙̈ 𝑙𝑙 𝑢𝑢2 (𝐼𝐼𝑦𝑦𝑦𝑦 − 𝐼𝐼𝑧𝑧𝑧𝑧 )𝜃𝜃̇ 𝜓𝜓̇ −𝜃𝜃̇ (𝜔𝜔1 − 𝜔𝜔2 + 𝜔𝜔3 − 𝜔𝜔4 ) 0
̈ ̇ ̇
�𝐼𝐼𝑦𝑦𝑦𝑦 𝜃𝜃 � = �𝑙𝑙 𝑢𝑢3 � + �(𝐼𝐼𝑧𝑧𝑧𝑧 − 𝐼𝐼𝑥𝑥𝑥𝑥 )𝜙𝜙𝜓𝜓� + 𝐼𝐼𝑚𝑚 � 𝜙𝜙̇(𝜔𝜔1 − 𝜔𝜔2 + 𝜔𝜔3 − 𝜔𝜔4 ) �+� 0 � (2.13)
𝐼𝐼𝑧𝑧𝑧𝑧 𝜓𝜓̈ 𝑢𝑢 4 (𝐼𝐼𝑥𝑥𝑥𝑥 − 𝐼𝐼𝑦𝑦𝑦𝑦 )𝜙𝜙𝜃𝜃 ̇ ̇ 0 𝐼𝐼𝑚𝑚 (𝜔𝜔̇ 1 − 𝜔𝜔̇ 2 + 𝜔𝜔̇ 3 − 𝜔𝜔̇ 4 )

𝑙𝑙 𝐼𝐼𝑚𝑚
⎡ 𝑢𝑢2 + 𝐼𝐼1 𝜃𝜃̇𝜓𝜓̇ − 𝜃𝜃̇ (𝜔𝜔1 − 𝜔𝜔2 + 𝜔𝜔3 − 𝜔𝜔4 ) ⎤
⎢ 𝐼𝐼𝑥𝑥𝑥𝑥 𝐼𝐼𝑥𝑥𝑥𝑥 ⎥
𝜙𝜙̈
⎢ 𝑙𝑙 𝐼𝐼𝑚𝑚 ⎥
� 𝜃𝜃̈ � = ⎢ 𝑢𝑢3 + 𝐼𝐼2 𝜙𝜙̇𝜓𝜓̇ + 𝜙𝜙̇(𝜔𝜔1 − 𝜔𝜔2 + 𝜔𝜔3 − 𝜔𝜔4 )⎥ (2.14)
𝐼𝐼𝑦𝑦𝑦𝑦 𝐼𝐼𝑦𝑦𝑦𝑦
𝜓𝜓̈ ⎢ ⎥
⎢ 1 𝑢𝑢 + 𝐼𝐼 𝜙𝜙̇𝜃𝜃̇ + 𝐼𝐼𝑚𝑚 (𝜔𝜔̇ − 𝜔𝜔̇ + 𝜔𝜔̇ − 𝜔𝜔̇ ) ⎥
⎣ 𝐼𝐼𝑧𝑧𝑧𝑧 4 3
𝐼𝐼𝑧𝑧𝑧𝑧 1 2 3 4

En esta última expresión se utilizan los momentos de inercia I1, I2 e I3 para simplificar la
expresión. Estos momentos de inercia se definen como:
𝐼𝐼𝑦𝑦𝑦𝑦 − 𝐼𝐼𝑧𝑧𝑧𝑧
⎡ ⎤
⎢ 𝐼𝐼𝑥𝑥𝑥𝑥 ⎥
𝐼𝐼1
⎢ 𝐼𝐼𝑧𝑧𝑧𝑧 − 𝐼𝐼𝑥𝑥𝑥𝑥 ⎥
�𝐼𝐼2 � = ⎢ (2.15)
𝐼𝐼𝑦𝑦𝑦𝑦 ⎥
𝐼𝐼3 ⎢ ⎥
⎢𝐼𝐼𝑥𝑥𝑥𝑥 − 𝐼𝐼𝑦𝑦𝑦𝑦 ⎥
⎣ 𝐼𝐼𝑧𝑧𝑧𝑧 ⎦

2.2.4 Dinámica de los motores

Como se explica más adelante, en la sección 3.1.2, los motores empleados son motores
brushless. Estos motores tienen la particularidad de ser motores trifásicos, pero alimentados con
corriente continua, por lo que vistos desde fuera tienen el esquema equivalente de un motor DC.
La dinámica que rige su comportamiento es por lo tanto la misma que para un motor DC, existiendo
una constante kt que relaciona el par con la corriente, y una constante ke que relaciona la tensión en
bornas del motor con su velocidad angular de giro. Expresadas en las unidades adecuadas, estas dos
constantes se pueden suponer iguales, por lo que se habla de una única constante K.

Figura 2.5. Esquema equivalente de un motor DC.

15
Las ecuaciones diferenciales del motor DC son las siguientes:
𝑑𝑑𝑑𝑑 𝑑𝑑𝑑𝑑
𝑣𝑣 = 𝑅𝑅 𝑖𝑖 + 𝐿𝐿 + 𝑒𝑒 = 𝑅𝑅 𝑖𝑖 + 𝐿𝐿 + 𝐾𝐾 𝜔𝜔 (2.16)
𝑑𝑑𝑑𝑑 𝑑𝑑𝑑𝑑

𝑇𝑇 1 𝑑𝑑𝜔𝜔
𝑖𝑖 = = (𝐼𝐼𝑚𝑚 + 𝑇𝑇𝑅𝑅 ) (2.17)
𝐾𝐾 𝐾𝐾 𝑑𝑑𝑑𝑑

Al tratarse de un sistema de ecuaciones diferenciales donde aparecen las derivadas de dos


variables, la ecuación diferencial resultante que relaciona la tensión aplicada al motor (v) y la
velocidad angular de salida (ω) es de segundo orden. Para simplificar estos cálculos, se puede
suponer que la inductancia es suficientemente pequeña debido al tamaño de los motores, con lo
que la ecuación queda así:
𝑅𝑅 𝑑𝑑𝜔𝜔
𝑣𝑣 = (𝐼𝐼𝑚𝑚 + 𝑇𝑇𝑅𝑅 ) + 𝐾𝐾 𝜔𝜔 (2.18)
𝐾𝐾 𝑑𝑑𝑑𝑑

Figura 2.6. Diagrama de bloques de un motor DC.

En el caso de que el motor esté unido a una hélice, aparece un contrapar al arrastre, por lo que
la ecuación, despreciando el rozamiento interno en el motor queda de la siguiente manera:
𝑅𝑅 𝑑𝑑𝜔𝜔
𝑣𝑣 = (𝐼𝐼𝑚𝑚 + 𝑑𝑑 𝜔𝜔2 ) + 𝐾𝐾 𝜔𝜔 (2.19)
𝐾𝐾 𝑑𝑑𝑑𝑑

2.2.5 Efecto suelo y efecto techo

El efecto suelo consiste en el aumento del empuje vertical (empuje) que sufre una aeronave
cuando está cerca del suelo [6]. Esto se debe a que el flujo de aire descendente que generan los
propulsores rebota contra el suelo si está suficientemente cerca, e impulsa la nave hacia arriba.

El principio de sustentación de un cuadricóptero se basa en utilizar hélices cuyas palas tienen


una cierta inclinación. Al girar, el aire es impulsado hacia fuera y hacia abajo, generando en las
palas unas fuerzas hacia dentro y hacia arriba. Sin embargo, por la geometría de las hélices, las
fuerzas horizontales se compensan entre sí, dando lugar a una fuerza neta ascendente (el empuje).

Sin embargo, según el entorno donde se sitúe el cuadricóptero, este flujo de aire descendente
puede rebotar y generar nuevas fuerzas, como en el caso del efecto suelo.

16
Matemáticamente existen estudios que han sacado modelos teóricos cuantificando este efecto,
como hizo Johnson [7], según los cuales el efecto suelo es despreciable desde alturas muy pequeñas:
𝑇𝑇 1
= (2.20)
𝑇𝑇∞ 𝑅𝑅 2
1 − �4𝑧𝑧�

Sin embargo, ensayos posteriores realizados por el grupo GRASP de la Universidad de


Pennsylvania [8] demostraron que este modelo matemático no se corresponde con la realidad.
Estos ensayos muestran una influencia mayor del efecto suelo.

En estos ensayos se utilizó un cuadricóptero con unas hélices de 4 cm, y se mantuvo en vuelo
estacionario a distintas alturas. Se comparó la velocidad angular de los motores con la altura, y el
resultado fue que era necesaria una velocidad menor cuanto menor fuera la altura, hasta alcanzar
los 20 cm. A partir de esta cota, el efecto suelo era nulo.

Figura 2.7. Cuantificación empírica del efecto suelo.

Otro efecto que también modifica el empuje de la aeronave es el efecto techo. Este efecto sólo
actúa en vuelos en interiores, como es el caso del cuadricóptero que se va a utilizar en este
proyecto. Cuando las palas al girar generan un flujo de aire descendente, si por encima existe una
superficie cercana, se genera una zona de presión baja encima del cuadricóptero debido a la
succión, por lo que el empuje también aumenta.

El efecto techo también fue estudiado por el grupo GRASP y se observó empíricamente que
el aumento del empuje era menor que en el efecto suelo, ya que las velocidades angulares de los
motores disminuyeron menos.

Figura 2.8. Cuantificación empírica del efecto techo.

17
En lo que se refiere a este proyecto, se deberán considerar estos efectos durante el despegue
y el aterrizaje (efecto suelo) y durante el modo de vuelo (efecto techo) de la siguiente manera:

Al despegar, el efecto suelo supone una ayuda inicial que disminuye la potencia requerida a
los motores, aunque por otro lado puede aumentar la inestabilidad. Por este motivo, se tratará
como una perturbación que el control deberá ser capaz de vencer. Al aterrizar, el efecto suelo
suaviza un acercamiento brusco al suelo, por lo que se tendrá en cuenta de manera empírica para
diseñar el aterrizaje.

En cuanto al efecto techo, existe el riesgo de que el cuadricóptero choque contra él si se


aproxima demasiado, ya que cuanto más cerca esté del techo, mayor será el empuje, lo que hará
que a su vez se acerque más. Sin embargo, con el control apropiado y sensores de posición que
midan la distancia o bien al suelo o bien al techo, este riesgo desaparece.

2.2.6 Modelo dinámico del cuadricóptero

Como se comentó en el apartado 1.2, este proyecto pretende ser la continuación de un


proyecto anterior [9]. En ese proyecto se logró obtener un modelo matemático del cuadricóptero
que será la base de partida del proyecto actual. Este modelo está basado a su vez en el modelo
descrito en [4], pero en su versión simplificada. Todos los parámetros fueron calculados a partir
de un modelo CAD del cuadricóptero que se utilizó, realizado con el programa Solid Edge y de
una serie de ensayos experimentales que se llevaron a cabo con las hélices y los motores. Estos
parámetros se recogen en la Tabla 2.2:

Tabla 2.2. Parámetros físicos de la estructura del cuadricóptero y de los rotores. [9]

De ese estudio, también se concluyó que los efectos aerodinámicos sobre la estructura son
despreciables en el modelo, por lo que no se tuvieron en cuenta. Además de ésta, se hicieron otras
simplificaciones, como suponer el tensor de inercia diagonal debido a la simetría que presenta la
aeronave. Esto facilita el cálculo y permite simplificar las ecuaciones. Debido a esta simetría
también se comprueba que los momentos de inercia en los ejes horizontales son prácticamente
iguales.

Las ecuaciones utilizadas en [9] son la (2.6), (2.12), (2.14), (2.15) y (2.18), con la diferencia
de que en la (2.14) desprecia el efecto de la aceleración de los motores. Además, añade la
expresión de las derivadas de los ángulos de Euler con respecto al tiempo en función de las
velocidades angulares en los ejes propios del cuadricóptero:
1 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 · 𝑠𝑠𝑠𝑠𝑠𝑠𝜙𝜙 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 · 𝑐𝑐𝑐𝑐𝑐𝑐𝜙𝜙
𝜙𝜙̇ 𝜔𝜔𝑥𝑥
0 𝑐𝑐𝑐𝑐𝑐𝑐𝜙𝜙 −𝑠𝑠𝑠𝑠𝑠𝑠𝜙𝜙
� 𝜃𝜃̇ � = � 𝜔𝜔
� · � 𝑦𝑦 � (2.21)
𝑠𝑠𝑠𝑠𝑠𝑠𝜙𝜙 𝑐𝑐𝑐𝑐𝑐𝑐𝜙𝜙 𝜔𝜔𝑧𝑧
𝜓𝜓̇ 0
𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐

18
Por otro lado, en el modelo se incluye las medidas de salida de la IMU, que se utilizarán en
la simulación. Como se explica en el apartado 3.1.6, la IMU es la Unidad de Medición Inercial,
que consta de acelerómetros y giróscopos. Las medidas de los giróscopos son las velocidades
angulares en la base solidaria: ωx, ωy, ωz. Las medidas de los acelerómetros son las aceleraciones
lineales también en la base solidaria, que se calculan de la siguiente forma:
𝑎𝑎𝑥𝑥 0 𝑋𝑋̈
�𝑎𝑎𝑦𝑦 � = 𝑹𝑹𝒕𝒕 �� 0 � − �𝑌𝑌̈ �� (2.22)
𝑎𝑎𝑧𝑧 𝑔𝑔 𝑍𝑍̈

Este modelo tiene la ventaja de estar adaptado para Matlab/Simulink. En la Figura 2.9 se
muestra un diagrama de la estructura de su modelo, basado en variables de estado.

Figura 2.9. Diagrama del modelo dinámico. [9]

2.3 Métodos de control


Existen numerosas técnicas de control diseñadas para todo tipo de sistemas, que van desde
las más sencillas como los controles proporcionales hasta las más complejas como el control
predictivo. En el caso de control de cuadricópteros, es necesario el uso de estrategias
suficientemente robustas para compensar la alta inestabilidad de la planta, aunque el uso de
controles demasiado complejos conlleva la necesidad de utilizar periodos de muestreo altos, con
los que a lo mejor no es posible hacer estable la aeronave. A continuación se explican brevemente
los controles más comunes.

2.3.1 PID

Se trata de un controlador que aplica en el mando una respuesta Proporcional, Integral y


Diferencial del error. La acción proporcional permite responder más intensamente cuanto mayor
sea el error de seguimiento. La acción integral acumula el error y genera un mando proporcional
al error acumulado. Esto permite que ante una referencia constante, el mando se incremente hasta
lograr compensar el error totalmente, e incluso compensar el error ante una perturbación. La
desventaja que conlleva la acción integral es que ralentiza la respuesta y aumenta el tiempo hasta
alcanzar el régimen permanente. Por último, la acción diferencial genera un mando proporcional
a la derivada del error, por lo que al tener en cuenta no sólo su valor sino también su tendencia

19
permite responder de manera mejor y más rápida. Sin embargo, es cierto que amplifica en el
mando el ruido de los sensores, por lo que se suele acompañar de un filtro paso bajo.

A la hora de linealizar el modelo, el punto de operación utilizado corresponde al de vuelo


estacionario [3]. Este método ha demostrado funcionar adecuadamente aunque no es
suficientemente robusto ante perturbaciones.

2.3.2 LQR

El LQR (Linear-Quadratic Regulator) es un sistema de control basado en coste mínimo.


Ajusta automáticamente la matriz de realimentación de estados para un punto de operación dado,
con el objetivo de minimizar las desviaciones respecto de las especificaciones. El LQR permite
dar unas ponderaciones a las distintas desviaciones en la función de coste, que tendrán en cuenta
la importancia de unas variables u otras a la hora de buscar el mínimo. Este controlador fue
implementado en éxito, como se describe en [10] aunque sólo a velocidades bajas. Posteriormente
se logró generar un método para optimizar esas ponderaciones y seguir trayectorias con relativa
precisión [11]. Sin embargo, el mayor avance con el controlador LQR se consiguió al implementar
el sistema con estados independientes [4], de manera que la matriz no se calculaba para un único
punto de operación (vuelo estacionario), sino para cada estado. Este control supuso mayor
autonomía y robustez al no restringir las trayectorias a vuelos cuasiestacionarios.

2.3.3 Control de linealización mediante realimentación

Las ecuaciones que describen el comportamiento dinámico de un cuadricóptero, que se han


detallado en el apartado 2.2.3, no son lineales sino que tienen términos donde algunas de las
variables de estado se multiplican entre sí. Para poder diseñar un control con este tipo de plantas,
una alternativa es crear una variable intermedia que tenga una relación lineal con la salida. De
este modo se hace una conversión del mando inicial a este mando intermedio y en esa conversión
se acumulan todos los términos no lineales basándose en el modelo. A esta estrategia se la conoce
como linealización mediante realimentación o feedback linearization.

Este control fue implementado con éxito [12] utilizando como vector de estado
𝑋𝑋 𝑇𝑇 = [𝑥𝑥̇ 𝑦𝑦̇ 𝑧𝑧̇ 𝜙𝜙 𝜃𝜃 𝜓𝜓 𝜙𝜙̇ 𝜃𝜃̇ 𝜓𝜓]̇ (2.23)
para eliminar las relaciones no lineales entre las derivadas de las velocidades angulares y los
ángulos de Euler. El control resultante era equivalente a un PD porque realimenta tanto los propios
ángulos como las velocidades angulares. Este tipo de control será el que se tome como modelo
de control de estabilización en este proyecto.

2.3.4 Otros controles

Existen muchos otros métodos de control que se han implementado con cuadricópteros. Entre
ellos destacan el control predictivo [13], que es uno de los más potentes porque utiliza un método
de mínimos cuadrados para reducir el error entre la medida (o la estimación) y la referencia.
También se han utilizado con éxito otros controles como el control borroso o fuzzy [14] o
controles basados en redes neuronales [15].

20
2.4 Estimadores de estado
En el proceso de control es necesario hacer continuas mediciones de las variables que se desea
controlar, como las distancias a la pared o los ángulos de Euler. Sin embargo, algunas de estas
medidas presentan ruido debido a los sensores, a la naturaleza de las medidas o a vibraciones de
los motores, o bien son imposibles de medir. Para evitar estos problemas, que muchas veces llevan
a que el control sea inestable, existen los estimadores de estado.

Un estimador de estado es capaz de estimar el valor real de una medida. En un control por
realimentación de estado son comunes tres estimadores distintos, en función de las variables que
utilicen en su proceso de estimación. El estimador de lazo abierto se basa en un modelo de la
planta y tiene en cuenta únicamente los mandos. El observador de orden completo combina los
mandos con todas las salidas de la planta para estimar mejor el estado del sistema. Cuando no se
emplean todas las salidas, sino solamente algunas de ellas, se habla de un observador de orden
reducido.

En concreto para los cuadricópteros, es necesario utilizar estimadores con los ángulos de
Euler, porque no es posible medirlos directamente, sino únicamente las velocidades angulares
gracias a los giróscopos, y las aceleraciones lineales gracias a los acelerómetros. Los dos
estimadores más comunes que se utilizan en las aeronaves no son los anteriores, sino unos que
filtran en cierto modo estas medidas y las combinan. Son el filtro complementario y el filtro de
Kalman.

2.4.1 Filtro complementario

El valor de los ángulos de Euler se puede estimar a partir de las velocidades angulares por
integración. Es posible deducir la expresión de las velocidades expresadas en ángulos de Euler a
partir de las velocidades en ejes solidarios según se muestra en (2.21), y una vez conocidas, se
pueden integrar para obtener los ángulos. El problema de este método es que los giróscopos suelen
tener un pequeño error de medida, que depende fundamentalmente de la temperatura, e integrar
este error supone acumular un error cada vez mayor en la estimación.

Por otro lado, a partir de las aceleraciones lineales, expresadas en ejes del cuerpo se puede
conocer la orientación del cuadricóptero por la proyección de la gravedad. El inconveniente de
esta forma de estimar los ángulos es que las aceleraciones propias del cuadricóptero alteran el
valor real de las proyecciones de la gravedad.

El filtro complementario combina las medidas de giróscopos y acelerómetros eliminando


primero las componentes que desvirtúan la medida. Por eso se pasan las medidas de los giróscopos
por un filtro paso alto, que elimina el error de medida que es aproximadamente constante a la
misma temperatura, y la medida de los acelerómetros por un filtro paso bajo, para quedarse con
el valor fijo que es la gravedad.

El filtro complementario es muy útil para estimar las variable de estado de la IMU [16] porque
unifica ambas medidas utilizando previamente un filtro paso bajo para los acelerómetros y un
filtro paso alto para los giróscopos, de manera que no se tienen en cuenta las componentes que
provocan los errores.

21
2.4.2 Filtro de Kalman

El filtro de Kalman es un observador en tiempo discreto recursivo, lo que le permite funcionar


en tiempo real. En principio, un observador tiene una matriz de ganancias K que sirve para estimar
las variables de estado que no se pueden medir. Sin embargo, la ventaja del filtro de Kalman es
que a partir de la matriz de covarianzas P, genera automáticamente cada vez una matriz K óptima.
Consta de dos fases: En la primera, la fase de predicción, calcula una estimación a priori del estado
y de la matriz P, basándose en el modelo y en los valores que tenían en el instante anterior. En la
segunda, que es la fase de corrección, calcula las ganancias que debe aplicar (matriz K) a partir
de la matriz P y utiliza las medidas para calcular el error entre medida y modelo. A continuación,
actualiza la estimación a priori del estado añadiendo el error multiplicado por la ganancia.
Además, actualiza la matriz de covarianzas, que será utilizada de nuevo en la siguiente iteración.

Figura 2.10. Esquema de funcionamiento del filtro de Kalman.

El filtro de Kalman original sirve sólo para sistemas lineales. Por este motivo, en los
cuadricópteros se suele utilizar el filtro de Kalman extendido [17], que linealiza el modelo
utilizando la aproximación de Taylor en cada iteración.

2.5 Software
Para hacer la programación del control y descargarlo con éxito en la tarjeta es necesario
utilizar un software específico. En este proyecto se van a utilizar Matlab y Simulink pero es
necesario diseñar en Simulink los bloques específicos para que la tarjeta responda correctamente.

2.5.1 Driver blocks

En el anterior proyecto se diseñaron una serie de driver blocks para la tarjeta CRIUS de
Arduino que se utilizó [9]. Los driver blocks son funciones programables en Matlab y Simulink
que permiten descargar un código de Simulink sobre un controlador. Pueden ser de tipo input o
de tipo output, según sirvan para recoger medidas del controlador o para actualizar salidas. En
cualquier caso, no afectan durante las simulaciones.

Los driver blocks que se diseñaron fueron para la IMU, para el transmisor-receptor de radio
control, para los motores y por último para el lector del estado de la batería.

22
2.5.2 ArduPilot Mega

En el año 2013, estudiantes de la Universidad Aeronáutica Embry-Riddle en colaboración


con Gulfstream Aerospace Corporation diseñaron un blockset de Simulink con todos los driver
blocks adaptados para los controladores ArduPilot Mega (APM) de Arduino [18], pensados
específicamente para el control de UAVs. Estos driver blocks han demostrado funcionar
correctamente y han permitido implementar con éxito controles sobre vehículos aéreos. Por este
motivo, en este proyecto se va a utilizar este mismo blockset, que Matlab ha incorporado y que
ya comercializa.

Entre todos los bloques de APM para Simulink cabe destacar el de la IMU, el del barómetro,
el de los puertos analógicos y digitales, el del magnetómetro, el de la memoria flash, el del GPS,
el de la emisora RC o el del timer.

También se prepararon un entorno de simulación (Figura 2.11) y un entorno de implantación


del control (Figura 2.12).

Figura 2.11. Entorno de simulación de APM.

Figura 2.12. Entorno de implantación del control de APM.

23
2.5.3 Máquinas de estados

Para poder seguir una secuencia ordenada y lógica de vuelo, es necesario desarrollar una
máquina de estados que regule el funcionamiento del cuadricóptero en cada situación. Existen
diversas posibilidades, pero un ejemplo útil es el que se diseñó en el anterior proyecto para el
cuadricóptero que se va a utilizar [9]. Consta de 6 estados: Quad Off (desconectado), Armado
(suministra tensión a los motores), Ascenso (despegue vertical hasta 1.8m), Quad On (Vuelo),
Descenso (aterrizaje vertical), y Seguridad (si se superan 3m de altura, se baja de nuevo a 1.8m).
En la Figura 2.13 se muestra el diagrama de estados.

Figura 2.13. Máquina de estados para cuadricóptero.

24
Capítulo 3 .

Implementación hardware y software

3.1 Elementos del cuadricóptero


A continuación se expondrán los distintos elementos presentes en un cuadricóptero de
pequeño tamaño como el que se utiliza en este proyecto. Todos ellos pueden comprarse en tiendas
especializadas por separado, aunque también existe la posibilidad de adquirirlos todos juntos para
montar directamente el aparato.

3.1.1 Estructura

La estructura del cuadricóptero es el marco sobre el que se montan todos los demás elementos.
Debe ser suficientemente rígida como para no deformarse durante el vuelo. La forma de la
estructura debe ser de cruz, con los cuatro brazos iguales y perpendiculares entre sí. En el centro
debe tener espacio para colocar una tarjeta de control donde descargar el software que permita el
vuelo y donde situar la unidad de medición. Dado que este proyecto no se centra en la construcción
sino en únicamente en el control del cuadricóptero, se ha optado por comprar la estructura. De
entre todas las posibilidades, se ha elegido una que lleva integrado el circuito de control de los
motores que se explica en los siguientes apartados, y también lleva un regulador de tensión que
proporciona una tensión de 5 V.

Figura 3.1. Estructura del cuadricóptero.

25
3.1.2 Motores

Dado que la alimentación se tiene que hacer con una batería, que proporciona corriente
continua, es necesario utilizar motores DC para hacer girar las hélices. Los motores de continua
utilizan escobillas para realizar una conmutación mecánica de la corriente y generar el par
necesario gracias a unos imanes permanentes. Su funcionamiento se basa en mantener fijo el
campo magnético del rotor. Para ello, sólo se permite el paso de corriente por algunas de las
bobinas, aquellas que están en contacto con las escobillas. De este modo, a medida que va girando
el rotor, se produce una conmutación mecánica, y se mantiene fijo el campo magnético del
inducido (rotor), que es siempre perpendicular al del estator.

Sin embargo, el mantenimiento de estos motores es alto, ya que las escobillas se deterioran
con facilidad debido al roce continuo con las delgas. Por ello aparecen como alternativa los
motores brushless, es decir, sin escobillas. Estos motores son en realidad pequeños motores
trifásicos síncronos, que utilizan bobinas e imanes permanentes. Las bobinas del estator se
alimentan con corriente alterna trifásica, y generan un campo magnético giratorio. A su vez, el
campo generado en el rotor por los imanes permanentes tiende a alinearse con el del estator,
produciendo el giro del rotor.

Los motores brushless tienen la gran ventaja de evitar las pérdidas por rozamiento debido a
la ausencia de escobillas. Además, esto facilita el mantenimiento y alarga su vida útil. Para
modificar su velocidad de giro, es necesario variar la frecuencia de la corriente alterna con la que
se alimenta el estator. Esta tarea se lleva a cabo con los ESC.

3.1.3 Controlador electrónico de velocidad

Un Controlador electrónico de velocidad o ESC (del inglés, Electronic Speed Control), es un


pequeño circuito inversor que genera corriente alterna trifásica a partir de una tensión continua y
una señal de entrada para controlar la frecuencia. Los ESC se alimentan directamente de la batería,
y la señal de control que reciben es un PWM con un ton entre 1 ms y 2 ms, con el que ajustan la
frecuencia de la alimentación de los motores brushless.

La ventaja de estos controladores es que permiten trabajar de manera sencilla con los motores
brushless, de manera que el esquema equivalente visto desde la batería es el un motor DC normal,
en el que la señal de control regula la tensión de alimentación. De este modo, si esta señal es de
1 ms, los motores estarán parados, mientras que si es de 2 ms, girarán a velocidad máxima.

Como se ha explicado en el apartado 3.1.1, la estructura que se ha utilizado en el proyecto


tiene la ventaja de llevar integrados los cuatro ESC, por lo que no ha sido necesario adquirirlos
aparte.

3.1.4 Baterías

Para alimentar tanto a los motores como a la tarjeta de control que se ha empleado, además de
a toda la circuitería integrada en la estructura es necesario utilizar una batería, ya que el uso de una
fuente externa se descarta por la exigencia de utilizar un cable. La tarjeta necesita una alimentación
de 5 V, aunque gracias al regulador de tensión incorporado en la estructura, es posible alimentar la

26
tarjeta desde la estructura, y eliminar así una batería. También será necesaria una batería para la
emisora. Aunque ésta sí puede alimentarse a partir de una fuente externa, el uso de la batería permite
mayor independencia.

Existen varios tipos de baterías en el mercado. Entre ellas, las más comunes son las baterías de
níquel e hidruro metálico (NiMH), de níquel y cadmio (NiCd), de ion litio (Li-ion), de polímero de
litio (LiPo) y de litio y ferrofosfato (LiFe).

Estas baterías están formadas por distintas celdas en serie, por lo que existen múltiples
combinaciones. Cada celda tiene una tensión nominal y una tensión máxima, ya que la tensión no
se mantiene constante durante el proceso de descarga. Algunas de ellas también tienen una tensión
mínima por debajo de la cual la batería queda inservible e incluso puede arder o explotar.

En cuanto al análisis de las distintas alternativas, las dos primeras tienen el inconveniente de
tener una tensión demasiado baja para lo que necesitan los motores, por lo que se descartan. Las
baterías Li-ion, también se descartan, ya que son el antecedente de las LiPo, que son más compactas
y tienen mayor capacidad de descarga. A continuación, se analizan más en detalle las dos que se
han utilizado en este proyecto.

Baterías LiPo

Las baterías de polímero de litio [19] tienen una gran densidad energética, en comparación con
las demás baterías del mercado. Esto significa que su masa es pequeña en comparación con la
energía que pueden almacenar. Además tienen una alta capacidad de descarga. Esto resulta muy
beneficioso puesto que la potencia de los motores para levantar y permitir el vuelo del cuadricóptero
es elevada. Tienen un ciclo de vida largo, permitiendo cientos de cargas y descargas. Todas estas
características las hace muy adecuadas para un cuadricóptero. De hecho son las más recomendadas
para este tipo de aplicaciones.

Figura 3.2. Batería LiPo de dos celdas.

Sin embargo también tienen ciertos inconvenientes: aparte de funcionar mal a temperaturas altas
o bajas (algo que por las condiciones de vuelo en interiores del proyecto no supone un problema),
tienen una tensión mínima, de unos 3 V, que bajo ningún concepto debe sobrepasarse, ya que la
batería comienza a arder y explota, y aunque no llegue a ese extremo, queda inservible. Tampoco
responde bien si se dejan almacenadas con un nivel de carga elevado.

27
La tensión nominal de cada celda es de 3.7 V, y su tensión máxima es de 4.2 V, por lo que para
este proyecto se necesitaría una batería de dos celdas. También sería apropiada una de tres celdas,
aunque se prefiere una de dos por el incremento de peso que supone una celda más.

Baterías LiFe

Las baterías de litio y ferrofosfato son muy parecidas a las LiPo, aunque tienen ciertas
diferencias. La principal ventaja frente a las LiPo es que no arden si se descargan en exceso, y
además tienen una duración más larga. Sin embargo su densidad energética es menor, por lo que
son más pesadas que las LiPo. Por otro lado su tensión nominal es de sólo 3.3 V, llegando a un
máximo de 3.6 V, por lo que serían necesarias 3 celdas para el cuadricóptero.

Por estos motivos, lo más aconsejable es utiliza las baterías LiPo para el cuadricóptero, ya que
lo que gana la LiFe en autonomía lo termina perdiendo por peso, al demandar más potencia a los
motores. En cuanto a la emisora, sí es más conveniente usar una LiFe, porque el peso no es tan
crítico, y por autonomía resulta más cómoda.

BEC

En lo referente a la alimentación de la tarjeta se utiliza un circuito eliminador de batería o BEC


(del inglés, Battery Eliminator Circuit). Se trata de un regulador de tensión que convierte una
tensión continua en otra distinta. Muchos ESC llevan un BEC integrado, aunque en el caso de este
proyecto, el BEC va integrado en la estructura. Esto simplifica las conexiones, porque sólo es
necesario conectar la batería a la estructura, y desde ahí se da energía a la tarjeta, a los ESC y a los
motores.

Cargador de baterías

Para cargar las baterías es necesario utilizar un cargador específico para cada una. Por eso lo
más cómodo es usar uno con distintos modos que sirva para todas. Existen cargadores que además
son balanceadores, o estabilizadores, de manera que regulan la tensión de cada celda para que todas
estén cargadas por igual y evitar problemas si alguna se sobrecarga o se queda por debajo del límite.
En el proyecto se empleará un cargador IMAX que cumple estas especificaciones.

Figura 3.3. Cargador-balanceador de baterías

28
3.1.5 Circuito impreso

El objetivo del proyecto es diseñar un control para que el cuadricóptero vuele. Este control debe
descargarse en una tarjeta de control para que se ejecute desde ahí. Para que el periodo de muestreo
sea suficientemente pequeño para lograr la estabilidad es necesario que la tarjeta sea suficientemente
potente. Aunque hay una gran variedad de posibilidades, las más interesantes son aquellas que están
ya preparadas para implantarse en drones. Existen controladores de Arduino específicamente
diseñados para UAVs, como los del proyecto ArduPilot Mega, que unen la simplicidad de manejo
de Arduino con una estructura adaptada a las entradas y salidas que se necesitan para controlar un
cuadricóptero.

De entre las alternativas, el más adecuado es el HKPilot Mega [20], que consta de los puertos
de entrada y salida necesarios para conectar con la emisora y los ESC, y además de 9 puertos
analógicos que pueden servir para los sensores de distancia y la lectura de la batería. Incorpora
asimismo una IMU con giróscopos, acelerómetros y magnetómetros para monitorizar el estado del
cuadricóptero, y conexiones microUSB, I2C y GPS.

Figura 3.4. Tarjeta de control HKPilot Mega 2.7.

3.1.6 Unidad de medición inercial (IMU)

Como se ha comentado anteriormente, la IMU es la unidad de medición inercial (del inglés,


Inertial Measurement Unit) que consta de varios elementos microelectromecánicos de medición
para conocer en todo momento el estado, en este caso, del cuadricóptero. En este proyecto las
medidas de la IMU se han utilizado para conocer la orientación del cuerpo, porque la posición se ha
medido con sensores de distancia. Es por esta razón que los magnetómetros no van a ser necesarios.

Giróscopos

Un giróscopo es un instrumento capaz de medir las velocidades angulares de un cuerpo. Gracias


al desarrollo de los sistemas microelectromecánicos (MEMS), es posible integrarlos dentro de
pequeños chips. Su funcionamiento se basa en el efecto Coriolis [21]. Al someterse a una rotación,
el giróscopo mide la deformación de una masa inercial interna gracias a unas pequeñas galgas que
generan una tensión proporcional a la elongación. En función de esta tensión es posible conocer la

29
velocidad angular de giro. La IMU consta de tres giróscopos, uno para cada eje, de modo que la
medida resultante es la velocidad angular total expresada en los ejes del cuerpo (sistema solidario).

Acelerómetros

Los acelerómetros tienen un funcionamiento basado en sensores piezoeléctricos. Son capaces


de medir las aceleraciones en un eje, siendo insensibles a las aceleraciones ortogonales a éste. Su
principio de funcionamiento se basa en las elongaciones que se generan en unos pequeños muelles
cuando una masa inercial es sometida a una fuerza. Estas elongaciones se traducen en unas
diferencias de potencial que permiten calcular la aceleración. Igual que sucede con los giróscopos,
la IMU cuenta con 3 acelerómetros orientados en los 3 ejes para poder medir la aceleración total en
el sistema solidario al cuerpo.

Figura 3.5. Acelerómetro.

3.1.7 Sistemas de comunicaciones

El diseño del control necesario para permitir el vuelo autónomo del cuadricóptero se realiza en
el ordenador con el programa Matlab y su extensión de Simulink. Sin embargo, es necesario
descargar el código generado en la tarjeta de control que va conectada a la emisora, a los motores y
a los sensores. Por otro lado, para dar las órdenes de vuelo, tanto en la fase de vuelo manual como
para indicar que comience el vuelo autónomo, o para indicar parada de emergencia, hace falta enviar
unas referencias desde la emisora.

Para realizar estas tareas es necesario utilizar sistemas de comunicaciones. Primero entre el
ordenador y el micro, que se hará a partir de USB por ser la entrada más sencilla de manejar que
hay en la tarjeta. A través del puerto serie del ordenador es posible enviar y recibir datos a altas
velocidades. Otra alternativa es utilizar sistemas de comunicación inalámbrica como Bluetooth o
XBee, pero como el micro no lo soporta directamente sería necesario añadir otro receptor, por lo
que se descarta.

En cuanto a la comunicación con la emisora, desde donde se envíen las referencias del control,
el sistema debe ser obligatoriamente inalámbrico. Las alternativas son de nuevo los protocolos de
Bluetooth y XBee, aunque el sistema más extendido y adaptado al vuelo de aeronaves es por
radiocontrol (RC). En este proyecto se ha escogido este método por existir ya emisoras RC
preparadas para esta finalidad y por ser también la forma más sencilla y a la vez intuitiva de
transmitir órdenes al

30
Las emisoras RC para aeronaves tienen cuatro canales analógicos para dar las referencias de
alabeo, cabeceo, guiñada y empuje. También tienen más canales, tanto digitales como analógicos,
y permiten combinar las señales de varios de ellos. Hay varios modelos en el mercado, de
características similares. Uno de ellos es la 9XR de Turnigy, que permite emitir hasta en 9 canales,
y es la que se ha utilizado. A las emisoras hay que añadirles el transmisor propiamente dicho, que
se coloca en la parte posterior y enlazarlo con un receptor, que va colocado sobre el cuadricóptero
y conectado por cables a la tarjeta de control.

Figura 3.6. Emisora RC y receptor.

3.1.8 Sensorización

Las medidas de la IMU permiten conocer la orientación del cuadricóptero en el espacio. Sin
embargo, no sirven para conocer su posición dentro de un recinto cerrado. Para este fin se han
empleado una serie de sensores incorporados en el cuadricóptero cuyas señales serán después
procesadas por el algoritmo de control para enviar la señal correspondiente a los motores. Entre
los posibles sensores que cabe utilizar los más destacables son ultrasonidos, infrarrojos y cámaras
de visión artificial

Ultrasonidos

Los sensores ultrasonidos emiten un tren de pulsos que rebotan al encontrar un obstáculo y al
alcanzar de nuevo el sensor son detectados. En función del tiempo transcurrido entre la emisión
y la recepción, sabiendo que las ondas se propagan a la velocidad del sonido, es sencillo saber la
distancia a la que se encuentra un objeto. Tienen una gran ventaja y es que son capaces de detectar
un objeto en un cono de unos 20º, lo que permitiría que aunque el cuadricóptero no estuviera
completamente paralelo a la pared, fuera capaz de mantener una separación constante. Sin
embargo, para poder manejar los ultrasonidos es necesario enviar primero una orden para que
emita el pulso y después ser capaz de detectar el ancho de pulso de la respuesta. Como la duración
de la respuesta es del orden de cientos de microsegundos, el periodo de muestreo necesario es
demasiado pequeño para trabajarlo desde Matlab, y obligaría a utilizar un circuito externo con
otro microcontrolador que enviase una orden periódicamente de medición y que fuese capaz de
medir con precisión la respuesta y traducir esta medida a un valor de tensión con el que la tarjeta

31
pudiera trabajar. Para simplificar el proceso de medición de distancia se ha preferido prescindir
de este tipo de sensores.

Infrarrojos

Los sensores infrarrojos emiten un haz de luz infrarroja que al incidir sobre una superficie es
reflejado y detectado de nuevo por el sensor. El receptor es un sensor alargado capaz de detectar
el punto donde incide el haz de luz reflejado. De esta manera es posible conocer el ángulo de
reflexión y con ello la distancia del objeto. Los sensores infrarrojos, a diferencia de los ultrasonidos,
no necesitan recibir una orden para comenzar a medir, sino que lo hacen de manera continua
porque no se estropean con el uso. De esta forma, envían de manera continua un valor de tensión
en función de la distancia a la que se encuentran del objeto reflejado. La tensión es
aproximadamente proporcional al inverso de la distancia. De todas formas, para lograr un nivel
alto de precisión, lo mejor es hacer una calibración uno por uno para conocer qué tensión generan
a diferentes distancias.

Figura 3.7. Esquema de funcionamiento de un sensor infrarrojo.

La gran ventaja es que la señal que envían es fácilmente interpretable gracias a los pines
analógicos de la tarjeta, y fácilmente procesable también por Matlab, donde se puede incluir una
tabla con el calibrado de cada sensor. Sin embargo tienen un gran inconveniente y es la necesidad
de estar enfrentados a la superficie de medida, ya que el valor de tensión se distorsiona cuando el
sensor emite el haz de luz contra una superficie de forma oblicua. Además tampoco son capaces
de detectar obstáculos que no estén perfectamente alineados con el sensor, lo que restringe el
entorno en el que se puede mover el cuadricóptero. Por último tienen el defecto de que el valor
de tensión que devuelven no sólo depende de la distancia a la que se encuentre el objeto, sino
también del grado en que su superficie refleje la radiación infrarroja. No obstante, estas
diferencias son muy sutiles, especialmente para distancias cortas.

A pesar de no ser el mejor tipo de sensor, es el que se ha decidido usar por ser los más sencillos
de manejar. De entre los distintos modelos que existen se han elegido de la marca SHARP por ser
la más extendida, y con un alcance entre 20 y 150 cm. Este rango es suficiente para permitir cierta
autonomía en distancia al cuadricóptero.

Cámaras

La opción más completa es sin duda el uso de cámaras d visión artificial, ya que permiten
tener una visión global del escenario en el que se mueve el cuadricóptero y detectar objetos como

32
columnas o armarios que de otro modo sería imposible diferenciar de la pared. Sin embargo, sería
necesario un procesamiento de la imagen, y eso es algo que excede los límites del proyecto, por
lo que se descarta su uso, aunque es una opción muy recomendable para futuras mejoras.

3.2 Instalación y calibración de sensores infrarrojos


Los sensores infrarrojos se han situado de forma que permitan conocer la distancia a las
paredes frontal y lateral y al suelo. Se han colocado dos sensores en cada dirección para poder
por un lado medir el ángulo con la pared y por otro para reducir el ruido al hacer la media de
ambos sensores. De este modo se han necesitado 6 sensores infrarrojos: dos apuntando en la
dirección del eje x situados bajo las hélices 2 y 4, dos apuntando en la dirección del eje y situados
bajo las palas 1 y 3, y otros dos apuntando en la dirección del eje z situados también bajo las palas
1 y 3.

La distancia frontal se calcula como la media de las medidas de los sensores situados bajo las
hélices 2 y 4. Análogamente, la distancia lateral se calcula como la media de las medidas de los
sensores horizontales bajo las hélices 1 y 3. Por último la altura se estima como la media de las
medidas de los dos sensores bajo las hélices 1 y 3 que están colocados verticalmente, apuntando
al suelo.

Figura 3.8. Colocación y medidas de los sensores infrarrojos horizontales.

Una vez los 6 sensores se colocaron, fue necesario realizar una calibración de cada uno, para
conocer qué valor de tensión daban como salida a las diferentes distancias. Para ello se realizaron
dos tipos de ensayos. Primero se colocó el cuadricóptero sobre el suelo frente a una pared a
distancias entre 15 y 120 cm. Este ensayo permitió calibrar tanto los dos sensores frontales como
los dos laterales. En la Tabla 3.1 se muestra la salida de uno de los sensores para cada distancia.
Los valores de salida corresponden a la tensión leída por los pines analógicos de la tarjeta con
respecto a la tensión de referencia (5 V), expresada en una escala de 0 a 1023.

Estas medidas tienen un cierto nivel de ruido, como se observa en la Figura 3.9, que se debe
por un lado al ruido propio del sensor y por otro lado al ruido en la conversión AD del micro.

33
DISTANCIA (CM) SALIDA DEL SENSOR (0-1023)
15 557
20 504
25 436
30 372
35 324
40 289
45 254
50 228
55 208
60 197
65 185
70 178
80 155
90 139
100 125
110 115
120 106

Tabla 3.1. Calibración de uno de los sensores infrarrojos.

Figura 3.9. Gráfica del proceso de calibración de un sensor infrarrojo.

3.3 Circuito de monitorización de la batería


Una de las medidas más importantes para poder controlar correctamente el cuadricóptero es
el estado de tensión de la batería. Este valor inicialmente será de unos 8.4 V, e irá cayendo a
medida que el cuadricóptero esté en funcionamiento. Conocer la tensión de la batería es esencial
para poder calcular correctamente el factor de servicio con el que deben operar los ESC para
lograr una determinada velocidad de giro en las hélices. La relación entre esta velocidad y la
tensión aplicada al motor se muestra en la Ecuación (2.19). Para dar la tensión adecuada, el factor

34
de servicio debe ser igual a la relación entre la tensión deseada y la tensión en cada instante de la
batería. También es importante conocer el voltaje de la batería por motivos de seguridad, ya que
cuando la batería baja de un umbral en torno a los 7.2 V ya no es capaz de mantener al
cuadricóptero en el aire. Además, al tratarse de una LiPo es imperativo vigilar que no se
descarguen en exceso por los riesgos que conlleva.

Figura 3.10. Circuito de monitorización de la batería.

Para saber esta tensión se ha diseñado un sencillo circuito cuyo esquema se muestra en la
Figura 3.11. Se trata de un divisor de tensión con dos resistencias de 100 kΩ, necesario porque la
tarjeta no admite tensiones mayores de 5 V. Por esta razón la medida que se realiza es en realidad
la mitad de la tensión de la batería. A continuación se ha añadido un buffer de tensión con un
amplificador operacional TLC272 para evitar problemas de carga y que así desde el puerto
analógico no se falsee la lectura. Por último se ha colocado también un pequeño diodo para que
en caso de que se rompa la resistencia R2, la tensión en la entrada del operacional se fije a 5.7 V
y no se rompa también. Además se ha añadido un condensador pequeño para estabilizar la tensión
entre V+ y V-. La salida del buffer va conectada al pin analógico A0 de la tarjeta, y las señales de 5
V y tierra se toman de las salidas de tensión de la tarjeta. Aparte, para evitar que por el reverso de
la placa algún elemento metálico de los componentes pueda hacer conexión con alguno de la tarjeta,
se ha cubierto con cinta adhesiva de doble cara que además facilita mantener el circuito pegado al
cuadricóptero.

Figura 3.11. Esquema electrónico del circuito de monitorización de la batería.


35
3.4 Circuito de alimentación de la tarjeta y los sensores infrarrojos
Cada sensor infrarrojo consume una corriente media de 33 mA, y una corriente máxima de
50 mA. Entre los 6 esto supone una corriente de 200 mA de media y 300 mA máximos. Este
valor, sumado a la corriente que demandan la tarjeta de control y la emisora es superior a los
500 mA que puede dar el BEC integrado en la estructura. Por esta razón se vio necesario diseñar
y construir un pequeño circuito externo con un regulador de tensión para alimentar la tarjeta de
control y los sensores.

Este circuito consta de un regulador de tensión 7805CV, que se puede alimentar a tensiones
de hasta 40 V, y mantiene la salida a 5 V constantes. La corriente máxima que puede proporcionar
es de 1 A, por lo que cumple con las especificaciones que se necesitan para el cuadricóptero. Para
reducir el rizado en la salida se han añadido dos condensadores, de 330 nF y de 100 nF, según las
indicaciones de la hoja de características del regulador. Como la tensión de entrada al regulador
es de en torno a 8 V y la tensión de salida es 5 V, al no tratarse de un regulador conmutado, los 3
V de diferencia se disipan en forma de pérdidas por calor. Para evitar que se sobrecaliente y pueda
estropearse o dañar otros componentes, se le ha añadido un disipador para aumentar la
transferencia de calor con el entorno. Para fijarla al cuadricóptero se ha atornillado el circuito a
la estructura, al lado de la tarjeta de control.

Figura 3.12. Circuito de alimentación.

La tarjeta HKPilot Mega tiene varias posibilidades de alimentación. La más sencilla consiste
en alimentar desde los pines de salida con una tensión de 5.37 V. Desde estos pines se alimenta
toda la tarjeta, pero ésta lleva un diodo de protección con una caída de 0.37 V para evitar que si
se alimentan los pines de entrada o los analógicos, también haya tensión en la salida [22].La
conexión entre los pines de salida y la alimentación de la tarjeta se puede habilitar y deshabilitar
con un jumper. Como el circuito que se ha diseñado está preparado para 5.00 V, se eligió
independizar las salidas del resto de la tarjeta y alimentar ambas zonas por separado. Por esta
razón se ha utilizado el BEC integrado en la estructura para dar tensión a las salidas de la tarjeta,
que a su vez van conectadas a través de la misma estructura a los ESC y a los motores; y el circuito
de alimentación externo con el regulador de tensión para dar tensión al resto de la tarjeta y a los
6 sensores infrarrojos. La emisora va conectada a las entradas de la tarjeta y por lo tanto se
alimenta a través de ella desde el circuito externo.

Es importante realizar la alimentación de esta manera porque si se utiliza exclusivamente el


BEC integrado en la estructura, la tensión de la tarjeta cae hasta los 4.5 V, y además aumenta
significativamente su rizado. Esto supone un problema a la hora de medir tensiones con el

36
conversor A/D, ya que la tensión de referencia no sólo no es 5 V, sino que fluctúa, incrementando
el ruido en las lecturas.

3.5 Instalación y conexiones de la tarjeta HKPilot Mega


Para la colocación de la tarjeta de control se ha montado sobre el cuadricóptero una pequeña
plataforma de plástico. A esta estructura se ha atornillado la tarjeta sin hacer uso de su carcasa y
se han realizado todas las conexiones mediante el cableado correspondiente. Además se ha dejado
un espacio entre la plataforma y la base del cuadricóptero para introducir el receptor de la emisora.

Como se ha comentado anteriormente, la tarjeta de control consta de unos pines de entrada


(inputs), unos pines de salida (outputs), y unos pines de entrada/salida analógicos y digitales. El
firmware de la tarjeta hace que los pines de entrada estén adaptados para leer las señales recibidas
desde el receptor de la emisora. Estas señales tienen un ancho de pulso variable de entre 1000 y
2000 µs. Este ancho de pulso se detecta en los pines de entrada y su valor en µs entra como
variable en el control. Los pines de salida están a su vez adaptados para emitir señales con un
ancho de pulso variable también entre 1000 y 2000 µs. Estas son las señales que reciben los ESC
para conocer el factor de servicio que tienen que aplicar a los motores. Por último, los pines
analógicos se pueden definir como entradas o como salidas. Como entradas son capaces de leer
valores de tensión de entre 0 y 5 V, y como salidas se convierten en pines digitales capaces de
generar ‘0’ y ‘1’ como 0 y 5 V, respectivamente.

Cada uno de los 3 puertos (entradas, salidas y analógicos) tiene junto a cada uno de los pines
de señal otros dos pines: uno de tensión VCC, y otro de tierra. Usando la configuración que se ha
explicado en el apartado anterior, las tensiones del puerto de entrada y del analógico están
cortocircuitadas, pero son independientes de las tensiones del puerto de salidas. En cuanto a las
tierras, son comunes en todos los puertos. Desde la tarjeta, además de alimentar al circuito de
monitorización de la batería, se alimenta al receptor de la emisora. Las salidas del receptor van
conectadas al puerto de entrada, del mismo modo que el puerto de salida va conectado a la
estructura para enviar las 4 señales de control a los ESC. En el puerto analógico entran la señal
de tensión de la batería y las de los 6 sensores infrarrojos.

Figura 3.13. Conexiones entre los componentes electrónicos.

37
3.6 Configuración de la emisora
La emisora 9XR de Turnigy empleada en el proyecto, junto con el receptor FrSKY ofrece la
posibilidad de combinar varios mandos analógicos y digitales con distintas ponderaciones en 8
canales. En la Figura 3.14 se muestra una imagen de una emisora con sus mandos indicados,
tomada del manual de usuario.

Figura 3.14. Mandos de la emisora.

Los mandos se pueden clasificar en sticks, que varían su valor de manera analógica al
desplazarlos linealmente; pots, equivalentes a los sticks pero con forma circular y que varían su
valor al girarlos, y switches, que tienen dos o tres posiciones que funcionan como señales digitales.
Por continuidad con el uso tradicional de estas emisoras, para que no haya cambios a la hora de
manejar el cuadricóptero en vuelo manual, se han reservado los 2 sticks para transmitir las
referencias de alabeo, cabeceo, empuje y guiñada. Estas referencias se envían íntegramente por
los 4 primeros canales, en ese orden.

El canal número 5 (Ch5) se ha configurado como una combinación de los switches THR,
RUD y ELE. Cuando los 3 están desactivados, la señal tiene un ancho de pulso de 1000 µs. Al
activarse, este ancho de pulso se va incrementando. Se ha buscado una configuración que asocie
a cada switch un valor diferente de tal manera que a medida que se sobrepasen ciertos umbrales
se pueda saber con seguridad cuáles son los que están activados. Para esto se han ordenado del
siguiente modo: primero RUD, luego ELE y por último THR; y se le ha dado a cada uno una
ponderación de manera que la del primero sea mayor que la de todos los demás juntos, y así
sucesivamente. Las ponderaciones elegidas han sido 600 para RUD, 300 para ELE y 100 para

38
THR, de modo que al activarse los 3 switches, el ancho de pulso enviado es 2000, el máximo. Los
intervalos que definen con certeza qué interruptores están activados se recogen en la Tabla 3.2.

Ch5 RUD ELE THR


(1000,1100)
(1100, 1300)
(1300, 1400)
(1400, 1600)
(1600,1700)
(1700, 1900)
(1900,2000)
2000

Tabla 3.2. Intervalos del canal 5 que definen los switches activados.

El Ch5 se va a utilizar en la máquina de estados para definir las transiciones entre unos modos
y otros. Por esta razón, los switches se activarán progresivamente. Al haber dado más peso al
primero que a la suma de los demás, y suponiendo que se activen de manera ordenada, es posible
definir si alguno está activado comparando el Ch5 con un único umbral. Esta comparación, que
se utilizará en la máquina de estados, se recoge en la Tabla 3.3.

Switch Umbral
RUD 1500
ELE 1800
THR 1950

Tabla 3.3. Umbrales del Ch5 que definen si un switch está activado, suponiendo que se haga en orden.

Los canales 6, 7 y 8 se han asociado directamente a los pots 3, 1 y 2, respectivamente. Como


se explicará más adelante esto ha servido para poder modificar los parámetros del control durante
los ensayos en tiempo real.

Antes de comenzar a utilizar la emisora, además de asignar los canales se ha definido el nivel
de alarma de la batería en 9 V, de modo que cuando la batería LiFe tenga una tensión inferior a
ésta, la emisora avise con una señal acústica. También se ha activado la alarma si está más de 5
minutos encendida sin utilizarse, para ahorrar batería, y se ha activado el modo de seguridad de
manera que si al encenderse no están todos los switches en su posición original, y la señal del
empuje no está en 0, no comienza a emitir.

Para poder transmitir de la emisora al receptor no basta con que sean dispositivos compatibles,
sino que es necesario enlazarlos. La transmisión por radiofrecuencia se hace en la banda de 2.4
GHz siguiendo el protocolo ACCST. Para que ambos dispositivos estén sintonizados en la misma
banda de frecuencia es necesario hacer el enlace. Una vez hecho, la emisora ya está preparada
para enviar las señales adecuadas a la tarjeta de control.

3.7 Memoria flash


La tarjeta, entre sus muchos componentes, incorpora una memoria flash (no volátil), que
permite guardar un registro de distintas variables del control. A través de un bloque específico del

39
blockset de APM es posible indicar qué variables concretas se desean registrar. De esta forma, los
datos se guardan en una matriz por filas, donde la primera indica los nombres de las variables y
las sucesivas almacenan los datos en cada instante de tiempo.

No obstante, para que comiencen a guardarse los datos, es necesario dar la orden a la memoria
flash. Esto se realiza mediante comunicaciones a través del puerto serie. Inicialmente se utilizó el
programa PuTTY, tanto para dar la orden de comenzar a grabar como para imprimir en pantalla
los datos almacenados. Sin embargo, la difícil integración con Matlab llevó a diseñar un programa
que automáticamente guardara los datos de la memoria flash en variables específicas. El código
se programó en Matlab y se guardó en un script con el nombre de ArduData.m.

El programa ArduData abre el puerto serie y lo configura con la tasa de baudios adecuada. A
continuación registra el nombre y número de las variables que se han guardado y almacena todos
los datos en una matriz. Después crea una estructura cuyos campos son los nombres de las
variables almacenadas, y asigna a cada campo un vector con todos los datos registrados. También
crea otra estructura similar en la que los campos constan de dos columnas, siendo la segunda los
datos registrados, y la primera los instantes de tiempo en que se registraron. Por último cierra el
puerto serie y elimina todas las variables intermedias.

Además del programa ArduData se han hecho otros dos programas. El primero, llamado
Borrar, elimina los datos almacenados de la flash para poder comenzar más tarde otro registro.
El otro, llamado ArmData, da la indicación para comenzar a registrar datos. Los códigos de los
tres programas se recogen en el Anexo F.

40
Capítulo 4 .

Modelado y entorno de simulación

En el entorno de simulación, ha sido necesario obtener un modelo dinámico del cuadricóptero


que represente su comportamiento ante distintos mandos de control. Para realizar el modelo
dinámico se han utilizado ecuaciones mecánicas y dinámicas parecidas a las descritas en la
sección 2.2, así como los parámetros obtenidos del modelo CAD y de los ensayos descritos en [9].

A continuación se ha modificado el entorno de simulación que

4.1 Implantación del modelo del cuadricóptero


El modelo dinámico del cuadricóptero está basado en el que se utilizó en [9]. Se trata de un
modelo dinámico en espacio de estado no lineal y multivariable. Su estructura parte de una serie
de variables de estado cuyas derivadas se calculan según las ecuaciones comentadas
anteriormente. El vector de derivadas se integra y se realimenta para que las variables de estado
sean entradas. También son entradas al modelo las cuatro señales de control que llegan a los ESC,
una serie de parámetros físicos como los momentos de inercia o la masa, y la tensión de la batería.
Las salidas del modelo son el vector de derivadas y también todas las variables que se pueden
medir, así como otras no medibles pero que pueden dar información acerca del tipo de control
que se esté probando, como los ángulos de Euler reales o las velocidades lineales.

El vector de estado consta de 16 variables de estado: las 3 componentes de la velocidad lineal


en el sistema inercial, los ángulos de Euler, las velocidades angulares en los ejes propios del
cuadricóptero, las 3 componentes de la posición de su centro de masas en el sistema inercial y las
4 velocidades angulares de los motores.
𝑇𝑇
𝑋𝑋 = �𝑣𝑣𝑥𝑥 , 𝑣𝑣𝑦𝑦 , 𝑣𝑣𝑧𝑧 , 𝜃𝜃, 𝜙𝜙, 𝜓𝜓, 𝜔𝜔𝑥𝑥 , 𝜔𝜔𝑦𝑦 , 𝜔𝜔𝑧𝑧 , 𝑟𝑟𝑥𝑥 , 𝑟𝑟𝑦𝑦 , 𝑟𝑟𝑧𝑧 , 𝜔𝜔1 , 𝜔𝜔2 , 𝜔𝜔3 , 𝜔𝜔4 � (4.1)

Los mandos que vienen del control son las 4 señales que van a los ESC. Estas señales vienen
como un entero entre 1000 y 2000, que es el tiempo en on expresado en microsegundos del PWM
que debe entrar en los ESC. La propia tarjeta viene preparada para enviar el PWM correcto a los
ESC cuando se le indiquen estos valores en sus pines de salida. Por este motivo se ha decidido
que las entradas al modelo tengan también el mismo formato. Por otra parte se ha estimado que
el retraso entre que se envían los mandos a los ESC y que éstos aplican la tensión correspondiente
a los motores es de dos periodos de muestreo. Por esta razón se ha añadido un retardo z-2.

El vector de parámetros consta de 29 parámetros: la masa, la distancia entre dos motores


opuestos, la gravedad, el factor de empuje, el factor de arrastre, los momentos de inercia de los 3
ejes del cuadricóptero, la resistencia y la constante equivalentes de los motores (vistos como
motores de continua), el momento de inercia de los motores, y las posiciones de los 6 sensores
infrarrojos expresadas en los ejes propios del cuadricóptero, cada una con 3 componentes.

41
𝑇𝑇
𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 = �𝑚𝑚, 𝑙𝑙, 𝑔𝑔, 𝑏𝑏, 𝑑𝑑, 𝐼𝐼𝑥𝑥 , 𝐼𝐼𝑦𝑦 , 𝐼𝐼𝑧𝑧 , 𝑅𝑅𝑚𝑚 , 𝐾𝐾𝑚𝑚 , 𝐼𝐼𝑚𝑚 , ���⃗,
𝑟𝑟1 ����⃗,
𝑟𝑟2 ���⃗,
𝑟𝑟3 ���⃗,
𝑟𝑟4 ���⃗,
𝑟𝑟5 ���⃗�
𝑟𝑟6 (4.2)

En cuanto a los valores de estos parámetros, se ha decidido mantener los valores que se
calcularon en el proyecto anterior. Solamente se han actualizado los valores de masa y separación
entre hélices por ser fáciles de medir. Las posiciones de los sensores de distancia también han
sido medidas en el cuadricóptero actual una vez colocados.

Por otro lado, el vector de salidas contiene las velocidades lineales y la posición en el sistema
de referencia inercial, las medidas de acelerómetros y giróscopos, los ángulos de Euler reales y
las medidas de distancia de los 6 sensores.

Este modelo se ha implementado en Simulink utilizando un bloque Matlab function que


permite definir las entradas y las salidas y realizar dentro las operaciones necesarias según las
ecuaciones mecánicas y dinámicas. El integrador a través del cual se realimentan las variables de
estado lleva incluidas sus condiciones iniciales, que se pueden modificar para estudiar
comportamientos desde distintos puntos de partida.

Para el diseño del control se ha utilizado un modelo no lineal con ecuaciones simplificadas.
En este modelo se han despreciado dinámicas rápidas, como las de los motores, y términos
mecánicos con poca influencia.

El código completo donde se calculan las derivadas de las variables de estado y las salidas en
función de las ecuaciones de movimiento y las de los motores se encuentra recogido en el Anexo
B. Es importante tener en cuenta que en este modelo se desprecian algunos efectos como la
aceleración de las hélices o las fuerzas de rozamiento aerodinámico sobre la estructura. Además,
se mantienen las suposiciones descritas en el apartado 2.2.2.

Figura 4.1. Diagrama de bloques del modelo completo del cuadricóptero.

4.2 Entorno de simulación


El objetivo a la hora de crear el entorno de simulación es evitar tener que hacer modificaciones
al control diseñado a la hora de implantarlo sobre el hardware real. Partiendo del entorno diseñado
para la herramienta APM [18], que consta de dos grandes bloques (control y modelo) se han hecho

42
adaptaciones para incluir el modelo dinámico explicado arriba. A continuación se han añadido
otros dos grandes bloques: uno para monitorización, donde se muestran todas las variables en
osciloscopios, y otro de opciones, en el que se definen las condiciones de la simulación.

La estructura del entorno de simulación se ha basado en un sistema por etiquetas. Tanto las
entradas como las salidas del control y del modelo, se han conectado directamente a etiquetas
dinámicas. Estas etiquetas permiten identificar las señales y poderlas trasladar de unos bloques a
otros sin necesidad de utilizar un cable físico. Todas las señales se ordenan dentro del bloque de
Opciones, de manera que desde una máscara que actúa de interfaz gráfica (Figura 4.2) es posible
definir las condiciones de la simulación sin necesidad de modificar continuamente el diagrama de
bloques. Esta interfaz gráfica permite seleccionar la posibilidad de incluir ruidos en las medidas
de la IMU y de los sensores, o un offset para los giróscopos y definir su magnitud. Por otro lado,
permite elegir qué ángulos se van a realimentar: si los ángulos reales calculados por el modelo o
los ángulos estimados por un filtro de Kalman. También permite seleccionar la opción de utilizar
la estimación de la guiñada a partir de los sensores infrarrojos. Además, da la opción de
seleccionar las referencias de los ángulos de alabeo, cabeceo y guiñada, eligiendo entre escalones,
ondas cuadradas o cero, si sólo se simula con el control de estabilización, o utilizar referencias en
distancias si se simula con el control completo de orientación en esquina.

Figura 4.2. Entorno de simulación e interfaz gráfica.

La explicación detallada del funcionamiento y del contenido del bloque de Opciones se


encuentra en el Anexo D. Para la simulación de los ruidos se han utilizado ruidos blancos con
distribución gaussiana, excepto con los sensores de distancia, para los cuales se ha tomado una
muestra de ruido de un ensayo experimental.

43
44
Capítulo 5 .

Control del cuadricóptero

La estrategia de control sobre el cuadricóptero se ha estructurado como un control en cascada.


Primero se ha diseñado el lazo interno para estabilizar el cuadricóptero. Este control es un control
de estabilización que actúa sobre los ángulos de Euler. Una vez el cuadricóptero se consiguió
estabilizar, se diseñó un segundo lazo externo de distancia, que fija una referencia de distancia a las
paredes frontal y lateral. La salida de este segundo control es a su vez la referencia de los ángulos
de alabeo y cabeceo para el control de estabilización, ya que los desplazamientos horizontales
están relacionados con estos ángulos. También se diseñó, paralelamente a la realimentación de la
distancia, una realimentación de la altura que actúa sobre la fuerza neta de empuje.

En el lazo interno (control de estabilización) se realimentan los ángulos de Euler y las


velocidades angulares medidas por los giróscopos. Como los ángulos no son medibles se estiman
a partir de un filtro de Kalman. En la lazo externo (control de posición) se realimentan las
distancias a las paredes y al suelo. Estas distancias se calculan a partir de las medidas de los
sensores infrarrojos. En la Figura 5.1 se muestra un esquema de la estructura del control. Como
se puede ver, los cuatro grados de libertad se utilizan para controlar la posición con respecto a las
paredes y el suelo, y el ángulo de inclinación (guiñada).

Figura 5.1. Estructura general del control completo del cuadricóptero.

Para conseguir que el cuadricóptero funcione de manera autónoma, las referencias del control
se definen según una máquina de estados. Aunque las posibilidades que permite el cuadricóptero
empleado son limitadas, fundamentalmente debido a las limitaciones de los sensores infrarrojos,
se han conseguido sentar las bases para poder realizar un vuelo autónomo completo.

45
5.1 Control de estabilización
El control de estabilización empleado es un control de linealización mediante realimentación
basado en [12]. El control resultante es un PD, ya que se realimentan los 3 ángulos y las 3
velocidades angulares multiplicados por sus respectivas ganancias, a los que se añaden los
términos no lineales. Si bien es cierto que las velocidades angulares medidas por los giróscopos
no son las derivadas de los ángulos de Euler, esta igualdad sí se cumple para el caso de régimen
estacionario, y se trata de una buena aproximación para inclinaciones pequeñas en alabeo y
cabeceo.

La linealización mediante realimentación se hace definiendo como vector de estado

𝑋𝑋 𝑇𝑇 = [𝜙𝜙 𝜃𝜃 𝜓𝜓 𝜙𝜙̇ 𝜃𝜃̇ 𝜓𝜓̇] (5.1)

Esta definición es una versión reducida de la mostrada en la Ecuación (2.23). Las ecuaciones
de estado son las mostradas en (2.14) despreciando los términos giroscópicos debido a la rotación
de las palas, y los contrapares durante su aceleración, gracias a que los momentos de inercia de
los motores son suficientemente pequeños.

𝜙𝜙̇ 𝑥𝑥4
⎡ ⎤ ⎡ ⎤
𝜃𝜃̇ 𝑥𝑥5
⎢ ⎥ ⎢ ⎥
⎢ 𝜓𝜓̇ ⎥ ⎢ 𝑥𝑥6

⎢ 𝑙𝑙 ⎥ ⎢ 𝑙𝑙 ⎥
𝑑𝑑𝑑𝑑 ⎢ 𝑢𝑢2 + 𝐼𝐼1 𝜃𝜃̇𝜓𝜓̇ ⎥ 𝑢𝑢 2 + 𝐼𝐼 𝑥𝑥 𝑥𝑥
1 5 6
= ⎢ 𝐼𝐼𝑥𝑥𝑥𝑥 = ⎢ 𝐼𝐼𝑥𝑥𝑥𝑥 ⎥ (5.2)
𝑑𝑑𝑑𝑑 ⎥
⎢ 𝑙𝑙 ⎢ 𝑙𝑙 ⎥
𝑢𝑢 + 𝐼𝐼 𝜙𝜙̇ 𝜓𝜓̇⎥ ⎢ 𝑢𝑢3 + 𝐼𝐼2 𝑥𝑥4 𝑥𝑥6 ⎥
⎢𝐼𝐼 3 2 ⎥ 𝐼𝐼𝑦𝑦𝑦𝑦
⎢ 𝑦𝑦𝑦𝑦 ⎥ ⎢1 ⎥
1
⎢ 𝑢𝑢 + 𝐼𝐼 𝜙𝜙̇𝜃𝜃̇ ⎥ ⎢ 𝑢𝑢4 + 𝐼𝐼3 𝑥𝑥4 𝑥𝑥5 ⎥
⎣ 𝐼𝐼𝑧𝑧𝑧𝑧 4 3
⎦ ⎣ 𝐼𝐼𝑧𝑧𝑧𝑧 ⎦

Para lograr una relación lineal en la ecuación de estado, se definen unos mandos virtuales que
acumulan las no linealidades y los acoplamientos entre variables:
𝐼𝐼 𝑥𝑥𝑥𝑥 ∗
𝑢𝑢2 = (𝑢𝑢2 − 𝐼𝐼1 𝑥𝑥5 𝑥𝑥6 − 𝑘𝑘𝑑𝑑2 𝑥𝑥4 )
𝑙𝑙
𝐼𝐼𝑦𝑦𝑦𝑦 ∗ (5.3)
𝑢𝑢3 = (𝑢𝑢3 − 𝐼𝐼2 𝑥𝑥4 𝑥𝑥6 − 𝑘𝑘𝑑𝑑3 𝑥𝑥5 )
𝑙𝑙
𝑢𝑢4 = 𝐼𝐼𝑧𝑧𝑧𝑧 (𝑢𝑢4∗ − 𝐼𝐼3 𝑥𝑥4 𝑥𝑥5 − 𝑘𝑘𝑑𝑑4 𝑥𝑥6 )

De esta forma se puede expresar la ecuación de estado de forma lineal con los mandos virtuales:

𝑥𝑥4
⎡ 𝑥𝑥5 ⎤
𝑑𝑑𝑑𝑑 ⎢ 𝑥𝑥6 ⎥
= ⎢−𝑘𝑘 𝑥𝑥 + 𝑢𝑢∗ ⎥ (5.4)
𝑑𝑑𝑑𝑑 ⎢ 𝑑𝑑2 4 2⎥

⎢−𝑘𝑘𝑑𝑑3 𝑥𝑥5 + 𝑢𝑢3 ⎥
⎣−𝑘𝑘𝑑𝑑4 𝑥𝑥6 + 𝑢𝑢4∗ ⎦

46
En [12] se demuestra además que utilizando la teoría Lyapunov, esta conversión lleva a un
control asintóticamente estable. Aunque en el diseño del control de estabilización no se ha
utilizado exactamente la misma conversión que en [12], el criterio de Lyapunov sigue cumpliéndose.

Al aplicar en los mandos linealizados un control proporcional al error de los ángulos de Euler,
aparecen las siguientes ecuaciones diferenciales para los ángulos:
𝑥𝑥̈ 4 = 𝑘𝑘𝑝𝑝2 (𝑥𝑥1𝑑𝑑 − 𝑥𝑥1 ) − 𝑘𝑘𝑑𝑑2 𝑥𝑥̇ 4
𝑥𝑥̈ 5 = 𝑘𝑘𝑝𝑝3 (𝑥𝑥2𝑑𝑑 − 𝑥𝑥2 ) − 𝑘𝑘𝑑𝑑3 𝑥𝑥̇ 2 (5.5)
𝑥𝑥̈ 6 = 𝑘𝑘𝑝𝑝4 (𝑥𝑥3𝑑𝑑 − 𝑥𝑥3 ) − 𝑘𝑘𝑑𝑑4 𝑥𝑥̇ 3

Aplicando una transformada de Laplace, la función de transferencia resultante entre la


referencia y la salida de ángulo resulta de segundo orden, por lo que se hace un diseño por
posicionamiento de polos, a partir de la pulsación natural y del factor de amortiguamiento.

𝑋𝑋1 (𝑠𝑠) 𝑘𝑘𝑝𝑝2


𝑃𝑃1 (𝑠𝑠) = = 2
𝑋𝑋1𝑑𝑑 (𝑠𝑠) 𝑠𝑠 + 𝑘𝑘𝑑𝑑2 𝑠𝑠 + 𝑘𝑘𝑝𝑝2
𝑋𝑋2 (𝑠𝑠) 𝑘𝑘𝑝𝑝3
𝑃𝑃2 (𝑠𝑠) = = 2 (5.6)
𝑋𝑋2𝑑𝑑 (𝑠𝑠) 𝑠𝑠 + 𝑘𝑘𝑑𝑑3 𝑠𝑠 + 𝑘𝑘𝑝𝑝3
𝑋𝑋3 (𝑠𝑠) 𝑘𝑘𝑝𝑝4
𝑃𝑃3 (𝑠𝑠) = = 3
𝑋𝑋3𝑑𝑑 (𝑠𝑠) 𝑠𝑠 + 𝑘𝑘𝑑𝑑4 𝑠𝑠 + 𝑘𝑘𝑝𝑝4

Por último, se calculan los mandos originales que salen del control:
𝐼𝐼𝑥𝑥𝑥𝑥
𝑢𝑢2 = [𝑘𝑘𝑝𝑝2 (𝑥𝑥1𝑑𝑑 − 𝑥𝑥1 ) − 𝐼𝐼1 𝑥𝑥5 𝑥𝑥6 − 𝑘𝑘𝑑𝑑2 𝑥𝑥4 ]
𝑙𝑙
𝐼𝐼𝑦𝑦𝑦𝑦 (5.7)
𝑢𝑢3 = [𝑘𝑘𝑝𝑝3 (𝑥𝑥2𝑑𝑑 − 𝑥𝑥2 ) − 𝐼𝐼2 𝑥𝑥4 𝑥𝑥6 − 𝑘𝑘𝑑𝑑3 𝑥𝑥5 ]
𝑙𝑙
𝑢𝑢4 = 𝐼𝐼𝑧𝑧𝑧𝑧 [𝑘𝑘𝑝𝑝4 (𝑥𝑥3𝑑𝑑 − 𝑥𝑥3 ) − 𝐼𝐼3 𝑥𝑥4 𝑥𝑥5 − 𝑘𝑘𝑑𝑑4 𝑥𝑥6 ]

Operando las expresiones anteriores, resulta un cálculo de mandos que consta de 3 términos:
el término proporcional al error entre el ángulo y su referencia; el término diferencial, que es
proporcional a la velocidad angular, y el término no lineal que incluye el efecto giroscópico y los
acoplamientos.
𝐼𝐼𝑦𝑦𝑦𝑦 − 𝐼𝐼𝑧𝑧𝑧𝑧
𝑢𝑢2 = 𝐾𝐾𝑝𝑝𝑝𝑝 (𝜙𝜙𝑑𝑑 − 𝜙𝜙) − 𝐾𝐾𝑑𝑑𝑑𝑑 𝜔𝜔𝑥𝑥 − 𝜔𝜔2 𝜔𝜔3
𝑙𝑙
𝐼𝐼𝑧𝑧𝑧𝑧 − 𝐼𝐼𝑥𝑥𝑥𝑥 (5.8)
𝑢𝑢3 = 𝐾𝐾𝑝𝑝𝑝𝑝 (𝜃𝜃𝑑𝑑 − 𝜃𝜃) − 𝐾𝐾𝑑𝑑𝑑𝑑 𝜔𝜔𝑦𝑦 − 𝜔𝜔1 𝜔𝜔3
𝑙𝑙
𝑢𝑢4 = 𝐾𝐾𝑝𝑝𝑝𝑝 (𝜓𝜓𝑑𝑑 − 𝜓𝜓) − 𝐾𝐾𝑑𝑑𝑑𝑑 𝜔𝜔𝑧𝑧 − �𝐼𝐼𝑥𝑥𝑥𝑥 − 𝐼𝐼𝑦𝑦𝑦𝑦 �𝜔𝜔1 𝜔𝜔2

El mismo control se encarga de convertir estos mandos en las señales correspondientes a los
ESC para controlar el giro de los motores. Para hacer esta conversión, se introduce en el control
el valor del empuje u1 en el control y la tensión de la batería. Sabiendo los cuatro mandos u1, u2,
u3 y u4, es posible a partir de los parámetros de los rotores b y d calcular las velocidades de giro
de los motores según la relación expresada en (2.6) , y con ellas, y sabiendo los parámetros de los
motores R y Km, calcular la tensión que es necesario aplicar a cada uno como se explica en (2.19).

47
Por último, se utiliza la tensión de la batería para hacer el cálculo del factor de servicio necesario
en los ESC, y por lo tanto del ancho de pulso que debe tener la señal que reciban.

Este control por lo tanto, no solamente es un control de estabilización que calcula los mandos
intermedios, sino que también incluye las conversiones correspondientes, según un modelo
simplificado de la planta, para calcular las señales de salida.

Figura 5.2. Esquema del control de estabilización.

Para el diseño del control por asignación de los polos en lazo cerrado, se ha utilizado una
configuración de Butterworth de segundo orden (ζ=0.7) con una pulsación natural de 6.5 rad/s.
Esta pulsación ha demostrado ser suficientemente rápida como para corregir las desviaciones del
control, pero no tanto como para desestabilizarlo. Existe una gran diferencia entre el control de
los ángulos de cabeceo y alabeo y el de guiñada, porque los dos primeros controles tienen la
misión de estabilizar una planta que por sí misma es inestable, mientras que el tercero, una vez
los dos primeros están bien ajustados, no. Por esta razón se ha preferido hacer un control de
guiñada más lento, en el que la pulsación natural se ha reducido hasta 1.5 rad/s. De esta manera
se pretende evitar que el ruido de la referencia genere vibraciones en el cuadricóptero.

Alabeo Cabeceo Guiñada

Kp 0.4315 0.4326 4.725·10-3

Kd 9.294·10-2 9.318·10-2 4.410·10-3

Tabla 5.1. Ganancias del control de estabilización.

Como ya se ha explicado, la medida de los ángulos de Euler no es directa y por lo tanto debe
estimarse a partir de las medidas de la IMU. Se ha utilizado un filtro de Kalman por ser uno de los
más comunes y que mejor resultados dan. El filtro de Kalman utilizado se ha tomado directamente
del blockset de APM, aunque posteriormente se hicieron algunas modificaciones. Los códigos
completos del control de estabilización y del filtro de Kalman se encuentran en el Anexo C. Además,
se ha diseñado un método de calibración de giróscopos para eliminar la componente continua de las
medidas. Para ello se ha utilizado un sistema de media dinámica durante 10 segundos, que actúa
como un filtro paso alto. El diagrama de bloques de la calibración es el siguiente:

48
Figura 5.3. Diagrama de bloques de la calibración de los giróscopos.

Este sistema permite reducir de manera exponencial los offsets de medida, de manera que al
cabo de 10 segundos son prácticamente 0.

Figura 5.4. Resultado de la calibración de los giróscopos.

A continuación se muestran los resultados de simulación para escalones en las referencias de


los 3 ángulos, aplicadas por separado y también simultáneamente para evaluar los acoplamientos.
En la simulación se han realimentado los ángulos estimados y además se han incluido ruidos en
las medidas de giróscopos y acelerómetros, además de un pequeño offset para los giróscopos. El
periodo de muestreo utilizado en el control es de 10 ms.

Figura 5.5. Respuesta en simulación a un escalón en alabeo.

49
Figura 5.6. Respuesta en simulación a un escalón en cabeceo.

Figura 5.7. Respuesta en simulación a un escalón en guiñada.

Figura 5.8. Respuesta a un escalón simultáneo en los 3 ángulos de Euler.

50
5.2 Control de distancia a la pared
El lazo externo de distancia actúa sobre las referencias de alabeo y cabeceo. Se han diseñado
dos controles PID iguales, salvo por un detalle que se explicará posteriormente. Por ello se hará
la explicación para el ángulo de alabeo y la distancia a la pared lateral y finalmente se explicarán
las diferencias en el control de distancia frontal.

Figura 5.9. Diagrama de cuerpo libre del cuadricóptero cuando se inclina en alabeo.

Para realizar este diseño se ha utilizado un modelo simplificado del lazo interno, despreciando
las dinámicas del control de estabilización, de los motores y del propio cuadricóptero,
simplemente con la relación en régimen permanente entre ángulo de alabeo y distancia a la pared.
En la Figura 5.8 se muestra un diagrama con las fuerzas que actúan sobre el cuadricóptero para
justificar esta relación. La fuerza neta de empuje (azul) se proyecta vertical y horizontalmente en
función del ángulo de inclinación (ϕ). Para sustentar al cuadricóptero, la componente vertical debe
ser igual al peso, mientras que la horizontal genera una aceleración lineal que integrada dos veces
permite calcular el avance, y por tanto la distancia a la pared. Utilizando la simplificación de que
para ángulos pequeños el seno coincide con el propio ángulo y que el coseno es igual a 1, la
expresión queda de la siguiente forma:

𝐷𝐷(𝑠𝑠) −𝑔𝑔
= (5.9)
𝜱𝜱(𝑠𝑠) 𝑠𝑠 2

El signo negativo hace referencia a la posición de los sensores. Al estar colocados en el sentido
positivo del eje y, cuando el ángulo de alabeo es positivo, el cuadricóptero tiende a avanzar según
el eje y, y la distancia medida por los sensores disminuye. Esta es la diferencia entre los controles
de distancia lateral y de distancia frontal: los sensores de distancia frontal están colocados en el
sentido positivo del eje x, y por lo tanto, cuando el ángulo de cabeceo es positivo y el
cuadricóptero tiende a avanzar según el sentido negativo del eje x, la distancia frontal aumenta.
Esta diferencia de signo se solventará añadiendo una ganancia de -1 a la salida del control de
distancia lateral. De este modo, ambos controles se podrán diseñar de manera idéntica.

El diseño se ha llevado a cabo por respuesta en frecuencia del lazo abierto. Al haber un doble
integrador en la planta es necesario incluir acción diferencial, que se aplicará a la salida. Los
parámetros iniciales se implantaron en un primer control que estabilizaba la planta, pero resultaba

51
demasiado lento. A continuación, a partir del modelo completo se optimizaron los parámetros y
se añadió ponderación a la referencia. El control resultante se muestra en la Figura 5.9.

Figura 5.10. Diagrama de bloques del control PID de distancia lateral.

A continuación se muestran las respuestas de simulación a rampas en distancia cuando el


cuadricóptero pasa de estar a 50 cm a estar a 1 m de la pared. Para la simulación se han incluido
todos los ruidos y offsets explicados anteriormente. El hecho de utilizar rampas como referencia
es simular la variación progresiva que se haría al controlar el cuadricóptero desde la emisora. Se
puede observar que la respuesta en ambos ejes es prácticamente idéntica.

Figura 5.11. Respuesta de simulación a una rampa en distancia en ambos ejes.

5.3 Control de altura


El desplazamiento vertical del cuadricóptero se consigue modificando el empuje, de manera
que la nave ascenderá si éste supera al peso y descenderá en caso contrario. Para controlar la
altura se ha diseñado un control PID que actúa sobre la referencia de empuje. Esta referencia entra
en el control de estabilización para calcular los PWM de los ESC en la conversión de mandos.

Al igual que en los controles de distancia, se ha empezado utilizando un modelo simplificado


de la planta. En este caso se ha creado una variable intermedia de empuje normalizado para poder
trabajar con funciones de transferencia.

52
𝑢𝑢1
𝑢𝑢1∗ = −1 (5.10)
𝑚𝑚𝑚𝑚

Para calcular la función de transferencia simplificada entre el empuje normalizado y la altura,


se calcula la fuerza neta, se divide entre la masa y se integra dos veces. El resultado es la misma
función de transferencia que en (5.11), salvo por el signo negativo. Por este motivo se implantó
inicialmente el mismo control que había para distancia frontal, y después se fue afinando.

Existe un problema a la hora de realimentar la altura en el control y es que esta variable no


siempre es medible. Debido a los rangos de los sensores infrarrojos, no es posible conocer la
altura si el cuadricóptero se encuentra a menos de 15 cm del suelo, ya que la medida no es fiable.
Esta es la causa de que sea necesario dar un impulso inicial al cuadricóptero en lazo abierto, y que
una vez que la medida sea fiable, se active el control de altura. Esta transición se hará desde la
máquina de estados.

El control utilizado se ha implementado con un bloque PID de dos grados de libertad de


Matlab. Los parámetros utilizados se recogen en la Tabla 5.2. Parámetros del bloque PID para el
control de altura.. Se ha utilizado tanto en la integración como en la derivación el método de
derivada en adelanto (Forward Euler), y el formato en paralelo. A continuación se aplica la
conversión del mando, se satura para evitar que puedan aplicarse empujes negativos, y la salida
del control entra como el empuje en el control de estabilización. En la Figura 5.11 se muestra el
esquema del control.

Parámetros Valores
P 0.11
I 0.05
D 0.12
N 8
b 1.05
c 0
Tabla 5.2. Parámetros del bloque PID para el control de altura.

Figura 5.12. Diagrama de bloques del control de altura.

Para simular este control se ha aplicado un empuje inicial normalizado de 1.2, hasta que la
altura ha sobrepasado los 20 cm. La respuesta a una rampa hasta 1 m de altura, incluyendo los
ruidos y offsets en las medidas es la siguiente:

53
Figura 5.13. Respuesta de simulación a una rampa hasta 1m en altura.

5.4 Control de guiñada


El control del ángulo de guiñada forma parte del control de estabilización. Sin embargo, al
tratarse de un vuelo en interiores, lo que se desea lograr es que el cuadricóptero se mantenga
paralelo a la pared. Esto es especialmente importante teniendo en cuenta el tipo de sensores que
se están empleando, ya que los sensores infrarrojos distorsionan la medida si el haz de luz no
incide perpendicular sobre la superficie.

Existen tres estrategias para mantener el cuadricóptero en esta posición. La primera es utilizar
el ángulo de guiñada estimado por el filtro de Kalman. La segunda consiste en hacer un cálculo
del ángulo de inclinación con respecto a la pared a partir de las medidas de los sensores infrarrojos.
Una tercera opción sería integrar las dos estimaciones anteriores de guiñada con un nuevo filtro
de Kalman y realimentar esa estimación en el control.

5.4.1 Estimación por filtro de Kalman

Utilizar la estimación del ángulo de guiñada que sale del filtro de Kalman tiene la ventaja de
proporcionar una medida sin ruido y sin retraso. Aun así tiene dos inconvenientes grandes. En
primer lugar porque no es capaz de localizar la pared, y por lo tanto para mantenerse paralelo a
ella hace falta que se sitúe inicialmente de esta manera. Dicho de otro modo, el cuadricóptero
intenta mantenerse no paralelo a la pared, sino con la misma inclinación que tuviera en el
momento de activarse el estimador. En segundo lugar, como la estimación de guiñada se hace
únicamente a partir de los giróscopos, no existe un factor corrector como los acelerómetros, y la
estimación tiende a desviarse del ángulo de guiñada real. Esto significa que aun suponiendo que
el cuadricóptero comience enfrentado a la pared, con el tiempo se irá desviando, con la
consecuente distorsión en la medida de las distancias.

54
5.4.2 Medida con sensores infrarrojos

El ángulo de inclinación con respecto a la pared se puede calcular para cada par de sensores
con la siguiente expresión:
𝑑𝑑2 − 𝑑𝑑1
𝜓𝜓 ′ = 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎 � � (5.11)
𝑠𝑠
,donde d1 y d2 son las medidas de los dos sensores, y s es la separación entre ambos. Como se
entiende que las paredes son perpendiculares entre sí, el ángulo de inclinación ψ’ se puede estimar
mejor como la media del ángulo calculado por los sensores frontales y el calculado por los
laterales, para disminuir el ruido. En coherencia con el criterio de signos empleado, se considerará
que el ángulo de guiñada es positivo en sentido horario, visto desde arriba, ya que el eje z apunta
en el sentido de la gravedad.

Este método tiene la ventaja de usar como marco de referencia la pared, por lo que aunque el
cuadricóptero no esté inicialmente enfrentado a ella, cuando el control empiece a actuar corregirá
el ángulo. Además se evita el riesgo de que la medida tienda a alejarse del valor real con el tiempo,
por ser una medida directa. Sin embargo, como se aprecia en la Figura 3.9, las medidas de
distancia de los sensores infrarrojos tienen cierto ruido, y al calcular el ángulo este ruido se
incrementa significativamente debido a la escasa separación entre los sensores infrarrojos (unos
12 cm). Por esta razón, sería necesario incorporar un filtro fuerte a la medida del ángulo para que
el control funcione adecuadamente, con el retraso que ello conlleva.

5.4.3 Fusión de la estimación y los sensores infrarrojos

La estimación del ángulo de guiñada que sale del filtro de Kalman se realiza únicamente con
la integración de los giróscopos, sin ningún factor de corrección; por lo tanto, no se le aplica
realmente un filtro de Kalman.

La estructura del filtro de Kalman se basa en realizar un cálculo de los ángulos utilizando el
modelo (integración de giróscopos) y a continuación realizar una medida indirecta (proyecciones
de los acelerómetros) que resulta ruidosa. Combinando ambas señales se consigue una estimación
que es fiel a la medida, eliminando el ruido sin generar retrasos, y sin acumular los errores del
modelo. Por esta razón se ha decidido replicar esta estructura utilizando como medida indirecta
la de los sensores infrarrojos. De este modo se aplica un verdadero filtro de Kalman para estimar
el ángulo de guiñada.

Para lograr que este método funcione ha sido necesario aumentar la ponderación de los
giróscopos y reducir la de los sensores infrarrojos debido al excesivo ruido en la medida, que
podía llegar hasta los 30º. A continuación se muestra una estimación de los ángulos de Euler
durante un vuelo estacionario realizado en simulación. Para ello se han añadido los ruidos y offsets
correspondientes a todas las medidas, incluido el ruido de los sensores infrarrojos, tomado de un
ensayo de calibración para que resulte más realista.

55
Figura 5.14. Estimación de alabeo y cabeceo y de la guiñada con y sin la medida de los infrarrojos.

56
Capítulo 6 .

Implantación del control y ensayos

6.1 Máquinas de estados


El control de un cuadricóptero es algo complejo que además de trabajar con múltiples
variables tiene que comenzar a actuar en el momento adecuado. Además, el funcionamiento que
se espera de él no es el mismo en todos los instantes, ya que sigue un proceso secuencial de
arranque, despegue, vuelo y aterrizaje. Para poder implantar el control sobre el cuadricóptero se
han diseñado dos máquinas de estados diferentes. La primera se ha utilizado para el vuelo manual.
La segunda es una versión más elaborada, pensada para implantarse con el control completo para
vuelo autónomo.

6.1.1 Máquina de estados para vuelo manual

La máquina de estados inicial se ha diseñado con el objetivo de controlar la activación del


control. Inicialmente se arman los motores y se espera una señal de activación para comenzar a
calibrar los giróscopos. Pasados 10 segundos, termina la calibración y el cuadricóptero responde
con el control desactivado únicamente a la referencia de empuje. Por último, se activa el control,
que responde a las referencias enviadas con los sticks de la emisora de alabeo, cabeceo, empuje y
guiñada. Hay otros dos estados de parada/error: uno con un descenso progresivo del empuje y
otro que desactiva directamente los motores. A continuación se muestra el diagrama de estados
que se ha implementado con la herramienta Stateflow de Simulink.

Figura 6.1. Máquina de estados para vuelo manual.


57
Como se observa en la imagen anterior, el diagrama consta de 5 estados: Calibración,
Armado, Vuelo, Baja_Batería y Fin. Las señales de entrada a la máquina de estados son el Ch5
de la emisora, configurado como se explica en el apartado 3.6 según 3 switches diferentes; la señal
de tiempo, generada a partir de un acumulador discreto que también se activa con el Ch5; la
tensión de la batería, leída gracias al circuito de monitorización, y el mando de empuje. Las salidas
son 3 señales que indican el estado en que se encuentra el proceso: Estados, que numera los
estados del 1 al 5; Calibrado, que se emplea sólo en los dos primeros estados para indicar que la
calibración de los giróscopos ha concluido, y Fallo, que inicia la desactivación del control. A
continuación se detalla el funcionamiento de los distintos estados y las transiciones entre ellos:

• El estado de Calibración es un estado de espera inicial en el que se arman los motores a


través de la emisora, aplicando una señal de empuje mínima (1000 µs). El sistema
permanece en este estado hasta que la señal de tiempo llega a 10 segundos. Para iniciar
el contador de tiempo es necesario activar el switch RUD. De esta manera comienza la
calibración de los giróscopos hasta que pasados 10 segundos el sistema entra en el estado
de Armado. Se decidió también añadir una calibración en los acelerómetros. Para ello se
utilizó el mismo procedimiento, que hace que las 3 señales tiendan a 0, y a continuación
se añade el valor de la gravedad en la componente z. Durante el tiempo que está activado
este estado, un LED azul de la tarjeta de control parpadea con una frecuencia de 1 Hz. El
uso de este LED permite conocer en qué estado se encuentra el cuadricóptero.
• El estado de Armado es el estado previo al control. Es un estado intermedio donde sólo
actúa la referencia de empuje y sirve para comprobar que todos los motores se han armado
correctamente. Activando el switch ELE, el Ch5 modifica su valor y el sistema entra en
el estado de Vuelo. Mientras el sistema se encuentra en el estado de Armado, el LED azul
de la tarjeta parpadea con una frecuencia de 2 Hz.
• El estado de Vuelo es en el que se activa el control de estabilización. Las referencias se
indican desde los sticks de la emisora y el cuadricóptero es capaz de mantener el vuelo
autónomo. Durante este tiempo, el LED azul se encuentra encendido de forma continua.
• Cuando la tensión de la batería baja de 7 V, o bien cuando el switch ELE se desactiva, el
sistema entra en el estado Baja:Batería y el cuadricóptero comienza un descenso
progresivo. Para lograr este descenso, se aplica una rampa decreciente sobre la referencia
de empuje, generada con un acumulador. De este modo, los rotores van reduciendo su
velocidad. En este estado, el LED azul parpadea con 0.5 Hz de frecuencia.
• En el momento en el que la señal de empuje llega a 0, para garantizar que los motores se
detienen, se pasa al estado Fin. En este estado la señal que entra a los motores es 0, de
manera que se detienen inmediatamente. El LED azul en este estado se encuentra
apagado. El estado Fin sirve también como estado de parada de emergencia, en el caso de
que haya cualquier problema con el cuadricóptero, se puede forzar la transición a este
estado desactivando en switch RUD.

La explicación detallada del archivo de control para implantar sobre el cuadricóptero y cómo
lo gobierna la máquina de estados se encuentra en el Anexo E.

6.1.2 Máquina de estados completa para vuelo autónomo

La implantación de un control para vuelo autónomo es el objetivo final de la línea de trabajo


en la que se enmarca este proyecto. Por este motivo, aunque por lo ambicioso de este objetivo no
haya sido posible desarrollar un sistema completo que permita alcanzarlo, sí se han realizado
58
múltiples tareas que avanzan en esa dirección, con la finalidad de sentar todas las bases que
permitan culminarlo en proyectos sucesivos.

En este sentido, se ha diseñado una máquina de estados completa que regule el


funcionamiento del cuadricóptero para que sea capaz de realizar de manera segura y controlada
un vuelo autónomo en interiores siguiendo como referencia la pared. Para el diseño de esta
máquina de estados se ha considerado el control completo del cuadricóptero, con los lazos
externos de distancia frontal, distancia lateral y altura. En la Figura 6.2 se muestra el diagrama de
estados implementado con Stateflow:

Figura 6.2. Máquina de estados completa para vuelo autónomo en interiores.

Esta máquina de estados consta de 7 estados: Inicio, Calibración, Despegue, Vuelo, Descenso,
Aterrizaje y Fin. Las señales de entrada son el tiempo, el Ch5 de la emisora, la altura a la que se
encuentra el cuadricóptero del suelo y la tensión de la batería. Las salidas son de nuevo las señales
de Estados, esta vez del 0 al 6, Calibrado y Fallo.

En funcionamiento es el siguiente: el cuadricóptero comienza en el estado de Inicio, al


activarse el switch RUD, pasa al estado de Calibración y durante al menos 10 segundos comienza
a calibrar giróscopos y acelerómetros. Una vez han transcurrido 10 segundos, es posible comenzar
el despegue activando los switches ELE y THR. En este momento el sistema entra en el estado
Despegue y activa el control. Para despegar, el cuadricóptero aplica un empuje inicial que le
permite elevarse del suelo. Una vez que la altura es mayor de 20 cm, se entra en el estado Vuelo
y se activa el lazo externo de distancia. Si en algún momento la altura bajara de 20 cm, el sistema
volvería al estado de Despegue y se aplicaría de nuevo el empuje inicial. En el estado Vuelo, el
cuadricóptero sigue las referencias establecidas, bien desde los sticks de la emisora, o si se trata
de vuelo autónomo, las referencias predefinidas en el diagrama de bloques. Por último, el sistema
de descenso consiste en bajar hasta 20 cm de altura, de lo que se encarga el estado Descenso;
aplicar una rampa decreciente sobre el empuje en el estado de Aterrizaje, y al cabo de 2 segundos,

59
detener los motores en el estado Fin. Para iniciar esta secuencia pueden darse dos condiciones: o
bien que el nivel de batería baje de 7 V, o bien que se indique desde la emisora. Desactivando el
switch THR, se realiza la transición al estado Descenso y comienza la secuencia de aterrizaje. Sin
embargo, también es posible pasar directamente al estado Aterrizaje desactivando el switch ELE,
o al estado Fin desactivando el RUD. La justificación de esto es que estos dos estados actúan
como estados de fallo en caso de que sea necesario aplicar un descenso progresivo del
cuadricóptero o detener las hélices de forma inmediata.

Es cierto que el control de la máquina de estados se realiza a través de la emisora, lo cual en


principio va contra el concepto de vuelo autónomo. Sin embargo se ha preferido diseñar de esta
manera la máquina de estados en pro de la seguridad, para aumentar el control sobre el aparato.
En cualquier caso, es posible sustituir las señales del Ch5 por señales de tiempo que permitirían
implementar un vuelo puramente autónomo.

6.2 Ajuste del control en tiempo real


Una vez diseñado el control y comprobado el funcionamiento en simulación, se procedió a
descargarlo sobre la tarjeta de control para ensayarlo sobre el cuadricóptero. Sin embargo, fue
necesario modificar los parámetros para lograr un vuelo perfectamente estable que respondiera a
los mandos de la manera adecuada.

El inconveniente de modificar los parámetros es el consumo de tiempo, ya que es necesario


cambiar los valores en el ordenador y descargar de nuevo el programa, lo que hace que cada
prueba lleve varios minutos. Para solucionar este problema se ideó un sistema de ajuste de los
parámetros del control en tiempo real. Para ello se aprovecharon los canales 6, 7 y 8 de la emisora,
asociados a los pots 3, 1 y 2, respectivamente.

60
Figura 6.3. Diagrama de bloques del sistema de ajuste del control en tiempo real.

Mediante un diagrama de bloques que convertía las señales de la emisora (entre 1000 y 2000)
a los valores entre 0 y 2 se creó un sistema de producto de ganancias, de tal forma que mediante
la emisora era posible doblar o anular los parámetros del control. Este sistema se utilizó para la
pulsación natural y el factor de amortiguamiento. Como los parámetros de entrada al control eran
directamente las ganancias calculadas previamente, era necesario realizar los productos en
función de su dependencia con la pulsación natural y con el factor de amortiguamiento. Como se
deriva de las ecuaciones del apartado 5.1, las constantes Kp son proporcionales al cuadrado de la
pulsación natural, mientras que las constantes Kd son proporcionales tanto a la pulsación natural
como al factor de amortiguamiento.

Los parámetros finales del control de estabilización fueron los siguientes:

Alabeo Cabeceo Guiñada

ωn 6.72 6.72 1.4

ζ 0.714 0.714 0.85

Kp 0.4612 0.4624 2.100·10-3

Kd 9.801·10-2 9.826·10-2 3.570·10-3

Tabla 6.1. Parámetros definitivos del control de estabilización.

Este método de ajuste resultó ser muy útil y permitió ajustar el control de manera rápida y
sencilla. Después de aplicarse al control de los ángulos de alabeo y cabeceo, se aplicó al control

61
de guiñada. Se espera que cuando se implanten los controles de distancia, este método sirva
también para lograr un juego de parámetros óptimo.

6.3 Ensayo de vuelo estacionario


Una vez que el control se hubo implantado y que los parámetros se ajustaron, se realizaron
ensayos de vuelo estacionario para comprobar con medidas el seguimiento de las referencias. Uno
de los principales problemas durante los ensayos son los errores en la estimación de los ángulos
de Euler. Un error en las variables realimentadas supone que el cuadricóptero no siga realmente
la referencia. El inconveniente real que se deriva de esto durante el vuelo estacionario es que
pequeñas inclinaciones el los ejes x e y suponen desplazamientos horizontales del cuadricóptero,
a velocidades relativamente elevadas para interiores. Por esta razón es necesario realizar ligeras
correcciones con la emisora, a fin de garantizar que la nave se mantenga en todo momento paralela
al suelo y de esta manera mantenga fija su posición. Además, por el hecho de realizarse estos
ensayos en un recinto cerrado con mobiliario, también es necesario en ocasiones corregir la
posición del cuadricóptero para evitar que colisione. En la Figura 6.4 se muestra la referencia del
ángulo de alabeo y la estimación de dicho ángulo a través del filtro de Kalman en un vuelo
estacionario. Durante este ensayo se aplicaron algunas variaciones en las referencias para evaluar
su capacidad de respuesta.

Se puede observar que en general sigue la referencia con relativa precisión. Además se
comprueba su estabilidad, ya que el ángulo tiende a 0 cuando la referencia se anula.

Figura 6.4. Representación de la referencia y la estimación de alabeo en vuelo estacionario.

62
Capítulo 7
.
.

Conclusiones

La finalidad de este proyecto era avanzar hacia la implantación sobre un cuadricóptero de un


control de orientación en recintos cerrados para poder realizar vuelos autónomos. En este sentido
se han realizado grandes avances, empezando por lograr la estabilización del cuadricóptero. En
este capítulo se presenta un resumen de lo que ha sido el proyecto, así como una serie de mejoras
que se pueden llevar a cabo de cara a proyectos futuros que continúen esta línea de trabajo.

7.1 Resumen de tareas realizadas


A lo largo del proyecto se han llevado a cabo diversas tareas que permiten situar más cerca la
culminación del objetivo final: el vuelo autónomo en interiores. A continuación se detallan las
más relevantes, que a su vez pueden servir como una base sólida de partida de cara a futuros
proyectos:

• Diseño en un único bloque de un modelo basado en [9], y mejora de dicho modelo para
añadir las medidas de los sensores infrarrojos.
• Creación de un entorno de simulación intuitivo y fácil de manejar en el que se han incluido
ruidos y offsets en las medidas.
• Diseño de un sistema de calibración de giróscopos y acelerómetros para eliminar o reducir
la componente continua de las medidas que distorsiona la estimación.
• Mejora del estimador de ángulos a partir de un filtro de Kalman, incluyendo medidas de
los sensores de posición para compensar la deriva en el ángulo de guiñada.
• Diseño y montaje de un circuito de alimentación de la tarjeta y los sensores y de un
circuito de monitorización de la batería.
• Diseño de un programa para almacenar automáticamente las medidas guardadas en la
memoria Flash en una estructura de variables y representarlas gráficamente, así como de
otros dos programas para dar las órdenes de armar datos y de borrarlos.
• Diseño de un diagrama de bloques para modificar los parámetros del control en tiempo
real desde la emisora de radio control.
• Instalación y calibración de sensores infrarrojos para medir la distancia a las paredes y al
suelo.
• Diseño de un filtro lógico para eliminar parte del ruido en las medidas de los sensores
infrarrojos sin introducir retrasos significativos.
• Diseño de una máquina de estados para orientación en esquina capaz de hacer despegar
al cuadricóptero, desplazarse en la esquina en ejes cartesianos y aterrizar de modo seguro.

63
7.2 Resumen de resultados
En cuanto al grado de cumplimiento de los objetivos se puede afirmar que los objetivos
principales del proyecto (adaptación del modelo y diseño del entorno de simulación, diseño del
control para simulación e implantación del control de vuelo estacionario) se han cumplido
plenamente. Además, también se ha avanzado en la consecución del objetivo final de vuelo
estacionario. Como resultados del proyecto se han conseguido los siguientes:

• Modelo no lineal completo de Simulink que incluye las medidas de los sensores
infrarrojos de posición.
• Entorno de simulación completo de Simulink, con interfaz gráfica para definir las
referencias, tanto utilizando únicamente el lazo interno de estabilización como el control
completo con el lazo externo de distancia. Este entorno incluye la posibilidad de añadir
ruido en las medidas de los acelerómetros y ruido y un offset en las de los giróscopos.
También permite incluir ruido en las medidas de los sensores infrarrojos a partir de una
muestra tomada de un ensayo de calibración, definiendo las magnitudes de todos ellos.
• Control completo con lazo interno de estabilización y lazos externos de distancia a las
paredes y de altura, gobernado por una máquina de estados para vuelo estacionario que
funciona adecuadamente en simulación.
• Control de estabilización implantado sobre el cuadricóptero que permite mantener vuelo
estacionario y seguir las referencias de ángulos enviadas desde la emisora.

7.3 Futuras mejoras


De cara a los sucesivos proyectos que continúen en la línea de trabajo de éste, se han
concretado una serie de mejoras para facilitar la consecución del objetivo final de vuelo autónomo
en interiores.

• Inclusión de sensores ultrasonidos para aumentar el campo de visión y poder detectar la


pared a mayores distancias. Debido a que los periodos de muestreo que requieren estos
sensores son del orden de microsegundos, se necesitará procesar previamente la señal con
algún microcontrolador que traduzca la distancia a valores de tensión.
• Utilización de la carcasa de la tarjeta con la amortiguación de gomaespuma para reducir
el ruido en las medidas de la IMU debidas a las vibraciones de los motores.
• Desarrollo de un sistema de telemetría inalámbrica con el ordenador para poder observar
en tiempo real las variables internas de control.
• Desarrollo de un control de avance basado en la actuación sobre la referencia de cabeceo.
Para esto se proponen 4 alternativas que deberán ser analizadas para discernir cuál es la
mejor: estimación de la velocidad por integración de la medida de los acelerómetros,
estimación por derivación de la medida de los sensores de distancia (infrarrojos o
ultrasonidos), estimación mediante filtro de Kalman fusionando las dos medidas
anteriores, o control en lazo abierto por referencia de cabeceo.

64
Capítulo 8 .

Referencias

[1] G. E. Moore, «Cramming more components onto integrated circuits,» Electronics, vol. 38,
nº 8, 19 Abril 1965.
[2] J. Villbrandt, «Illumin,» 16 Mayo 2015. [En línea]. Available:
https://illumin.usc.edu/162/the-quadrotors-coming-of-age/. [Último acceso: 17 Mayo
2015].
[3] M. R. R. M. H. N. S. S. H. Bolandi, «Atitude Control of a Quadcopter with Optimized PID
Controller,» Intelligent Control and Automation, vol. 4, nº 3, pp. 335-342, 2013.
[4] A. N. R. S. S. Bouabdallah, «PID vs LQ control techniques applied to an indoor micro
quadrotor,» Swiss Federal Institute of Technology, 2004.
[5] P. C. R. M. Paul Pounds, «Modelling and control of a quad-rotor robot,» Australian
National University, 2006.
[6] L. F. School, «http://www.langleyflyingschool.com/,» [En línea]. Available:
http://www.langleyflyingschool.com/Pages/Aerodynamics%20and%20Theory%20of%20F
light.html#AERODYNAMICS%20AND%20THEORY%20OF%20FLIGHT.
[7] W. Johnson, Helicopter Theory, New York: Dover Publications, Inc., 1980.
[8] D. M. A. K. B. K. V. K. Caitlin Powers, Influence of Aerodynamics and Proximity Effects in
Quadrotor Flight, Springer, 2013.
[9] L. Sevilla, «Modelado y control de un cuadricóptero,» Universidad Pontificia de Comillas,
2014.
[10] G. M. C. J. T. Rajnarayan D. G. Waslander S. L. Dostal D. Jang J. S. Hoffmann, «The
stanford testbed of autonomous rotorcraft for multi agent control,» de Digital Avionics
Systems Conference, 2004.
[11] J. F. W. A. K. C. Ian D. Cowling, «Optimal trajectory planning and LQR,» de Proc. UKACC
Int. Conf. Control, 2006.
[12] H. Voos, «Nonlinear Control of a Quadrotor Micro-UAV using Feedback-Linearization,» de
2009 IEEE International Conference on Mechatronics, 2009.
[13] C. A. P. C. R. A. Bemporad, «Hierarchical and hybrid model predictive control of
quadcopter air vehicles,» vol. 3. Parte 1, pp. 14-19, 2009.
[14] L. M. P. C. I. M.-B. M. A. Olivares-Mendez, «Cross-Entropy optimization for scaling factors
of a fuzzy controller: a see-and-avoid approach for unmanned aerial systems,» Journal of
Intelligent & Robotic Systems, vol. 69, nº 1-4, pp. 189-205, 2013.
[15] H.-S. K. K.-F. H. R. Hercus, «Control of an unmanned aerial vehicle using a neuronal
network,» 2013 IEEE Symposium on Computational Intelligence, Cognitive Algorithms,
Mind, and Brain (CCMB), pp. 73-79, 2013.
[16] P. C. ,. R. M. ,. J. K. T. H. M. Euston, «A complementary filter for attitude estimation of a
fixed-wing UAV,» de Proc. IEEE/RSJ Int. Conf. Intell. Robots Syst, 2008.
[17] A. M. S. L. Alessandro Benini, «An IMU/UWB/Vision-based Extended Kalman Filter for
Mini-UAV Localization in Indoor Environment using 802.15.4a Wireless Sensor Network,»

65
Journal of Intelligent & Robotic Systems, vol. 70, pp. 461-476, Abril 2013.
[18] F.-D. X. H. R. A. H. M. Robert F. Hartley, «Development and Flight Testing of a Model
Based Autopilot Library for a Low Cost Unmanned Aerial System,» de AIAA Guidance,
Navigation, and Control (GNC) Conference, 2013.
[19] «Battery University,» [En línea]. Available:
http://batteryuniversity.com/learn/article/lithium_based_batteries.
[20] «Hobby King,» [En línea]. Available:
http://www.hobbyking.com/hobbyking/store/__56052__HKPilot_Mega_2_7_Flight_Cont
roller_USB_GYRO_ACC_MAG_BARO.html.
[21] A. R. L. B. R. C. L. C. J. P. E. Rocon, «Un nuevo sensor para medida del movimiento
tembloroso basado en giroscopios,» de XXIV Jornadas de Automática de León, 2003.
[22] «Copter,» [En línea]. Available: http://copter.ardupilot.com/wiki/common-
autopilots/common-apm25-and-26-overview/#powering_the_apm_2526_board.

66
.

En este anexo se recoge el código del archivo Control_quadcopter.m. Este archivo contiene
los parámetros del modelo y calcula las ganancias que hay que aplicar al control en función en
función de la pulsación natural y el factor de amortiguamiento. Además incluye un cálculo de
ganancias para un control PID que no se llegó a utilizar, por lo que aparece comentado.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%% MODELO QUADCOPTER %%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc
%clear

%%Ensayos
ts=0.01;
d0=0.50;
l0=0.50;
shi0=0;
h0=0;
load ruido_sensoresIR;
%% PARAMETROS %%%%%%%%%%%%%
% Gravedad (m/s^2)
g=9.81;
%%%%%%%%%%%%%%%%%%%%%%
% Motor DC brushless %
%%%%%%%%%%%%%%%%%%%%%%
% Resistencia (ohm)
Rm=0.405;
% Constante motor DC brushless (V.s o N.m/A)
Km=60/1900/2/pi;
% Momento de inercia motor DC brushless (kg.m^2)
Im=104e-8;
%%%%%%%%%%%%%%
% Quadcopter %
%%%%%%%%%%%%%%
% Masa del quadcopter (kg)
m=0.360;
% Distancia entre el eje de cada motor y el CDG (m)
L=0.115;
% Distancia del eje de rotores al CDG (m)
h=0;
% Thrust factor (N.s^2)
b=6.0639e-07/1000*9.81*(60/2/pi)^2;
% Drag Factor (N.m.s^2)
d=8.1251e-07/1000*9.81/100*(60/2/pi)^2;
% Momentos de inercia (kg.m^2)
Ix=7.83e-4;
Iy=7.85e-4;
Iz=1.4e-3;
% Vector de posición de los sensores IR (r1 y r2 laterales; r3 y r4
% frontales, r5 y r6 altura)
r1=[0.06 0.01 0.02];
r2=[-0.06 0.01 0.02];
r3=[0 0.06 0.02];
r4=[0 -0.06 0.02];
r5=[0.06 0 0.03];
r6=[-0.06 0 0.03];
% Vector de parametros
param=[m L g b d Ix Iy Iz Rm Km Im r1 r2 r3 r4 r5 r6]';
%separación entre sensores

67
ancho=r1(1)-r2(1);
% Parametros
I1=(Iy-Iz)/Ix;
I2=(Iz-Ix)/Iy;
I3=(Ix-Iy)/Iz;
% Tension de la bateria (V)
Vbat=8;
% Velocidad angular de los motores para equilibrar el peso
w0=sqrt(m*g/4/b);
%PWM necesario para mantener w0
PWM0=((d*w0^2*Rm/Km+Km*w0)/Vbat+1)*1000;
% Condiciones iniciales del vector de estado (modelo Simulink)
X0=[zeros(5,1); shi0*pi/180; zeros(3,1); -l0-(r3(1)+r4(1))/2; -d0-
(r1(2)+r2(2))/2 ; -h0-(r5(3)+r6(3))/2; w0*ones(4,1)];
% Maxima variacion de los angulos de Euler
ang_max=15;
% Efecto aerodinamico (ensayo)
% Ref_pitch = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];
% vx = [0 0.86 1.725 2.52 2.95 3 3.32 3.3 2.95 2.9 2.7];

%_____________________________________________________________________
_____
% CONTROL DE ORIENTACION: FEEDBACK LINEARIZATION (VOOS, 2009)
%_____________________________________________________________________
_____
% Vector de estado
% X = [vx vy vz Phi Theta Shi wx wy wz]'
% U = [u1 u2 u3 u4]'
% Mandos aplicados
% u1=b*(w1^2+w2^2+w3^2+w4^2); % Fuerza ascendente eje Z del cuerpo (-)
% u2=b*(w2^2-w4^2); % Fuerza neta de roll (+)
% u3=b*(w1^2-w3^2); % Fuerza neta de pitch (+)
% u4=d*(w1^2+w3^2-w2^2-w4^2); % Par de yaw (-)
% Representacion de estado del subsistema de orientacion (incluye
efectos giroscopicos)
% Se ha usado la relacion simplificada [dPhi dTheta dShi]' = wxyz
% dX/dt = F(X,U)
% dx4/dt = x7
% dx5/dt = x8
% dx6/dt = x9
% dx7/dt = I1*x8*x9 + L/Ix*u2 - Im/Ix*x8*(w1-w2+w3-w4)
% dx8/dt = I2*x7*x9 + L/Iy*u3 + Im/Iy*x7*(w1-w2+w3-w4)
% dx9/dt = I3*x7*x8 + 1/Iz*u4;
% Feedback linearization
% u2 = Ix/L*(-kd2*x7-I1*x8*x9+u2p)
% u3 = Iy/L*(-kd3*x8-I2*x7*x9+u3p)
% u4 = Iz*(-kd4*x9-I3*x7*x8+u4p)
% Nueva representacion de estado
% dx4/dt = x7
% dx5/dt = x8
% dx6/dt = x9
% dx7/dt = -kd2*x7 + u2p - Im/Ix*x8*(w1-w2+w3-w4)
% dx8/dt = -kd3*x8 + u3p + Im/Iy*x7*(w1-w2+w3-w4)
% dx9/dt = -kd4*x9 + u4p
% Funcion de Lyapunov (funcion escalar de energia) V(X) >= 0 para todo
X
% V = 1/2*(x7^2 + x8^2 +x9^2)
% Si no se aplican mandos (u2p = u3p = u4p = 0) => Estabilidad
asintotica (respuesta libre)
% dV/dt = grad(V)'*dX/dt = [0 0 0 x7 x8 x9]'*...

68
% [x7 x8 x9 -kd2*x7-Ir/Ix*x8*(w1-w2+w3-w4) -kd3*x8+Ir/Iy*x7*(w1-
w2+w3-w4) -kd4*x9]
% Si Ix = Iy
% dV/dt = -kd2*x7^2 + -kd3*x8^2 + -kd4*x9^2
% Si kd1,kd2,kd3 > 0 => dV/dt < 0 para todo X y el sistema es
asintoticamente estable
% Nuevos mandos
% u2p = kp2*(x4d-x4)
% u3p = kp3*(x5d-x5)
% u4p = kp4*(x6d-x6)
% Representacion de estado en lazo cerrado (sin efectos giroscopicos)
% dx4/dt = x7
% dx5/dt = x8
% dx6/dt = x9
% dx7/dt = -kd2*x7 + kp2*(x4d-x4)
% dx8/dt = -kd3*x8 + kp3*(x5d-x5)
% dx9/dt = -kd4*x9 + kp4*(x6d-x6)
% Funciones de transferencia en lazo cerrado
% d2x4/dt2 = -kd2*dx4/dt + kp2*(x4d-x4)
% P4(s)= X4(s)/X4d(s) = kp2 / (s^2 + kd2*s + kp2)
% d2x5/dt2 = -kd3*dx5/dt + kp3*(x5d-x5)
% P5(s)= X5(s)/X5d(s) = kp3 / (s^2 + kd3*s + kp3)
% d2x6/dt2 = -kd4*dx6/dt + kp4*(x6d-x6)
% P6(s)= X6(s)/X6d(s) = kp4 / (s^2 + kd4*s + kp4)
% Especificaciones de lazo cerrado
%% PD
wn_lc=[8.2,1.5];
seta_lc=[0.89,0.7];
% Parametros del control
kp2=wn_lc(1)^2;
kp3=wn_lc(1)^2;
kp4=wn_lc(2)^2;
kd2=2*seta_lc(1)*wn_lc(1);
kd3=2*seta_lc(1)*wn_lc(1);
kd4=2*seta_lc(2)*wn_lc(2);
% Ganancias de la realimentacion de estado
Kp_Phi=Ix/L*kp2;
Kp_Theta=Iy/L*kp3;
Kp_Shi=Iz*kp4;
Kd_Phi=Ix/L*kd2;
Kd_Theta=Iy/L*kd3;
Kd_Shi=Iz*kd4;
% Parametros control
param_control=[Kp_Phi Kd_Phi Kp_Theta Kd_Theta Kp_Shi Kd_Shi]';
% Aplicacion
% u2 = Kp_Phi*(Phid - Phi) - Kd_Phi*dPhi/dt - (Iy-Iz)/L*
% *dTheta/dt *dShi/dt
% u3 = Kp_Theta*(Thetad - Theta) - Kd_Theta*dTheta/dt - (Iz-Ix)/L*
% *dPhi/dt*dShi/dt
% u4 = Iz*Kp_Shi*(Shid - Shi) - Kd_Shi*dShi/dt - (Ix-Iy)*dPhi/dt*
% *dTheta/dt

% %% PID
% wn_lc=[8.2,1.5];
% seta_lc=[0.89,0.7];
% cte_polo=[1,1];
% p_lc=cte_polo.*wn_lc;
% % Coeficientes
% a2_lc = 2*seta_lc(1)*wn_lc(1) - p_lc(1);
% a1_lc = (wn_lc(1))^2 - 2*seta_lc(1)*wn_lc(1)*p_lc(1);
% a0_lc = -p_lc(1)*(wn_lc(1))^2;

69
% a2_shi = 2*seta_lc(2)*wn_lc(2) - p_lc(2);
% a1_shi = (wn_lc(2))^2 - 2*seta_lc(2)*wn_lc(2)*p_lc(2);
% a0_shi = -p_lc(2)*(wn_lc(2))^2;
% % Parametros del control
% kp2=a1_lc;
% kp3=a1_lc;
% kp4=a1_shi;
% kd2=a2_lc;
% kd3=a2_lc;
% kd4=a2_shi;
% ki2=a0_lc;
% ki3=a0_lc;
% ki4=a0_shi;
% % Ganancias de la realimentacion de estado
% Kp_Phi=Ix/L*kp2;
% Kp_Theta=Iy/L*kp3;
% Kp_Shi=Iz*kp4;
% Kd_Phi=Ix/L*kd2;
% Kd_Theta=Iy/L*kd3;
% Kd_Shi=Iz*kd4;
% Ki_Phi=Ix/L*ki2;
% Ki_Theta=Iy/L*ki3;
% Ki_Shi=Iz*ki4;
% % Parametros control
% param_control=[Kp_Phi Kd_Phi Ki_Phi Kp_Theta Kd_Theta Ki_Theta
% Kp_Shi Kd_Shi Ki_Shi]';

70
.
En este anexo se recoge el código incluido en la Matlab function del modelo de Simulink
mostrado en la Figura 4.1.
function [dX,Y] = quadcopter(X,PWM,Vbat,param)

%% Parametros
% Masa del quadcopter
m=param(1);
% Distancia entre el eje de cada motor y el CDG
L=param(2);
% Distancia vertical del plano de rotores al CDG
g=param(3);
% Thrust factor (factor de empuje)
b=param(4);
% Drag Factor (factor de arrastre)
d=param(5);
% Momentos de inercia
Ix=param(6);
Iy=param(7);
Iz=param(8);
I1=(Iy-Iz)/Ix;
I2=(Iz-Ix)/Iy;
I3=(Ix-Iy)/Iz;
% Resistencia del motor en ohm
Rm=param(9);
% Constante del motor (V.s o N.m/A)
Km=param(10);
% Momento de inercia de los motores
Im=param(11);
%Coordenadas de los sensores IR
r1=param(12:14);
r2=param(15:17);
r3=param(18:20);
r4=param(21:23);
r5=param(24:26);
r6=param(27:29);

%% Sistemas de referencia
% Sistema de referencia inercial
% X,e11 - Norte
% Y,e21 - Este
% Z,e31 - Hacia abajo
% Sistema de referencia del cuerpo con origen en el CDG
% Xm,e1B - Hacia adelante (brazo del motor 1)
% Ym,e2B - Hacia la derecha, cuando se mira hacia adelante (brazo del
% motor 2)
% Zm,e3B - Hacia abajo

%% Entradas
% PWM de los motores y tension Vbat de la bateria
% Tensiones de los motores
um=(PWM*0.001-1)*Vbat;

%% Variables de estado
% Velocidades traslacion (SRI)
vxyz=X(1:3);
% Angulos de Euler (SRC)

71
angEuler=X(4:6);
% Velocidades angulares de rotacion (SRC)
wxyz=X(7:9);
% Posicion centro de masas (SRI)
rxyz=X(10:12);
% Velocidades angulares de los motores
wm=X(13:16);

%% Motores
% FCEM
em=Km*wm;
% Corrientes
im=(um-em)/Rm;
% Pares motores
Tm=Km*im;
% Ecuacion mecanica
dwm=1/Im*(Tm-d*wm.^2);

%% Fuerzas y pares sobre el cuerpo


% Motores 1 (delantero) y 3 (trasero): sentido de las agujas del reloj
% Motores 2 (izquierdo) y 4 (derecho): sentido contrario a las agujas
% del reloj
w1=wm(1); w2=wm(2) ; w3=wm(3); w4=wm(4);
u1=b*(w1^2+w2^2+w3^2+w4^2); % Fuerza ascendente eje Z del cuerpo (-)
u2=b*(-w2^2+w4^2); % Fuerza neta de roll (+)
u3=b*(w1^2-w3^2); % Fuerza neta de pitch (+)
u4=d*(-w1^2-w3^2+w2^2+w4^2); % Par de yaw (-)

%% Ecuaciones de estado
% Angulos de Euler en rad: angEuler=[Phi Theta Shi]
% Roll / Pitch / Yaw | Alabeo / Cabeceo / Guiñada
Phi=angEuler(1);
Theta=angEuler(2);
Shi=angEuler(3);
% Velocidad angular en el sistema de referencia del cuerpo en rad/s:
%wxyz=[wx wy wz]'
wx=wxyz(1);
wy=wxyz(2);
wz=wxyz(3);
% Velocidad del CDG en el sistema inercial: vxyz=[vx vy vz]'
vx=vxyz(1);
vy=vxyz(2);
vz=vxyz(3);
%Posición del cuadricóptero en el sistema de referencia del cuerpo
%rxyz=[rx ry rz]'
rx=rxyz(1);
ry=rxyz(2);
rz=rxyz(3);
% Velocidades angulares de Euler
dPhi = wx + tan(Theta)*sin(Phi)*wy + tan(Theta)*cos(Phi)*wz;
dTheta = cos(Phi)*wy - sin(Phi)*wz;
dShi = sin(Phi)/cos(Theta)*wy + cos(Phi)/cos(Theta)*wz;
% % Velocidades angulares de Euler (version simplificada)
% dPhi = wx;
% dTheta = wy;
% dShi = wz;
% Aceleraciones angulares en el SRC (incluye efecto giroscopico)
dwx= I1*wy*wz + L/Ix*u2; - Im/Ix*wy*(w1-w2+w3-w4);
dwy= I2*wx*wz + L/Iy*u3; + Im/Iy*wx*(w1-w2+w3-w4);
dwz= I3*wx*wy + 1/Iz*u4;
% Ecuacion de traslacion (SRI)

72
dvx = -(cos(Phi)*sin(Theta)*cos(Shi)+sin(Phi)*sin(Shi))*u1/m;
dvy = -(cos(Phi)*sin(Theta)*sin(Phi)-sin(Phi)*cos(Shi))*u1/m;
dvz = g - cos(Phi)*cos(Theta)*u1/m;
dx = vx;
dy = vy;
dz = vz;

% Vector de derivadas de las variables de estado


dX=[dvx ; dvy ; dvz ; dPhi ; dTheta ; dShi ; dwx ; dwy ; dwz ; dx ; dy
; dz ; dwm];

%% Medidas de los sensores infrarrojos


% La matriz de rotacion (SR cuerpo => SR inercial) es:
matR = ...
[ cos(Theta)*cos(Shi), sin(Phi)*sin(Theta)*cos(Shi)-cos(Phi)*sin(Shi),
cos(Phi)*sin(Theta)*cos(Shi)+sin(Phi)*sin(Shi);
sin(Shi)*cos(Theta), sin(Phi)*sin(Theta)*sin(Shi)+cos(Phi)*cos(Shi),
cos(Phi)*sin(Theta)*sin(Shi)-sin(Phi)*cos(Shi);
-sin(Theta), sin(Phi)*cos(Theta), cos(Phi)*cos(Theta)];

%% Ecuaciones de salida

% Medidas de los sensores:


% - Giroscopos: [wx wy wz]'
% - Acelerometros: proyeccion de g en el sistema de referencia del
% cuerpo – aceleraciones
% - Sensores de distancia a las paredes y al suelo:
% (matR*(r+d*{i,j,k}))º{i,j,k}=-r

%Sensores de distancia
d1=(-ry-matR(2,:)*r1)/matR(2,2);
d2=(-ry-matR(2,:)*r2)/matR(2,2);
d3=(-rx-matR(1,:)*r3)/matR(1,1);
d4=(-rx-matR(1,:)*r4)/matR(1,1);
d5=(-rz-matR(3,:)*r5)/matR(3,3);
d6=(-rz-matR(3,:)*r6)/matR(3,3);

% Acelerometros
axyz= matR'*([0 0 g]' - [dvx dvy dvz]');
Y = [ vxyz ; angEuler ; wxyz ; rxyz ; axyz; d1; d2; d3; d4; d5; d6];

73
74
.
A continuación se detallan los códigos del control de estabilización y del filtro de Kalman
utilizados.

Control de estabilización

function PWM = Control_orientacion(Ref_angEuler, angEuler, wxyz, Vbat,


param, param_control, thrust)

%% Parametros cuadricoptero
% Masa del quadcopter (kg)
m=param(1);
% Distancia entre el eje de cada motor y el CDG (m)
L=param(2);
% Thrust factor (N.s^2)
b=param(4);
% Drag Factor (N.m.s^2)
d=param(5);
% Momentos de inercia (kg.m^2)
Ix=param(6);
Iy=param(7);
Iz=param(8);
% Resistencia (ohm)
Rm=param(9);
% Constante motor DC brushless (V.s o N.m/A)
Km=param(10);
% Gravedad (m/s^2)
g=9.81;

%% Parametros control
Kp_Phi=param_control(1);
Kd_Phi=param_control(2);
Kp_Theta=param_control(3);
Kd_Theta=param_control(4);
Kp_Shi=param_control(5);
Kd_Shi=param_control(6);

%% Referencias de angulos de Euler


Phid=Ref_angEuler(1);
Thetad=Ref_angEuler(2);
Shid=Ref_angEuler(3);

%% Angulos de Euler
Phi=angEuler(1);
Theta=angEuler(2);
Shi=angEuler(3);

%% Velocidades angulares
wx=wxyz(1);
wy=wxyz(2);
wz=wxyz(3);
% Derivadas de los angulos de Euler
% dPhi = wx + tan(Theta)*sin(Phi)*wy + tan(Theta)*cos(Phi)*wz;
% dTheta = cos(Phi)*wy - sin(Phi)*wz;
% dShi = sin(Phi)/cos(Theta)*wy + cos(Phi)/cos(Theta)*wz;
% % Velocidades angulares de Euler (version simplificada)

75
dPhi = wx;
dTheta = wy;
dShi = wz;

%% Calculo de fuerzas y pares


% u2 = Kp_Phi*(Phid - Phi) - Kd_Phi*dPhi/dt - (Iy-Iz)/L*
% *dTheta/dt*dShi/dt
% u3 = Kp_Theta*(Thetad - Theta) - Kd_Theta*dTheta/dt - (Iz-Ix)/L*
% *dPhi/dt*dShi/dt
% u4 = Kp_Shi*(Shid - Shi) - Kd_Shi*dShi/dt - (Ix-Iy)*
% *dPhi/dt*dTheta/dt
% u2 = u2_hat - (Iy-Iz)/L*dTheta/dt*dShi/dt
% u3 = u3_hat - (Iz-Ix)/L*dPhi/dt*dShi/dt
% u4 = u4_hat - (Ix-Iy)*dPhi/dt*dTheta/dt
% Controles PD
u_hat=[Kp_Phi*(Phid - Phi) - Kd_Phi*dPhi; ...
Kp_Theta*(Thetad - Theta) - Kd_Theta*dTheta; ...
Kp_Shi*(Shid - Shi) - Kd_Shi*dShi];
% Compensacion de terminos no lineales
u=u_hat-[(Iy-Iz)/L*dTheta*dShi (Iz-Ix)/L*dPhi*dShi (Ix-
Iy)*dPhi*dTheta]';

%% Calculo velocidades motores


matT=[b b b b ; 0 -b 0 b ; b 0 -b 0 ; -d d -d d];
wm2 = matT\[thrust ; u];
wm2=wm2.*(wm2>=0); % se limita el valor a 0
wm = sqrt(wm2);

%% Calculo tensiones motores


% dwm/dt=1/Ir*(Km/Rm*(um-Km*wm)-Tr-d*wm^2) i=1...4
% Hipotesis: se desprecia Tr y dwm/dt
% Km/Rm*(um-Km*wm)-d*wm^2=0 => Km/Rm*um = d*wm^2 + Km^2/Rm*wm
um = d*Rm/Km*wm2 + Km*wm;

%% Calculo PWM (ESCs)


PWM = 1000*(1 + um/Vbat);
%saturacion de los mandos
PWM = (2000-PWM).*(PWM>=2000)+PWM;

Filtro de Kalman

function [Roll_Angle, Pitch_Angle, Yaw_Angle, Yaw_Angle_Fusion] =


complete_sensor_fusion(ts, p, q, r, ax, ay, az, sens_yaw)

%================================Constants============================

delta_t = ts;
degrees = 180 / pi;
radians = pi / 180;

%Attitude Estimator
Q_gyroBias = 0.000000087; % Q_gyroBias: gyroscope noise
Q_angle = 0.000039; % Q_angle: accelerometer noise
R_angle = 20; % R_angle: high ==> gyroscope, low
==> accelerometer
Q_gyroBiasy = 0.000000087; % Q_gyroBias: gyroscope noise

76
Q_angley = 0.00000001; % Q_angle: accelerometer noise
R_angley = 50; % R_angle: high ==> gyroscope, low ==> accelerometer

%=============================Intitialization=========================

persistent initialize angle_roll bias1 P1 K1 phi angle_pitch bias2 P2


K2 theta angle_yaw angle_yaw_f bias3 P3 K3;

if isempty(initialize)
if isempty(angle_roll)
angle_roll = 0;
bias1 = 0;
P1 = zeros(2);
K1 = zeros([2,1]);
phi = 0;
end
if isempty(angle_pitch)
angle_pitch = 0;
bias2 = 0;
P2 = zeros(2);
K2 = zeros([2,1]);
theta = 0;
end
if isempty(angle_yaw)
angle_yaw = 0;
angle_yaw_f = 0;
bias3 = 0;
P3 = zeros(2);
K3 = zeros([2,1]);
end
initialize = 1;
else

%==============================Kalman
Filter===============================

%--------------------------------Roll Angle---------------------------
-----

Rate_Roll = p + (q * sin(phi) + r * cos(phi)) * tan(theta) -


bias1;
angle_roll = angle_roll + Rate_Roll * delta_t;
%Projected State (integrated gyro data)
earth_roll = -atan(ay / az) * degrees;
%Measurement Update (gravity vector)
P1(1,1) = P1(1,1) + delta_t * (P1(2,2) * delta_t - P1(1,2) -
P1(2,1) + Q_angle); %Projected error covariance
P1(1,2) = P1(1,2) - P1(2,2) * delta_t;
P1(2,1) = P1(2,1) - P1(2,2) * delta_t;
P1(2,2) = P1(2,2) + Q_gyroBias * delta_t;
S1 = P1(1,1) + R_angle;
%Kalman Gain
K1(1) = P1(1,1) / S1;
K1(2) = P1(2,1) / S1;
Y1 = earth_roll - angle_roll;
%Estimate Update
angle_roll = angle_roll + K1(1) * Y1;
bias1 = bias1 + K1(2) * Y1;

77
P1(1,1) = P1(1,1) - K1(1) * P1(1,1);
%Update Error Covariance
P1(1,2) = P1(1,2) - K1(1) * P1(1,2);
P1(2,1) = P1(2,1) - K1(2) * P1(1,1);
P1(2,2) = P1(2,2) - K1(2) * P1(1,2);
phi = angle_roll * radians;

%--------------------------------Pitch Angle--------------------------
-----

Rate_Pitch = q * cos(phi) - r * sin(phi) - bias2;


angle_pitch = angle_pitch + Rate_Pitch * delta_t;
%Projected State (integrated gyro data)
earth_pitch = atan(ax / az) * degrees;
%Measurement Update (gravity vector)
P2(1,1) = P2(1,1) + delta_t * (P2(2,2) * delta_t - P2(1,2) -
P2(2,1) + Q_angle); %Projected error covariance
P2(1,2) = P2(1,2) - P2(2,2) * delta_t;
P2(2,1) = P2(2,1) - P2(2,2) * delta_t;
P2(2,2) = P2(2,2) + Q_gyroBias * delta_t;
S2 = P2(1,1) + R_angle;
%Kalman Gain
K2(1) = P2(1,1) / S2;
K2(2) = P2(2,1) / S2;
Y2 = earth_pitch - angle_pitch;
%Estimate Update
angle_pitch = angle_pitch + K2(1) * Y2;
bias2 = bias2 + K2(2) * Y2;
P2(1,1) = P2(1,1) - K2(1) * P2(1,1);
%Update Error Covariance
P2(1,2) = P2(1,2) - K2(1) * P2(1,2);
P2(2,1) = P2(2,1) - K2(2) * P2(1,1);
P2(2,2) = P2(2,2) - K2(2) * P2(1,2);
theta = angle_pitch * radians;

%--------------------------------Yaw Angle----------------------------
-----

Rate_Yaw = (q * sin(phi) + r * cos(phi)) * sec(theta) - bias3;


angle_yaw_f = angle_yaw_f + Rate_Yaw * delta_t;
%Projected State (integrated gyro data)
P3(1,1) = P3(1,1) + delta_t * (P3(2,2) * delta_t - P3(1,2) -
P3(2,1) + Q_angley); %Projected error covariance
P3(1,2) = P3(1,2) - P3(2,2) * delta_t;
P3(2,1) = P3(2,1) - P3(2,2) * delta_t;
P3(2,2) = P3(2,2) + Q_gyroBiasy * delta_t;
S3 = P3(1,1) + R_angley;
%Kalman Gain
K3(1) = P3(1,1) / S3;
K3(2) = P3(2,1) / S3;
Y3 = sens_yaw - angle_yaw_f;
%Estimate Update
angle_yaw_f = angle_yaw_f + K3(1) * Y3;
bias3 = bias3 + K3(2) * Y3;
P3(1,1) = P3(1,1) - K3(1) * P3(1,1);
%Update Error Covariance
P3(1,2) = P3(1,2) - K3(1) * P3(1,2);
P3(2,1) = P3(2,1) - K3(2) * P3(1,1);
P3(2,2) = P3(2,2) - K3(2) * P3(1,2);

78
%Integrated gyro data
angle_yaw = angle_yaw+(q*sin(phi)+r*cos(phi))*sec(theta)*delta_t;
%Projected State (integrated gyro data)

end

Roll_Angle = angle_roll;
Pitch_Angle = angle_pitch;
Yaw_Angle_Fusion=angle_yaw_f;
Yaw_Angle = angle_yaw;

%=====================================================================

79
80
.
En este anexo se detalla el funcionamiento del entorno de simulación, fundamentalmente del
bloque de Opciones. Sobre este bloque se ha creado una máscara en la que se han definido una
serie de variables que regulan su funcionamiento interno. Las variables de la máscara se detallan
a continuación:

Variables Tipo Explicación


Wait10 Binaria Selección de offset en los giróscopos
Gyro_Offset Analógica Valor del offset de los giróscopos
Gyro_Noise Binaria Selección de ruido en los giróscopos
var_gyro Analógica Valor de la varianza del ruido de los giróscopos
Acc_Noise Binaria Selección de ruido en los giróscopos
var_acc Analógica Valor de la varianza del ruido de los giróscopos
D_Noise Binaria Selección de ruido en los sensores de distancia lateral
var_d Analógica Valor pico del ruido de distancia lateral
L_Noise Binaria Selección de ruido en los sensores de distancia frontal
var_l Analógica Valor pico del ruido de distancia frontal
H_Noise Binaria Selección de ruido en los sensores de altura
var_h Analógica Valor pico del ruido de altura
fb_angles Discreta {1,2,3,4,5,6} Selección de los ángulos usados en la realimentación
ref_roll Discreta {1,2,3,4} Selección de la referencia del ángulo de alabeo
A_roll Analógica Amplitud de las señales de referencia de alabeo
T_roll Analógica Periodo de las señales de referencia de alabeo
ref_d Analógica Valor de la referencia de distancia lateral
ref_pitch Discreta {1,2,3,4} Selección de la referencia del ángulo de cabeceo
A_pitch Analógica Amplitud de las señales de referencia de cabeceo
T_pitch Analógica Periodo de las señales de referencia de cabeceo
ref_l Analógica Valor de la referencia de distancia frontal
ref_yaw Discreta {1,2,3,4} Selección de la referencia del ángulo de guiñada
A_yaw Analógica Amplitud de las señales de referencia de guiñada
T_yaw Analógica Periodo de las señales de referencia de guiñada
ref_ang_wall Analógica Valor de la referencia de guiñada constante
ref_thrust Discreta {1,2} Selección de la referencia del empuje
A_thrust Analógica Valor del empuje en lazo abierto
ref_h Analógica Valor de la referencia de altura

Tabla D.1.

La máscara actúa de interfaz gráfica del simulador. La estructura es la siguiente:

• Inicialmente se definen las perturbaciones en las medidas (ruidos y offsets). Se pueden


seleccionar qué perturbaciones se incluyen en la simulación, y su magnitud. Al
seleccionar alguna de ellas, la variable binaria correspondiente se pone a ‘1’, y la variable
analógica adquiere el valor que se introduzca en el espacio designado a tal efecto.
• A continuación se permite la elección del tipo de realimentación. Para ello se ha creado
una ventana desplegable que permite elegir 6 tipos de ángulos distintos:
− Real Angles: Ángulos reales calculados por el modelo.
− Kalman Angles: Ángulos estimados por el filtro de Kalman. El ángulo de guiñada
se estima sólo a partir de la medida de los giróscopos.

81
− Real + Wall Angles: Ángulos reales, aunque la guiñada se obtiene directamente
de las medidas de los sensores de posición.
− Kalman + Wall Angles: Ángulos estimados por el filtro de Kalman, aunque la
guiñada se obtiene directamente de las medidas de los sensores de posición.
− Real + Fusion Angles: Ángulos reales, aunque la guiñada se obtiene del filtro de
Kalman entre las medidas de giróscopos y sensores de posición.
− Kalman + Fusion Angles: Ángulos estimados por el filtro de Kalman completo,
en el que la guiñada se estima a partir de giróscopos y sensores de posición.
En función de la opción que se seleccione, la variable fb_angles adopta un valor entero
entre 1 y 6, en orden.
• Por último se eligen las referencias de alabeo, cabeceo y guiñada, y de empuje. Para ello
se han creado 4 pestañas. En cada una se puede seleccionar el tipo de referencia que se
desea:
− Para los ángulos de alabeo y cabeceo se han definido 4 tipos de referencias:
escalón, señal cuadrada, cero, y una cuarta que consiste en cerrar los lazos de
distancia a la pared y definir una referencia de distancia. En el caso del escalón,
se trata realmente de pulsos consistentes en dos escalones seguidos, uno de subida
y oro de bajada.
− Para el ángulo de guiñada se han definido un escalón, una señal cuadrada, cero y
una constante.
− Para el empuje se ha definido 2: una constante en lazo abierto, o una segunda que
consiste en cerrar el lazo de distancia y definir una referencia para la altura.
En función de la opción que se seleccione, las variable ref_roll, ref_pitch, ref_yaw y
ref_thrust adoptan un valor entero entre 1 y 4, o entre 1 y 2 para el empuje.
Para indicar la magnitud de las referencias, se puede rellenar en el campo de “Amplitud”
el valor de las señales y en el de “Periodo” la duración.

Figura D.1. Imagen de la interfaz gráfica y de las 4 pestañas de referencias.

82
A continuación se procede a explicar el funcionamiento del diagrama por dentro, que consta
de 7 bloques:

Figura D.2. Diagrama de bloques interno al bloque de Opciones.

En el bloque Tags se encuentra la asociación de varias variables mediante etiquetas,


multiplexores y demultiplexores.

Figura D.3. Bloque Tags.

83
En el bloque Accelerations se añade un ruido a la medida de las aceleraciones. Se trata de un
ruido blanco con distribución gaussiana. Se han elegido unos valores de semillas aleatorios, y se
ha establecido como varianza el producto de la variable binaria Acc_Noise y de la variable
analógica var_acc. De este modo, sólo si la casilla de ruido en los acelerómetros está activada, se
añadirá la señal de ruido.

Figura D.4. Bloque Accelerations.

En el bloque de Angular Speeds se incluyen el ruido y los offsets en las medidas de los
giróscopos, y además se añade el bloque de calibración basado en una media dinámica que
pretende eliminar dicho offset.

Figura D.5. Bloque Angular Speeds

En el bloque de Distance se añaden los ruidos en las medidas de distancia. Para ello se utiliza
el bloque Repeating Secuence con una muestra de ruido de se carga al ejecutar el archivo
Control_quadcopter.m. Esta muestra de ruido se divide entre 500 para que su valor pico esté en
torno a 0.01, y a continuación se multiplica por las ganancias indicadas en la interfaz gráfica para
elegir la magnitud de los ruidos.

84
Figura D.6. Ruidos en las medidas del bloque Distance.

Además se calculan a partir de esas medidas las 3 distancias (promediando los dos sensores)
y el ángulo de guiñada con respecto a la pared. Esto se hace para las medidas con ruido y sin ruido.

Figura D.7. Cálculo de ángulo y distancia a partir de las medidas de los sensores.

En el bloque PWMs se aplica un retardo de dos periodos de muestreo a las señales calculadas
por el control. Además, en el caso de que se utilice un offset en los giróscopos y sea necesario
utilizar el bloque de calibración, para que inicialmente no se desestabilice el cuadricóptero, se
introducen las señales necesarias para que el empuje y el peso se igualen. En el caso de que no se
incluya este offset, es necesario introducir durante los dos primeros periodos de muestreo también
esta señal inicial, ya que en caso contrario la simulación no funcionará.

85
Figura D.8. Bloque PWMs

En el bloque Feedback se utiliza la variable fb_angles para definir qué ángulos se utilizan en
la realimentación.

Figura D.9. Bloque Feedback.

Por último, el bloque References genera las referencias en función de los valores indicados
en la interfaz gráfica. Se generan las referencias del lazo externo (las 3 distancias y el ángulo con
la pared) utilizando rampas saturadas para simular un aumento progresivo de la referencia hasta
llegar al valor deseado. Las referencias del control interno se seleccionan con un Multiport Switch
en función de las variables discretas de la máscara.

El resto del simulador tiene la estructura general explicada en la memoria:

• En el bloque de Dynamic_model se incluye el modelo dinámico implementado en espacio


de estado. Las salidas que están expresadas en radianes (ángulos y velocidades angulares)
se convierten a grados, ya que los bloques de APM proporcionan las medidas de la IMU
en grados.
• En el bloque de Control_system se incluye el control dividido en los bloques de filtro de
Kalman, control de estabilización, control de distancia lateral, control de distancia frontal
y control de altura. Todos ellos han sido explicados previamente.
• En el bloque Monitorization se incluyen osciloscopios para representar todas las variables.

86
Figura D.10. Bloque References.

Figura D.11. Selección de las referencias en el bloque References.

87
88
.

En este anexo se explica el diagrama de Simulink empleado para controlar el cuadricóptero y


su relación con la máquina de estados. Dado que se ha partido del diagrama de bloques de APM,
se ha utilizado la misma estructura, dividendo el diagrama en hardware_inputs, control_system y
hardware_outputs. En la parte de entradas se han utilizado los bloques de APM para leer las
medidas de la IMU y las 8 entradas, que proceden de la emisora. También se han utilizado los
puertos analógicos para recibir las medidas de la batería, que se traduce a voltios y se filtra, y los
sensores infrarrojos, que se tendrán que calibrar según las tablas calculadas cuando se implante
el lazo externo de distancia.

Figura E.1. Bloque hardware_inputs.

En este bloque se incluye una señal de tiempo generada con un acumulador que se activa al
activar el switch RUD de la emisora.

Figura E.2. Diagrama de bloques del generador de la señal de tiempo.

89
Los bloques de calibración se activan con una señal de enable que se pone a ‘1’ al activar el
switch RUD. Incluyen la señal de Calibrado procedente de la máquina de estados para detener la
media dinámica. A continuación se muestra el diagrama de bloques de la calibración de los
acelerómetros, que al final añade la gravedad en el eje z.

Figura E.3. Diagrama de bloques de la calibración de los acelerómetros.

El bloque control_system es prácticamente idéntico al que se ha utilizado en simulación. La


únicas diferencias son las siguientes:

• Las referencias se calculan a la partir de los 4 primeros canales de la emisora, aplicando


una conversión que traduce la señal del intervalo [1000, 2000] al [-15, 15], o al [0, 2] en
el caso del empuje.
• Tanto el filtro de Kalman como el control de estabilización se activan por un enable. El
del filtro de Kalman es la señal de Calibrado de la máquina de estados, y la del control es
una señal binaria que se pone a ‘1’ cuando se supera el estado 2.
• Al empuje se le añade una rampa decreciente generada con un acumulador que se activa
cuando la señal de Fallo se pone a ‘1’. A continuación se satura con mínimo 0 para evitar
que entren en la conversión de mandos empujes negativos.
• En el sistema de control se incluye también el método de ajuste de los parámetros en
tiempo real explicado en la sección 6.2.

Figura E.4. Diagrama de bloques para el empuje.

El bloque de hardware_outputs utiliza un bloque de APM para actualizar las señales de


control calculadas en las salidas. Estas señales de control se generan en función la máquina de

90
estados: durante los dos primeros estados se introduce en todos los ESC la referencia de empuje;
en los estados 3 y 4 se introducen las señales calculadas por el control de estabilización; por último
en el estado 5 se introduce 0, equivalente a introducir 1000 o cualquier otro valor menor que 1000,
para detener los motores.

También en esta parte se escriben las señales en el pin correspondiente al LED azul, para
poder conocer el estado en el que se encuentra el sistema durante la ejecución del control. Se ha
añadido un LED rojo para indicar overrun. En caso de que este LED se encienda, será necesario
aumentar el periodo de muestreo.

Por último se ha incluido el bloque de la memoria flash, dentro del cual se especifican los
nombres de las variables que se desean guardar. Para la depuración de la máquina de estados y de
la calibración fue necesario registrar las medidas de los ensayos completos. Sin embargo, una vez
se comprobó que funcionaba correctamente, se incluyó un enable para la lectura de la memoria
flash con el que se logra comenzar a registrar datos solamente a partir de que el cuadricóptero
entre en el estado de Vuelo. De este modo es más sencillo localizar la parte de las variables
correspondiente al vuelo y además se reduce el tiempo de descarga de datos desde la memoria
flash al ordenador.

Figura E.5. Bloque hardware_outputs

91
92
.
En este anexo se recogen los códigos de los programas utilizados para comunicarse desde el
ordenador con la memoria flash: ArduData, para descargar los datos y almacenarlos en una
estructura de variables; ArmData, para iniciar la grabación de datos, y Borrar, para eliminar los
datos almacenados en la memoria flash. Es importante tener en cuenta que si se produjera un error
durante la ejecución del código, hay que cerrar el puerto con el comando ‘fclose(sp)’ antes de
ejecutar otra instrucción, o si no es posible que el puerto serie se bloquee. En ese caso hará falta
cerrar Matlab para liberar el puerto.

ArmData

%Definir el puerto serie


sp=serial('COM3');

%abrir el puerto serie


fopen(sp)

%Definir configuracion
set(sp, 'BaudRate', 115200, 'StopBits',1)

%Conexion con APM2


fprintf(sp, 'show attitude');
fscanf(sp)

%Peticion de datos de la flash


fprintf(sp,'a');

%Buscar la linea donde empiezan los datos


aux_int=[];
while isempty(aux_int)
aux_str=fscanf(sp)
aux_int=strfind(aux_str, 'Exit');
end
fclose(sp)

%Borrar variables intermedias


clear aux_str;
clear aux_int;
clear sp;

ArduData

%% ArduData

%Definir el puerto serie


sp=serial('COM3');

%abrir el puerto serie


fopen(sp);

%Definir configuracion

93
set(sp, 'BaudRate', 115200, 'StopBits',1)

%Conexion con APM2


fprintf(sp, 'show attitude');
fscanf(sp);

%Peticion de datos de la flash


fprintf(sp,'p');

%Buscar la linea donde empiezan los datos


aux_int=[];
while isempty(aux_int)
aux_str=fscanf(sp);
aux_int=strfind(aux_str, '(l) ');
end
fscanf(sp);

%Leer los nombres de las variables


read_var=fscanf(sp);
pos=regexp(read_var,',');
num_var=length(pos)+1;
variables=cell(num_var,1);
variables{1}=read_var(1:pos(1)-1);
for nn=1:length(pos)-1
variables{nn+1}=read_var(pos(nn)+1:pos(nn+1)-1);
end
variables{end}=read_var(pos(end)+1:end-2);

%Leer los datos. Tarda unos 20 segundos por cada 1000 muestras
aux_int=[];
cont=0;
while isempty(aux_int)
aux_str=fscanf(sp);
aux_int=strfind(aux_str, 'Y');
if isempty(aux_int)
cont=cont+1;
num_var2=length(regexp(aux_str, ','))+1;
%En las filas los instantes de tiempo y por columnas las
variables
ardudata(cont,:)=sscanf(aux_str,'%f,', num_var2)';
end
if mod(cont,100)==0
cont
end
end
% fclose(sp)
% plot(ardudata);
% legend('d1','d2','l1','l2','h1','h2','bat')

%Generar tiempo
if exist('ts')==0
ts=0.01;
end
t=[0:ts:ts*(cont-1)]';

%Asignar variables
if num_var2<=num_var
for nn=1:num_var2
aux_name=char(variables(nn));
dat.(aux_name)=ardudata(1:cont,nn);

94
data.(aux_name)=[t,ardudata(1:cont,nn)];
end
end

%Cerrar puerto
fclose(sp);

%Borrar variables intermedias


if num_var==num_var2
clear ardudata;
end
clear cont;
clear aux_str;
clear aux_int;
clear aux_name;
clear num_var;
clear nn;
clear sp;
clear pos;
clear read_var;
clear num_var2;
clear variables;

Borrar

%Definir el puerto serie


sp=serial('COM3');

%Borrar memoria flash


fopen(sp);
set(sp, 'BaudRate', 115200, 'StopBits',1)
fprintf(sp, 'show attitude');

%Buscar la linea donde empiezan los datos


aux_int=[];
while isempty(aux_int)
aux_str=fscanf(sp)
if strfind(aux_str, '(p)')
fprintf(sp,'ey');
end
aux_int=strfind(aux_str, 'No data');
end

fclose(sp);

95
CONTROL DE UN CUADRICÓPTERO
PARA VUELOS AUTÓNOMOS
EN INTERIORES
UNIVERSIDAD PONTIFICIA DE COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA
ICAI
TRABAJO DE FIN DE GRADO

PRESUPUESTO

Autor: Directores:

Juan Martínez Olondo Juan Luis Zamora Macho


José Porras Galán

14 de junio de 2015
Índice
1 Recuento de recursos empleados ............................................................................ 5
1.1 Componentes .................................................................................................. 5
1.2 Herramientas y software................................................................................. 5
1.3 Mano de obra .................................................................................................. 5
2 Costes unitarios ....................................................................................................... 7
2.1 Componentes .................................................................................................. 7
2.2 Herramientas y software................................................................................. 7
2.3 Mano de obra .................................................................................................. 7
3 Sumas parciales ....................................................................................................... 8
3.1 Componentes .................................................................................................. 8
3.2 Herramientas y software................................................................................. 8
3.3 Mano de obra .................................................................................................. 9
4 Presupuesto total ................................................................................................... 10
1 Recuento de recursos empleados
En esta sección se calculará la cantidad de recursos que se han dedicado al proyecto,
tanto materiales como de equipo, software o humanos.

1.1 Componentes
Estos son los elementos materiales necesarios físicamente para el proyecto.
Componentes Cantidad
Estructura de cuadricóptero con PCB 1
Motores brushless 4
Hélices 5030 10
Hélices 5030R 13
Batería LiPo 2s 0.95A 7.4V 3
Batería LiFe 3s 1500mA 9.9V 1
Emisor RC 9CH 2.4 GHz 1
Receptor RC CH 2.4 GHz 1
Emisora 9XR Turnigy 1
Resistencias 2
Condensadores 3
Diodo 1
Regulador de tensión 7805CV 1
Amplificador Operación TLC 272 1
Tarjeta de control HKPilotMega 2.7 1
Sensores infrarrojos 6

1.2 Herramientas y software


Estos son los demás elementos necesarios para la realización del proyecto que se han
empleado pero que no constituyen parte activa de él.
Horas de uso en el Horas de uso al
Elemento/Programa Cantidad
proyecto año
Ordenador 1 250 2000
Cargador de baterías 1 2 10
Cable USB-microUSB 1 5 200
Matlab/Simulink 1 200 1000
Microsoft Office 1 50 1000

1.3 Mano de obra


Por último, aquí se recogen las distintas tareas generales que se han realizado.
Actividad Horas
Diseño del control 50
Adecuación del entorno de simulación 50
Ensayos y depuración 300
Redacción de documentos 100
2 Costes unitarios
En esta sección se detallan los costes o precios de cada uno de los elementos
previamente analizados, por unidad.

2.1 Componentes
Componentes Coste (€/ud)
Estructura de cuadricóptero con PCB 24,75
Motores brushless 0,62
Hélices 5030 0,75
Hélices 5030R 0,75
Batería LiPo 2s 0.95A 7.4V 5,76
Batería LiFe 3s 1500mA 9.9V 7,16
Emisor RC 9CH 2.4 GHz 15,60
Receptor RC CH 2.4 GHz 22,95
Emisora 9XR Turnigy 45,20
Resistencias 0,145
Condensadores 0,54
Diodo 2,10
Regulador de tensión 7805CV 0,76
Amplificador Operación TLC 272 0,68
Tarjeta de control HKPilotMega 2.7 62,99
Sensores infrarrojos 13,95

2.2 Herramientas y software


Elemento/Programa Coste (€/ud)
Ordenador 800
Cargador de batería LiPo 39,12
Cable USB-microUSB 1,99
Matlab/Simulink 200
Microsoft Office 0

2.3 Mano de obra


Actividad Precio (€/h)
Diseño del control 45
Adecuación del entorno de simulación 45
Ensayos y depuración 60
Redacción de documentos 45
3 Sumas parciales
A continuación se calcula el coste total de cada uno de los tipos de recursos empleados.

3.1 Componentes
Componentes Cantidad Coste (€/ud) Coste total (€)
Estructura de cuadricóptero con PCB 1 24,75 24,75
Motores brushless 4 0,62 2,48
Hélices 5030 10 0,75 7,5
Hélices 5030R 13 0,75 9,75
Batería LiPo 2s 0.95A 7.4V 3 5,76 17,28
Batería LiFe 3s 1500mA 9.9V 1 7,16 7,16
Emisor RC 9CH 2.4 GHz 1 15,60 15,6
Receptor RC CH 2.4 GHz 1 22,95 22,95
Emisora 9XR Turnigy 1 45,20 45,2
Resistencias 2 0,145 0,29
Condensadores 3 0,54 1,62
Diodo 1 2,10 2,1
Regulador de tensión 7805CV 1 0,76 0,76
Amplificador Operación TLC 272 1 0,68 0,68
Tarjeta de control HKPilotMega 2.7 1 62,99 62,99
Sensores infrarrojos 6 13,95 83,7
Total 304,81

3.2 Herramientas y software


Para realizar el cálculo del coste de los bienes de equipo, herramientas y software
dedicados al proyecto se tiene en cuenta la proporción de horas destinadas al proyecto
frente a las horas totales de utilización de ese recurso. Para ello, se consideran las horas
de uso anuales y la amortización anual del precio.

La Ecuación (1) recoge la fórmula que rige el cálculo:

𝑡𝑡𝑝𝑝
𝐶𝐶𝑇𝑇 = 𝐶𝐶𝑢𝑢 · 𝑛𝑛 · · 𝑎𝑎 (1)
𝑡𝑡𝑎𝑎

Donde 𝐶𝐶𝑇𝑇 es el coste total, 𝐶𝐶𝑢𝑢 el coste unitario, 𝑛𝑛 la cantidad, 𝑡𝑡𝑝𝑝 el tiempo dedicado al
proyecto, 𝑡𝑡𝑎𝑎 el tiempo anual de uso, y 𝑎𝑎 la amortización, en tanto por uno.

Horas de uso Horas de Amortización Coste Coste


Elemento/Programa Cantidad
en el proyecto uso al año anual (€/ud) total (€)
Ordenador 1 500 2000 25% 800 50
Cargador de batería LiPo 1 40 10 15% 39,12 23,47
Cable USB-microUSB 1 10 200 10% 1,99 0,01
Matlab/Simulink 1 400 1000 100% 200 80
Microsoft Office 1 100 1000 20% 0 0
Total 153,48
3.3 Mano de obra
Actividad Horas Precio (€/h) Precio total (€)
Diseño del control 50 45 2.250
Adecuación del entorno de simulación 50 45 2.250
Ensayos y depuración 300 60 18.000
Redacción de documentos 100 45 4.500
Total 27.000
4 Presupuesto total
Recurso Coste (€) Porcentaje
Componentes 153,48 0,56%
Herramientas y software 304,81 1,11%
Mano de obra 27.000 98,33%
Total 27.458,29 € 100%

Reparto del coste por recursos

Componentes Mano de obra Herramientas y software

Figura 1. Gráfico del reparto del coste en función de los recursos.

You might also like