Aterrizaje Autónomo de Drones con IBVS
Aterrizaje Autónomo de Drones con IBVS
SEPTIEMBRE 2021
T RABAJO F IN DE G RADO
Aterrizaje de un Dron Autónomo con Perturbaciones
mediante Algoritmo de Visión
Septiembre, 2021
“A mind that is stretched by a new experience
can never go back to its old dimensions.”
Oliver Wendell Holmes, Jr
Agradecimientos
Han sido años duros en la ETSII, aunque echando la vista atrás se ven solamente momentos
agradables. No me arrepiento de haber escogido esta carrera, por todos las situaciones estresan-
tes que me ha hecho superar. Por lo que en primer lugar querı́a agradecer a la escuela por su
exigencia y por prepararme para poder superar de ahora en adelante retos complicados.
Este trabajo no serı́a posible sin la ayuda del grupo CVAR que encabeza D. Pascual Cam-
poy. Desde un primer momento me orientó perfectamente en todo lo que iba a necesitar y me
propuso este proyecto con el que yo estaba ilusionado. Dentro del equipo tengo que dar un espe-
cial agradecimiento a Miguel Fernández cuya ayuda ha sido muy estimable con este complejo
nuevo mundo de los drones y Aerostack. Siempre muy servicial y con una sonrisa en la cara.
Este camino no hubiese sido posible sin los descansos entre estudios, en los que muchas
personas me han ayudado a desconectar. Todas las personas que he conocido en la escuela, el
equipo de esgrima con los he viajado por todo el mundo, los veranos pasados en el pueblo, que-
dadas con mis amigos de toda la vida y muchas más personas que no caben en estas cortas lı́neas.
Por último, mencionar a los más cercanos, que gracias a ellos comencé esta aventura inge-
nieril, y, aunque haya casi más discusiones que buenas palabras, los quiero mucho.
5
Resumen
En este trabajo de fin de grado se presenta un sistema para aterrizaje autónomo de un cua-
dricóptero mediante un sistema de control visual Image-Based Visual Servoing (IBVS). Se
ha realizado dentro del Grupo de Investigación en Visión por Computador y Robótica Aérea
(CVAR), del Centro de Automática y Robótica (CAR) de la Universidad Politécnica de Madrid
(UPM).
La idea de la que nace este trabajo es de la competición del IMAV (International Micro Air
Vehicle) 2021 que se celebrará en México. Una de las pruebas consiste en aterrizar un dron
de forma autónoma en una plataforma mientras unos ventiladores soplan horizontalmente en
la zona donde el dron realizará la maniobra hasta posarse. Éste podrá servir como campo de
pruebas en que se podrı́a aplicar este sistema de control para llevar a cabo un aterrizaje exitoso.
La ventaja de un aterrizaje autónomo frente a uno teleoperado es que se elimina el posible error
humano y se automatiza el proceso de posarse en una superficie objetivo, incluso con perturba-
ciones.
Antes de tomar la decisión final de usar el control visual IBVS, se ha realizado un estudio
de otras opciones para afrontar el aterrizaje del dron autónomo. Ası́ se presentan otras alter-
nativas posibles como Position-Based Visual Servoing, Machine Learning o Model Predictive
Controller. Las principales ventajas por la que han decantado la elección de IBVS han sido su
bajo coste computacional y su eficacial.
El IBVS consiste en un control realimentado en el que la entrada son los errores de posición
en pı́xeles del objetivo en el marco de la cámara. La salida es la velocidad que se envı́a a los
actuadores para mover al dron, también llamado end-effector.
6
(a) (b) (c)
Figura 1: (a) Imagen del objeto en la posición inicial (b) Imagen del objeto en la posición
objetivo (c) Transformación de los vértices
Primero se realiza un pretratamiento de la imagen con OpenCV para obtener las caracterı́sti-
cas que más nos interesan de la imagen para trabajar con ellas: se hace filtro de color y se dilatan
los bordes. Se realiza a continuación la identificación de todas las figuras que se identifican y se
filtran por área y vértices para obtener la H. Por último, se unen lo vértices más externos para
encuadrarla, como se puede ver en verde en la figura 2.
Estos datos son utilizados en el control IBVS para obtener el error entre centros y obtener
la velocidad en los ejes x e y. De esta forma el dron se centra con la plataforma. La velocidad
de descenso se obtiene en función del área del rectángulo que encuadra la H.
La última parte del proyecto consiste en probar los programas realizados. Se hace uso del
entorno de simulación que ofrece Gazebo para crear un mundo en el que poder probar el dron.
Se comienza probando un aterrizaje sin perturbaciones para evaluar el correcto funcionamiento
de todos los programas y calibrar las ganancias. Para probar la eficacia y robustez de los algorit-
mos se experimentan distintas perturbaciones: plataforma en movimiento, carga extra y viento.
A lo largo de todas las pruebas se van recopilando datos y se comparan los resultados, mediante
7
la herramienta de Matlab.
Se ha podido probar la eficacia del algoritmo IBVS en los distintos escenarios. Se ha mos-
trado que es un control robusto, con un bajo coste computacional y con fácil portabilidad. El
mayor inconveniente reside en los giros bruscos en los que se produce una inclinación del dron
para el cambio de dirección y se balancea. Produce un movimiento de la cámara y se descentra
el rectángulo. Se podrı́a solucionar en un trabajo futuro utilizando una cámara giroestabilizada.
Existe un vı́deo resumen de todos los experimentos realizados en: [Link]
FfnEQFYtv6g. Todo el código utilizado: en Matlab, el proyecto con los archivos de Gazebo y
los programas de detección, control IBVS y plugins; se encuentran en el repositorio de github:
[Link]
8
Índice general
1. Introducción 11
1.1. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3. Estructura de la memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3. Herramientas software 21
3.1. ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2. Aerostack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3. Gazebo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4. OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.5. Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4. Fundamentos y desarrollo 25
4.1. Detección de la plataforma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1.1. Fundamentos teóricos . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1.2. Desarrollo práctico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.2. Image Based Visual Servoing (IBVS) . . . . . . . . . . . . . . . . . . . . . . 29
4.2.1. Fundamentos teóricos . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2.2. Desarrollo práctico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5. Experimentos y resultados 36
5.1. Sin perturbaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.2. Carga extra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.3. Plataforma en movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.4. Ráfagas de viento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.5. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
9
7. Planificación temporal y presupuesto 61
7.1. Diagrama de Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7.2. Presupuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
8. Bibliografı́a 63
Índice de figuras 67
Índice de tablas 68
Notación general 69
1. Introducción
1.1. Motivación
La robótica ha tenido una enorme evolución en las últimas décadas y sigue avanzando a
pasos agigantados. De esta forma se hacen realidad las pelı́culas de ciencia ficción que veı́amos
en el pasado.
Los drones son un claro ejemplo de esto por su popularidad estos últimos años, gracias a
su versatilidad y la gran cantidad de aplicaciones que tienen como por ejemplo transporte de
objetos, inspecciones, seguridad, uso militar o uso agroforestal. No se concibe una sociedad en
un futuro donde estos robots voladores no estén presentes.
Los vehı́culos aéreos no tripulados (VANT) o Unmanned Aerial Vehicle (UAV) son ae-
ronaves que vuelan sin tripulación. Pueden ser controlados a distancia por un piloto o estar
programados para realizar funciones de forma autónoma. Su origen es militar y se remonta a la
Primera Guerra Mundial (1914-1918). Reino unido construyó en 1916 el primer VANT contro-
lado por radio y servı́a como blanco de entrenamiento o como defensa de zepelines, el “Aerial
Target”.
Se siguieron usando en el ámbito militar obteniendo su mayor desarrollo a finales del siglo
XX cuando fueron operados por radiocontrol, demostrando su eficacia en las Guerras del Golfo
(1990-1991) y de Bosnia (1992-1995). Tras la caı́da del muro de Berlı́n (1989) se comenzó a
desarrollar la tecnologı́a militar para la industria civil y los drones se hicieron un hueco en el
mercado poco a poco.
Actualmente, grupos como CVAR (Computer Vision and Aerial Robotics) de la UPM (Uni-
versidad Politécnica de Madrid) compiten para mejorar las prestaciones que nos pueden dar. De
esta forma se abren nuevas lı́neas de investigación y se consiguen mejorar las capacidades de
los drones.
Una de esas competiciones es el IMAV (International Micro Air Vehicle Conference and
Competition) 2021 de México [3], donde se propone una serie de pruebas relacionada con el
rescate tras una catástrofe natural. Un cuadrocóptero es ideal para la inspección por su tamaño,
velocidad y campo de visión, sin poner en riesgo vidas humanas. En esta competición se propo-
nen pruebas como inspeccionar una zona con poca luz o humo, evitar objetos en movimiento o
aterrizar con perturbaciones de viento para evaluar al dron de cada equipo. Esta última prueba
es la que ha motivado este trabajo, a la que se tratará de poner solución.
Esta técnica ha sido elegida para ser la solución del problema anteriormente mencionado,
aterrizaje autónomo con perturbaciones, por su eficacia probada en otros vuelos y su bajo coste
computacional. Más adelante explicaremos otras posibles opciones, las diferentes técnicas de
visual servo y sus ventajas e inconvenientes.
1.2. Objetivos
El objetivo final de este trabajo es llevar a cabo un algoritmo de visión para controlar del
aterrizaje autónomo de un dron en una plataforma objetivo. Para ello se deben de cumplir una
serie de subobjetivos que se enumeran a continuación:
Aprendizaje de las herramientas digitales necesarias con las que se van a trabajar más
adelante.
• Repaso y ampliación de los conocimientos de C++, para obtener soltura en la pro-
gramación con este lenguaje. Aprendizaje de OpenCV (Open Computer Vision), una
librerı́a que facilita la implementación de algoritmos de tratamiento de imágenes.
Creación del mundo simulado donde implementar el dron donde realizar las pruebas.
Ajustes necesarios para llevar a cabo el aterrizaje de forma exitosa. Realización de distin-
tas pruebas con varias perturbaciones para probar la robustez del algoritmo, modificando
ganancias y el mundo simulado.
Analizar los resultados a través de Matlab. Proponer futuras lı́neas de investigaciones para
continuar con el estudio.
El primer capı́tulo tras la introducción es el estado del arte. Se ponen en contexto algunas de
las últimas investigaciones en el sector de aterrizaje en drones e identificación de la plataforma.
Se explican brevemente las distintas opciones que se nos presentan mostrando sus ventajas e
inconvenientes.
A continuación se presentan las herramientas tecnológicas de las que nos hemos valido para
poder llevar a cabo el trabajo. Se explican los principios básicos para entender estas herramien-
tas al igual que los términos que se utilizarán más adelante para explicar el código.
Tras conocer el contexto del sector y la base software, se comienza a describir los algoritmos
llevados a cabo en el apartado de la metodologı́a. Éste se divide en dos partes: la detección de la
plataforma y el algoritmo de control visual para poder llevar a cabo el aterrizaje. En cada parte
se explican unos fundamentos teóricos y se muestra un esquema a modo de pseudocódigo para
explicar más visualmente el código en C++ que se puede encontrar en el repositorio de github
facilitado.
El siguiente apartado se dan las conclusiones a las que se ha llegado con la realización del
trabajo. Se añaden también unas lı́neas de investigación para continuar con este estudio en un
futuro.
En 2012, Lee et al [11] investigan sobre el aterrizaje y despegue de un UAV en una plata-
forma que se mueve mediante IBVS. Mediante esta técnica, el vehı́culo no tripulado sigue la
plataforma, generando una velocidad de salida en el mecanismo de control. Este proceso impli-
ca un bajo coste computacional ya que el IBVS no es tan sensible a la profundidad como otros
algoritmos de control basados en visión que reconstruyen una representación tridimensional
completa del objetivo.
En 2002, Enric Cervera [13] propone una alternativa frente al 2D y 3D monocular, haciendo
uso de una visión estéreo. De esta forma se se obtiene información sobre la profundidad sin
necesidad de un modelo geométrico. Se comprueba experimentalmente que este efecto de pro-
fundidad proporciona un mejor control de la técnica. Además se salvan los puntos de trabajo
singulares que tiene una sola cámara.
A partir del Image-Based control y del Position-Based control surge una combinación de
ambos en el hybrid control. Trata de obtener lo mejor de cada método y unirlos. Como ejemplo
se puede apreciar como en [10] se hace uso de esta técnica. Un dron con un brazo robótico es
capaz de coger barras en distintas posiciones y dejarlas en el lugar deseado con precisión.
Otra alternativa que trata de mejorar los controles de visión clásicos (IBVS y PBVS) es el
de 2 1/2 D visual servoing [15]. Una ventaja de este sistema frente al PBVS es que no nece-
sita de un modelo geométrico tridimensional del objeto. Frente al IBVS, este sistema asegura
un buen control de convergencia en todo el espacio de trabajo y una mejora de la estabilidad.
Sin embargo también presenta puntos en contra. Para un objeto no plano, son necesarios ocho
puntos para la generación de la matriz de transformación, frente a los cuatro necesarios en los
otros métodos. Otro problema es que es más sensible al ruido en la imagen.
En este último paper [18], se expone un método en Deep Reinforcement Learning (DRL),
que combina el deep learning con el reinforcement learning, para realizar el aterrizaje de un
cuadricóptero. El deep learning es otro proceso de machine learning que hace uso de una red
neuronal artificial compuesta por niveles jerárquicos. En el primer nivel la información que ob-
tiene es algo sencillo. En el siguiente nivel coge la información del anterior y lo combina y ası́
sucesivamente. De esta forma, por ejemplo, puede conseguir identificar un tipo de objeto si se
El método DRL pretende sustituir los otros métodos tradicionales de aterrizaje que con-
sisten en caracterı́sticas geométricas y sensores externos para el acercamiento a la plataforma.
Permitirı́a, con imágenes de baja resolución en la cámara que mira hacia abajo, identificar la
zona de aterrizaje. Para lograrlo, se ha usado un enfoque en Deep Q-Networks. La función Q
es la función de distribución acumulativa complementaria de la distribución normal estándar.
Es decir, Q(x) es la probabilidad de que una variable aleatoria normal estándar tome un valor
mayor que x. El objetivo de Q-learning es obtener un conjunto de normas que le digan al agente
qué acción tomar, encontrando una polı́tica óptima. Lo que quiere decir que maximiza el valor
esperado de la recompensa total sobre todos los pasos sucesivos.
En 2017, Riccardo Polvara et al. [18] descomponen el problema en dos partes diferencia-
das. La primera es la detección de la plataforma y la segunda, el descenso vertical. Hace uso de
un doble Deep Q-Networks lo que permite reducir los problemas de sobreestimación, que sur-
gen en ambiente complejos. Además se implementa un control proporcional-integral-derivativo
(PID), que permite corregir el error del sistema mediante una realimentación. La parte propor-
cional aplica más acción cuanto más lejos esté del valor deseado, la integral tiene en cuenta los
errores anteriores y el derivado reacciona a la velocidad de cambio del error.
En 2017, Rodriguez-Ramos et al. [20] presentan una comparación entre aterrizaje con Deep
Reinforcement Learning basado en DDPG y PBVS. Para ello se realizan distintas pruebas en
las que los dos sistemas han tenido éxito: plataforma se mueve a distintas velocidades lineal-
mente de forma periódica, en direcciones aleatorias dentro de una zona y linealmente en una
dirección. Se prueba como el algoritmo entrenado en simulación se extrapola fácilmente a la
realidad con distintos escenarios, sin necesidad de sensores externos adicionales [21]. Para ello
han sido necesarias unas 10 horas (más de 5000 episodios) de entrenamiento, aunque después
unas pocas horas se veı́a una mejora notable.
Con PBVS se realizan trayectorias más predecibles y tiene una mayor estabilidad y con RL
el dron es capaz de hacer maniobras más agresivas. En la última prueba, el vuelo con RL llega
a aterrizar con éxito cuando la plataforma va a 2 m/s, mientras que con PBVS la máxima velo-
cidad que alcanza es 1.5 m/s. Los dos enfoques han tenido una tasa de éxito similar en todas la
pruebas. El coste computacional en ambos sistemas no es elevado, aunque en RL es menor, al
no estar basado en la visión.
En 2017, Rodriguez-Ramos et al. [24] se publica una solución para la prueba del IMAV2016
en la que se usa un sistema sencillo pero aplicable a vuelos reales. En el primer experimento
el dron sobrevuela la trayectoria lineal periódica de la plataforma, va bajando y predice el mo-
mento para aterrizar. En el segundo experimento el dron estima la trayectoria de la plataforma,
mediante un modelo de velocidad constante, selecciona un punto y se queda sobrevolándolo a
la espera de que pase ésta para a realizar un aterrizaje rápido. El cálculo de la altura se realiza
con un altı́metro y un 1D-LIDAR.
En el MBZIRC los mejores equipos conseguı́an realizar el aterrizaje en 30s. después del
despegue. La mayorı́a de los equipos tomaron una solución de optimización de tiempo con un
Model Predictive Controller [25]. De esta forma se estimaba la trayectoria del camión y se
calculaba la trayectoria óptima para alcanzar el objetivo. En el momento que está cerca de la
plataforma se realiza una estimación más precisa con un control por visión 3D, para un aterri-
zaje más seguro [26] [27].
En 2016, Alessandro Rucco et al.. [29] crean una optimización de trayectoria en 3D toman-
do la dinámica y cinemática de un dron y un vehı́culo terrestre. Esta trayectoria que se seguirı́a
para llegar al punto en el que se encontrarı́an, tendrı́a en cuenta las perturbaciones de viento,
mediante un ı́ndice de agresividad en el ambiente problemático. De esta forma se podrı́a hacer
una trayectoria hacia el vehı́culo terrestre más agresiva o suave, variando ası́ también el tiempo
de vuelo.
En 2014, Kevin Ling et al. [28] proponen un experimento en la que un UAV realizase un
aterrizaje en una embarcación con perturbaciones de viento y marea. Primero el UAV hace un
primer acercamiento al objetivo con GPS y magnómetro. Cuando localiza la plataforma de ate-
rrizaje cambia a un sistema de control de sensores de visión con la unidad de medida inercial,
para tener más precisión y estar dentro del marco de un cuerpo fijo inercial. Éste es capaz de re-
chazar las perturbaciones del viento sin ningún requisito de estimaciones de estado en el marco
inercial. Los resultados muestran errores mayores a medio metro, por lo que son relativamente
elevados.
En 2015, Gautam et al. [30] parten de una localización GPS estática o en movimiento cono-
cida, que es trasmitida periódicamente. Una vez localizado, hay dos tipos de bucles que pueden
ir integrados o separados. El de entrada controla el control del UAV en función de la aceleración
generada en el de salida. El de salida se usa para estrategias de guiado. Se trata el control de
navegación tanto en 2D como en 3D.
En 2014, Wang Kai et al. [31] proponen un guiado adaptativo de navegación proporcional
basado en un control de retroceso (backstepping). En simulación se ha probado que el guiado
lleva el UAV a la zona de aterrizaje pero la red de recuperación se ve muy afectada por las
interferencias y el proceso de control de trayectoria es muy largo, lo que se verı́a más afectado
por el viento.
Por último, se aplica un algoritmo de Speeded-Up Robust Features (SURF) por el que se ob-
tienen unos puntos caracterı́sticos y se comparan con una imagen de la H ideal. Una vez se tiene
la H identificada, se puede encuadrar con una función de OpenCV. En SURF se hace una con-
volución de la imagen por cuadrados y mediante una matriz Hessiana se encuentran los puntos
de interés al ser ésta una expresión del cambio local en las propiedades de la imagen alrededor
de un área. El método SURF es ampliamente utilizado, por ejemplo, para el reconocimiento de
objetos, caras o personas.
En 2017, Cosimo Patruno et al. [33] optan por otro tipo de algoritmo, con buenos resulta-
dos también. El pretatamiento de la imagen consiste en transformarla a escala de grises, hacer
borrosa la imagen, usar un filtro para eliminar ruidos y aumentar el contraste de la imagen. A
continuación se identifica cada forma, se selecciona la de menor área, en la que el centroide del
cı́rculo y la H sean cercanos y que sea invariante el ratio área-perı́metro respecto la rotación o
la escala. Por lo tanto, los últimos contornos que quedan son el cı́rculo y la H, que segmentando
por umbralización se obtienen los bordes.
Después se realiza un filtro con los 12 vértices que tiene la H, pero para evitar falsos po-
sitivos se aplica una computación de radio de curvatura a cada pı́xel del contorno y una com-
paración euclı́dea de la distancia real. Se agrupan las esquinas estimadas en pares con el punto
medio entre las dos. Por último, se unen estos 6 puntos medios, obteniendo lı́neas con las que
se obtienen los ejes y una estimación más precisa de las esquinas.
3. Herramientas software
Como se ha comentado anteriormente, ha sido necesario aprender nuevas herramientas in-
formáticas para llevar a cabo la realización de este trabajo de fin de grado. Conocer lo que son
estas herramientas, cómo se interconectan los algoritmos y dar nombres a las partes de estruc-
tura y funciones es importante para comprender el resto del documento.
3.1. ROS
El sistema operativo de robots (ROS) [5] es un marco de desarrollo software para robots.
Su objetivo es el de facilitar la tarea de programar una estructura de robots compleja gracias a
sus herramientas y librerı́as. Se abarcan una gran variedad de proyectos por su gran cantidad de
librerı́as.
Únicamente está disponible en sistemas operativos Linux. Su código es abierto, lo que per-
mite al usuario modificarlo, fomentando la colaboración software. Se fomenta el desarrollo en
conjunto, gracias a la cantidad de proyectos que se comparten y robots creados que se pueden
utilizar.
Se estructura con paquetes que deben contener dos archivos: [Link] y [Link].
Contienen metainformación sobre el paquete y crean una estructura en árbol. ROS permite pro-
gramar en distintos lenguajes: C++, Python, Octave y LISP. En este trabajo se ha usado C++
para la realización de los algoritmos.
Nodos: son los procesos que ejecutan la comunicación y contienen la información. Están
interconectados entre sı́ compartiendo mensajes. Pueden tener varios tópicos o servicios.
Tópicos: son el medio que utilizan los nodos para comunicarse entre sı́. Hay dos tipos:
publishers,mandan o publican mensajes, y subscirbers, obtienen o subscriben datos.
Mensajes: son los tipos de datos que se publican o subscriben entre tópicos.
Servicios: es otra forma en la que los nodos pueden comunicarse. En este caso tienen un
mensaje de petición y otro de respuesta.
ROS Master: es un mecanismo que usa ROS para interconectar todos los nodos,
Por último, cabe mencionar herramientas importantes que se usan a lo largo de este trabajo
de fin de grado que son muy útiles:
rqt graph: muestra la estructura en árbol en la que se interconectan los nodos. Hace muy
visual y cómodo el tener un mapa de todos los tópicos y en qué sentido publican o subs-
criben información.
Figura 3.1: Ejemplo de estructura generada por ROS mediante rqt graph
rosbag: permite almacenar un historial de los datos que publica cada tópico, para poderlos
analizar los resultados más fácilmente más adelante.
3.2. Aerostack
Aerostack [6] es un framework que facilita el desarrollo de aplicaciones de robots aéreos.
Tiene una gran cantidad de soluciones de visión por computador, mapeo, localización... Es una
herramienta a tener en cuenta en el diseño de nuevos algoritmos en UAVs.
Nació en 2013 por el grupo CVAR tras tener más de 20 años de experiencia en el sector. Es
un software propio del grupo que se sigue desarrollando y mejorando a dı́a de hoy. Aerostack
permite operar en ROS Melodic en Ubuntu 18.04, versiones utilizadas en este trabajo de fin de
grado.
Aerostack está basado en ROS, utilizando el mismo sistema de nodos para estructurar los
algoritmos. Es una plataforma muy flexible por sus diversas aplicaciones que aumentan cada
dı́a con el trabajo del grupo. Permiten vuelos teleoperados y autónomos y con un solo dron
o con un enjambre. Otra ventaja de esta plataforma es su independencia del hardware, por lo
que puede operar con una gran cantidad de drones distintos al centrarse en el software. Cada
componente del código se puede ejecutar a través de un ordenador a bordo o con un ordenador
a tierra mediante una red LAN o WIFI.
3.3. Gazebo
Gazebo [7] es un simulador 3D de robots de código abierto. Este software permite diseñar
robots y mundos, testearlos y evaluarlos. Gazebo se sincroniza con ROS de forma sencilla. Al
arrancar la simulación se inicializa un nodo de Gazebo, del que, uno de sus tópicos será /clock
al que se subscribirán todos los nodos y llevará el tiempo de simulación.
Este simulador se compone de mundos en los que se pueden implementar distintos mode-
los. Utiliza programación en SDF o URDF, un lenguaje de programación intuitivo que ofrece
muchas posibilidades para modificar distintas caracterı́sticas. Cada caracterı́stica consta de una
serie de etiquetas XML.
Además existen plugins, que son unas herramientas que permiten enviar mensajes a mo-
delos de Gazebo a través de ROS. Estos programas abren más aun la posibilidad de modificar
caracterı́sticas del mundo o del modelo. Algunos ejemplos de su utilidad es poder enviar una
fuerza a un modelo del mundo o hacer que se muevan a una velocidad constante.
3.4. OpenCV
OpenCV [34] es una librerı́a especializada en el tratamiento de imagen ampliamente co-
nocida, por todas las aplicaciones que tiene. Cuenta con más de 2500 algoritmos optimizados.
Gracias a esta librerı́a es posible obtener una enorme cantidad de información de una imagen o
vı́deo de una manera muy cómoda.
Esta librerı́a se ha utilizado para detectar la plataforma de aterrizaje con las imágenes que se
obtienen de una cámara cenital del dron. Más adelante se hablará con más detalle del algoritmo
usado.
3.5. Matlab
Matlab [35] es un entorno de programación y cálculo matemático. Es ampliamente cono-
cida por la enorme cantidad de aplicaciones con su gran diversidad de herramientas como por
ejemplo Simulink, app designer o pid tuner.
Es muy útil para analizar datos, desarrollar algoritmos y crear modelos. Es por esto que se
ha usado en este estudio, para trabajar con los datos obtenidos de la simulación de una forma
cómoda. De esta forma se puede extraer la información y analizar los datos para obtener las
conclusiones.
Este software cuenta con toolbox, que es un conjunto de funciones que proveen algoritmos
para facilitar el trabajo en un cierto ámbito. En este caso, se ha instalado la ROS toolbox, que
facilita la transformación de datos almacenados en un archivo creado mediante un rosbag y tra-
bajar después con ellos. Ası́ se ha podido obtener gráficas de las que extraer información de
cada uno de los experimentos, la función para extraer la altura y los vectores con todos los datos
a tratar
4. Fundamentos y desarrollo
Se diferencian dos partes en las que se usan algoritmos distintos que se interconectan me-
diante la estructura de nodos creada por ROS: la detección de la plataforma de aterrizaje y el
control IBVS para realizar el aterrizaje.
Al ser un control visual, todo lo que se detecta con la cámara afecta directamente al resto del
control, por lo que es importante identificar correctamente las esquinas para que el algoritmo
tenga un buen comportamiento más adelante.
Una vez recibida una imagen se debe realizar un preprocesado antes de llevar acabo el trata-
miento de ésta. Este preprocesado sirve para quitar ruidos y subrayar las caracterı́sticas que nos
interesan. El tipo de preprocesado dependerá de la situación en la que se tomen las imágenes y
del tratamiento que se hará a continuación.
Algunos ejemplos comunes de efectos indeseados que se podrı́an encontrar son vibraciones,
imágenes borrosas por la velocidad o cambios de luz. Al realizar este trabajo en simulación no
se tiene este tipo de problemas, pero habrı́a que tenerlo en cuenta a la hora de llevarlo a la reali-
dad. Esto se intensifica si se decide realizar un ensayo en exterior.
Una imagen está formada por pı́xeles que toman un valor distinto en función del color. De
esta forma se desarrollan funciones que, con esos valores, pueden obtener un color determinado
de la imagen. Se puede saber cuando hay un gran salto de color y obtener un contorno. Éstas
son algunas de las opciones que te facilita la librerı́a OpenCV, una librerı́a muy extendida para
el tratamiento de imagen.
El modelo de color HSV es muy útil para realizar filtros de color. HSV son las siglas de Hue,
Saturation y Value que signifcan Matiz, Saturación y Valor en español. Este modelo deriva del
ampliamente conocido RGB (Red Green Blue) usado en los monitores.
Se crea una clase que contiene variables que se utilizarán como mensajes entre nodos a
través de los publishers y subscribers que contiene. Tiene el constructor y destructor de la clase
y del display que se genera para poder observar en pantalla lo que captura la cámara en tiempo
real. Los dos subscribers que pertenecen a la clase son para obtener las imágenes de la cámara y
sus parámetros caracterı́sticos. Los dos publishers sirven para publicar en el display de la cáma-
ra y enviar el vector con las esquinas y la información de la cámara. En la figura 4.2 se presenta
un esquema simplificado del sistemas de nodos que se ha obtenido mediante la herramienta
rqt graph.
El grueso del código pertenece al tópico que se subscribe al nodo de la cámara que captura
las imágenes. Se crea el puente que une OpenCV y se obtiene la imagen que capta la cámara en
cada momento. Se transforma de RGB a HSV para realizar un filtro de color. Para obtener el co-
lor deseado se han diseñado unas barras deslizantes con las que se ha podido calibrar y obtener
el color deseado. Al ser la H negra sobre fondo blanco, ha sido sencillo obtener el color objetivo.
Se obtiene una imagen con solamente la H central y el cı́rculo que la rodea. Se dilatan los
bordes mediante una función de OpenCV para evitar que dos lı́neas no se terminen de cortar
o que los bordes de la H no queden tan marcados tras el filtro de color. Esta imagen dilatada
se envı́a a una función con la que se obtiene el rectángulo que encuadra la H que se explica
más adelante. A continuación se dibuja un rectángulo que representa el lugar objetivo en la que
debe quedar encuadrada la H antes de terminar el aterrizaje. Por último en este tópico, se ac-
tualiza el display y se publican mediante un publisher en el display de la cámara para dibujar
los rectángulos (en azul el ideal y en verde el real). El segundo tópico publica el vector que se
utilizará en el control IBVS con las esquinas y los parámetros caracterı́sticos de la cámara.
contornos se filtran por vértices (12 que tiene una H) y por área (la menor, ya que el encuadre
del cı́rculo es mayor que el de la H). De este bucle se obtiene el ı́ndice del contorno que cumple
con las condiciones anteriores con el que se dibuja el encuadre y se almacena sus esquinas en el
vector que se publicará. Este proceso de tratamientos de imágenes queda reflejado en la figura
4.3
Figura 4.3: Tratamiento de la imagen: imagen recibida, transformación a HSV, filtro color,
dilatación bordes, detección contornos y vértices, filtro área y vértices, encuadre final y en el
entorno de simulación con rectángulo ideal
El Image Based Visual Servoing inicialmente se usaba para brazos robóticos en el ámbi-
to industrial, sobre todo en cadenas de fabricación. Al comprobar el buen comportamiento del
algoritmo y el desarrollo de los drones en los últimos años, se ha extendido a este sector con
resultados satisfactorios.
Eye-to-hand: la cámara es externa al actuador, estando fija en algún lugar desde el que
obtiene la imagen del objetivo y del actuador.
En este trabajo se va a tratar el caso de eye-in-hand, es decir, que la cámara está en el robot
que controla, o dicho de otra forma, junto al end-effector, ya que se encuentra unida al dron
en su parte inferior. De esta forma se obtiene una vista cenital de la plataforma a identificar en
tiempo real.
error. En el eje x e y, este error será la distancia a la que se encuentra el centro de la zona de
aterrizaje medido del ideal, medido en pı́xeles. En el eje z, será la diferencia de áreas entre la H
encuadrada y un rectángulo en el que deberı́a encontrarse cuando está cerca de la plataforma.
Es importante remarcar las mayores ventajas e inconvenientes de este sistema. Una de las
ventajas consiste en que, al ser un control visual, solamente es necesario tener una cámara para
poder llevar a cabo el objetivo sin necesidad de ningún otro sensor. Con lo que no habrı́a pro-
blemas de interconexiones con otros sensores y solamente habrı́a que controlar con exactitud un
sensor. Otro punto a favor es que, es un algoritmo sencillo, por lo que el coste computacional es
mı́nimo. Por lo tanto, el bucle ocurre cada muy poco tiempo y se puede dejar opción a realizar
otras funciones mientras se realiza la misión mediante IBVS.
Antes de comenzar con la formulación de IBVS es importante aclarar que existen dos siste-
mas de referencia o marcos distintos, donde se encuentra la cámara y en el centro de gravedad
del dron, como se refleja en 4.6. Por lo tanto habrá que realizar una transformación que ex-
plicaremos más adelante. Los sufijose se refieren al marco de control del dron (end-effector),
mientras que los sufijosc , al marco de la cámara.
Figura 4.6: Sistemas de referencia del marco del dron y del marco de la cámara. Fuente: [38]
Al usar solamente un sensor, la cámara, será necesario tener una buena calibración de la
misma conociendo todos los parámetros tanto intrı́nsecos como extrı́nsecos. Con ellos será po-
sible obtener la proyección 2D (x,y) en la imagen de los puntos del mundo en 3D (X,Y,Z). Los
parámetros intrı́nsecos son aquellos que hacen referencia a la estructura de la cámara interna-
mente, es decir, la distancia focal (Fx ), el tamaño del pı́xel (Fy ) o el centro óptico (Cx ,Cy ). Estos
parámetros pueden ser obtenidos una sola vez, ya que son constantes independientemente de la
posición del dron. En la ecuación 4.1 se muestra la relación entre estos puntos 2D y 3D y con
los parámetros de la cámara y los puntos en pı́xeles u y v.
x = X/Z = (u − Cx )/Fx
(4.1)
y = Y /Z = (v − Cy )/Fy
Una vez obtenida la posición en el plano de la imagen, para conseguir la velocidad se derivan
estas expresiones cuya ecuación es 4.2
ẋ = Ẋ/Z − X Ż/Z 2 = (Ẋ − xŻ)/Z
(4.2)
ẏ = Ẏ /Z − Y Ż/Z 2 = (Ẏ − y Ż)/Z
Se representa en la ecuación 4.3 la relación entre las velocidades en 3D y las velocidades en
el marco de la cámara en 2D.
Ẋ = −vx − ωy Z + ωz Y
Ẏ = −vy − ωz X + ωx Z (4.3)
Ż = −vz − ωx Y + ωy X
ṡ = Lc vc (4.7)
Esta matriz de interacción también se puede representar en polares mediante las variables θ
y ρ que tiene se relacionan directamente con x e y 4.9.
−cosθ/Z −sinθ/Z ρ/Z (1 + ρ)sinθ −(1 + ρ)cosθ 0
L(θ,ρ) = (4.8)
sinθ/(ρZ) −cosθ/(ρZ) 0 cosθ/ρ sinθ/ρ −1
p
ρ = x2 + y 2
(4.9)
θ = arctan(y/x)
Los parámetros extrı́nsecos son las matrices de rotación (c Rn ) y traslación (c tn ) de los puntos
3D en el marco de la cámara al marco del dron como se ha visto en la 4.6. Esta transformación
convierte los ejes con los sufijose a los ejes con los sufijosc . Por lo tanto, una vez obtenida la
velocidad en el marco de la cámara se puede transformar al marco del dron o end-effector con
las fórmulas 4.11
c c
c Rn tn × c Rn
Ve = c (4.10)
0 Rn
vc = c Ve ve (4.11)
De la fórmula 4.7 la variable ṡ es equivalente al valor del error por una ganancia como se
representa en la fórmula 4.12. Para convertir ese error en una velocidad.
ṡ = −λe (4.12)
Este error e es la diferencia de caracterı́sticas visuales, que se explican a continuación, ob-
tenidas de la imagen: s (real) y s* (deseada). Esta es la entrada de nuestro control.
e = s − s∗ (4.13)
Las coordenadas del plano imagen conforman una serie de caracterı́sticas visuales que
van a ser útiles para el algoritmo forman el vector s = (ng x , ng y , na , arctan(1/ρ)). Cada
término se explica a continuación
De esta forma, se llega a la ecuación final que va a ser usada en nuestro controlador 4.14 en
la que en Ls es equivalente a Lc , pero tiene en cuenta además la rotación y traslación entre ejes
de la cámara y del dron. λ es la ganancia que se ajustará experimentalmente con las pruebas en
simulación.
v = −λLs e (4.14)
Obtención de la altura
Como se ha comentado en el apartado de estado del arte, existen papers en los que se han
hecho algoritmos de aterrizaje que unen un control visual 2D para centrar en x e y y luego ha-
cen uso de un altı́metro para el control de la altura. En este trabajo se ha querido desarrollar un
control visual puro, es decir, haciendo solamente uso del sensor de la cámara para obtener toda
la información necesaria para llevar acabo una tarea con éxito.
El proceso a seguir para llevar a cabo el control ha sido desarrollar un algoritmo IBVS para
centrar la H encuadrada, olvidándose de la altura. A continuación probar su eficacia haciendo
uso del altı́metro para realizar los aterrizajes. Por último, obtener la altura en función del área
de la H encuadrada, que es lo que se va a exponer a continuación.
Se ha hecho uso de la función rosbag para obtener la información obtenida en el nodo ante-
rior, de detección del cuadrado de la H y del nodo del altı́metro. Estos datos se han obtenido en
un aterrizaje evitando un final brusco, para tener un muestreo constante. Se han transformado
para poder tratar los datos con Matlab, mediante un script. Se han filtrado por tiempo desde que
empieza a descender hasta que toca con la plataforma.
Se correlaciona la altura en metros con el área del rectángulo en pı́xeles cuadrados. Por
último se hace una aproximación polinómica para obtener la altura en función del área. Este
ajuste polinómico, se realiza dividiendo el Área entre 10000 por problemas de redondeo de
Matlab y que esté, ası́, mejor condicionada. A la hora de pasarlo al programa, será necesario,
también, dividirla antes de sustituir en el polinomio. El polinomio obtenido es el menor grado
posible, que mejor se ajustase lo suficiente a la real, para realizar los menores cálculos posibles
durante la ejecución del algoritmo.
Figura 4.7: Gráficas del proceso de obtención del polinomio que correlaciona la altura con el
área del rectángulo que encuadra la H
De esta forma, no es necesario utilizar ningún sensor externo, a parte de la cámara, para
que el algoritmo funcione. Se aprovecha la mayor ventaja que provee el IBVS, obtener toda la
información de imágenes y su escaso gasto computacional. Es portable a otro dron con la mis-
ma cámara, ya que ya está ajustada en función de la altura. Si no, tan solo, habrı́a que conocer
los parámetros de ésta y ajustar la función de correlación altura-área para que el algoritmo siga
funcionando sin problemas.
Código
En este apartado se va a explicar el código desarrollado para realizar el control IBVS. En
esta ocasión el código es más simple, aunque ha sido más costoso de realizar debido a la gran
cantidad de cálculos que han sido necesario usar. Además de los cálculos teóricos se ha de-
sarrollado numerosos ajustes experimentales como en la ganancia. Estas calibraciones se han
realizado publicando mensajes para conocer los valores y analizar qué valor modificar para ob-
tener un mejor comportamiento durante el vuelo.
El código comienza, como es habitual, con la declaración de las librerı́as que serán ne-
cesarias para el correcto funcionamiento del programa. A continuación se declaran variables
globales que se usarán a lo largo del código.
De nuevo se declara una clase que contiene las variables que se usarán para obtener la in-
formación del subscriber que pertenece también a la clase. Este subscriber obtiene los valores
que se enviaban en el anterior nodo explicado en el apartado anterior contenidos en un vector.
En el suscriber se comprueba que vector no esté vacı́o antes de obtener la información, para
que si se pierde la H el dron se pare y no se descontrole. Esa función la cumple el enable como
veremos más adelante. Si contiene valores, estos se almacenan obteniendo las esquinas, las dis-
tancias focales, los puntos principales y las dimensiones de la imagen.
La mayor parte del programa se encuentra en el main donde se inicializa el nodo y se declara
la clase. A continuación se declara el publisher que mandará la velocidad al dron, nuestra salida
del controlador. Para que la estructura de nodos funcione, es necesario activar el servicio que
activa el modo velocidad. Si estuviese el dron en modo posición, interpretarı́a la velocidad que
se le envı́a como una posición a la que llegar. Se completa la estructura anterior de nodos con
los utilizados en esta sección en la figura 4.8.
de la imagen de cada cámara. Se obtiene también la altura con la función vista en el apartado
anterior.
Se calculan los errores de cada uno de los ejes, la entrada de nuestro sistema de control, y
que se realimentarán. Los ejes x e y toman la diferencia de pı́xeles entre centros de los rectángu-
los real e ideal. El eje z el error es la diferencia entre la altura calculada y la superficie de la
plataforma a 0.2m. Estos errores sirven para calcular la velocidad multiplicados por una ga-
nancia que se calibra mediante distintas pruebas en simulación. El error en z se divide por una
constante evaluada experimentalmente al estar en otras unidades e influir en la velocidad de los
ejes x e y. En el cálculo de estos errores y velocidades se tiene en cuenta que la cámara no tiene
los mismos ejes que el dron, por lo que se aplica una matriz de rotación implementada en las
ecuaciones usadas.
Antes de mandar la velocidad al UAV, se tienen en cuenta una serie de situaciones para
controlar el descenso. Si el rectángulo que encuadra la H no está en la zona central, el dron
no comienza el descenso para no dejar fuera de cámara el rectángulo por estar en un extremo.
Cuando el dron se encuentra a una altura crı́tica en la que la H se deja de identificar correcta-
mente y se encuentra cerca de la plataforma, se aumenta la velocidad de descenso drásticamente
para terminar la maniobra de aterrizaje. Una vez realizadas estas correcciones se publican las
velocidades.
En la figura 4.9 se puede ver un esquema que explica el código de una forma simplifica-
da, resume lo explicado anteriormente. Si se quiere analizar con más detalle se puede consultar
en el repositorio de github en que se encuentra todo el código usado en este trabajo: https://
[Link]/LuisDelbergue/TFG/blob/master/ROS/catkin_ws/src/Detector_
esquinas/src/ibvs_luis.cpp
5. Experimentos y resultados
Una vez explicado todo el procedimiento llevado a cabo para realizar el código, se procede a
presentar las pruebas realizadas en el entorno de simulación de Gazebo. Se ha creado un mundo
simulado con una plataforma de aterrizaje de 60x60x20 y se ha añadido una ”textura” o una
capa de color de una H para poder identificarla. El dron iris con el que se va a trabajar ya está
modelado y solamente se ha colocado en el centro del mundo simulado.
Al lanzar el archivo ejecutable de la simulación, éste arranca el ROS Master que interco-
necta todos los nodos necesarios para el correcto funcionamiento de la estructura software. A
continuación se ejecuta otro archivo con el que se controla el movimiento del dron con un PID.
Antes de iniciar los experimentos se activa una misión que conduce al dron a tres metros por
encima de la plataforma listo para activar el algoritmo y comenzar el aterrizaje.
Para evaluar el comportamiento del algoritmo y ser riguroso a lo largo de todos los expe-
rimentos, se van a evaluar las mismas gráficas y datos. Se tomará la posición y velocidad del
UAV en cada momento del vuelo, el error entre la posición real e ideal del centro de la imagen,
el error cuadrático medio de la posición en trayectoria, que se explica a continuación. De esta
forma se tiene un estudio completo con el que se obtiene una imagen general de la calidad de
funcionamiento del aterrizaje entre las distintas pruebas.
Hay que remarcar que se han realizado un número de pruebas limitadas debido al elevado
tiempo que tarda cada ejecución de la simulación. Por lo tanto la precisión es menor que a la
que se podrı́a llegar con una mayor cantidad de experimentos. Algunos de los vuelos que se han
usado para este estudio se pueden ver en: [Link] Se sigue
el orden en el que se han realizado las pruebas de dificultad creciente y que se sigue en este
trabajo : sin ninguna perturbación, añadiendo una carga extra, moviendo la plataforma a una
velocidad lineal constante y añadiendo viento.
Se analiza en esta primera parte un aterrizaje con unas ganancias no muy elevadas (Kx =Ky =0.006
y Kz =0.015), para tratar de tener un error bajo y con una tasa de aterrizaje sin fallo.
En la figura 5.1 podemos ver un conjunto de gráficas obtenidas del nodo creado para iden-
tificar y encuadrar la H, por lo tanto, la información que obtenemos es sobre las imágenes que
captura el sensor de la cámara. En la gráfica más a la derecha, se puede ver cómo se desplaza el
rectángulo que encuadra la H desde la perspectiva de la cámara. Como el resto de pruebas rea-
lizadas, el vuelo se realiza desde una posición inicial muy desfavorable, en el extremo inferior
derecho. Termina en la posición deseada, en el centro de la imagen.
Figura 5.1: Gráficas del error en la imagen en aterrizaje sin perturbaciones con ganancia baja
En la figura 5.2 se representan gráficas obtenidas del nodo que obtiene la posición del dron
en cada momento. Aunque no se utiliza en el control del dron, es un sensor que existe en la
simulación para obtener información muy útil que se va a analizar a continuación.
En verde se puede ver la posición final ideal en la que deberı́a terminar aterrizado el UAV.
En la columna de la izquierda aparece representado el error cuadrático medio de la posición
representada en la segunda columna. De nuevo, según progresa el vuelo, este error disminuye
poco a poco, hasta acabar en el lugar deseado con un error en metros de 0.013 en x y 0.008 en y.
Aunque el error final en x es mayor, su error cuadrático es menor debido a que este parámetro
penaliza la suma de todos los errores y penaliza en mayor medida los errores graves. El RMSE
en x es 0.26 m y de 0.44 m en y.
En la columna final, se puede ver en la primera fila el valor de la altura en función del tiem-
po. Terminando a una altura de 0.2 m que es donde se encuentra la superficie de la plataforma.
En los primeros instantes no desciende debido a que se tiene que centrar previamente, luego la
velocidad es prácticamente constante y termina acelerando para terminar aterrizando. El vuelo
total en el que se realiza la maniobra es de 8.52 segundos. Por último, se puede ver una gráfica
en 3D que permite visualizar la trayectoria que realiza el dron desde su punto inicial hasta la
plataforma representada en rojo en la gráfica.
Figura 5.2: Gráficas de posición en aterrizaje sin perturbaciones con ganancia baja
El último conjunto de gráficas que se van a analizar de este vuelo es la figura 5.3. En ésta, se
representan las velocidades de cada uno de los ejes que ha alcanzado el dron en cada momento
de la misión.
En los ejes x e y, se puede observar como la velocidad va tendiendo a cero. Esto es debido a
que el error entre centros también disminuye y el control aminora la velocidad a la que debe ir
el cuadricóptero para centrarse. Termina siendo nula, porque cuando llega a una altura cercana
a la plataforma, el dron aumenta drásticamente su velocidad en z y anula la del resto de los ejes.
Figura 5.3: Gráficas de velocidad en aterrizaje sin perturbaciones con ganancia baja
En esta segunda parte se aumentan las ganancias(Kx =Ky =0.009 y Kz =0.04) del control pa-
ra realizar un aterrizaje exitoso en el menor tiempo posible. El objetivo es ver hasta que punto
se puede aumentar la ganancia mientras se sigue manteniendo una tasa aterrizajes realizados
dentro de la plataforma del 100 %.
En la gráfica de la izquierda, se puede ver que ya no es tan suave la reducción del error. Se
sobrepasa más veces la lı́nea del error nulo con picos más elevados. Además se puede ver como
aumenta el error cuadrático medio considerablemente, porque además de que los errores son
más elevados, estos errores son más graves. En este aterrizaje terminan en 57 y 100 pı́xeles en
x e y respectivamente. En otros vuelos han llegado a tener valores más elevados, teniendo una
media de 87 pı́xeles.
Una anomalı́a que se puede ver en la primera de las gráficas del error, es que antes del se-
gundo 6, en vez de descender el error, aumenta y vuelve a estabilizarse. Esto es debido a que en
las trayectorias que realiza la aeronave, ésta se inclina un ángulo y se producen balanceos en los
cambios de dirección. En este caso, fue un balanceo más brusco de lo habitual y el cuadrado en
la imagen no estaba centrado, a pesar de que el UAV se encontraba en una posición adecuada. A
pesar de este inconveniente, el control consigue corregirlo a tiempo y aterrizar de forma exitosa.
Figura 5.4: Gráficas del error en la imagen en aterrizaje sin perturbaciones con ganancia alta
En la columna central de la figura 5.5 se observa de nuevo como la trayectoria no es tan sua-
ve con menores ganancias. La posición oscila alrededor de la posición ideal en verde tanto para
la x como la y, hasta terminar la maniobra. Sin embargo, el RMSE no es más elevado, debido
que el gran error inicial se resuelve mucho más rápidamente que en el caso anterior. Termina
teniendo un RMSE de 0.24 y 0.42 metros en x e y respectivamente.
En la gráfica de la de la posición respecto del eje z se aprecia claramente que hasta que se
alinea con la plataforma no comienza a descender. En el segundo 6, se puede ver un pico, es
debido a que por un balanceo, se ha salido de la zona central y por tanto deja de descender. Esto
se puede comprobar en la primera gráfica de la figura 5.4, como se ha comentado anteriormen-
te. La diferencia de pendiente en la parte final de aterrizaje no es tan evidente, porque al tener
mayor ganancia la velocidad es mayor.
Con la gráfica 3D se puede tener una idea más general del aterrizaje. Se comprueba de
nuevo el movimiento horizontal para centrarse inicial y la trayectoria que sigue hasta terminar
posándose en la plataforma representada en rojo. Este aterrizaje ha sido de 6.5 s, por lo que
recorta dos segundos al anterior con menor ganancia.
Figura 5.5: Gráficas de posición en aterrizaje sin perturbaciones con ganancia alta
Las últimas gráficas que se comentarán en esta sección son las pertenecientes a la figura 5.6
donde se representan las velocidades. De nuevo, se ve como las gráficas son más bruscas que
en el primer caso y se alcanzan velocidades mayores debido a la mayor ganancia.
Ese pico visto en las dos primeras gráficas sucede igualmente en la tercera gráfica. A pesar
de haber superado la altura crı́tica y comenzar el descenso precipitado, se descentra el cuadra-
do y se pone a cero la velocidad de z de nuevo. Lo más probable es que el balanceo se haya
producido por el aumento súbito de velocidad de descenso porque se produce inmediatamente
después. Una vez estabilizado y centrado, retoma de nuevo la velocidad de -10 m/s para termi-
nar el aterrizaje en la plataforma.
Figura 5.6: Gráficas de velocidad en aterrizaje sin perturbaciones con ganancia alta
El dron modelado tiene un peso de 2.15 kg, por lo que 1 kg extra equivale a un 46.5 % más
de peso. En la simulación, aumentando más el peso no consigue despegar el dron, por lo que 1kg
es el peso máximo con lo que puede volar el UAV. A pesar de esto, el algoritmo consiste en una
realimentación con la que corrige el error y manda una velocidad proporcional. Esta velocidad
es enviada a un PID que controla el dron, por lo que vuelve a ser otro algoritmo realimentado.
Éste será el encargado de corregir el error añadido por la carga extra en la medida de lo posible.
Como en el apartado anterior realizamos dos pruebas distintas, debido a que todas las prue-
bas han alcanzado un aterrizaje exitoso. La primera consiste en una ganancia baja (Kx =Ky =0.006
y Kz =0.03), disminuyendo el error progresivo, frente a un aterrizaje más rápido y brusco con
una ganancia más elevada (Kx , Ky =0.01 y Kz =0.04).
Figura 5.7: Gráficas del error en la imagen en aterrizaje con carga extra y ganancia baja
Por último, en la columna de la derecha se ve la trayectoria que realiza en dron en tres di-
mensiones y su trayectoria en z. Hay que destacar el tiempo de vuelo en el que se realiza el
aterrizaje que se reduce en 2 segundos respecto la prueba sin perturbaciones. Al tener el UAV
más peso, desciende en menos tiempo, 6.8 segundos.
Como en el resto de vuelos, se aprecian las tres fases de descenso en las gráficas. En la
primera se centra sin descender, a continuación baja de forma constante y termina acelerando
para precipitarse cuando se encuentra a poca distancia de la altura de la plataforma (0.2 m).
En la figura 5.9 se analizan los últimos datos de esta prueba. La velocidad del eje x y del eje
y comienzan con un pequeño pico cuando se activa el control IBVS. Se reducen las velocidades
poco a poco según el error entre los centros del rectángulos ideal y real, se reduce también.
Figura 5.8: Gráficas de posición en aterrizaje con carga extra y ganancia baja
Figura 5.9: Gráficas de velocidad en aterrizaje con carga extra y ganancia baja
Esta segunda parte de este apartado está focalizada en un vuelo más agresivo con una ganan-
cia más elevada. Esto se observa en la figura 5.10 en la que el error en pı́xeles oscila alrededor
del error nulo con picos, hasta terminar anulándose. Estos errores denotan una trayectoria de
corrección más agresiva que en el caso anterior.
Otra prueba de esta ganancia elevada es el error cuadrático medio, que aumenta conside-
rablemente debido al peso. Aumenta más respecto al aterrizaje de ganancia baja porque las
maniobras son más bruscas. Termina con un RMSE de 103.3 pı́xeles en el eje y y de 64 pı́xeles
en el eje x, datos más elevados que en el caso anterior.
En la última gráfica se observa que en este caso, el cuadrado inicial ha comenzado en otro
caso extremo, pero esta vez en la esquina inferior derecha. Se ve claramente la trayectoria que
ha seguido hasta centrarse y como aumenta de tamaño según desciende el dron.
Figura 5.10: Gráficas del error en la imagen en aterrizaje con carga extra y ganancia alta
Esta vez se puede apreciar una mayor diferencia en el RMSE de la figura 5.11, donde se
llega a valores más elevados que si no tuviese un peso extra. Con carga se obtiene un valor de
0.37 m en el eje x y 0.58 m en el y, frente a unos valores de 0.24 m y 0.42 m en el caso sin
perturbaciones. Se puede ver como se sobrepasa el valor de las posiciones ideal y se termina
corrigiendo antes del aterrizaje.
Figura 5.11: Gráficas de posición en aterrizaje con carga extra y ganancia alta
En las gráficas de la figura 5.12 se ven las velocidades de este vuelo en cada instante del
aterrizaje. En los eje x e y se observa un pico en el segundo 3 que se debe a un balanceo en
un giro de corrección tras sobrepasar la posición ideal y el aumento drástico de velocidad. Al
realizar este aumento de velocidad en z también se envı́a una velocidad nula en los ejes x e y,
por lo que se corrige rápidamente.
En el eje x la velocidad inicial es nula para centrarse. Luego comienza a descender de forma
prácticamente constante, pero más rápido que antes por el aumento de la ganancia y la carga
extra. La velocidad real no se representa en la gráfica porque esa es la que se envı́a, por lo que
habrı́a que tener en cuenta mayores velocidades en la zona intermedia y menores en el momento
de aterrizar porque no se alcanzan nunca los -10 m/s.
El pico que se representa en el segundo 3.5, se debe por un pequeño rebote al aterrizar y
una detección descentrada de la H, por la que se anuları́a la velocidad en z. En el vuelo este
pico no afecta porque solamente es una muestra y el dron sigue posicionado perfectamente en
la plataforma tras el rebote.
Figura 5.12: Gráficas de velocidad en aterrizaje con carga extra y ganancia alta
Para mover la plataforma se ha utilizado un plugin que manda una velocidad lineal constan-
te a la plataforma en una dirección. Pasado un cierto tiempo, se manda la misma velocidad con
signo contrario en dirección contrario. El tiempo se obtiene por la conexión que se realiza entre
ROS y Gazebo, ya que al arrancar la simulación Gazebo crea un nodo llamado /clock. Por la
instancia del namespace de ROS ros::Time::now().tosec() se obtiene el tiempo en cada instante.
Se van a analizar de nuevo dos casos con distintas velocidades de la plataforma en mo-
vimiento. Se ha corregido la ganancia experimentalmente para que tuviese un buen compor-
tamiento en simulación. Los valores escogidos son para Kx y Ky 0.006 y para Kz 0.03 y se
mantienen en los dos casos. Las ganancias no son muy elevadas ya que esta maniobra de aterri-
zaje tiene más movimientos bruscos y es mejor que el descenso sea más controlado.
En esta primera prueba de aterrizajes, la plataforma va a una velocidad de 0.2 m/s, para
asegurar un aterrizaje seguro con un error relativamente bajo. A esta velocidad el dron trata de
corregir el error y seguir a la plataforma sin perderla de vista. Desciende cuando el encuadre
está en la zona central de la imagen.
En la figura 5.13 se representa los errores que se obtienen de las imágenes de la cámara.
A la derecha se puede ver la posición central relativamente centrada y se puede deducir que la
plataforma se desplazaba hacia la parte inferior de la imagen porque se trata de corregir el error.
Una vez alcanza la imagen de la H, se comienza a descender por lo que las esquinas comienzan
a expandirse hacia el exterior, terminando en una posición ideal hasta perderse la H de la ima-
gen.
En la gráfica central se obtiene el error cuadrático medio de los errores de la gráfica anterior.
Por la misma razón anterior se produce ese pico, que se penaliza al cuadrado en el RMSE, por lo
que aumenta considerablemente. Termina con un valor de 138 pxl en el eje x y 99 pxl en el eje y.
Figura 5.13: Gráficas del error en la imagen de aterrizaje sobre una plataforma en movimiento
a velocidad baja
Las gráficas obtenidas del nodo de la posición del dron se representan en la figura 5.14. En
ellas se puede observar la trayectoria 3D que sigue el dron para visualizarlo más fácilmente,
terminando el vuelo en la plataforma representada en rojo en la gráfica.
Un dato relevante es el tiempo que se ha tardado en terminar el vuelo sobre la zona de aterri-
zaje, 10,6 segundos. Aumenta ligeramente el tiempo total pero no es un cambio muy relevante.
El proceso de seguir la plataforma no permite el descenso de hasta que el dron esté centrado
con la H, por lo que se tarda más en realizar la maniobra.
En las gráficas centrales se puede ver como la posición del eje x y del eje y se corrige ter-
minando en la posición ideal en verde. En el eje x, se produce el movimiento de la plataforma
y se puede ver una curva más brusca que la que realiza en el eje y. Sin embargo, el RMSE del
eje y es mayor que el del eje x debido a que el eje x sobrepasa la posición ideal y el error de ese
proceso no es tan grande. Por esta razón, el error cuadrático medio no es muy representativo en
esta ocasión
El último trı́o de gráficas en la figura 5.15 representan la velocidad del dron respecto al
tiempo en cada uno de los ejes. La gráfica en negro del eje z es muy parecida a las anteriores.
Se pueden ver las tres fases del descenso: centrarse con velocidad nula, el descenso constante
y la aceleración hacia la plataforma en la altura crı́tica. En esta última fase se puede observar
como se anulan el resto de velocidades para no descentrarse.
En las otras dos gráficas se puede ver como existe un pico inicial que coincide con la acti-
vación del control. Por lo que pasa de estar sobrevolando una posición inicial a corregir el error
que observa en la imagen. Al estar moviéndose, el dron se pone a acelerar hasta alcanzar unas
velocidades de 0.48 m/s en el eje x y -0.29 m/s en el eje y. La mayor velocidad en x, es porque
el movimiento de la plataforma coincide con ese eje.
Una vez alcanzada, en el segundo 1.06, se comienza a reducir el error progresivamente hasta
comenzar el descenso constante. En el segundo 2.47 el dron desciende cuando está lo suficiente
En este segundo experimento se van a analizar un aterrizaje con una plataforma con una
velocidad más elevada, concretamente a 1m/s. En este caso, no siempre aterriza dentro de la
plataforma, pero si se aumenta más la velocidad la tasa de fallo sube.
En estos vuelos la plataforma va más rápida que la velocidad a la que corrige el control, por
lo que se pierde de vista la H. El algoritmo se ha modificado para obtener mejores resultados
de tal forma que si se deja de enviar las esquinas del encuadre y queda suspendido en la mis-
ma posición a la espera de volver a identificar la H. Si se hubiese forzado al dron a seguir la
plataforma, el vuelo se descontrolaba, la tasa de fallo aumentaba y el error aumentaba en caso
de éxito. El dron con estos valores de la ganancia (Kx y Ky =0.006) alcanza velocidades de
corrección de menos de 0.5 m/s, por lo que es inviable que pueda alcanzar a la plataforma para
corregir el error.
En la gráfica de la derecha de la figura 5.16 se pueden ver una gran cantidad de lı́neas su-
perpuestas, por el aumento de maniobras que se hacen hasta aterrizar. No se puede deducir una
trayectoria clara de esta gráfica, pero se puede entender con la figura 5.17. La información que
sı́ podemos obtener de esta gráfica es que termina aterrizando de forma descentrada a la última
H detectada.
En el eje x en rojo, el error es muy distinto por el movimiento lineal constante de la platafor-
ma que coincide con este eje. Existen picos de errores en sentidos contrarios donde se deduce
la trayectoria lineal en sentidos opuestos. Estos son siempre elevados porque la velocidad de la
plataforma es mayor que la del dron y se pierde de vista en cada giro. Hay 10 pico, por lo que la
plataforma desaparece de la imagen 10 veces antes de que el cuadricóptero termine el aterrizaje.
En la gráfica central sucede lo mismo que en el caso anterior. El RMSE en x es mucho más
elevado que en el eje y porque la plataforma se mueve en ese eje. Termina con un valor de 138
pxl. En el eje y se disminuye progresiva como con el error finalizando con un valor de 60.5 pxl.
Es importante destacar que estos valores son los recibidos cuando la H está encuadrada en el
marco de la imagen, por lo que estos errores deberı́a de ser mucho mayores.
Figura 5.16: Gráficas del error en la imagen de aterrizaje sobre una plataforma en movimiento
a velocidad alta
Lo que llama más la atención en la figura 5.17 es el gran aumento de tiempo de la maniobra,
25 segundos. Este aumento es razonable porque solamente se desciende de poco a poco, cada
vez que pasa por el centro de la imagen la plataforma.
En las gráficas del error cuadrático medio se puede ver de nuevo la gran diferencia entre
ejes. En x termina con un valor de 1 y en el eje Y de 0.2 metros. El valor de la posición ideal en
y sı́ es fija, pero la del eje x, no es conocida hasta que termina el vuelo, por lo que estos errores
en el eje x no son del todo reales.
Por último, analizamos las velocidades del aterrizaje de la figura 5.18. Como en el resto de
gráficas ,vistas anteriormente, se observa el movimiento de la plataforma en los picos y en los
signos del eje x. El dron recibe velocidades en cada dirección para tratar de reducir el error.
Una vez desaparece de la imagen, se anula la velocidad. Existe un pico de -4.2 m/s que se debe
a un error del sensor, porque con la ganancia Kx es 0.006 aun siendo un caso extremo no es
posible llegar a esa velocidad. De todas formas se anula en el siguiente instante, por lo que no
afecta demasiado en el vuelo. Quitando ese pico se obtiene una velocidad máxima de 0.85 m/s
en valor absoluto.
En la tercera gráfica se ve con claridad el descenso intermitente del UAV. Cada descenso
puede tener mayor o menor duración de tiempo pero la velocidad es prácticamente constante.
Una vez superada la altura crı́tica el descenso es intermitente también pero con una velocidad
mucho más elevada. A pesar de ser de -10 m/s, no se acerca a esa velocidad por el poco tiempo
que tiene de aceleración hasta volverse a anular por desaparecer la plataforma de pantalla. A
velocidades de la plataforma más elevadas, el dron no consigue descender antes de que la pla-
taforma ya haya pasado.
En este caso el plugin va linkado al modelo del dron en vez de a la plataforma de aterrizaje.
El programa consiste en empujar con una fuerza aleatoria entre dos valores al UAV simulando
corrientes de viento. Este plugin se pondrá en movimiento una vez haya pasado un tiempo de
la simulación, de forma que se active una vez esté sobrevolando la plataforma y se active el
control IBVS. Si se activase inicialmente, el dron no llegarı́a a la posición deseada para poder
ver la H inicialmente.
En la primera prueba el aire simulado sopla con una menor fuerza con unos valores entre
0.3 y 3 Newton. Para afrontar esta perturbación se han utilizado ganancias de Kx y Ky =0.06 y
Kz =0.03. Si se aumenta mucho la ganancia de los ejes x e y, el dron tiende a inclinarse dema-
siado y descontrolarse por la dificultad añadida de descender inclinado y la fuerza no constante.
Con estas fuerzas aterriza dentro de la plataforma en todas las pruebas realizadas.
La primera figura 5.19 como en el resto de casos son las gráficas del error en la imagen de
la cámara. Se puede ver en la gráfica de la derecha que se inicia con el rectángulo en la posi-
ción inferior derecha y termina ligeramente descentrado hacia la izquierda. Se ve claramente el
efecto del viento por las lı́neas que se sobreponen en el eje x de la cámara y es por esto que lo
desplaza hacia un lateral. Cabe aclarar que la fuerza del viento se aplica sobre el eje y del dron,
que no coincide con el de la cámara.
Se puede ver como el rectángulo que unirı́a los puntos es más achatado que en otras oca-
siones porque durante la mayor parte del vuelo el dron se encuentra luchando contra el viento
con un ángulo de inclinación. Cuanta mayor fuerza, mayor velocidad tendrá que ejercer para
contrarrestarla, mayor inclinación del dron y más estrecho será ese rectángulo.
En la gráfica de la izquierda se puede ver los errores de los ejes x e y en rojo y azul res-
pectivamente. Estos errores se tratan de reducir lo máximo posible, como se realiza en el x
progresivamente. El eje y, por su parte, sufre mucho picos y termina descentrado respecto la
posición ideal. Las sacudidas del viento que se ejercen solamente en este eje y coinciden con
cada pico. Cada pico es más o menos intenso en función del valor aleatorio que toma la fuerza
que se aplica al dron y simula este viento.
Figura 5.19: Gráficas del error en la imagen de aterrizaje con viento moderado
En la figura 5.20 se puede observar que la duración total del vuelo es de 8.3 segundos. En
comparación con otros vuelos es un buen tiempo para la perturbación a la que está sometido.
La trayectoria 3D en rosa nos muestra la trayectoria que hace el dron.
En la gráfica central del eje x se puede ver como se corrige progresivamente este error hasta
casi anularse, ya que la perturbación no afecta a este eje. Por este motivo, el RMSE termina
siendo parecido al caso sin perturbaciones, con un valor de 0.25 m.
En el eje y, sin embargo, se pueden ver los movimientos que ha realizado el cuadricóptero
para corregir la influencia del viento en su trayectoria. Termina en una posición descentrada
de la ideal, como hemos visto en la gráfica de las esquinas de la figura 5.19. Esto se aprecia
también al no coincidir con la linea verde con una diferencia de 0.05 metros en valor absoluto.
Por último, en la gráfica del eje z se pueden apreciar como se detiene el descenso con cada
una de las sacudidas de viento de mayor valor. Cuando se vuelve a centrar desciende con una
En la figura 5.21 se pueden ver las velocidades que se envı́an al dron. En el eje x, se comien-
za con un valor elevado para corregir la posición descentrada en la imagen. Según comienzan
alinearse dron y plataforma esta velocidad disminuye hasta comenzar la parte final de aterrizaje,
en el que se anula su valor.
En la gráfica central vemos la influencia del viento en la velocidad del eje y. Es una gráfica
con picos más intermitentes por los valores aleatorios que toma la fuerza que simula el viento.
Toma valores más elevados para solucionar mayores fuerzas del viento, con un máximo de 0.71
en valor absoluto.
En la tercera gráfica se representa en negro la velocidad del eje z. Se puede ver el descenso
intermitente visto anteriormente en esta gráfica de nuevo. Cada vez que se descentra se estabili-
za a esa altura con velocidad cero en z. En la parte final se consigue mantener el dron centrado
con la plataforma y acelera en el segundo 7.65 para realizar la parte final del aterrizaje.
En esta segunda prueba, se aumenta la fuerza del viento en un rango de 1.2 a 6 Newtons.
Se han variado ligeramente las ganancias con una Kx y Ky =0.0065 y una Kz =0.035. En esta
ocasión la tasa de aterrizaje no es elevada, pero en caso de subir la potencia del viento la tasa
de fallo aumenta considerablemente.
En la figura 5.22 se pueden ver las gráficas obtenidas por el nodo de la cámara. En la gráfica
de la derecha se puede ver la trayectoria de las esquinas del encuadre de la H. Al ser un vuelo
más brusco y largo, se ve un gran número de lı́neas aunque se puede intuir la trayectoria.
Figura 5.22: Gráficas del error en la imagen de aterrizaje con viento fuerte
Lo primero que se remarca en las gráficas de posición de la figura 5.23 es el gran aumento
del tiempo respecto al vuelo anterior. Se llega a aterrizar en 39.8 segundos, el vuelo más largo
realizado. Debido a esta duración y las maniobras que se realizan, en esta ocasión no se ve tan
claro el descenso en la gráfica en tres dimensiones.
En la columna central hay que poner atención en la escala, ya que el mayor error del eje x
es de 0.19 metros frente a 1.15 del eje y. El eje x, consigue mantenerse bien centrado en cada
momento, terminando con un error de 2 cm. A pesar de todas las maniobras bruscas, el dron
Por último en el eje z se puede ver algo que no se ha visto hasta ahora, el dron vuelve a
ascender después de comentar la maniobra de descenso. Este fenómeno se debe a la inclinación
que toma para contrarrestar la perturbación que le empuja hacia arriba en los tramos que no está
centrado y no desciende.
Por esta razón, en esta gráfica, no se ven los escalones vistos en las anteriores y su traza es
más picuda. Cuando está descentrado y no se le manda velocidad asciende y cuando sı́ lo está,
desciende. Esto produce el gran aumento de tiempo de este aterrizaje.
En las últimas gráficas de la figura 5.24 se representan las velocidades del dron en sus tres
ejes. En la gráfica de la izquierda se ven velocidades bajas por la poco corrección que se realiza
el eje x con un valor máximo de 0.2 m/s en el momento inicial.
En la gráfica central se representa en azul la velocidad en el eje y, que son mucho más eleva-
das que en el anterior eje por la influencia del viento. Los picos que se toman varı́an en función
de la fuerza aleatoria del viento, que se trata de corregir. Se obtiene un valor máximo en valor
absoluto de 1.67 m/s.
sucede de nuevo que se aumenta la velocidad que se le manda al dron, pero, si no está centrado,
se vuelve a anular.
5.5. Resultados
Tras haber realizado todas estas serie de pruebas se puede llegar a unas conclusiones gene-
rales sobre el control IBVS sobre el dron. Tiene un buen funcionamiento corrigiendo los errores
y perturbaciones correctamente. Aterriza con errores bajos y con una tasa elevada de éxito. Los
ángulos de inclinación en los giros y balanceos cuando son bruscos, afectan considerablemente
a la detección y hay que tratar de evitarlos.
Se han preparado las tablas 5.1 y 5.2 para dar una visión más general de todos los expe-
rimentos realizados. Con este resumen de todos los datos mostrados simultáneamente es más
sencillo llegar a conclusiones sobre cada prueba.
En la tabla 5.1 se muestra las ganancias que se han utilizado en cada experimento. Las del
eje x e y siempre tienen el mismo valor. La siguiente columna muestra el tiempo que tarda en
realizar el aterrizaje. Las últimas hacen referencia a las velocidades máximas alcanzadas en el
vuelo en el eje x e y en valor absoluto.
En todas las pruebas, excepto en las que la variación entre primera y segunda ha sido la
ganancia, se ha utilizado una ganancia de 0.006 en los ejes x e y por el buen resultado que se
ha obtenido experimentalmente. Se obtiene un buen control del dron y se consiguen valores su-
ficientemente elevados de velocidad para contrarrestar las perturbaciones. La mayor velocidad
que se ha alcanzado con esta ganancia ha sido de 0.86 m/s en la prueba de la plataforma móvil,
cuando ésta iba a 1 m/s.
El aterrizaje más rápido de todos los experimentos ha sido en el que se ha añadido peso al
dron, porque su velocidad de descenso era más elevada. Además, tenı́a la mayor ganancia en z
con un valor de 0.04. El más lento, ha sido el aterrizaje con fuertes corrientes de viento. El dron
tenı́a que adaptarse a la corriente variable de aire para centrarse y poder descender y, al estar
inclinado, el aire lo empujaba hacia arriba.
Lo primero que llama la atención de esta tabla es el error tan pequeño que existe en pı́xeles.
Al terminar el aterrizaje el dron pierde de vista el encuadre de la H. Al ver solamente una parte
de esa H, la identifica como entera y coloca sus esquinas en los extremos de la pantalla, dado
un error prácticamente nulo aunque no sea ası́. Por esta razón, este factor no hay que tenerlo
en cuenta cuando sea nulo. Sin embargo, como el RMSE se tiene en cuenta todo el vuelo, sı́ es
representativo del vuelo.
El menor error cuadrático medio en pı́xeles forma parte de la segunda prueba del viento
debido a que en la posición inicial estaba prácticamente centrado respecto al centro y el viento
no afectaba a este eje. En contraposición, el mayor, también forma parte de la misma prueba
pero en el eje al que sı́ afectaba el viento. El mayor RMSE de posición pertenece a la prueba en
la que la plataforma se desplazaba a una velocidad de 1 m/s sobre le eje x. El menor RMSE de
posición coincide con el menor en pı́xeles por la razón mencionada anteriormente.
El error de posición en metros menor coincide en el eje x e y del aterrizaje sin perturbacio-
nes, como es lógico. Sin embargo, el mayor error pertenece al aterrizaje de la plataforma móvil
cuando ésta va a 1 m/s. A pesar de que el movimiento era lineal en el eje x, el mayor error en y
también pertenece a esta prueba.
Los errores de posición de las primeras pruebas son pequeños porque la perturbación del
peso extra no afecta tanto al vuelo como la plataforma en movimiento o el viento. También se
puede ver en los errores cuadráticos medios, que son más elevados en las dos últimas pruebas.
Se puede concluir también que la plataforma móvil a pesar comenzar con un caso lento y un
100 % de tasa de éxito tiene un RMSE elevado. Seguir trayectorias perturba mucho el vuelo y
produce un aumento del error.
6.1. Conclusión
Este control visual tiene la ventaja de un bajo coste computación al hacer todo el control
con el único sensor de una cámara. Para que tenga un buen funcionamiento ésta debe estar bien
calibrada y conocer sus parámetros. Se ha demostrado que con solamente esas imágenes se han
podido realizar todos los tipos de aterrizaje que se han explicado en apartado anterior.
Otra de las ventajas del algoritmo creado es la portabilidad del control. Se han desarrollado
programas que se subscriben al nodo de la cámara del dron. Por lo que cualquier cuadricóptero
con una cámara cenital se podrı́a adaptar y aplicar este algoritmo desarrollado a lo largo del
trabajo.
El mayor inconveniente que se ha afrontado en cada prueba ha sido el balanceo que se pro-
ducirı́a en los giros bruscos del dron, en los que para corregir la dirección y tratar de estabilizarse
se balanceaba y esto harı́a que la imagen también lo hiciese. El rectángulo que se identificaba se
colocaba en un extremo por lo que se mandaba un pico de velocidad aunque realmente el dron
estuviese bien colocado. Si se estabilizaba rápidamente la velocidad disminuı́a y el problema se
corregı́a, sino se descontrolaba el vuelo y el aterrizaje era fallido. Esto se podrı́a tratar imple-
mentando una cámara giroestabilizada en vez de la fija usada en este trabajo.
Tras las pruebas experimentales realizadas se han podido calibrar las ganancias usadas. Se
ha visto que una ganancia de 0.006 en los ejes x e y da unos buenos resultados. Se alcanza una
velocidad suficiente para superar perturbaciones elevadas y se controla el dron sin balanceos
bruscos. Con estas ganancias las velocidades alcanzadas son alrededor de 0.86 m/s en los casos
más extremos.
Como se ha visto en el estado del arte, existe una gran cantidad de alternativas de algo-
ritmos que se podrı́an usar para afrontar el aterrizaje de un dron: PBVS, hybrid control,
MPC u alguna otra opción que se ha presentado en el estado del arte. Se podrı́a desarrollar
otro algoritmo y compararlo con los resultados que se han obtenido en este trabajo para
comprobar la eficiencia.
Se ha realizado un estudio completo con ocho pruebas distintas, pero existen una gran
cantidad de perturbaciones con las que se puede seguir recopilando datos sobre el algorit-
mo desarrollado. Otra opción para aumentar los datos es realizar una mayor cantidad para
aumentar la muestra o con otros datos distintos. También se podrı́an variar los valores que
utiliza el PID implementado en el control de la velocidad del dron, que no se ha variado
a lo largo de este trabajo.
Una de las ventajas del algoritmo desarrollado es su capacidad de portabilidad. Por lo que
se podrı́a probar con otras cámaras y en otros drones, comprobando su eficiencia.
7.2. Presupuesto
Se procede a analizar en este apartado el presupuesto estimado del proyecto. Se divide en
tres partes distintas: hardware, software y personal. En la tabla 7.1 representamos el coste del
portátil del que amortizamos un solo año de su vida útil y una estimación del coste del material
básico de oficina. Al desarrollar todo el trabajo en simulación, no hay un coste del dron fı́sico.
Concepto Coste unitario (C) Vida útil (años) Coste final (C)
Portátil 600 6 100
Material oficina 10 – 10
Coste total (C) 110
En la tabla 7.2 se expone el coste de los software. La mayorı́a son gratuitos como Ubuntu,
ROS, Aerostack o Gazebo, sin embargo la licencia anual de Matlab sı́ tiene un coste.
Concepto Coste unitario (C) Vida útil (años) Coste final (C)
Matlab 250 1 250
Ubuntu 0 – 0
ROS 0 – 0
Aerostack 0 – 0
Gazebo 0 – 0
Coste total (C) 250
En la tabla 7.3 se hace una estimación de los salarios y tiempo invertido en el trabajo tanto
del estudiante como del tutor. Este es el coste más significativo.
Concepto Salario estimado (C/h) Tiempo estimado (h) Coste final (C)
Coste alumno 15 350 5250
Coste tutor 50 50 2500
Coste total (C) 7750
Por último, en la tabla 7.4 se muestra la suma de los tres costes totales, obteniendo el presu-
puesto definitivo de este trabajo de fin de grado.
Hardware 110
Software 250
Personal 7750
Coste total (C) 8110
8. Bibliografı́a
[1] Jose Luis Sanchez-Lopez, Ramón A Suárez Fernández, Hriday Bavle, Carlos Sampedro,
Martin Molina, Jesus Pestana, and Pascual Campoy. Aerostack: An architecture and open-
source software framework for aerial robotics. In 2016 International Conference on Un-
manned Aircraft Systems (ICUAS), pages 332–341. IEEE, 2016.
[2] Steve Mills. When were the first military drones developed and what role did they serve?
[Link]
[3] México Puebla. The international micro air vehicle conference and competition
(imav2021). [Link]
[4] Peter Corke. Robotics, Vision and Control: Fundamental Algorithms in MATLAB. Sprin-
ger Publishing Company, Incorporated, 1st edition, 2013.
[9] Jesús Pestana, José Luis Sanchez-Lopez, Pascual Campoy, and Srikanth Saripalli. Vision
based gps-denied object tracking and following for unmanned aerial vehicles. In IEEE
International Symposium on Safety, Security, and Rescue Robotics, SSRR 2013.
[11] D. Lee, T. Ryan, and H. J. Kim. Autonomous landing of a vtol uav on a moving platform
using image-based visual servoing. In 2012 IEEE International Conference on Robotics
and Automation, pages 971–976, 2012.
[12] P.A. Fernandes Ferreiral and J.R. Caldas Pinto. 3d and 2d visual servoing architectures
for a puma560 robot. IFAC Proceedings Volumes, 36(17):183–188, 2003. 7th IFAC Sym-
posium on Robot Control (SYROCO 2003), Wroclaw, Poland, 1-3 September, 2003.
[13] Enric Cervera. Image-based stereo visual servoing: 2d vs 3d features. volume 35, pages
820–820, 07 2002.
[14] W. J. Wilson, C. C. Williams Hulls, and G. S. Bell. Relative end-effector control using
cartesian position based visual servoing. IEEE Transactions on Robotics and Automation,
12(5):684–696, 1996.
[15] E. Malis, F. Chaumette, and S. Boudet. 2 1/2 d visual servoing. IEEE Transactions on
Robotics and Automation, 15(2):238–250, 1999.
[16] J. Hwangbo, I. Sa, R. Siegwart, and M. Hutter. Control of a quadrotor with reinforcement
learning. IEEE Robotics and Automation Letters, 2(4):2096–2103, 2017.
[17] Suseong Jin Kim H. Choi, Seungwon Kim. Inverse reinforcement learning control for
trajectory tracking of a multirotor uav. International Journal of Control, Automation and
Systems, 2017.
[18] Riccardo Polvara, Massimiliano Patacchiola, Sanjay Sharma, Jian Wan, Andrew Manning,
Robert Sutton, and Angelo Cangelosi. Autonomous quadrotor landing using deep reinfor-
cement learning. arXiv preprint arXiv:1709.03339, 2017.
[21] Carlos Bavle Hriday de la Puente Paloma Campoy Pascual Rodriguez-Ramos, Alejan-
dro Sampedro. A deep reinforcement learning strategy for uav autonomous landing on a
moving platform. In Journal of Intelligent Robotic Systems, 2019.
[25] M. Beul and S. Behnke. Analytical time-optimal trajectory generation and control for
multirotors. In 2016 International Conference on Unmanned Aircraft Systems (ICUAS),
pages 87–96, 2016.
[26] Dario Melita Carmelo Muscato Giovanni Battiato Sebastiano D’URSO F. Farinella Gio-
vanni Ortis Alessandro Santoro Corrado Cantelli, Luciano Guastella. Autonomous landing
of a uav on a moving vehicle for the mbzirc. 2017.
[28] Kevin Ling, Derek Chow, Arun Das, and Steven Waslander. Autonomous maritime lan-
dings for low-cost vtol aerial vehicles. pages 32–39, 05 2014.
[29] Alessandro Rucco, PB Sujit, Pedro Aguiar, Joao Sousa, and Fernando Pereira. Optimal
rendezvous trajectory for unmanned aerial-ground vehicles, 2016.
[30] A. Gautam, P. B. Sujit, and S. Saripalli. Application of guidance laws to quadrotor landing.
In 2015 International Conference on Unmanned Aircraft Systems (ICUAS), pages 372–
379, 2015.
[31] Wang Kai, Sun Chunzhen, and Jiang Yi. Research on adaptive guidance technology of uav
ship landing system based on net recovery. Procedia Engineering, 99:1027–1034, 2015.
2014 Asia-Pacific International Symposium on Aerospace Technology, APISAT2014 Sep-
tember 24-26, 2014 Shanghai, China.
[32] R Om Prakash and Chandran Saravanan. Autonomous robust helipad detection algorithm
using computer vision. In 2016 International Conference on Electrical, Electronics, and
Optimization Techniques (ICEEOT), pages 2599–2604, 2016.
[33] Cosimo Patruno, Massimiliano Nitti, Ettore Stella, and Tiziana D’Orazio. Helipad detec-
tion for accurate uav pose estimation by means of a visual sensor. International Journal
of Advanced Robotic Systems, 14(5):1729881417731083, 2017.
[37] China Beijing. The international micro air vehicle conference and competition
(imav2016). [Link]
[38] Visual Servoing Platform (VISP). Tutorial: Image-based visual servo. https:
//[Link]/doxygen/visp-daily/tutorial-bebop2-vs.
html#bebop2_ibvs.
[39] Geoffrey Taylor Lindsay Kleeman. Hybrid position-based visual servoing lesson.
[Link]
Índice de figuras
1. (a) Imagen del objeto en la posición inicial (b) Imagen del objeto en la posición
objetivo (c) Transformación de los vértices . . . . . . . . . . . . . . . . . . . . 7
2. Imagen cenital de la plataforma inicial y después de encuadrar la H . . . . . . . 7
5.1. Gráficas del error en la imagen en aterrizaje sin perturbaciones con ganancia baja 37
5.2. Gráficas de posición en aterrizaje sin perturbaciones con ganancia baja . . . . . 38
5.3. Gráficas de velocidad en aterrizaje sin perturbaciones con ganancia baja . . . . 39
5.4. Gráficas del error en la imagen en aterrizaje sin perturbaciones con ganancia alta 40
5.5. Gráficas de posición en aterrizaje sin perturbaciones con ganancia alta . . . . . 40
5.6. Gráficas de velocidad en aterrizaje sin perturbaciones con ganancia alta . . . . 41
5.7. Gráficas del error en la imagen en aterrizaje con carga extra y ganancia baja . . 42
5.8. Gráficas de posición en aterrizaje con carga extra y ganancia baja . . . . . . . . 43
5.9. Gráficas de velocidad en aterrizaje con carga extra y ganancia baja . . . . . . . 43
5.10. Gráficas del error en la imagen en aterrizaje con carga extra y ganancia alta . . 44
5.11. Gráficas de posición en aterrizaje con carga extra y ganancia alta . . . . . . . . 44
5.12. Gráficas de velocidad en aterrizaje con carga extra y ganancia alta . . . . . . . 45
5.13. Gráficas del error en la imagen de aterrizaje sobre una plataforma en movimien-
to a velocidad baja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Índice de tablas
5.1. Datos recopilados de todas las pruebas . . . . . . . . . . . . . . . . . . . . . . 57
5.2. Resultados recopilados de todas las pruebas de los errores . . . . . . . . . . . . 58
Notación general
Acrónimos
IBVS Image Based Visual Servoing
RL Reinforcement Learning
Glosario
Fx — Distancia focal
Kx — Ganancia en el eje x
e — Error de posición
m — Medidas de la imagen
Lc — Matriz de interacción
θ — Ángulo entre x e y