Coordinación entre UAV y UGV para tareas de Búsqueda y Rescate

Anuncio
Coordinación entre UAV y UGV para
tareas de Búsqueda y Rescate
Pablo Rodrı́guez Palafox
Departamento de Automática, Ingenierı́a Eléctrica y Electrónica e Informática
Industrial
Escuela Técnica Superior de Ingenieros Industriales - UPM
Trabajo Fin de Grado
Propuesto por Antonio Barrientos
Septiembre 2016
Dirigido por Mario Garzón
Resumen
En este Trabajo Fin de Grado se presenta un sistema autónomo de Búsqueda
y Rescate basado en la coordinación entre dos vehı́culos autónomos: un UAV
(Unmanned Aerial Vehicle) y un UGV (Unmanned Ground Vehicle). Sobre
este último se colocará una plataforma de aterrizaje (PA). El vehı́culo aéreo
debe ser capaz de localizar dicha PA en base a una imagen aérea, seguirla
de forma autónoma y aterrizar sobre ella cuando ası́ se lo indique el usuario
del sistema.
El sistema ha sido implementado sobre la plataforma robótica aérea AR
Drone 2.0; como UGV se optó por el Summit XL (véase Figura 1). Asimismo, el trabajo ha sido elaborado bajo el framework de desarrollo de
software robótico conocido como ROS (Robot Operating System). Los algoritmos desarrollados han sido escritos en lenguaje C++, XML y Python.
(a)
(b)
Figura 1: Plataformas robóticas reales: (a) AR Drone 2.0 y (b) Summit XL.
El aterrizaje sobre una PA móvil puede descomponerse en cuatro etapas:
detección, localización, seguimiento y, finalmente, aterrizaje:
Detección
La detección de la PA móvil se ha llevado a cabo a través de técnicas de
Visión por Computador, empleando para ello la cámara ventral del AR Dro-
ne 2.0. En concreto, se ha desarrollado un algoritmo de visión basado en
métodos de binarización por umbral de matiz, saturación e intensidad de la
imagen a partir del que propone Baira (1). El primer paso será el acondicionamiento de la imagen: se transforma esta al modelo de color HSV (Hue,
Saturation, Value), se filtra por umbral HSV y, finalmente, se le aplican
sucesivos procesos de erosión y dilatación con el fin de eliminar el ruido
existente (véase Figura 2).
Se obtiene ası́ una imagen binaria en la que la PA aparece representada por
pı́xeles blancos. Dichos pı́xeles se aproximan después por una figura poligonal y, por último, se calcula el centroide de dicha figura, que caracterizará a
la PA en la siguiente etapa.
(a)
(b)
(c)
(d)
Figura 2: Tratamiento de la imagen en el sistema real: (a) Conversión al modelo de color
HSV; (b) filtro para la obtención del color buscado (c) resultado tras el acondicionamiento;
y (d) PA detectada y contornos remarcados.
Localización
La obtención de la posción del centroide de la PA móvil con respecto al
sistema de referencia del UAV se realiza a través de una inversión del modelo
Pinhole, caracterizado por la Expresión 5.6. Este modelo describe la relación
matemática entre un punto en el espacio, (X, Y, Z) y su proyección sobre
el plano imagen de la cámara (u, v)T . La relación entre ambas variables se
denomina matriz de parámetros caracterı́sticos de la cámara.
u
f τ
λ
=
v
0 ηf
σx
σy
 
X
Y 
Z
(1)
De esta manera, se calculará el centroide de la PA con respecto al sistema
de referencia de la cámara del UAV.
Seguimiento-Aterrizaje
Se han desarrollado dos algoritmos que abordan la tarea de seguimientoaterrizaje de forma ligeramente distinta. En cualquier caso, ambos algoritmos comparten la misma estructura basada en una máquina de estados,
pudiéndose distinguir cinco: IDLE, TAKINGOFF, TRACKING, LANDING
y SEARCHING. En la Sección 6.1 se explican los diferentes estados en detalle.
A. Algoritmo seguimiento-aterrizaje con Control PID adaptativo:
Está basado en un control PID adaptativo cuyos parámetros (Kp , Ki y Kd )
varı́an en función de la altura del UAV, con el fin de que el seguimiento
de la PA sea óptimo a cualquier altura de vuelo, especialmente, durante la
maniobra de aterrizaje. El input o valor de entrada de este algoritmo es la
posición del centroide de la PA con respecto a la cámara.
Tras transformar dicho punto del sistema de referencia de la cámara al del
cuerpo del UAV, se calcula el error de posición, entendido como la distancia
entre el UAV y el centroide de la PA en el plano xy. Finalmente, se emplea
este valor para calcular los comandos de velocidad en x y en y que han de
ser aplicados al UAV en cada instante con el objetivo de que dicho error
converja a cero.
B. Algoritmo seguimiento-aterrizaje con Control PID predictivo:
Este algoritmo está basado en la combinación de un regulador PID con un
Filtro de Kalman (se ha adaptado al sistema el algoritmo de predicción de
personas desarollado por Garzón et al. (2)).
El funcionamiento del sistema resultante es el siguiente: se transforma la
posición de la PA (calculada en la fase detección-localización) del sistema
de referencia de la cámara al sistema del mundo. Se envı́a después la nueva posición al Filtro de Kalman, el cual devuelve la posición futura del
centroide de la PA referida al sistema del mundo. Posteriormente, esta se
transforma al sistema del cuerpo del UAV y, finalmente, se emplea la posición obtenida para calcular el error de posición (distancia entre el UAV y
la posición predicha de la PA). Como en el caso anterior, se emplea dicho
error para calcular los comandos de velocidad en x y en y que hagan que
este converja a cero.
Gracias a la acción predictiva, se facilita el seguimiento y, principalmente,
el aterrizaje, ya que el UAV puede posicionarse ligeramente por delante de
la PA momentos antes de la aproximación final y ası́ completar el aterrizaje
con mayor precisión.
Metodologı́a
La implementación de los algoritmos se ha llevado a cabo empleando ROS.
Lo más interesante de este framework es su estructuración modular, donde
el procesamiento de datos se da en una serie de nodos (nodes) independientes que se relacionan siguiendo un modelo de mensajerı́a basado en la
publicación y la suscripción a tópicos (topics).
Exceptuando los nodos de los drivers del UAV y del UGV, se desarrollaron
los nodos siguientes. En el caso del sistema real, estos fueron el nodo de
detección y seguimiento, los nodos de seguimiento y aterrizaje (uno para
el algoritmo PID adaptativo y para el control PID predictivo) y el nodo
de teleoperación. Se desarrolló también un nodo que contenı́a las misiones
a realizar por la PA. Este último nodo se lanzaba dentro del ordenador
integrado en el Summit XL.
Resultados
Para la validación del sistema autónomo de despeque-seguimiento-aterrizaje
(d-s-a) se diseñaron tres Misiones UAV-PA, en las cuales la PA sigue un
trayectoria cuadrada (Misión 1), circular (Misión 2) y aleatoria (Misión 3).
Asimismo, las Misiones 1 y 2 se quisieron subdividir en dos tipos de pruebas:
una en la que se relanzara el sistema N veces para obtener N ciclos d-s-a bajo
las mismas condiciones y otra en la que se lanzara una sola vez el sistema
y se tratara de realizar el mayor número posible de ciclos d-s-a hasta el
fallo total del mismo (al llegar a Nmax , se detenı́a la misión, considerándose
entonces altamente contrastada la robustez del algoritmo).
En los Cuadros 1 se muestra la media de los resultados para el sistema
simulado y real a una velocidad media de la PA de v̄x = 0.18 m/s y de
w̄z = 0.09 rad/s.
No Aterrizajes
20
Misión 1
PID adapt. PID pred.
Misión 2
PID adapt. PID pred.
Velocidad PA
v̄x = 0.18 m/s
v̄x = 0.18 m/s
w̄z = 0.09 rad/s
Exitosos
EM (cm)
Emax (cm)
Fallidos
% Éxito
19
18.7
25.8
1
95 %
20
13.2
17.5
0
100 %
18
21.8
27.1
2
90 %
19
14.9
18.0
1
95 %
Velocidad PA
Misión 1
Adapt. Pred.
Misión 2
Adapt. Pred.
Misión 3
Adapt.
Pred.
v̄x = 0.18 m/s
v̄x = 0.18 m/s
w̄z = 0.09 rad/s
v̄x = (0, 0.18) m/s
w̄z = (0, 0.09) rad/s
Ciclos hasta fallo
39
40
38
40
36
40
Relocalizaciones
3
1
3
1
4
3
(b) Sistema Simulado - Prueba B
(a) Sistema Simulado - Prueba A
No Aterrizajes
10
Exitosos
EM (cm)
Emax (cm)
Fallidos
% Éxito
Misión 1 Misión 2
PID adapt.
10
30.1
34.7
0
100 %
8
36.6
41.8
2
80 %
Misión 1
Misión 2 Misión 3
PID adapt.
Ciclos hasta fallo
20
17
10
Relocalizaciones
0
2
8
(d) Sistema Real - Prueba B
(c) Sistema Real - Prueba A
Cuadro 1: Resultados para el sistema simulado: (a) Misiones 1 y 2 - Prueba A; (b)
Misiones 1, 2 y 3 - Prueba B. Resultados para el sistema real; (c) Misiones 1 y 2 - Prueba
A; (d) Misiones 1, 2 y 3 - Prueba B.
En el simulador, la tasa de aterrizajes exitosos se encuentra por encima del
90 %, y se aprecia que el sistema de relocalización de la PA implementado
corrige aquellos aterrizajes fallidos (pocos) en la Prueba B. Ello permite
asegurar la robustez del sistema. Por otro lado, en las plataformas reales,
se observa que el porcentaje de éxito mı́nimo es un tanto menor (un 80 %).
Destaca también la dificultad del sistema real (basado en el control PID
adaptativo) de conseguir resultados positivos con trayectorias aleatorias de
la PA. Globalmente, se concluye el correcto funcionamiento del sistema.
Palabras clave: Aterrizaje Autónomo, PID, Filtro de Kalman, UAV.
Códigos UNESCO: 1203.23 (Lenguajes de Programación), 1203.26 (Simulación), 2209.90 (Tratamiento Digital de Imágenes).
Agradecimientos
Querrı́a empezar agrandeciéndole a mi familia el apoyo mostrado, no solo
durante este proyecto, sino a lo largo de toda mi etapa en la universidad.
Mis padres, mi hermana y mi hermano son los que siempre me han motivado para seguir aprendiendo y los que han fomentado en mı́ un espı́ritu de
sacrificio y trabajo. Han sabido, además, enseñarme a que se puede llegar a
amar tu trabajo si lo conviertes en tu pasión, como ha sido el caso de este
proyecto.
Asimismo, a Mario, porque han sido muchas las horas que hemos pasado
en el departamento y muchas las preguntas de principiante que le lanzaba
sin parar, hasta que aprendı́ que una de las mejores formas de aprender, si
no la mejor, es equivocarte, equivocarte y volver a equivocarte. Tampoco
puedo olvidar la ayuda prestada por Antonio, no solo en este trabajo, sino
en varias de las asignaturas del grado, incluso en las que no era mi profesor.
Gracias a Jorge y a David, por echarme una mano con las pruebas, gracias
a Juanje y, en especial, gracias a Pablo, por no odiarme despues de estrellar
su AR Drone 2.0 durante una de las pruebas. Afortunadamente, nada que
no se pudiera reparar.
Me gustarı́a también agradecer a mis compañeros de clase los buenos momentos que me han hecho pasar durante estos cuatro años. Nombrarı́a a
todos, ası́ que mejor que no nombre a ninguno. En cualquier caso, han
sido cuatro años increı́bles a su lado. Increı́blemente duros, pero también
increı́blemente apasionantes. Ha habido momentos malos, pero momentos
muy buenos. En todos ellos, ahı́ estaban mis compañeros. Pero ya nunca
más serán mis compañeros, serán mis amigos.
Gracias a ti, Irene, por ayudarme a mover colchonetas de un lado para otro
en el pabellón para preparar el escenario, por ayudarme a tener listos los robots, por mover la plataforma de aterrizaje cuando el Summit ya no podı́a
más... Y, todo ello, tan solo para poder realizar un puñado de pruebas.
Unas pruebas que nos llevaron más de lo pensado pero que, tras muchos
dı́as tragando polvo y manchándonos las manos, dieron sus frutos. Gracias
por revisar mi memoria. Gracias también por ayudarme estos últimos dı́as
a no decaer y a seguir motivado. En definitiva, gracias por estar a mi lado.
Y, por último, gracias a todo aquel que, sin saberlo, ha contribuı́do a que
este trabajo saliera adelante.
Muchas gracias a todos.
Madrid, 22 de julio de 2016
Índice general
Índice de figuras
VII
Índice de Cuadros
IX
1. Introducción
1
1.1. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2. Estado actual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.4. Aportaciones propias . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.5. Estructura de la memoria . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2. Estado del arte
7
2.1. Detección de objetos móviles desde el aire . . . . . . . . . . . . . . . . .
8
2.2. Localización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.3. Seguimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.4. Aterrizaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
3. Planificación y presupuesto
15
3.1. Estructura de Descomposición del Proyecto EDP . . . . . . . . . . . . .
15
3.2. Planificación temporal. Diagrama de Gantt . . . . . . . . . . . . . . . .
16
3.3. Presupuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
4. Material y Herramientas
21
4.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
4.2. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
iii
ÍNDICE GENERAL
5. Algoritmo de Detección-Localización
33
5.1. Detección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
5.1.1. Teorı́a del Color . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
5.1.2. Desarrollo del algoritmo . . . . . . . . . . . . . . . . . . . . . . .
37
5.2. Localización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
6. Algoritmo de Seguimiento-Aterrizaje
47
6.1. Máquina de Estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
6.2. Control PID adaptativo . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
6.2.1. Desarrollo del algoritmo . . . . . . . . . . . . . . . . . . . . . . .
50
6.2.2. Esquema general del Control PID . . . . . . . . . . . . . . . . . .
50
6.2.3. Ajuste de los parámetros del Control PID . . . . . . . . . . . . .
52
6.2.4. Aplicación en el sistema simulado . . . . . . . . . . . . . . . . . .
53
6.2.5. Aplicación en el sistema real . . . . . . . . . . . . . . . . . . . .
55
6.3. Control PID predictivo . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
6.3.1. Filtro de Kalman - Teorı́a básica . . . . . . . . . . . . . . . . . .
56
6.3.1.1. Descipción matemática del Filtro de Kalman . . . . . .
57
6.3.2. Desarrollo del algoritmo . . . . . . . . . . . . . . . . . . . . . . .
61
6.3.3. Integración del algoritmo de predicción
. . . . . . . . . . . . . .
62
6.3.4. Seguimiento con predicción . . . . . . . . . . . . . . . . . . . . .
63
6.3.5. Aterrizaje con predicción . . . . . . . . . . . . . . . . . . . . . .
63
6.4. Control de altura - Relocalización de la PA . . . . . . . . . . . . . . . .
63
7. Metodologı́a
65
7.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
7.2. Implementación en ROS . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
7.2.1. Herramienta de transformaciones - tf . . . . . . . . . . . . . . . .
67
7.2.2. Nodos, tópicos y servicios . . . . . . . . . . . . . . . . . . . . . .
74
7.2.2.1. Nodo de detección-localización . . . . . . . . . . . . . .
78
7.2.2.2. Nodo de seguimiento-aterrizaje . . . . . . . . . . . . . .
79
7.2.2.3. Nodo de transformación de la posición . . . . . . . . . .
80
7.2.2.4. Nodo del Filtro de Kalman . . . . . . . . . . . . . . . .
81
7.2.2.5. Nodo del driver del vehı́culo aéreo . . . . . . . . . . . .
81
7.2.2.6. Nodo de teleoperación . . . . . . . . . . . . . . . . . . .
81
iv
ÍNDICE GENERAL
7.2.2.7. Nodo de movimiento de la PA (Summit XL) . . . . . .
8. Experimentos y resultados
82
83
8.1. Sistema simulado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.1.1. Descripción de los experimentos
83
. . . . . . . . . . . . . . . . . .
83
8.1.1.1. Misión 1: Trayectoria cuadrada . . . . . . . . . . . . . .
83
8.1.1.2. Misión 2: Trayectoria aproximadamente circular . . . .
84
8.1.1.3. Misión 3: Trayectoria aleatoria . . . . . . . . . . . . . .
85
8.1.2. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
8.1.2.1. Misiones 1 y 2 - Prueba A . . . . . . . . . . . . . . . .
86
8.1.2.2. Misiones 1, 2 y 3 - Prueba B . . . . . . . . . . . . . . .
89
8.2. Sistema real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
8.2.1. Descripción de los experimentos
. . . . . . . . . . . . . . . . . .
93
8.2.1.1. Misión 1: Trayectoria rectilı́nea . . . . . . . . . . . . . .
93
8.2.1.2. Misión 2: Trayectoria circular . . . . . . . . . . . . . . .
94
8.2.1.3. Misión 3: Trayectoria aleatoria . . . . . . . . . . . . . .
95
8.2.1.4. Misiones 1 y 2 - Prueba A . . . . . . . . . . . . . . . .
96
8.2.1.5. Misiones 1, 2 y 3 - Prueba B . . . . . . . . . . . . . . .
97
8.3. Valoración de impactos y de aspectos de responsabilidad legal, ética y
profesional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9. Conclusiones y lı́neas futuras
99
101
9.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
9.2. Lı́neas futuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
10. Glosario
105
Bibliografı́a
107
v
ÍNDICE GENERAL
vi
Índice de figuras
1.
Plataformas robóticas reales . . . . . . . . . . . . . . . . . . . . . . . . .
ii
2.
Tratamiento de la imagen en el sistema real . . . . . . . . . . . . . . . .
iii
2.1. Ejemplo de marcador empleado en las librerı́as ArUco . . . . . . . . . .
9
3.1. Estructura de Descomposición del Proyecto . . . . . . . . . . . . . . . .
16
3.2. Tareas de la planificación temporal . . . . . . . . . . . . . . . . . . . . .
17
3.3. Diagrama de Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
4.1. Plataforma robótica terrestre Summit XL . . . . . . . . . . . . . . . . .
22
4.2. AR Drone 2.0 con cubierta para interiores y exteriores . . . . . . . . . .
23
4.3. Cámara frontal del AR Drone 2.0 . . . . . . . . . . . . . . . . . . . . . .
25
4.4. Cámara ventral del AR Drone 2.0 . . . . . . . . . . . . . . . . . . . . . .
25
4.5. Sensores de ultrasonidos del AR Drone 2.0 . . . . . . . . . . . . . . . . .
26
4.6. Ejemplo de esquema en árbol generado por la herramienta tf . . . . . .
29
4.7. Ejemplo de simulación en la herramienta rviz de ROS . . . . . . . . . .
29
4.8. Ejemplo de simulación Gazebo . . . . . . . . . . . . . . . . . . . . . . .
30
5.1. Espacio de color RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
5.2. Espacio de color HSV . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
5.3. Vista aérea de la plataforma de aterrizaje simulada y real . . . . . . . .
37
5.4. Tratamiento de la imagen en el sistema simulado . . . . . . . . . . . . .
39
5.5. Tratamiento de la imagen en el sistema real . . . . . . . . . . . . . . . .
40
5.6. Resultado final de la detección de la plataforma de aterrizaje . . . . . .
42
5.7. Distribución del punto objetivo P(X,Y,Z) con respecto a los planos usados en el modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
5.8. Plano imagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
vii
ÍNDICE DE FIGURAS
5.9. Checkboard empleada para la calibración de la cámara ventral del AR
DRone 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
5.10. Secuencia de movimientos recomendada para una calibración óptima de
la cámara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
6.1. Diagrama de bloques de un control PID . . . . . . . . . . . . . . . . . .
51
6.2. Fase de predicción del Filtro de Kalman . . . . . . . . . . . . . . . . . .
59
6.3. Fase de actualización del Filtro de Kalman . . . . . . . . . . . . . . . .
61
7.1. Sistemas de ejes coordenados pertenecientes al modelo simulado del Summit XL
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
7.2. Sistemas de ejes coordenados pertenecientes al modelo simulado del quadrotor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
7.3. Árbol final de frames del sistema simulado . . . . . . . . . . . . . . . . .
69
7.4. Árbol final de frames del sistema simulado . . . . . . . . . . . . . . . . .
71
7.5. Árbol final de frames del sistema simulado . . . . . . . . . . . . . . . . .
72
7.6. Árbol final de frames del AR Drone 2.0 (sistema real) . . . . . . . . . .
73
7.7. Entramado de nodos, tópicos y servicios en el sistema real con Control
PID adaptativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
8.1. Escenario diseñado en el simulador . . . . . . . . . . . . . . . . . . . . .
84
8.2. Secuencia de imágenes: Misión 2 - Prueba A - Sistema Simulado . . . .
92
8.3. Escenario diseñado en la realidad . . . . . . . . . . . . . . . . . . . . . .
94
8.4. Secuencia de imágenes: Misión 1 - Prueba A - Sistema real
98
. . . . . . .
9.1. Plataforma robótica Pelican . . . . . . . . . . . . . . . . . . . . . . . . . 103
9.2. Ejemplo de marcador empleado en las librerı́as ArUco . . . . . . . . . . 104
viii
Índice de Cuadros
1.
Resultados para el sistema simulado: (a) Misiones 1 y 2 - Prueba A;
(b) Misiones 1, 2 y 3 - Prueba B. Resultados para el sistema real; (c)
Misiones 1 y 2 - Prueba A; (d) Misiones 1, 2 y 3 - Prueba B. . . . . . .
vi
3.1. Gastos personal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.2. Gastos de material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.3. Gastos totales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
5.1. Combinación de parámetros elegida para la aplicación de las funciones
erode y dilate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
6.1. Reglas generales para el ajuste heurı́stico . . . . . . . . . . . . . . . . .
53
6.2. Parámetros del PID en función de la altura - Sistema Simulado . . . . .
53
6.3. Parámetros del PID en función de la altura - Sistema Real . . . . . . . .
55
8.1. Resultados de las Misiones 1 y 2 - Prueba A - Simulador . . . . . . . . .
87
8.2. Resultados de las Misiones 1 y 2 - Prueba A - Simulador . . . . . . . . .
87
8.3. Resultados de las Misiones 1 y 2 - Prueba A - Simulador . . . . . . . . .
88
8.4. Resultados de las Misiones 1 y 2 - Prueba A - Simulador . . . . . . . . .
88
8.5. Resultados de las Misiones 1, 2 y 3 - Prueba B - Simulador . . . . . . .
89
8.6. Resultados de las Misiones 1, 2 y 3 - Prueba B - Simulador . . . . . . .
90
8.7. Resultados de las Misiones 1, 2 y 3 - Prueba B - Simulador . . . . . . .
90
8.8. Resultados de las Misiones 1, 2 y 3 - Prueba B - Simulador . . . . . . .
90
8.9. Resultados de las Misiones 1 y 2 - Prueba A - Sistema Real . . . . . . .
96
8.10. Resultados de las Misiones 1, 2 y 3 - Prueba B - Sistema Real . . . . . .
97
ix
ÍNDICE DE CUADROS
x
1
Introducción
1.1.
Motivación
En las últimas décadas, la robótica ha ido tomando cada dı́a una mayor importancia en nuestras vidas. Hasta el momento, nuestra tecnologı́a ha conseguido desarrollar
múltiples plataformas robóticas que nos ayudan en tareas muy variadas: desde el cuidado y atención de humanos, hasta la limpieza de los más altos rascacielos. En otras
ocasiones, los robots nos eximen de la realización de tareas peligrosas, como el tratamiento de materiales radiactivos y sustancias quı́micas contaminantes. De las múltiples
aplicaciones de la robótica, en este proyecto se abordará la cooperación entre plataformas robóticas para tareas de Búsqueda y Rescate.
Los robots destinados a este tipo de tareas (SaR robots - Search and Rescue robots) deben operar en muchas ocasiones en entornos desconocidos, sobre superficies
no estables y con múltiples dificultades para efectuar su misión. Esta, por lo general,
incluye la obtención de un mapa del entorno para facilitar la intervención posterior de
las brigadas de rescate. Para un robot terrestre, este tipo de condiciones (por ejemplo,
zona de escombros tras el derrumbamiento de un edificio) no resultan las mejores para
operar. Una posible solución es constituir equipos mixtos de un robot terrestre (UGV
- Unmanned Ground Vehicle) y uno aéreo (UAV - Unmanned Aerial Vehicle) para
realizar estas tareas de Búsqueda y Rescate. La elección de este tipo de cooperación
UAV-UGV queda justificada por la posibilidad de compensar las carencias del uno con
los puntos fuertes del otro.
1
1. INTRODUCCIÓN
Efectivamente, mientras que los robots aéreos poseen una capacidad única de obtener vistas en altura y de desplazarse sin verse obstaculizados por los elementos que
pueda haber sobre el terreno, su reducida autonomı́a de vuelo limita su tiempo de uso
a pocas decenas de minutos y su capacidad de carga a poco más de 1 Kg, generalmente.
Por el contrario, los robots terrestres sı́ son capaces de superar, habitualmente, los
requisitos de autonomı́a energética y capacidad de carga de pago. Además, pueden
actuar como repetidores para los sistemas de comunicaciones, ası́ como proveer capacidades de cómputo y almacenamiento de datos al sistema. Sus puntos débiles aparecen
a la hora de superar obstáculos o situaciones complicadas, como puentes estrechos o
planos inclinados. Adicionalmente, su capacidad de obtención de información acerca
de su entorno también puede quedar limitada por los elementos del escenario o por las
propias limitaciones de los sensores.
De este modo, se presenta como muy buena alternativa el empleo de un sistema
mixto, en el que un robot terrestre provea la autonomı́a energética a un robot aéreo,
ası́ como el transporte de la carga de pago y del propio robot aéreo. Este útlimo, a
su vez, podrá, si la situación ası́ lo requiere, proveer imágenes u otras medidas que
permitan al controlador del sistema mejorar su percepción de la situación en la que
se encuentra. Este trabajo pretende ser un paso hacia la obtención de un sistema de
dichas caracterı́sticas. Para ello, se aborda la automatización de dos tareas: el seguimiento mediante un robot aéreo de los movimientos realizados por un robot terrestre
y el aterrizaje autónomo sobre una PA a bordo de dicho robot terrestre.
1.2.
Estado actual
Con este proyecto se retoma el trabajo realizado anteriormente en el Centro de Automática y Robótica UPM-CSIC de la ETSI Industriales de Madrid, en el que Baira
(1) desarrolla un sistema de detección, localización y seguimiento de objetos dinámicos terrestres. Dicho algoritmo se implementó sobre la plataforma robótica aérea AR
Drone en sus dos versiones (1.0 y 2.0), emplenado del robot terrestre Summit XL como
2
1.3 Objetivos
objetivo móvil a detectar y seguir.
En dicho trabajo, el vehı́culo aéreo volaba a una altura fija, con el objetivo de mantener siempre al robot terrestre en el campo visual de la cámara (se empleaba la cámara
ventral incorporada en el propio AR Drone) y ası́ poder seguirlo con éxito. Se dejó como
trabajo futuro la implementación de un algoritmo de predicción, el cual estaba siendo
desarrollado en aquel momento por otros investigadores del Centro de Automática y
Robótica. Con dicho algoritmo, el vehı́culo aéreo podrı́a ir prediciendo las posiciones
futuras del robot terrestre y ası́ adelantarse a sus movimientos. Otra tarea que se propuso fue la implantación de un sistema que permitiera al vehı́culo aéreo aterrizar sobre
el terrestre, de manera que se pudieran aprovechar las ventajas de uno y otro.
Por consiguiente, se estudiará en profundidad cómo se realizaron las tareas de detección y seguimiento en el trabajo de Baira para después poder aplicarlo al desarrollo
del sistema que aquı́ se plantea. Como se verá en el siguiente apartado de Objetivos
(véase 1.3), el principal foco de este trabajo será conseguir que el UAV despeaterrice
autónomamente sobre el robot terrestre.
1.3.
Objetivos
El objetivo final del proyecto es desarrollar las bases para un sistema UAV-UGV con
capacidad de inspeccionar y reconstruir el entorno a explorar. El robot aéreo irá posado sobre una plataforma de aterrizaje (PA)(la cual estará anclada mecánicamente
al UGV) hasta que el usuario del sistema precise recoger información adicional del
terreno. En ese momento, el UAV despegará, detectará y localizará la PA y, posteriormente, deberá seguir de manera autónoma a la misma. Finalmente, cuando el ususario
del sistema ası́ lo considere, indicará al UAV el comienzo de la maniobra autónoma de
aterrizaje sobre la PA, aún estando esta última en movimiento.
A continuación, se enumeran los sub-objetivos marcados al inicio del proyecto:
1. Desarrollar de la infraestructura de control. Para que la automatización de
las tareas de Búsqueda y Rescate sea posible, se considera necesario que el sistema
a desarrollar esté basado en una máquina de estados (véase Capı́tulo 6.1). Con
3
1. INTRODUCCIÓN
ella se busca que el sistema sea robusto y que se puedan realizar tantos ciclos
despegue-seguimiento-aterrizaje (d-s-a) como el usuario del sistema precise.
2. Implementar el aterrizaje del UAV cuando la PA sigue una trayectoria
rectilı́nea. El vehı́culo aéreo ha de ser capaz de aterrizar sobre la PA cuando
esta se mueve describiendo una trayectoria rectilı́nea.
3. Implementar el aterrizaje del UAV cuando la PA sigue una trayectoria
circular. El vehı́culo aéreo ha de ser capaz de aterrizar sobre la PA cuando esta
se mueve describiendo una trayectoria circular.
4. Implementar el aterrizaje del UAV cuando la PA sigue una trayectoria
aleatoria. El vehı́culo aéreo ha de ser capaz de aterrizar sobre la PA cuando esta
se mueve describiendo una trayectoria aleatoria, siempre y cuando el objetivo
terrestre no realice maniobras evasivas en los instantes previos al aterrizaje.
5. Implementar un algoritmo de control de altura para la relocalización
de la PA. Se considera imprescindible la implantación de un sistema de control
de altura que permita al robot aéreo relocalizar la PA cuando esta desaparezca
del campo visual del primero.
1.4.
Aportaciones propias
1. Se consigue implementar una infraestructura de control robusta que permite al
usuario comunicarse con el sistema. El usuario, a través de un controlador (se ha
empleado el Sixaxis Controller ) tiene la capacidad de indicar al vehı́culo aéreo
cuándo ha de despegar y cuándo ha de aterrizar de nuevo. De esta manera, en una
hipotética misión de Búsqueda y Rescate, serı́a el propio usuario del sistema el
encargado de decidir en qué momento serı́a necesario recopilar información aérea
del entorno.
2. Se desarrolla un algoritmo de seguimiento-aterrizaje que permite a la plataforma robótica aérea aterrizar sobre la PA cuando esta describe una trayectoria
rectilı́nea.
3. Se desarrolla un algoritmo de seguimiento-aterrizaje que permite a la plataforma
robótica aérea aterrizar sobre la PA cuando esta describe una trayectoria circular.
4
1.5 Estructura de la memoria
4. Se desarrolla un algoritmo de seguimiento-aterrizaje que permite a la plataforma
robótica aérea aterrizar sobre la PA cuando esta describe una trayectoria aleatoria.
5. Se desarrolla un algoritmo de control de altura del vehı́culo aéreo que permite la
relocalización de la PA en caso de que desaparezca del campo visual de la cámara.
Para la consecución de estos objetivos, se han desarrollado dos algoritmos de seguimientoaterrizaje: uno basado en un control PID adaptativo (los parámetros del PID varı́an
decrecientemente con la altura) y otro basado en un control PID predictivo. Este último
precisa de la integración de un Filtro de Kalman (algoritmo de predicción del movimiento), el cual es una adaptación del que desarrolla Garzón ((2)) para el seguimiento
de personas.
1.5.
Estructura de la memoria
La distribución de la memoria es la que se expone a continuación.
En el Capı́tulo 2 se realizará un estudio exhaustivo de los trabajos ya realizados en
el campo de la robótica tratado en este proyecto, esto es, el estado del arte.
Posteriormente, en el Capı́tulo 3, se mostrará la planificación de las tareas necesarias para una correcta ejecución del proyecto, ası́ como el presupuesto del mismo.
En el Capı́tulo 4 se describirá el material hardware y software empleado a lo largo
de este trabajo.
En los siguientes dos capı́tulos se explicarán en detalle los algoritmos de detecciónlocalización (Capı́tulo 5) y de seguimiento-aterrizaje (Capı́tulo 6) desarrollados a lo
largo de este proyecto.
Después, en el Capı́tulo 7, se expondrá cómo se han implementado los algoritmos
desarrollados en el software ROS (Robotic Operating System). Asimismo, se mostrará en
este capı́tulo cuál ha sido el método de trabajo aplicado.
5
1. INTRODUCCIÓN
Tras haber sido ejecutado el proyecto, en el Capı́tulo 8 se mostrarán los experimentos realizados y los correspondientes resultados obtenidos, que tratarán de justificar el
correcto funcionamiento del sistema.
Finalmente, en el Capı́tulo 9 se expondrán las conclusiones obtenidas tras el proyecto, ası́ como posibles lı́neas futuras de trabajo.
6
2
Estado del arte
En los últimos años, el desarrollo de aplicaciones relacionadas con el uso de drones ha aumentado significativamente; en concreto, existe un enorme interés en poder
emplear estos como herramientas de detección y seguimiento de objetos móviles terrestres. Sin embargo, como ya se ha resaltado anteriormente, su baja autonomı́a dificulta
el poder realizar tareas complejas que conlleven más de 15 minutos. Es por ello que
se plantea como una tarea interesante el conseguir aterrizar UAVs sobre PA móviles,
dotándolos ası́ de una mayor versatilidad, y es que en muchos escenarios no es posible
asegurar una zona de aterrizaje amplia y estacionaria.
El aterrizaje sobre una PA móvil puede descomponerse en cuatro etapas: detección
de la misma, localización de esta con respecto al sistema de referencia del vehı́culo
aéreo, seguimiento y, finalmente, aterrizaje. En este capı́tulo se hará un estudio de
los avances realizados hasta el momento en estas materias.
Se comenzará por analizar los métodos de detección de objetos móviles desde el aire,
pasando posteriormente a las tareas de localización. Después se mostrarán los avances
en cuanto a tareas de seguimiento se refiere, para finalizar con un estudio de cómo es
posible aterrizar vehı́culos aéreos de forma autónoma sobre objetivos terrestres móviles.
7
2. ESTADO DEL ARTE
2.1.
Detección de objetos móviles desde el aire
La detección de objetos en movimiento desde robots aéreos se presenta más compleja que si se realizara desde tierra. Ello se debe, principalmente, a que los vehı́culos
aéreos presentan vibraciones, las cuales suponen importantes focos de ruido para los
sensores. Existen, sin embargo, distintos métodos de detección que solventan este y
otros problemas derivados de la detección desde el aire.
Talukder y Matthies (3) distinguen principalmente entre cuatro posibles métodos
para abordar el tratamiento de imágenes dinámicas: métodos de sustracción de fondo,
método de rastreos de rasgos dispersos, técnicas de modelado de fondo y modelos de
movimiento de robot.
Los métodos de sustracción de fondo son usados, en su mayorı́a, con cámaras aéreas
fijas. Fujiyoshi (4) y Cheung (5) emplean este procedimiento para separar imágenes
móviles del fondo. Tratando de solucionar los problemas derivados de los algoritmos de
sustracción de fondo (como el correcto modelado y tratamiento de sombras), Cucchiara
(6) propone un método de propósito general que combina asunciones estadı́sticas con
el conocimiento a nivel objeto de los objetivos móviles en cuestión, ası́ como de objetivos aparentes (“fantasmas”) y sombras que pertenecen a frames anteriores. Los pı́xeles
pertenecientes a i) objetivos móviles, ii) “fantasmas” y iii) sombras son procesados de
forma distinta, de manera que la actualización del fondo sea selectiva. Lo que se consigue es un sistema mucho más rápido, flexible y preciso, tanto en términos de precisión
de los pı́xeles como en tiempo de respuesta a los cambios en el fondo. En la misma
lı́nea, Zhang et al. (7) emplea imágenes logarı́tmico-polares para mejorar los resultados
y la eficiencia de los métodos de estimación por flujo óptico.
Los métodos vistos hasta ahora emplean cámaras estáticas, de manera que los contornos móviles se determinan fácilmente gracias a que los pı́xeles estáticos no cambian
de posición en la imagen. Si, por el contrario, la cámara forma parte de un robot móvil,
el problema de la detección se ha de abordar de forma distinta. En concreto, y con el fin
de tener en cuenta los cambios en la imagen generados por pequeñas variaciones en la
8
2.1 Detección de objetos móviles desde el aire
iluminación o por ligeros movimientos de la cámara, se han de emplear modelos adaptativos. Estos, sin embargo, no están optimizados para cambios demasiados bruscos en
la escena, de manera que se han de imponer ciertas restricciones de movimiento a la
cámara para que funcionen correctamente. Empleando este método, Franke (8) consigue desarrollar un método de detección de obstáculos en tareas de control de tráfico
urbano desde el aire.
Otros métodos que también pueden ser empleados en tareas de detección de objetos móviles desde el aire son los basados en reconocimiento de etiquetas o marcadores
que identifiquen al objetivo. Muñoz-Salinas (9) desarrolla una librerı́a, conocida como
ArUco basada en OpenCV a través de la cual es capaz de detectar estos tags o marcadores (véase Figura 2.1) de manera efectiva y precisa. Sin embargo, y debido a que
el algoritmo funciona determinando distancias entre los rectángulos negros y blancos
del marcador, no responde correctamente en cámaras con baja resolución a distancias
mayores de 3-4 metros. Es por ello que solo son válidos en situaciones en las que el
seguimiento del objetivo terrestre desde la plataforma aérea se haya de ejecutar a una
altura inferior a estos 3-4 metros.
Figura 2.1: Ejemplo de marcador empleado en las librerı́as ARUCO (Universidad
de Córdoba).
Cuando la eficiencia computacional de la cámara empleada es baja, la detección en
tiempo real de objetos dinámicos con cámaras no estacionarias es aun más compleja.
Este es el caso, por ejemplo, de muchos de los dispositivos móviles actuales, los cuales
9
2. ESTADO DEL ARTE
sufren pequeños balanceos al ser sostenidos por una persona. Moo (10) propone un
método para la detección de objetos en movimiento sobre cámaras no estacionarias
que solventa estos problemas. Para conseguir esta capacidad de tiempo real con un
rendimiento satisfactorio, el método propuesto por Moo modela el fondo de la imagen
a través de un modelo Gaussiano sencillo en dual-mode (en inglés dual-mode Single
Gaussian Model - SGM ), compensando el movimiento de la cámara. El modelado a
través de este dual-mode SGM evita que el modelo del fondo sea contaminado con
pı́xeles del primer plano, a la vez que permite al sistema adaptarse a ligeras variaciones en el segundo plano de la imagen. Lo que consigue es un algoritmo con una carga
computacional baja y una alta capacidad en tiempo real, que bien podrı́a ser empleada
en plataformas robóticas aéreas con cámaras con bajas prestaciones.
Por último, es interesante mencionar un nuevo método que combina el cálculo del
movimiento de la cámara (egomotion) basado en puntos estáticos caracterı́sticos, junto
con comparaciones a través de flujo óptico. Con él se puede determinar qué pı́xeles
pertenecen a objetos en movimiento y cuáles a objetos parados. Basándose en este
procedimiento, Huang et al. (11) proponen un procedimiento de diferenciación de frames que, sin embargo, no resultó enteramente funcional, debido principalmente a la
existencia de vibraciones de alta frecuencia en los UAVs actuales.
2.2.
Localización
Una vez detectado el objetivo móvil, se ha de referenciar su posición con respecto a
la cámara. En muchas ocasiones, el empleo de observaciones realtivas se presenta como
la mejor opción, como se observa en los trabajos de Rekleitis (12), Martinelli (13) o
Madhavan (14).
A menudo, y sobretodo en redes de sensores inalámbricos (WSN), estos métodos
de localización relativa dan muy buenos resultados, tales son los casos de los estudios
realizados por Baggio (15) o por Savarese (16). No solo se obtienen buenos resultados
empleando sensores inalámbricos WSN, sino también haciendo uso de redes de cámaras, como muestra Mantzel (17). Este propone un algoritmo distribuido de localización
para la determinación de la posición de elementos individuales, con el cual consigue un
10
2.3 Seguimiento
gran ahorro computacional frente a los enfoques más centralizados.
Sin embargo, el coste computacional se mantiene, generalmente, como uno de los
mayores inconvenientes en el cálculo de las sucesivas posiciones relativas del objetivo.
Técnicas que hacen uso de tan solo una cámara, como la que propone Oztarak (18),
reducen considerablemente este coste computacional. Oztarak diseña un esquema de
localización para una red sensorial inalámbrica basado en el conocimiento de tan solo
la propia localización de la cámara.
Otros métodos basados en el posicionamiento relativo los podemos encontrar en los
trabajos de Baggio et al. (15), quienes desarrollan un sistema de localización de Monte
Carlo. Es también interesante la propuesta de Savarese et al. (16), que proponen el uso
de medidas de alcance o profundidad entre pares de nodos y las coordenadas conocidas
a priori de los nodos ancla dispersos. Lo que consiguen es la estimación precisa de la
posición del objetivo móvil basándose en asunciones previas, ası́ como en comprobaciones y reparametrizaciones iterativas. Sin embargo, el mayor inconveniente que se les
presenta para que la localización sea correcta es, principalmente, la necesidad de contar
como mı́nimo con tres nodos.
Otros estudios, como el llevado a cabo por Rodrı́guez (19), muestran que es posible
realizar la localización de un objetivo dinámico a través de técnicas de localización
relativa robot-robot. Por otro lado, Esteves (20) plantea también la posibilidad de usar
algoritmos de localización absoluta en la detección de objetos móviles. Para ello, presenta una técnica de triangulación basada en el empleo de balizas dispersas a lo largo
del entorno, las cuales no necesariamente han de estar ordenadas.
2.3.
Seguimiento
Conocida la posición del objetivo móvil con respecto a la cámara, el siguiente paso
es el seguimiento del mismo. Probablemente, una de las técnicas más sencillas en el
seguimiento de objetos dinámicos es el empleo de un regulador PID (21). Sin embargo,
en general esto no basta, requieriéndose la implementación de algoritmos de predicción
11
2. ESTADO DEL ARTE
de movimiento.
La segmentación de un mapa de celdas en diferenctes regiones usando alguna variante de un filtro de Kalman se presenta como una de las soluciones más empleadas.
A este respecto, Bobruk (22) desarrolla un algoritmo de seguimiento basado en la segmentación de masas (blob segmentation) para filtrar los objetos localizados. A cada blob
o masa obtenida tras el filtrado se le asignan una serie de parámetros, comunmente su
posición y tamaño, y se calcula su centro de masas. Asimismo, el sistema propuesto ha
de mantener unas hipótesis que reflejen la probabilidad de que ocurran cambios en las
medias del sensor láser. Dichos cambios surgirı́an a causa del movimiento del objetivo
móvil, que bien puede ser una persona o incluso otra plataforma robótica. Estas hipótesis se actualizarı́an empleando un filtro de Kalman para estimar la posición y velocidad
de los objetos, ası́ como un peso especı́fico que indicarı́a la probabilidad de que dicha
hipótesis sea cierta. Al comenzar la tarea de seguimiento, este peso se inicializa con
un valor relativamente bajo, para después ir incrementándolo según la evolución del
sistema.
Otra técnica ampliamente aplicada en tareas de seguimiento es la construcción o
actualización de un mapa de un entorno desconocido a la vez que se mantiene el seguimiento del objetivo móvil dentro de dicho mapa. Esta técnica es conocida por sus
siglas en inglés como SLAM (Simultaneous Localization And Mapping). Existe gran
cantidad de trabajos fundamentados en este procedimiento, donde detección y localización se encuentran estrechamente relacionadas. Vu, Aycard y Appenrodt (23) basan
su algoritmo de seguimiento en la generación de un grid o cuadrı́cula de ocupación, la
cual muestra el mapa del entorno como un campo de variables binarias aleatorias con
las que caracteriza la posible presencia de un objeto en dicha posición. Posteriormente, se emplean técnicas ICP (Iterative Closest Point) para encontrar similitudes entre
escaneos sucesivos, y, finalmente, los objetivos dinámicos son rastreados en base a una
técnica GNN (Global Nearest Neighborhood ), desarrollada en parte por Konstantinova
(24).
Existe un problema similar al SLAM conocido como SLAM-MOT (SLAM Moving
Object Tracking), propuesto por Wang (25). En su trabajo, Wang desarrolla una es-
12
2.4 Aterrizaje
tructuración jerárquica de objetos a través del uso de métodos basados en cuadrı́culas
y técnicas de distinción de caracterı́sticas propias del objeto dinámico en cuestión. Emplea para ello varios modelos de movimiento, los cuales van creciendo en complejidad.
Asimismo, es importante destacar que su algoritmo (SLAM with detection and tracking
of moving objects (DATMO)) descompone el problema de la estimación en dos estimadores distintos. Gracias a esto, el problema de la estimación es dimensionalmente
menor que si se empleara un procedimiento SLAM convencional.
En definitiva, se ha de destacar la importancia de incluir algún tipo de algoritmo
de predicción en la tarea de seguimiento del objeto móvil, y más cuando no solo se
pretende seguirlo sino también aterrizar sobre él.
2.4.
Aterrizaje
El problema del aterrizaje de una plataforma robótica aérea sobre una plataforma
de aterrizaje terrestre es relativamente reciente. Cada vez existen más soluciones que
abordan esta tarea, pero sigue sin conseguirse un método completamente robusto que
sea válido para cualquier situación de aterrizaje. Esto es, no existe una técnica totalmente validada que permita un aterrizaje no solo en lı́nea recta sino también en curva.
Ling et al. (26) intentan dar solución a los problemas que surgı́an en la toma de
fotografı́as de icebergs empleando drones, los cuales eran lanzados desde un barco.
Los vehı́culos aéreos debı́an ser posteriormente rescatados semi-manualmente entre dos
operarios: el primero debı́a encargarse de situarlo cerca de la embarcación, mientras el
segundo debı́a recuperar el vehı́culo aéreo manualmente, con el peligro que ello conllevaba. Ling consigue finalemente desarrollar un algoritmo de aterrizaje de precisión con
el que eliminar por completo la actuación humana en este tipo de situaciones.
Existen algunos otros ejemplos de aterrizajes autónomos de VTOL UAVs (vertical
take-off and landing UAVs) sobre plataformas móviles. Lee, Ryan y Kim (27) se centran
en el uso de cámaras verticales y algoritmos IBVS (image-based visual servoing) para
el seguimiento de una plataforma en un espacio bidimensional; obtienen después la velocidad con la que se mueve la plataforma y, finalmente, usan este dato como referencia
13
2. ESTADO DEL ARTE
para un controlador adaptativo de movimiento deslizante. Comparado con otros algoritmos de control basados en visión que reconstruyen una representación completa en
3 dimensiones del objetivo (los cuales requieren estimaciones de profundidad precisas),
los algoritmos IBVS son menos costosos computacionalmente.
Anteriormente a estos dos trabajos, Saripalli (28) ya trabaja con algoritmos de visión para el aterrizaje autónomo de un helicótero sobre una plataforma móvil. Saripalli
emplea los momentos de inercia de Hu para una detección precisa del objetivo y un
filtro de Kalman para el seguimiento del mismo. Basándose en la salida del algoritmo
de tracking, es capaz de implementar un controlador de trayectoria que asegura el aterrizaje sobre el objetivo móvil.
Es interesante observar que, en la gran mayorı́a de los proyectos que tratan el tema
de la detección y localización de objetos móviles desde quadrotors, se asumen ciertas
simplificaciones. La primera de ellas es asumir como conocida la forma y/o color del
objeto a localizar, puesto que la discriminación de este puede llegar a plantear serias
dificultades. Asimismo, se suele asumir que la velocidad del mismo es lo suficientemente
baja como para que el vehı́culo aéreo sea capaz de aterrizar sobre la PA con la mayor
facilidad posible. Como caso excepcional, en trabajos realizados por el Centro Aeroespacial Alemán (DLR, Deutsches Zentrum für Luft- und Raumfahrt), se ha conseguido
que el UAV sea capaz de aterrizar sobre una red colocada encima de un coche circulando a una velocidad cercana a los 70 km/h, si bien es cierto que este aterrizaje a tan
alta velocidad se realizaba en lı́nea recta.
Este último es un aspecto relevante a considerar, y es que existen diferencias sustaciales entre aterrizajes en trayectoria rectilı́nea, circular o completamente aleatoria.
La mayorı́a de las investigaciones hasta el momento se centran únicamente en un aterrizaje en lı́nea recta, sin asumir en ningún caso que el movimiento del objetivo pueda
ser evasivo o malicioso. Esta serı́a una lı́nea interesante de trabajo, ya que, en tareas de
búsqueda y rescate, el objetivo móvil (generalemente, un UGV), tendrı́a total libertad
de movimiento, al ser capaz el UAV de realizar el aterrizaje en cualquier situación, por
muy complicada que fuera la trayectoria seguida por el primero.
14
3
Planificación y presupuesto
En este captulo se detallan los aspectos relativos a la gestión del proyecto, definiéndose la Estructura de Descomposición del Proyecto (EDP), la planificación temporal (Diagrama de Gantt) y, finalmente, el presupuesto del proyecto.
3.1.
Estructura de Descomposición del Proyecto EDP
La Estructura de Descomposición del Proyecto se muestra en la figura 3.1.
15
3. PLANIFICACIÓN Y PRESUPUESTO
Figura 3.1: Estructura de Descomposición del Proyecto.
3.2.
Planificación temporal. Diagrama de Gantt
Se desarrolla ahora la planificación temporal de las tareas descritas en la EDP, con
el fin de poder encontrar la mejor distribución posible del trabajo a realizar. De cara a
una mejor estructuración de las tareas, estas han sido subdivididas en cuatro bloques
principales: Estudios previos y Aprendizaje, Modelado, Implementación y Validación,
ası́ como en tareas de Gestión del Proyecto.
La duración inicial del trabajo se establece en 11 meses, distribuidos entre septiembre de 2015 y julio de 2016. Debido a que la realización del proyecto se compagina con
la asistencia y preparación de las asignaturas de 4o curso del GITI, se plantean jornadas
laborales de 3-4 horas diarias, aproximadamente.
Durante los periodos de exámenes (enero y junio), la dedicación al proyecto es notablemente menor que en otras épocas, elevándose en otras ocasiones hasta máximos
16
3.2 Planificación temporal. Diagrama de Gantt
de 8-10 horas diarias en meses como febrero y marzo, o finales de junio y julio.
A continuación, se detalla en la figura 3.2 la totalidad de las tareas a realizar. Posteriormente, se organizan estas en un diagrama de Gantt, visible en la figura 3.3. En él
se muestra en color rojo el camino crı́tico de la programación, el cual está formado por
las actividades que no permiten holguras en su realización.
Figura 3.2: Tareas de la planificación temporal.
17
3. PLANIFICACIÓN Y PRESUPUESTO
Figura 3.3: Diagrama de Gantt.
18
3.3 Presupuesto
3.3.
Presupuesto
El cálculo del presupuesto total se representa como la suma de dos términos: el
primero está asociado a los gastos del personal que ha ejecutado el proyecto (véase
Cuadro 3.1), mientras que el segundo engloba los gastos de material tanto hardware
como software (véase Cuadro 3.2). En el caso de las herramientas software, el gasto
será nulo, gracias a ser estas distribuciones enteramente libres. Por último, en el Cuadro 3.3 se muestran los gastos totales del proyecto.
Concepto
e/h
Horas dedicadas
Total (e)
Coste del investigador
Coste del tutor
15
50
350
50
5250
2500
Cuadro 3.1: Gastos personal.
Concepto
Coste unitario (e)
Unds.
% Dedicado
al proyecto
Total (e)
Ordenador MacBook Pro 15”
Sistema Operativo Ubuntu 14.04
Robot Operating System (ROS)
Plataforma robótica Summit XL
Plataforma robótica AR Drone 2.0
1900
0
0
8625
289
1
1
1
1
1
30 %
100 %
100 %
5%
100 %
570
0
0
431.25
289
Cuadro 3.2: Gastos de material.
Gastos de Personal (e)
7750
Gastos de Material (e)
1290.25
Total (e)
9040.25
Cuadro 3.3: Gastos totales.
19
3. PLANIFICACIÓN Y PRESUPUESTO
20
4
Material y Herramientas
En este capı́tulo se describe el material y las herramientas software empleadas en el
trabajo. Primeramente, se tratará la plataforma robótica terrestre utilizada. Después,
el modelo de UAV y, finalmente, el Software empleado. Se hará hincapié en las herramientas software que han sido significativas de cara al desarrollo del sistema robótico,
ası́ como aquellas que han permitido el tratamiento de los datos obtenidos. Se obviará,
sin embargo, el software empleado para la redacción de la memoria.
4.1.
Hardware
Principalmente, se ha trabajado con la plataforma robótica aérea AR Drone (versión 2.0). Adicionalmente, se ha recurrido a la plataforma robótica terrestre Summit
XL, a la que se le ha incorporado una plataforma de aterrizaje de sección cuadrada.
Summit XL
Plataforma robótica de la firma valenciana Robotnik Automation S.L.L. Está dotada de una cinemática diferencial, o skid-steering, basada en cuatro motores independientes, sin escobillas, de alto rendimiento. Dispone además de un sistema de odometrı́a
basado en cuatro encoders y un sensor angular de alta precisión montado en el interior
del chasis.
El robot ofrece la posibilidad de navegar autónomamente o ser teleoperado mediante
una cámara Pan-Tilt-Zoom, que transmite el vı́deo en tiempo real. Además, el Summit
21
4. MATERIAL Y HERRAMIENTAS
XL utiliza una arquitectura de control abierta y modular basada en ROS. En la Figura
4.1 se muestra este robot.
Por último, cabe señalar que el robot cuenta con un ordenador Intel DN2800MT,
con sistema operativo Linux instalado y una placa base mini-ITX. Este ordenador se
completa con una memoria RAM de 4Gb y un disco duro 2.5” SATA HDD.
Figura 4.1: Plataforma robótica terrestre Summit XL. El ordenador de abordo
y la IMU se encuentran en el interior del chasis. El láser de gran alcance Hokuyo y la
cámara fotónica TOF están montados en la parte superior delantera; las dos antenas (GPS
y comunicación), en la parte superior trasera.
Fuente: http://www.robotnik.eu/mobile-robots/summit-xl-hl/
AR Drone 2.0
Se trata de un vehı́culo aéreo no tripulado radiocontrolado de la firma francesa
Parrot (véanse Figuras 4.2a y 4.2b). Cuenta con cuatro motores eléctricos en configuración cuadricóptero, un microprocesador y diferentes sensores, entre los cuales se
incluyen dos cámaras, una frontal y otra ventral. Asimismo, cuenta con un módulo WiFi que le permite vincularse a dispósitivos móviles (smartphones o tablets) que cuenten
con los sistemas operativos iOS, Android o Linux.
22
4.1 Hardware
(a)
(b)
Figura 4.2: AR Drone 2.0 con cubierta para (a) interiores y para (b) exteriores.
Fuente: http://iapps.scenebeta.com/noticia/ar-drone-el-cuadrocoptero-teledirigido-por-tu-iphone-ipod-touch-ipad
Con respecto a su aspecto fı́sico, cuenta con un soporte en forma de cruz de fibra de
carbono y con dos carcasas intercambiables de espuma de polipropileno. Una está concebida para proteger las hélices de posibles impactos en vuelos en interiores; la otra,
mucho más pequeña, está optimizada para el vuelo en espacios abiertos, por su mayor
aerodinamismo.
A continuación, se detallan las especificaciones de esta plataforma robótica aérea.
Especificaciones fı́sicas
El aparato mide 52.5 x 51.5 cm con la carcasa de interiores y 45 x 29 cm tanto si
lleva la de exteriores como si no lleva ninguna de ellas. Con respecto a su peso, este es
de 420 g con la carcasa de interiores y 380 g con la de exteriores. Es capaz de alcanzar
una velocidad máxima de marcha de 5 m/s (18 km/h). Por otro lado, la altura máxima
que puede alcanzar el aparato (limitada por la conexión Wi-Fi) se sitúa entre 50 y 120
m, dependiendo de las condiciones atmosféricas. Con respecto a la autonomı́a de vuelo,
el valor promedio es de 12 minutos.
23
4. MATERIAL Y HERRAMIENTAS
Sistema informático integrado
El quadrotor incorpora un microprocesador ARM Cortex A8 de 32 bits a 1 GHz con
DSP de vı́deo TMS320DMC64x a 800 M Hz. Asimismo, consta de una memoria RAM
DDR2 de 1 GB a 200 M Hz y de sistema operativo con núcleo Linux. Para vincularse
con otros dispositivos de control, cuenta con un Módem Wi-Fi b g n. Por otro lado, un
conector USB de alta velocidad permite al robot descargar el vı́deo recogido durante el
vuelo en dispositivos de almacenamiento de datos.
Sistema de guı́a inercial
Para el guiado inercial, el AR Drone 2.0 hace uso de un acelerómetro de 3 ejes
construido con tecnologı́a MEMS (sistemas micro-electromecánicos), un girómetro de
2 ejes y otro de precisión de 1 eje para el control de guiñada.
Sistema de seguridad
Como ya se ha comentado previamente, para evitar daños por colisión el usuario
puede optar por una cubierta para vuelo en interiores que protege las hélices. Por otro
lado, en caso de colisión, la aeronave recurre a un sistema de bloqueo automático de
las hélices. Asimismo, el usuario puede acceder, a través de un controlador o joystick,
a un servicio de emergencia que hace descender al robot de forma segura.
Estructura aerodinámica
Además de contar con cuatro hélices de alta eficiencia, el cuerpo del vehı́culo tiene
una estructura tubular de fibra de carbono que mejora su respuesta ante corrientes de
viento elevadas.
Motores y fuente de energı́a
El AR Drone incorpora 4 motores de rotor interno (inrunner ) sin escobillas, los
cuales trabajan a 28500 rpm con una potencia de 14.5 W . Con respecto a la baterı́a, se
emplea una Li-Po, siendo esta capaz de entregar 1500 mA/h a un voltaje nominal de
11.1 V . Como ya se ha mencionado anteriormente, esto proporciona al quadrotor una
autonomı́a de vuelo de entre 12 y 15 minutos. Por otro lado, la capacidad de descarga
de dicha baterı́a es de 10 C, y su tiemo medio de carga de 90 minutos.
24
4.1 Hardware
Cámara frontal
La cámara frontal HD 720p, muestra una respuesta en frecuencia de 30 f ps (cuadros/s).
Además, permite la codificación y transmisión en vivo de imágenes. En la Figura 4.3
se muestra esta cámara frontal.
Figura 4.3: Cámara frontal del AR Drone 2.0.
Fuente: http://www.windowscentral.com/review-parrot-drone-quadricopter-windows-tablet
Cámara ventral
Cámara con sensor CMOS de alta velocidad de lente diagonal con 64 grados de
amplitud y una resolución de 176x144 pı́xeles. Muestra una respuesta en frecuencia de
60 cuadros/s. En la Figura 4.4 se muestra esta cámara ventral.
Figura 4.4: Cámara ventral del AR Drone 2.0.
25
4. MATERIAL Y HERRAMIENTAS
Altı́metro por ultrasonido
Su frecuencia de emisión es de 40 kHz. En las especificaciones se describe un alcance de 6 m. En la Figura 4.5 se puede apreciar el sensor de ultrasonidos que emplea el
vehı́culo para la medida de su altitud.
Figura 4.5: Sensores de ultrasonidos del AR Drone 2.0. Está posicionado en la parte
delantera inferior del robot.
Fuente: https://www.ifixit.com/Device/Parrot_AR.Drone
Magnetómetro
Magnetómetro de 3 ejes, con precisión de 6o y un sensor de presión de +/− 10 P a
(80 cm a nivel del mar).
4.2.
Software
Este proyecto ha sido desarrollado bajo el Sistema Operativo (SO) Ubuntu 14.04
LTS (Long Term Support). Ubuntu, sistema operativo Linux basado en Debian, se distribuye como software libre e incluye su propio entorno de escritorio, conocido como
Unity. Quizás, el elemento más caracterı́stico y más usado en todos los SO derivados
de Unix es probablemente el intérprete de comandos o terminal, conocida comunmente
en inglés como shell.
26
4.2 Software
La terminal de los SO GNU/Linux, denominada por sus creadores bash (Bourne
Again Shell ), sirve de interfaz no gráfica entre usuario y sistema operativo. Aunque
inicialmente pueda parecer más difı́cil trabajar en ella que empleando el ratón, agiliza mucho las tareas a realizar, sobretodo cuando se emplean herramientas complejas
como ROS, el framework empleado en este proyecto y que describiremos a continuación.
Las razones de la elección de este sistema operativo en concreto son dos: la primera
y más importate es que Ubuntu soporta el framework ROS (Robotic Operating System).
El segundo motivo es que, como ya se ha visto, se trataba de la versión LTS más estable
de Ubuntu en el momento en que se inició el proyecto, y para la cual se ofrecerá soporte
hasta principios del año 2019.
En lo que resta de capı́tulo se explicará detalladamente lo que es ROS, ası́ como sus
herramientas más importantes y alguna de las librerı́as más destacadas en el campo de
la robótica.
ROS (Robotic Operating System) es una potente infraestructura de desarrollo de
software para robots. Otra definición posible es la de “metasistema operativo”, en tanto
que posee muchas de las caracterı́sticas de los SO, pero requieriendo la existencia de
un verdadero SO por debajo para poder funcionar. Cuenta, además, con licencia BSD
(Berkeley Software Distribution), esto es, es open-source. Nótese que, a diferencia del
otro tipo básico de licencia de software libre, GPL (Gnu Public License), la BSD es
menos restrictiva y más flexible en muchos aspectos.
La elevada modularidad de ROS y la gran cantidad de librerı́as existentes en la red
permiten el aprovechamiento de trabajos y desarrollos anteriores realizados bajo este
framework de desarrollo de robots. Además, gracias a los simuladores y las herramientas de visualización que incorpora, el trabajo de simulación previo a la implantación
en la realidad de los códigos desarrollados resulta verdaderamente sencillo. No solo eso,
sino que ROS también permite multilenguaje en sistemas multiplataforma.
La versión de ROS empleada en este proyecto ha sido ROS indigo, soportada por
Ubuntu 14.04 LTS. Independientemente de la versión, ROS siempre busca facilitar la
27
4. MATERIAL Y HERRAMIENTAS
reutilización de código en tareas de desarrollo e investigación en el campo de la robótica,
ası́ como la abstracción del hardware. Todo ello resultando en un sistema que se basa
en:
1. Una serie de ejecutables (conocidos como nodos) diseñados de manera independiente y que publican o se subscriben a flujos de información (conocidos como
topicos).
2. Un nodo principal que coordina toda la estructura que el usuario decida diseñar.
3. Una serie de herramientas para crear, compilar y ejecutar código en uno o varios
ordenadores.
4. La posibilidad de organizar los nodos en Paquetes (Packages), de manera que la
estructura de código sea más modular y reutilizable.
Los nodos pueden ser desarrollados en cualquier lenguaje, aunque los más extendidos
son:
C++: es el más común. Al requerir del programador un mayor control sobre la
memoria, resulta en aplicaciones con un rendimiento muy elevado.
Python: debido a que favorece la rapidez en el desarrollo sobre el rendimiento
final, está muy extendido a la hora de diseñar prototipos.
Como se vio antes, ROS ofrece una gran cantidad de herramientas que facilitan el
manejo y desarrollo de los nodos:
tf: paquete que permite trabajar con múltiples sistemas coordenados en el tiempo,
manteniendo las relaciones que existen entre ellos en forma de árbol (véase Figura
4.6). Además, permite fácilmente realizar transformaciones de puntos o vectores
de un sistema coordenado a otro.
rviz: herramienta de visualización en 3D que facilita la visión de la disposición
de los distintos sistemas coordenados dados por tf, ası́ como las medidas de los
distintos sensores, tópicos en los que se está publicando información representados
en forma de marcadores, etc. En la Figura 4.7 se puede ver el aspecto de su
interfaz.
28
4.2 Software
Figura 4.6: Ejemplo de esquema en árbol generado por la herramienta tf. Se
pueden observar los distintos frames de árbol tf dentro de elipses; en este caso, pertencen
al AR Drone 2.0.
Figura 4.7: Ejemplo de simulación en la herramienta rviz de ROS.
rosbag: se emplea para la grabación y muestreo de datos de una sesión. Poste-
29
4. MATERIAL Y HERRAMIENTAS
riormente, estos datos pueden ser relanzados, de forma que se recree por completo
la situación antes grabada.
rqt plot: sirve para el trazado en vivo de gráficas. Por ejemplo, se puede emplear
para mostrar la velocidad del robot en cuestión con respecto al tiempo.
rqt graph: muestra el sistema de nodos y tópicos que están en ejecución en el
momento de lanzarse dicha herramienta.
gazebo: simulador en 3D. Permite, entre otras cosas, simular conjuntos de robots
y sensores en escenarios complejos, generando respuestas realistas de las interacciones fı́sicas. En la Figura 4.8 podemos ver un ejemplo de simulación.
Figura 4.8: Ejemplo de simulación Gazebo.
Por último, se ha de mencionar la librerı́a de visión OpenCV (Open Source Computer Vision), también con licencia BSD. Surgen con el objetivo de servir como ayuda
para el tratamiento y análisis de imágenes en aplicaciones de visión por computador
30
4.2 Software
en tiempo real. Es interesante destacar que la necesidad de una gran eficiencia computacional ha obligado a que estén escritas en C/C++ optimizado.
La librerı́a cuenta con más de 2500 algorimtos perfectamente optimizados, los cuales
pueden ser usados para tareas de detección, identificación o clasificaciones de movimientos humanos. Asimismo, algunas consiguen hacer tracking de objetos, extraer modelos
3D de los mismos, producir nubes de puntos 3D a partir de cámaras estéreo o incluso
la identificación de imágnes similares pertenecientes a una base de datos.
31
4. MATERIAL Y HERRAMIENTAS
32
5
Algoritmo de
Detección-Localización
Este capı́tulo describe la sub-tarea de detección y localización de un objetivo móvil,
en este caso, una plataforma de aterrizaje terrestre. El algoritmo emplea información
tomada por la cámara vertical y el sensor de altura, incorporados ambos en el UAV
modelo AR Drone 2.0. Nótese que la explicación detallada de la implementación del
algoritmo en los sistema simulado (Gazebo) y real se lleva a cabo en el Capı́tulo 7,
tratándose este capı́tulo de un acercamiento a alto nivel.
5.1.
Detección
La estrategia de detección seguida en este trabajo se ha basado en el método de
binarización por umbral de matiz, saturación e intensidad de la imagen. El objetivo
final es la obtención de una imagen binaria en blanco y negro en la que se visualicen en
blanco aquelos pı́xeles pertenecientes a la plataforma de aterrizaje, gracias a que todos
ellos poseen el mismo color. En concreto, se ha elegido el color rojo, debido a que es
fácilmente detectable casi en cualquier entorno.
Posteriormente, se realizarán sucesivas acciones de filtrado para eliminar el posible
ruido y ası́ poder finalmente calcular el centro geométrico de la plataforma. Dicho punto
será el que caracterice a la plataforma de aterrizaje.
33
5. ALGORITMO DE DETECCIÓN-LOCALIZACIÓN
Por último, se remarcará el perfil del objetivo móvil. Ello permitirá al usuario del
sistema verificar rápidamente si el algoritmo está funcionando correctamente.
A continuación, se explica paso por paso el proceso seguido por el algoritmo de
detección-localización para obtener el centroide del objetivo móvil. Sin embargo, antes
de entrar a describir el algoritmo en detalle, se ha considerado necesario presentar una
breve introducción sobre la Teorı́a del Color, pues sobre ella se sustenta el algoritmo
desarrollado.
5.1.1.
Teorı́a del Color
En el tratamiento de imágenes, el primer paso a dar es la elección de modelo de color
con el que se querrá trabajar. Entre los modelos de color más habituales se encuentra
el RGB y los HSx.
El más común es el RGB (Red, Green, Blue), basado en la adición de colores. En
este modelo, la obtención de un color determinado se realiza a través de la combinación de intensidades de rojo, verde y azul, entendidos estos como colores primarios. Su
espacio de color suele representarse a través de un cubo (véase Figura 5.1).
En dicho cubo, las intensidades de los tres colores primarios pueden tomar valores
de 0 a 255; de esta manera, cada color se identifica por un vector de tres componentes.
El inconveniente de este modelo es que no guarda relación con la forma en la que el
ser humano percibe los colores. Además, este un modelo no uniforme sensorialmente,
entendiendo este término como lo describe van den Broek en su trabajo (29). Independientemente de su uniformidad sensorial, en el tratamiento de imágenes por computador
es recomemdable emplear uno de los espacios de color HSx.
Estos espacios HSx (HSI, HSV, HSB y HSL) se diferencian del espacio RGB en el
hecho de que guardan una relación mayor con lo que es la percepción visual del ser
humano, aunque tampoco son uniformes sensorialmente. Su caracterı́stica fundamental
34
5.1 Detección
Figura 5.1: Espacio de color RGB. Los 3 ejes coordenados del cubo representan los
niveles de intensidad de color rojo, verde y azul, medidos de 0 a 255. El origen del coordenadas representa el color negro (0,0,0).
Fuente: https://migsar.wordpress.com/tag/color-cromatico/
es que permiten diferenciar entre la intensidad de la imagen (luminancia) y la información relativa a esta (crominancia).
Los parámetros de estos espacios de color HSx son los siguientes: matiz, saturación
y claridad del color (también conocidos como valor, brillo e intensidad). Asimismo, la
diferencia entre cada uno de los espacios HSx es únicamente la transformación que se
aplica con respecto al espacio de color RGB. En cualquier caso, en este proyecto se
trabajará con el espacio de color HSV (Hue, Saturation, Value). Aunque se puede representar con diferentes formas, la más conocida es el cono HSV (véase Figura 5.2).
El matiz (o Hue), representado como un ángulo comprendido entre 0 y 360o , aporta
el componente del color como tal. Por ejemplo, el matiz del color rojo es de 0o . Por
otro lado, la saturación (o Saturation) se representa a través de la distancia al eje del
cono, estando sus valores comprendidos entre el 0 y el 100 %. Cuanto menor sea la saturación de un color determinado, mayor tonalidad grisácea poseerá y más decolorado
se apreciará al ojo humano. Finalmente, el valor (o Value) aparece representado en el
cono HSV como la altura, estando sus valores comprendidos entre el 0 y el 100 %. Ası́,
35
5. ALGORITMO DE DETECCIÓN-LOCALIZACIÓN
Figura 5.2: Espacio de color HSV. Espacio de color HSV en forma de cono, donde el
matiz (hue) se muestra en forma de ángulos, la saturación (saturation) como separación
respecto del eje del cono y el valor (value) como altura en el cono.
Fuente: https://migsar.wordpress.com/tag/color-cromatico/
el color negro poseerá 0 % de la componente de valor, mientras que el color blanco se
caracterizará por tener un 100 % de su componente de valor.
La mayor ventaja de trabajar con el modelo de color HSV es que los cambios en la
iluminación del entorno o la aparación de sombras no afectan a la selección de color al
aplicar umbrales lı́mite. Por tanto, lo primero que se debe realizar tras la recepcción de
la imagen es su conversión de RGB a HSV, para lo cual se emplean las fórmulas 5.1,
5.2 y 5.3.
"
−1
H = cos
(1/2) [(R − G) + (R − G)]
p
2
(R − G)2 + (R − B)(G − B)
S =1−
3
[min(R, G, B)]
R+G+B
1
V = (R + G + B)
3
36
#
(5.1)
(5.2)
(5.3)
5.1 Detección
De cara a la implantación de estas transformaciones en el código, se empleará la
función cvtColor(fuente, destino, CV BGR2HSV) de la librerı́a OpenCV.
5.1.2.
Desarrollo del algoritmo
Una vez que la imagen ha sido convertida a formato HSV, es necesario decidir cuál
será el proceso óptimo para la extracción de los pı́xeles pertenecientes al objetivo. Esta
decisión será distinta en cada caso particular, pero se pueden diferenciar tres parámetros fundamentales que deberán guiar toda decisión: color, tamaño y forma del objetivo
a detectar.
A continuación, se explican cuáles son los procesos que sigue la imagen hasta llegar a la detección final de la plataforma. Asimismo, se quiere hacer notar que todo
aquello que se desarrolle en esta sección es válido tanto para la detección de la plataforma de aterrizaje en el sistema simulado (véase Figura 5.3a) como para la plataforma
real (véase Figura 5.3b), con pequeños matices que se irán resaltando a medida que se
avance en la explicación. Asimismo, a lo largo de la explicación se irá haciendo referencia a diferentes funciones pertenecientes a la librerı́a de visión por computador OpenCV.
(a)
(b)
Figura 5.3: Vista aérea de la plataforma de aterrizaje (a) en el simulador Gazebo y (b)
en la realidad.
37
5. ALGORITMO DE DETECCIÓN-LOCALIZACIÓN
El primer paso tras la conversión de la imagen original al modelo de color HSV
será el filtrado de la misma. El objetivo de este filtrado será la obtención de una nueva
imagen en la que estén resaltados los pı́xeles cuyo color original se corresponda con los
de la PA. Para ello, se empleará la función inRange, que comprueba si las componentes
HSV de cada pı́xel se encuentran dentro de un determinado intervalo. En caso de que
sea ası́, en la imagen destino se le asignará un 1 al pı́xel en cuestión, asignándole 0 en
caso contrario.
Posteriormente, será necesario eliminar el ruido existente en dicha imagen. Esto
será especialmente importante en el sistema real, sin llegar a ser estrictamente necesario en el sistema simulado. Para la eliminación de este ruido, una opción es emplear
en serie las funciones erode y dilate. La primera contrae los contornos del área blanca
(pı́xeles con valor de 1) calculando los mı́nimos locales de la imagen con un elemento estructural o kernel. Tras su aplicación, se consigue eliminar las pequeñas imperfecciones
irrelevantes. Por el contrario, la función de dilatación calcula los máximos locales de la
imagen, expandiendo ası́ las “zonas blancas”. La aplicación de una erosión seguida de
una dilatación consigue eliminar las pequeñas imperfecciones y, a continuación, dilatar
la nueva imagen sin ruido para recuperar las dimensiones iniciales (proceso de opening).
Otra alternativa interesante es la aplicación de la función medianBlur, que es la
implementación de un filtro de mediana. Este algoritmo recorre todos los pı́xeles de la
imagen y sustituye sus valores por la mediana de los valores de los pı́xeles vecinos. El
resultado es una imagen suavizada con bordes más redondeados.
En la resolución de este proyecto, la solución empleada para el sistema real es el
proceso de opening (sucesivas aplicaciones de procesos de erosión-dilatación). Para el
sistema simulado se ha empleado el filtro de mediana, ya que el ruido en la imagen es
notoriamente menor que en la realidad y no se requiere erosionar previamente la misma
para eliminar imperfecciones.
En las Figuras 5.4 se muestra el proceso de acondicionamiento de la imagen para el
sistema simulado. Aunque las imágenes previas a la aplicación de la función medianFilter no poseen irregularidades excesivas, sı́ se puede apreciar cómo en la Figura 5.4d las
38
5.1 Detección
esquinas son ligeramente más redondeadas. En cualquier caso, la aplicación del filtro de
mediana en este caso podrı́a ser perfectamente prescindible, habiéndose realizado para
mantener una mayor similitud con el caso real.
(a)
(b)
(c)
(d)
Figura 5.4: Tratamiento de la imagen en el sistema simulado: (a) Imagen convertida al
modelo de color HSV; (b) Imagen filtrada por el canal H para obtener solo los pı́xeles rojos
de la imagen original; (c) imagen negada; y (d) resultado tras el filtro de mediana.
En la Figura 5.5 se muestra el proceso de acondicionamiento de la imagen en el
sistema real. Para la aplicación de los procesos de erosionado (Figura 5.5c) y dilatación
(Figura 5.5d) se han de seleccionar dos parámetros: la forma del elemento estructural
o kernel (rectangular, en forma de cruz o elı́ptica) y el tamaño del mismo. De forma
empı́rica, se selecciona la combinación mostrada en el Cuadro 5.1.
39
5. ALGORITMO DE DETECCIÓN-LOCALIZACIÓN
(a)
(b)
(c)
(d)
(e)
(f )
Figura 5.5: Tratamiento de la imagen en el sistema real: (a) modelo de color HSV; (b)
filtro por los canales HSV para obtener solo los pı́xeles rojos de la imagen original; (c)
resultado tras una primera erosión; (d) resultado tras la dilatación posterior; (e) resultado
tras la aplicación de 3 procesos más de erosión-dilatación; y (f ) resultado tras la aplicación
de un filtro de mediana.
Forma del Kernel
Tamaño del Kernel
Erosión
Dilatación
Rectangular
5
Elipsoidal
5
Cuadro 5.1: Parámetros elegidos para las funciones erode y dilate.
40
5.1 Detección
Tras haber realizado el proceso de acondicionamiento de la imagen, se puede proceder a la búsqueda del centroide de la plataforma de aterrizaje. Para ello, será necesario
primero hallar los contornos existentes en la imagen ya acondicionada y, después, aproximar dichos contornos por polı́gonos. Finalmente, se podrá hallar el centroide de dicho
polı́gono.
La búsqueda y acumulación de los contornos existentes en la imagen se realiza
empleando la función findContours, que devuelve un vector con todos los contornos
encontrados. Posteriormente, se emplea la función approxPolyDP para la obtención de
un polı́gono que se asemeje a la forma detectada. De todos los polı́gonos encontrados,
solo se considerará como válido aquel que verifique las siguientes tres condiciones:
Que su número de lados se encuentre dentro de un intervalo definido por el usuario
del sistema. En este trabajo se ha calculado que dicho rango debe ser de 3 a 4
lados.
Que el área del polı́gono detectado (calculada mediante la función contourArea)
sea similar a la del objetivo real con un intervalo de seguridad del 30 %.
Que, con el fin de asegurar estimaciones precisas, la detección del polı́gono en
cuestión se haya llevado a cabo en condicones de vuelo favorables, a saber:
1. Que los ángulos de inclinación del UAV se encuentren por debajo de un valor
determinado.
2. Que las velocidades angulares en x y en y se encuentren por debajo de un
valor determinado.
3. Que las aceleraciones angulares en x y en y se encuetren por debajo de un
valor determinado.
En caso de que alguno de los polı́gonos detectados cumpla estas condiciones, será reconocido como la plataforma de aterrizaje. Se podrá entonces proceder al cálculo de su
centroide y a su posterior señalización de cara a informar al usuario del sistema que la
detección ha tenido éxito.
41
5. ALGORITMO DE DETECCIÓN-LOCALIZACIÓN
Para el cálculo del centroide se emplea la función moments. Esta función se sirve
de la Expresión 5.4 para el cálculo de momentos de hasta tercer orden. En este caso, se
calcularán los momentos de primer orden, para posteriormente dividirlos entre su área
(M00 ) (véase Expresión 5.5) y ası́ obtener el centroide (x, y) en pı́xeles.
Mji =
X
x=
(array(x, y) · xj · y i )
M10
,
M00
y=
(5.4)
M01
M00
(5.5)
A continuación, se muestran los resultados de esta etapa de detección-localización,
tanto para el sistema simulado como para el real (véase Figura 5.6).
(a)
(b)
Figura 5.6: Resultado final de la detección de la plataforma de aterrizaje (a) en el sistema
simulado y (b) en el sistema real
42
5.2 Localización
5.2.
Localización
Esta etapa tiene como entrada el centroide anteriormente encontrado, el cual representa al objetivo móvil. Dicho centroide está definido como un punto dentro de la
matriz de pı́xeles que se obtiene con la cámara. Este dato no es fácilmente manejable
de cara a la realización de los cálculos, de manera que es necesario tratarlo. El objetivo
será obtener la posición de la plataforma de aterrizaje respecto al sistema de referencia
de la cámara.
Para ello, se emplea un algoritmo basado en la inversión del modelo Pinhole, el cual
describe la relación matemática entre un punto en el espacio y su proyección sobre el
plano imagen de una cámara (véase Figura 5.7).
Figura 5.7: Distribución del punto objetivo P(X,Y,Z) con respecto a los planos usados en
el modelo.
De la tesis de Yannick Morvan (30) se puede obtener el siguiente marco teórico.
Asimismo, el modelo de Pinhole en su forma matricial se puede observar en la Ecuación
5.6.
43
5. ALGORITMO DE DETECCIÓN-LOCALIZACIÓN
u
f τ
λ
=
v
0 ηf
σx
σy
 
X
Y 
Z
(5.6)
Donde λ es el factor de escala, (u, v)T es la proyección del punto sobre el plano imagen expresada en pı́xeles, f es la distancia focal en pı́xeles, τ es el parámetro que indica
si los pı́xeles están torcidos o sesgados (valiendo 0 cuando no lo están), (σx , σy )T son
las coordenadas del centro óptico de la cámara. Por último, η indica la forma del pı́xel,
siendo estos cuadrados cuando η vale 1 (véase Figura 5.8), y (X,Y,Z) las coordenadas
de la plataforma de aterrizaje respecto de la cámara del UAV.
Figura 5.8: (a) Sistema coordenado de la imagen (x,y) y de la cámara (u,v ). (b) Representación de pı́xeles no cuadrados y sesgados.
Para la obtención de los paŕametros de la cámara ventral del AR Drone 2.0 se requirió la calibración de la misma. Se empleó para ello el paquete camera calibration de
ROS, el cual permite al usuario la obtención de resultados muy precisos con simples
movimientos de traslación y rotación de una checkboard (véase Figura 5.9) en frente de
la cámara que se quiere calibrar. Este tablero o checkboard ha de ser de dimensiones
44
5.2 Localización
conocidas, las cuales han de introducirse como parámetros al lanzar el nodo ROS del
paquete de calibración. En la Figura 5.10 se muestra la secuencia de movimientos recomendada para una calibración óptima de la cámara.
Figura 5.9: Checkboard empleada para la calibración de la cámara ventral del AR DRone
2.0.
Figura 5.10: Secuencia de movimientos recomendada para una calibración óptima de la
cámara.
Fuente:
http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration
45
5. ALGORITMO DE DETECCIÓN-LOCALIZACIÓN
Una vez obtenidos los parámetros de la cámara a través del proceso de calibración
y teniendo en cuenta el valor de la altura del UAV, se pasa a resolver el sistema de
ecuaciones. Se invierte la matriz, se sustituye (u, v)T por las coordenadas del centroide
calculadas en la etapa anterior de detección y, finalmente, se obtienen las coordenadas
buscadas P(X,Y,Z), posición del centroide de la plataforma de aterrizaje respecto de la
cámara del UAV.
46
6
Algoritmo de
Seguimiento-Aterrizaje
En este capı́tulo se describen dos algoritmos que permiten realizar el seguimiento
de la plataforma móvil, ası́ como la posterior maniobra de aterrizaje. Nótese que la
explicación detallada de la implementación de dichos algoritmos en los sistema simulado (Gazebo) y real se lleva a cabo en el Capı́tulo 7, tratándose este capı́tulo de un
acercamiento a alto nivel.
El primer algoritmo de seguimiento-aterrizaje desarrollado se basa en un control
PID adaptativo sin acción predictiva, mientras que el segundo se ayuda de un algoritmo de predicción desarrollado por Garzón et al.(2) y que pretende ser una mejora
del primero. Se ha de hacer incapié, sin embargo, en que lo único que los diferencia es
el dato de entrada: mientras que el primero recibe la posición del centroide de la PA
respecto de la cámara, el segundo tiene como input la posición futura de dicho centroide
referenciada al sistema del mundo.
En cualquier caso, ambos algoritmos comparten la misma estructura basada en
una máquina de estados, pudiéndose distinguir 5 estados diferentes: IDLE, TAKINGOFF, TRACKING y LANDING, además de un estado de SEARCHING. A continuación, se explican en detalle los mismos.
47
6. ALGORITMO DE SEGUIMIENTO-ATERRIZAJE
6.1.
Máquina de Estados
El primero, IDLE, es el estado de reposo del quadrotor y es su estado por defecto.
Asimismo, el UAV podrá también pasar a encontrarse en él una vez haya aterrizado
correctamente.
Solo si el usuario ası́ lo desea, indicándolo a través de la pulsación de un botón de
despegue, se podrá pasar al estado de TAKINGOFF, que representa el periodo durante
el cual el vehı́culo aéreo está despegando. Durante este estado, independientemente de
si la PA entrara o no en el campo de visión del UAV, el sistema de seguimiento como
tal se encuentra inhabilitado. De esta manera, se asegura una maniobra de despegue
segura y lo más vertical posible.
Una vez el dron ha alcanzado una altura determinada (prefijada por el usuario),
el estado del quadrotor cambia automáticamente a TRACKING. Es a partir de este
momento cuando se dará luz verde a que el algoritmo de seguimiento-aterrizaje comience a funcionar. Ello permitirá calcular la velocidad que será necesario aplicar al
vehı́culo aéreo (velocidad tanto en x como en y) para que este reduzca su distancia con
el centroide de la PA. Es importante destacar que durante el estado de TRACKING el
dron se mantiene a una altura constante.
Finalmente, y solo si el usuario lo considera oportuno (pulsando el botón de aterrizaje), el estado del UAV cambiará a LANDING. A partir de este momento, el quadrotor
comenzará la maniobra de aterrizaje. Durante la misma, el sistema de seguimiento
seguirá activo, tanto para el caso del algoritmo sin predicción como para el que la incluye. La única diferencia ahora es la adición de un control de altura (véase Sección
6.4), que permitirá al UAV ir descendiendo hasta la plataforma de aterrizaje con unas
velocidades en x, en y y en z determinadas por la franja de altura en la que se encuentre.
De cara a poder decidir cuándo se ha aterrizado, se verifica si la diferencia entre dos
posiciones consecutivas de la plataforma de aterrizaje (respecto al cuerpo del UAV) es
muy próxima a cero. En tal caso, se pondrán a cero las velocidades del UAV (x,y,z) y
pasará a estado IDLE, esperando a que el usuario indique el comienzo de un nuevo ciclo
48
6.2 Control PID adaptativo
de rastreo (despegue - seguimiento de la plataforma de aterrizaje a la vez que realiza
una posible toma de datos del terreno - aterrizaje).
Finalmente, y con el fin de hacer más robusto el sistema, se implementó un estado
de SEARCHING, al cual el UAV accederá si la diferencia de tiempo entre el instante
actual y el instante en el que se recibió la última posición de la PA es mayor que un
determinado valor (se ajustó a 1.5 s). En caso de que, efectivamente, pasen estos 1.5
s sin recibirse nuevos mensajes de la posición del objetivo, el UAV comenzará a ganar
altura hasta que su campo de visión le permita detectar y localizar de nuevo la PA. Una
vez relocalizado, irá descendiendo lentamente (tratando de no perder de la imagen a la
PA) hasta situarse en la altura de seguimiento fija, parámetro que elige el usuario del
sistema. En la sección Control de Altura (véase Sección 6.4) se explica más en detalle
este sistema de relocalización.
Tras haberse presentado el esquema general de ambos algoritmos (sin y con predicción), a continuación se presentarán en detalle las diferencias básicas entre ellos. Se
quiere hacer notar que el motivo de mantener esta distinción es que el algoritmo de
seguimiento-aterrizaje sin predicción presenta muy buenos resultados en aterrizajes con
trayectorias rectilı́neas de la plataforma (véase Sección 8), siendo innecesaria la carga
computacional extra que supondrı́a la introducción del algorimto de predicción. Sin embargo, la respuesta de dicho algoritmo sin predicción no es perfecta ante movimientos
circulares o aleatorios de la PA a velocidades elevadas de la misma, algo que se corrige
al introducir un filtro de Kalman.
6.2.
Control PID adaptativo
En esta sección se presenta un algoritmo de seguimiento-aterrizaje basado en un
control PID adaptativo, cuyos parámetros (Kp , Ki y Kd ) varı́an en función de la altura
del UAV. El motivo de esta elección es que el seguimiento de la PA sea óptimo a
cualquier altura de vuelo y, especialmente, durante la maniobra de aterrizaje.
49
6. ALGORITMO DE SEGUIMIENTO-ATERRIZAJE
6.2.1.
Desarrollo del algoritmo
Como se expuso en el Capı́tulo 5, el punto obtenido tras la finalización de la etapa
de detección-localización es la posición de la PA con respecto a la cámara. Por ello,
si lo que se necesita es emplear dicha posición como referencia para el control PID,
será necesario previamente transformar las coordenadas de dicho punto al sistema de
referencia del cuerpo del quadrotor. Una vez realizada esta transformación, se estará en
disposición de calcular el error de posición, definido en este caso como la distancia entre
el UAV y el centroide de la plataforma de aterrizaje en el plano xy.
Posteriormente, se empleará este error de posición para calcular los comandos de
velocidad en x y en y que habrán de ser aplicados al UAV en cada instante. Como se ha
mencionado anteriormente, el cálculo de dichos valores se realiza a través de un control
PID, cuyo esquema básico se describe en la Sección 6.2.2. Los parámetros de dicho
regulador no se mantendrán constantes durante la totalidad de la misión, sino todo lo
contrario. En función de la distancia a la plataforma de aterrizaje, será necesario variar
estos para asegurar que el vehı́culo aéreo es capaz de seguir en todo momento a la PA.
En concreto, cuanto más próximo se encuentre el UAV a la plataforma de aterrizaje,
más rápida deberá ser su respuesta ante los movimientos de la misma. En las secciones
6.2.4 y 6.2.5 se profundiza en ello, detallando exactamente cuáles han sido los valores
obtenidos para dichos parámetros en función de la altura.
6.2.2.
Esquema general del Control PID
El esquema general del Control PID se puede observar en la Figura 6.1. El objetivo
de este lazo de control es que el error, e(t), entre el valor de referencia, u(t), y el valor
real obtenido a la salida, y(t), converja a cero de la manera más rápida posible.
Aplicado a este proyecto, el error serı́a la distancia en el plano horizontal (plano
xy) entre la plataforma de aterrizaje y el UAV, mientras que la salida serı́a la velocidad
en x y en y que se ha de aplicar al vehı́culo aéreo. De esta forma, con el control PID
se tratará de anular este error y ası́ mantener la PA centrada en la imagen en todo
momento.
50
6.2 Control PID adaptativo
Figura 6.1: Diagrama de bloques de un control PID. Obsérvese que la acción del
regulador es el resultado de la suma de tres términos.
Fuente: http://8760engineeringblog.blogspot.com.es/2013/01/linearizing-pid-loop-control.html
Como se puede apreciar en la Figura 6.1, el control PID es el resultado de tres acciones: una acción proporcional (P), una integral (I) y otra derivativa (D). Dependiendo
de las necesidades de cada caso, se podrá hacer uso de una, de dos o incluso de las tres
acciones a la vez. A continuación, se describen estas brevemente:
Acción de control Proporcional: aplica una acción proporcional al error e(t).
u(t) = Kp e(t)
(6.1)
siendo Kp la ganancia proporcional.
Adición de la Acción de control Integral: la adición de una acción de control
integral a la acción proporcional aporta una proporcionalidad al error acumulado
en cada instante. Su resultado, por tanto, es una ralentización de la respuesta del
sistema y la eliminación del error en régimen permanente. La expresión resultante
(6.2) se observa a continuación:
Z
1 t
u(t) = Kp e(t) +
e(τ )dτ )
Ti 0
51
(6.2)
6. ALGORITMO DE SEGUIMIENTO-ATERRIZAJE
siendo Ti el tiempo integral.
Adición de la Acción de control Derivativa: la adición del término derivativo incrementa la rapidez de respuesta del sistema, esto es, mejora su régimen
transitorio. Sin embargo, la existencia de esta acción derivativa conlleva la amplificación de ruidos.
La expresión completa de un controlador PID se muestra en la Expresión 6.3.
Z
1 t
de
u(t) = Kp e(t) +
e(τ )dτ + Td
Ti 0
dt
(6.3)
siendo Td el tiempo derivativo.
6.2.3.
Ajuste de los parámetros del Control PID
Como se ha mencionado anteriormente, los parámetros del Control PID (Kp , Ki y
Kd ) no se mantienen constantes durante el vuelo. Al contrario, estos dependerán de la
franja de altura en la que se encuentre el UAV. El motivo es el siguiente: la velocidad
de respuesta del vehı́culo aéreo con respecto a las variaciones del error (distancia entre
UAV y PA en el plano xy) ha de ser mayor cuanto menor sea la distancia en vertical
UAV-PA. Es decir, el vehı́culo aéreo ha de reaccionar mucho más rápidamente cuanto más cercano esté al aterrizaje. Consecuentemente, cuanto más alto se encuentre el
UAV, menor deberá ser su velocidad de respuesta para conseguir mantener la PA en el
centro de la imagen.
El ajuste de los parámetros del control PID para cada una de las franjas de altura
se ha llevado a cabo a través de la aplicación de reglas heurı́sticas, esto es:
1. Buscando primero la Kp que proporciona la respuesta deseada (manteniendo Ki
y Kd a cero);
52
6.2 Control PID adaptativo
2. Incrementando después de manera progresiva la Ki para anular el error de posición, al mismo que tiempo que disminuyendo ligeramente la Kp con el objetivo
de que el sistema no se haga inestable;
3. Y, finalmente, aumentando la Kd para que la respuesta del sistema sea más rápida,
manteniendo los valores de Kp y Ki obtenidos en los dos pasos anteriores.
Además de la correcta aplicación de estas reglas, es necesario en todo momento
tener en cuenta cuáles son los efectos de cada una de las tres acciones. En el Cuadro 6.1
se pueden observar los efectos correspondientes a cada acción: proporcional, integral o
derivativa.
Aumento de Kp
Aumento de Ki
Aumento de Kd
↑
↓
↓
↓
↑
↑
Rapidez del sistema
Estabilidad del sistema
Cuadro 6.1: Reglas generales para el ajuste heurı́stico. Nótese la existencia de
excepciones a estas reglas.
6.2.4.
Aplicación en el sistema simulado
Tras la aplicación de las técnicas heurı́sticas descritas, los valores obtenidos para las
diferentes franjas de altura de vuelo en el sistema simulado se muestran en el Cuadro
6.2. Nótese que no se ha hecho distinción alguna entre los ejes x e y del UAV, ya que
las dinámicas del vehı́culo respecto de dichos ejes son prácticamente iguales.
Kp
Ki
Kd
10 - 4 m
4 - 3.5 m
3.5 - 3 m
3-2m
2-1m
<1m
0.19
0.0014
0.03
0.24
0.014
0.12
0.32
0.014
0.22
0.33
0.014
0.24
0.35
0.015
0.26
0.36
0.017
0.27
Cuadro 6.2: Parámetros del PID en función de la altura - Sistema Simulado
Empleando estos parámetros (ajustados manualmente), se consiguieron resultados
muy precisos. No obstante, se apreció que, quizás, una variación lineal o incluso exponencial de estos parámetros con la altura podrı́a proporcionar resultados incluso
53
6. ALGORITMO DE SEGUIMIENTO-ATERRIZAJE
mejores. Finalmente, y tras estudiar que era preferible que los parámetros no cambiaran demasiado rápido a alturas elevadas y sı́ cuando el UAV estuviera muy cerca del
aterrizaje, se optó por calcular la función exponencial con la altura que mejor ajustara
los parámetros anteriormente obtenidos.
Para ello, y para cada una de las constantes (Kp , Ki y Kd ), se partió de dos valores
conocidos: los valores de la constante en cuestión a una altura de 6 y 0.5 m con respecto a la PA. Estos valores representaban, respectivamente, la atura de vuelo para el
seguimiento y la altura a la que el UAV apagaba sus motores para finalizar el aterrizaje.
Asimismo, y debido a que se requerı́a que, a mayor altura, menores fueran los
parámetros, se concluyó que se emplearı́a una función exponencial decreciente con dos
parámetros, Q y T , de la forma mostrada en la expresión 6.4, con Kx el parámetro
del PID en cuestión, Q y T las constantes de la función que se querı́an ajustar y pz la
altura desde la PA al UAV (con pz < = 0).
Kx = Q e−T
pz
(6.4)
Para cada una de los parámetros del PID, sustituyendo las parejas de valores (Kx6 ,
pz = 6) y (Kx0,3 , pz = 0,3) en la expresión anterior, se obtuvieron los sistemas de
ecuaciones 6.5, 6.6 y 6.7, que posteriormente habrı́a que resolver.
Kp - Sistema de Ecuaciones
(
0,36 = Q e−T
0,19 = Q e−T
Ki - Sistema de Ecuaciones
(
0,0017 = Q e−T
0,0014 = Q e−T
Kd - Sistema de Ecuaciones
(
0,03 = Q e−T
0,27 = Q e−T
54
0,3
(6.5)
6
0,3
6
(6.6)
0,3
6
(6.7)
6.2 Control PID adaptativo
Resolviendo estos sistemas de ecuaciones, se obtuvieron las expresiones finales de
Kp , Ki y Kd en función de la altura (Expresiones 6.8, 6.9 y 6.10).
Kp Simulación - Expresión Final Kp = 0,32 e−0,106513
Ki Simulación - Expresión Final
pz
Ki = 0,0017 e−0,032359
Kd Simulación - Expresión Final Kd = 0,27 e−0,366204
(6.8)
pz
pz
(6.9)
(6.10)
Con respecto a la velocidad de descenso durante el aterrizaje, esta se mantendrá a
un valor constante de 0.3 m/s hasta encontrarse a 2m por encima de la PA. Cuando se
encuentre por debajo de los 2m, su velocidad será menor (de 0,3m/s), de manera que
el acercamiento y posicionamiento final pueda darse con mayor precisión. Finalmente,
y para recrear lo que ocurrirá después en el sistema real, a 0.3 m de la PA, la velocidad
de descenso del UAV será de 1 m/s. Con esto se intenta simular el apagado de los
motores que se ha de llevar a cabo en el AR Drone 2.0 para poder finalizar el aterrizaje
correctamente.
6.2.5.
Aplicación en el sistema real
Con respecto a las constantes empleadas en la plataforma real (AR Drone 2.0),
estas no son las mismas que para la simulación (véase Cuadro 6.3), debido a que la
masa del AR Drone 2.0 con carcasa de interior es mayor que la que posee el modelo
de la simulación. En concreto, se ha reducido a cero la acción integral y aumentado la
derivativa y proporcional, con el fin de obtener una respuesta lo suficientemente rápida.
Kp
Ki
Kd
10 - 4 m
4 - 3.5 m
3.5 - 3 m
3-2m
2-1m
<1m
0.26
0
0.2
0.27
0
0.23
0.32
0
0.28
0.56
0
0.37
0.59
0
0.42
0.67
0
0.53
Cuadro 6.3: Parámetros del PID en función de la altura -Sistema Real
Siguiendo el mismo proceso descrito para el sistema simulado, en el sistema real se
obtuvieron las siguientes expresiones para Kp , Ki y Kd (Expresiones 6.11, 6.12 y 6.13).
55
6. ALGORITMO DE SEGUIMIENTO-ATERRIZAJE
Resolviendo estos sistemas de ecuaciones, se obtuvieron las expresiones finales de
Kp , Ki y Kd en función de la altura (Expresiones 6.8, 6.9 y 6.10).
Kp Real- Expresión Final
Kp = 0,67 e−0,157766
Ki Real- Expresión Final
pz
Ki = 0
Kd Real - Expresión Final Kd = 0,53 e−0,162427
(6.11)
(6.12)
pz
(6.13)
Con respecto a la velocidad de descenso durante el aterrizaje, la estrategia a seguir
será la misma que en la simulación. La única diferencia ahora será que, cuando el UAV
se encuentre a 0.3 m por de la PA y solo si está correctamente centrado con respecto a
la misma, apagará sus motores.
6.3.
Control PID predictivo
En esta sección se presenta un segundo algoritmo de seguimiento-aterrizaje basado
en la combinación de un control PID con un Filtro de Kalman. Con la adicción de
esta acción predictiva (Filtro de Kalman) se pretende mejorar el aterrizaje cuando la
plataforma terrestre móvil se encuentra describiendo trayectorias circulares o incluso
aleatorias.
Primeramente, se expondrá brevemente en qué consiste un Filtro de Kalman, para después mostrar cómo se ha adaptado el algoritmo de predicción desarrollado por
Garzón (2) en el sistema tratado en la sección anterior (véase Sección 6.2).
6.3.1.
Filtro de Kalman - Teorı́a básica
En el año 1960, Rudolf E. Kalman desarrolla un algoritmo que permite identificar
el estado oculto (no medible) de un sistema dinámico lineal. Aunque es similar en gran
medida al observador de Luenberger, sirve además cuando el sistema está sometido a
ruido blanco aditivo. De esta manera, la diferencia principal entre ambos algoritmos es
que en el observador de Luenberger la ganancia K de realimentación del error debe ser
56
6.3 Control PID predictivo
elegida “a mano”, mientras que el filtro de Kalman escoge esta de forma óptima gracias
a que se conocen las varianzas de los ruidos que afectan al sistema.
Por otro lado, ya que el filtro de Kalman es un algoritmo recursivo, este puede correr
en tiempo real usando únicamente las mediciones de entrada actuales, el estado calculado previamente y su matriz de incertidumbre, sin requerir ningua otra información
pasada adicional 1 .
6.3.1.1.
Descipción matemática del Filtro de Kalman
El Filtro de Kalman es un proceso matemático iterativo, lineal y gaussiano que se
desarrolla fundamental en dos etapas:
1. Estimación antes de la medida.
2. Actualización.
A continuación, se definirán los conceptos y funciones sobre los que se fundamenta
el algoritmo.
Sea x la variable de estado y z la variable de las observaciones, siguiendo ambas
una distribución Gaussiana y definidas según las expresiones 6.14 y 6.15.
Función de transición:
xk = A xk−1 + B uk + wk−1
(6.14)
zk = H xk + vk
(6.15)
Función de observación:
Donde A, B y H son constantes. La matriz A relaciona el estado actual con el
estado anterior; la matriz B refleja la influencia del input de control, u; finalmente, la
matriz H refleja la obtención de la medida, z, a partir del estado, x. Por otro lado,
1
Información obtenida de https://es.wikipedia.org/wiki/Filtro_de_Kalman
57
6. ALGORITMO DE SEGUIMIENTO-ATERRIZAJE
wt y vt son los términos que representan el ruido, con media cero y covarianza Q y
R respectivamente. De esta forma, la matriz Q representa la covarianza del ruido del
modelo, mientras que la matriz R refleja la convarianza del ruido de la observación.
A continuación, se explican en detalle los dos pasos anteriormente mencionados.
1. Estimación antes de la medida
En esta primera fase, se calcula la predicción o estimación de la variable de estado,
x̂−
k,
a través de la aplicación de la expresión 6.14. Este cálculo se muestra en la expre-
sión 6.16.
−
x̂−
k = A x̂k−1 + B uk
(6.16)
Asimismo, se estima el valor de la matriz de covarianza del error, Pk− , a través de
la aplicación de la expresión 6.17, que resulta a su vez de la resolución de un problema
de mı́nimos cuadrados.
Pk− = A Pk−1 AT + Q
(6.17)
En la Figura 6.2 se muestra un esquema de esta fase de predicción. El cı́rculo azul
más pequeño representa el estado actual, con una confianza caracterizada por la matriz
de covarianza del error Pk−1 . La flecha hacia el otro cı́rculo más grande indica el cálculo
de la estimación del estado futuro. Nótese que la confianza de la estimación, Pk− , es
menor que la del estado actual. Por ello, el cı́rculo que caracteriza el estado futuro posee
un diámero mayor, indicando ası́ la mayor incertidumbre existente en la estimación.
Asimismo, cuanto mayor sea la matriz de covarianzas del modelo, Q, mayor será la
matriz de covarianza del error, P . Es decir, el grado de confianza con el que afirmar la
58
6.3 Control PID predictivo
bondad de la estimación realizada será menor cuanto menos precisa sea la función de
transición 6.14. De igual forma, cuanto mayor sea la matriz de covarianza del error en
el estado actual, Pk−1 , mayor será la del estado estimado, Pk− .
Figura 6.2: Fase de predicción del Filtro de Kalman.
Fuente: Apuntes sobre Robots Móviles - Módulo XI - Jaime del Cerro - ETSI Industriales UPM.
2. Actualización
Tras un primer paso en el que se predice el estado futuro, x̂−
k , ası́ como la incertidumbre de esta estimación, Pk− , cuando se llega al instate de tiempo t = k, el algoritmo
actualizará estos valores. En concreto, el cálculo de la variable de estado, x̂k , se llevará a
cabo gracias al conocimiento de la variable de observaciones en ese instante t = k, esto
es, zk , a la estimación de la variable de estado realizada en la etapa de predicción, x̂−
k,
y a la ganancia del filtro o matriz K en el instate t = k. Esta relación puede observarse
en la expresión 6.18.
−
x̂k = x̂−
k + Kk zk − H x̂k
59
(6.18)
6. ALGORITMO DE SEGUIMIENTO-ATERRIZAJE
De esta forma, el valor actualizado de la variable de estado, x̂k , es el resultado de
dos efectos: por un lado, la estimación antes de la medida; por otro, el producto de la
ganancia del filtro, Kk , multiplicado por la innovación debida a la medida, (zk − H x̂−
k ).
Este último término (la innovación por la medida) representa el error cometido en la
predicción de la observación.
El paso previo al cálculo del nuevo estado, x̂k , será la obtención de la ganancia del
filtro, Kk , a través de la expresión 6.19.
Kk = Pk− H T HPk− H T + R
−1
(6.19)
Nótese cómo la ganancia del filtro depende de la incertidumbre en la estimación,
Pk− ,
de la matriz H (relacionada con la función de observación) y de la matriz de co-
varianza del ruido de la observación, R. Una forma más abstracta de comprender el
significado de la ganancia del filtro es a través de la expresión 6.20.
K=
Errorestimacion
Errorestimacion + Errormedida
(6.20)
Donde las variables Errorestimacion y Errormedida dependen directamente de las
matrices Pk− y R respectivamente.
En definitiva, la actualización del estado dependerá de estos dos errores, pudiéndose
obtener las siguientes conclusiones al respecto:
La ganancia del filtro, K, será más próxima a la unidad cuanto mayor sea la
incertidumbre en la estimación del estado futuro, esto es, cuanto mayor sea la
matriz Pk− . Consecuentemente, cuanto mayor sea la ganancia de filtro, mayor
importancia se dará al término de la innovación en la medida en la expresión 6.18
y menos se tendrá en cuenta la aportación de la predicción. En resumen, cuanto
mayor sea la incertidumbre en la estimación, más importancia se le dará a la
observación o medida.
60
6.3 Control PID predictivo
Por el contrario, cuanto mayor sea la matriz de covarianza del ruido de la observación, R, menor será K y, en consecuencia, menor la influencia del término de la
innovación por la medida. En tal caso, la actualización del estado se verá afectada
principalmente por la estimación del estado realizada en el primer paso, x̂−
k.
En la Figura 6.3 se muestra en forma de esquema un resumen sobre lo tratado en
esta segunda fase de atualización.
Figura 6.3: Fase de actualización del Filtro de Kalman.
Fuente: Apuntes sobre Robots Móviles - Módulo XI - Jaime del Cerro - ETSI Industriales UPM.
6.3.2.
Desarrollo del algoritmo
Este segundo algoritmo de seguimiento-aterrizaje desarrollado está basado en la
combinación de un regulador PID con un Filtro de Kalman. Para ello, ha sido necesario
la adaptación al sistema del algoritmo de predicción de personas desarollado por Garzón
et al. (2)).
El funcionamiento del sistema resultante es el siguiente:
61
6. ALGORITMO DE SEGUIMIENTO-ATERRIZAJE
1. Se transforma la posición de la PA (calculada en la fase detección-localización)
del sistema de referencia de la cámara al sistema del mundo.
2. Se envı́a después la nueva posición al Filtro de Kalman, el cual devuelve la posición
futura del centroide de la PA referida al sistema del mundo.
3. Posteriormente, esta se transforma al sistema del cuerpo del UAV.
4. Finalmente, se emplea la posición obtenida para calcular el error de posición
(distancia entre el UAV y la posición predicha de la PA). Como en el algoritmo
con Control PID adaptativo, ahora también se empleará dicho error para calcular
los comandos de velocidad en x y en y que hagan que este converja a cero.
Gracias a la acción predictiva, se facilita el seguimiento y, principalmente, el aterrizaje, ya que el UAV puede posicionarse ligeramente por delante de la PA momentos
antes de la aproximación final y ası́ completar el aterrizaje con mayor precisión.
6.3.3.
Integración del algoritmo de predicción
Con respecto al algoritmo de detección empleado, se quiere destacar que se basa en
la generación de un path o vector de posiciones futuras ordenadas en el tiempo. Los
parámetros de configuración más interesantes de cara a su integración en el sistema de
seguimiento-aterrizaje son los siguientes:
path time: indica al algoritmo el tiempo total en segundos de la predicción, es
decir, cuánto tiempo por delante se necesita que prediga el algoritmo. Cuanto
mayor sea este valor, menor será la fiabilidad del último valor del path, a no ser
que la trayectoria seguida por la PA sea totalmente rectilı́nea. En cualquier otro
caso, este valor deberı́a ser cercano a los 3 − 4s.
step: es el tiempo en segundos entre las posiciones del vector del path para un
mismo ciclo de predicción.
pub freq : representa la frecuencia en Hz a la cual el algoritmo de predicción
publicará la información calculada.
62
6.4 Control de altura - Relocalización de la PA
Tras realizar los cálculos necesarios, el Filtro de Kalman habrá generado el mencionado vector de posiciones futuras. En este caso, y de cara al algoritmo de seguimientoaterrizaje, se tomará solamente el último valor de dicho vector, que corresponderá a la
posición futura de la PA dentro de un tiempo definido por path time. Es importante
hacer notar que esta posición está referida al sistema de referencia del mundo.
6.3.4.
Seguimiento con predicción
Una vez generada dicha posición futura de la PA y tras referirla al sistema de
referencia del cuerpo del quadrotor, será con esta posición con la que el control PID
trabaje para generar una velocidad en x y otra en y para el UAV. De esta manera,
durante el estado de TRACKING, este se mantendrá siempre ligeramente por delante
de la PA.
6.3.5.
Aterrizaje con predicción
Posteriormente, y tras pulsar el usuario el botón de aterrizaje, el UAV pasará al estado de LANDING y, de la misma manera que ocurrı́a con el algoritmo sin predicción,
el control PID en el plano xy del UAV seguirá funcionando paralelamente al control en
altura en el eje z.
La diferencia ahora es que a medida que el UAV descienda, será necesario que
el sistema vaya actualizando automáticamente el parámetro path time. En concreto, se
irá reduciendo según una función lineal. Esto es ası́ debido a que, cuanto más bajo vuele
el UAV, menor campo visual tendrá, y, en consecuencia, la predicción solo será fiable
del orden de 0,5 a 2s por delante en el tiempo. Experimentalmente, se concluyó que
este valor de path time debe ir reduciéndose de manear lineal desde un máximo de 6 s
hasta un mı́nimo de 0.5 s, que coincidirá con el momento en que el UAV apague sus
motores y concluya, por fin, su aterrizaje con éxito.
6.4.
Control de altura - Relocalización de la PA
Englobado dentro del algoritmo del seguimiento-aterrizaje y corriendo paralelamente a la “máquina de estados”, el quadrotor cuenta con un control de altura que le
permite, entre otras tareas, relocalizar la PA tras perder el contacto visual con esta.
63
6. ALGORITMO DE SEGUIMIENTO-ATERRIZAJE
Esta maniobra de relocalización puede lanzarse desde distintas situaciones. Esto es,
el sistema pasará al estado de SEARCHING de forma automática si:
Durante el estado de TRACKING, el tiempo entre el instante actual y el instante
en el cual se recibió la última posición de la PA (found time) es mayor que 1.5 s.
Durante el estado de LANDING, el tiempo entre el instante actual y el instante
en el cual se recibió la última posición de la PA (found time) es mayor que 1.5 s.
Asimismo, y como se ha ido mencionando a lo largo de las secciones anteriores,
este control de altura es el encargado de asignar una velocidad de descenso según el
eje z del quadrotor en función de la altura a la que se encuentre, ası́ como de variar
los parámetros del PID en el control PID adaptativo y los del Filtro de Kalman en el
control PID predictivo.
64
7
Metodologı́a
7.1.
Introducción
Anteriormente (véase Sección 4.2 - Software), se detallaron las caracterı́sticas más
importantes de ROS, framework bajo el que se ha realizado el trabajo. En este capı́tulo,
y tras haber sido explicados los algoritmos de detección-localización y de seguimientoaterrizaje, se mostrará cómo han sido implementados estos en ROS.
Algo que se debe tener en cuenta en todo momento es la gran modularidad de este
pseudo-Sistema Operativo. Ello ha favorecido el que partes del código desarrollado en
este proyecto puedan ser aprovechadas en un futuro para tareas similares pero no necesariamente las mismas que las tratadas aquı́. No solo eso, sino que lo que se consigue
con ROS es no depender del Hardware, pudiendo utilizar diferentes ordenadores, incluso con diferentes arquitecturas. Esto es ası́ gracias a que los nodos que conforman el
sistema se desarrollan de forma independiente, estando las comunicaciones entre ellos
basadas en una estructura de publicadores y suscriptores. De esta manera, habrá nodos que publiquen determinada información en los denominados tópicos, sin tener en
cuenta dichos nodos a quién irá dirigida la información publicada. De la misma manera, habrá nodos que se suscriban a determinados tópicos para recoger información, de
nuevo sin tener en cuenta de qué nodo puedan provenir los datos adquiridos.
Por último, merece la pena recordar ahora que en ROS los nodos se han de estructurar en los denominados paquetes. Estos paquetes no son más que carpetas que contienen
65
7. METODOLOGÍA
todo la información necesaria sobre un grupo de nodos, como de qué otros paquetes o
librerı́as depende el paquete o incluso los archivos necesarios para la ejecución de los
nodos.
7.2.
Implementación en ROS
A continuación se listan los paquetes que se han necesitado en este proyecto:
Drivers para el control de las plataformas robóticas, tanto para el entorno simulado como para el sistema real.
Elaboración de un paquete propio para la creación del entorno simulado, ası́ como
para el lanzamiento de los modelos de robot terrestre y aéreo. En particular, el
modelo del robot terrestre (Summit XL) tuvo que ser modificado a partir del que
proporcionaba la firma Robotnik, a fin de poder incluir sobre él una plataforma
de aterrizaje.
Elaboración de un paquete propio que incluye los algoritmos de detección-localización
y de seguimiento-aterrizaje, de nuevo tanto para el sistema simulado como para
el real, ası́ como un ejecutable que permite la teleoperación de los robots.
La manera de lanzar todos los procesos necesarios es a través de archivos XML
denominados launcher, o lanzadores. En ellos se detalla qué nodos han de ser lanzados
y se configuran los parámetros necesarios para el correcto funcionamiento del sistema.
La ventaja de estos launchers es que no requieren ser recompilados, de manera que
una estrategia recomendable de trabajo en ROS es emplear estos lanzadores para pasar parámetro a los nodos que sean susceptibles de ser modificadas a menudo. Ası́, se
evita el tener que recompilar todo el sistema cada vez que se modifique el valor de una
varible, como pueden ser las constantes del PID o la covarianza en la medida para el
filtro de Kalman (véase Capı́tulo 6).
Existe otra forma incluso más efectiva de modificar los parámetros de ROS, denominada dynamic reconfiguration, que permite al usuario del sistema la modificación de
parámetros al mismo tiempo que el código se encuentra en ejecución. La instalación y
configuración de esta herramienta no es inmediata, y requiere la escritura de archivos
66
7.2 Implementación en ROS
de configuración (archivos .cfg) y la vinculación de estos al nodo ROS cuyos parámetros se quiere modificar. Sin embargo, una vez implementada esta herramienta en el
sistema, las tareas de ajuste de parámetros se agilizan enormemente. Las constantes
del PID o la covarianza de las observaciones en el filtro de Kalman son algunos de los
parámetros cuyo ajuste se ve verdaderamente simplificado empleando esta herramienta.
En lo que resta de capı́tulo se detallará el entramado de conexiones entre nodos y
tópicos ROS. No obstante, y para una correcta comprensión de dicha red de conexiones,
se ha de mostrar primero cómo funciona la herramienta tf de ROS, imprescindible para
la comunicación entre nodos ROS que trabajan con sistemas de referencia distintos.
7.2.1.
Herramienta de transformaciones - tf
El paquete de transformaciones tf permite al usuario de ROS modificar el sistema
de referencia respecto al cual se encuentra referido un punto o un vector en el espacio.
Para ello, el paquete mantiene una relación entre los distintos sistemas de referencia o
frames de cada uno de los robots lanzados, ası́ como de cada uno de los dispositivos
instalados en los mismos. Es decir, las cámaras, los láseres o incluso las propias ruedas
de los robots suelen tener asociado un frame, y se organizan siguiendo una estructura
en forma de árbol. En las Figuras 7.1 y 7.2 se muestran los modelos de las plataformas
robóticas empleadas en el proyecto y los distintos ejes coordenados pertenecientes a las
mismas.
Es importane destacar que el árbol de sistemas de referencia sigue ciertas directrices
que el programador del sistema ha de tener siempre en cuenta. A continuación se listan
dichas directrices:
Siempre ha de existir un frame origen o principal, respecto al cual estén referidos
el resto de frames hijos.
Cada frame está referenciado a un frame padre, con respecto al cual el paquete
tf es capaz de calcular la matriz de transformación.
Cada frame hijo posee solo un frame padre, mientras que un mismo frame padre
puede poseer varios frames hijo.
67
7. METODOLOGÍA
Figura 7.1: Sistemas de ejes coordenados pertenecientes al modelo simulado del Summit
XL.
Figura 7.2: Sistemas de ejes coordenados pertenecientes al modelo simulado del quadrotor.
A través de la ejecución del nodo ROS view frames, perteneciente al paquete tf, el
usuario del sistema es capaz de generar un archivo pdf en el cual se muestra el árbol
de sistemas de referencia completo. Cada frame se encuentra enmarcado en una elipse;
además, se muestra cierta información adicional sobre los mismos, como quién es el
broadcaster de cada frame, esto es, cuál es el nodo ROS que lo está publicando.
68
69
summit_xl/landing_platform_link
summit_xl/base_link
summit_xl/front_left_wheel
base_stabilized
downward_cam_optical_frame
Broadcaster: /quadrotor/robot_state_publisher_quadrotor
Average rate: 50.213 Hz
Most recent transform: 246.394 ( -0.490 sec old)
Buffer length: 4.919 sec
sonar_link
Broadcaster: /quadrotor/robot_state_publisher_quadrotor
Average rate: 50.213 Hz
Most recent transform: 246.394 ( -0.490 sec old)
Buffer length: 4.919 sec
downward_cam_link
Broadcaster: /quadrotor/robot_state_publisher_quadrotor
Average rate: 50.213 Hz
Most recent transform: 246.394 ( -0.490 sec old)
Buffer length: 4.919 sec
base_link
Broadcaster: /quadrotor/ground_truth_to_tf
Average rate: 100.204 Hz
Most recent transform: 245.891 ( 0.013 sec old)
Buffer length: 4.910 sec
Broadcaster: /quadrotor/ground_truth_to_tf
Average rate: 100.204 Hz
Most recent transform: 245.891 ( 0.013 sec old)
Buffer length: 4.910 sec
Broadcaster: /summit_xl/summit_state_publisher
Average rate: 50.203 Hz
Most recent transform: 245.900 ( 0.004 sec old)
Buffer length: 4.920 sec
summit_xl/front_right_wheel
Broadcaster: /summit_xl/summit_state_publisher
Average rate: 50.203 Hz
Most recent transform: 245.900 ( 0.004 sec old)
Buffer length: 4.920 sec
Broadcaster: /summit_xl/summit_state_publisher
Average rate: 50.203 Hz
Most recent transform: 246.392 ( -0.488 sec old)
Buffer length: 4.920 sec
Broadcaster: /quadrotor/ground_truth_to_tf
Average rate: 100.204 Hz
Most recent transform: 245.891 ( 0.013 sec old)
Buffer length: 4.910 sec
world
Broadcaster: /quadrotor_tf_publisher
Average rate: 20.070 Hz
Most recent transform: 245.936 ( -0.032 sec old)
Buffer length: 4.883 sec
base_footprint
Broadcaster: /gazebo
Average rate: 100.203 Hz
Most recent transform: 245.895 ( 0.009 sec old)
Buffer length: 4.920 sec
odom
summit_xl/base_footprint
summit_xl/back_right_wheel
centre
Broadcaster: /summit_tf_publisher
Average rate: 20.103 Hz
Most recent transform: 245.954 ( -0.050 sec old)
Buffer length: 4.875 sec
Broadcaster: /summit_xl/summit_state_publisher Broadcaster: /summit_xl/summit_state_publisher
Average rate: 50.203 Hz
Average rate: 50.203 Hz
Most recent transform: 245.900 ( 0.004 sec old) Most recent transform: 245.900 ( 0.004 sec old)
Buffer length: 4.920 sec
Buffer length: 4.920 sec
summit_xl/back_left_wheel
Broadcaster: /summit_xl/summit_state_publisher
Average rate: 50.203 Hz
Most recent transform: 246.392 ( -0.488 sec old)
Buffer length: 4.920 sec
summit_xl/platform_cylinder_link
Broadcaster: /summit_xl/summit_state_publisher
Average rate: 50.203 Hz
Most recent transform: 246.392 ( -0.488 sec old)
Buffer length: 4.920 sec
view_frames Result
Recorded at time: 245.904
7.2 Implementación en ROS
Figura 7.3: Árbol final de frames del sistema simulado.
7. METODOLOGÍA
Con el único propósito de mostrar un esquema general del árbol de frames del sistema simulado, en la Figura 7.3 se muestran las uniones y caracterı́sticas de los mismos,
tanto para el modelo simulado del Summit XL como para el del UAV empleado. Nótese
que todos los frames se encuentran referidos a un mismo frame origen denominado
/centre. Este último tuvo que ser generado por el autor con el fin de que ambas plataformas robóticas estuvieran referidas a un mismo sistema de referencia.
Se muestra a continuación el árbol de frames de la plataforma terrestre (véase
Figura 7.4) y de la aérea (véase Figura 7.5) en el sistema simulado. Se muestra también
el árbol correspondiente a la plataforma aérea real AR Drone 2.0 (véase Figura 7.6).
70
71
summit_xl/landing_platform_link
Broadcaster: /gazebo
Average rate: 100.201 Hz
Most recent transform: 15.095 ( 0.004 sec old)
Buffer length: 4.970 sec
odom
Broadcaster: /summit_xl/summit_state_publisher
Average rate: 50.202 Hz
Most recent transform: 15.080 ( 0.019 sec old)
Buffer length: 4.940 sec
summit_xl/front_right_wheel
Broadcaster: /summit_xl/summit_state_publisher
Average rate: 50.202 Hz
Most recent transform: 15.080 ( 0.019 sec old)
Buffer length: 4.940 sec
summit_xl/front_left_wheel
Broadcaster: /summit_xl/summit_state_publisher
Average rate: 50.202 Hz
Most recent transform: 15.080 ( 0.019 sec old)
Buffer length: 4.940 sec
summit_xl/back_right_wheel
Broadcaster: /summit_xl/summit_state_publisher
Average rate: 50.202 Hz
Most recent transform: 15.080 ( 0.019 sec old)
Buffer length: 4.940 sec
summit_xl/base_link
Broadcaster: /summit_xl/summit_state_publisher
Average rate: 50.202 Hz
Most recent transform: 15.592 ( -0.493 sec old)
Buffer length: 4.960 sec
summit_xl/base_footprint
summit_xl/back_left_wheel
Broadcaster: /summit_xl/summit_state_publisher
Average rate: 50.202 Hz
Most recent transform: 15.592 ( -0.493 sec old)
Buffer length: 4.960 sec
summit_xl/platform_cylinder_link
Broadcaster: /summit_xl/summit_state_publisher
Average rate: 50.202 Hz
Most recent transform: 15.592 ( -0.493 sec old)
Buffer length: 4.960 sec
view_frames Result
Recorded at time: 15.099
7.2 Implementación en ROS
Figura 7.4: Árbol final de frames de la plataforma robótica terrestre.
7. METODOLOGÍA
view_frames Result
Recorded at time: 11.738
world
Broadcaster: /ground_truth_to_tf
Average rate: 100.202 Hz
Most recent transform: 11.722 ( 0.016 sec old)
Buffer length: 4.940 sec
base_footprint
Broadcaster: /ground_truth_to_tf
Average rate: 100.202 Hz
Most recent transform: 11.722 ( 0.016 sec old)
Buffer length: 4.940 sec
base_stabilized
Broadcaster: /ground_truth_to_tf
Average rate: 100.202 Hz
Most recent transform: 11.722 ( 0.016 sec old)
Buffer length: 4.940 sec
base_link
Broadcaster: /robot_state_publisher_quadrotor
Average rate: 50.202 Hz
Most recent transform: 12.220 ( -0.482 sec old)
Buffer length: 4.940 sec
downward_cam_link
Broadcaster: /robot_state_publisher_quadrotor
Average rate: 50.202 Hz
Most recent transform: 12.220 ( -0.482 sec old)
Buffer length: 4.940 sec
sonar_link
Broadcaster: /robot_state_publisher_quadrotor
Average rate: 50.202 Hz
Most recent transform: 12.220 ( -0.482 sec old)
Buffer length: 4.940 sec
downward_cam_optical_frame
Figura 7.5: Árbol final de frames de la plataforma robótica aérea.
72
7.2 Implementación en ROS
view_frames Result
Recorded at time: 1468409371.395
ardrone_base_link
Broadcaster: /ardrone_driver
Average rate: 10.204 Hz
Most recent transform: 1468409371.350 ( 0.045 sec old)
Buffer length: 4.900 sec
ardrone_base_frontcam
Broadcaster: /ardrone_driver
Average rate: 10.204 Hz
Most recent transform: 1468409371.350 ( 0.045 sec old)
Buffer length: 4.900 sec
ardrone_base_bottomcam
Figura 7.6: Árbol final de frames del AR Drone 2.0 (sistema real)
73
7. METODOLOGÍA
7.2.2.
Nodos, tópicos y servicios
A continuación, se muestra el listado de tópicos y el de nodos activos durante la
ejecución del sistema real. Nótese que, para el sistema simulado, en el listado de tópicos
simplemente habrı́a que sustituir el namespace /ardrone/...”por el de /quadrotor/...”.
Esto es ası́ debido a que no se dispone de un modelo simulado exacto del AR Drone,
habiéndose empleado en su defecto uno génerico. Con respecto al listado de nodos del
sistema simulado, las diferencia serı́an mı́nimas. Bastarı́a con eliminar la partı́cula eal”del nombre de los nodos en el sistema real para obtener ası́ el listado de nodos del
sistema simulado.
Tópicos en el sistema real
/ardrone/bottom/camera info
/ardrone/bottom/image raw
/ardrone/bottom/image raw/compressed
/ardrone/bottom/image raw/compressed/parameter descriptions
/ardrone/bottom/image raw/compressed/parameter updates
/ardrone/bottom/image raw/compressedDepth
/ardrone/bottom/image raw/compressedDepth/parameter descriptions
/ardrone/bottom/image raw/compressedDepth/parameter updates
/ardrone/bottom/image raw/theora
/ardrone/bottom/image raw/theora/parameter descriptions
/ardrone/bottom/image raw/theora/parameter updates
/ardrone/camera info
/ardrone/emergency topic
/ardrone/front/camera info
/ardrone/front/image raw
/ardrone/front/image raw/compressed
/ardrone/front/image raw/compressed/parameter descriptions
/ardrone/front/image raw/compressed/parameter updates
/ardrone/front/image raw/compressedDepth
/ardrone/front/image raw/compressedDepth/parameter descriptions
/ardrone/front/image raw/compressedDepth/parameter updates
74
7.2 Implementación en ROS
/ardrone/front/image raw/theora
/ardrone/front/image raw/theora/parameter descriptions
/ardrone/front/image raw/theora/parameter updates
/ardrone/image raw
/ardrone/image raw/compressed
/ardrone/image raw/compressed/parameter descriptions
/ardrone/image raw/compressed/parameter updates
/ardrone/image raw/compressedDepth
/ardrone/image raw/compressedDepth/parameter descriptions
/ardrone/image raw/compressedDepth/parameter updates
/ardrone/image raw/theora
/ardrone/image raw/theora/parameter descriptions
/ardrone/image raw/theora/parameter updates
/ardrone/imu
/ardrone/land
/ardrone/landing topic
/ardrone/mag
/ardrone/navdata
/ardrone/odometry
/ardrone/raw imu
/ardrone/reset
/ardrone/takeoff
/ardrone/takeoff topic
/ardrone/tracking topic
/cancel hovering/current status
/cmd vel
/diagnostics
/image converter/output video
/image converter/output video/compressed
/image converter/output video/compressed/parameter descriptions
/image converter/output video/compressed/parameter updates
/image converter/output video/compressedDepth
/image converter/output video/compressedDepth/parameter descriptions
75
7. METODOLOGÍA
/image converter/output video/compressedDepth/parameter updates
/image converter/output video/theora
/image converter/output video/theora/parameter descriptions
/image converter/output video/theora/parameter updates
/joy
/platform/estimated position
/platform tracking real/parameter descriptions
/platform tracking real/parameter updates
/rosout
/rosout agg
/tf
/tf static
Nodos activos en el Algoritmo de Control PID adaptativo
/platform detection real (véase subapartado 7.2.2.1)
/platform tracking real no pred (véase subapartado 7.2.2.2)
/ardrone driver (véase subapartado 7.2.2.5)
/joy node
/ardrone teleop (véase subapartado 7.2.2.6)
/summit moves (véase subapartado 7.2.2.7)
/rosout
Nodos activos en el Algoritmo de Control PID predictivo
/platform detection real (véase subapartado 7.2.2.1)
/platform tracking real (véase subapartado 7.2.2.2)
/pos transformer (véase subapartado 7.2.2.3)
/prediction kalman node (véase subapartado 7.2.2.4)
/ardrone driver (véase subapartado 7.2.2.5)
/joy node
/ardrone teleop (véase subapartado 7.2.2.6)
/summit moves (véase subapartado 7.2.2.3)
/rosout
76
7.2 Implementación en ROS
A modo de ejemplo, y para una mejor comprensión de las interacciones entre los
distintos nodos ROS, ası́ como de los tópicos a través de los cuales dichos nodos se
comunican, se ha elaborado el esquema mostrado en la Figura 7.7. Representa el entramado de nodos y tópicos del sistema real cuando se emplea como algoritmo de
seguimiento-aterrizaje el basado en un control PID adaptativo. Las elipses contienen
nodos ROS (como /ardrone driver ), mientras que los tópicos ROS (como /joy) se encuentran recuadrados. Nótese que los nodos /ardrone teleop, /platform detection real y
/platform tracking real han sido desarrollados por el autor.
Figura 7.7: Entramado de nodos, tópicos y servicios en el sistema real con Control PID
adaptativo.
Es importante recordar ahora que la comunicación entre nodos ROS a través de los
77
7. METODOLOGÍA
topicos ROS se lleva a cabo empleando principalmente dos elementos: los publicadores
ROS y los suscriptores ROS. Ambos son variables que el programador del sistema ha de
declarar en su nodo en caso de necesitar publicar en un tópico o suscribirse a determinada información que esté siendo publicada en un tópico. De cualquier forma, un nodo
podrá contener solamente publicadores, solamente suscriptores, una mezcla de ambos,
o incluso no poseer ninguno de estos elementos, aunque este último caso no suele ser
habitual en proyectos de gran embergadura.
A continuación, se explican en detalle los distintos nodos que conforman el sistema
desarrollado en este proyecto. Además, se detallan exactamente cuáles son los tópicos
a los que se suscribe cada nodo y cuáles los tópicos donde publica cada uno de ellos.
7.2.2.1.
Nodo de detección-localización
El nodo ROS denominado /platform detection real (véase de nuevo la Figura 7.7)
es donde se ha implementado el algoritmo de detección-localización de la plataforma
de aterrizaje.
Como datos de entrada, este nodo ROS recibe el feed de la cámara ventral del
vehı́culo aéreo y los propios parámetros de calibración de dicha cámara, ası́ como la
altitud de vuelo o los datos de la IMU (en castellano, Unidad de Medición Inercial).
Estos dos últimos serán necesarios para un correcto tratamiento de las imágenes recibidas, ya que, por ejemplo, permitirán descartar aquellas que hayan sido obtenidas en
instantes en los que la inclinación del UAV en x o en y era excesiva.
Posteriormente, se hallará la posición del centroide de la plataforma de aterrizaje
con respecto al frame de la cámara y se almacenará en un mensaje ROS de tipo PoseStamped. Además de poder registrar la posición, este tipo de mensaje cuenta, como
la gran mayorı́a de los mensajes ROS, con unos atributos o variables que indican el
instante de tiempo en el que se creó dicho mensaje y el frame con respecto al cual se
encuentra referenciada la posición almacenada en él. En este caso, el frame de referencia
es /downward cam optical frame. Finalmente, se publicará este mensaje en un tópico
78
7.2 Implementación en ROS
ROS denominado /platform/estimated position.
7.2.2.2.
Nodo de seguimiento-aterrizaje
Como ya se ha visto en el Capı́tulo 6, uno de los objetivos de este proyecto ha sido
evaluar cómo mejora el seguimiento y aterrizaje de un UAV sobre una PA cuando se
pasa de un seguimiento basado en un PID adaptativo a otro basado en el empleo de
una acción predictiva (filtro de Kalman). Es por ello que, igual que en el Capı́tulo 6,
se diferenciará ahora entre un nodo de seguimiento-aterrizaje sin predicción y otro con
una acción predictiva.
Nodo PID adaptativo
Una vez publicada en el tópico ROS /platform/estimated position la posición del
centroide respecto del frame de la cámara del UAV, el nodo de seguimiento-aterrizaje
tomará esta como refrerencia para la sub-tarea de seguimiento. Esto es posible gracias
a que dicho nodo (denominado /platform tracking real no pred en el entramado de nodos y tópicos) está suscrito al tópico donde se publica la posición. De esta manera,
cada vez que un nuevo mensaje sea publicado, se llamará a una determinada función
(más concretamente, a una determinada callback ) dentro del código del nodo /platform tracking real no pred. Se recuerda que, en ROS (y en programación en general),
las funciones llamadas tras eventos externos al propio entorno o scope donde reside
dicha función se cononcen como callbacks.
Después de recoger la posición de la plataforma de aterrizaje referenciada a la cámara del UAV, el nodo /platform tracking real no pred se servirá de la herramienta tf para
transformar dicha posición al sistema de referencia del cuerpo de vehı́culo aéreo, cuyo
frame se denomina /base link. Una vez realizada esta transformación, el algoritmo de
seguimiento-aterrizaje se desarrollará tal y como se explicó en el Capı́tulo 6, publicando
los comandos de velocidad necesarios en el tópico /quadrotor/cmd vel.
Nodo PID predictivo
Como ya se vio al comienzo de esta sección, el algoritmo de seguimiento-aterrizaje
con predicción (nodo /platform tracking real ) recibe como entrada la posición futura de
79
7. METODOLOGÍA
la PA referida al sistema del mundo. Sin embargo, antes de ser recibida dicha posición,
la información proveniente del algoritmo de detección-localización fluye por distintos
nodos ROS que se encargan de tratarla correctamente. A continuación se recuerda cuál
es este flujo de información.
Inicialmente, y como ya se ha visto, el nodo de detección-localización (/platform detection real )
genera un punto, que es la posición de la PA con respecto a la cámara. Después, esta información es rescatada por el nodo /pos transformer (se describe en el apartado
siguiente), que se encarga de transformarla al sistema de referencia del mundo. Esto
es necesario debido a que el algoritmo de predición (nodo /prediction kalman node)
necesita trabajar con posiciones referidas a sistemas de referencia inerciales.
Tras realizar los cálculos necesarios, este nodo ROS de predicción habrá generado
el mencionado vector de posiciones futuras. En este caso, y de cara al algoritmo de
seguimiento-aterrizaje (nodo /platform tracking real ), se tomará solamente el último
valor de dicho vector, que corresponderá a la posición futura de la PA dentro de un
tiempo definido por path time (véase Sección 6.3.3 para más información sobre los
parámetros del Filtro de Kalman).
Es importante hacer notar que la posición enviada por el nodo /prediction kalman node
está referida al sistema de referencia del mundo. Por este motivo, el nodo de seguimientoaterrizaje /platform tracking real deberá transformarla al frame del cuerpo del UAV
(/base link ). Una vez realizada esta transformación, este nodo de seguimiento-aterrizaje
con acción prediccitva calculará el error de posición (tal y como se explicó en el Capı́tulo 6) y publicará en el tópico /cmd vel las velocidades en x y en y que hay que aplicar
al UAV para hacer converger dicho error a cero.
7.2.2.3.
Nodo de transformación de la posición
Como se ha menciondo en la explicación del nodo anterior, este nodo existe tan
solo en el sistema que emplea el control PID predictivo. Es el encargado de suscribirse
a la posición de la PA (publicada por el nodo de detección-localización con respecto
a la cámara del UAV) y transformarla al sistema de referencia del mundo. Para el
sistema simulado, y con el esquema en árbol 7.3 presente, la transformación realizada
80
7.2 Implementación en ROS
es del frame /downward cam optical frame (cámara UAV) al frame /centre (sistema de
referencia inercial que representa el origen de coordenadas del sistema).
7.2.2.4.
Nodo del Filtro de Kalman
Como también se ha explicado más arriba, el nodo /prediction kalman node es el
encargado de realizar los cálculos necesarios para obtener la posición futura de la PA
en base a la posición de la misma referida al sistema del mundo en cada instante. Para
ello, emplea varios parámetros (a definir por el usuario), como el parámetro path time,
model covariance y observation covariance, que deberán ser correctamente ajustados.
En particular, y como se explicó en la Sección 6.3.4, el valor de path time deberá ser
recalculado continuamente en función de la altura del UAV con respecto a la PA. Será el
propio nodo de seguimiento-aterrizaje (que es donde corre el sistema de control de
altura), quien recalculará dicho parámetro y lo enviará al nodo de predicción. Ası́, este
último podrá proporcionar predicciones ajustadas y precisas.
7.2.2.5.
Nodo del driver del vehı́culo aéreo
Este nodo es el encargado de publicar toda la información relativa al estado del
AR Drone, como por ejemplo la altitud del vehı́culo, los parámetros de ambas cámaras
o los datos de la IMU. Se encarga de gestionar los comandos de velocidad generados
por los nodos de seguimiento-aterrizjae (suscribiéndose al tópico /cmd vel ), ası́ como de
gestionar los servicios de despegue, reseteo del aparato, parada de emergencia, aterrizaje
o flattrim (servicio que recalibra las estimaciones de rotación del UAV asumiendo que
este se encuentra en una superficie plana).
7.2.2.6.
Nodo de teleoperación
Fue necesaria la elaboración de un nodo de teleoperación (/ardrone teleop) para la
conversión de los mensajes de tipo ‘joy’ (generados por el usuario al pulsar cualquier
botón del controlador SixAxis y publicados en el tópico /joy) a mensajes de tipo ‘twist’
que, tras ser publicados en el tópico /cmd vel, puedan ser leı́dos por el driver del AR
Drone.
81
7. METODOLOGÍA
7.2.2.7.
Nodo de movimiento de la PA (Summit XL)
Tras contemplar la posibilidad de teleoperar la PA (en este caso, el robot terrestre
Summit XL), finalmente se pensó que resultaba de mayor interés el que el sistema UAVUGV desarrollado (o también, sistema UAV-PA) pudiera ser completamente autónomo.
De esta manera, se desarrolló el código necesario para que el movimiento de la plataforma robótica terrestre Summit XL fuera programado y no teleoperado. En la Sección 8
se explican en detalle las distintas maniobras y misiones implementadas en este UAV.
Se quiere hacer notar que, debido a problemas en los drivers de los motores del
Summit XL, el movimiento del mismo no era fluido, frenándose en seco a menudo e
impidiendo que el nodo ROS /summit moves se ejecutara con normalidad. Por ello, y
con el objetivo de simplificar y solventar cualquier tipo de problemática a este respecto,
en repetidas ocasiones se tuvo que recurrir a la teleoperación.
82
8
Experimentos y resultados
Debido a que el principal propósito de esta investigación ha sido el aterrizaje de un
vehı́culo aéreo sobre una PA móvil, en la etapa de experimentación sobre las plataformas
reales se decidió facilitar al máximo las tareas de detección, y es que estas estaban
suponiendo un serio obstáculo para la validación de los algoritmos de seguimientoaterrizaje. De esta manera, se optó por diseñar un escenario de pruebas sencillo que
contara con un terreno llano y de color uniforme.
8.1.
8.1.1.
Sistema simulado
Descripción de los experimentos
Las pruebas se realizaron en el simulador Gazebo. Este permite el modelado de
plataformas robóticas muy similares a las reales, pudiéndose obtener ası́ resultados
altamente fiables. En cuanto al escenario, se creó una explanada de asfalto lo suficientemente grande ((véase Figura 8.1)) como para que la PA pudiera realizar distintas
trayectorias y misiones , las cuales se describen en los apartados 8.1.1.1, 8.1.1.2 y 8.1.1.3.
Será a través de dichas misiones como se podrán poner a prueba los dos algoritmos de
seguimiento-aterrizaje desarrollados.
8.1.1.1.
Misión 1: Trayectoria cuadrada
En esta primera misión, la PA decribirá una trayectoria cuadrada de 8x8 m a una
velocidad según su eje x de vx (m/s) (esta velocidad será uno de los parámetros de las
83
8. EXPERIMENTOS Y RESULTADOS
Figura 8.1: Escenario diseñado en el simulador. Se optó por crear una explanada de
asfalto sencilla.
pruebas).
La PA partirá del reposo, ası́ como el UAV, que estará situado sobre la primera.
Tras la señalización del despegue por parte del autor del trabajo, el vehı́culo aéreo
comenzará su fase de ascenso hasta una altura prefijada de 6 m. Por su parte, la PA
también habrá empezado a moverse. Al alcanzar el UAV la altura indicada, detectará la
PA y comenzará a seguirla. Tras un determinado tiempo en modo de seguimiento (se
ha establecido en 15 s), se dará luz verde a la maniobra de aterrizaje.
8.1.1.2.
Misión 2: Trayectoria aproximadamente circular
En esta segunda misión, la PA describirá cı́rculos con una velocidad de avance según
su eje x de vx (m/s) y una velocidad angular en z de wz (rad/s). La trayectoria descrita, debido a que el deslizamiento de las ruedas del Summit XL real está incluido en
el simulador, no resulta exactamente un cı́rculo, pero sı́ se asemeja bastante.
84
8.1 Sistema simulado
La PA partirá del reposo, ası́ como el UAV, que estárá situado sobre la primera.
Tras la señalización del despegue por parte del usuario del sistema, el vehı́culo aéreo
comenzará su fase de ascenso hasta una altura prefijada de 6 m. Por su parte, la PA
también habrá empezado a moverse. Al alcanzar el UAV la altura indicada, detectará la
PA y comenzará a seguirla. Posteriormente, y para agregar cierto grado de aleatoriedad
al experimento y ası́ poder estudiar distintas situaciones, el autor del proyecto pulsará el
botón de aterrizaje en un instante cualquiera.
Las Misiones 1 y 2 se ejecutarán de dos formas distintas, con el fin de poder obtener,
por un lado, un porcentaje de aterrizajes exitosos frente a un total de aterrizajes (realizados todos bajo las misma condiciones) y, por otro lado, poder evaluar la robustez
de la máquina de estados, del sistema de relocalización de la PA y del sistema en su
conjunto.
Prueba A: Lanzando el sistema 20 veces desde cero y, por lo tanto, realizando 20
maniobras despegue-seguimiento-aterrizaje bajo las mismas condiciones. Como se
acaba de mencionar, esto permitirá obtener un porcentaje de aterrizajes exitosos
frente a un número total fijo de aterrizajes.
Prueba B: Lanzando el sistema 1 vez y repitiendo la maniobra despegue-seguimientoaterrizaje el mayor número de veces posible hasta el fallo total del sistema o hasta alcanzar los 40 ciclos despegue-seguimiento-aterrizaje. Esto es, hasta que el
UAV vuelque o hasta que, tras perder el contacto visual con la PA, el sistema
de relocalización del algoritmo de seguimiento-aterrizaje no consiga reencontrarla. Asimismo, se considerará que, alcanzado este valor, se puede asegurar que el
algoritmo es extremadamenta robusto, sin poder asegurar su robustez completa.
8.1.1.3.
Misión 3: Trayectoria aleatoria
En esta tercera misión, el movimiento de la PA será totalmente aleatorio. Su velocidad máxima de avance según su eje x será de vx (m/s), mientras que su velocidad
angular máxima en z será de wz (rad/s).
85
8. EXPERIMENTOS Y RESULTADOS
De nuevo, la PA partirá del reposo, ası́ como el UAV, que estárá situado sobre la
primera. Tras la señalización del despegue por parte del usuario del sistema, el vehı́culo
aéreo comenzará su fase de ascenso hasta una altura prefijada de 6 m. Por su parte, la
PA también habrá empezado a moverse. Los aterrizajes y despegues se realizarán con
una periodicidad aleatoria, con el objetivo de agregar cierto grado de aleatoriedad al
experimento.
La Misión 3 se guiará por el modelo de Prueba B, visto anteriormente.
8.1.2.
Resultados
A continuación, se muestran los resultados obtenidos cada uno de los algoritmos.
8.1.2.1.
Misiones 1 y 2 - Prueba A
Primeramente, se mostrarán los resultados de las Misiones 1 y 2 - Prueba A para
distintas velocidades de la PA (véanse Cuadros 8.1, 8.2, 8.3 y 8.4).
Las variables de estudio serán:
1. Número de aterrizajes exitosos del UAV sobre la PA.
2. Error Medio (EM) entre el centroide de la PA y el punto en el que el UAV aterriza
sobre la misma.
3. Error máximo entre el centroide de la PA y el punto en el que el UAV aterriza
sobre la misma
4. Número de aterrizajes fallidos.
5. Porcentaje de éxito sobre el total de aterrizajes realizados.
86
8.1 Sistema simulado
No Aterrizajes
20
Misión 1
PID adapt. PID pred.
Misión 2
PID adapt. PID pred.
Velocidad PA
vx = 0.12 m/s
vx = 0.12 m/s
wz = 0.06 rad/s
Exitosos
EM (cm)
Emax (cm)
Fallidos
% Éxito
20
5.7
9.5
0
100 %
20
4.3
6.9
0
100 %
20
10.3
13.2
0
100 %
20
5.2
7.1
0
100 %
Cuadro 8.1: Resultados de las Misiones 1 y 2 - Prueba A - Simulador.
No Aterrizajes
20
Misión 1
PID adapt. PID pred.
Misión 2
PID adapt. PID pred.
Velocidad PA
vx = 0.16 m/s
vx = 0.16 m/s
wz = 0.08 rad/s
Exitosos
EM (cm)
Emax (cm)
Fallidos
% Éxito
20
7.2
11.9
0
100 %
20
4.9
7.0
0
100 %
20
12.6
15.1
0
100 %
20
6.7
9.2
0
100 %
Cuadro 8.2: Resultados de las Misiones 1 y 2 - Prueba A - Simulador.
87
8. EXPERIMENTOS Y RESULTADOS
No Aterrizajes
20
Misión 1
PID adapt. PID pred.
Misión 2
PID adapt. PID pred.
Velocidad PA
vx = 0.20 m/s
vx = 0.20 m/s
wz = 0.10 rad/s
Exitosos
EM (cm)
Emax (cm)
Fallidos
% Éxito
19
14.2
19.3
1
95 %
20
9.3
12.8
0
100 %
17
17.9
21.7
3
85 %
20
11.1
14.7
0
100 %
Cuadro 8.3: Resultados de las Misiones 1 y 2 - Prueba A - Simulador.
No Aterrizajes
20
Misión 1
PID adapt. PID pred.
Misión 2
PID adapt. PID pred.
Velocidad PA
vx = 0.24 m/s
vx = 0.24 m/s
wz = 0.12 rad/s
Exitosos
EM (cm)
Emax (cm)
Fallidos
% Éxito
18
25.2
30.1
2
90 %
20
14.7
19.8
0
100 %
16
26.9
31.5
4
80 %
19
17.7
24.7
1
95 %
Cuadro 8.4: Resultados de las Misiones 1 y 2 - Prueba A - Simulador.
88
8.1 Sistema simulado
8.1.2.2.
Misiones 1, 2 y 3 - Prueba B
Tras haber expuesto los resultados pertenecientes a las Misiones 1 y 2 - Prueba 1,
a continuación se muestran los pertenecientes a las Misiones 1, 2 y 3 - Prueba 2. Se
recuerda que en esta prueba se tratará de evaluar cuántos ciclos despegue-seguimientoaterrizaje es capaz de realizar el UAV hasta el fallo (hasta que vuelque o hasta que,
tras perder el contacto visual con la PA, el sistema de relocalización del algoritmo de
seguimiento-aterrizaje no consiga reencontrarla). Se recuerda igualmente que, alcanzados los 40 ciclos, se concluirá la prueba. En tal caso, se supondrá que el sistema es
altamente robusto a la velocidad de la PA en cuestión, sin poder asegurar por completo
su robustez total.
Se muestra, además, el número de maniobras de relocalización realizadas durante
la prueba. Un valor alto en esta variable indica que el control PID no funciona a la
perfección, pero también demuestra que el sistema es lo suficientemente robusto como
para solventar situaciones en las que el aterrizaje es fallido.
Los resultados se muestran en los Cuadros 8.5, 8.6, 8.7 y 8.8.
Velocidad PA
Misión 1
Adapt. Pred.
Misión 2
Adapt. Pred.
Misión 3
Adapt.
Pred.
vx = 0.12 m/s
vx = 0.12 m/s
wz = 0.06 rad/s
vx = (0, 0.12) m/s
wz = (0, 0.06) rad/s
Ciclos hasta fallo
40
40
40
40
40
40
Relocalizaciones
0
0
0
0
0
0
Cuadro 8.5: Resultados de las Misiones 1, 2 y 3 - Prueba B - Simulador.
89
8. EXPERIMENTOS Y RESULTADOS
Velocidad PA
Misión 1
Adapt. Pred.
Misión 2
Adapt. Pred.
Misión 3
Adapt.
Pred.
vx = 0.16 m/s
vx = 0.16 m/s
wz = 0.08 rad/s
vx = (0, 0.16) m/s
wz = (0, 0.08) rad/s
Ciclos hasta fallo
40
40
40
40
40
40
Relocalizaciones
0
0
0
0
0
0
Cuadro 8.6: Resultados de las Misiones 1, 2 y 3 - Prueba B - Simulador.
Velocidad PA
Misión 1
Adapt. Pred.
Misión 2
Adapt. Pred.
Misión 3
Adapt.
Pred.
vx = 0.20 m/s
vx = 0.20 m/s
wz = 0.10 rad/s
vx = (0, 0.20) m/s
wz = (0, 0.10) rad/s
Ciclos hasta fallo
40
40
37
40
33
40
Relocalizaciones
4
0
5
0
7
6
Cuadro 8.7: Resultados de las Misiones 1, 2 y 3 - Prueba B - Simulador.
Velocidad PA
Misión 1
Adapt. Pred.
Misión 2
Adapt. Pred.
Misión 3
Adapt.
Pred.
vx = 0.24 m/s
vx = 0.24 m/s
wz = 0.12 rad/s
vx = (0, 0.24) m/s
wz = (0, 0.12) rad/s
Ciclos hasta fallo
38
40
36
40
31
40
Relocalizaciones
5
1
6
4
7
6
Cuadro 8.8: Resultados de las Misiones 1, 2 y 3 - Prueba B - Simulador.
90
8.1 Sistema simulado
Aunque estos resultados se discutirán en profundidad en el Capı́tulo 8, es inmediato observar que el sistema despegue-seguimiento-aterrizaje implementado en simulador
funciona correctamente, respondiendo sin fallo a velocidades de la PA entre 0.12 y 0.20
m/s y empeorando ligeramente (aunque manteniendo un % de éxito del 75-85 %) a
velocidades mayores. Esto es ası́ tanto para el algoritmo de seguimiento-aterrizaje basado en un control PID adaptativo como para el basado en un control PID predictivo, si
bien es cierto que en el segundo caso los resultados son notablemente más satisfactorios.
A modo de ejemplo, en la secuencia de imágenes de la Figura 8.2 se muestra el
resultado de uno de los ciclos despegue-seguimiento-aterrizaje de la Misión 2 cuando se
emplea el algoritmo de seguimiento-aterrizaje basado en un control PID adaptativo.
91
8. EXPERIMENTOS Y RESULTADOS
(a)
(b)
(c)
(d)
(e)
(f )
(g)
(h)
Figura 8.2: Secuencia de imágenes: Misión 2 - Prueba A - Sistema Simulado.
92
8.2 Sistema real
8.2.
Sistema real
En este caso, los experimentos realizados tan solo se llevarán a cabo empleando
el algoritmo de seguimiento-aterrizaje con Control PID adaptativo. El motivo por el
cual el algoritmo con Control PID predictivo no se pudo evaluar en las plataformas
reales es que el Filtro de Kalman requiere como entrada una posición referida a un
sistema de referencia fijo, como se explicó en el Capı́tulo 6. En el simulador esto era
fácilmente abordable; sin embargo, al carecer el vehı́culo aéreo empleado (AR Drone
2.0) de sistema GPS, esta tarea se planteaba verdaderamente compleja. Finalmente, se
decidió dejar como pendiente la tarea de validación en la realidad del algoritmo con
Control PID predictivo, a la espera de poder contar con un UAV con GPS integrado.
8.2.1.
Descripción de los experimentos
Las pruebas se realizaron en el pabellón de deporte de la ETSI Industriales. En cuanto a la preparación del escenario de pruebas, se cubrió el suelo con colchonetas de color
verde. El objetivo era ocultar la gran cantidad de lı́neas de distintos colores existentes
en el suelo de la nave y, de esta manera, facilitar al máximo la tarea de detección. Como
se indicó anteriormente, con ello se buscaba poder evaluar de manera segura y efectiva el algoritmo de seguimiento-aterrizaje. En la Figura 8.3 se muestra el escenario final.
De nuevo, se plantearon pequeñas misiones a través de las cuales poner a prueba
el sistema (se recuerda que, esta vez, tan solo se trabajó con el algoritmo basado en
un Control PID adaptativo). En los apartados 8.2.1.1, 8.2.1.2 y 8.2.1.3 se resaltarán
pequeñas diferencias entre dichas misiones en el sistema real y las descritas con anterioridad para el sistema simulado.
8.2.1.1.
Misión 1: Trayectoria rectilı́nea
En esta primera misión, la PA decribirá una trayectoria cuadrada de 3x3 m a una
velocidad según su eje x de vx (m/s) (esta velocidad será uno de los parámetros de las
pruebas).
93
8. EXPERIMENTOS Y RESULTADOS
Figura 8.3: Escenario diseñado en la realidad. Se optó por el empleo de colchonetas
verdes de dimensiones 2x1 m. El resultado fue una explanada de 100 m2 sobre la que poder
realizar misiones en las cuales la detección no supusiera un problema inabordable.
La PA partirá del reposo, ası́ como el UAV, que estárá situado sobre la primera.
Tras la señalización del despegue por parte del autor del trabajo, el vehı́culo aéreo
comenzará su fase de ascenso hasta una altura prefijada de 3 m. Por su parte, la PA
también habrá empezado a moverse. Al alcanzar el UAV la altura indicada, detectará la
PA y comenzará a seguirla. Tras un determinado tiempo en modo de seguimiento (se
ha establecido en 40 s), se dará luz verde a la maniobra de aterrizaje.
8.2.1.2.
Misión 2: Trayectoria circular
En esta segunda misión, la PA describirá cı́rculos con una velocidad de avance según
su eje x de vx (m/s) y una velocidad angular en z de wz (rad/s). La trayectoria descrita, debido a que el deslizamiento de las ruedas del Summit XL real está incluido en
el simulador, no resulta exactamente un cı́rculo, pero sı́ se asemeja bastante.
La PA partirá del reposo, ası́ como el UAV, que estárá situado sobre la primera.
Tras la señalización del despegue por parte del usuario del sistema, el vehı́culo aéreo
94
8.2 Sistema real
comenzará su fase de ascenso hasta una altura prefijada de 3 m. Por su parte, la PA
también habrá empezado a moverse. Al alcanzar el UAV la altura indicada, detectará la
PA y comenzará a seguirla. Posteriormente, y para agregar cierto grado de aleatoriedad
al experimento y ası́ poder estudiar distintas situaciones, el autor del proyecto pulsará el
botón de aterrizaje en un instante cualquiera.
Como en el caso del sistema simulado, las Misiones 1 y 2 seguirán dos procesos de
evaluación distintos: Prueba A y Prueba B. La diferencia con lo anteriormente explicado al respecto será tan solo el número de veces que se repetirán los ciclos despegueseguimiento-aterrizaje en la Prueba A y el número máximo de veces que se repetirá dicho ciclo en la Prueba B (se fija en un máximo de 20, ya que la vida útil de las baterı́as
no permite un valor mayor).
8.2.1.3.
Misión 3: Trayectoria aleatoria
En esta tercera misión, el movimiento de la PA será totalmente aleatorio. Su velocidad máxima de avance según su eje x será de vx (m/s), mientras que su velocidad
angular máxima en z será de wz (rad/s).
De nuevo, la PA partirá del reposo, ası́ como el UAV, que estárá situado sobre la
primera. Tras la señalización del despegue por parte del usuario del sistema, el vehı́culo
aéreo comenzará su fase de ascenso hasta una altura prefijada de 3 m. Por su parte, la
PA también habrá empezado a moverse. Los aterrizajes y despegues se realizarán con
una periodicidad aleatoria, con el objetivo de agregar cierto grado de aleatoriedad al
experimento.
La Misión 3 se guiará por el modelo de Prueba B, visto anteriormente.
Nótese que, por motivos de seguridad, se ha tenido que reducir ligeramente la altura
de vuelo de 6 m en el simulador a 3 m en la realidad, si bien es cierto a esta última
altura el UAV era capaz de seguir perfectamente a la PA.
Asimismo, se quiere hacer notar lo siguiente. Debido a la dificultad de la preparación de cada prueba en la realidad, ası́ como del manejo autónomo del robot terrestre
95
8. EXPERIMENTOS Y RESULTADOS
Summit XL (existı́an problemas con los drivers de sus motores), se optó por realizar
la mayorı́a de las pruebas de forma teleoperada. Es por ello que, en este caso, no se
podrán detallar las velocidades de la PA.
A continuación, se muestran los resultados de las Misiones 1, 2 y 3 para el sistema
real. Nótese que se han realizado menos repeticiones y que se han realizado los experimentos para un solo par (vx ,wz ) desconocido. Cuando se consiga reparar la plataforma
terrestre Summit XL, se podrá ejecutar el mismo código empleado para el movimiento
de la misma en el sistema simulado y ası́ poder conocer dichos valores también en el
sistema real.
8.2.1.4.
Misiones 1 y 2 - Prueba A
Los resultados de las Misiones 1 y 2 para el tipo de Prueba A en el sistema real se
muestran en el Cuadro 8.9
No Aterrizajes
10
Exitosos
EM (cm)
Emax (cm)
Fallidos
% Éxito
Misión 1 Misión 2
PID adapt.
10
30.1
34.7
0
100 %
8
36.6
41.8
2
80 %
Cuadro 8.9: Resultados de las Misiones 1 y 2 - Prueba A - Sistema Real. La
PA era teleoperada, por lo que sus velocidades exactas se desconocen. Aproximadamente,
vx = 0,2 m/s y wz = 0,1 rad/s.
En la secuencia de imágnes de la Figura 8.4 se muestra uno de los 10 ciclos despegueseguimiento-aterrizaje de la Misión 1 - Prueba A.
96
8.2 Sistema real
8.2.1.5.
Misiones 1, 2 y 3 - Prueba B
Los resultados de las Misiones 1, 2 y 3 para el tipo de Prueba B se muestran en el
Cuadro 8.10
Misión 1
Ciclos hasta fallo
Relocalizaciones
20
0
Misión 2 Misión 3
PID adapt.
17
2
10
8
Cuadro 8.10: Resultados de las Misiones 1, 2 y 3 - Prueba B - Sistema Real. La
PA era teleoperada, por lo que sus velocidades exactas se desconocen. Aproximadamente,
vx = 0,2 m/s y wz = 0,1 rad/s.
97
8. EXPERIMENTOS Y RESULTADOS
(a)
(b)
(c)
(d)
(e)
(f )
(g)
(h)
Figura 8.4: Secuencia de imágenes: Misión 1 - Prueba A - Sistema real.
98
8.3 Valoración de impactos y de aspectos de responsabilidad legal, ética y
profesional
8.3.
Valoración de impactos y de aspectos de responsabilidad legal, ética y profesional
El impacto medioambiental del sistema desarrollado en este Trabajo Fin de Grado
es prácticamente nulo. Existen, sin embargo, dos excepciones.
La primera es la contaminación acústica generada por las hélices del vehı́culo aéreo
durante el vuelo, pudiendo suponer un peligro importante para la salud humana en espacios cerrados demasiado pequeños. Por otro lado, existe el problema de las baterı́as,
tanto las del vehı́culo aéreo como las del terrestre. Y es que con el uso repetido, estas
se deterioran, y se ha de asegurar que son desechadas de forma correcta en los puntos
limpios correspondientes.
Con respecto al impacto social de esta trabajo, se quiere hacer notar el gran avance
que supondrı́a en el ámbito de las tareas de Búsqueda y Rescate la implantación de
un sistema autónomo como el aquı́ presentado. En un futuro no muy lejano, y con las
pertinentes mejoras y modificaciones, podrı́a permitir la sustitución definitiva de las
personas por equipos mixtos de UAVs y UGVs en tareas peligrosas, como la búsqueda
de heridos tras el derrumbamiento de un edificio o la localización de personas atrapadas
por el fuego en un bosque. De esta manera, se conseguirı́a una mejora notable en las
áreas de Prevención de Riesgos Laborales de muchos empleos actuales.
Por otro lado, este trabajo supone una interesante aportación para los estudiantes
de esta u otra escuelas de ingenierı́a, ya que, una vez sea subido a los repositorios en la
web, podrá servir de referencia para el aprendizaje de herramientas como ROS o Gazebo, o incluso de lenguajes de programción, como C++. Asimismo, también servirá de
base para futuros alumnos interesados en seguir mejorando el sistema aquı́ presentado.
Finalmente, se ha de mencionar la reciente problemática legislativa con respecto al
uso de drones. La proliferación del uso de estos conlleva un gran riesgo para la seguridad
aérea, como se indica en el BOE (Boletı́n Oficial del Estado) en varios números, como
el 163 del 5 de julio de 2014, páginas 52544 a 52715 (172 páginas). Es por ello que
trabajos como el aquı́ desarrollado podrán ver dificulatado su desarrollo, a no ser que
99
8. EXPERIMENTOS Y RESULTADOS
los organismos gubernamentales fueran los que decidieran seguir mejorándolo con el fin
de aplicarlo a tareas de Búsqueda y Rescate en situaciones reales.
100
9
Conclusiones y lı́neas futuras
9.1.
Conclusiones
En este Capı́tulo se discuten los resultados obtenidos, extrayendo las conclusiones
correspondientes.
En lı́neas generales, es sistema de coordinación UAV-UGV desarrollado en este
trabajo cumple muy satisfactoriamente con su objetivo principal, esto es, la automatización del ciclo de tareas despegue-seguimiento-aterrizaje (d-s-a) de un UAV sobre una
PA situada sobre un UGV. Los resultados son positivos tanto en el sistema simulado
como en el real.
Más concretamente, se puede apreciar que el sistema es altamente robusto cuando
las velocidades máximas de la PA son de vx = 0.20 m/s y de wz = 0.10 rad/s. A
velocidades mayores, la tasa de éxito en las maniobras de aterrizaje va disminuyendo
progresivamente, si bien se consigue que hasta velocidades de vx = 0.24 m/s y de wz =
0.12 rad/s el sistema siga teniendo un funcionamiento más que correcto (tasa de éxito
superior al 80 %).
Asimismo, se puede apreciar cómo el sistema responde mejor ante trayectorias cuadradas de la PA que ante trayectorias circulares o aleatorias. En dichas trayectorias
circulares y aleatorias, el algoritmo de seguimiento-aterrizaje basado en un control PID
predictivo proporciona mejores resultados que el basado en un control PID adaptativo
101
9. CONCLUSIONES Y LÍNEAS FUTURAS
con la altura. Sin embargo, en trayectorias rectilı́neas, ambos responden de manera
similar.
No solo se ha podido comprobar que el porcentaje de aterrizajes completados es
elevado en cualquier configuración de trayectoria seguida por la PA (cuadrada, circular o aleatoria), sino que también se ha verificado el correcto funcionamiento del
sistema de control de altura y relocalización. Gracias a este, el número máximo de
ciclos d-s-a hasta el fallo total del sistema se mantiene en valores elevados, resultando
ası́ un sistema robusto y prácticamente listo para su aplicación en tareas de la vida real.
Por todo ello, se puede concluir que los objetivos marcados al comienzo del trabajo
han sido ampliamente alcanzados.
102
9.2 Lı́neas futuras
9.2.
Lı́neas futuras
El aspecto que más dificultades ha generado en este proyecto ha sido el correcto
ajuste del algoritmo de visión. Ello se ha debido, principalmente, a que la resolución y
calidad de la cámara ventral del AR Drone 2.0 son realmente bajas, pues está pensada
para control de flujo óptico y no para tareas de detección en las que se requiera una
precisión elevada en el cálculo de los pı́xeles del objeto a detectar. En definitiva, una
lı́nea de trabajo interesante serı́a implementar el sistema aquı́ desarrollado en una plataforma robótica aérea distinta, como el Pelican (véase Figura 9.1).
Empleando dicho UAV, no solo se contarı́a con una cámara con mayor resolución,
sino que se tendrı́an menores tiempos de computación que en el caso del AR Drone 2.0.
Además, como el alcance y conexión de la señal Wi-Fi serı́an mayores en el Pelican,
se evitarı́an las pérdidas de información tan comunes el AR Drone 2.0 a distancias
mayores de 10 m, aumentando ası́ la fluidez del sistema en genaral.
Figura 9.1: Plataforma robótica Pelican.
Por último, y si finalmente se consiguiera implementar el sistema en otra plataforma aérea con mayores prestaciones, serı́a interesante sustituir el algoritmo de visión
aquı́ empleado (detección por colores) por otro más potente, como las librerı́as ArUco
103
9. CONCLUSIONES Y LÍNEAS FUTURAS
de detección de marcadores visuales (véase Figura 9.2), desarrolladas en la Universidad
de Córdoba.
Figura 9.2: Ejemplo de marcador empleado en las librerı́as ARUCO (Universidad
de Córdoba).
104
10
Glosario
UAV: Unmanned Aerial Vehicle. Traducción: Vehı́culo Aéreo No Tripulado.
UGV: Unmanned Ground Vehicle. Traducción: Vehı́culo Terrestre No Tripulado.
PA: plataforma de aterrizaje.
d-s-a: despegue-seguimiento-aterrizaje (ciclo de despegue, seguimiento y aterrizaje
realizado por el vehı́culo aéreo).
105
10. GLOSARIO
106
[11] J. Kao C.H. Huang, Y. Wu and M. Shih. A hybrid moving object detection method for aerial images.
In Pacific-Rim Conference on Multimedia, pages 357–368.
Springer, 2010. 10
[12] G. Dudek I. Rekleitis and E. Milios. Multi-robot cooperative localization: a study of trade-offs between
efficiency and accuracy. In Intelligent Robots and Systems, 2002. IEEE/RSJ International Conference on, 3,
pages 2690–2695. IEEE, 2002. 10
Bibliografı́a
[13] F. Pont A. Martinelli and R. Siegwart. Multi-robot
localization using relative observations. In Proceedings of the 2005 IEEE international conference on robotics
and automation, pages 2797–2802. IEEE, 2005. 10
[14] K. Fregene R. Madhavan and L.E. Parker. Distributed heterogeneous outdoor multi-robot localization. In Robotics and Automation, 2002. Proceedings.
ICRA’02. IEEE International Conference on, 1, pages
374–381. IEEE, 2002. 10
[1] M. Garzón I. Baira and A. Barrientos. Detecting, Localizing and Following Dynamic Objects with a
Mini-UAV.
RoboCity16 Open Conference on Future
Trends in Robotics, May 2016. iii, 2
[2] A. Barrientos M. Garzón, D. Garzón-Ramos and J. del Cerro. Pedestrian Trajectory Prediction in Large
Infrastructures: A long-term approach based on
path planning. In Proceedings of the 13th International
Conference on Informatics in Control, 2016. iv, 5, 47, 56,
61
[15] A. Baggio and K. Langendoen. Monte Carlo localization for mobile wireless sensor networks. Ad Hoc
Networks, 6(5):718–733, 2008. 10, 11
[16] J.M. Rabaey C. Savarese and J. Beutel. Location in
distributed ad-hoc wireless sensor networks. In
Acoustics, Speech, and Signal Processing, 2001. Proceedings.(ICASSP’01). 2001 IEEE International Conference
on, 4, pages 2037–2040. IEEE, 2001. 10, 11
[3] A. Talukder and L. Matthies. Real-time detection of
moving objects from moving vehicles using dense
stereo and optical flow. Intelligent Robots and Systems, 2004. (IROS 2004). Proceedings. 2004 IEEE/RSJ
International Conference, 4:3718–3725, September 2004.
8
[17] H. Choi W.E. Mantzel and R.G. Baraniuk. Distributed camera network localization. In Signals, systems
and computers, 2004. conference record of the thirty-eighth
asilomar conference on, 2, pages 1381–1386. IEEE,
2004. 10
[4] A.J. Lipton H. Fujiyoshi, R.T. Collins and T. Kanade. Algorithms for cooperative multisensor surveillance. In Proceedings of the IEEE 89(10), page 1456–1477.
IEEE, 2001. 8
[18] K. Akkaya H. Oztarak and A. Yazici. Lightweight object localization with a single camera in wireless
multimedia sensor networks. In Global Telecommunications Conference, 2009. GLOBECOM 2009. IEEE, pages 1–6. IEEE, 2009. 11
[5] S.Cheung and C. Kamath. Real-time detection of moving objects from moving vehicles using dense stereo and optical flow. EURASIP J. Appl. Signal Process,
page 2330–2340, January 2005. 8
[19] G.R. Rodrı́guez Canosa. Detection and Tracking of Dynamic Objects. A MultiRobot approach to Critical Infrastructures Surveillance. PhD thesis, ETSII - Technical
University of Madrid (UPM), 2013. 11
[6] R. Cucchiara, C. Grana, M. Piccardi, and A. Prati. Detecting moving objects, ghosts, and shadows in
video streams. IEEE Transactions on Pattern Analysis
and Machine Intelligence, 25(10):1337–1342, Oct 2003. 8
[20] A. Carvalho J.S. Esteves and C. Couto. Generalized
geometric triangulation algorithm for mobile robot absolute self-localization. In Industrial Electronics, 2003. ISIE’03. 2003 IEEE International Symposium
on, 1, pages 346–351. IEEE, 2003. 11
[7] H.Y. Zhang. Multiple moving objects detection and
tracking based on optical flow in polar-log images. Machine Learning and Cybernetics (ICMLC), 2010
International Conference, 3(10):1577–1582, jul 2010. 8
[21] A. Mancini A. Cesetti, E. Frontoni and P. Zingaretti. A
vision-based guidance system for UAV navigation
and safe landing using natural landmarks. In Selected papers from the 2nd International Symposium on UAVs,
Reno, Nevada, USA June 8–10, 2009, pages 233–257.
Springer, 2009. 11
[8] U. Franke and S. Heinrich. Fast obstacle detection
for urban traffic situations. Intelligent Transportation
Systems, IEEE Transactions, 3(3):173–181, sep 2002. 9
[9] R. Muñoz-Salinas.
ARUCO: a minimal library
for Augmented Reality applications based on
OpenCv. Universidad de Córdoba, 2012. 9
[22] J. Bobruk and D. Austin. Laser motion detection and
hypothesis tracking from a mobile platform. In
Proc. of the 2004 Australian Conference on Robotics & Automation, pages 1–10. Citeseer, 2004. 12
[10] K. Yun K. Moo Yi and K. Wan. Detection of moving
objects with non-stationary cameras in 5.8 ms:
Bringing motion detection to your mobile device. In Proceedings of the IEEE Conference on Computer
Vision and Pattern Recognition Workshops, pages 27–34,
2013. 10
[23] O. Aycard T.D. Vu and N. Appenrodt. Online localization and mapping with moving object tracking
in dynamic outdoor environments. In 2007 IEEE
Intelligent Vehicles Symposium, 2007. 12
107
BIBLIOGRAFÍA
[24] A. Udvarev P. Konstantinova and T. Semerdjiev.
A
study of a target tracking algorithm using global nearest neighbor approach. In Proceedings of the
International Conference on Computer Systems and Technologies (CompSysTech 2003), pages 290–295, 2003. 12
(ICRA), 2012 IEEE International Conference on, pages
971–976. IEEE, 2012. 13
[28] S. Saripalli and G.S. Sukhatme. Landing on a moving
target using an autonomous helicopter. In Field
and service robotics, pages 277–286. Springer, 2003.
14
[25] S. Thrun C.C. Wang, C. Thorpe and M. Hebert. Simultaneous localization, mapping and moving object
tracking. The International Journal of Robotics Research,
26(9):889–916, 2007. 12
[29] T. Schouten E.L. van den Broek, T. Kok and L.G. Vuurpijl.
Human-centered content-based image retrieval. In Electronic Imaging 2008, pages 68061L–
68061L. International Society for Optics and Photonics, 2008. 34
[26] K. Ling. Precision Landing of a Quadrotor UAV on
a Moving Target Using Low-cost Sensors. 2014.
13
[30] D. Farin Y. Morvan and P. de With.
Depth-Image
compression based on an RD optimized quadtree
decomposition for the transmission of multiview
images. IEEE International Conference on Image Processing, pages 87–105, 2007. 43
[27] T. Ryan D. Lee and H.J. Kim. Autonomous landing of
a VTOL UAV on a moving platform using imagebased visual servoing. In Robotics and Automation
108
Descargar