Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

248
JE R CU ESÚS MA REALI PAR UN UATRI ARÍA GO IMEN RA EL VEHÍ MOTO S ONZÁLE NTACIÓ CON ÍCULO OR NO SEVILLA 2010 EZ VILL ÓN VI NTROL O R O TRIP A LAGÓME ISUAL L DE REO PULA EZ L ADO

description

Memoria de Proyecto Final de Carrera. Realimentación visual basada en cámara onboard para el control de estabilización de un vehículo cuatrimotor no tripulado (quadrotor).

Transcript of Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Page 1: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

JE

R

CU

ESÚS MA

REALIPARUN

UATRI

ARÍA GO

IMENRA EL VEHÍMOTO

S

ONZÁLE

NTACIÓ CON

ÍCULOOR NO

SEVILLA2010

EZ VILL

ÓN VINTROLO AÉRO TRIP

A

LAGÓME

ISUALL DE REO PULA

EZ

L

ADO

Page 2: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado
Page 3: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

R

CU

Dpto

JE

D

UNIV

INGEN

REALIPARUN

UATRI

Proye

o. de Ing

E

ESÚS MA

DR. MA

VERSID

NIERO

IMENRA EL VEHÍMOTO

ecto Final

geniería

Escuela Su

ARÍA GO

ANUEL V

Sevilla, S

DAD D

EN INF

NTACIÓ CON

ÍCULOOR NO

de Carrera

a de Sist

uperior de

POR

ONZÁLE

TUTOR

VARGAS

Septiembre

E SEVI

FORMÁ

ÓN VINTROLO AÉRO TRIP

a presenta

temas y

Ingeniero

EZ VILL

S VILLA

e de 2010.

ILLA

ÁTICA

ISUALL DE REO PULA

ado en:

Automá

os

LAGÓME

ANUEVA

.

L

ADO

ática

EZ

A

Page 4: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

i

Page 5: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

ii

Page 6: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

iii

A Marta, mi novia, y mi familia, por su incomensurable paciencia.

A Rafa y Ramón, entre otros, compañeros del Departamento de Ingenieríade Sistemas y Automática de la Universidad de Sevilla, por haberme acogidocomo uno más entre ellos, y por haberme dado continuas muestras de cariño.

Y en especial a Manuel Vargas, profesor del Dpto., por haber confiado en míhabiéndome dado esta oportunidad y por estar siempre disponible para

ayudarme cada vez que llamaba a la puerta de su despacho, que no han sidopocas.

Gracias por haber estado siempre ahí.

Page 7: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

iv

Page 8: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

v

El contexto en el que se desarrolla este proyecto es en el delcontrol de vehículos aéreos autónomos (UAV). Se afronta esta ta-rea desde un punto de vista distinto al habitual, considerando enprimer lugar un control complementado mediante informaciónvisual obtenida del entorno, y en segundo lugar, como posibleampliación, se describen algunas técnicas mediante las cuales laúnica información sensorial para el control sería la obtenida conel sensor óptico. Se planteará un esquema de control basado envisión, y se incluirán descripciones de algoritmos para el proce-samiento de la información visual. Como conclusión a la presentememoria, y dada la especialidad del autor, se incluirán tambiénposibles ampliaciones del presente trabajo más próximas a la en-señanza recibida como Ingeniero en Informática.

Page 9: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

vi

Page 10: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Índice general

1. Introducción 11.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Problemas en el control visual de vehículos aéreos autónomos . 41.3. Objetivos y propuestas . . . . . . . . . . . . . . . . . . . . . . 71.4. Estructura del proyecto . . . . . . . . . . . . . . . . . . . . . 8

2. Estado del arte del control de plataformas UAV 112.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2. Control no basado en visión de vehículos aéreos autónomos . . 132.3. Control con información visual de vehículos aéreos autónomos 162.4. Aplicaciones del control visual en plataformas autónomas . . . 18

3. Técnicas de control con realimentación visual 213.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.2. Configuraciones cámara-robot . . . . . . . . . . . . . . . . . . 22

3.2.1. Según la disposición de la cámara respecto del robot . 223.2.2. Según el número de cámaras . . . . . . . . . . . . . . . 24

3.3. Esquemas de control visual . . . . . . . . . . . . . . . . . . . . 253.3.1. En función de la estructura de control . . . . . . . . . 253.3.2. En función de la información visual . . . . . . . . . . 273.3.3. En función de los elementos requeridos en el campo visual 333.3.4. En función de la necesidad de modelo del objeto . . . . 343.3.5. En función del modelo visuo-motor . . . . . . . . . . . 35

3.4. Otros aspectos del control visual . . . . . . . . . . . . . . . . . 363.5. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4. Localización y seguimiento del objeto de referencia 394.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.2. Representación del objeto . . . . . . . . . . . . . . . . . . . . 424.3. Selección de características para el seguimiento . . . . . . . . . 474.4. Detección del objeto . . . . . . . . . . . . . . . . . . . . . . . 49

4.4.1. Detectores de puntos . . . . . . . . . . . . . . . . . . . 49

vii

Page 11: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

ÍNDICE GENERAL viii

4.4.2. Métodos de detección no basados en puntos . . . . . . 524.5. Seguimiento del objeto . . . . . . . . . . . . . . . . . . . . . . 53

4.5.1. Seguimiento basado en puntos . . . . . . . . . . . . . . 544.5.2. Seguimiento basado en apariencia . . . . . . . . . . . . 584.5.3. Seguimiento de siluetas y contornos . . . . . . . . . . . 60

5. Sensor óptico: modelado y proceso de calibración 615.1. Modelado de la cámara . . . . . . . . . . . . . . . . . . . . . . 61

5.1.1. Modelo pinhole . . . . . . . . . . . . . . . . . . . . . . 615.1.2. Parámetros extrínsecos . . . . . . . . . . . . . . . . . . 625.1.3. Parámetros intrínsecos . . . . . . . . . . . . . . . . . . 65

5.2. Posicionamiento 3D mediante el sistema de visión . . . . . . . 715.3. Proceso de calibración . . . . . . . . . . . . . . . . . . . . . . 73

5.3.1. Base teórica . . . . . . . . . . . . . . . . . . . . . . . . 735.3.2. Proceso de calibración en la práctica . . . . . . . . . . 78

6. Implementación de mecanismos para la extracción de infor-mación visual 916.1. Objeto de referencia tridimensional . . . . . . . . . . . . . . . 92

6.1.1. Representación, localización y seguimiento del objeto dereferencia . . . . . . . . . . . . . . . . . . . . . . . . . 95

6.1.2. Cálculo de los parámetros extrínsecos . . . . . . . . . . 1006.1.3. Proyección tridimensional . . . . . . . . . . . . . . . . 1016.1.4. Comprobación de resultados . . . . . . . . . . . . . . . 1046.1.5. Problemas durante la implementación . . . . . . . . . . 111

6.2. Objeto de referencia plano . . . . . . . . . . . . . . . . . . . . 1136.2.1. Matriz de homografía . . . . . . . . . . . . . . . . . . . 1166.2.2. GoodFeaturesToTrack() y flujo óptico para el seguimien-

to del objeto de referencia . . . . . . . . . . . . . . . . 1286.2.3. SIFT - Scale Invariant Feature Transform . . . . . . . 1456.2.4. SURF - Speeded Up Robust Features . . . . . . . . . . . 147

6.3. Otras alternativas para la realimentación visual . . . . . . . . 150

7. Fusión sensorial 1517.1. Descripción del sensor inercial . . . . . . . . . . . . . . . . . . 1517.2. Funciones de interfaz con la IMU . . . . . . . . . . . . . . . . 153

7.2.1. Datos de orientación . . . . . . . . . . . . . . . . . . . 1537.2.2. “Calibrated Data” . . . . . . . . . . . . . . . . . . . . 155

7.3. Medidas incompletas de la IMU . . . . . . . . . . . . . . . . . 1577.4. Fusión de la información . . . . . . . . . . . . . . . . . . . . . 1607.5. Calibración IMU-Cámara . . . . . . . . . . . . . . . . . . . . . 1617.6. Otras alternativas de realimentación sensorial . . . . . . . . . 168

Page 12: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

ÍNDICE GENERAL ix

8. Hardware y modelado del helicóptero Quadrotor 1718.1. Descripción del modelo del quadrotor . . . . . . . . . . . . . . 171

8.1.1. Descripción del modelo del UAV . . . . . . . . . . . . . 1718.1.2. Planteamiento del modelo del sistema . . . . . . . . . . 172

8.2. Esquema general de control . . . . . . . . . . . . . . . . . . . 1808.3. Descripción del equipo . . . . . . . . . . . . . . . . . . . . . . 181

9. Trabajos futuros y conclusión 1849.1. Ampliaciones y otras alternativas para el control . . . . . . . . 184

9.1.1. Open Tracking Library . . . . . . . . . . . . . . . . . . 1849.1.2. Lenguaje de comunicación de UAVs . . . . . . . . . . . 1859.1.3. Ampliaciones con la librería OpenCV . . . . . . . . . . 1879.1.4. Obtención de un controlador robusto mediante algorit-

mos genéticos . . . . . . . . . . . . . . . . . . . . . . . 1889.1.5. Aplicación de técnicas de inteligencia artificial para el

control . . . . . . . . . . . . . . . . . . . . . . . . . . . 1899.2. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

A. Código desarrollado 194

B. OpenCV 196B.1. Características de la versión 2.0 . . . . . . . . . . . . . . . . . 196B.2. Configuración de OpenCV . . . . . . . . . . . . . . . . . . . . 196

B.2.1. Configuración en Ubuntu 9.10 . . . . . . . . . . . . . . 196B.2.2. Configuración para Dev C++ en entornos Windows . . 202

B.3. Características de la versión 2.1 . . . . . . . . . . . . . . . . . 209

C. Interfaz de programación de la cámara 210

D. Diagrama temporal de Gantt. 214

E. Diagrama de clases de la aplicación 216

Page 13: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

ÍNDICE GENERAL x

Page 14: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Índice de figuras

1.1. Ejemplo de esquema del diagrama de bloques para la estimacióny control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2. Sistema de sujeción del UAV para experimentos. . . . . . . . . 4

2.1. Ejemplo de rotor de una sola aspa. . . . . . . . . . . . . . . . 122.2. Ejemplo de configuración de 2 aspas por rotor. . . . . . . . . . 122.3. Detalle de las antenas receptoras del GPS del prototipo de la

Universidad de Standford “Hummingbird”. . . . . . . . . . . . 142.4. Helicóptero del proyecto AVATAR, de la Universidad de Sout-

hern California. . . . . . . . . . . . . . . . . . . . . . . . . . . 142.5. Experimentos de vuelo en formación en el proyecto BEAR:

BErkeley Aerobot Research. . . . . . . . . . . . . . . . . . . . 152.6. Helicóptero de la Universidad Carnegie Mellon. . . . . . . . . 172.7. Brazo robótico del transbordador espacial. . . . . . . . . . . . 182.8. Titular de la revista Spectrum: “Lecciones del vertido del Golfo

para la Robótica”. . . . . . . . . . . . . . . . . . . . . . . . . . 192.9. Izquierda: Misiones espaciales no tripuladas. Derecha: Detalle

de UAV para aplicaciones militares. . . . . . . . . . . . . . . . 20

3.1. Ejemplo de cámara en mano. . . . . . . . . . . . . . . . . . . 223.2. Ejemplo de cámara fija (izquierda) embebida en parte inferior

del sistema de la derecha. . . . . . . . . . . . . . . . . . . . . 233.3. Eye-in-hand / Eye-to-hand cooperation. . . . . . . . . . . . . . 233.4. Sistema de cámaras estéreo. . . . . . . . . . . . . . . . . . . . 243.5. Control visual mirar y mover dinámico. . . . . . . . . . . . . . 263.6. Control visual directo. . . . . . . . . . . . . . . . . . . . . . . 273.7. Control visual basado en posición. . . . . . . . . . . . . . . . . 283.8. Control visual basado en imagen. . . . . . . . . . . . . . . . . 293.9. Control visual 2½D . . . . . . . . . . . . . . . . . . . . . . . . 303.10. Control visual basado en movimiento. . . . . . . . . . . . . . . 323.11. Clasificación de los sistemas de control visual respecto al mo-

delo visuo-motor. . . . . . . . . . . . . . . . . . . . . . . . . . 35

xi

Page 15: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

ÍNDICE DE FIGURAS xii

3.12. Ejemplo de detección de líneas en entornos urbanos. . . . . . . 373.13. Ejemplo de detección de líneas en una carretera. . . . . . . . . 37

4.1. Objeto de referencia utilizado en el presente proyecto. . . . . . 404.2. Representación del objeto por puntos. . . . . . . . . . . . . . . 424.3. Representación del objeto usando formas geométricas básicas. 434.4. Representación del objeto usando contornos y siluetas. . . . . 434.5. Representación del objeto como modelo articulado. . . . . . . 444.6. Representación del esqueleto de un objeto. . . . . . . . . . . . 444.7. Puntos de interés usando Harris. . . . . . . . . . . . . . . . . . 494.8. Puntos de interés usando KLT. . . . . . . . . . . . . . . . . . 504.9. Puntos de interés usando SIFT. . . . . . . . . . . . . . . . . . 514.10. Kernel Tracking. . . . . . . . . . . . . . . . . . . . . . . . . . 544.11. Evolución de contornos. . . . . . . . . . . . . . . . . . . . . . 544.12. Conjunto total de asociaciones de un punto. . . . . . . . . . . 554.13. Correspondencias correctas para un conjunto de puntos. . . . . 554.14. 1: Velocidad máxima. 2: Cambios pequeños en la velocidad. 3:

Restricciones comunes. 4: Geometría del objeto. . . . . . . . . 564.15. Seguimiento de características usando el algoritmo KLT tracker. 59

5.1. Modelo pinhole de la cámara. . . . . . . . . . . . . . . . . . . 625.2. Relación geómetrica-espacial entre el sistema de coordenadas

de la cámara y el sistema de coordenadas del objeto. . . . . . . 635.3. Representación de los parámetros intrínsecos de la cámara. . . 675.4. Ejemplo del efecto de la distorsión radial. . . . . . . . . . . . . 685.5. Representación vectorial ante un valor positivo de k1. . . . . . 695.6. Representación vectorial ante un valor positivode p1. . . . . . 695.7. Representación vectorial para un valor positivo de p2. . . . . . 705.8. Distorsión tangencial. El plano de la imagen no es del todo

paralelo al de la lente. . . . . . . . . . . . . . . . . . . . . . . 705.9. Sistemas de coordenadas involucrados y nomenclatura. . . . . 715.10. Objetos de calibración planar y cúbico. . . . . . . . . . . . . . 735.11. Detalle de una de las capturas del objeto para la calibración. . 745.12. Detalle de corners en el objeto de calibración. . . . . . . . . . 795.13. Imágenes del tablero de ajedrez vistas desde varios puntos dis-

tintos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795.14. Reconstrucción 3D teórica. . . . . . . . . . . . . . . . . . . . . 805.15. Reconstrucción 3D real. . . . . . . . . . . . . . . . . . . . . . 815.16. Cámara y plantilla de calibración con los correspondientes sis-

temas de coordenadas. . . . . . . . . . . . . . . . . . . . . . . 825.17. Localización automática de los puntos y origen del sistema de

referencia del objeto. . . . . . . . . . . . . . . . . . . . . . . . 84

Page 16: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

ÍNDICE DE FIGURAS xiii

5.18. Situación de los puntos antes de realizar la corrección manual. 855.19. Situación de los puntos después de realizar la corrección manual. 855.20. Reproyección del conjunto de puntos sobre los puntos reales de

la imagen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.21. Detalle de la diferencia entre punto de la imagen real (rojo) y

punto reproyectado (azul). . . . . . . . . . . . . . . . . . . . . 875.22. Reproyección media del error. . . . . . . . . . . . . . . . . . . 875.23. Representación 3D de los parámetros extrínsecos (1). . . . . . 885.24. Representación 3D de los parámetros extrínsecos (2). . . . . . 88

6.1. Ejemplo de realidad aumentada. . . . . . . . . . . . . . . . . . 936.2. Herramienta de precisión necesaria para determinar la geome-

tría del objeto de interés. . . . . . . . . . . . . . . . . . . . . . 946.3. Ejemplo de localización de corners por intersección de rectas. . 956.4. Precisión en la localización de los corners, basado en el gradien-

te del punto en la imagen. . . . . . . . . . . . . . . . . . . . . 986.5. Representación de los ejes del sistema de coordenadas del objeto. 996.6. Reconstrucción 3D del objeto de interés. . . . . . . . . . . . . 1036.7. Plantilla para experimentos en el laboratorio. . . . . . . . . . 1046.9. Alineación de la cámara con la plantilla de referencia. . . . . . 1056.8. Detalle de las marcas de medición en la plantilla. . . . . . . . 1056.10. Situación inicial tablero (Izq). Situación final (Dcha). . . . . . 1066.11. Centro real estimado del sistema de coordenadas de la cámara. 1076.12. Situación inicial tablero (Izq). Situación final(Dcha).Se aprecia

desplazamiento en horizontal. . . . . . . . . . . . . . . . . . . 1086.13. Posición inicial (Izq) y posición final (Dcha). . . . . . . . . . . 1096.14. Marcas en la plantilla para medir la rotación. . . . . . . . . . 1106.15. Experimentos para comprobar la rotación del tablero. . . . . . 1106.16. Representación del objeto mediante formas geométricas básicas

para el cálculo de la homografía. . . . . . . . . . . . . . . . . . 1146.17. Frame actual y deseado del sistema. . . . . . . . . . . . . . . . 1166.18. Representación gráfica de la primera restricción. . . . . . . . . 1206.19. Representación gráfica de la segunda restricción. . . . . . . . . 1216.20. Selección manual del objeto. . . . . . . . . . . . . . . . . . . . 1326.21. Obtención de la máscara de selección del objeto. . . . . . . . . 1326.22. Detalle de la distorsión de la lente. . . . . . . . . . . . . . . . 1346.23. Restricciones de un punto en Lucas Kanade. . . . . . . . . . . 1356.24. Representación piramidal de una imagen. . . . . . . . . . . . . 1366.25. Búsqueda piramidal con flujo óptico. . . . . . . . . . . . . . . 1386.26. Estimación de los puntos usando la función cvCalcOpticalFlowPyrLK().1396.27. Error en la estimación de los puntos del objeto. . . . . . . . . 139

Page 17: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

ÍNDICE DE FIGURAS xiv

6.28. Ejemplo de la técnica template matching. Se desplaza la plan-tilla de referencia hasta que el emparejamiento sea óptimo. . . 141

6.29. Reconstrucción parcial usando la matriz de homografía. . . . . 1426.30. Píxeles con los que se realiza la comparación del valor de D

para encontrar máximos locales en SIFT. . . . . . . . . . . . . 1456.31. Histogramas de orientación SIFT para el cálculo del descriptor.

En la imagen se muestra un ejemplo de tamaño 2x2 histogramas(derecha) obtenidos a partir de una ventana de 8x8 (izquierda),el extractor utiliza una ventana de 16x16, obteniendo 4x4 his-togramas de descriptores. . . . . . . . . . . . . . . . . . . . . . 146

6.32. De izquierda a derecha: Las derivadas parciales de segundo or-den de la Gaussiana en la dirección de ~y, en la dirección de~xy y las aproximaciones realizadas usando filtros de caja (boxfilters). Las regiones grises son igual a 0. . . . . . . . . . . . . 148

7.1. Detalle externo del sensor inercial. . . . . . . . . . . . . . . . . 1527.2. Detalle interno del sensor inercial. . . . . . . . . . . . . . . . . 1527.3. Diseño del acoplamiento entre la imu y la cámara. . . . . . . . 1617.4. Acoplamiento real entre la cámara y el sensor inercial. . . . . . 1627.5. Montaje para el proceso de calibración. . . . . . . . . . . . . . 1647.6. Detalle del puntero láser sobre el centro de referencia. . . . . . 1657.7. Detalle de la primera estimación para el centro de referencia

del sistema de la cámara. . . . . . . . . . . . . . . . . . . . . . 1667.8. Detalle de la segunda estimación (definitivo) para el centro de

referencia del sistema de la cámara. . . . . . . . . . . . . . . . 1677.9. Control de UAV mediante cámaras infrarojas. . . . . . . . . . 1687.10. Vehículo aéreo de ala fija. . . . . . . . . . . . . . . . . . . . . 169

8.1. Esquema básico de funcionamiento del quadrotor. . . . . . . . 1728.2. Conjunto de fuerzas sobre el modelo ideal del quadrotor. . . . 1738.3. Detalle del helicóptero en miniatura. . . . . . . . . . . . . . . 1828.4. Detalle de uno de los rotores integrados en el quadrotor, en fase

de pruebas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1828.5. Equipo integrado on-board PC-104. . . . . . . . . . . . . . . . 1838.6. Detalle de integración de los sensores inercial y óptico a bordo

del quadrotor. . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

9.1. Obtención del controlador de vuelo mediante algoritmos gené-ticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

9.2. Ejemplo de robots colaborativos. . . . . . . . . . . . . . . . . 190

B.1. Lista de servidores de versiones . . . . . . . . . . . . . . . . . 197B.2. Creación del nuevo compilador. . . . . . . . . . . . . . . . . . 203

Page 18: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

ÍNDICE DE FIGURAS xv

B.3. Inclusión de rutas en Directories→Binaries. . . . . . . . . . . 204B.4. Inclusión de rutas en Directories→Libraries. . . . . . . . . . . 205B.5. Inclusión de rutas en Directories→C includes. . . . . . . . . . 206B.6. Inclusión de rutas en Directories→C++ includes. . . . . . . . 207B.7. Optimización de código en Dev C++. . . . . . . . . . . . . . . 208

Page 19: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

ÍNDICE DE FIGURAS xvi

Page 20: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Capítulo 1

Introducción

1.1. Introducción

Los vehículos aéreos autónomos, o como se conocen también por sus siglasen inglés, UAV1.1, han sido un área de investigación muy activa durante losúltimos años. Por ejemplo, el uso de UAVs en aplicaciones civiles de patrulla-je, monitoreo o investigación [1] continúa en crecimiento debido en parte a laevolución y reducción en el coste de los sistemas de visión.

La visión para el control de un UAV implica realizar un proceso de in-vestigación en diversos campos relacionados tanto con el área de visión porcomputador, como son la detección y seguimiento de objetos, estimación dela posición, fusión sensorial de GPS1.2 y medidas inerciales, como otras áreas,como son el modelado y control de sistemas multivariables no lineales.

Un helicóptero autónomo posee propiedades que lo convierten en la plata-forma ideal para casi cualquier tarea. Su inherente habilidad de volar a bajavelocidad, estacionariamente, lateralmente e incluso realizar maniobras en es-pacios reducidos [36] lo hacen el vehículo aéreo perfecto para las aplicacionesmencionadas en el párrafo anterior.

Dichas habilidades son particularmente útiles en entornos conocidos y es-tructurados donde las características u objetos a seguir visualmente estándefinidos geométricamente, lo que facilita la estimación y el control basado envisión.

1.1Unmanned Aerial Vehicle, o vehículo aéreo no tripulado.1.2Global Positioning System o sistema de posicionamiento global.

1

Page 21: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

1.1. Introducción 2

La realización de tareas por parte de sistemas automatizados o robotizadosen entornos estructurados con presencia de objetos cuya posición y orientaciónson conocidas, es un problema que se ha tratado con profundidad durante lasúltimas décadas ([15][27][28][103], entre otros). Sin embargo, si se considera eluso futuro de los aviones no tripulados, donde la configuración del contextocambia continuamente, se pone de manifiesto lo vital que es la informaciónsensorial presente en el sistema [5].

La utilización de un sistema de visión en la realización de una tarea porparte de un sistema automatizado, tiene la denominación genérica de Con-trol Visual (Visual Servoing) ([20][23][39][41][51], entre otros). El sistema devisión obtiene información visual de la escena en forma de características deimagen, que son realimentadas al lazo de control del sistema. Un ejemplo esel extraído de [3] y mostrado en la Figura 1.1, en el que la tarea del controlvisual es realizada en un equipo en tierra (en la propuesta presentada en esteproyecto la tarea del control visual se lleva a cabo en el helicóptero).

Figura 1.1: Ejemplo de esquema del diagrama de bloques para la estimacióny control.

Los primeros estudios [70][74][75] aplicados sobre todo a procesos indus-triales ante la presencia de sistemas robotizados, desacoplaban las acciones dela extracción de imágenes y el control del robot, de tal manera que el contro-lador, después de recibir la información visual y determinar la posición a lacual moverse, ordenaba al robot a moverse a dicha posición asumiendo que nose había producido ningún cambio en la escena, esto es, el entorno permaneceestático desde que el comando de movimiento fue ejecutado.

La ventaja de este tipo de control es su simplicidad, siendo ésta una delas razones (entre otras) por la que tan sólo puede ser aplicable a sistemas

Page 22: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

1.1. Introducción 3

en los que la tarea a realizar esté determinada y no varíe (como es el caso deun entorno industrial). En contraposición, el control visual tal y como quedareflejado en la bibliografía ([31], entre otros), permite que el sistema de vi-sión cierre el lazo de control: en cada ciclo la información visual del entorno ode algún objeto de interés situado en la escena es actualizada de tal maneraque el controlador corregiría el movimiento a una nueva posición de destino.Esta tarea se realiza bien de forma indefinida o hasta que el objeto a seguir ha-ya desaparecido de la escena, con lo que se volvería a una posición por defecto.

Muchas publicaciones a lo largo de los últimos años muestran que las téc-nicas de control visual1.3 incrementan la calidad (exactitud, robustez,etc) delsistema [25][29][66]. La calidad del tracking1.4 y del control depende del tipoy número de características de la imagen que se utilizan, donde la redundan-cia juega un papel muy importante [89] siendo esto habitual en las tareas decontrol visual.

Otro aspecto importante es el número de cámaras utilizadas. En funcióndel mismo se utilizan unas técnicas para el control visual [42] u otras [22][93].En el presente proyecto se ha optado por el uso de una única cámara, debidoprincipalmente a que es más fácil implementar técnicas para una configuraciónmonocular que una configuración de varias cámaras.

La propuesta presentada en esta memoria combina principalmente técnicasde visión por computador, con un teórico control a bajo nivel para lograr elcontrol visual de un UAV por medio del seguimiento visual de característicasen la imagen. El sistema de visión actúa pues como un controlador de altonivel enviando consignas de posición al control de vuelo, el cual es responsa-ble de un control robusto y estable. El resultado de esta combinación es laobtención de un algoritmo de seguimiento visual de características extraídasde la imagen que controla los desplazamientos de un UAV, tanto en espaciosinteriores como exteriores1.5.

1.3O por su traducción en inglés: Visual Servoing.1.4Equivale a la calidad del algoritmo de seguimiento.1.5Decir que en principio las pruebas de realizan en interiores, pero que el algoritmo es

para seguimiento de características en general.

Page 23: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

1.2. Problemas en el control visual de vehículos aéreos autónomos 4

1.2. Problemas en el control visual de vehícu-los aéreos autónomos

A pesar de que un UAV posee muchas ventajas para determinadas tareas,tiene la desventaja de ser difícil de controlar. Esto se pone de manifiesto en[32][52][54], entre otros. Los helicópteros son por naturaleza sistemas multi-variable bastante inestables, donde el control de bajo nivel encargado de laestabilidad debe ser capaz de afrontar esta condición. Si por algún motivo unUAV dejara de recibir comandos de control, por pequeño que sea el períodode tiempo de esta particularidad, se volvería rápidamente inestable y se pre-cipitaría hacia el suelo, con la correspondiente pérdida de equipo y dinero.

Esto provoca pues que el investigar con este tipo de plataformas sea unatarea compleja y peligrosa. En numerosos estudios, para la realización de laspruebas pertinentes del controlador, se suelen establecer medidas de seguridadpara evitar el anterior desenlace: sujeción con cables a una grúa o al techo,sensores de infrarrojos para comprobar que la altura actual se mantiene entreunos márgenes de seguridad, etc.

Figura 1.2: Sistema de sujeción del UAV para experimentos.

El problema del control visual sobre robots terrestres es un tema que hasido ampliamente estudiado durante las últimas décadas, y es un campo alcual se han aportado numerosas contribuciones. Sin embargo, para sistemasautomatizados aéreos muchos problemas quedan aún pendientes de resolver.Dichos problemas se acentúan si se tiene en cuenta que los vehículos aéreos

Page 24: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

1.2. Problemas en el control visual de vehículos aéreos autónomos 5

operan en un espacio tridimensional mucho más amplio que los robots terres-tres, añadiendo que las capacidades y carga útil de los vehículos aéreos depequeña a media escala son mucho más limitadas que la de los robots móvilesterrestres.

Si pensamos además en que la capacidad de cómputo del sistema on-boardes directamente proporcional al peso del equipo y del consumo de éste, seplantea la necesidad de estimar las características adecuadas para soportartoda la lógica del controlador y del sistema de cómputo para la resolución dealgoritmos basados en visión.

En este aspecto, los sensores ópticos actuales suelen ser livianos y eficientesen lo que se refiere al consumo de energía. Con el aumento en la miniaturi-zación de los sensores CCD1.6 y CMOS, la visión por computador ofrece supotencial a los MAUV (Micro Air Unmanned Vehicles). Al contrario que lossensores de escaneado o de barrido laterales, como los láseres, las cámarastoman muestras instantáneas del entorno, lo que es óptimo para este tipo deplataformas dinámicas.

Pero no todo son ventajas al usar este tipo de sensores; ante cambios en lascondiciones lumínicas, la calidad de las tomas capturadas disminuye, usual-mente hasta que el sensor se adecua a las mismas. Incluso aunque todas lascondiciones para la captura de imágenes sean las idóneas, existe el problemasubyacente de la interpretación de la escena y de la extracción de la informa-ción relevante de ella.

La visión en humanos es considerada eficiente en su interpretación y unmecanismo casi perfecto; incluso en condiciones extremas, el ser humano escapaz de extraer información de la escena y darle sentido, como por ejemplo,la profundidad o distancia a los objetos. Para un ordenador, éste no es el caso.

Aunque se haya evolucionado mucho en el tema, y la extracción de infor-mación 3D de la escena haya alcanzado niveles de precisión y detalle más queaceptables, siempre se puede dar el caso de que las cámaras generen datosdispersos y propensos al ruido.

1.6Un CCD (siglas en inglés de charge-coupled device: ‘dispositivo de carga acoplada’) esun circuito integrado que contiene un número determinado de condensadores enlazados oacoplados

Page 25: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

1.2. Problemas en el control visual de vehículos aéreos autónomos 6

Así pues, el problema del control visual para un vehículo aéreo autónomopuede ser descrito como:

Desarrollo del sistema de visión : Éste a su vez puede ser subdividido en:

Configuración del hardware apropiado para acometer la tarea delprocesamiento visual a bordo del helicóptero.Desarrollo de la arquitectura de software para comunicar la capade controladores con la de procesamiento visual.

Algoritmos de detección y seguimiento de características :En el presente trabajo se han desarrollado varias propuestas, basadas endiferentes consideraciones del objeto de control.

Fusión sensorial :Cómo integrar la información visual y la de los demás sensores on-board,como pueden sensores inerciales, GPS u otros, y la definición del esquemamás adecuado en el cual las referencias visuales sean integradas en elcontrol de vuelo.

Desarrollo del controlador adecuado :Dadas las ecuaciones que gobiernan la dinámica del helicóptero, se tratade diseñar un controlador robusto usando como realimentación la infor-mación sensorial anterior con los datos de los sensores óptico e inercial,para el seguimiento de una determinada trayectoria u objeto de interés.

Page 26: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

1.3. Objetivos y propuestas 7

1.3. Objetivos y propuestas

En este proyecto se aborda el problema del control visual partiendo de lapremisa de la existencia de un controlador robusto a bajo nivel para el controlde estabilización del quadrotor1.7. A dicho controlador, o a una modificacióndel mismo, se introduce la información visual para controlar la trayectoria delvehículo por medio de la detección y seguimiento de características en el planode la imagen.

Usando técnicas desarrolladas en posteriores capítulos, se espera que elquadrotor sea capaz de realizar desplazamientos 2D/3D basados en visión,siguiendo las características definidas manualmente o seleccionadas de formaautomática, y usando su ubicación en la imagen para controlar las maniobrasdel mismo. Los métodos para la localización y seguimiento del objeto de refe-rencia son vistas en detalle en el capítulo 4.

La propuesta de control visual (que se verán en detalle en el capítulo 3)que se ha seleccionado para ser implementada es la de control visual basado enposición (PBVS Position Based Visual Servoing). Para el esquema de controlvisual basado en imagen (IBVS Image Based Visual Servoing) es necesario uncontrolador distinto al existente del planteado en [52] (el cual es el controla-dor usado para la estabilización del quadrotor), por lo que no se plantea suimplementación en el presente proyecto.

Se aborda el problema gracias a que se desacopla el control a bajo nivel(con lo que permite un desarrollo paralelo al óptico-sensorial) del sistema vi-sual. El control a bajo nivel mantiene el quadrotor estable, mientras que en elcontrolador de alto nivel se considera al vehículo como un punto flotante enel espacio (cuyo origen de coordenadas coincide con el centro geométrico delquadrotor1.8), el cual puede ser controlado mediante referencias de velocidad,posición y cambios de orientación.

Prácticamente la mayor parte del código desarrollado ha sido implementa-do en el lenguaje de programación C++, usando la librería de procesamientode imágenes OpenCV, en su versión 2.0. La plataforma de desarrollo ha sidoUbuntu 9.10, sistema basado en UNIX. Más información de todo lo referenteal desarrollo es dada en el Apéndice B.

1.7Es necesario aún realizar experimentos con el controlador propuesto en la actualidad.1.8Más concretamente el origen del sistema de coordenadas del quadrotor será un punto

intermedio entre el origen de coordenadas del sensor óptico y del sensor inercial.

Page 27: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

1.4. Estructura del proyecto 8

1.4. Estructura del proyecto

Dado que en el presente proyecto se han mezclado temáticas de muy diver-sa índole, es necesario exponer de forma detallada algunas de ellas para podergenerar una memoria autocontenida y completa.

En una sola frase, se han mezclado conceptos de procesamiento digital deimágenes (algoritmos de localización y seguimiento), con conceptos de controlde vehículos aéreos autónomos (basados o no en control visual) incluyendoademás el modelo del controlador usado para garantizar la estabilidad delquadrotor; sin olvidar la formulación del modelo de la cámara, algoritmos pa-ra la calibración de la misma; fusión sensorial entre los datos de la cámara conlos del sensor inercial (IMU), cuestiones relacionadas con geometría proyectivaincluyendo además la descomposición de la matriz de homografía, y, además,la realización de experimentos en el laboratorio. Es por esto necesario un de-talle en profundidad de algunas de las temáticas expuestas anteriormente.

La presente memoria queda estructurada como sigue:

En el capítulo 2 se describe brevemente el estado del arte del control devehículos aéreos autónomos (sin usar información visual), y una brevereseña histórica del control visual (en el que se hace uso de informaciónvisual) aplicado a vehículos aéreos autónomos. Además se presentan apli-caciones reales en las que la plataforma principal es un UAV con partede control visual.

En el capítulo 3 se describe el estado del arte del control visual paraUAV y las distintas alternativas presentes en la literatura.

En el capítulo 4 se desarrollan de forma teórica los métodos presentes enla literatura para la localización y el seguimiento del objeto de referencia.

En el capítulo 5 se desarrolla todo el contenido relacionado con el procesode calibración de la cámara, necesario para los experimentos llevados acabo en el presente trabajo. Se exponen de forma teórica los conceptosclave y se presentan los resultados obtenidos de dicho proceso.

En el capítulo 6 se presentan todas las propuestas para la extracciónde la información visual necesaria para cerrar el lazo del control que sehan implementado y de las cuales se han realizado experimentos en ellaboratorio. Principalmente se clasifican en dos grupos: modelando elobjeto como un objeto tridimensional y modelándolo como un objeto

Page 28: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

1.4. Estructura del proyecto 9

plano. Se exponen también otras técnicas desarrolladas en fases inicialespero que finalmente fueron descartadas por diversos motivos.

Cómo fusionar información del sensor inercial con la información visualse expone en el capítulo 7.

En el capítulo 8 se presenta el sistema de control realimentado parael quadrotor. También se incluye una descripción de la dinámica delsistema.

En el capítulo 9 se exponen posibles ampliaciones relacionadas tanto conel desarrollo de nuevas metas para el controlador de vuelo de los UAVscomo del desarrollo de nuevos métodos para el control visual, incluyendoademás una sección dedicada a las conclusiones tras la realización delpresente proyecto.

En los Apéndices se presenta el código desarrollado a lo largo de larealización del proyecto, incluyendo además algunas nociones para laconfiguración de la librería para el procesamiento de imágenes OpenCV.Se muestran también el conjunto de funciones de la librería de la cámarautilizadas, incluyendo además un diagrama de clases de la aplicación yun diagrama temporal de Gantt que recoge toda la planificación tempo-ral del presente proyecto.

Page 29: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

1.4. Estructura del proyecto 10

Page 30: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Capítulo 2

Estado del arte del control deplataformas UAV

2.1. Introducción

Como se ha comentado con anterioridad y puede observarse también en elcapítulo dedicado a aplicaciones, los vehículos aéreos autónomos han sido unárea de investigación que durante los últimos años ha experimentado un granavance, por múltiples motivos. Las más prestigiosas universidades están ac-tualmente investigando y desarrollando plataformas experimentales de vuelono tripuladas y autónomas. Este tipo de plataformas, como se puede ver en[32][52][54] suelen ser utilizadas para el estudio de controladores no lineales,control multivariable, navegación, detección y seguimiento visual de objetos eincluso planificación de trayectorias.

Dentro de la amplia variedad de vehículos aéreos autónomos, cabe destacarla maniobrabilidad de los helicópteros, y dentro de esta familia, aquellos queposeen cuatro rotores en el mismo plano (quadrotores coplanares2.1 ). A suvez, dentro de esta familia existen dos variantes: aquellos en cuyo rotor existetan solo un aspa girando en una única dirección, y aquellos equipos cuyosrotores están equipados con dos aspas girando cada una en sentido contrario.En el presente proyecto se trabaja bajo la suposición de la existencia de uncontrolador para un helicóptero quadrotor coplanario con una única aspa porrotor. Véanse en las Figuras 2.1 y 2.2 ejemplos de este tipo de configuraciones.

2.1Este es el tipo de plataforma con la cual se ha experimentado en el presente proyecto.

11

Page 31: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

2.1. Introducción 12

Figura 2.1: Ejemplo de rotor de una sola aspa.

Así pues, su inherente capacidad de volar a bajas alturas y velocidades,desplazarse lateralmente y longitudinalmente, realizar vuelos estacionarios2.2

y maniobrar en espacios reducidos los hacen los vehículos ideales para talestareas. Tareas comunes suelen ser las que requieran que el vehículo vuele abaja altura o se mantenga en vuelo estacionario próximo a un determinadopunto u objeto de interés.

Figura 2.2: Ejemplo de configuración de 2 aspas por rotor.

Esta proximidad en el vuelo, si no consideramos la realimentación visual, serealiza usando medidas del sensor inercial y/o medidas de GPS, lo que limitay bastante el vuelo a un conocimiento previo de la posición global del aparatoy de la existencia de un ruta preprogramada de coordenadas. Si se añade alcontrol realimentación visual, en tiempo real que pueda controlar el helicópte-ro en una trayectoria arbitraria no sujeta a restricciones, y fusionándola con elresto de medidas, podemos aumentar la precisión en vuelos cercanos a objetos,

2.2En lengua inglesa se refiere a este término como hoovering.

Page 32: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

2.2. Control no basado en visión de vehículos aéreos autónomos 13

permitiendo conocer la posición relativa del vehículo respecto del objeto deinterés.

El desarrollo de un vehículo aéreo autónomo guiado por visión requierede diversas disciplinas de la Ingeniería; desde investigar en áreas como Teoríadel Control hasta la detección y seguimiento de objetos mediante visión porcomputador.

Se presenta pues a continuación un amplio repaso del estado del arte delcontrol (sin realimentación visual) en UAV para posteriormente exponer elestado del arte actual del control visual para vehículos aéreos no tripulados.Todo lo relativo a la localización y seguimiento de objetos se presenta en pro-fundidad en el capítulo 4.

2.2. Control no basado en visión de vehículosaéreos autónomos

El origen del estudio del control en el campo de los helicópteros autónomostiene su origen varias décadas atrás. El modelo del sistema dinámico que lorepresenta ha sido ampliamente documentado ([2][3][20][31][52], entre otros),donde se presenta en detalle un estudio sobre el modelo aerodinámico y deanálisis de estabilidad. Dada la inestabilidad propia de este tipo de vehículos,los primeros estudios se centraban en obtener un controlador para hacer esta-ble al sistema.

En [52], por ejemplo, se documenta el diseño de un control realimentadorobusto basado en H∞ , al igual que en [1] se presenta un controlador basadoen lógica difusa para la estabilización de un SUAV (Small UAV). Otras alter-nativas para el control pueden consultarse en [2][6][9] ó [32], entre otros.

De entre los primeros estudios, como el presentado en [37], se muestra laparticularidad de solo usar el GPS como sensor principal para la navegaciónsustituyendo a la unidad de medida inercial (IMU), la cual, y por historia, esel sensor que se había usado como principal. Este sistema estaba dotado de unGPS con 4 receptores y 4 antenas colocadas en puntos estratégicos del apa-rato, con lo que se conseguía su posición, velocidad, actitud2.3 e informaciónangular. Probablemente tuvieran algunos problemas por mantener las antenas

2.3Se denomina actitud al ángulo de vuelo que lleva el avión con respecto al horizonte.

Page 33: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

2.2. Control no basado en visión de vehículos aéreos autónomos 14

separadas una distancia relativamente tan pequeña (del orden de cm). En laimagen de la Figura 2.3 se pueden observar en detalle las antenas receptorasde la unidad de GPS.

Figura 2.3: Detalle de las antenas receptoras del GPS del prototipo de laUniversidad de Standford “Hummingbird”.

Otra configuración, la denominada proyecto AVATAR y presentada en [38],posee una arquitectura jerárquica de módulos de control, también presentadaen [2][31][47][54] (entre otros). Los módulos de bajo nivel se encargan de tareasde rápida respuesta como el control de los rotores o movimiento del grupo alar,mientras que los módulos de alto nivel se encargan de tareas de planificacióny navegación. El control propuesto se ha diseñado con leyes de control linealusando controladores de tipo PID. Los sensores presentes en esta plataformason el GPS, IMU, brújula y sónar, entre otros.

Figura 2.4: Helicóptero del proyecto AVATAR, de la Universidad de SouthernCalifornia.

Page 34: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

2.2. Control no basado en visión de vehículos aéreos autónomos 15

Otra propuesta es la presentada en [40], la cual presenta un control basadoen H∞, que usa un modelo lineal de alto orden sobre una plataforma comercial(equipo Yamaha). El controlador consiste en un lazo interno multivariable parala estabilización de la actitud y 4 lazos de control separados para posición yvelocidad. En [46] se presenta un sistema de control jerárquico usado en elhelicóptero BErkeley AeRobot Project (BEAR) [44] (Figura 2.5).

Figura 2.5: Experimentos de vuelo en formación en el proyecto BEAR: BEr-keley Aerobot Research.

En primer lugar, se identifica la dinámica del sistema y posteriormente sediseñan las leyes de estabilización. El controlador consta de tres lazos: el pri-mero para el control de la actitud, el segundo para el control de la velocidad,y el tercero para el control de la posición. Para mejorar la fase de navegacióny seguimiento de trayectorias se usa un control NMPTC 2.4.

Recientes avances en el control y modelado han permitido extender las ca-pacidades de vuelo, realizando incluso vuelos acrobáticos. Un ejemplo de estetipo de sistema es el presentado en [36]. En este sistema, según se describe, dostipos de controladores son usados, dependiendo de la fase de vuelo o envolven-te de vuelo2.5. Un control velocidad/orientación rate/altitud se usa al inicioy al final de la envolvente de vuelo, mientras que un control de aceleraciónangular se usa para las maniobras acrobáticas.

2.4Siglas inglesas para Nonlinear Model Predictive Trajectory Controller.2.5Todos los aviones tienen limitaciones físicas: no pueden volar demasiado despacio, o

entrarían en pérdida; ni demasiado rápido, ya que, o maniobran dentro de sus parámetrosespecíficos o se volverían inestables e imposible de maniobrar.

Page 35: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

2.3. Control con información visual de vehículos aéreos autónomos 16

2.3. Control con información visual de vehícu-los aéreos autónomos

Se puede decir que la visión por computador es una de las áreas más im-portantes en el mundo actual de la robótica. Hace relativamente pocos años,las capacidades hardware de los equipos empotrados no permitían la puestaen marcha de aplicaciones visuales sofisticadas. Éste era el principal obstáculoque evitaba que el control visual tuviera el desarrollo que ha tenido estos añosatrás. Pero tras la introducción de nuevas arquitecturas hardware y de proce-sadores más rápidos y con soporte para programación paralela, y de cámarascuyas características crecen exponencialmente con coste lineal, la potencialubicuidad del control visual se ha hecho una realidad.

Cuando se presentan términos como control visual aplicados a vehículosaéreos autónomos, se hace referencia al uso de la información visual del proce-samiento de imágenes para el control de velocidad, posición absoluta o relativa,o para el control de la orientación. Al igual que la literatura sobre el controlvisual contempla el término cámara-en-mano (eye-in-hand) para ciertas confi-guraciones en robots articulados, para el caso de vehículos aéreos robotizadosel término adecuado sería el de cámara a bordo (on-board camera) [20][63].

Uno de los primeros experimentos (Figura 2.6) en los que se describe unhelicóptero guiado por visión se describe en [47]. Este vehículo autónomo fu-siona las lecturas GPS con un sistema de visión, con la finalidad de aumentarla precisión de la estimación del estado para la navegación.

El sistema de visión consiste en un procesador DSP2.6 que proporciona me-didas de posición, velocidad y actitud a frecuencias de 10ms, lo que combinán-dolo con las lecturas del GPS y la IMU aumenta la precisión en la estimaciónde la actitud y de la posición del helicóptero.

2.6O por sus siglas en español Procesador Digital de Señales.

Page 36: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

2.3. Control con información visual de vehículos aéreos autónomos 17

Figura 2.6: Helicóptero de la Universidad Carnegie Mellon.

En [59] se enfoca el uso de una cámara como sensor adicional para la nave-gación del helicóptero autónomo para el caso particular del aterrizaje. Dadauna secuencia de imágenes tomadas por la cámara se consigue una estimacióndel movimiento tridimensional de la misma, la cual se fusiona con la informa-ción inercial.

El control visual también se ha aplicado a vehículos en miniatura, en elcaso del helicóptero HMX-4 o Draganflyer de cuatro rotores coplanarios [31],donde la visión se usa para determinar la disposición del helicóptero y para ladetección de objetos en tierra. Existen muchas propuestas presentadas en laliteratura sobre el control basado en visión.

La más interesante, desde el punto de vista del redactor del presente docu-mento, es el caso de navegación tridimensional presentado en [48], en la cualse propone una técnica que combina flujo óptico con visión estereoscópica. Sise combina esta técnica con mapas probabilísticos y un planificador de trayec-torias, y según demuestran en varios experimentos, es posible la navegaciónde un UAV en entornos urbanos de forma completamente autónoma.

Page 37: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

2.4. Aplicaciones del control visual en plataformas autónomas 18

2.4. Aplicaciones del control visual en plata-formas autónomas

En este proyecto tan solo se han considerado alternativas que vuelan, oal menos, lo intentan. Todas las técnicas relativas al control visual puedenaplicarse a otro tipo de plataformas, como por ejemplo, los brazos robóticosque operan en el transbordador espacial (Figura 2.7), robots móviles, o inclusoa robots sumergibles que se encarguen de tareas de rescate o reparaciones agrandes profundidades.

Figura 2.7: Brazo robótico del transbordador espacial.

En el número de Septiembre de 2010 de la revista Spectrum (Figura 2.8),publicada por el IEEE (Institute of Electrical and Electronic Engineers), antela reciente tragedia medioambiental del Golfo de México, en el que una es-tación de extracción de crudo en alta mar explosionó, provocando la mayorcatástrofe medioambiental de la historia de los EEUU, se ha puesto de mani-fiesto la necesidad de técnicas más avanzadas de robótica autónoma.

Esto es debido a que la profundidad a la que se encontraba una tuberíaque continuamente expulsaba crudo era imposible de sellar in situ por ningúnsumergible tripulado. Si se hubieran dado las circunstancias en las que, unposible conjunto de vehículos sumergibles autónomos se hubieran coordinadopara poder sellar la fuga, probablemente no se hubieran puesto en peligro ni

Page 38: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

2.4. Aplicaciones del control visual en plataformas autónomas 19

Figura 2.8: Titular de la revista Spectrum: “Lecciones del vertido del Golfopara la Robótica”.

vidas humanas ni tantos kilómetros de litoral norteamericano.

La lista de aplicaciones es bastante larga, pero en esta sección se van a daralgunos ejemplos de desarrollos ya construidos y en funcionamiento.

Vehículo Áereo Áutónomo para investigación polar :Presentado en [1], en este artículo se presenta una aplicación no menoscuriosa en la que un UAV puede ser muy útil. Debido a que la clima-tología en los polos de la Tierra impide, la mayor parte del año, queequipos de investigación sobre el terreno puedan recoger muestras, sepropone un vehículo autónomo para la investigación polar. Para obte-ner precisión de altitud, fusionan información sensorial del GPS con lade un algoritmo de filtro adaptativo de Kalman. Implementan un tipode controlador que permite que la aeronave pueda sobrevolar cualquierzona incluso en situaciones en las que el viento sea un grave problema.

Inspección de líneas e instalaciones eléctricas :Normalmente, para este tipo de tareas, se suele utilizar un helicópterocon personal humano a bordo, para documentar in situ el estado de laslíneas eléctricas. Pero debido a que las propias líneas eléctricas son unpeligro para el vuelo de estas aeronaves, en los últimos años las compa-ñías eléctricas están aunando esfuerzos con el mundo universitario parainvestigar y desarrollar plataformas aéreas no tripuladas para este tipode funciones. El seguimiento visual sería relativamente sencillo, aplican-do por ejemplo como detector de segmentos o líneas rectas, tambiénaplicado en [112], para el seguimiento de una carretera por parte de unUAV.

Page 39: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

2.4. Aplicaciones del control visual en plataformas autónomas 20

Misiones espaciales no tripuladas :Este pudiera ser el ejemplo más llamativo de todos (Figura 2.9 izquier-da). De sobra es conocido las misiones de la NASA2.7 hacia el planetaMarte, en la que actualmente disponen de dos vehículos terrestres de in-vestigación. Dichos vehículos son completamente autónomos, en el sen-tido de que no son operados desde Tierra, debido principalmente a losproblemas de las comunicaciones. Por ello, es de suponer que disponende técnicas de control visual relativamente complejas para la localizaciónde obstáculos.

Misiones militares :Otra de las aplicaciones de vehículos aéreos no tripulados tienen carác-ter militar. Situaciones en las que se desea simplemente determinar elestado del terreno; aquéllas en las que no se desean pérdidas de vidas hu-manas, etc. Últimamente los ejércitos de los países más avanzados estánequipando a sus plataformas UAV con misiles de corto y largo alcance,para misiones tácticas o de destrucción de infraestructuras estratégicas.Simplemente al iniciar el explorador web, e introducir en cualquier bus-cador la palabra UAV y buscar por imágenes, las primeras obtenidas dela búsqueda son como la mostrada en la Figura 2.9 derecha.

Figura 2.9: Izquierda: Misiones espaciales no tripuladas. Derecha: Detalle deUAV para aplicaciones militares.

Aplicaciones desde el campo de la medicina y técnicas quirúrgicas, hastael campo de la tele-asistencia, pasando por control del tráfico rodado,... Loscampos de aplicación de técnicas de control visual son amplios y muy variados.

2.7National Aeronautics and Space Administration.

Page 40: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Capítulo 3

Técnicas de control conrealimentación visual

3.1. Introducción

El término control visual se introdujo en el artículo [75] en 1979 para re-emplazar al término de “Realimentación Visual” que era más específico y deuso muy generalizado. A partir de 1980 se introducen las primeras descripcio-nes del control visual, y en publicaciones de años posteriores, se consolida ladiferencia entre los dos principales y grandes esquemas de control visual comoson el control visual basado en posición (PVBS) y el control visual basado enimagen (IBVS).

Desde principios de los años 90 hasta la presente década los avances en elcontrol visual se han incrementado enormemente cumpliendo con los requisitosde tiempo real que exigen las aplicaciones, superando los problemas de retardoy la comunicación entre procesos. Las principales razones de este adelanto hansido entre otras las siguientes:

La potencia y bajo coste de las unidades de cálculo.

La disponibilidad de sensores ópticos de elevadas prestaciones.

El desarrollo de las librerías de procesamiento de imágenes digitales.

A continuación se detalla el estado del arte del control visual en general, co-menzando por las diversas configuraciones entre la cámara y el robot y luegopor los esquemas de control propuestos.

21

Page 41: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.2. Configuraciones cámara-robot 22

3.2. Configuraciones cámara-robot

Esta configuración está dividida según dos criterios: la posición de la cá-mara con respecto al robot y el número de cámaras.

3.2.1. Según la disposición de la cámara respecto delrobot

Cámara en mano :En este caso la cámara está montada en el brazo del robot (Figura 3.1) yse mueve a la par del movimiento del mismo. En esta configuración existeuna relación constante entre el sistema de coordenadas de la cámara y elsistema del efector final del robot. Algunas aplicaciones requieren másde una cámara como en [78]. Una característica de esta configuración esque se pueden obtener imágenes de regiones particulares de la escena, esdecir imágenes de carácter parcial [71] donde la resolución efectiva de laescena puede ser incrementada, siempre que sea necesario.

Figura 3.1: Ejemplo de cámara en mano.

Cámara fija :En esta segunda disposición (Figura 3.2) se tiene una o varias cámarasfijas en algún punto del espacio de trabajo de tal manera que la escenaes observada desde el sistema de la cámara. La relación entre el sistemade coordenadas de la cámara y de la base del robot es constante, de talmanera que la posición de la cámara es independiente del movimientoque el brazo del robot pueda efectuar.

Page 42: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.2. Configuraciones cámara-robot 23

Figura 3.2: Ejemplo de cámara fija (izquierda) embebida en parte inferior delsistema de la derecha.

Al contrario que la configuración anterior, de cámara en mano, en estaconfiguración se obtienen imágenes de casi toda la escena, aunque conmenor precisión. En esta opción se pueden realizar operaciones propiasde una cámara fija motorizada tales como son el pan3.1, tilt3.2 o el zoom,conocidas también como función PTZ3.3.

Modelo Híbrido :Es una combinación de las anteriores configuraciones donde se aprovechala información de la imagen local que da la configuración cámara enmano y la información de la imagen global de la cámara en configuracióncámara fija. En algunos ejemplos, como en [70][71] se realizan dos tareas:una de posicionamiento y otra de seguimiento y en [73] se implementaun sistema donde la cámara fija es sostenida por otro robot.

Figura 3.3: Eye-in-hand / Eye-to-hand cooperation.

3.1Hacer girar la cámara en todo el plano panorámico.3.2Inclinación de la cámara.3.3Por sus siglas en inglés, Pan Tilt Zoom.

Page 43: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.2. Configuraciones cámara-robot 24

3.2.2. Según el número de cámaras

Sistema de cámara única :Se utiliza una sola cámara en el sistema, de esta manera se minimiza latarea del procesamiento visual requerida, pero la pérdida de informaciónpara la profundidad complica el diseño del control. Dicho parámetro deprofundidad puede ser estimado con anterioridad [70], adaptativamente[74], o a través de alguna información métrica del objeto a controlar. Laconfiguración cámara en mano es la más utilizada, debido principalmentea la sencillez en su implementación y su bajo costo.

Sistema de dos cámaras :Conocido también como sistema estéreo, se tienen dos vistas simultáneasde la escena [79] (Figura 3.4). Esta técnica tiene la principal ventaja deque se puede obtener cierta percepción tridimensional, además de poderutilizarse las propiedades de la geometría epipolar [78].

Figura 3.4: Sistema de cámaras estéreo.

Sistema de cámaras redundantes :Para esta configuración se tienen más de dos cámaras. Se aprovecha puesla ventaja de tener redundancia de características visuales que añaderobustez al sistema, aunque se incrementa el tiempo de procesamiento.Una aplicación con tres cámaras se presenta en [84] donde se demuestrasu eficacia ante oclusiones parciales en una tarea de seguimiento3.4 delobjeto de referencia.

3.4También denominado “tracking” de un objeto. Se profundiza en el presente capítulo.

Page 44: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.3. Esquemas de control visual 25

3.3. Esquemas de control visual

En función del enfoque desde el cual se mire, se tienen distintas clasifica-ciones :

La estructura de control del sistema electromecánico.

La información visual.

La observación de las características en la cámara.

Modelo 3D del objeto.

3.3.1. En función de la estructura de control

“Mirar y mover” estático :En este esquema de control la extracción de información visual y el con-trol del robot son dos tareas desacopladas, donde en primer lugar seextraen y procesan las características de la imagen, perteneciendo estatarea a un bucle externo más lento, y después se ejecuta la tarea decontrol del robot, estando esta tarea integrada en un bucle interno decontrol más rápido. El robot posteriormente ejecuta el movimiento, asu-miendo que el entorno permanece estático.

Al no existir realimentación visual dinámica, este esquema de controlse dice que no pertenece al control visual. También suele denominarsecontrol visual indirecto estático siempre y cuando los bucles de controly extracción de información operen de forma secuencial.

“Mirar y mover” dinámico :En este esquema de control el resultado de la realimentación visual ali-menta al controlador interno que se encarga de posicionar el robot. Tam-bién se suele denominar como control visual indirecto dinámico en el casoparticular de que las dos tareas desacopladas trabajen en paralelo ( lainformación está presente en todo momento ). El controlador del robottrabaja a bajo nivel por lo que su ciclo de control (menor que 10 ms.)deberá ser mayor que el del controlador visual (del orden de 40 ó 50 ms.).

Page 45: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.3. Esquemas de control visual 26

Tanto el controlador del robot como el controlador visual están desaco-plados, lo que simplifica mucho el diseño del control, aliviando de estemodo al controlador visual de tener que afrontar las parte no lineal y laparte dinámica del robot. Muchos robots poseen su propio controladorque aceptan coordenadas cartesianas o posiciones incrementales. Comoconsecuencia, la mayoría de los sistemas implementados en la actualidadson del tipo mirar y mover dinámico.

Figura 3.5: Control visual mirar y mover dinámico.

Experimentalmente se demuestra que la integración de la realimenta-ción visual dentro del controlador permite una operación eficiente y deconvergencia rápida, a pesar de errores en la calibración de la cámara odel modelo de movimiento.

Page 46: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.3. Esquemas de control visual 27

Control visual directo :En este esquema el controlador (con un ciclo de control muy rápido, infe-rior a 10 ms.) convierte directamente la información visual en consignasde control a los actuadores en forma de pares aplicados a las articulacio-nes del robot. A este control comúnmente se le suele llamar como controlservo visual.

Figura 3.6: Control visual directo.

3.3.2. En función de la información visualTambién conocida como clasificación en función de la definición del error.

Control visual basado en posición :También llamado control visual 3D (PBVS Position Based Visual Ser-voing), las características visuales de la imagen son utilizadas para calcu-lar la posición y orientación del objeto de control en el espacio cartesiano,donde se considera el modelo geométrico del objeto (dimensiones reales),el modelo de la cámara (representado por la matriz de parametros in-trinsecos de la cámara3.5) y la relación geométrica cámara robot, lo queprovoca que sea muy sensible a perturbaciones [83].

La función de error (función de error cinemático [82]), que es la dife-rencia entre la posición y orientación actual del objeto y su posición

3.5Obtenido del proceso de calibración de la cámara. Presentado en el capítulo 5.

Page 47: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.3. Esquemas de control visual 28

y orientación deseada, se define en un espacio cartesiano 3D [42], porlo que la trayectoria del objeto se controla directamente en un espaciotridimensional [24]. En este esquema de control se asume que el modeloconsiderado del objeto de referencia es ideal; en caso contrario el controlse deteriora.

Figura 3.7: Control visual basado en posición.

Puesto que la inexactitud en la estimación de la posición y orientacióndel objeto no pueden ser calculadas analíticamente en función de loserrores de calibración y de las perturbaciones de las medidas, es comple-jo demostrar analíticamente la estabilidad del sistema en presencia deerrores en el modelo.

Dadas las condiciones para la reconstrucción tridimensional, existen mu-chas propuestas de implementación del PBVS en sistemas estéreo de doscámaras. Incluso con más cámaras, como en [81], donde se usan trescámaras fijas junto con el filtro de Kalman extendido para estimar laposición y orientación del objeto.

Control visual basado en imagen :También conocido como control visual basado en características (IBVSImagen Based Visual Servoing [42]), o control visual 2D. En esta estra-tegia de control la función de error y la ley de control están definidasdirectamente en el plano 2D de la imagen y no es necesario un conoci-miento previo del modelo tridimensional del objeto [111]. Básicamente

Page 48: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.3. Esquemas de control visual 29

la tarea de control trata de reducir una medida de distancia entre laposición actual y deseada del objetivo en la imagen. Esta técnica es muyrobusta ante los posibles errores en la definición del modelo de los obje-tos, además de reducirse el tiempo de ciclo de control.

Figura 3.8: Control visual basado en imagen.

En muchos artículos consultados, como en [85], se comprueba experi-mentalmente que este esquema de control es robusto frente a errorestanto de la calibración interna de la cámara como de la posición relativadel objeto. El control visual puede realizarse estimando [86] el jacobianode la imagen o calculándolo analíticamente [51].

Si se opta por el cálculo analítico, será necesario, en primer lugar realizarla calibración de la cámara fuera de línea; en segundo lugar estimar larelación geométrica cámara-robot, y por último estimar la profundidad(la coordenada Z) a la que se encuentra la característica considerada enel espacio tridimensional. Por el contrario, si se opta por una estimaciónen línea, ya no será necesario conocer ninguno de estos parámetros, porlo que será robusto tanto a errores de calibración de la cámara como dela calibración del robot [42].

Un esquema de control IBVS posee estabilidad asintótica local cuandoel número de características en la imagen es al menos 6, como queda de-mostrado en [51]. En [27][111] y otros se presenta un control visual 2Dbasado en homografías, en el que no se necesita ninguna medida de la

Page 49: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.3. Esquemas de control visual 30

estructura 3D del objeto observado, y utiliza el principio de isomorfismocon la imagen de referencia para el cálculo de la posición y orientaciónde la cámara. Además, se comprueba en la práctica la estabilidad localde la ley de control propuesta, no pudiéndose garantizar la estabilidadasintótica global. Otro ejemplo es el dado en [87], donde se realiza con-trol visual basado en imagen utilizando coordenadas cilíndricas de lospuntos en la imagen.

Control visual híbrido :En este esquema de control se aprovechan las ventajas de los métodosbasados en imagen y de los basados en posición, seleccionando adecuada-mente las características visuales. Existe por lo tanto una combinaciónentre los esquemas de control PBVS e IBVS, en el que se desacoplanademás las componentes de traslación y rotación. La ley de control estádescrita en función de las características de la imagen y de algunos pa-rámetros de la posición y la orientación del objeto (o de la cámara).

Figura 3.9: Control visual 2½D

El esquema más representativo es el control visual 2½D con el cual seconsigue una estabilidad asintótica global en presencia de posibles erro-res de calibración, y no es necesario el conocimiento previo del modelotridimensional del objeto [26]. En [89] la información 3D obtenida a par-tir de una reconstrucción proyectiva es utilizada para regular el errorde rotación mientras que la información en el plano 2D de la imagen es

Page 50: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.3. Esquemas de control visual 31

utilizada para regular el error en traslación. La principal desventaja deesta técnica radica en ser relativamente sensible a errores en la medición[88] y ser muy sensible al ruido presente en la imagen [24].

En [24] además de analizar los posibles problemas del control visual ba-sado en imagen, como son las singularidades y los mínimos locales, sepresentan dos leyes de control para el control visual 2½D, y se comen-ta brevemente las condiciones para obtener una estabilidad global delsistema. En [90] se presenta un controlador adaptivo para un esquemade control 2½D, y se comprueba su estabilidad mediante Lyapunov. En[28] también se utiliza la reconstrucción proyectiva para realizar control2½D pero aplicado a objetos planos para un sistema monocular cámaraen mano. En [91] se implementa un nuevo controlador y se compara conotro basado en la descomposición a partir de la geometría epipolar.

Hay otras propuestas de control híbrido como la de Hutchinson [92], quepropone un esquema de control dinámico (2D & 3D switched dynamic)que según el comportamiento del sistema, se intercambia entre control2D y 3D, por unas reglas de tipo determinístico y probabilístico. Losresultados presentados son solo a nivel de simulación. En varios artícu-los se presenta un sistema de control desacoplado (entre movimientostraslacionales y rotacionales) utilizando momentos de la imagen.

En [93] se presenta una propuesta llamada control visual 2D/3D dondese minimiza la suma de los errores tanto en 2D como en 3D multiplicadoscada uno por un factor de peso, que indicará la influencia de cada tipode error. Los resultados de simulación indican una mejora en el espaciocartesiano frente al control visual 2½D.

Control visual particionado :Propuesto por Corke y Hutchinson [94] y detallado en [41], es una va-riación del control basado en imagen (IBVS), donde se desacopla el mo-vimiento traslacional y rotacional sobre el eje óptico de la cámara (ejeZ) del movimiento en los otros dos ejes (ejes X e Y). La matriz de inter-acción se divide en dos submatrices, la primera que depende de los ejesX e Y, y la segunda que depende solamente del eje Z.

Esta última matriz depende tan solo de dos nuevas características vi-suales fácilmente computables a partir de las originales. En las pruebasrealizadas se observa que con este esquema se evitan los movimientos

Page 51: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.3. Esquemas de control visual 32

complicados en el espacio 3D para conseguir la persistencia de las ca-racterísticas visuales en el plano de la imagen.

Control visual basado en movimiento :En esta estrategia lo que se mide es el llamado flujo óptico, el cual esuna medida del movimiento de un objeto en la imagen [98]. Hay variosartículos que usan esta estrategia: en [95] se controla un sistema cáma-ra en mano para posicionar el plano de la imagen paralelo al plano delobjeto; y un ejemplo de tarea con seguimiento de contornos se puedeconsultar en [96].

Figura 3.10: Control visual basado en movimiento.

Page 52: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.3. Esquemas de control visual 33

3.3.3. En función de los elementos requeridos en el cam-po visual

Terminal en lazo abierto EOL :En esta configuración se observa tan solo al objeto a controlar. En unsistema cámara en mano, si se tiene la tarea de posicionar el robot conrespecto a un objeto, esta es llevada a cabo de forma indirecta a travésdel conocimiento de la relación cinemática entre la cámara y el robot, cu-yos errores pueden llevar a errores de posicionamiento ya que no puedenser observados por el sistema. En este aspecto, si se observase tambiénel robot se podrían corregir estos errores. En general no se puede garan-tizar la exactitud del posicionamiento del sistema a menos que, ambos,el objeto y el robot sean observados al mismo tiempo.

Terminal en lazo cerrado ECL :En este esquema de control tanto el efector final y el objeto de con-trol son observados, por lo que, tanto los errores de posicionamientodel objeto de control y del efector final se corrigen al mismo tiempo.Parece pues conveniente usar una configuración ECL, pero aparte deutilizarse una configuración cámara fija, se requerirían mayores recursosde computación. En [97] utiliza un sistema monocular con cámara fijapara una tarea de posicionamiento de planos con buenos resultados aunen presencia de errores del modelo cinemático y errores de calibracióndel sistema de visión.

Page 53: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.3. Esquemas de control visual 34

3.3.4. En función de la necesidad de modelo del objetoExtraída de [99], esta clasificación se basa en el conocimiento a priori del

modelo tridimensional del objeto de control. Esta estrategia se divide en dosgrupos:

Control visual basado en modelo :Se denomina así cuando se conoce el modelo tridimensional del objetode control, que junto con el conocimiento exacto de la calibración de lacámara y del robot se estima la posición y la orientación actual del obje-to. Para el caso particular en que las características visuales a reconocersean puntos en la imagen, se necesitan al menos 4 puntos para reali-zar una estimación exacta de la posición y orientación del objeto [103];si más de cuatro puntos pueden ser localizados y extraidos, es posibleprescindir de los parámetros de la cámara y trabajar con un sistema nocalibrado [19][86].

Control visual libre de modelo :Aquí no se necesita un conocimiento a priori del modelo tridimensionaldel objeto. Las características correspondientes a las posiciones deseadasse consiguen en una etapa previa fuera de línea, conocida como teach-by-showing [42]. En esta técnica el robot es movido a la posición deseada,la cámara toma la imagen del objeto, extrae sus características visualesy las almacena en memoria. Estas características visuales representaránen la etapa de control a las características de referencia.

Como en los otros esquemas de control, este paso es muy importantepara el éxito de la tarea del control. En este proceso, la diferencia entrelas características visuales del momento actual y las de referencia cons-tituirá el error a minimizar en el espacio de la imagen. Un error menora un umbral determinado significará que se ha alcanzado la posición dereferencia deseada con una exactitud en la cual no se tienen en cuentalos errores de calibración.

También hay esquemas de control libres del modelo que realizan controlvisual 3D donde la rotación y la traslación son determinadas a partirde la matriz esencial, la cual es estimada a partir de las imágenes de laposición actual y de la posición de referencia.

Page 54: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.3. Esquemas de control visual 35

3.3.5. En función del modelo visuo-motor

Esta clasificación fue propuesta por Kragic [105]. En éste se considera co-mo elemento de clasificación el modelo visuo-motor del sistema, es decir, larelación entre la parte motora del sistema y las características en la imagen.Se dice que es conocido a priori si se dispone de los modelos de los diferentescomponentes del sistema. En caso contrario habría que realizar una estimación.

En esta clasificación se distinguen dos alternativas:

Modelo visuo-motor conocido a priori :Se conocen los parámetros de calibración de la cámara, la transforma-ción entre sistemas robot-cámara, la calibración del robot y el modelodel objeto. Dentro de esta clasificación se pueden encuadrar al controlbasado en posición, control basado en imagen y el control visual híbrido.

Modelo visuo-motor estimado :Dado que no se dispone de ninguno de los parámetros anteriores, esnecesario realizar un proceso de estimación de los mismos. Este procesose realiza fuera de línea, utilizando métodos de aprendizaje por redesneuronales [10][11], redes borrosas [102] o neuro-borrosas [100]. Otrosmétodos usados suelen ser recursivos o incluso realizando movimientoslinealmente independientes [104].

Figura 3.11: Clasificación de los sistemas de control visual respecto al modelovisuo-motor.

Page 55: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.4. Otros aspectos del control visual 36

3.4. Otros aspectos del control visual

Para la clasificación de las técnicas de control visual se pueden utilizar otrotipo de criterios, además de los mostrados anteriormente. La ley de control autilizar, la interpretación de la escena o incluso los algoritmos de visión utili-zados, pueden ser otro tipo de criterios de clasificación válidos en este contexto.

Un campo de investigación en control visual es la planificación de trayec-torias: útil cuando la distancia en la imagen entre la posición inicial y deseadadel objeto es muy grande. Lo que se busca es que con una función de erroren el plano de la imagen se consiga una trayectoria óptima del objeto (o de lacámara) en el espacio de trabajo a fin de mantener las características visualesen la imagen, evitando oclusiones u obstáculos.

En [101] se presenta una estrategia que genera una trayectoria en el es-pacio de la imagen correspondiente a un movimiento óptimo de la cámarapara el caso cuando la distancia entre la posición de inicio y deseada es gran-de, asumiendo desconocidos los parámetros de calibración de la cámara y elmodelo del objeto. De forma experimental se verifica que es posible seguir latrayectoria generada mediante este tipo de algoritmos con un control basadoen posición.

Existen también muchas investigaciones respecto a la robustez del contro-lador basado en información visual frente a posibles errores de modelado oa perturbaciones, para conseguir un control óptimo en escenarios reales. En[107] se usa un esquema PBVS, y se aplica el filtro de Kalman para predecir laposición relativa del objeto utilizándose una base de datos con característicasvisuales adecuadas que son utilizadas para realizar una trayectoria óptima contécnicas de fusión sensorial con información de varias cámaras.

En [106] se presenta un controlador robusto frente a errores de calibraciónen un sistema estéreo basado en la disparidad y mediciones del flujo óptico.Para evitar que las características visuales salgan de la imagen, en [108] sepresenta una estrategia denominada control visual independiente de los pa-rámetros intrínsecos, donde se utiliza una cámara con enfoque variable, y elcontrolador propuesto puede aumentar el campo de visión de la escena si elobjeto intenta salir fuera de la imagen.

Otro campo es el del control visual en sistemas de alta velocidad, como porejemplo el sistema estéreo para seguir y golpear una pelota de ping-pong [109].En [113] se describe una propuesta basada en una estructura con configura-

Page 56: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.4. Otros aspectos del control visual 37

ción de multiprocesador paralela y un sistema de visión activa masivamenteparalelizada, con la cual se consigue un sistema de fusión motor-sensorial convelocidad de realimentación visual de 1 ms. para interactuar con cambios muyrápidos en el entorno.

A diferencia del uso de puntos en la imagen, pocos trabajos han sido de-dicados al control visual a partir de líneas (Figura 3.12). La razón principales la dificultad de manejar las características de las líneas en la imagen, lascuales representan en geometría proyectiva la proyección de un plano 3D quepasa por el centro óptico de la cámara.

Figura 3.12: Ejemplo de detección de líneas en entornos urbanos.

Un ejemplo de aplicación en sistemas monocámara se tiene en [110], dondela tarea es posicionar la cámara con respecto a una autopista representadapor tres líneas paralelas que están en un plano, y se calcula el jacobiano dela imagen considerando constante la altura a la que se encuentra la cámarasobre la autopista. Otro ejemplo de aplicación es el dado en [112], tratando elalineamiento de un UAV con las líneas de una carretera, donde la matriz deinteracción calculada a partir de las características desacopladas de las líneases integrada en las leyes de control lateral y longitudinal.

Figura 3.13: Ejemplo de detección de líneas en una carretera.

Page 57: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

3.5. Conclusión 38

3.5. Conclusión

La realización de tareas de índole robótico con un quadrotor requiere deestructuras de control en tiempo real. Además la dinámica no lineal y acopladadel quadrotor impide que pueda ser incluida en las leyes de control visual. Seconsidera pues a éste como un robot con un bucle interno (rápido) al cual sele introducen referencias generadas en todo momento desde un lazo externo,generalmente a una frecuencia menor.

Se encuentra por consiguiente su similitud con el control mirar y moverdinámico basado en posición y en imagen. Con respecto a la posición de lacámara, la alternativa seleccionada en el presente proyecto se basa en colocaruna cámara a bordo del quadrotor (configuración de cámara en mano), reali-zando el procesado de la información visual a bordo del mismo.

En el presente proyecto se han implementado las técnicas de control ba-sado en posición y control basado en imagen. Para el control visual basadoen posición, como anteriormente se mencionó, se requiere a priori del conoci-miento de ciertos parámetros del objeto de referencia (modelo 3D), así comode los parámetros internos de la cámara, lo que supone ciertos problemas a lahora de ser utilizados para el control visual de un quadrotor autónomo.

En la primera propuesta implementada y presentada en el capítulo 6, sehan superado los siguientes requisitos:

Necesidad de la reconstrucción 3D del objeto: el modelo del objeto esconocido.

Proceso de calibración de la cámara: explicado en el capítulo 5.

Alto coste computacional: optimización de las rutinas de captura y tra-tamiento de las imágenes.

Para una información más completa y detallada acerca de todos los elementospresentados en este capítulo, se refiere al lector a consultar [41] y [51].

Page 58: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Capítulo 4

Localización y seguimiento delobjeto de referencia

4.1. Introducción

Para el control visual es imprescindible la presencia de un determinado ob-jeto, denominado objeto de referencia o interés. De la localización y posteriorseguimiento de éste se extraerá la información necesaria para cerrar el lazode realimentación visual para el control del quadrotor. Es por ello necesariauna clasificación del conjunto de algoritmos para las tareas de localización yseguimiento de objetos.

Existen otras propuestas [50] en las que se propone una clasificación distin-ta a la presentada en este capítulo, enfocándose de distinta forma el conjuntode algoritmos presentes en la literatura. Así pues, en el presente capítulo seexpone de forma amplia y detallada conceptos relacionados con:

Representación del objeto de referencia (Figura 4.1).

Métodos de detección basados en la representación escogida.

Selección de características para el seguimiento, basado en la técnicausada para representar al objeto.

Métodos de seguimiento de características.

Con los últimos avances en las librerías de procesamiento digital, el aba-ratamiento de los componentes hardware y el aumento de la capacidad decómputo de éstos, la tarea de localización y seguimiento de objetos ha ex-perimentado un gran desarrollo durante los últimos años. Producto de este

39

Page 59: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.1. Introducción 40

Figura 4.1: Objeto de referencia utilizado en el presente proyecto.

desarrollo, se muestran algunos ejemplos de la funcionalidad y amplio campode aplicación de éste tipo de técnicas:

Reconocimiento basado en el movimiento: Por ejemplo, reconocimien-to de personas mediante la identificación de la forma característica deandar.

Vigilancia automatizada: Monitorización de una zona para la deteccciónde posibles intrusos o actividades no programadas.

Interacción persona - ordenador: Reconocimiento de gestos, identifica-ción mediante iris, etc.

Monitorización del tráfico: Recolección en tiempo real de estadísticas deautopistas o carreteras basadas en información visual, por ejemplo.

Navegación de vehículos: Generación de trayectorias y capacidad paraevitar obstáculos.

Una definición relativamente simple que se puede realizar para la tarea delseguimiento de objetos, puede ser como el “problema de la estimación de latrayectoria de un objeto determinado con movimiento en el plano de la ima-gen”. Pero esta tarea, por “liviana” que pudiera parecer su definición, conllevauna serie de problemas:

Page 60: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.1. Introducción 41

Posible pérdida de información visual, debida a la proyección del mundotridimensional a una escena 2- dimensional.

Ruido en las imágenes: Posibles obstáculos que se crucen entre la cámaray el objeto de referencia.

Posibilidad de que el movimiento del objeto de control sea relativamenterápido o abrupto.

La naturaleza no rígida o articulada de algunos objetos conlleva a posi-bles cambios en la geometría del objeto de control.

Posibles cambios en la iluminación de la escena, que provoquen pérdidaparcial/temporal de la localización del objeto de referencia.

El procesamiento de extracción de información visual debe ser en tiemporeal.

Posibles oclusiones o pérdida parcial del objeto.

La tarea del seguimiento se puede simplificar imponiendo algunas restriccionesen el movimiento del objeto. Por ejemplo, muchos de los algoritmos de segui-miento estudiados consideran que el movimiento del objeto no es abrupto nicaótico, y que mantiene cierta linealidad. Otra de las restricciones considera-das es que la geometría del objeto, la forma del mismo, es invariante.

Como conclusión a ésta introducción, el conjunto de propuestas para la lo-calización y seguimiento de objetos se pueden encuadrar en preguntas del tipo:

¿Qué características de la imagen deben ser usadas?;¿Qué representación del objeto es la mejor para el seguimiento?;¿Cómo deben modelarse el movimiento, la apariencia y la figura del objeto?

las cuales son resueltas en los apartados expuestos a continuación.

Page 61: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.2. Representación del objeto 42

4.2. Representación del objeto

Si se desea localizar un determinado objeto en una escena para su posteriorseguimiento, en primer lugar es necesario definir qué se entiende por objeto.O dicho de otra forma, cómo se puede codificar la información que represen-ta a un objeto. A continuación se presentan algunas de las propuestas másextendidas en la actualidad.

Puntos :El objeto de referencia se puede representar como un único punto, lo quese correspondería con el centroide del objeto (Figura 4.2.Izquierda), obien como un conjunto de varios puntos (Figura 4.2.Derecha). En gene-ral, la representación por puntos es adecuada en situaciones en las queel objeto de referencia ocupa pequeñas regiones en la imagen.

Figura 4.2: Representación del objeto por puntos.

Formas geométricas :El objeto puede ser representado bien como un rectángulo (Figura 4.3)o como una elipse. El movimiento del objeto en este tipo de aproxima-ciones y en las basadas en puntos pueden modelarse por su traslaciónrespecto a un origen determinado o por una transformación proyectiva(homografia). Este tipo de técnicas son usadas tanto para el seguimien-to de objetos rígidos como para el seguimiento de objetos de geometríavariable.

Page 62: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.2. Representación del objeto 43

Figura 4.3: Representación del objeto usando formas geométricas básicas.

Siluetas y contornos :La representación por contornos (Figura 4.4. Izquierda) de un objeto de-fine las “fronteras” del mismo. La región contenida dentro del contornose denomina silueta del objeto (Figura 4.4. Derecha). Tanto la repre-sentación por siluetas como por contornos son buenas técnicas para elseguimiento de formas complejas no rígidas.

Figura 4.4: Representación del objeto usando contornos y siluetas.

Modelos articulados :Los objetos de referencia articulados están compuestos, en general, porun conjunto de partes que unidas conforman al objeto. Por ejemplo, elcuerpo humano se puede considerar como un objeto articulado, formadopor el torso, los brazos, las manos, la cabeza y los pies. La relación entrelas distintas partes está regida por modelos cinemáticos de movimiento.

Page 63: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.2. Representación del objeto 44

Para la representación de las distintas partes del cuerpo se pueden usartanto formas geométricas básicas como siluetas o contornos.

Figura 4.5: Representación del objeto como modelo articulado.

Modelos basados en el esqueleto del objeto :El esqueleto de un objeto de referencia puede ser calculado usando unatransformación aritmética, considerando la media de la distancia entrelas fronteras del objeto. Esta representación suele ser la más amplia-mente utilizada para modelar tanto objetos rígidos como de geometríavariable.

Figura 4.6: Representación del esqueleto de un objeto.

Page 64: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.2. Representación del objeto 45

En las anteriores técnicas tan sólo se representaba la localización del objetoen la escena, mediante puntos, contornos, siluetas o formas geométricas, en-tre otros. Pero existen otras formas para localizar un objeto de referencia enuna escena, y éstas se basan en la apariencia del mismo. Elementos tales co-mo el color o la textura del objeto son los utilizados para representar al objeto.

A continuación se exponen varias técnicas para representar la aparienciade un objeto determinado:

Densidad de probabilidad :La estimación de densidad de probabilidad de la apariencia del objetopuede ser paramétrica, como el Gausiano de una imagen4.1, o no pa-ramétrica, como un histograma . Se basan en clasificar mediante algúntipo de función las características del objeto, tales como el color o latextura.

Plantillas :Las plantillas se componen usando formas geométricas simples o silue-tas. Una de las ventajas del uso de plantillas es que se codifican tanto laapariencia del objeto, como sus dimensiones. Sin embargo, la informa-ción visual para la apariencia es extraída tan sólo de una única vista.

Por lo tanto, las plantillas sólo son adecuadas para el seguimiento deobjetos cuya posición no varíe considerablemente. Pero como se verámás adelante, existen algunas propuestas en la literatura que presentansoluciones para convertir esta técnica en invariante ante cambios en laescala y rotación, lo que la hacen una técnica más robusta.

Modelos activos :Estos modelos son generados considerando al mismo tiempo la aparien-cia y la forma del objeto. En general, la forma del objeto se define por unconjunto de puntos de referencia que pueden pertenecer a la frontera delobjeto o, alternativamente, pueden estar contenidos dentro de la regióndel mismo.

Para cada punto se almacena un vector de apariencia, el cual contieneinformación acerca del color, textura, o magnitud del gradiente. Estosmodelos requieren de una fase de entrenamiento, donde se aprenden

4.1El Gausiano de una imagen es un tipo de distribución que asocia a cada píxel el valorpromedio de sus vecinos.

Page 65: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.2. Representación del objeto 46

tanto la forma del objeto como la apariencia asociada, a partir de unconjunto de vistas diferentes del mismo objeto de referencia.

Modelos de apariencia multivistas :Estos modelos codifican diferentes puntos de vista de un objeto. Unaaproximación para este tipo de representación es generar un subespaciopara el conjunto total de vistas. Un ejemplo es el Análisis de Componen-tes Principales (PCA) y Análisis de Componentes Independientes (ICA),los cuales se han utilizado tanto para la representación de la forma comode la apariencia.

En general, existe una relación directa entre la representación del objeto y losalgoritmos de seguimiento asociados. Normalmente, en función de las condi-ciones de la aplicación, se elige una representación u otra para el objeto.

Page 66: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.3. Selección de características para el seguimiento 47

4.3. Selección de características para el segui-miento

Un pilar fundamental en los algoritmos de seguimiento o tracking es laselección de características en la imagen. En general, lo más deseable de unacaracterística visual es que sea única, para poder ser distinguida del resto deposibles características candidatas . Como se determinó en el apartado an-terior, la selección de características está relacionada con la representaciónelegida para el objeto.

Por ejemplo, el color suele usarse como una característica cuando se usanmétodos de localización basados en histogramas; de igual modo también sonusados los contornos para métodos basados en contornos, donde el color no seconsidera.

En general, muchos de los algoritmos presentes en la literatura no se basanen una determinada caracterísica, sino que hacen uso de una combinación deellas. A continuación se exponen en detalle algunas de ellas:

Color :Para la codificación del color de una imagen existen dos grandes méto-dos: la codificación RGB4.2 y la codificación HSV4.3. Cada método tienesus ventajas e inconvenientes. Por ejemplo, las diferencias entre los co-lores en el modelo RGB no se corresponden con las diferencias de colorpercibidas por el ojo humano, y ambos modelos son sensibles a ruidosen la imagen.

Bordes :Normalmente los cambios en la intensidad de las imágenes son mayoresante la presencia de bordes. Una propiedad importante de los bordeses que son relativamente más robustos que los basados en color antecambios de iluminación. La propuesta más conocida que usa esta técnicaes la del detector de bordes de Canny.

Flujo Óptico :El flujo óptico se puede considerar como un campo de vectores que re-presentan el desplazamiento de cada punto, el cual define la traslaciónde cada píxel en una región. Se calcula usando una restricción sobre

4.2Toda imagen queda codificada como una combinación de los colores Red Green Blue.4.3Del inglés Hue, Saturation, Value – Tonalidad, Saturación, Valor.

Page 67: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.3. Selección de características para el seguimiento 48

el contraste de la imagen, donde se supone un valor constante para undeterminado píxel en imágenes consecutivas. El flujo óptico se utilizacomúnmente como una característica para la segmentación basada enmovimiento.

Texturas :La textura se puede considerar como una medida de la variación de laintensidad de una superficie, la cual codifica propiedades como regulari-dad y suavidad en los valores de los píxeles. Al contrario que el color, latextura precisa de un pre-procesado para generar unas estructuras deno-minadas descriptores. Al igual que los modelos basados en bordes, estemétodo es menos sensible a los cambios de iluminación que el color.

Según se ha podido observar tras consultar la bibliografía existente, general-mente el color es una de las características más utilizadas para algoritmos deseguimiento, a pesar de los problemas que presenta ante cambios en las con-diciones de luz.

Page 68: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.4. Detección del objeto 49

4.4. Detección del objeto

En esta sección se muestran con un mayor nivel de detalle los métodos parala localización del objeto de interés en la escena. Se divide en dos apartados:métodos para la detección de puntos característicos en la escena y métodosbasados en otras representaciones. Esta distinción es necesaria, puesto queen el presente proyecto todas las propuestas implementadas se basan en unarepresentación por puntos del objeto de referencia.

4.4.1. Detectores de puntos

Este tipo de métodos son usados para encontrar puntos que presenten cier-tas singularidades respecto al área en la que están integrados. Una propiedaddeseable de un punto de interés (o corner, como se indica en [120]), debe sersu invarianza ante cambios de iluminación en la escena desde el punto de vistade la cámara. En la literatura, los métodos más usados siguiendo este esquemason el operador de Moravec [114], la técnica de Harris [45], el detector KLT[117] y el detector de características SIFT [115].

Figura 4.7: Puntos de interés usando Harris.

El detector de Harris (Figura 4.7) calcula las derivadas de primer orden dela imagen, (Ix,Iy), en las direcciones de −→x e −→y para realzar las variaciones delas intensidades direccionales. Posteriormente, se calcula una matriz con lasderivadas de segundo orden, la cual codifica estas variaciones, y es evaluadapara cada pixel en una pequeña región de vecindad:

M =( ∑

I2x

∑IxIy∑

IxIy∑I2y

)(4.1)

Page 69: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.4. Detección del objeto 50

El primer paso para obtener un punto característico candidato consiste enusar el determinante y la traza de la matriz M, la cual mide la variación enun pequeño entorno de vecindad R = det(M)−k tr(M)2, donde k es constante.

Los puntos de interés son finalmente seleccionados tras aplicar un deter-minado umbral sobre R. La misma matriz de momentos M dada en 4.1 esusada en el paso de detección de puntos de interés del método KLT. La rela-ción R se calcula usando el mínimo de los autovalores de M, λmin. Los puntoscandidatos son posteriormente seleccionados usando el umbral R. El métodoKLT elimina los puntos que están relativamente cerca unos de otros (Figura4.8).

Figura 4.8: Puntos de interés usando KLT.

Cuantitativamente, los métodos de KLT y Harris enfatizan las variacionesde la intensidad usando medidas similares. Por ejemplo, la matriz R en elmétodo de Harris está relacionada con el polinomio característico usado paraencontrar los autovalores de M ,λ2 + det(M) − λ tr(M) = 0, mientras queen el método KLT se calculan los autovalores directamente. En la práctica,ambos métodos encuentran casi los mismos puntos de interés.

La única diferencia es pues que el método de KLT incluye un criterio paradistinguir entre puntos separados una cierta distancia. En teoría, la matriz Mes invariante tanto a rotación como a traslación; sin embargo, no es invariantea transformaciones proyectivas o afines.

Para introducir un método robusto para la detección de buenos puntos deinterés, en [115] se introduce el método denominado como SIFT (Scale Inva-riant Feature Transformation, Figura 4.9), el cual está compuesto por 4 pasos.

Page 70: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.4. Detección del objeto 51

Figura 4.9: Puntos de interés usando SIFT.

El primero de ellos consiste en construir un espacio a escala mediante laconvolución de la imagen con filtros Gausianos usando diferentes escalas. Acontinuación se lleva a cabo un proceso de actualización de la localización decada candidato mediante la interpolación de los valores del color, usando paraello los píxeles vecinos.

Posteriormente, tanto los candidatos con un bajo contraste como los queestán incluidos en los bordes, son eliminados. Por último, a los puntos res-tantes se les asignan orientaciones basándose en los picos del histograma enla dirección del gradiente, en un pequeño entorno de vecindad alrededor decada punto candidato. Para más información, se detalla en profundidad estemétodo en la sección 7.2.4.

El detector SIFT genera un mayor número de candidatos, si se comparacon los otros dos métodos. Esto es debido al hecho de que se consideran puntosa diferentes escalas y diferentes resoluciones (piramidal). Empíricamente, semuestra en [116] que el método de SIFT es más robusto ante deformaciones enel objeto. Pero no todo son ventajas: el coste computacional de este método esrelativamente importante, y para aplicaciones en tiempo real es prácticamenteinviable en la actualidad.

Page 71: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.4. Detección del objeto 52

4.4.2. Métodos de detección no basados en puntos

Dado que tan solo se han usado implementaciones de alguno de los métodospropuestos en el apartado anterior, cualquier método no basado en detecciónde puntos no será tratado en el resto del documento.

Sin embargo, y con carácter meramente ilustrativo, se presenta a continua-ción una tabla que recoge el conjunto de métodos más relevantes relacionadoscon la detección no basados en puntos presentes en la literatura.

Categorias Trabajos más relevantesSegmentación Mean Shift

Graph-CutContornos Activos

Modelado del fondo Mixture of GaussiansEigenbackground

Wall flowerDynamic texture background

Clasificadores Supervisados Support Vector MachinesNeural NetworksAdaptive Boosting

Page 72: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.5. Seguimiento del objeto 53

4.5. Seguimiento del objeto

El objetivo de los algoritmos de seguimiento es poder inferir la trayectoriaque el objeto sigue a lo largo de una secuencia de imágenes. La tarea de encon-trar el objeto y de establecer las correspondencias entre los puntos del frameanterior y el siguiente puede ser llevada a cabo de forma conjunta, o separada.Si se realiza de forma conjunta, las regiones donde es posible que el objetose encuentre son obtenidas mediante un algoritmo de detección de objetos, yposteriormente se le asignarían las correspondencias para los puntos de interés.

En el segundo caso, si se realizan las dos tareas de forma conjunta, tan-to la región del espacio como las correspondencias son calculadas al mismotiempo, actualizando la posición del objeto de forma iterativa a partir de lascaracterísticas del movimiento del mismo en los frames anteriores.

En cualquiera de las dos técnicas anteriores, el objeto puede ser repre-sentado bien por formas (puntos, formas geométricas, etc.) o por apariencia(texturas, color, etc.). En función pues del modelo de representación, el mé-todo de seguimiento o tracking será distinto. A continuación se exponen lasdiferentes categorias para los algoritmos de seguimiento presentes en la lite-ratura clasificados en función de la representación del objeto de referencia.

Seguimiento de puntos :El objeto de interés, el cual es localizado en frames consecutivos, es re-presentado como un conjunto de puntos, y la asociación de los mismosse basa en los estados previos del objeto, los cuales incluyen informacióntanto de la posición como del movimiento. Con esta aproximación es ne-cesario el uso de un método externo para la detección del objeto en cadaframe. En el apartado 4.5.1 se detallan varias técnicas pertenecientes aesta categoria.

Kernel Tracking :En este contexto, kernel se refiere a la forma o apariencia del objeto dereferencia. Por ejemplo, la representación del objeto en este apartadopuede ser bien un rectángulo, o bien una elipse, ambos con un histogra-ma asociado. El objeto es seguido en frames consecutivos calculando elmovimiento de la forma que engloba al mismo, lo cual se puede observaren la Figura 4.10. Este movimiento normalmente se suele describir entérminos de traslación, rotación y transformación afin.

Page 73: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.5. Seguimiento del objeto 54

Figura 4.10: Kernel Tracking.

Seguimiento de siluetas :Este tipo de métodos usan la información contenida dentro de la regióndel objeto, lo que se ha denominado anteriormente como apariencia, pa-ra calcular los bordes o extremos de la propia región. Esta informaciónse representa bien como mapas de vectores, o como densidad de probabi-lidad, entre otros. Dados los modelos de los objetos, las siluetas puedenser seguidas bien por técnicas de matching4.4 de formas o por el métodode evolución de contornos.

Figura 4.11: Evolución de contornos.

4.5.1. Seguimiento basado en puntos

Como se expuso en el apartado anterior, el seguimiento consiste en la es-timación de la correspondencia de unos puntos entre un frame y el siguiente.Pero esta correspondencia es un problema relativamente complejo cuando setienen, por ejemplo, oclusiones, falsos positivos, o movimientos erráticos delobjeto que provoquen la pérdida de posibles emparejamientos.

Los métodos encuadrados en esta categoria se pueden clasificar en dosgrandes grupos: los métodos deterministas y los métodos probabilísticos. Los

4.4Equivale al cálculo de las correspondencias.

Page 74: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.5. Seguimiento del objeto 55

métodos deterministas usan heurísticas cualitativas para el movimiento, parael planteamiento de las restricciones sobre el problema de la correspondencia.Sin embargo, en la otra clase de métodos se toman de forma explícita medidasdel objeto y se tienen en cuenta algunos valores desconocidos (incertidumbreen el modelo) para hallar las correspondencias.

4.5.1.1. Métodos deterministas

En este tipo de métodos, se define un coste, asociado a la correspondenciade un punto entre un frame y el siguiente. Así, lo que se intenta es una mi-nimización del coste global para las correspondencias, y este problema quedaformulado como un problema de optimización combinatorial.

La solución, que consiste en una asociación 1-a-1 de todos los puntos deun frame con los puntos del siguiente (Figura 4.13) de entre todas las posiblessoluciones (Figura 4.12), puede ser obtenida mediante métodos de asignaciónóptima, como por ejemplo algoritmos de búsqueda voraces.

Figura 4.12: Conjunto total de asociaciones de un punto.

Figura 4.13: Correspondencias correctas para un conjunto de puntos.

Page 75: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.5. Seguimiento del objeto 56

Para el cálculo del coste, se tienen en cuenta las siguientes restricciones:

Proximidad: Se considera que el objeto no realiza cambios bruscos deposición entre frames consecutivos.

Velocidad acotada: Se estima la velocidad máxima a partir de la cuales imposible que el objeto se mueva, y marca un entorno de vecindaddonde es posible hallar la correspondencia del punto (Figura 4.14, 1).

Smooth Motion: Se asume que tanto la dirección como la velocidad delobjeto no cambian de forma drástica (Figura 4.14, 2).

Restricciones comunes de movimiento: La velocidad del objeto en unapequeña región es la misma para todos los puntos. Esta consideraciónes muy importante cuando se representa al objeto como, precisamente,un conjunto de puntos en la imagen (Figura 4.14, 3).

Rigidez: Se asume que los objetos en el mundo real, tridimensional, sonrígidos, y además se cumple que la distancia entre dos puntos cuales-quiera del objeto permanecerá constante en el mundo tridimensional,aunque no así en la imagen (Figura 4.14, 4).

Figura 4.14: 1: Velocidad máxima. 2: Cambios pequeños en la velocidad. 3:Restricciones comunes. 4: Geometría del objeto.

Estas restricciones no son exclusivas de los métodos deterministas; tambiénpueder ser consideradas en los métodos probabilísticos o estadísticos.

Page 76: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.5. Seguimiento del objeto 57

4.5.1.2. Métodos estadísticos

Para hallar las correspondencias entre los puntos en este tipo de métodos,se tienen en cuenta posibles incertidumbres o errores en el modelo para es-timar la posición del objeto. Estos errores pueden ser debidos a oclusiones ocambios de las condiciones lumínicas, entre otros.

Si se considera un determinado objeto móvil observado desde un pun-to de vista, y se representa parte de la información del mismo, como porejemplo, la localización, ésta se puede definir como una secuencia de estadosX t : t = 1, 2, ..

Los cambios entre los estados del objeto quedan reflejados en la siguienteecuación:

X t = f t(X t−1) +W t

donde W tes el denominado ruido blanco4.5.

La relación entre la medición y el estado se especifica por la ecuaciónZt = ht(X t,N t), donde N t es el ruido blanco y es independiente de W t. Elobjetivo de los algoritmos de seguimiento consiste en estimar el estado X t

dadas todas las mediciones obtenidas hasta el momento, que se traduciría enconstruir la distribución de probabilidad p(X t | Z1,...,t) que rige la dinámicadel movimiento del objeto.

Una solución óptima a nivel teórico es usar un filtro recursivo Bayesiano,el cual provee una solución en dos pasos. El primero de ellos, la predicción,usa una ecuación de carácter dinámico y la distribución de probabilidad yacalculada del estado en el instante t−1 para obtener la distribución de proba-bilidad del estado actual, p(X t | Z1,..,t−1). En el segundo paso, de corrección,se emplea una función de similitud p(Zt | X t) de la medición del estado actualpara calcular la siguiente distribución de probabilidad p(X t | Z1,..,t).

En el caso donde el conjunto de mediciones obtenidas sean debidas a laexistencia de un único objeto, entonces con los dos pasos expuestos anterior-mente es más que suficiente para estimar el estado actual. Pero si existenvarios objetos en la escena, existen otros casos de estudio que no son vistos enla presente sección. Para más información de este tipo de métodos, se refiereal lector a consultar [50].

4.5Ruido que no se corresponde con ninguna distribución estadística.

Page 77: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.5. Seguimiento del objeto 58

4.5.2. Seguimiento basado en apariencia

La propuesta más generalizada de esta categoria es la denominada tem-plate matching. Este método se puede considerar como de búsqueda usandofuerza bruta, intentando localizar en una imagen Iw una región similar a laque contiene el objeto, denominada Ot, definida en algún frame anterior. Laposición de la plantilla puede ser calculada, de entre otras formas [120], usandoel método de correlación cruzada:

arg maxdx,dy

∑x

∑y(Ot(x, y) × Iw(x+ dx+ dy))√∑

x

∑y O

2t (x, y)

donde (dx,dy) especifica la posición del centro de la plantilla candidata.

Normalmente, tanto las intensidades de la imagen como el color son usa-das para construir la plantilla. Pero dado que la intensidad de la imagen esmuy sensible a cambios en la iluminación, los gradientes de la misma tambiénpueden ser usados como características de la imagen. La principal limitaciónque posee el método de template matching es el coste computacional que ca-racteriza a los algoritmos de fuerza bruta.

Existen varias propuestas usando otra representación del objeto; desde cal-cular la media de los valores del histograma para los píxeles que representanal objeto, hasta ponderar los valores digitales que tienen dichos píxeles en elhistograma. Esta segunda técnica se conoce como mean-shift. Para más infor-mación, consúltese [120], capítulo relacionado con tracking.

Otras alternativas para realizar el seguimiento de una región definida poruna forma geométrica básica es la de calcular la traslación usando un métodode flujo óptico. Esta clase de métodos son usados para generar una especiede campo de vectores, calculando el vector de flujo para cada píxel bajo larestricción de brillo constante, I(x, y, t) − I(x + dx, y + dy, t + dt) = 0. Esteprocedimiento, el cual es llevado a cabo en un entorno de vecindad alrededordel píxel, se puede realizar de dos maneras: de forma algebraica (Lucas andKanade, 1981) o geométricamente (Schunk).

En 1994, Shi y Tomasi propusieron el denominado KLT tracker, el cual esusado en la implementación propuesta en este proyecto bajo el nombre de lafunción cvCalcOpticalFlowPyrLK(), y en el que de forma iterativa se calculala traslación (du,dv) de una región (se admite como parámetro de entrada alalgoritmo) centrada en un punto de interés:

Page 78: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.5. Seguimiento del objeto 59

( ∑I2x

∑IxIy∑

IxIy∑I2y

)(dudv

)=( ∑

IxIt∑IyIt

)

Una vez que se ha obtenido la nueva localización del punto de interés, elalgoritmo KLT tracker evalua la calidad de la zona estimada calculando latransformación afin:

(x′

y′

)=(a bc d

)(xy

)+(txty

)

entre las zonas correspondientes en los siguientes frames (los coeficientesa,b,c,d se verán en capítulos posteriores).

Si la suma de la diferencia de cuadrados entre la zona actual y la estimadaes menor que un cierto umbral, entonces se sigue estimando la posición delpunto característico; en caso contrario, se deshecha. Un ejemplo de uso delalgoritmo KLT tracker es el mostrado en la Figura 4.15.

Figura 4.15: Seguimiento de características usando el algoritmo KLT tracker.

Page 79: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

4.5. Seguimiento del objeto 60

4.5.3. Seguimiento de siluetas y contornos

Dado que los algoritmos presentados en este apartado no han sido estu-diados a lo largo del desarrollo del presente proyecto, se propone una relaciónesquemática con las principales técnicas y algoritmos, para concluir la clasifi-cación del estado del arte de la localización y seguimiento de objetos.

Categoría Trabajo más relevante GrupoModelo de espacios de estados Métodos de

(Isard , Blake, 1998). Espacio de EstadosEvolución de Métodos variacionalescontornos (Bertalmio y otros, 2000) Minimización

Métodos heurísticos directa(Ronfard, 2004)

Dist. de Hausdorff(Huttenlocher y otros, 1993)

Emparejamiento Transformada de Houghde formas (Sato y Aggarwal, 2004)

(Matching shapes) Histogramas(Kang y otros, 2004)

Para un mayor nivel de detalle de todas las técnicas mostradas en estasección, se refiere al lector a consultar [50] y [120], entre otros.

Page 80: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Capítulo 5

Sensor óptico: modelado yproceso de calibración

Se puede considerar al sensor óptico como a uno de los elementos más im-portantes de todo el proyecto. Es por ello que se necesita de todo un capítulopara desarrollar el modelo de cámara usado, el proceso de calibración, y labase teórica que subyace en todo el proceso. Se presenta pues todo lo relacio-nado con la cámara que ha sido necesario estudiar para poder llevar a cabo laimplementación presentada en el capítulo 6.

5.1. Modelado de la cámara5.1.1. Modelo pinhole

La modelización del sistema de la cámara usada en el presente proyecto sebasa en el modelo pinhole. En este modelo, la cámara realiza una proyecciónen perspectiva de un punto espacial M a un punto m en el plano de la imagena través del centro óptico de la cámara C.

El punto espacial M con coordenadas (Xc, Yc, Zc) con referencia al sistemade coordenadas de la cámara, queda representado en el plano de la imagenpor un punto m con coordenadas (u, v), o también denominadas coordenadascentrales, con referencia al punto central de la imagen (u0, v0)(Figura 5.1),donde el punto principal de la cámara se encuentra en el eje óptico de lamisma a una distancia focal f de su centro (sensor).

61

Page 81: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.1. Modelado de la cámara 62

Figura 5.1: Modelo pinhole de la cámara.

En el modelo presentado se verifica que:

u

Xc

= v

Yc= f

Zc(5.1)

La expresión anterior se denomina transformación en perspectiva, donde seha supuesto un modelo libre de distorsión óptica. En las siguientes seccionesse presentan los tipos de distorsiones que están presentes en este modelo.

5.1.2. Parámetros extrínsecos

La superficie de los puntos de la escena se corresponde con el sistema decoordenadas, podríamos decir, del mundo real, con un origen W, y un sis-tema de ejes de la forma (Xw, Yw, Zw). Dado un punto de un objeto, P, éstequeda expresado en el sistema de coordenadas respecto a W de la forma(Pxw, Pyw, P zw).

Supongamos ahora que se establece otro sistema de referencia, por ejemplo,en el origen C, y cuyos ejes quedan etiquetados como (Xc, Yc, Zc), situadoen el centro del eje óptico de la cámara, tal y como se muestra en la Figura 5.2.

Page 82: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.1. Modelado de la cámara 63

Figura 5.2: Relación geómetrica-espacial entre el sistema de coordenadas dela cámara y el sistema de coordenadas del objeto.

Gracias a esta relación geométrica se pueden definir cuáles son los paráme-tros extrínsecos5.1 del modelo, los que determinarán la posición y orientacióndel sistema de coordenadas de la cámara respecto del sistema de coordenadasdel mundo real o del objeto5.2.

La posición del centro óptico C respecto a W se da mediante el vectorde traslación t mostrado a continuación:

t =

txtytz

(5.2)

La orientación de los ejes del sistema de la cámara respecto al sistema deejes del objeto de referencia viene dado por lo que se conoce como matriz derotación R, una matriz cuadrada de orden 3. Esta matriz puede ser obtenidaa partir del producto de matrices de las tres rotaciones simples en cada eje.

5.1También denominada como técnica de calibración externa.5.2La definición puede ser al revés, considerando el sistema de referencia de la cámara

como el origen.

Page 83: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.1. Modelado de la cámara 64

En esta situación, una rotación de φ grados alrededor del eje = se expre-sará como Rot(=, φ). Se definen éstas rotaciones como sigue:

Rot(X,φx) =

1 0 00 cosφx −senφx0 senφx −cosφx

(5.3)

Rot(Y, φy) =

cosφy 0 senφy0 1 0

−senφy 0 cosφy

(5.4)

Rot(Z, φz) =

cosφz −senφz 0senφz cosφz 0

0 0 1

(5.5)

Existen otras formas de representar la rotación respecto a cada eje porseparado, que son mostradas a continuación.

Representación RPY :

R = RPY (φxφyφz) = Rot(Z, φz) ·Rot(Y, φy) ·Rot(X,φx).

Representación de Euler :

R = Euler(φ, θ, ψ) = Rot(Z, φ) ·Rot(Y, θ) ·Rot(Z, ψ).

En esta representación, la matriz R puede quedar expresada de la si-guiente forma:

R = Euler(φ, θ, ψ) = RPY (ψ, θ, φ) =

cosφcosψ − senφcosθcosψ −cosφsenψ − senφcosθcosψ senφsenθcosφcosψ + cosφcosθsenψ −senφsenψ + cosφcosθcosψ −cosφsenθ

senθsenψ senθcosψ cosθ

(5.6)

Así pues, ambos sistemas quedan relacionados cumpliendo la siguienteexpresión: Xc

YcZc

= R

Xw

YwZw

+ t (5.7)

Page 84: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.1. Modelado de la cámara 65

Por lo que usando lo anterior, para un punto cualquiera, P, con com-ponentes (Pxw, Pyw, P zw) respecto al sistema de coordenadas W, sepuede obtener su representación respecto al sistema de coordenadas C,quedando sus componentes como (Pxc, Pyc, P zc) usando 5.7 como sigue: Pxc

PycPzc

= R

PxwPywPzw

+ t

La ecuación anterior se suele representar también como una única matrizcuadrada de dimensión 4, expresada en forma de coordenadas homoge-neas: [

Pc

1

]= cTw

[Pw

1

](5.8)

donde la matriz cTw indica la matriz respecto del sistema de coordena-das de la cámara, teniendo la forma:

T =[

R3x3 t3x101x3 1

](5.9)

5.1.3. Parámetros intrínsecos

El punto m también puede referirse con respecto al borde superior iz-quierdo de la imagen que se da en coordenadas (x, y) en píxeles, o tambiéndenominadas como coordenadas laterales, realizando la siguiente transforma-ción:

x = u0 + fxu (5.10)y = v0 + fyv (5.11)

que de forma matricial puede también escribirse como:

xy1

=

fx γ u00 fy v00 0 1

uv1

o

xy1

= K

uv1

(5.12)

Page 85: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.1. Modelado de la cámara 66

donde la matriz K 5.3 es la denominada matriz de parámetros intrínsecos,siendo ésta una matriz de 3x3 que describe tanto la geometría como la ópticade la cámara:

K =

fx 0 u00 fy v00 0 1

(5.13)

Se tiene además que fx y fy son las denominadas distancias focales5.4 enlas direcciones ~x e ~y respectivamente. Otra forma de expresar estas distanciasfocales es la siguiente:

fx = kxf (5.14)fy = kyf (5.15)

donde kx y ky son los factores de escala, que relacionan el tamaño del píxelcon la distancia real. Estos resultados son calculados experimentalmente en elcapítulo 7.

Si se asume que f = 1, las coordenadas del punto m se denominan coor-denadas normalizadas (representan coordenadas pertenecientes a un planoimagen ideal ubicado a una distancia del centro óptico igual a la unidad, yestá representado por q), a partir de la ecuación (5.1) se tiene que:

q = 1Zc

Xc

YcZc

= (u, v, 1)T (5.16)

donde el símbolo ~ representa que el punto se expresa en coordenadas pro-yectivas. Las coordenadas normalizadas se pueden conseguir a partir de las

5.3El coeficiente γ representa la pérdida de perpendicularidad entre los ejes de la imagen.Se asume cero, puesto que prácticamente no afecta para los cálculos posteriores.

5.4Se puede considerar como la distancia del sensor hasta el origen del sistema de referenciadel plano de la imagen.

Page 86: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.1. Modelado de la cámara 67

Figura 5.3: Representación de los parámetros intrínsecos de la cámara.

coordenadas en píxeles m a través de la matriz de parámetros intrínsecos Kdespejando q de la relación m = Kq .

5.1.3.1. Coeficientes de distorsión de la lente

En teoria es posible definir una lente perfecta, pero en la práctica es impo-sible. Esto es debido principalmente al proceso de fabricación de las mismas:por ejemplo, es mucho más fácil realizar una lente esférica que un modelomatemáticamente perfecto de lente parabólica.

También resulta complicado el proceso de alineación de la lente con elsensor. Por ello, se necesitan ciertos parámetros para identificar estas imper-fecciones en la lente: son los denominados parámetros de distorsión radial ydistorsión tangencial. La distorsión radial suele ser producto de la forma de lalente, mientras que la distorsión tangencial suele ser el resultado del procesode ensamblaje de la cámara durante la fabricación de la misma.

En el caso de la distorsión radial, se tiene que las lentes de cámaras realesnormalmente suelen “modificar” los píxeles cerca de los bordes de la imagen.Este fenómeno se puede observar en la Figura 5.4. ; es como si se produjeraun efecto de “doblado” en las esquinas. La distorsión radial suele ser 0 enel centro de la imagen, incrementándose en módulo a medida que nos vamosdistanciando del centro hacia los bordes.

Page 87: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.1. Modelado de la cámara 68

En la práctica, esta distorsión suele ser pequeña y puede ser caracterizadacomo los primeros términos de una serie de Taylor alrededor de r = 05.5. Estostérminos, por convención suelen denominarse k1 y k2 , y para lentes corrientes,el uso de dos parámetros es más que suficientes. Para lentes más baratas o conmayor distorsión radial es necesario usar hasta el tercer término de la serie,k3.

Figura 5.4: Ejemplo del efecto de la distorsión radial.

En general, para recuperar la posición original de un punto en una ima-gen obtenida a través de una lente con distorsión radial, se sigue la siguienteecuación:

xcorregido = x(1 + k1r2 + k2r

4 + k3r6) (5.17)

ycorregido = y(1 + k1r2 + k2r

4 + k3r6) (5.18)

En la expresión anterior, x e y indican las coordenadas de la posiciónoriginal del punto distorsionado en el plano de la imagen, y xcorregido e ycorregidoes la nueva localización del punto tras el proceso de corrección. En las figuras5.5, 5.6 y 5.7 se muestra el efecto de estos parámetros en una lente.

5.5Básicamente consiste en la expansión de la función de distorsión como un polinomio dela forma f(r) = a0 + a1r + a2r

2 + ... alrededor de un determinado factor r.

Page 88: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.1. Modelado de la cámara 69

Figura 5.5: Representación vectorial ante un valor positivo de k1.

El segundo coeficiente de distorsión es el denominado de distorsión tan-gencial. Al igual que en el caso anterior, esta distorsión también puede sercaracterizada por dos parámetros, denominados p1 y p2. Para corregir la lo-calización de un punto debido a la distorsión tangencial, se tiene que:

xcorregido = x+ [2p1y + p2(r2 + 2x2)] (5.19)ycorregido = y + [p1(r2 + 2y2) + 2p2x] (5.20)

Figura 5.6: Representación vectorial ante un valor positivode p1.

Page 89: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.1. Modelado de la cámara 70

Figura 5.7: Representación vectorial para un valor positivo de p2.

Así pues, en total existen cinco parámetros5.6 de distorsión identificables ycuantificables. El proceso de calibración consiste precisamente en la obtenciónde estos parámetros.

Figura 5.8: Distorsión tangencial. El plano de la imagen no es del todo paraleloal de la lente.

5.6En nuestro caso tan solo consideramos 4 (2 de distorsión radial y 2 de distorsión tan-gencial), pero en otras situaciones es necesario el uso del conjunto total.

Page 90: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.2. Posicionamiento 3D mediante el sistema de visión 71

5.2. Posicionamiento 3D mediante el sistemade visión

El sistema completo estará formado por la cámara del sistema acopladarígidamente a la IMU y un objeto de control apropiado para la tarea a reali-zar. Se denomina al sistema de coordenadas ligado a la cámara como C. Porotro lado, se tiene que el objeto visualizado por la cámara será una plantillaplana que se corresponde con el objeto de calibración usado para la calibracióninterna, es decir, el denominado tablero de ajedrez. El sistema ligado al mismose denomina O.

En la Figura 5.9 se muestran todos los elementos mencionados junto alsistema de coordenadas de la IMU, G , y el sistema de coordenadas inercial,W.

Figura 5.9: Sistemas de coordenadas involucrados y nomenclatura.

En general, tal y como se ha expresado en la fórmula 5.9, la posición yorientación de un sistema cualquiera B respecto a otro sistema A podríaexpresarse mediante la matriz de transformación homogénea aTb:

Page 91: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.2. Posicionamiento 3D mediante el sistema de visión 72

aTb =[

aRbatb

01x3 1

]

Si se plantea la posición y orientación de G respecto de W:

wTg =[wRg

wtg01x3 1

]

Si bien la matriz de rotación anterior es fácilmente extraíble del vector ωθg,no se podrá disponer de la matriz wTg completa, dado el desconocimiento dewtg. Ésta es la principal deficiencia que se intenta paliar con la introduccióndel sistema de visión.

Como se ha explicado en capítulos anteriores, uno de los principales moti-vos para la puesta en marcha del sistema de visión es conseguir un seguimientotridimensional de algún objeto (es una de las alternativas implementadas), yla consiguiente estimación de la posición y orientación del mismo respecto dela cámara (o de forma equivalente, la posición y orientación de la cámara res-pecto del sistema de coordenadas del objeto). A este proceso se le denominatambién como calibración externa, y en cada instante nos proporciona unaestimación de la matriz cTo (o de forma equivalente, oTc =c T−1

o ).

Por otro lado, se supone conocida la transformación existente entre lossistemas de coordenadas C y G mediante 5.9, gTc. Esta matriz se habrácalculado a partir de un proceso de calibración fuera de línea conocido comocalibración IMU-cámara. Una vez que se haya establecido esta relación, seráconstante, puesto que se establece un acoplamiento rígido mecánico entre am-bos sensores. Dada esta matriz, es posible obtener la posición y orientaciónde la IMU respecto al sistema de coordenadas del objeto:

oTg =o Tc ·g T−1c

De esta forma se tiene completamente posicionada la IMU, y en conse-cuencia el quadrotor respecto al sistema de coordenadas del objeto, O. En elcapítulo 8 se detalla con mayor profundidad la relación final entre los distintossistemas de referencia.

Page 92: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 73

5.3. Proceso de calibración5.3.1. Base teórica

En la calibración de la cámara se estiman los parámetros intrínsecos y ex-trínsecos. Su precisión es importante pues a partir de ellos se obtiene informa-ción métrica de la escena tal como dimensiones reales del objeto, profundidad,movimiento a partir de imágenes, posiciones, orientaciones, etc. También en lacalibración de la cámara se determinan las distorsiones geométricas productode las imperfecciones de la cámara (distorsiones radial y tangencial).

La calibración de la cámara es llevada a cabo al observar un objeto de cali-bración cuya geometría en el espacio 3D es conocida con muy buena precisión.Usualmente el objeto de calibración consiste en uno o varios planos (si hayvarios planos, suelen establecerse perpendiculares entre sí) en los cuales se haimpreso un determinado patrón de calibración (Figura 5.10).

Los parámetros de la cámara son recuperados a partir de la relación entrelas coordenadas tridimensionales del objeto con sus correspondientes proyec-ciones bidimensionales en la imagen, como por ejemplo en el método de trans-formación lineal directa (DLT).

En el método utilizado en el presente proyecto se utiliza simplemente unúnico plano con un patrón de calibración impreso, denominado afectuosamen-te como tablero de ajedrez, y usando un método basado en el algoritmo deZhang, en el cual los parámetros de la cámara son obtenidos a partir de latransformación 2D entre el plano del patrón y el plano de la imagen.

Figura 5.10: Objetos de calibración planar y cúbico.

Page 93: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 74

Figura 5.11: Detalle de una de las capturas del objeto para la calibración.

Este tipo de objetos son muy buenos para procesos de calibración por va-rios motivos: se conoce perfectamente el modelo del objeto, y además el puntocaracterístico se encuentra con una precisión bastante buena, porque es unpunto en el que el cambio de la intensidad del color es máximo.

Existen también métodos de autocalibración, en los cuales no se utiliza nin-gún objeto de calibración; éstos se basan en un conjunto de imágenes tomadaspor la cámara en diferentes posiciones y orientaciones sobre una escena estáti-ca. En estos casos, la rigidez de la escena genera un conjunto de restriccionessobre los parámetros intrínsecos de la cámara que son recuperados a partir devarias imágenes.

En la literatura se presentan diversas propuestas tanto para alternativasdonde no es necesario una calibración propia de la cámara como aquellas don-de sí lo es, como por ejemplo, métodos basados en propiedades de los puntosde fuga, entre otros, que no se detallan por no ser uno de los objetivos delpresente proyecto.

A continuación se describe el método de Zhang, base teórica del métodousado para la calibración de la cámara. Se eligió este método por la flexibilidaden su aplicación pues no necesita del conocimiento de la posición y orientacióndel patrón en el espacio de trabajo. La calibración en este método parte detomar la imagen del patrón ubicado en diferentes posiciones y orientacionesde tal manera que abarque el mayor conjunto posible de alternativas, paraasegurar una gran riqueza en la información visual del patrón.

Page 94: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 75

Además de este método existen otras aproximaciones, en función del ca-rácter del sistema de ecuaciones que se planteen: bien puede ser un sistemalineal (como es este caso) o no lineal. Dado que no es objetivo de esta memoriadiscernir entre estos dos métodos, se refiere al lector a consultar [13],[19],[15]y [23] para más información.

5.3.1.1. Método de Zhang

Si se considera 5.8, la relación entre un punto tridimensional P = [Xw Yw Zw1]en el sistema de coordenadas del mundo, y su proyección en la imagen p =(x, y, 1)T puede ser escrita como:

λp = K[R t] P

donde λ es un factor de escala, R y t son los parámetros extrínsecos y K esla matriz de parámetros intrinsecos de la cámara. Si se asume que el patrónde calibración “descansa” en la coordenada Zw = 0 en el sistema del mundo,la anterior expresión puede ser escrita como:

λ

xy1

= K [ r1 r2 r3 t ]

Xw

Yw01

= K[ r1 r2 t]

Xw

Yw1

(5.21)

donde se ha representado a la matriz de rotación por medio de sus columnasri. Como todos los puntos del patrón de calibración “descansan” sobre elmismo plano, se puede asumir que P = [XwYw1] el cual está relacionado conel punto p en la imagen a través de una homografia H (ver sección 8.2.1.1):

λm = HM (5.22)

Comparando las dos expresiones anteriores y expresando la homografia enbase a sus columnas se tiene que :

H = [h1 h2 h3] = K[r1 r2 t] (5.23)

Por las propiedades de la matriz de rotación R, sus dos primeras columnascumplen con la condición de ortonormalidad:

Page 95: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 76

rT1 r1 = rT2 r2

rT1 r2 = 0 (5.24)

Considerando 5.23 se puede volver a escribir la ecuación anterior como:

hT1 K−TK−1h1 = hT2 K−TK−1h2

hT1 K−TK−1h2 = 0 (5.25)

A partir de estas dos restricciones, se encuentran los elementos de la matrizK . Para hallarlos se propone una solución analítica seguida de una optimiza-ción no lineal.

Si la matriz K−TK−1 se expresa de la forma:

K−TK−1 = B =

B11 B12 B13B21 B22 B23B31 B32 B33

(5.26)

donde B es una matriz simétrica (u0 y v0 son los coordenadas del puntoprincipal de la imagen ), y equivale a:

B =

1f2x

−γf2xfy

γv0−fyu0f2xfy

−γf2xfy

γ2

f2xf

2y

+ 1f2y

−γ(γv0−fyu0)f2xf

2y

− v0f2y

γv0−fyu0f2xf

2y

−γ(γv0−fyu0)f2xf

2y

− v0f2y

(γv0−fyu0)2

f2xf

2y

+ v20f2y

+ 1

(5.27)

puede ser fácilmente representable como un vector de seis elementos

b = [B11B12B22B13B23B33]T

Sea hi = [hi1 hi2 hi3]T la i-ésima columna de la matriz de homografía H;entonces se verifica que:

hTi Bhj = vTijb (5.28)

donde vij = [hi1hj1, hi1hj2+hi2hj1, hi2hi2, hi3hj1+hi1hj3, hi3hj2+hi2hj3, hi3hj3]T .

Por lo tanto las restricciones planteadas en 5.25 pueden ser re-escritas comouna ecuación homogénea en b de la forma:

Page 96: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 77

[vT12

(v11 − v12)T]b = 0 (5.29)

donde se tendrán tantas ecuaciones como imágenes del plano se tengan;las cuales se pueden apilar para formar un sistema de la forma:

Vb = 0 (5.30)

donde V es una matriz de 2n × 6, siendo n el número de imágenes, y almenos debe cumplirse que n ≥ 3 para obtener una solución única para b . Sesabe que la solución a un sistema como el anterior es el vector propio de VTVasociado a su valor propio más pequeño.

Una vez que se consigue estimar b , se obtienen a partir de éste todos losparámetros intrínsecos:

v0 = (B12B13 −B11B23)/(B11B22 −B212)

λ′ = B33 − [B213 + v0(B12B13 −B11B23)]/B11

fx =√λ′/B11

fy =√λ′B11/(B11B22 −B2

12) (5.31)γ = −B12 f

2xfy/λ

u0 = γv0/[fy − (B13f2x/λ

′)]

Tras obtener una estimación de la matriz K, los parámetros extrínsecos secalculan a partir de la expresión 5.23 por:

r1 = λK−1h1

r2 = λK−1h2 (5.32)r3 = λK−1h3

donde λ = 1/ ‖ K−1h1 ‖= 1/ ‖ K−1h2 ‖ .

Una vez obtenidos estos datos, sirven como datos iniciales para una etapade refinamiento a través de técnicas iterativas, donde además se estiman lasdistorsiones radial y tangencial.

Page 97: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 78

5.3.2. Proceso de calibración en la práctica

Durante el desarrollo del proyecto, dado que hasta el momento todo lo quese había implementado había sido usando la libreria OpenCV en su versión2.0, se propuso en una primera aproximación usar las funciones para calibra-ción propias de esta librería.

Sin embargo, tras los primeros resultados en los que la reconstrucción par-cial de los puntos de la imagen no se correspondían con los puntos realestridimensionales, y los parámetros intrínsecos contenían algunos errores, seoptó por una calibración externa, fuera de línea, basada en el mismo algorit-mo que el expuesto en la sección anterior, pero usando para ello la plataformade Matlab.

Se usó un toolbox de calibración para Matlab, cuya documentación necesa-ria se encuentra en [14]. Tras realizar unas primeras pruebas con este métodose concluyó que era el ideal para realizar el proceso de calibración final sobrela cámara. Para una visión global, en primer lugar se detallan los pasos pa-ra la calibración que se siguieron usando [120] y posteriormente se detalla elproceso de calibración usando el toolbox de Matlab.

5.3.2.1. Calibración con OpenCV

Tal y como se ha expuesto en las secciones anteriores, para el proceso decalibración es necesario disponer de un objeto con un patrón determinado yrealizar múltiples vistas del mismo. El número de imágenes influye en la pre-cisión de los parámetros a estimar, por lo que se intenta que sea un númerorelativamente grande (entre 10 y 15) con vistas relativamente distintas delobjeto de calibración.

En este caso, se disponía de una plantilla estilo tablero de ajedrez, cuyageometría era conocida (ancho y alto de cada cuadrado de 22.3 mm) y cuyo pa-trón de puntos era también conocido; esto es, se definía una matriz con tantascolumnas como corners5.7 tuviera a lo ancho y tantas filas como corners tuvie-ra a lo alto. En la Figura 5.12 se puede ver con detalle un corner en el tablero.

5.7También denominado como punto característico.

Page 98: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 79

Figura 5.12: Detalle de corners en el objeto de calibración.

Para extraer las coordenadas de los puntos del objeto en el plano de laimagen se utilizaba la función cvFindChessboardCorners(). Esta función reci-bía como parámetros la imagen captada por la cámara, el ancho y alto delobjeto patrón, y unas máscaras de comportamiento.

Los resultados devueltos por esta función eran, ordenados por filas y colum-nas, las coordenadas de los corners en el plano de la imagen. Posteriormentese aplicaba una función para obtener una mejor precisión en las coordenadasextraídas, cvFindCornerSubPix().Una vez que se tenían suficientes puntos delmismo objeto visto desde varios puntos de vista (Figura 5.13), el siguientepaso consistía en calcular los parámetros intrínsecos de la cámara.

Figura 5.13: Imágenes del tablero de ajedrez vistas desde varios puntos dis-tintos.

Page 99: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 80

Para ello, se usaba la función cvCalibrateCamera2(), la cual realizaba lacorrespondencia de los puntos bidimensionales a los tridimensionales, obte-niendo como resultado la matriz de parámetros intrínsecos, K, y los paráme-tros correspondientes a las distorsiones radial y tangencial, como un vector de5 posiciones: k1, k2, p1, p2 y k3.

Calculados los parámetros intrínsecos, el siguiente paso era calcular la posi-ble reconstrucción 3D a partir de una imagen de partida (Figura 5.14), usandopara ello la función cvFindExtrinsicCameraParams2().

Figura 5.14: Reconstrucción 3D teórica.

Extraídos la matriz R y el vector t como resultados devueltos de la ante-rior función, la idea era que dada la imagen del objeto, estática, y desplazandoel sistema de coordenadas de la cámara, fuera posible una reconstrucción par-cial a partir de la fórmula 5.8, usando para ello la función cvProjectPoints2(),obteniendo un resultado como el mostrado en la Figura 5.15.

Page 100: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 81

Figura 5.15: Reconstrucción 3D real.

Dado que los resultados eran difíciles de interpretar y no se correspondíancon errores identificables en los parámetros, se concluyó que el proceso de ca-libración se había realizado con errores, por lo que se optó por usar un métodomás robusto, y con cierta popularidad, como el usado en [14], y explicado acontinuación.

Page 101: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 82

5.3.2.2. Calibración con el toolbox de Matlab

La cámara sobre la cual se ha realizado el proceso de calibración es unacámara monocromo de resolución (HxV ) 752x480 pixels, con sensor CMOSde 1/3” (pixel cuadrado de 6µm de ancho y alto), en concreto el modelo uEyeUI-1220-M de IDS, a la que se le ha acoplado una óptica fija estándar COS-MICAR/PENTAX de 12mm de distancia focal nominal.

En la Figura 5.16, se muestra en detalle la cámara con una indicación dela ubicación estimada del origen de su sistema de coordenadas, así como laplantilla empleada para la calibración, también con su sistema de coordenadasasociado.

Figura 5.16: Cámara y plantilla de calibración con los correspondientes siste-mas de coordenadas.

Para realizar el proceso de calibración con este toolbox, se siguieron lasinstrucciones dadas en el primer ejemplo de [14]. Los pasos a seguir paraconseguir una buena calibración de la cámara son los siguientes:

Paso 1:Iniciamos Matlab y tecleamos el comando calib_gui. Aparecerá un diá-logo en el cual podremos establecer si queremos “cargar” todas las imá-genes a la vez, o si de lo contrario, estimamos mejor una por una. Ennuestro caso se eligió la segunda opción:

Page 102: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 83

Paso 2:Cargamos el conjunto de imágenes que hayamos estimado necesariaspara la calibración (en este caso, el total de imágenes son 17):

Paso 3 :En este paso se extraen bien de forma manual o automática los cornersde las diferentes imágenes consideradas. Además, para cada imagen (sepuede evitar modificando un archivo de configuración) es necesario in-troducir:

- Tamaño de la ventana de búsqueda del corner: por defecto suele ser unaventana de 11x11 píxeles alrededor de cada punto (propio píxel 1x1,yventana de 5 alrededor, implica que por cada componente: 5+1+5 = 11píxeles).

- Tamaño en cm. del alto y ancho de cada cuadrado del tablero.

Una vez que se han introducido los parámetros anteriores, se opta poruna localización automática de los puntos, pero previamente definiendolas 4 esquinas del tablero. En este aspecto, es muy importante resaltarque el orden en el que se seleccionen los 4 puntos afecta a la posterior

Page 103: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 84

representación del sistema de coordenadas del objeto, por lo que ayu-dándonos de una pequeña marca en el tablero, se puede definir siempreel orden de los 4 puntos en sentido horario a partir del punto consideradocomo origen del sistema de referencia. Este hecho se puede observar enla Figura 5.17.

Figura 5.17: Localización automática de los puntos y origen del sistema dereferencia del objeto.

En algunas situaciones, la localización automática de los puntos no de-vuelve las coordenadas precisas de algunos corners. Es en este puntodonde se identifican los parámetros de distorsión de la lente. La ideaes sencilla: se traza una recta entre los puntos de los extremos de cadaesquina, y se espera que los puntos intermedios caigan en dicha recta.Por lo que si hay algunos puntos que no pertenecen a dicha recta, habráque curvar a ésta ligeramente para que los puntos caigan en la misma.Es el efecto visto en la Figura 5.4.

A continuación se muestra cómo antes de la modificación del parámetrokc algunos puntos están lejos de la recta de intersección; y tras modifi-car este parámetro a un valor entorno a -0.5 de media para todas lasimágenes, el resultado es más satisfactorio.

Page 104: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 85

Figura 5.18: Situación de los puntos antes de realizar la corrección manual.

Figura 5.19: Situación de los puntos después de realizar la corrección manual.

Page 105: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 86

Estas correcciones se realizaron para todas y cada una de la imágenes.Después de realizar un proceso de optimización, los resultados inicialesson los mostrados en la siguiente tabla:

Parámetro ValorDistancia Focal [ 2043.22731 2044.63891 ] ± [ 2.60624 2.53574 ]Punto Principal [ 354.84891 240.45905 ] ± [ 5.42588 3.96191 ]

γ alpha_c = [ 0.00000 ] ± [ 0.00000 ]Distorsión [ -0.36695 0.93446 0.00009 -0.00052 0.00000 ] ±

(k1, k2, p1, p2, k3) [ 0.02283 0.91265 0.00038 0.00025 0.00000 ]Píxel Error [ 0.09024 0.09061 ]

Paso 4 :Tras la obtención de los resultados anteriores, a continuación es posiblecalcular los parámetros extrínsecos respecto a las distintas imágenes deentrada, y calcular la reproyección de los puntos (Figura 5.20) y el errorasociado.

El cálculo de la reproyección del error (esto es, la diferencia de posiciónentre el punto en la imagen real y el punto en la imagen estimado, Fi-gura 5.21) es muy útil para determinar si se ha realizado correctamenteel proceso de calibración. Si el error es del orden de décimas de píxel(Figura 5.22), entonces se ha realizado la calibración con éxito.

Figura 5.20: Reproyección del conjunto de puntos sobre los puntos reales dela imagen.

Page 106: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 87

Figura 5.21: Detalle de la diferencia entre punto de la imagen real (rojo) ypunto reproyectado (azul).

Si de lo contrario, la media del error varia hasta varias unidades de píxel,es necesario o bien realizar todo el proceso de calibración de nuevo obien recalcular tan solo los puntos en aquella imagen que haya dadoproblemas.

Figura 5.22: Reproyección media del error.

Page 107: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 88

En las Figuras 5.23 y 5.24 se muestra una representación del conjuntode imágenes tomadas del tablero, respecto del origen de coordenadas delmundo (cámara).

Figura 5.23: Representación 3D de los parámetros extrínsecos (1).

Figura 5.24: Representación 3D de los parámetros extrínsecos (2).

Page 108: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 89

Paso 5 :Si se han realizado modificaciones en la posición inicial de puntos enla imagen, sería necesario volver al paso 3 y recalcular de nuevo todoslos parámetros intrínsecos de la cámara. En el presente proceso de ca-libración, para afinar al máximo la calidad de estos parámetros, dichoproceso se tuvo que realizar varias veces.

Finalmente, los resultados obtenidos y verificados con Matlab tras elproceso de calibración para la cámara indicada al comienzo de la sec-ción , son los siguientes:

Parámetro Estimación (px) Comentariosfx 2043.2402 Sabiendo que la anchura efectiva del pixel es

de 6µm, esto es equivalente a 12.259442mm.fy 2044.6518 Sabiendo que la altura efectiva del pixel es

de 6µm, esto es equivalente a 12.267911mm.cx 354.8575 Coordenada x del punto principal en la imagen.cy 240.4531 Coordenada y del punto principal en la imagen.p1 −0.3668p2 0.9305 Coeficientes de distorsión radial de la lente.p3 0.00008t1 −0.0005 Coeficientes de distorsión tangencial de la lente.t2 0.0000

Page 109: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

5.3. Proceso de calibración 90

Page 110: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Capítulo 6

Implementación de mecanismospara la extracción deinformación visual

En el presente capítulo se presentan el conjunto de propuestas implemen-tadas para la extracción de la información visual necesaria para cerrar el lazode control visual del quadrotor. Se proponen también posibles mejoras y al-ternativas al control visual. Según lo presentado en el capítulo 4, en funciónde cómo se considerase al objeto de interés, tridimensional o plano, se podíanaplicar diferentes métodos para la detección y seguimiento.

En la primera propuesta se considera al objeto en todas sus dimensiones,conociendo además perfectamente su geometría. Sin embargo, para la segun-da alternativa se ha considerado al objeto de referencia (se continúa haciendopruebas con el tablero de ajedrez) plano, sin ninguna información sobre sugeometría.

Al final del capítulo se exponen posibles alternativas y ampliaciones paraesta tarea. Se presenta además la primera técnica que se desarrolló, el segui-miento basado en plantillas, o template matching. Éste método fue rápida-mente descartado debido a los problemas que son expuestos en esta sección.El código correspondiente a todas las propuestas se puede consultar en elApéndice A, si bien alguna de las funciones utilizadas son detalladas en estecapítulo.

91

Page 111: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 92

6.1. Objeto de referencia tridimensional

La información visual que se extrae con el conjunto de propuestas im-plementadas en este capítulo sirve para obtener los parámetros de rotación ytraslación, de manera que fusionándolos con los datos provenientes de la IMU,se cierra el lazo de control en la técnica denominada control visual basado enposición (PBVS - Position Based Visual Servo), en la que es necesario conocertanto la geometría de la cámara como la del objeto. En esta propuesta se tra-ta de localizar al objeto de referencia con la cámara, estimar los parámetrosextrínsecos (esto es, rotación y traslación del objeto respecto del sistema decoordenadas de la cámara) y realizar un seguimiento de las características delobjeto en una secuencia de imágenes.

El resultado final, presentado en la Figura 5.15, desde el punto de vista delautor, es bastante interesante. Principalmente por varios motivos: el quizásmás llamativo pudiera ser el que, si se considerara otro objeto de interés, porejemplo, una figura de dinosaurio, y se definiera al completo toda su geome-tría, una de las aplicaciones directas de este tipo de técnicas es la de la realidadaumentada o, incluso, realidad virtual.

La realidad aumentada es el término que se usa para definir una visióndirecta o indirecta de un entorno físico del mundo real, cuyos elementos secombinan con elementos virtuales para la creación de una realidad mixta atiempo real. Consiste en un conjunto de dispositivos que añaden informaciónvirtual a la información física ya existente. Esta es la principal diferencia conla realidad virtual, puesto que no sustituye la realidad física, sino que sobre-imprime los datos calculados al mundo real.

La razón principal por la cual se escogió el tablero de ajedrez como objetode interés es obvia; aparte de porque había sido el objeto para la realizaciónde la calibración interna de la cámara, es porque su geometría (puntos porfilas y por columnas) es sencilla de implementar.

Se podría haber considerado otro objeto, como por ejemplo, el dinosauriode la imagen; pero la definición de su geometría hubiera sido relativamentemás compleja. Una vez que se hayan calculado la rotación y traslación delobjeto respecto de la cámara (o viceversa) en cada escena, estos parámetrosserán introducidos al controlador para conseguir, con un control robusto, queel quadrotor sea capaz de seguir al objeto de referencia.

Page 112: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 93

Figura 6.1: Ejemplo de realidad aumentada.

Así pues, se supone que se dispone de los siguientes elementos en el labo-ratorio:

Cámara: Cámara calibrada, o al menos se dispone de los parámetrosintrínsecos obtenidos con el proceso de calibración interna, visto en elcapítulo 5. Correctamente conectada al ordenador, y transmitiendo enmodo contínuo6.1.

Objeto de interés: Se dispone de la plantilla del tablero de ajedrez, co-nociendo perfectamente su geometría (midiendo el alto y ancho de suscuadrados con un calibre como el de la Figura 6.2, por ejemplo).

El algoritmo básico que resume los pasos a seguir para lograr el objetivo es elexpuesto en Algoritmo 6.1.

6.1Más adelante se presentan los problemas relativos a este modo de captura.

Page 113: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 94

Algorithm 6.1 Algoritmo general para la extracción de información visualpara el esquema de control PBVS.

Inicio ControlPBVS_Propuesta_I

ReservaEstructurasMemoria(...)InicializacionCamara(camara)[MatrizIntrinseca,ParametrosDistorsion]:=

CalibracionInterna(camara)PuntosObjeto :=

DefiniciónGeometriaObjeto(tablero_ajedrez)mientras (cierto):

imagen := CapturaImagen(camara)PuntosImagen := LocalizarObjetoControl(imagen)

[Rotacion,traslacion]:=CalculaCalibracionExterna(PuntosImagen,PuntosObjeto)

imagenColor :=ProyectaPuntos(PuntosObjeto,

Rotacion,traslacion,MatrizIntrinseca,ParametrosDistorsion,..)

fin mientrasLiberaRecursosMemoria(..)LiberaCamara(camara)

Fin Algoritmo

Figura 6.2: Herramienta de precisión necesaria para determinar la geometríadel objeto de interés.

Page 114: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 95

6.1.1. Representación, localización y seguimiento delobjeto de referencia

Era relativamente sencillo localizar los puntos característicos o cornersde un tablero de ajedrez después de consultar la documentación de OpenCV[120],[33] y [67]. Dado que la función cvFindChessboardCorners() fue utilizadaen una implementación anterior para el proceso de calibración interna de lacámara, fue fácil adaptarla al nuevo código para la obtención de las coorde-nadas de los puntos característicos en el plano de la imagen. Además, dichoscorners de la parrilla interior de puntos del tablero de ajedrez presentan unaspropiedades muy buenas para la localización y seguimiento, no tanto comopudiera tener otro objeto de interés.

Figura 6.3: Ejemplo de localización de corners por intersección de rectas.

Existen muchas propuestas para la localización de dichos puntos: detectorde corners de Harris; intersección entre rectas interiores al tablero usando al-goritmos de detección de bordes, como Canny, etc. Incluso existen propuestas,como la mostrada en [67], en las que se muestran situaciones donde el tablerose deforma y algoritmos como los anteriores fracasarían en la localización delos puntos.

No existe en la literatura ninguna referencia a cómo se ha implementado

Page 115: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 96

la función cvFindChessboardCorners(), pero se puede suponer que bien podríahaber sido implementada siguiendo una combinación de las propuestas ante-riores. Eso sí, cabe resaltar que esta función no es útil en situaciones en lasque el tablero se deforme considerablemente.

En cada toma, para la localización de los puntos interiores al tablero, seusa la función de OpenCV cvFindChessboardCorners(), cuyo prototipo es elsiguiente:

int cvFindChessboardCorners(

const void* image,CvSize pattern_size,CvPoint2D32f* corners,int* corner_count = NULL,flags = CV_CALIB_CB_ADAPTIVE_THRESH );

Descripción de los parámetros:

image :Imagen de entrada capturada por la cámara, donde se supone que estápresente el tablero. Es necesario que la imagen esté en formato de 8 bitsmonocromo.

pattern_size :Estructura para la definición de tamaño en OpenCV. Se indican el nú-mero de filas y columnas, especificados por el número de corners internosa lo ancho y número de corners internos a lo alto del tablero.

corners :Estructura tipo array de OpenCV en la que se almacenan las coordena-das (del plano de la imagen) correspondientes a los puntos extraídos deltablero.

corner_count :Puntero a entero, en el cual se indica el número de corners del tableroencontrados.

Máscaras de comportamiento :

CV_CALIB_CB_ADAPTIVE_THRESH: Se usará un umbral adap-tativo para el contraste en la imagen para la localización de loscorners.

Page 116: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 97

CV_CALIB_CB_FILTER_QUADS: Conjunto de restricciones sonaplicadas para rechazar posibles falsos corners.

Una limitación que presenta esta función es que si el tablero completo no estácontenido dentro de la escena, y no se detecta, por ejemplo, una fila o colum-na, no devuelve el conjunto de puntos de la parte del tablero visible, dado queno cumple con los parámetros de entrada indicados.

En la propuesta indicada en la sección 6.2, se implementa un método dis-tinto el cual sí devuelve los puntos del objeto en la escena, incluso aún cuandoaquel esté parcialmente fuera de la misma.

Una vez que se han extraído de la imagen las coordenadas donde se suponeque están presentes los puntos característicos internos del tablero, el siguientepaso es aplicar un proceso de refinamiento sobre el conjunto de coordenadas,para precisar aún más la localización de los puntos característicos o cornersobtenidas en el primer paso.

Esta tarea se realiza con la función cvFindCornerSubPix():

void cvFindCornerSubPix(

const CvArr* image,CvPoint2D32f* corners,int count,CvSize win,CvSize zero_zone,CvTermCriteria criteria );

Descripción de los parámetros:

image,corners y count :Igual que en el caso anterior, salvo que se supone que en image estánpresentes los corners pasados como argumento de entrada.

win :Estructura en OpenCV para especificar el tamaño de la ventana de bús-queda del punto característico, en píxeles. En el presente trabajo, seconsidera una ventana de 5x5 de radio desde la posición del punto. Conlo que sumando el tamaño del píxel en horizontal y vertical queda unaventana de CvSize(11,11) (ventana de tamaño 11x11).

Page 117: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 98

Figura 6.4: Precisión en la localización de los corners, basado en el gradientedel punto en la imagen.

zero_zone :Parámetro opcional de la función. Establecido al valor CvSize(-1,-1). Norelevante para el caso actual.

criteria :Se establecen el número de iteraciones máximo en el proceso de búsque-da. En nuestro caso:cvTermCriteria(CV_TERMCRI_TPS | CV_TERMCRIT_IER, 30, 0,1).El algoritmo iterará un número máximo de iteraciones que se estableceen 30 ó cuando se haya alcanzado una precisión del 10%.

Tras guardar las coordenadas de los puntos en estructuras de memoria in-termedias, y obtenidas las coordenadas precisas de la localización de los puntosdel tablero, queda realizar la representación de la geometría del objeto, defi-niendo los puntos del objeto, y calcular los parámetros extrínsecos del sistema.

Esto es, realizar el cálculo de la rotación y traslación de los puntos delobjeto respecto del sistema de coordenadas de la cámara, asumiendo que tantola cámara como el objeto pueden desplazarse en cualquier momento. El objetose ha definido como una malla de puntos, ordenados por filas y columnas, cuyadistancia de separación es exactamente 22.30 mm (Algoritmo 6.2).

La tercera coordenada se establece a 0, puesto que se supone que el objetodescansa sobre el plano que contiene al sistema de referencia propio. Cabe

Page 118: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 99

Algorithm 6.2 Representación virtual del objeto.// Bucle externo a lo largo del eje Xdesde i = 0 hasta i < numCornersEjeX

paso: i++// Bucle interno a lo largo del eje YnumCorner = i*numCornersEjeY;

desde j = 0 hasta j < numCornersEjeY:paso: j++, numCorner++

Objeto.PuntosObjeto[numCorner, 0] = i*tamCuadradoMm;Objeto.PuntosObjeto[numCorner, 1] = j*tamCuadradoMm;Objeto.PuntosObjeto[numCorner, 2] = 0.0f;

destacar que la función de extracción de puntos de la imagen devuelve lospuntos primero por filas, y después por columnas; este es el motivo por el cualse haya definido del mismo modo para los puntos del objeto.

Un último detalle es indicar qué se considera eje X y eje Y respecto delsistema de coordenadas del objeto. En la siguiente imagen se representan lostres ejes de coordenadas, considerando el origen del sistema la esquina superiorizquierda del tablero, opuesta a la “marquita” de posición (se puede apreciaren la Figura 6.5 parte inferior derecha un punto negro).

Figura 6.5: Representación de los ejes del sistema de coordenadas del objeto.

Page 119: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 100

6.1.2. Cálculo de los parámetros extrínsecos

En OpenCV existe una función que permite calcular los parámetros in-trínsecos y extrínsecos al mismo tiempo: cvCalibrateCamera2(). Ésta fue laprimera opción que se propuso para el cálculo de la matriz de rotación y elvector de traslación. Sin embargo, durante los experimentos se comprobó queel tiempo consumido por esta función era excesivo, con lo que se propuso unasegunda alternativa, la cual dió resultados bastante buenos. Esta función es ladenominada cvFindExtrinsicCameraParam2(), la cual se detalla a continua-ción:

void cvFindExtrinsicCameraParams2(

const CvMat* object_points,const CvMat* image_points,const CvMat* intrinsic_matrix,const CvMat* distortion_coeffs,CvMat* rotation_vector,CvMat* translation_vector );

La descripción de los parámetros es la siguiente:

object_points :Representación virtual de la geometría del objeto. Presentada en el Algo-ritmo 6.2. Coordenadas tridimensionales respecto al sistema del objeto.

image_points :Coordenadas bidimensionales respecto al plano de la imagen de los pun-tos extraídos con la función cvFindChessboardCorners().

intrinsic_matrix :Función de parámetros intrínsecos de la cámara K .

distortion_coeffs :Vector de coeficientes de distorsión radial y tangencial. Expresado dela forma: k1,k2,p1,p2 y k3(donde kiindican coeficientes de distorsiónradial y picoeficientes de distorsión tangencial).

rotation_vector :Vector de rotación, en el que se devuelve, por cada eje, el vector unitarioasociado y el ángulo de giro sobre el mismo. Para obtener la matrizde orden 3 necesaria para la aplicación, se puede usar la función de

Page 120: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 101

OpenCV cvRodrigues2(), aunque en el presente caso se ha hecho uso deuna función definida en el archivo matrix.hpp (veáse Apéndice A paramás detalles). Esta función se basa en la siguiente relación:

θ ← norm(r)r ← r/θ

R = cosθI − (1− cosθ)rrT + sinθ

0 −rz ryrz 0 −rx−ry rx 0

donde la matriz R es de orden 3 y el vector r es un vector de 1 fila y 3columnas.

translation_vector :Vector de traslación del sistema. Los valores devueltos están expresadosen mm.

6.1.3. Proyección tridimensional

El siguiente paso es en el se puede verificar con total seguridad:

Si la calibración interna de la cámara se ha realizado correctamente.

Si se ha definido correctamente al objeto tridimensional.

Si se ha realizado correctamente la extracción de los parámetros extrín-secos del sistema.

Si alguna de las tres etapas anteriores se ha superado con algún tipo de error,la reproyección de la estimación de los puntos del objeto no será adecuada, ypor lo tanto, la reconstrucción 3D del mismo contendrá errores. Esto es, dadauna localización en el espacio tridimensional respecto del sistema de coorde-nadas de la cámara, es posible reconstruir de forma unívoca donde deberíaaparecer en el plano de la imagen en coordenadas expresadas en píxeles, elpunto externo tridimensional.

Esta transformación se realiza usando la función de OpenCV denominadacvProjectPoints2(), descrita a continuación:

Page 121: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 102

void cvProjectPoints2(

const CvMat* object_points,const CvMat* rotation_vector,const CvMat* translation_vector,const CvMat* intrinsic_matrix,const CvMat* distortion_coeffs,CvMat* image_points,..);

object_points :Representación virtual de la geometría del objeto. Presentada en el Algo-ritmo 6.2. Coordenadas tridimensionales respecto al sistema del objeto.

rotation_vector :Vector de rotación, representado como rotación respecto a cada eje.

translation_vector :Vector de traslación del sistema. Los valores devueltos están expresadosen mm.

intrinsic_matrix :Función de parámetros intrínsecos de la cámara, K. Junto con los coefi-cientes de distorsión, es usada para corregir geométricamente la imagen.

distortion_coeffs :Vector de coeficientes de distorsión. Expresado de la forma: k1,k2,p1,p2y k3(donde kiindican coeficientes de distorsión radial y picoeficientes dedistorsión tangencial).

image_points :Parámetro de salida; contendrá las coordenadas tridimensionales de lalocalización del objeto, respecto del sistema de coordenadas de la ima-gen. Posteriormente será usado para dibujar los puntos reproyectados.

Tras la ejecución de la anterior función, era posible dibujar la reproyección delos puntos calculados sobre el tablero, consiguiéndose una precisión bastantebuena. Pero el último paso consistía en dibujar el eje Z sobre el tablero. Sepuede calcular fácilmente aplicando la fórmula (indicada en 5.1):

u

Xc

= v

Yc= f

Zc

Page 122: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 103

Figura 6.6: Reconstrucción 3D del objeto de interés.

la cual indica que para conseguir la reconstrucción parcial completa es ne-cesario dividir esa pequeña cantidad por la reproyección del eje Z.

Una vez subsanado el defecto, los resultados obtenidos se pueden observaren la Figura 6.6, donde se observa una “reproyección del objeto tridimensio-nal” del objeto de interés a partir de los parámetros extrínsecos del sistema.

Page 123: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 104

6.1.4. Comprobación de resultados

El paso complementario para garantizar que los resultados devueltos derotación y traslación eran buenos era realizar un conjunto de pruebas, en lasque en cada momento se comprobaba cada componente por separado de am-bos vectores. Así, en el laboratorio se dispuso de una plantilla, instalada sobrela superficie de una mesa larga (de al menos 1.70 m), sobre la cual se habíanpintado marcas separadas a intervalos de 10 cm en sentido longitudinal e in-tervalos de 1cm en sentido transversal.

Cabe resaltar que, durante el experimento, la cámara se había fijado a unaestructura la cual facilitaba enormente la tarea de garantizar que solamen-te se desplazaba en la dirección que en ese momento se estaba midiendo. Acontinuación se exponen tanto imágenes de la plantilla con la que se realizóel conjunto de pruebas como las condiciones de cada prueba individual, y losresultados experimentales obtenidos.

Figura 6.7: Plantilla para experimentos en el laboratorio.

Page 124: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 105

Figura 6.9: Alineación de la cámara con la plantilla de referencia.

Figura 6.8: Detalle de las marcas de medición en la plantilla.

Page 125: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 106

Con la implementación de esta primera propuesta, el lazo de control re-alimentado con información visual tiene una velocidad de 10 fps, estimadaa partir de los experimentos en el laboratorio. Un último comentario acer-ca de esta primera implementación (Apéndice A, clase CSensorCamara.hpp)es que permite que el origen de la imagen sobre la que se extrae la informa-ción bien pueda ser del flujo de la cámara, o de un archivo local en la máquina.

6.1.4.1. Experimentos

Cálculo de la profundidad :En este experimento se establecía una posición fija para la cámara, y sedesplazaba el tablero o objeto de interés sobre la plantilla una distanciadeterminada. Se realizaron varias combinaciones variando la profundi-dad. Un ejemplo de las imágenes consideradas son las mostradas en laFigura 6.10.

Figura 6.10: Situación inicial tablero (Izq). Situación final (Dcha).

El objetivo de este experimento era, sabiendo lo que se había desplazadoel tablero en profundidad, ver qué resultados se obtenían tras extraerrotación y traslación por separado de cada una de las imágenes. Losresultados obtenidos son los siguientes:

Imagen 1. Distancia: 150 cm.

Rotacion Obtenida: 2.226382 2.206937 0.003168Traslación Obtenida: -152.037033 -96.652985 1475.505737

Page 126: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 107

Imagen 2. Distancia: 120 cm.

Rotacion Obtenida: 2.226527 2.208627 -0.001606Traslación Obtenida: -150.829361-100.066978 1174.485474

Desplazamiento estimado: 1475 − 1174 = 301mm. Resultado con unaprecisión bastante buena, si consideramos que el desplazamiento físicorealizado ideal, y de unos 30 cm.

En este caso, se observa que, aunque se haya establecido el tablero a 150cm del centro del sistema de la cámara, la distancia calculada en Z (pro-fundidad) es de 147,5mm. Esto es debido a que en primeras estimacionesse consideró que el origen del sistema de la cámara estaba en un puntodel juego de lentes; pero tras comprobar que asumiendo esta posición ladistancia en Z no era correcta, se recalculó usando para ello las técnicasmostradas en el capítulo anterior, y se obtuvo un nuevo punto para elcentro de este sistema, mostrado en la Figura 6.11.

Figura 6.11: Centro real estimado del sistema de coordenadas de la cámara.

Page 127: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 108

Cálculo del desplazamiento Eje X :De nuevo se establece la posición de la cámara fija, y se desplaza eltablero sobre la plantilla una distancia determinada, pero esta vez ensentido transversal de la plantilla, lo que se correspondería con eje Y delsistema de coordenadas del tablero (eje X respecto del sistema de coor-denadas de la cámara). Se realizaron varias combinaciones variando esteparámetro. Un ejemplo de las imágenes consideradas son las mostradasen la Figura 6.12.

Figura 6.12: Situación inicial tablero (Izq). Situación final(Dcha).Se apreciadesplazamiento en horizontal.

El objetivo de este experimento era, sabiendo lo que se había desplaza-do el tablero en horizontal, ver qué resultados se obtenían tras extraerrotación y traslación por separado de cada una de las imágenes. Losresultados obtenidos son los siguientes:

Imagen 1. Distancia: 170 cm. Posición en x = 0.

Rotacion Obtenida: -2.213006 -2.228312 0.010414Traslación Obtenida: -198.533707 -123.721458 1703.69873

Imagen 2. Distancia: 170 cm. Posición en x = 5.

Rotacion Obtenida: -2.207929 -2.225694 -0.009675Traslación Obtenida: -146.946869-123.890236 1695.04883

Desplazamiento estimado en X: 198,53−146,94 = 51,59mm . Resultadocon una precisión bastante buena, si consideramos que el desplazamientofísico realizado es ideal, y de magintud unos 5 cm.

Page 128: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 109

Cálculo del desplazamiento Eje Vertical :En este caso, se mantiene en la misma posición al tablero, y es la cámarala que desplazamos verticalmente para comprobar el desplazamiento enel eje X del tablero (lo que importa no es la posición del tablero respectodel sistema de coordendas del mundo, sino la posición relativa entre lossistemas de la cámara y del tablero). Se realizaron algunas combinacio-nes variando este parámetro. Un ejemplo de las imágenes consideradasson las mostradas en la Figura 6.13.

Figura 6.13: Posición inicial (Izq) y posición final (Dcha).

El objetivo de este experimento era, sabiendo lo que se había despla-zado la cámara en vertical, ver qué resultados se obtenían tras extraerrotación y traslación por separado de cada una de las imágenes. El ejeY de la cámara se corresponde con el eje X del tablero. Los resultadosobtenidos son los siguientes:

Imagen 1. Distancia: 160 cm. Posición en y = 14cm (cámara).Rotacion nula.Traslación Obtenida: -164.424149 -140.093170 1604.13696

Imagen 2. Distancia: 160 cm. Posición en y = 22cm (cámara)Rotacion nula.Traslación Obtenida: -159.771011 -69.6543351605.76050

Además del vertical se han intentado minimizar el resto de componentesdel movimiento (evitar que la cámara se desplazara en horizontal, por

Page 129: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 110

ejemplo). Desplazamiento estimado en Y: | 140,09−69,65 |= 70,44mm .Si el desplazamiento en vertical había sido de 8cm, en este experimentose puede asumir este error a pequeños errores en el conjunto de medi-ciones en el planteamiento del experimento (por ejemplo, que la cámarase hubiera desplazado ligeramente en sentido horizontal).

También se realizaron pruebas para medir la rotación del tablero respecto alsistema de coordenadas de la cámara. Se puede observar en la Figura 6.14las marcas en la plantilla para medir la rotación del tablero respecto a sueje Y. En la Figura 6.15 se muestra un ejemplo de los experimentos de esteparámetro y se verifica que los resultados son relativamente precisos, trasvarias comprobaciones usando la plataforma Matlab.

Figura 6.14: Marcas en la plantilla para medir la rotación.

Figura 6.15: Experimentos para comprobar la rotación del tablero.

Page 130: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 111

6.1.5. Problemas durante la implementación

Los problemas que surgieron en esta primera propuesta estuvieron relacio-nados tanto con el proceso de implementación como el de la asimilación deconceptos teóricos. El autor del presente proyecto nunca había trabajado eneste campo, y en un primer momento no veía cómo podían estar relacionadosun “simple” tablero de ajedrez, con la reconstrucción tridimensional del mis-mo desde el plano de la imagen.

En mi Titulación no se ven este tipo de conceptos, y la última vez que éstealumno vió geometría y sistemas de referencias fue en asignaturas de primercurso. Así pues, esta complejidad ha ido en paralelo con algunos problemasrelacionados con la implementación, los cuales se detallan a continuación:

Plataformas de desarrollo: En las primeras fases del proyecto se comenzóla implementación de código en la plataforma Microsoft Visual Studio2008, con la versión de la libreria de OpenCV 1.6. Inicialmente, dadoque aún no se había determinado la extensión del proyecto, se comenzóla implementación de una interfaz de usuario, como la presentada en[16]. La idea era que ésta albergara posibles controles relacionados con laestabilidad del vehículo aéreo, tales como posición GPS o aceleración. Sedescartó rápidamente, dado que la idea del proyecto no era la realizaciónde este tipo de interfaces.

Debido a que la mayor parte del código relacionado con el sensor inercialse estaba desarrollando con otra plataforma de desarrollo, Dev C++, seoptó por migrar todo el código hacia esta alternativa. Si la configuraciónde OpenCV sobre Visual Studio fue relativamente sencilla, en esta pla-taforma no lo fue tanto. En el Apéndice B se propone una configuraciónpara esta plataforma.

De nuevo, se produjo un cambio, tanto en la plataforma de desarrollocomo en el sistema operativo. Se migró todo el código a Ubuntu 8.04,usando como herramienta de compilación gcc (the GNU Compiler Co-llection). Configurar la la versión 2.0 de la librería de OpenCV en estaplataforma fue aún más complejo si cabe, puesto que el autor tenía ex-periencia en programación en Windows; pero en Linux se tuvieron queadquirir conocimientos medios y avanzados del sistema para poder con-figurar con éxito esta librería. Así, una vez configurada la plataformafinal de desarrollo, se comenzó con la implementación de la presentepropuesta. En el Apéndice B se indica cómo se configuraría la libreríade OpenCV para Linux.

Page 131: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.1. Objeto de referencia tridimensional 112

En OpenCV existe una función denominada cvCreateCameraCapture(),la cual, y pasándole un identificador de dispositivo de captura de ima-gen, es capaz de devolver un flujo contínuo del cual se pueden extraerimágenes a una frecuencia dada. Pero al instalar el dispositivo de imagenutilizado, se comprobó que éste no se identificaba en el sistema como decaptura de imágenes, sino como dispositivo de tipo uEye. Se tuvo puesque acudir al manual de usuario de la cámara [118], e implementar todala lógica de inicialización, configuración, captura de imagen y finaliza-ción. Esto supuso varias jornadas, puesto que la documentación de lacámara era compleja y extensa.

Existen dos grandes funciones en la librería de programación del dis-positivo de imagen para la captura de imágenes a partir del flujo deimágenes. Éstas son : is_CaptureVideo (..) y is_FreezeVideo (..). Laprincipal diferencia entre ambas funciones es que la primera vuelca deforma contínua a la tasa determinada de fps configurada imágenes enel buffer de la cámara, mientras que la segunda rellena el buffer de lacámara cada vez que es llamada. Al principio se optó por utilizar laprimera de las funciones, puesto que podíamos capturar a una tasa dehasta 40 fps.Pero surgió un problema; y éste era que en el tiempo en que se habíaextraído una imagen del buffer, y se había procesado para la obtenciónde los parámetros extrínsecos, la siguiente imagen extraída del bufferno era la que en el instante de tiempo inmediatamente anterior se ha-bía capturado, sino la siguiente a la procesada que había en el buffer.Esto daba lugar a situaciones en las que era posible que el tablero sehubiera desplazado, y no lo detectásemos hasta pasados unos segundos.La documentación del manual de la cámara indica que el buffer se vaactualizando continuamente; situación que se ha comprobado que no esdel todo cierta.

Page 132: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 113

6.2. Objeto de referencia plano

En esta propuesta se intenta implementar una nueva versión del código,de forma que ya no se considera ni la geometría del objeto de referencia niel modelo de la cámara. Un propuesta similar a la presente se encuentra en[39] y [3]. En este caso, se considera al objeto de interés plano, y el esquemade control visual sigue siendo el denominado control visual basado en posición(PBVS Position Based Visual Servo). El código es completamente distinto alanterior, aunque la idea que subyace es la misma: se trata de extraer a partirde la información visual la rotación y traslación del objeto respecto del sistemade coordenadas de la cámara.

Para la localización del objeto se ha implementado una búsqueda de carac-terísticas, o corners, en una región del espacio delimitada por una máscara, ypara el seguimiento se ha hecho uso de las funciones que proporciona OpenCVpara el tracking de puntos: algoritmo de Lucas-Kanade, o flujo óptico. Dentrode esta misma sección se plantea también otro método para la localización yseguimiento del objeto de interés: algoritmos de SURF6.2 y SIFT6.3. Se propor-cionará una base teórica de ambos métodos y los resultados experimentalesobtenidos.

Ya no se calculan los parámetros extrínsecos del sistema tal cual. En estemodelo no existen plano de la imagen, y plano del objeto. Tan solo existe elplano de la imagen, y el conjunto de puntos extraídos del mismo es lo quese intenta seguir en una secuencia de imágenes. Se plantea una relación detransformación proyectiva, en la que se toma la primera imagen del objeto(imagen de referencia) y se calcula en cada toma la matriz de homografíacon la nueva imagen del objeto capturada, de forma que en cada instante detiempo tenemos una matriz H, cuyos coeficientes transformarían la posiciónactual del objeto a la posición de referencia.

Una vez calculada la matriz de homografía entre cada par de imágenes(referencia y actual), se plantean dos técnicas para la extracción de la rota-ción y traslación: mediante descomposición analítica y numérica. En [30] sepropone otro tipo de descomposición, se refiere al lector para más informacióna consultar dicho artículo. En el presente proyecto se aportan en el ApéndiceA las implementaciones de ambos métodos.

La obtención de la matriz de rotación y el vector de traslación respecto de6.2SURF: Speeded Up Robust Features.6.3Scale-Invariant Feature Transform.

Page 133: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 114

la primera propuesta es también distinta, e incluye además un problema: elvector de traslación no viene dado en unidades métricas como en la primerapropuesta, sino que viene escalado y determinado por un factor α descono-cido. En la literatura existen varios artículos en los que no es necesario ladeterminación de dicho factor; mientras que en otras propuestas se determinaque es sencillo de extraer. Más adelante, en la sección 6.2.2.5 se expondrántodos estos aspectos. Así pues, y como visión general, se puede proporcionarun algoritmo genérico que englobe a toda la lógica relacionada con la consi-deración plana del objeto. Este algoritmo viene dado en Algoritmo 6.3.

En la bibliografía se pueden encontrar muchos títulos en los cuales se usala matriz de homografía para el control visual basado en imagen (IBVS). Éstosson, entre otros: [27][62][63][64] y [66]. Existen otras propuestas distintas tam-bién basadas en IBVS, como la presentada en [17], en la cual, usan momentosde primer orden de imágenes esféricas para el control visual.

Otra alternativa no considerada en la implementación, es, tal y como sedetalla en la Sección 4.2., en lugar de representar al objeto de interés como unconjunto de puntos, representarlo como una figura geométrica, un rectángulo,por ejemplo. En [27] se muestra esta técnica para el cálculo de la matriz dehomografía entre vistas, y un ejemplo de esta representación es la mostradaen la Figura 6.16.

Figura 6.16: Representación del objeto mediante formas geométricas básicaspara el cálculo de la homografía.

A continuación se expone de forma teórica en qué consiste la matriz dehomografía utilizada en esta segunda propuesta, y posteriormente se detallanel conjunto de métodos implementados.

Page 134: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 115

Algorithm 6.3 Algoritmo de extracción de información visual para ControlVisual Basado en Imagen. Propuesta 1.Inicio Control_IBVS

ReservaEstructurasMemoria(...)InicializacionCamara(camara)imagenReferencia := CapturaImagenInicial(tablero_ajedrez)puntosObjetoReferencia := extraePuntosObjeto(imagenReferencia)

mientras (cierto):// El objeto se mueve en la escenaimagenActual := CapturaImagen(camara)// Se localizan los puntos del objeto en cada imagenpuntosObjetoActual := extraePuntosObjeto(imagenActual)matrizHomografia :=

calculaHomografia(puntosObjetoReferencia,puntosObjetoActual)

[Rotacion,traslacion]:=DescomposicionHomografia(matrizHomografia)

// Cualquier operación con la matriz de homografiaTransformacionPerspectiva(imagenActual,matrizHomografia,...)

fin mientrasLiberaRecursosMemoria(..)LiberaCamara(camara)

Fin Algoritmo

Page 135: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 116

6.2.1. Matriz de homografía

6.2.1.1. Definición

Sea P∗ el vector de 3x1 que contiene a las coordenadas homogéneas de unpunto en la imagen de referencia (Figura 6.17), expresado en un sistema C∗,y P , expresado en C, el vector que contiene las coordenadas homogéneas deun punto en la imagen actual. Se verifica que:

P =C TC∗P∗ = RP∗+t

Si llamamos d∗ a la distancia entre el plano de la cámara y el plano dela imagen en la imagen de referencia, puede verificarse que : nTP∗ = d∗. Esdecir, nTP∗

d∗= 1. Se tiene pues la siguiente relación:

P = RP∗ + tnTP∗

d∗= (R + tn

T

d∗)P∗

Figura 6.17: Frame actual y deseado del sistema.

Si expresamos las coordenadas de los puntos P∗y P como coordenadasproyectivas dividiendo por su respectiva tercera coordenada, se tiene que:

m = PZ, m∗ = P

Z∗

Page 136: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 117

donde m∗ = (u∗, v∗, 1) es el vector que contiene a las coordenadas proyec-tivas normalizadas de un punto visto desde la posición de referencia respectodel sistema de coordenadas de la cámara, y m = (u, v, 1) es el vector quecontiene las coordenadas proyectivas normalizadas de la posición actual delmismo punto.

Se verifica que:

mZ = (R + tnTd∗

)m∗Z∗

αHm = (R + tnTd∗

)m∗, siendo αH = Z

Z∗

En conclusión, podemos escribir:

αHm = Hm∗

donde H es la matriz de homografía en el espacio Euclídeo. Como se puedeobservar, se establece una relación multiplicativa entre los puntos tridimen-sionales (expresados en coordenadas proyectivas) de un frame con el deseado.

En el espacio de la imagen, también se puede establecer una relación similarentre los puntos p y p∗, de forma:

αGp = Gp∗

Esta matriz G es la que se puede estimar a partir de la correspondenciaentre un conjunto de puntos para una secuencia de imágenes. Una vez ob-tenida, la matriz H puede ser deducida teniendo en cuenta que p = Km yp∗ = Km∗, siendo K la matriz de parámetros intrínsecos de la cámara, deforma que:

αGKm = GKm∗ ⇒ αGm = K−1GKm∗

por lo que la matriz H se define como:

H = K−1GK

Page 137: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 118

En resumen, a partir de la matriz G y conociendo K se puede obtener lamatriz H. A partir de ésta, se podrá realizar una descomposición para obtenerlos elementos R, t y n. A éste último paso se le denomina reconstruccióneuclídea a partir de la matriz de homografía H.

Page 138: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 119

6.2.1.2. Descomposición de la matriz de homografía en valores sin-gulares

Propuesto por Faugeras, en [123] se detalla el método seguido para laimplementación en el presente proyecto. Si se realiza una descomposición devalores singulares de la matriz de homografía:

H = UΛVT

se obtienen las matrices ortogonales U y V y la matriz diagonal Λ, lacual contiene los valores singulares de la matriz H. Se puede considerar estamatriz diagonal como una matriz de homografía tal cual, y aplicar la relaciónsiguiente:

Λ = RΛ + tΛnTΛEl cálculo anterior es simple cuando la matriz a ser descompuesta es diago-

nal. Realizando cálculos sobre la anterior ecuación y planteando un sistema deecuaciones lineal (8 grados de libertad), se pueden obtener hasta 8 solucionesdiferentes para la tripleta RΛ, tΛ,nΛ.

Así pues, asumiendo que la descomposición de la matriz diagonal se hacalculado, para calcular la descomposición final de los elementos, es necesariorecurrir a las siguientes expresiones:

R = URΛVT

t = UtΛ

n = VnΛ

Para garantizar que la solución seleccionada es la correcta, es necesarioaplicar un conjunto de restricciones (mostradas a continuación), que son ge-néricas a cualquier técnica de descomposición.

Page 139: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 120

Restricciones

Una de ellas consiste en que en ambas imágenes, el origen de cada sis-tema de coordenadas debe estar en el mismo lado del objeto plano (Figura6.18). Esto genera una restricción tal que:

1 + nTRT t > 0

Figura 6.18: Representación gráfica de la primera restricción.

Tras aplicar esta restricción, de ocho posibles soluciones se ha pasado a untotal de cuatro. La segunda restricción consiste en que para todos los puntos dereferencia posibles, todos deben estar situados enfrente de la cámara (Figura6.19). Expresado en la actual notación:

mT (R n) > 0

Donde m son las coordenadas de los puntos de referencia. Tras esta segundarestricción, se consigue reducir el número de soluciones posibles a dos.

Page 140: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 121

Figura 6.19: Representación gráfica de la segunda restricción.

Page 141: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 122

6.2.1.3. Descomposición analítica

En [123] se proponen dos métodos para este apartado: calculando en primerlugar el vector normal, o calculando en primer lugar el vector de traslación.Dado que es el primero de ellos del cual se ha generado una implementacióncompatible para OpenCV, es el que se describe a continuación. Se refiere allector a consultar [123] para más información.

Se pueden obtener diferentes formas para las expresiones analíticas intro-duciendo una matriz simétrica, S, obtenida a partir de la matriz de homografíaH como:

S = HTH− I =

s11 s12 s13s21 s22 s23s31 s32 s33

Se representa como Msij , i, i = 1.,3, las expresiones Menores de la matriz

−S. Por ejemplo:

Ms11 = − | s22 s23s23 s33

|= s223 − s22s33 ≥ 0

En general, existen tres alternativas diferentes para obtener las expresionesde los vectores normales ne (y a partir de éste te y Re) a partir de la des-composición de la matriz de homografía de los componentes de S. Así pues,se escribirá como:

ne(sii) = n′e(sii)‖ n′e(sii) ‖

; e = a, b, i = 1, 2, 3

Donde ne(sii) significa ne desarrollado usando sii. Así, los tres casos posi-bles son los siguientes:

n′a(s11) =

s11s12 +

√Ms33

s13 + ε23√

Ms22

; n′b(s11) =

s11s12 +

√Ms33

s13 + ε23√

Ms22

; (6.1)

n′a(s22) =

s12 +√

Ms33s22

s23 − ε13√

Ms11

; n′b(s22) =

s12 −√

Ms33s22

s23 + ε13√

Ms11

(6.2)

n′a(s33) =

s13 + ε12√

Ms22s23 +

√Ms11

s33

; n′b(s33) =

s13 − ε12√

Ms22s23 −

√Ms11

s33

(6.3)

Page 142: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 123

donde εij = sign(Msij).

Todas estas fórmulas devuelven el mismo resultado. Sin embargo, no todasellas pueden ser aplicadas en cada caso, al igual que el cálculo de ne(sii), elcual implica una división por sii. Esto significa que dicha fórmula no puede seraplicada cuando la división es entre cero (esto ocurre cuando la componentei-ésima de n es nula).

El procedimiento correcto consiste en calcular na y nb usando la alternati-va de entre las tres correspondencias establecidas con el mayor valor absolutopara sii. Ésta será la opción mejor condicionada. El único caso a tener en cuan-ta es cuando solamente tenemos rotación pura; justamente cuando la matrizH es la matriz de rotación. En este caso, todos los componentes de la matrizS serán nulos. Éste será pues el caso base, en el que no es necesario aplicarninguna fórmula.

Cabe destacar que las cuatro soluciones obtenidas con estas fórmulas sontodas las mismas (esto es, na,−na,nb,−nb), pero no siempre son devueltasen el mismo orden; esto significa que, por ejemplo, na(s11) se pudiera co-rresponder con cualquiera de las 4 soluciones anteriores, incluso en lugar decorresponderse con na(s11).

Las expresiones para el vector de traslación en el marco de referencia,t∗e = RT

e te, pueden obtenerse a partir de las expresiones para los vectoresnormales:

t∗e(s11) = ‖ n′e(s11) ‖2s11

s11s12 ∓

√Ms33

s13 ∓ ε23√

Ms22

− ‖ te ‖22 ‖ n′e(s11) ‖

s11s12 ±

√Ms33

s13 ± ε23√

Ms22

t∗e(s22) = ‖ n′e(s22) ‖2s22

s12 ∓√

Ms33s22

s23 ∓ ε13√

Ms11

− ‖ te ‖22 ‖ n′e(s22) ‖

s12 ±√

Ms33s22

s23 ± ε13√

Ms11

t∗e(s33) = ‖ n′e(s33) ‖2s33

s13 ∓ ε12√

Ms22s23 ∓

√Ms11

s33

− ‖ te ‖22 ‖ n′e(s33) ‖

s13 ± ε12√

Ms22s23 ±

√Ms11

s33

Para e = a el mayor operador en los simbolos ±, es decir, ∓, debe ser

elegido, y para e = b, seleccionar el operador menor. EL vector t∗e puedetambién en una forma más compacta de na y nb:

Page 143: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 124

t∗a(sii) = ‖ te ‖2 [εsiiρnb(sii)− ‖ te ‖ na(sii)] (6.4)

t∗b(sii) = ‖ te ‖2 [εsiiρna(sii)− ‖ te ‖ nb(sii)] (6.5)

siendo:

εsii = sign(sii)

ρ2 = 2 + trace(S) + ν

‖ te ‖2= 2 + trace(S)− ν

Donde ν puede ser obtenida a partir de:

ν =√

2[(1 + trace(S))2 + 1− trace(S2)] = 2√

1 + trace(S)−Ms11 −Ms22 −Ms33

La expresión para la matriz de rotación quedaría tal que:

Re = H(I− 2νt∗enTe )

y el vector de traslación:

te = Ret∗e

Éste es el método implementado en la claseHomographyDecomposition.hpp,junto con el método de descomposición de Faugeras explicado en el apartadoanterior. Se refiere al lector a consultar la referencia [30] de la bibliografía paramás información.

Page 144: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 125

6.2.1.4. Cálculo de la matriz de homografía

Una vez determinados los conjuntos de puntos que representan al objetoentre la imagen inicial y la actual, el siguiente paso consiste en calcular lamatriz de homografía del sistema. En la implementación se han usado dosmétodos para la obtención de dicha matriz; éstos son el método RANSAC yel método LMEDS. En OpenCV existe una función para esta tarea, denomi-nada cvFindHomography(). Una descripción más detallada de esta función sepresenta a continuación:

void cvFindHomography(

const CvMat* srcPoints,const CvMat* dstPoints,CvMat* H,int method=0,double ransacReprojThreshold=0,CvMat* status=NULL)

Descripción del prototipo de la función:

srcPoints,dstPoints :Son, respectivamente, el conjunto de puntos del objeto de la imageninicial y el conjunto de puntos del objeto de la imagen actual. Caberesaltar que en los experimentos se demostró que los puntos deben estaren orden; es decir, que la posición i-ésima del array srcPoints contengaal punto i-ésimo, siendo el mismo encontrado en la posición i-ésima delarray dstPoints.

H :Matriz de homografía de orden 3 devuelta por el método.

method :

0 : Método común usando todos los puntos. Sin ningún tipo deoptimización.CV_RANSAC : Cálculo de la matriz de homografía usando el mé-todo RANSAC.CV_LMEDS : Cálculo de la matriz de homografía usando el mé-todo LMedS.

Page 145: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 126

ransacReprojThreshold :Solo válido si el método usado es RANSAC. Indica el máximo error dereproyección permitido para considerar a un punto como válido.

status :No usado en esta implementación.

A continuación se exponen de forma breve las diferencias entre los métodosde RANSAC y LMeds.

Método RANSAC :

El método RANSAC (RANdom SAmple Consensus) es un método deemparejamiento robusto que da como resultado la solución más votadade entre unas cuantas, calculadas a partir de conjuntos mínimos obte-nidos aleatoriamente. Para calcular una homografía en tres dimensionesse necesitan un mínimo de cuatro emparejamientos. La idea del métodoRANSAC consiste en seleccionar un número de subconjuntos de cuatroemparejamientos elegidos aleatoriamente dentro del total, que garanti-ce que, con una probabilidad superior al 99%, al menos uno de dichossubconjuntos contendrá sus cuatro emparejamientos correctos, es decir,que ninguno de ellos es un falso emparejamiento.

Para cada uno de los subconjuntos formados se calcula la matriz de ho-mografía. Esta matriz se valora mediante un sistema de votaciones. Paraello, se fija un umbral que separe los emparejamientos buenos de los ma-los para esta homografía. Un emparejamiento se considerará bueno si ysólo si la homografía lleva una característica a la otra con un error menorque el umbral considerado. Se contabiliza el número de emparejamientosbuenos (votos favorables), quedándonos al final con la homografía quemás votos haya tenido.

Una vez que se ha elegido la homografía más votada como solución, seconsideran emparejamientos buenos aquellos que hayan votado a dichasolución, mientras que los falsos emparejamientos serán los que no la ha-yan votado. Para reducir el coste computacional, en el momento en queuna homografía recibe más del 95% de los votos, esta se considera solu-ción definitiva. De esta forma en conjuntos con un porcentaje pequeñode falsos emparejamientos el cálculo de la solución es casi inmediato.

Page 146: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 127

Método LMedS :

LMedS proviene de las palabras inglesas Least Median of Squares (míni-mo error de la mediana). La idea de este método probabilístico es similara la que emplea RANSAC: se seleccionan aleatoriamente un número desubconjuntos y se calcula la matriz de homografía para cada uno de ellos.

En este caso, en lugar de realizar votaciones, lo que se hace es calcularlos residuos que genera el conjunto total de emparejamientos para cadahomografía. De todas las soluciones obtenidas el método escoge aquellaque minimice la mediana de los cuadrados de los residuos. La ventajade este método frente a RANSAC es que no necesita fijar umbrales.

Sin embargo, es más costoso computacionalmente. Partiendo de la hipó-tesis de que los datos se ajustan a una distribución normal, para eliminarlos falsos emparejamientos el método LMedS calcula un umbral σ en fun-ción del valor de la mínima mediana obtenida, y elimina todos aquellosemparejamientos cuyo residuo sea superior a dos veces el cuadrado dedicho valor:

r2i ≤ (2 · σ2)

Durante los experimentos el método de RANSAC fue el más robusto a falsosemparejamientos, en el sentido de que tiene probabilidades más altas de gene-rar soluciones exactas que el emparejador básico (si no se establece ningunacondición en la función cvFindHomography(..)) o el emparejamiento robustoutilizando LMedS.

Page 147: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 128

6.2.2. GoodFeaturesToTrack() y flujo óptico para el se-guimiento del objeto de referencia

Como se comentó con anterioridad, el algoritmo correspondiente a estasegunda alternativa para el control visual es completamente distinto. En estecaso, el objeto de referencia puede ser cualquier objeto plano, salvo con la con-dición de que debe albergar gran cantidad de puntos característicos, o corners.Se aplica un método inicial de detección de características, y posteriormentemediante el algoritmo adaptativo de Lucas-Kanade de flujo óptico se intentanseguir los puntos detectados en la imagen inicial en la secuencia de imágenesposteriores.

Una vez localizados al menos 4 puntos del mismo objeto entre dos imáge-nes (el original, o de referencia, y el actual), se procede a calcular la matriz dehomografía entre ambos conjuntos de puntos; si los puntos “casan”, la matrizde homografía tendrá sentido. Si de lo contrario, los 4 puntos no alberganningún tipo de relación geométrica, la matriz resultante calculada no tendrásentido. En este aspecto, se han realizado varias pruebas en el laboratorio.

Posteriormente, si la matriz de homografía resultante es correcta, se pro-cede a la descomposición de la misma para obtener la matriz de rotación yel vector de traslación, los cuales indican cual es el movimiento inverso quedebería hacer la cámara para que los puntos fueran vistos en las posicionesdadas en la imagen de referencia. Así pues, el algoritmo detallado que recogetodos los pasos seguidos en esta implementación, es el propuesto en Algoritmo6.4.

Este modelo es relativamente más complejo que el anterior, puesto que senecesita de más funciones para localizar y seguir al objeto de referencia. Acontinuación se muestran en profundidad los detalles de la implementación.

6.2.2.1. Localización del objeto de referencia

Dado que en este algoritmo no se dispone de una función de detecciónautomática del objeto de referencia, esto supone tanto una ventaja como unadesventaja. La ventaja consiste en que ahora se puede utilizar cualquier tipode objeto, sea plano o no, para la localización de puntos dentro de su contornoy su posterior seguimiento. El problema, obvio, es que hay que implementar

Page 148: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 129

Algorithm 6.4 Algoritmo de extracción de información visual para ControlVisual Basado en Imagen. Propuesta 2.

Inicio Control_PBVS_Propuesta_II

InicializacionCamara(camara)si esPrimeraIteracion:

imagenReferencia := CapturaImagenInicial(tablero_ajedrez)puntosObjetoReferencia :=

extraePuntosObjeto(imagenReferencia)ReservaEstructurasMemoria(puntosObjetoReferencia,..)

bucle:

si no esPrimeraIteracion:

imagenActual := CapturaImagen(camara)[puntosObjetoActual,puntosPosicionEstimada] :=SeguimientoFlujoOpticoPiramidal(imagenPrevia,

imagenActual,..)matrizHomografia :=

calculaHomografia(puntosObjetoReferencia,puntosObjetoActual)

[Rotacion,traslacion]:=DescomposicionHomografia(matrizHomografia)

// Cualquier operación con la matriz de homografiaTransformacionPerspectiva(imagenActual,

matrizHomografia,...)fin siIntercambia(puntosObjetoActual,

puntosPosicionEstimada)Intercambia(imagenActual,

imagenPrevia)fin bucleLiberaRecursosMemoria(..)LiberaCamara(camara)

Fin Algoritmo

Page 149: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 130

dicho método.

Consultando [120] y [111], una de las alternativas con más éxito consisteen utilizar la función de OpenCV denominada cvGoodFeaturesToTrack(), lacual devuelve un conjunto de características de una escena, que son buenascandidatas para el seguimiento en una secuencia de imágenes.

Tras realizar varias pruebas iniciales, finalmente se optó por el uso de lafunción cvGoodFeaturesToTrack(), la cual se detalla a continuación:

void cvGoodFeaturesToTrack(

const CvArr* image,CvArr* eigImage,CvArr* tempImage,CvPoint2D32f* corners,int* corner_count,double quality_level,double min_distance,const CvArr* mask = NULL,int block_size = 3,int use_harris = 0,double k = 0.4 );

image :Imagen de entrada de la cual se extraen los puntos característicos, ocorners.

eigImage,tempImage :Son variables necesarias para los cálculos de la propia función. En unprincipio, se pensó que los puntos devueltos por esta función veníanindexados en función de su correspondiente autovalor, devuelto en eigI-mage. Pero se corroboró que al finalizar la función la variable eigImageno contenía ningún tipo de información, puesto que al salir de la funciónla memoria reservada para esta variable es liberada.

corners :Estructura de tipo array en OpenCV, la cual contiene las coordenadasde los puntos característicos obtenidos en la imagen. Estas coordenadasson respecto al plano de la imagen.

Page 150: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 131

corner count :Puntero a entero que indica el número de corners encontrados en laimagen. Este parámetro puede ser tanto de entrada como de salida, enel sentido de que si se inicializa a algún valor, la función devolverá tansolo los n mejores corners , donde n es el valor de inicialización de dichavaraible. En caso contrario, busca tantos corners como posiciones tengael array corners de entrada.

quality_level :Indica el valor mínimo aceptable para un autovalor para que un de-terminado punto sea aceptado como corner. El valor actual para esteparámetro es el producto entre quality_level y el menor de los mayoresautovalores encontrados en la imagen. Así, este valor no debe excederde 1. Un valor típico suele estar comprendido entre 0.10 y 0.01.

min_distance :Se indica la distancia mínima entre dos puntos. Expresada en píxeles.Dependería pues de cada tipo de objeto.

mask :Se pueden buscar los puntos característicos en toda la región de la ima-gen, o bien en un área determinada. En esta propuesta se ha diseñadouna función para la selección manual del objeto (Figura 6.20 y Figura6.21); mediante 4 puntos, se selecciona la región de la imagen donde estáel objeto, y donde se desea buscar las características que describen almismo. Ésta función se encuentra definida en el conjunto de clases imple-mentadas, más concretamente en el fichero seleccion.hpp. Una máscarano es más que una región lógica del espacio; aquellos puntos o coorde-nadas que estén a un valor positivo serán considerados, mientras que lasque tengan un valor nulo, no lo serán.

block_size :Región del espacio alrededor de cada píxel que es considerada para elcálculo de las derivadas de segundo orden. Normalmente suele tener unvalor comprendido entre 3 y 5 píxeles alrededor del punto.

use_harris,k :Si use_harris es distinto de cero, entonces para la detección de los puntosse usa la técnica de Harris, en lugar de la de Shi y Tomasi. El valor kes el coeficiente de Harris (ver Sección 4.4.1), cuyo valor por defecto eneste caso suele ser de 0.4.

Page 151: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 132

La implementación de esta función sigue la definición de Shi y Tomasi (Sec-ción 4.5.2). Básicamente, en esta alternativa se calculan hasta las derivadassegundas (usando operadores de Sobel) que son necesarias para la obtenciónde los autovalores de la matriz de autocorrelación alrededor de una pequeñaregión alrededor de cada punto.

Figura 6.20: Selección manual del objeto.

Figura 6.21: Obtención de la máscara de selección del objeto.

Donde los cambios sean más bruscos, será una buena zona en la que situarun punto característico. En contraposición con el criterio de Harris (Sección

Page 152: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 133

4.4.1), Shi y Tomasi propusieron que era mejor obtener el menor de los autova-lores que aplicar un cierto umbral. En general, se obtienen mejores resultadoscon la propuesta de Shi y Tomasi que con el método de Harris (por las consi-deraciones expuestas en [120]).

En la implementación de la clase CSensorCamara2.hpp, la cual alberga lapropuesta presentada en esta sección, la función cvGoodFeaturesToTrack() seaplica en dos ocasiones. La primera de ellas es para ajustar el número máximode puntos que se considerarán para representar al objeto. Así, se suele ini-cializar el array para contener dichos puntos a un valor de 150, para despuésajustarlo a las necesidades reales de cálculo. Así se evita la reserva excesivade memoria.

En segundo lugar, se aplica esta función para la extracción de puntos queserán considerados en las siguientes imágenes. Una primera aproximación enla estimación del valor de los coeficientes de dicha función es la presentada enel código propuesto en el Apéndice A. Una vez que se ha realizado una llama-da a esta función, el array corners contendrá las coordenadas de los puntosdel objeto. Al igual que en la primera propuesta de implementación, aplica-mos la función cvFindCornerSubPix() para obtener una mejor precisión de lalocalización de los puntos encontrados.

Tras localizar el objeto de interés en la escena, y ser representado median-te el conjunto de puntos devueltos por la función cvGoodFeaturesToTrack(),el siguiente paso es precisamente realizar el “tracking” de dichos puntos, esdecir, el seguimiento de los mismos entre diferentes imágenes de la escena quese comenta en el siguiente apartado.

Como último detalle de esta sección es que en la implementación de estapropuesta se mantienen la estructuras de memoria para la matriz intrínseca ylos parámetros de distorsión. Aunque no son necesarios en este modelo, biensi lo pueden ser para la corrección geométrica de la imagen. En la Figura 6.22se puede observar cómo la linea superior del tablero se observa curvada en laimagen; esto es debido a defectos en la lente, que bien pueden ser corregidosen el código haciendo uso de la función cvUndistort2(), la cual corrige geomé-tricamente la imagen haciendo uso de la matriz de calibración interna y de losparámetros de distorsión.

Tras varias pruebas iniciales se comprobó que si era necesario una correc-ción geométrica de la imagen se perdían de media unos 3 fps; por lo que en laimplementación ésta opción se ha definido de forma opcional, si fuera necesa-ria.

Page 153: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 134

Figura 6.22: Detalle de la distorsión de la lente.

6.2.2.2. Seguimiento de los puntos del objeto de referencia

En una primera aproximación se pensó que la función cvGoodFeatures-ToTrack() devolvía los puntos en el mismo orden, entre una secuencia deimágenes consecutivas. Posteriormente, cuando se comprobó que no era de talforma, se pensó en indexar algún array en el que se relacionara el punto consu autovalor, de forma que según el segundo parámetro se pudiera localizaral mismo punto entre imágenes consecutivas. Pero al intentar acceder a laestructura de eigImage (es la que contiene los autovalores para los puntos de-vueltos) se comprobó también que no era posible, puesto que dicha estructurade memoria era liberada justo antes de terminar la función.

Una de las maneras en la que se pensó que los puntos devueltos no secorrespondían entre escenas era que la matriz de homografía resultante notenía sentido. Se verifica que entre dos imágenes distintas, si no ha habidoningún tipo de rotación ni de traslación, la matriz que lleva del mismo puntoexpresado en el sistema de referencia al mismo sistema, esto es, la matriz dehomografía, es precisamente la matriz identidad I. Los resultados observadosno se correspondían con esta afirmación, por lo que se determinó que con lafunción de localización de puntos no era suficiente.

Consultando de nuevo la bilbiografia, se decidió por realizar pruebas con

Page 154: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 135

la función de OpenCV cvCalcOpticalFlowPyrLK(). Esta función basa su im-plementación en tres suposiciones (Figura 6.23):

Constancia del brillo: Se asume que el brillo de un píxel entre una imageny la siguiente no cambia bruscamente (se considera constante) .

Persistencia temporal: El movimiento del punto característico cambiarelativamente poco de una imagen a la siguiente.

Coherencia espacial: Los puntos vecinos al punto característico, perte-necientes al mismo plano, tienen el mismo movimiento y proyeccionessimilares en la secuencia de imágenes consecutivas.

Figura 6.23: Restricciones de un punto en Lucas Kanade.

El algoritmo detallado a continuación realiza un seguimiento del punto en unasecuencia de imágenes, basándose en las anteriores asunciones y en la defini-ción del flujo óptico (Sección 4.3), incluyendo además un proceso de búsquedapiramidal (Figura 6.24 y 6.25).

Esta pirámide se corresponde a una secuencia de imágenes resultado de unareducción de escala de la imagen inicial por múltiplos de dos. En la Figura6.24, I0 será la imagen inicial y las imágenes I1, I2 e I3 serán las siguientes

Page 155: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 136

Figura 6.24: Representación piramidal de una imagen.

imágenes de la pirámide. Posteriormente se realiza el cálculo del flujo ópticotras colocar el punto buscando en la posición en la que se encontró en laiteración anterior. Este paso del algoritmo solo funciona si el flujo óptico deeste punto es pequeño, cosa que se puede asegurar gracias a la utilización dela representación piramidal.

Así pues, queda detallar la función cvCalcOpticalFlowPyrLK():

void cvCalcOpticalFlowPyrLK(

const CvArr* imgA,const CvArr* imgB,CvArr* pyrA,CvArr* pyrB,CvPoint2D32f* featuresA,CvPoint2D32f* featuresB,int count,CvSize winSize,int level,char* status,float* track_error,CvTermCriteria criteria,int flags );

imgA,imgB :imgA se corresponde con la imagen previa del objeto, e imgB se corres-ponde con la actual. Se trata de indicar las dos imágenes en las que sedesean buscar los puntos característicos.

Page 156: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 137

pyrA,pyrB :Estructuras de memoria para contener las distintas capas de búsquedade la pirámide de búsqueda.

featuresA,featuresB :El primer array contiene los puntos que se desean seguir, los cualesson analizados para extraer la característica de su movimiento. El arrayfeaturesB contendrá la localización estimada de los puntos calculados apartir del movimiento de los puntos originales.

count :Número de puntos en el array featuresA.

winSize :Estructura para indicar el tamaño en OpenCV de la ventana de bús-queda alrededor del píxel que contiene la característica. En el presentetrabajo se ha propuesto una ventana de tamaño 5 píxeles.

level :Entero para indicar la profundidad de la búsqueda piramidal. Si se esta-blece a 0, se realiza el proceso de búsqueda en un solo nivel (no habríabúsqueda piramidal). En nuestro caso, se establece a un valor de 3, por-que es el que mejores resultados ha dado hasta el momento.

status :De longitud count; una vez terminada la función, si la posición i-ésimacontiene un 1, significa que el punto i-ésimo del array featuresA ha sidolocalizado. En caso contrario, el valor en esta posición será de 0.

track_error :Si está activo, es un array de números en formato real, que indica ladiferencia entre la localización del punto en la primera toma y la loca-lización estimada del punto en la imagen actual. Es utilizado en unatécnica de optimización propuesta en el siguiente apartado.

criteria :Se establecen las condiciones de parada del algoritmo. En este caso, hastaun máximo de 10 iteraciones o una precisión inferior al 10%. Aunque aúnes necesario la realización de varias pruebas para determinar su posiblevalor definitivo.

Page 157: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 138

flags : Las usadas en esta implementación son (en conjunción con el operadorbooleano &):

CV_LKFLOW_PYR_A_READY : Indica que la pirámide de bús-queda para la imagen de referencia es calculada antes de la llamaday almacenada en pyrA.CV_LKFLOW_INITIAL_GUESSES : Indica que el array featu-resB contiene una estimación inicial de la localización de los puntosantes de realizar la llamada a la función.

Al igual que tras la llamada de cvGoodFeaturesToTrack(), tras la ejecución deesta función se realiza también un proceso de refinamiento en la precisión delas coordenadas con la función cvFindCornerSubPix().

Figura 6.25: Búsqueda piramidal con flujo óptico.

Al tiempo que se presenta este proyecto, aún se están realizando diferen-tes configuraciones en el laboratorio para obtener de forma experimental losparámetros que optimicen el funcionamiento de esta función. Se prueba condiversos objetos de interés y se visualizan los resultados obtenidos.

Un ejemplo de ello es el mostrado en la Figura 6.26, en la que se puedeobservar la estimación de la localización de los puntos interiores al tablerode ajedrez con una tasa de aproximadamente 15 veces por segundo (15 fps,en total), incluyendo la tarea de descomposición de la matriz de homografía H.

Page 158: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 139

Figura 6.26: Estimación de los puntos usando la función cvCalcOptical-FlowPyrLK().

Optimización del método propuesto

El principal problema del método anterior consiste en que cuando algúnobjeto se cruza entre la cámara y el objeto de referencia, los puntos caracte-rísticos del mismo se dispersan (Figura 6.27). La mismo sucede si se mueve elobjeto con cierta rapidez.

Figura 6.27: Error en la estimación de los puntos del objeto.

Esto conlleva a deshechar todos los puntos que no se quedan sobre el ob-jeto, con lo que es posible que a medida que vayan avanzando la secuencia deimágenes se vayan descartando puntos hasta sobrepasar el mínimo necesariopara calcular la matriz de homografía (4 puntos).

Así, se plantea la necesidad de añadir algún mecanismo para evitar estetipo se situaciones no deseables. Existe una propuesta, aún no implementada,que consiste en aplicar técnicas de template matching cuando el método ante-rior falla para localizar de nuevo el objeto.

Page 159: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 140

La idea se expone en los siguientes pasos:

Paso 1 :Para la localización inicial del objeto se utiliza la función cvGoodFeatu-resToTrack(), con selección manual para la máscara.

Paso 2 :Para el seguimiento se hace uso de la función cvCalcOpticalFlowPyrLK(),calculando en cada iteración la media del desplazamiento de los píxeles,obtenido a partir de track_error. Se calcula el mínimo y máximo valoren las coordenadas tanto del eje X como del eje Y. Éstas cuatro coorde-nadas determinarán una región del espacio en la que se está desplazandoel objeto.

Paso 3 :Si en algún momento los puntos estimados no verifican que se desplazanen media igual que el conjunto (en principio el objeto no se deforma geo-métricamente), estos son eliminados, para garantizar que no pertenecenal objeto. Este paso es aún matizable, en el sentido de que otra restric-ción para usar la media del conjunto es que no haya alguna deformaciónpor efecto de la perspectiva.

Paso 4 :Si se alcanza el mínimo de puntos necesarios para calcular de forma ópti-ma la matriz de homografía (según lo indicado anteriormente, al menos4), se busca de nuevo al objeto en la región delimitada por los puntos delpaso 2. La forma de búsqueda en este caso es por fuerza bruta siguiendola técnica de template matching definida en 4.5.2. En este caso, el patróna buscar se corresponde con la sección de la imagen delimitada por lospuntos del paso 2, y la imagen donde buscar al objeto es la imagen actual.

El valor devuelto se corresponderá con el centro de un rectángulo quecontendrá al objeto y a algunos puntos externos. Se extraen las caracte-rísticas de la región devuelta, y se vuelve al paso 2. Los puntos externosdevueltos en este paso se irán descartando sucesivamente tras variasiteraciones del paso 2.

Page 160: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 141

Figura 6.28: Ejemplo de la técnica template matching. Se desplaza la plantillade referencia hasta que el emparejamiento sea óptimo.

Page 161: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 142

6.2.2.3. Ejemplo de aplicación. Reconstrucción proyectiva

Un ejemplo muy interesante de la obtención de la matriz de homografía esla reconstrucción proyectiva. Es decir, si tenemos el conjunto de puntos del ob-jeto en la imagen de referencia, el conjunto de puntos del objeto en la imagenactual, y la matriz de transformación (en este caso la matriz de homografía)que lleva puntos de un sistema al otro, tendremos una reconstrucción parcialde la escena original, siendo precisamente reconstruido el objeto de referencia.

En la Figura 6.29 se muestra cómo a pesar de que el objeto se encuentra enmovimiento (Derecha), al aplicar la matriz de homografía, la transformaciónparcial (Izq) reconstruye el objeto a partir de su posición inicial, que precisa-mente era cuando el tablero estaba en una posición casi horizontal respectoal punto de vista de la cámara. Se puede observa cómo en la imagen de laizquierda todo lo que no es el objeto de referencia está rotado respecto delpunto de vista de la cámara. La función de OpenCV utilizada para realizaresta transformación se denomina cvWarpPerspective() [120].

Figura 6.29: Reconstrucción parcial usando la matriz de homografía.

Page 162: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 143

6.2.2.4. Cálculo del factor de indeterminación

Tal y como se ha expresado en la sección 6.2.1.1, a partir de la matriz dehomografía H obtenemos una reconstrucción parcial, de la cual es necesarioestimar algunos parámetros más para poder obtener la reconstrucción com-pleta. Partiendo de la expresión:

αhm = Hm∗

donde H estará relacionada con rotación y traslación de forma que:

H = γ(R + td∗

nT) (6.6)

lo que se desea en esta propuesta, tal y como se consiguió en la primeraimplementación, es obtener el factor de escala para determinar de forma más omenos precisa cuál ha sido el desplazamiento del objeto respecto de la posicióninicial. Una de las vías por las cuales es posible la obtención de dicho factor,es observando que:

det(H) = det(R + tnT

d∗) = (1 + tnT

d∗)

Se han realizado varias pruebas, situando la cámara perpendicularmenteal objeto de referencia (tablero de ajedrez). En estas condiciones se tiene queel vector normal del sistema de referencia es de la forma n = (0, 0, 1)T , y secumple que las dos primeras columnas de la matriz de homografía son pro-porcionales a las dos primeras columnas de la matriz de rotación. Otra formade cálculo es la siguiente.

En primer lugar, se calcula la descomposición en valores singulares de lamatriz de homografía H:

svd(H) = σ1, σ2, σ3, σ1 ≤ σ2 ≤ σ3

En general, existen dos formas para la normalización de la matriz de ho-mografía. La primera de ellas, es forzando a que el det(H) = 1. La segunda,

Page 163: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 144

más interesante para nuestro caso, es garantizando que σ2 = 1. En este caso,el factor γ de la fórmula 6.6 debe ser también unitario:

H = (R + tnT

d∗)

En este caso, se puede comprobar que:

‖t‖d∗≡ σ1 + σ3

Es más, incluso aunque no se haya normalizado H, puede verificarse quela única diferencia respecto a la relación anterior es que hay que generalizarlade la forma:

‖t‖d∗≡ σ1 + σ3

σ2

Con este resultado teórico se realizarán un conjunto de experimentos si-milares a los expuestos en la sección 6.1.4.1.

Page 164: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 145

6.2.3. SIFT - Scale Invariant Feature Transform

SIFT es una técnica precursora de SURF propuesta por David G. Loween 2004 [115]. Esta técnica tiene una gran aceptación por la calidad de lascaracterísticas que extrae.

Para detectar puntos de interés en primer lugar se transforma la imagen Ide la que se quieren extraer los puntos mediante máscaras G de convolucióngaussiana a diferentes escalas:

G(x, y, σ) = 12πσ2 e

−(x2+y2)2σ2

Posteriormente se calculan las diferencias D entre las distintas imágenes sua-vizadas, donde ∗ es la operación de convolución en x e y:

L(x, y, σ) = G(x, y, σ) ∗ I(x, y) (6.7)

A partir de la ecuación 6.6 se define:

D(x, y, σ) = L(x, y, kσ)− L(x, y, σ)

Posteriormente, el extractor calcula máximos locales en D(x, y, σ) compa-rando con sus vecinos, tanto en la misma escala σ como en las escalas anteriory posterior. En la Figura 6.30 se pueden observar todos los píxeles con los quese realiza la comparación.

Figura 6.30: Píxeles con los que se realiza la comparación del valor de D paraencontrar máximos locales en SIFT.

Page 165: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 146

Para todos los puntos detectados se calcula un descriptor especial em-pleando la magnitud y la orientación del gradiente. Partiendo de una ventanade 16x16 píxeles se calculan histogramas de orientación como los de la partederecha de la Figura 6.31. Al final, para cada punto de interés se obtiene undescriptor de 128 parámetros de longitud (4x4x8).

Figura 6.31: Histogramas de orientación SIFT para el cálculo del descriptor.En la imagen se muestra un ejemplo de tamaño 2x2 histogramas (derecha)obtenidos a partir de una ventana de 8x8 (izquierda), el extractor utiliza unaventana de 16x16, obteniendo 4x4 histogramas de descriptores.

Las primeras pruebas experimentales con este método resultan no ser tanbuenas en cuanto a coste computacional. Aunque sea un buen método para laextracción robusta de características, no es válido para aplicaciones en tiemporeal, y para una imagen media de 752x480, como es nuestro caso, el tiempode extracción de características es del orden de segundos para cada imagen.

Page 166: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 147

6.2.4. SURF - Speeded Up Robust Features

Propuesta recientemente por Herbert Bay [111], SURF es una técnica parala extracción de puntos en una imagen, cuya principal ventaja es su robustezante cambios en la rotación o de escala. Esto hace que el posterior empare-jamiento de características entre imágenes sea muy robusto. Además lo hacecon un coste computacional inferior al de otros extractores de calidad simi-lares como SIFT [115]. A continuación se presenta una breve descripción delfuncionamiento de este método.

6.2.4.1. Puntos de interés

Lo primero que hace el algoritmo es encontrar puntos de interés dentrode la imagen. La imagen debe estar tomada en escala de grises, sin embargo,para obtener una mayor precisión numérica normaliza el valor de cada píxel,transformándolo en un valor real que se encuentre en el intervalo [0,1].

Con la matriz de píxeles ya normalizados, el algoritmo busca máximoslocales del determinante de la matriz Hessiana. Dado un píxel de la imagendefinido por sus coordenadas p = (x, y), la matriz Hessiana del punto p conun valor de escala σ se define como:

H(p, σ) =(Lxx LxyLxy Lyy

)donde Lxx, Lxy y Lyy representan las derivadas segundas parciales de la

gaussiana G(σ) respecto a las coordenadas de cada píxel p = (x, y), descritascomo:

Lxy = ∂2G(p, σ)∂x∂y

Lxx = ∂2G(p, σ)∂x2

Lyy = ∂2G(p, σ)∂y2

Para que el algoritmo sea más eficiente, en lugar de calcular las segun-das derivadas, se hace una aproximación mediante filtros en forma de caja,

Page 167: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 148

Figura 6.32: De izquierda a derecha: Las derivadas parciales de segundo ordende la Gaussiana en la dirección de ~y, en la dirección de ~xy y las aproximacionesrealizadas usando filtros de caja (box filters). Las regiones grises son igual a 0.

como los que aparecen en la Figura 6.32. Si se emplean imágenes integrales,las convoluciones para estos filtros pueden ser calculadas en muy poco tiempo.

Una imagen integral I∑ es una representación de la imagen en la que cadapíxel p = (x, y) almacena el valor del sumatorio en ~x y en ~y desde el origenhasta el punto. Este valor viene representado en la siguiente expresión:

I∑ =∑x

∑y

p(x, y)

6.2.4.2. Características de los descriptores

Para cada punto extraído en la imagen integral, se calcula un descriptorde longitud variable que identifique de forma unívoca dicho punto. Cuantomayor sea la longitud que se emplee para los descriptores, el emparejamientoserá más robusto, pero todo el proceso requerirá un mayor tiempo de proce-samiento.

Las tres características que definen a cada punto son las siguientes:

Signo del determinante de la matriz Hessiana :Se utiliza para distinguir zonas brillantes sobre fondo oscuro o viceversa.Esta característica es muy interesante, ya que clasifica los puntos en dosclases: brillantes y oscuros.

De esta forma, en el emparejamiento, mirando el signo del determinantese podrían descartar una gran cantidad de puntos sin tener que mirar elresto de los valores del descriptor.

Page 168: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.2. Objeto de referencia plano 149

Orientación del gradiente :Para cada punto extraído, el extractor define una región circular alrede-dor del mismo y calcula la orientación dominante del gradiente dentrode dicha región.

Sumatorio del gradiente :Se define una región cuadrada alrededor del punto seleccionado del ta-maño relativo a un factor de escala con el que se detectó. Dependiendodel tamaño elegido para el descriptor se subdivide la región en partesiguales (4, 9, 16 ó 32) y se calculan 4 valores en cada subregión basadosen los valores del gradiente obtenidos en la correspondiente subregión.El conjunto de valores obtenido constituye el descriptor del punto.

Ésta técnica está aún bajo desarrollo en la fecha de entrega del proyecto. Lasprimeras pruebas experimentales con códigos de prueba han dado resultadosrelativamente pobres en lo que a velocidad se refiere, aunque la eficacia en ladetección y seguimiento6.4 de los puntos es bastante buena.

6.4No se realiza ninguna tarea de seguimiento; los puntos son recalculados en cada imagende la secuencia.

Page 169: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

6.3. Otras alternativas para la realimentación visual 150

6.3. Otras alternativas para la realimentaciónvisual

Al comienzo del desarrollo del proyecto se basó la localización y segui-miento del objeto de interés en la técnica denominada template matching.Tras numerosas pruebas, finalmente se descartó por dos motivos:

Pérdida del objeto ante cambios de escala: Si se desplazaba el objeto enprofundidad respecto a la cámara, dado que la plantilla de referencia esfija, se perdía la localización del objeto en la imagen.

Pérdida del objeto ante rotación: En función de la distancia a la que seplanteara el objeto respecto de la cámara, había un límite en la rotación(bien de la cámara respecto al objeto o viceversa) en el que se perdía denuevo la localización del objeto.

Además, dados los anteriores problemas y que el método es de los denomina-dos de fuerza bruta, se optó finalmente por buscar nuevas alternativas para lalocalización y seguimiento del objeto. Los métodos propuestos en el presentecapítulo son tanto invariantes en los cambios de escala como en los cambiosde rotación. Sin embargo, existen alternativas y propuestas en [34],[36] y [60]en las que se plantean técnicas aplicadas a template matching para hacerlasinvariantes a los cambios anteriormente mencionados.

Otra posible técnica que hubiera podido ser implementada es el seguimien-to del objeto considerando solamente los contornos del mismo, tal y como seplantea en [43]. En esta propuesta, a partir de la localización de los contornosy del emparejamiento en una secuencia de imágenes, se realiza el cálculo dela matriz de homografía H entre ambas vistas. El resto de pasos es similar alo presentado en este capítulo.

Page 170: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Capítulo 7

Fusión sensorial

Hasta el momento todo lo explicado en los capítulos anteriores se corres-ponde con el conjunto de técnicas utilizadas para el control basado en visión.Pero a bordo del quadrotor es necesaria la incorporación de algún otro tipode sensor, principalmente debido a que si hubiera problemas con el sensor óp-tico y no hubiera ninguna medida de seguridad implementada, el vehículo seprecipitaría hacia el suelo, con la más que probable pérdida del mismo.

Es por ello que se requiere de una fusión sensorial completa, de manera quecuando un sensor no aporte toda la información necesaria para el control yestabilización del quadrotor, se pueda complementar con alguna otra medidaproveniente de otras fuentes.

7.1. Descripción del sensor inercial

La descripción comercial de la IMU utilizada en el presente proyecto es unaMTi-G (Figura 7.1), de Xsens Technologies B.V. Es una unidad de medidainercial, con un sistema GPS integrado, y con un procesador que mantienesiempre un sistema de referencia para la navegación y la altitud. El procesa-dor interno de bajo consumo ejecuta en tiempo real un Filtro extendido deKalman, proporcionando una estimación de la posición 3D y estimación develocidad. Dispone, entre otras funcionalidades, de aceleración 3D calibrada,brújula y barómetro.

En la Figura 7.2 se muestra un esquema de los distintos componentesy funcionalidades que posee esta unidad. Posee, entre otras, las siguientes

151

Page 171: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.1. Descripción del sensor inercial 152

Figura 7.1: Detalle externo del sensor inercial.

Figura 7.2: Detalle interno del sensor inercial.

características:

Estimación en tiempo real de las medidas de posición/velocidad y me-didas de GPS.

Sensibilidad de seguimiento -160 dBm.

Inmunidad a interferencias de tipo GPS.

Sensor de presión (barómetro).

Tasa de actualización de 120Hz, como mínimo.

Bajo consumo ∼ 910 mW.

Page 172: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.2. Funciones de interfaz con la IMU 153

7.2. Funciones de interfaz con la IMU

La comunicación entre la IMU y el PC104 de a bordo se realiza físicamentea través de un puerto tipo serie/USB. Se dispone de unos módulos softwareque ofrecen funciones de alto nivel para configurar y obtener medidas del dis-positivo. Pueden obtenerse datos de distintos tipos, fundamentalmente, datosde orientación, datos de posición y velocidad a partir del GPS, y los llama-dos ”calibrated data”, incluyendo medidas de aceleración lineal, de velocidadangular y de norte magnético. También es posible la obtención de medidasbarométricas y de temperatura. A continuación, se comentarán brevementelas funciones de alto nivel que pueden usarse como interfaz con la IMU.

7.2.1. Datos de orientación

La orientación puede ser obtenida de 3 formas distintas: como un cuater-nio unitario, mediante los ángulos de Euler o como matriz de rotación. Se haobservado el hecho de que estos datos presentan una deriva importante en,al menos, uno de los ángulos. Esto se reduce significativamente situando laantena GPS en zonas exteriores (al aire libre). En zonas interiores, la derivase logra reducir, aunque dista de desaparecer totalmente.

7.2.1.1. Cuaternio unitario

El tipo apropiado para una medida en forma de cuaternio es la siguienteestructura:

struct CmtQuat double m data[4]; ;

Se definiría un dato de este tipo:

CmtQuat qatData;

y podríamos obtener la medida con la función de lectura:

qatData = packet->getOriQuat(0);

Todas las funciones del tipo get...() tienen como argumento el número deldispositivo imu del cual toman las medidas. En nuestro caso, será siempre 0,debido que tan solo hay un sensor de este tipo en el sistema.

Page 173: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.2. Funciones de interfaz con la IMU 154

7.2.1.2. Ángulos de Euler XYZ (Roll, Pitch and Yaw)

Se puede obtener la orientación mediante la tripleta de ángulos de Eulerrespecto a ejes fijos. Cabe destacar que las medidas de estos ángulos se danen grados, no en radianes. La estructura de datos asociada es la siguiente:

struct CmtEuler

double m_roll; // Rotation around x-axis / back-front-linedouble m_pitch; // Rotation around y-axis / right-left-linedouble m_yaw; // Rotation around z-axis / down-up-line;

Se definiría un dato de este tipo:

CmtEuler eulerData;

y podríamos obtener la medida mediante:

eulerData = packet->getOriEuler (0);

Los ángulos de Euler tienen una indeterminación cuando el segundo ánguloestá próximo o es igual a los +90º ó -90º. Esta indeterminación no existe enformato cuaternio o matriz de rotación.

7.2.1.3. Matriz de Rotación

Si lo deseamos, podemos pedir que se nos facilite la matriz de rotacióncompleta. La estructura asociada es la siguiente:

struct CmtMatrix

double m data[3][3];;

Podemos definir un dato de este tipo mediante:

CmtMatrix matrixData;

y obtener la matriz usando la función:

matrixData = packet->getOriMatrix(0);

Page 174: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.2. Funciones de interfaz con la IMU 155

7.2.2. “Calibrated Data”

Permite obtener la medida de tres sensores: acelerómetro, giróscopo y brú-jula.

Acelerómetro :Ofrece una medida de la aceleración lineal (enm/s2) de la IMU respectoal sistema inercial, pero expresado respecto al propio sistema de la IMU.Un inconveniente de esta medida es que lleva incorporado el efecto de laaceleración de la gravedad. Es como si, en situación de reposo, la IMU seestuviera moviendo en dirección vertical hacia arriba con una aceleraciónigual a la de la gravedad, aproximadamente: [0, 0, 9,713923]T .

Giróscopo (”gyro”) :Proporciona un vector velocidad angular (en rad/s) de la IMU respectoal sistema inercial, pero expresado respecto al propio sistema de la IMU.

Brújula (”compass”) :Aporta la dirección del vector norte magnético respecto al sistema decoordenadas local de la IMU. Las unidades son en a.u. (”arbitrary units”,unidades normalizadas con la fuerza del campo magnético de la Tierra).Dadas las unidades, de esta medida probablemente sólo tenga sentidousar la dirección.

Conviene insistir en que estas medidas no están expresadas respecto al sistemade coordenadas inercial. La estructura asociada es la siguiente:

struct CmtCalData

CmtVector m acc, m gyr, m mag;;

Cada uno de los vectores es del tipo:

struct CmtVector

double m data[3];;

Podemos definir un dato de este tipo:

CmtCalData calData;

Page 175: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.2. Funciones de interfaz con la IMU 156

y obtener en él la medida mediante:

calData = packet->getCalData(0);

O bien, para acceder selectivamente:

...= packet->getCalAcc(0);

...= packet->getCalGyr(0);

...= packet->getCalMag(0);

Hay otra opción para obtener los ”calibrated data”, se trata del formato ”rawdata”, en formato entero, sin convertir, y donde va la temperatura ya integra-da. En este caso, la estructura es la siguiente:

struct CmtRawData

CmtShortVector m_acc, m_gyr, m_mag;uint16_t m_temp;

Cada uno de los vectores es del tipo:

CmtShortVector: struct CmtShortVector uint16 t m data[3]; ;.

Podemos definir un dato de este tipo:

CmtRawData rawData;

y obtener la medida mediante:

rawData = packet->getRawData(0);

Por otro lado, puede obtenerse la medida de temperatura aisladamente:

double temperat = packet->getTemp(0);

Page 176: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.3. Medidas incompletas de la IMU 157

7.3. Medidas incompletas de la IMU

En principio, se asume que la IMU proporciona una medida relativamenteprecisa de la orientación y de la velocidad angular, así como de la aceleraciónlineal: θ,ω y a, respectivamente. Estos datos se obtendrían con las llamadasa las funciones:

a ← getCalAcc(0)ω ← getCalGyr(0)θ ← getOriEuler(0) o alternativamente: getOriQuat(0), getOriMatrix(0).

Estas medidas son orientaciones, velocidades etc. del sistema de coorde-nadas ligado a la IMU (al que en adelante denominaremos =, de ”gyro”),respecto del sistema de coordenadas inercial (al que denominaremos W , de”world coordinate system”).

En particular, la orientación viene expresada respecto al sistema de refe-rencia inercial, mientras que la velocidad angular y aceleración lineal vienenexpresadas respecto al sistema de coordenadas móvil de la IMU. Para repre-sentar este hecho, completaremos nuestra nomenclatura de la siguiente forma:

ωa(g)g ← getCalAcc(0)

ωω(g)g ← getCalGyr(0)

ωθ(g)g ≡ ωθ(w)

g ←getOriEuler(0)

Sin embargo, nos interesan todas las medidas respecto al sistema de referenciainercial:

ωagωωgωθg

=

ωRg · a(g)

gωRg · ω(g)

gωθg

donde ωRg es la matriz de rotación equivalente a la tripleta de ángulosωθg = [φ, θ, ψ]T . Para obtener una medida efectiva de la aceleración lineal, esnecesario eliminar la contribución de la gravedad:

ωtg = ωag −ω g, siendo gω ≈ [0, 0, 9,713923]T

Page 177: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.3. Medidas incompletas de la IMU 158

Por otro lado, en lugar de la velocidad angular ωωg, nos interesa la deri-vada de los propios ángulos: ωθg. La relación entre ambos vectores viene dadapor:

ωθg =

1 −r31r32

r232+r2

33

−r31r33r2

32+r233

0 r33√r2

32+r233

−r32√r2

32+r233

0 r32r2

32+r233

r33r2

32+r233

·ω ωg

Con esto, es posible componer un vector de medida preliminar, de la forma:

xraw =

ωtgωθgωθg

Desde el punto de vista del control, resulta más interesante disponer deestimaciones tanto de la velocidad como de la posición lineal, en lugar de laaceleración. A partir de dicha aceleración lineal, se puede obtener por softwareuna estimación de la velocidad lineal. En principio, la opción más inmediata eshacer una estimación discreta mediante Euler hacia atrás, usando un períodode integración fijo Tm:

ωtg(k) ≈ ωtg(k − 1) + Tmωtg(k)

También podría pensarse en métodos más elaborados para realizar estaestimación de la velocidad. Por un lado, se puede optar por filtrar la señal deaceleración lineal despues de realizar un estudio de su espectro frecuencial encondiciones normales. Por otro lado, en ausencia de un filtrado apropiado dela aceleración, podría suavizarse su efecto en la integral simplemente modifi-cando la ecuación anterior por:

ωtg(k) ≈ ωtg(k − 1) + Tm2 (ωtg(k) + ωtg(k − 1))

Page 178: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.3. Medidas incompletas de la IMU 159

En caso de que se estime que el periodo no es suficientemente constantede un ciclo al siguiente, habría que modificar esta relación por la siguiente:

ωtg(k) ≈ ωtg(k − 1) + 12(T (k) ωtg(k) + T (k − 1) ωtg(k − 1))

Donde se tiene que T (k) se define como el tiempo transcurrido desde quese tomó la medida (k − 1) hasta que se tomó la medida k .

Lo que no parece viable es aplicar el mismo mecanismo de integración (encualquiera de sus variantes) para obtener una aproximación de la posición,puesto que es previsible que integrar dos veces una medida dé resultados pocoaceptables. De este modo, se asumirá que, con la IMU únicamente podemosllegar a disponer de un vector de medida ampliado respecto al anterior, de laforma:

ximu =

ωtgωtgωθgωθg

Sin embargo, lo que interesa como vector para la realimentación del controles:

x =

ωtgωtgωθgωθg

(7.1)

Para resolver esta deficiencia es para lo que se plantea la inclusión delsensor óptico en el sistema, cuyo modelo ya se ha explicado en el capítulo 5.A continuación se detalla cómo sería el proceso de integración entre el sensorinercial y el sensor óptico.

Page 179: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.4. Fusión de la información 160

7.4. Fusión de la información

En este punto se dispone de información que puede ser redundante y otraque es complementaria. Por un lado, dado que se asume que la orientación queproporciona la IMU por sí sola es suficientemente precisa, se puede extraerla parte del vector de medida correspondiente a wθg . Por otra parte, dadala dificultad de obtener una medida directa de wtg, se opta por reemplazarlapor otg. Asimismo, se realizará una estimación de la derivada de este últimovector: otg. Esto conlleva a un nuevo vector de medida:

o,wxg =

otgotgwθgwθg

el cual tendría como característica poco deseable que no todos sus elemen-

tos están referidos al mismo sistema de coordenadas. Pese a que tal vez esto nosupusiera ningún problema, resulta más natural tener todos los componentesdel vector de medida referidos al mismo sistema de coordenadas, W. Paraello, se se realizará un paso previo de multiplicación de otg como de otg por lamatriz de orientación ωRo:

ot(w)g =w R0 ·o tg

ot(w)g =w R0 ·o tg

Resulta, por tanto, necesario disponer de la matriz wR0. Esta matriz puedeobtenerse en cada momento de la siguiente forma:

wR0 =w Rg ·g Rc ·o R(−1)c

Con todo esto, se puede ofrecer el vector de medida definitivo:

wxg =

ot(w)g

wt(w)g

wθgwθg

Desde el punto de vista del control, la única diferencia apreciable respec-

to al uso del vector de medida mostrado en 7.1 es que, aún manteniendo lareferencia constante, si se mueve el objeto, se moverá el quadrotor (si biensin cambiar su orientación), para reubicarse en la misma posición relativa alobjeto, que es quien fija la referencia.

Page 180: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.5. Calibración IMU-Cámara 161

7.5. Calibración IMU-Cámara

El acomplamiento mecánico entre la IMU y la cámara se ha realizado apartir del diseño de la pieza que aparece en la Figura 7.3. Por su parte, en laFigura 7.4 se puede apreciar la disposición relativa de los dos sensores con laubicación aproximada de los sistemas de coordenadas respectivos.

El proceso de calibración IMU-cámara consiste en estimar precisamenteesa disposición relativa de los dos sistemas de coordenadas. En particular, sebusca estimar la posición y orientación del sistema de coordenadas de la cá-mara C respecto al de la IMU G.

Figura 7.3: Diseño del acoplamiento entre la imu y la cámara.

Para realizar esta calibración, se utilizó en primera instancia el métodoconocido como hand-eye calibration de Tsai y Lenz [72], que tradicionalmentese emplea para la calibración entre la cámara y el efector final de un robot

Page 181: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.5. Calibración IMU-Cámara 162

Figura 7.4: Acoplamiento real entre la cámara y el sensor inercial.

manipulador al que está rígidamente acoplada aquélla. Para realizar esta cali-bración es necesario recurrir de nuevo a un objeto de geometría conocida, deltipo tablero de ajedrez, por ejemplo.

El método parte de la captura de varias imágenes desde diversos puntosde vista de dicho objeto, el cual debe permanecer inmóvil, mientras se varíanlas posiciones de la cámara haciendo uso del brazo articulado. Para cada unode los puntos de vista, debe registrarse la posición del efector final del brazomanipulador y realizar una estimación de la posición y orientación del objetorespecto a la cámara.

Con esta información, se aplica el algoritmo que proporcionará la transfor-mación homogénea de la cámara al sistema de coordenadas ligado al efectorfinal del robot. Para que el resultado sea aceptable, los puntos de vista debencumplir algunos requisitos, como que el desplazamiento entre los distintas po-siciones no sea suficientemente grande y que existan al menos dos pares detomas entre las cuales la rotación se realice en torno a ejes no paralelos.

En el presente caso, el papel del efector final lo debe desempeñar de algunaforma la IMU. La diferencia fundamental estriba en que, si bien la IMU pue-de proporcionar información de orientación (respecto a un sistema inercial),es incapaz de proporcionar una medida de posición que permita conocer eldesplazamiento que la misma ha sufrido desde un punto de vista a otro.

Dada esta importante limitación, una opción era hacer las diversas tomasintentando que el origen del sistema de coordenadas de la IMU no se despla-

Page 182: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.5. Calibración IMU-Cámara 163

zara en ningún momento y jugar únicamente con la orientación para conseguirpuntos de vista diferentes del objeto. Es evidente que, al realizar este tipo demovimientos, la cámara sí que sufriría algún desplazamiento, aunque bastantelimitado, dada la proximidad entre ambos elementos.

Para intentar garantizar, en la medida de lo posible, que el origen del sis-tema de coordenadas de la IMU no sufriera ningún desplazamiento duranteel experimento, se optó por utilizar dos punteros lásers inmóviles, dispues-tos en sendos trípodes de tal forma que sus rayos intersectaran en un puntoen el espacio. Idealmente, en ese punto se colocaría el origen del sistema decoordenadas de la IMU. Sin embargo, de acuerdo con la documentación delsensor inercial, el origen del sistema de coordenadas de la IMU no coincidecon ningún punto de la carcasa del dispositivo, sino con un punto interior.

Pese a todo, la localización del mismo es conocida respecto a un puntocaracterístico del exterior (ver punto en rojo próximo a la esquina superiorderecha de la IMU en la Figura 7.3). Este mismo punto se resalta en la parteizquierda de la Figura 7.4. Se sabe que la posición de dicho punto respecto alsistema de coordenadas de la IMU es:

[x, y, z] = [12, 22,9,−9,5] , expresado enmm.

Lo que se intentó en los experimentos era forzar a que ese punto fuera elque permaneciera inmóvil. De esta forma, el origen de la IMU sí se habríadesplazado, pero este desplazamiento es fácilmente calculable.

En la Figura 7.5 puede apreciarse la disposición de todos los elementos,mientras que en la Figura 7.6 puede verse marcado por los lásers el puntousado como centro de los giros.

Los resultados de la calibración cámara-IMU empleando el método hand-eye calibration referido no fueron satisfactorios. Ello se atribuye a que losdesplazamientos entre unas posiciones y otras fueron todos excesivamente re-ducidos. Como alternativa, se propuso usar un nuevo método, propuesto porAndreff et al. [122], el cual permite una estimación robusta de la disposiciónentre una cámara y un elemento electromecánico incluso en situaciones singu-lares, tales como rotación pura y traslación pura.

Page 183: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.5. Calibración IMU-Cámara 164

Figura 7.5: Montaje para el proceso de calibración.

En una primera aproximación, más o menos simple, se realizó ésta cali-bración partiendo de una estimación de la posición del origen del sistema decoordenadas de la cámara, de las medidas de la pieza de acoplamiento y de lasituación teórica del sistema de coordenadas de la IMU.

Para la estimación de la posición del sistema de coordenadas de la cámara,es necesario tener en cuenta que la mayor incertidumbre está presente en laposición a lo largo del eje óptico, mientras que para los ejes X e Y se toma elcentro de la lente (ver Figura 7.4 izquierda). Los experimentos llevados a cabopara hacer esta estimación consistieron en hacer pares de tomas, de tal formaque en cada par se realizaba un giro de la cámara respecto a su eje Y, dejandola plantilla inmóvil e intentando que el giro fuera lo más amplio posible sinque dicha plantilla se saliera de la imagen.

Se apuntaría con el láser desde arriba de forma que se garantizara que elgiro se realizaba en torno al punto marcado sobre la lente por el láser (verFigura 7.7). La única diferencia entre cada par de tomas era que la cámara sehabría desplazado a lo largo del eje Z algunos milímetros7.1.

7.1Recalcar que de un par de tomas al siguiente, el objeto puede moverse libremente.

Page 184: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.5. Calibración IMU-Cámara 165

Figura 7.6: Detalle del puntero láser sobre el centro de referencia.

Para la primera y segunda toma de cada par, se estimará la posición yorientación de la plantilla respecto a la cámara, c1To y c2To, respectivamente.A continuación, se estima la transformación:

c1Tc2 =c1 T c2o T−1

o

De todos los giros analizados, aquél para el que el desplazamiento de lacámara de la primera a la segunda toma tenga menor módulo, debería corres-ponderse con la situación del origen de la cámara coincidente con la profun-didad marcada por el láser:

min(‖c1 tc2 ‖)

Page 185: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.5. Calibración IMU-Cámara 166

Figura 7.7: Detalle de la primera estimación para el centro de referencia delsistema de la cámara.

En una primera estimación, se obtuvo que la profundidad de la lente a laque se encontraba el origen de la cámara era la que aparece en la Figura 7.7.Esto hacía que la posición del origen del sistema de coordenadas de la cámararespecto a la IMU estuviera situada en:

gtc = [−28,51,−53− 2,−21]T (mm)En una segunda estimación (Figura 7.8), esta medida se corrigió, obtenién-

dose finalmente:

gtc = [−28,51,−53− 2,−37]T (mm)

correspondiendo con la ubicación que se muestra en las Figuras 7.3 y 7.4(derecha).

Page 186: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.5. Calibración IMU-Cámara 167

Figura 7.8: Detalle de la segunda estimación (definitivo) para el centro dereferencia del sistema de la cámara.

En lo que respecta a la orientación, de forma aproximada, se estima quepara llevar el sistema de coordenadas de la IMU al de la cámara, basta conrealizar un giro respecto al eje Y de la IMU de 180 grados. Expresado enforma de RPY, se tendría que:

gθc = [0, π, 0]T

Resultando como matriz de transformación del sistema cámara-IMU lasiguiente:

gTc =

−1 0 0 −28,510 1 0 −53,20 0 −1 −370 0 0 1

(10−3m)

Page 187: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.6. Otras alternativas de realimentación sensorial 168

7.6. Otras alternativas de realimentación sen-sorial

Tal y como se mostró en el Capítulo 2, existe una gran variedad de sen-sores con los que poder realizar controladores relativamente robustos para elcontrol de vuelo de los UAV. Desde sensores inerciales, como los usados en lapropuesta de este proyecto, hasta sensores de posicionamiento con GPS, entreotros.

Pero en la literatura también se proponen distintas alternativas para elcontrol no basadas en imagen. Un ejemplo es el mostrado en [53], en el quese propone un sensor basado en luz infraroja para la estimación de la alturade un vehículo aéreo no tripulado. Precisamente haciendo uso de este tipo desensores, se muestra en [36,2] un experimento bastante curioso. Se instalan unconjunto de cámaras en la zona de vuelo del helicóptero, basadas en luz infra-roja, para calcular en cada momento mediante triangularización la posiciónactual del vehículo.

Figura 7.9: Control de UAV mediante cámaras infrarojas.

Con ésta técnica, es posible realizar maniobras a gran velocidad, como porejemplo pasar a través de un pequeño hueco en una pared a una velocidad devarios m/s (Figura 7.9) o esquivar obstáculos en tiempo real. A diferencia delcontrol visual planteado en el presente proyecto, la cámara en estos casos nova a bordo del quadrotor.

Page 188: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.6. Otras alternativas de realimentación sensorial 169

Otra propuesta para un control distinto al presentado en esta sección es lamostrada en [5], en la que se describe un controlador de vuelo y de navegaciónpara un vehículo aéreo no tripulado de ala fija (distinto al quadrotor)(Figura7.10) con sensores de bajo coste, tales como altímetros barométricos o medi-dores para la velocidad del aire, para mejorar la eficiencia en la gestión deposibles situaciones de emergencia. Se incluyen además filtros adaptativos deKalman para obtener medidas más robustas para el control de la altitud yuna red neuronal para el control de la actitud.

Figura 7.10: Vehículo aéreo de ala fija.

Page 189: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

7.6. Otras alternativas de realimentación sensorial 170

Page 190: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Capítulo 8

Hardware y modelado delhelicóptero Quadrotor

En este capítulo, en primer lugar, se describen a nivel teórico las ecuacio-nes que gobiernan la dinámica del movimiento del quadrotor. Posteriormentese incluye el esquema general de control para la estabilización del quadrotor,incluyendo el sistema de visión y el sensor inercial, cerrando el lazo de control.Por último, se describe en conjunto todos los componentes que conforman elhardware del sistema.

Todo lo relacionado con el modelado lineal del sistema del quadrotor y laspropuestas de estructuras de control para el seguimiento de trayectorias seha extraído del documento [52], trabajo fin de Máster de Guilherme Vianna,integrante del grupo de investigación.

8.1. Descripción del modelo del quadrotor8.1.1. Descripción del modelo del UAV

El vehículo aéreo utilizado es un helicóptero en miniatura con cuatro roto-res coplanarios (quadrotor), como el representado en la Figura 8.1. El movi-miento del mismo se origina a partir de los cambios de velocidad de los rotores,los cuales constan de un motor eléctrico de corriente continua, un mecanismode engranaje y un rotor de palas. Para lograr movimiento hacia adelante lavelocidad del rotor trasero debe ser aumentada y, simultáneamente, la veloci-dad del rotor delantero debe ser disminuida.

171

Page 191: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

8.1. Descripción del modelo del quadrotor 172

El desplazamiento lateral se ejecuta con el mismo procedimiento, perousando los rotores de la derecha y de la izquierda. El movimiento de guiñada(yaw) se obtiene a partir de la diferencia en el par de torsión entre cada parde rotores, es decir, se aceleran los dos rotores con sentido horario mientras sedesaceleran los rotores con sentido anti-horario, y vice-versa.

Figura 8.1: Esquema básico de funcionamiento del quadrotor.

8.1.2. Planteamiento del modelo del sistema

En esta sección se presenta el modelado basado en leyes físicas que des-criben la posición y orientación del helicóptero quadrotor. Para obtener elmodelo dinámico se supone al vehículo como un cuerpo rígido en el espacio,sujeto a una fuerza principal (empuje) y tres momentos (pares). En la Figura8.2 se muestra las fuerzas que ejercen las distintas hélices para generar el mo-vimiento del vehículo.

Para generar un movimiento de balanceo o de roll (ángulo φ) se realizamediante un desequilibrio entre las fuerzas f2 y f 4 (ver Figura 8.2). Para elmovimiento de cabeceo o de pitch (ángulo θ), el desequilibrio a realizar seráentre las fuerzas f1 y f3. El movimiento en el ángulo de guiñada o de yaw(ángulo ψ) se realizará por el desequilibrio ente los conjuntos de fuerzas (f2,f4) y (f1 , f3). Este movimiento es posible ya que los rotores 1 y 3 giran ensentido contrario a los rotores 2 y 4. Para concluir, el empuje total que provocaque el helicóptero se desplace perpendicularmente al plano de los rotores, seobtiene como la suma de las cuatro fuerzas que ejercen los rotores.

Page 192: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

8.1. Descripción del modelo del quadrotor 173

Figura 8.2: Conjunto de fuerzas sobre el modelo ideal del quadrotor.

Un comentario más al respecto está relacionado con los efectos giroscópicosresultantes, tanto del cuerpo rígido rotando en el espacio como de la rotaciónde las cuatro hélices. En la siguiente tabla se muestran los principales efectosfísicos que actúan sobre el helicóptero.

Término CorrespondenciaC Términos constantesΩ Velocidad angular del rotorJR Momento de inercia rotacionall Distancia del centro de masa a los rotoresJ Momento de inercia del cuerpo rígido

φ, θ, ψ Ángulos de Tait-Bryan

Page 193: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

8.1. Descripción del modelo del quadrotor 174

Efectos Fuentes FormulaciónEfectos Aerodinámicos - Rotación de los rotores.

- Giro de hélices. CΩ2

Pares Inerciales Opuestos - Cambio en la velocidad derotación de los rotores. JRΩ

Efectos de la Gravedad - Posición del centro de masa. l- Cambio en la orientación

Efectos del cuerpo rígido. JθψGiroscópicos - Cambio en la orientación

del plano de los rotores. JRΩθ, φFricción - Conjunto de movimientos.

del helicóptero Cφ,θ, ψ

Respecto al modelo del helicóptero, se asume que el centro de masa escoincidente con el origen del sistema de coordenadas fijo al helicóptero, y sesupone que la estructura del mismo es simétrica, lo que resulta en la matrizde inercia diagonal.

Para la estimación de la posición y orientación del vehículo respecto a unsistema de coordenadas de referencia inercial W, se tiene en cuenta que elhelicóptero está caracterizado por un sistema de coordenadas ligado a él y conorigen en su centro de masa (Figura 8.2).

Este sistema se define considerando B = −→xL,−→yL,−→zL como el sistema decoordenadas fijo al helicóptero, donde el eje −→xL es la dirección normal de ata-que del helicóptero, −→yL es ortogonal a −→xL y es positivo hacia estribor en elplano horizontal, mientras que −→zL está orientado en sentido ascendente y or-togonal al plano −→xLO−→yL. El sistema de coordenadas inercial,W = −→x ,−→y ,−→z se considera fijo respecto a tierra.

En [52] se designa el vector ξ = x, y, z como la posición del centro demasa del helicóptero con respecto al sistema inercial W . De igual modo, laorientación del vehículo viene dada por la matriz de rotación RW : B −→ W ,donde RW es una matriz de rotación RPY.

La rotación de un cuerpo rígido puede ser representada mediante los án-gulos de Tait-Bryan, los cuales, son tres ángulos usados para describir unarotación general en el espacio Euclideo tridimensional a través de tres rotacio-nes sucesivas entorno al sistema de ejes móvil sobre el que están definidas. Así,la configuración de la rotación de un cuerpo rígido en el espacio es realizadaa través de tres rotaciones sucesivas:

Page 194: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

8.1. Descripción del modelo del quadrotor 175

Rotación según ~x de φ: el primer giro es el correspondiente al ángulo deroll o de balanceo, φ , y se realiza alrededor del eje ~x .

Rotación según ~y de θ : el segundo giro se realiza alrededor del eje ~y apartir del nuevo eje ~yL , con el ángulo pitch o de cabeceo, θ , para dejarel eje ~zL en su posición final.

Rotación según ~z de ψ : el tercer giro y última rotación corresponde alángulo de guiñada o yaw, ψ , alrededor del eje ~z a partir del nuevo eje~zL para llevar al helicóptero a su posición final.

A partir de las rotaciones presentadas anteriormente, se pueden definir las ma-trices de rotación y tipo de rotación que representan la orientación del cuerporígido rotando alrededor de cada eje.

Si se denominan a estas matrices R(x, φ),R(y, θ) y R(z, ψ), la matriz derotación completa de B respecto deW , denominada matriz de coseno directa,viene dada por la expresión:

RW = R(z, ψ) ·R(y, θ) ·R(x, φ).

Sin entrar en detalles matemáticos, la matriz de rotación expresada enel sistema de coordenadas de B es la traspuesta de RW debido a que dichamatriz es ortonormal. A partir de la matriz RW y relacionando la derivadade la matriz ortonormal con una matriz anti-simétrica, se pueden obtener lasecuaciones cinématicas de rotación del vehículo que establecen las relacionesentre las velocidades angulares.

La relación entre las velocidades angulares en el sistema fijado al cuerpo yla variación en el tiempo de los ángulos de Tait-Bryan viene dada por:

ω =

1 0 −sinθ0 cosφ sinφ cosθ0 −sinφ cosφ cosθ

φ

θ

ψ

El movimiento rotacional del helicóptero viene dado por las componentesde las velocidad angular en los tres ejes: velocidad angular de balanceo (p),velocidad angular de cabeceo (q), y velocidad angular de guiñada (r), sobre

Page 195: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

8.1. Descripción del modelo del quadrotor 176

los ejes −→xL,−→yL,−→zL respectivamente.

Estas velocidades rotacionales son debidas a los pares ejercidos sobre elsistema ligado al cuerpo del helicóptero producidas por las fuerzas externas,las cuales definen los diferentes momentos en los tres ejes: momento de balan-ceo (L), momento de cabeceo (M), y momento de guiñada (N) sobre los ejes−→xL,−→yL,−→zL respectivamente.

El movimiento de traslación viene dado por las componentes de la velo-cidad v0 en los tres ejes inerciales con relación a la velocidad absoluta delhelicóptero expresada en la base B, V0. Las velocidades v y V están relacio-nadas por la expresión: v0 = RW ·V0.

8.1.2.1. Ecuaciones dinámicas del helicóptero

Las ecuaciones dinámicas de un cuerpo rígido sujeto a fuerzas externasaplicadas al centro de masa y expresadas en el sistema de coordenadas B sepueden obtener a través de la formulación de Newton-Euler como sigue:

[mI3x3 0

0 J

] [vω

]+[ω ×mVω × Jω

]=[F + Fdτ + τd

]

donde J ∈ R3x3 es la llamada matriz de inercia, I3x3 es la matriz identidad,v es el vector de velocidad translacional, ω es el vector de velocidad angulary m es la masa total del helicóptero.

De acuerdo con las suposiciones anteriores, la matriz de inercia J se pue-de suponer diagonal, y si consideramos el vector de estado ζ = [ξ v′ η ω]Tdonde ξ y v′ representan la posición y la velocidad lineal expresada en W ,η = [φ θ ψ] y ω es la velocidad angular expresada en el sistema del helicóp-tero, se pueden reescribir las ecuaciones de movimiento de un cuerpo rígidocomo (idéntico resultado en [3]):

Page 196: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

8.1. Descripción del modelo del quadrotor 177

ξ = v

m ˙v′ = RIFBRW = RWS(ω)

Jω = −ω × Jω + τb

donde ξ = v′ = RWV y S(ω) = RTWRW

Por otra parte, FB y τB , definidas en el sistema del helicóptero, son lasfuerzas y pares externos aplicados al cuerpo del helicóptero, y consisten basi-camente en su propio peso, en el vector de fuerzas aerodinámicas, en el empujey en los pared desarrollados por los cuatro motores.

Reescribiendo las ecuaciones, y considerando, entre otros, la suma del to-tal de fuerzas de los rotores, se obtiene la ecuación diferencial no lineal quecaracteriza al sistema:

ζ = f(ζ) +4∑i=1

gi(ζ)Ui

donde:

ζ: Vector de estados, de la forma ζ = [ξ v′ η ω]T .

Ui: Entrada principal de control aplicada sobre el motor i-ésimo.

f, g: Expresiones definidas en [52] en función de ζ.

Según se concluye, se determina que la expresión anterior es suficiente para eldiseño de un controlador en el cual se consideran los momentos aerodinámicosy las fuerzas que puedan actuar sobre el vehículo en entornos desconocidoscomo un conjunto de perturbaciones externas.

En el diagrama de la sección 8.2, se muestra el conjunto de vectores demedidas que se definen para cada elemento, y la relación en el esquema decontrol realimentado para el control del quadrotor. En este caso se definecomo:

ϕ =

φθψ

Page 197: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

8.1. Descripción del modelo del quadrotor 178

al vector que contiene la rotación respecto a cada eje, el cual se definetanto para la IMU como para la cámara, de la forma WϕG para el caso de laIMU respecto del sistema inercial y OϕC para el caso de la cámara respectodel sistema del objeto.

Del mismo modo se añaden al sistema dos nuevos vectores de estado; elprimer de ellos ya se definió en el capítulo de la fusión sensorial, y recogetoda la información que aporta la IMU y la cámara, el cual tiene la siguienteexpresión:

WxG =

Op(W)G

W pGWϕGWϕG

Tras el proceso de fusión sensorial, el vector de estado con el que se reali-mentaría al lazo de control es el expresado anteriormente: WxG. Sin embargo,el vector anterior expresa velocidad, posición y ángulos de la IMU (G) res-pecto al sistema de coordenadas inercial W , siendo incompatible con lasentradas del controlador, el cual, requiere de medidas que estén expresadasrespecto al sistema de referencia del quadrotor, B.

Para solventar este problema, se supone de la existencia de un dispositi-vo tipo caja negra, denominado “Transformación”, entre el bloque de fusiónsensorial y el controlador, de forma que se pueda adaptar el vector de estadosWxG al sistema de referencia del quadrotor, B, mediante la siguiente expre-sión:

WxB =

WpBW pBWϕBWϕB

Dado el conjunto anterior de expresiones, en la sección siguiente se presentael esquema general de control del quadrotor.

Page 198: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

8.1. Descripción del modelo del quadrotor 179

Page 199: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

8.2. Esquema general de control 180

8.2. Esquema general de control

Page 200: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

8.3. Descripción del equipo 181

8.3. Descripción del equipo

La plataforma que se ha utilizado para el conjunto de experimentos es unhelicóptero en miniatura (Figura 8.3) propulsado por cuatro rotores (Figura8.4). A bordo del aparato se colocan los siguientes sensores:

Cámara uEye modelo u220. Resolución de 752x480, a unos 40 fps, pro-fundidad de color de 8 bits.

Sensor de medida inercial (IMU), para los datos de aceleración y posi-ción mediante GPS.

PC 104 Cool LiteRunner-ECO, de la compañia LIPPERT EmbeddedComputers GmbH. Aparte de los puertos de E/S de los que dispone esteequipo, el equipo dispone de un µ-procesador Intel Atom Z510 a 1.6Ghz de doble núcleo, con 2 GB de memoria DRAM y hasta 4 GB dememoria FLASH como soporte para memoria principal. Los motivos porlos cuales se ha escogido este equipo son:

• Equipo de bajo consumo (∼ 11 W).• Dado que toda la tarea de procesamiento de imágenes es llevada a

cabo on-board (no va a existir un equipo off-line que se encarguede gestionar el procesamiento visual y de enviar las consignas decontrol a los motores, como en [3]), se precisa de un procesadorque al menos fuera de doble núcleo, incluyendo además suficientememoria dinámica, para evitar que el equipo supusiera un cuellode botella en el sistema. En la Figura 8.5 se puede ver en detalleuna ilustración de este elemento.

En la Figura 8.6 se muestra el acoplamiento mecánico entre la cámara y elsensor inercial.

Page 201: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

8.3. Descripción del equipo 182

Figura 8.3: Detalle del helicóptero en miniatura.

Figura 8.4: Detalle de uno de los rotores integrados en el quadrotor, en fasede pruebas.

Page 202: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

8.3. Descripción del equipo 183

Figura 8.5: Equipo integrado on-board PC-104.

Figura 8.6: Detalle de integración de los sensores inercial y óptico a bordo delquadrotor.

Page 203: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Capítulo 9

Trabajos futuros y conclusión

9.1. Ampliaciones y otras alternativas para elcontrol

Debido a la formación obtenida correspondiente a Ingeniería en Informá-tica, el autor ve este campo desde otro punto de vista al que lo pudiera ver,por ejemplo, un Ingeniero en Aeronáutica. Dada la formación en asignaturascomo Inteligencia Artificial o Procesadores de Lenguajes, a continuación seexponen posibles ampliaciones o nuevos proyectos que versan sobre este área,y las conclusiones derivadas de la finalización del proyecto.

9.1.1. Open Tracking Library

Enlace indicado en [125], se trata de una librería para desarrollar aplica-ciones para el seguimiento tridimensional de objetos en el espacio. Hace usode la librería OpenGL para la visualización de los resultados. Las principalescaracterísticas de la misma son las siguientes:

Arquitectura software modular, con programación orientada a objetos.

Conjunto de algoritmos y técnicas básicas para el procesamiento digitalde imágenes: filtros Bayesianos, representación de la posición, almace-namiento, etc.

Algoritmos optimizados con soporte para tiempo real y procesamientoGPU (Graphic Processor Unit).

Abstracción genérica de sensores del tipo cámara, rádar, GPS, etc.

184

Page 204: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

9.1. Ampliaciones y otras alternativas para el control 185

Posibilidad de integración multiplataforma.

Sería interesante poder desarrollar algún código con esta librería, pero debidoa falta de tiempo se deja como una posible alternativa para el desarrollo futurode aplicaciones para el control visual.

9.1.2. Lenguaje de comunicación de UAVs

Esta parcela es más relativa a lo visto en la Titulación del autor que alo propio que se haya podido aprender en este proyecto. Esta propuesta deun posible lenguaje para UAVs partió como un trabajo voluntario para unaasignatura de procesadores de lenguajes.

Sería muy interesante poder desarrollar esta idea, porque a partir de vehícu-los aéreos realmente autónomos, es posible generar una comunicación entreellos con un formato determinado, y poder realizar tareas complejas. A conti-nuación se detalla brevemente esta propuesta.

9.1.2.1. Características del lenguaje propuesto

El lenguaje presentado es una combinación de dos lenguajes completamen-te distintos; por un lado, se han extraído ideas del lenguaje propuesto en [126],el cual es una propuesta de un lenguaje para comunicación en sistemas mul-tiagentes. Este lenguaje se adapta a un sistema multiagente de forma eficazporque es orientado a objetos, lo que le da cierta flexibilidad para la definiciónde distintos tipos de atributos y/o métodos. Un ejemplo del mismo se muestraa continuación:

value CommunicationService is abstraction ()

Send_Receive : Connection[Message];Transmit_Deliver : Connection[any];..choose //send messagevia Send_Receive receive message_out;unobservable;...via Transmit_Deliver send transmit_out;

Page 205: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

9.1. Ampliaciones y otras alternativas para el control 186

or

...

El otro lenguaje del cual también se han extraído varias ideas es el presentadoen [127]. En este documento se propone un lenguaje para la comunicación entreun vehículo aéreo no tripulado (UAV) y una torre de control. Lo singular quepresenta esta propuesta es que la comunicación se basa en el lenguaje natural,con lo que aparentemente es relativamente sencillo de entender e implementar.Un ejemplo del mismo se muestra a continuación:

HORIZON: Inbound.CONTROLLER: Horizon. Clear to land runway 29.HORIZON: Roger. Preparing to land on runway 29.

Así pues, queda mostrar un ejemplo del lenguaje propuesto. Cabe destacar queno es más que una primera propuesta, con bastantes elementos mejorables:

CONTROL_MODULE task1OPEN

>STATE_DEFINITION OPEN:<GROUP : identificadorGrupo1>

UAV_SETUAV_DEFUAV_ID := UAV2UAV_POSITION

GPS_COORDENATE := (11p3822)GPS_ALTITUDE := (23)

END UAV_POSITIONEND UAV_DEF...

END UAV_SET <GROUP;>>STATE_DEFINITION CLOSE;

>CONTROL_ROUTINE OPEN:

...<PROCS;><MAIN>

Page 206: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

9.1. Ampliaciones y otras alternativas para el control 187

loop until

(identificadorGrupo1.uav1.GPS_COORDENATE != coorden)

identificadorGrupo1.uav1.go_to_coorden();end loop

<MAIN;>

>CONTROL_ROUTINE CLOSE;>COMMUNICATION_PROTOCOL OPEN:

FORBIDDEN,ON_DEMAND in identificadorGrupo1

>COMMUNICATION_PROTOCOL CLOSE;CONTROL_MODULE CLOSE

La idea que se plantea es la mostrada. El posible área de investigación rela-cionada con esta temática es muy amplia.

9.1.3. Ampliaciones con la librería OpenCV

Existen muchos algoritmos y técnicas de OpenCV que no han sido vistosdebido a falta de tiempo. Clasificadores, algoritmos de condensación para elseguimiento de objetos, optimización del código a bajo nivel con el conjuntode utilidades TBB9.1 de la versión 2.0, etc. La librería de OpenCV es muyextensa, y posee algoritmos para casi todo.

Por ejemplo, dado que la cámara del sistema es monocroma, todos losalgoritmos para la localización y el seguimiento del objeto están basados eneste tipo de imágenes. Sin embargo, existen gran cantidad de métodos para lalocalización y seguimiento de objetos que son muy robustos ante cambios enla escala y rotaciones, basados en el color o en otras propiedades; informaciónvisual que no es posible capturar con este tipo de sensor óptico.

9.1Intel Threading Building Blocks (Intel TBB) es una biblioteca basada en plantillaspara C++ desarrollada por Intel para facilitar la escritura de programas que exploten lascapacidades de paralelismo de los procesadores con arquitectura multinúcleo.

Page 207: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

9.1. Ampliaciones y otras alternativas para el control 188

9.1.4. Obtención de un controlador robusto mediantealgoritmos genéticos

Un algoritmo genético, básicamente consiste en representar el dominio deun determinado problema como un conjunto de individuos, caracterizándolosmediante su cromosoma. A partir de una población inicial, y aplicando unconjunto de operadores básicos (la mutación y el cruce), es posible encontraruna población que mediante los anteriores operadores y tras varias generacio-nes den resultados interpretables como posibles soluciones.

Con esta idea, en [130] se presenta una propuesta que consiste en la aplica-ción de los algoritmos genéticos para la obtención de los parámetros necesariosde un controlador PID robusto ante posibles perturbaciones (tales como rá-fagas de viento) para controlar el vuelo de un mini-helicóptero. Se parte deuna población inicial, y mediante un proceso de aprendizaje y evolución de lapoblación aplicando operadores de mutación y cruce, tras varias generaciones(unas 27, y 6 horas después) consiguen obtener los parámetros para un con-trolador que, como se puede ver en [130], hace que el vuelo del helicópterosea relativamente estable. En la Figura 9.1 se puede observa un detalle de losexperimentos presentados en esta propuesta.

Figura 9.1: Obtención del controlador de vuelo mediante algoritmos genéticos.

Page 208: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

9.1. Ampliaciones y otras alternativas para el control 189

9.1.5. Aplicación de técnicas de inteligencia artificialpara el control

Existen muchas otras técnicas de I.A., además de la presentada en la sec-ción anterior, que son posibles aplicar al campo del control de UAVs. Porejemplo, una red neuronal se puede definir como un grafo dirigido, en el queexisten varias capas interconexionadas entre sí, y cuyo objetivo es adecuarel sistema que está modelando al entorno para que el comportamiento sea eladecuado.

Este tipo de técnicas ([10][11]) sustituirían a cierta parte del controladoren el lazo de control para el control visual, puesto que gran parte de la com-plejidad del mismo se asume ponderando ciertas aristas y adecuando dichospesos en el proceso de entrenamiento. Sería un campo muy interesante en elcual poder investigar en un futuro.

Otra técnica relacionada con la inteligencia artificial consiste en el apren-dizaje automático. Existen muchos métodos para el aprendizaje por parte deuna máquina de cierta tarea, pero los sistemas clasificadores propuestos porHolland son los que más se adecuarían a esta aproximación. Se trata de unconjunto de sensores que captan la información del exterior, y en base a unconjunto de reglas pre-establecidas y a una implementación de una versiónsimplificada de algoritmos genéticos, es posible conseguir un vuelo automáti-co por parte de un UAV, utilizando por un lado el control visual que cierre ellazo de contro, pero ante posibles perturbaciones como pudieran ser pájaroso otro tipo de objeto/animal el vehículo “supiera” que se tiene que apartar, ydar los comandos de control necesarios al sistema para evitar dichos obstácu-los. Es otra área de investigación muy interesante, puesto que con este tipo detécnicas de aprendizaje automático realmente es posible construir vehículosque realmente posean capacidades de autonomía.

Existen en la literatura muchas más aplicaciones, que si el lector estuvierainteresado, puede consultar: [47],[4],[8] y [12]. En el último artículo se exponeuna propuesta muy interesante: aplicar técnicas de agentes inteligentes parael control de vehículos autónomos. Pero es posible llevarlo un paso más allá:

¿Sería posible generar una red de UAV’s (Figura 9.2), gobernados poragentes inteligentes, interconectados entre sí [60] y hablando el mismo len-guaje, entrenados para evitar cierto tipo de obstáculos, basando sus leyes denavegación en esquemas de control visual para realizar una tarea específica?

Page 209: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

9.1. Ampliaciones y otras alternativas para el control 190

Figura 9.2: Ejemplo de robots colaborativos.

La pregunta pudiera ser un poco extravagante, pero si el lector supiera quela NASA está actualmente investigando [49] en sistemas complejos de agentesinteligentes para futuras misiones espaciales utilizando plataformas aéreas notripuladas basadas en cierta parte, control visual, ¿cambiaría de opinión?.

Mi opinión es que es un área fascinante, a la que me encantaría dedicarmeen un futuro.

Page 210: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

9.2. Conclusión 191

9.2. Conclusión

Para introducir al lector de forma breve en los proyectos más interesantesy relevantes, en la siguiente tabla se muestran los principales grupos de inves-tigación y las plataformas de helicópteros autónomos en uso hoy en día.

Centro Características principalesGeorgia Institute of Technology, Helicóptero Yamaha R-50Atlanta,USA. ISIS IMU con frec. de actualización a 100Hz

Desviación 0.02 grados/ minuto.Altímetros basados en radar y sonarControl basado en redes neuronalesFeedback Linearization

Canegie Mellon University, Helicóptero Yamaha R-MaxPittsburgh,USA. Litton LN-200 IMU a 400Hz

Novatel RT-2 GPS diferencialControl H∞

University of Southern Helicóptero Bergen Industrial TwinCalifornia,USA. ISIS IMU a 100Hz frec. de actualización

Novatel RT-2 GPS diferencialControl PID

Linkoping University, Suecia. Helicóptero Yamaha R-MaxRTK GPS, sonar, compass, sensor detemperatura y presiónYamaha sensores de actitud (YACS)Control Fuzzy. Basado en modelado dinámico

Massachusetts Institute Helicóptero X-Cell 60Technology,MIT,USA. ISIS IMU a 100Hz frecuecia de actualización

Superstar GPS a 1HzControl basado en LQR

University of California Helicóptero Yamaha R-MaxBerkeley,USA. Sistema integrado Boeing DQI-NP

INS/GPS. Provee información de velocidad,posición y actitudNovatel RT-2 GPS diferencial

Page 211: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

9.2. Conclusión 192

La realización de este proyecto ha supuesto un gran enriquecimiento, tan-to personal como intelectual. El enriquecimiento personal ha sido inherente alcontinuo contacto con varios compañeros y con el tutor del proyecto, el cualme ha ayudado muchísimo para lograr la finalización del presente trabajo. Sinsu ayuda, este proyecto hubiera albergado aún más dificultad.

Los conocimientos teóricos y técnicos adquiridos son muchos y muy va-riados: desde la comprensión de la dinámica de vuelo del quadrotor, hasta laconfiguración y puesta en marcha de distintos tipos de librerías, pasando porel estudio del controlador propuesto en [52] para la estabilización del helicóp-tero, entre otros.

Dada mi titulación, y una vez adquiridos los conocimientos tras la reali-zación del presente proyecto, es fácil imaginar posibles ampliaciones o apli-caciones, tal y como queda expuesto en el presente capítulo. Es un área deinvestigación muy extensa e interesante, en la con una frecuencia cada vez ma-yor se proponen nuevas técnicas y/o aplicaciones sobre las plataformas UAVs.

Page 212: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

9.2. Conclusión 193

Page 213: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Apéndice A

Código desarrollado

El conjunto de clases que se han desarrollado específicamente para lastareas presentadas en el presente proyecto son 4:

CSensorCamara.hpp: Contiene la implementación detallada en la sección6.1.

CSensorCamara2.hpp: Contiene la implementación detallada en la sec-ción 6.2.

homographyDecomposition.hpp: Contiene la implementación detalladaen la sección 6.2.1.

seleccion.hpp: Conjunto de funciones útiles para la selección manual delobjeto.

Además, para el desarrollo del código anterior se hicieron uso de un conjuntode bibliotecas pre-definidas :

matriz.hpp: Biblioteca de funciones para manipulación de matrices.

general.hpp: Biblioteca de funciones para definición y manipulación detipos de datos.

En el CD adjunto a la documentación del presente proyecto se pueden encon-trar los ficheros fuentes asociados.

194

Page 214: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

APÉNDICE A. CÓDIGO DESARROLLADO 195

Page 215: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Apéndice B

OpenCV

B.1. Características de la versión 2.0

La libreria OpenCV (Open Source Computer Vision) es una libreria com-puesta de funciones para aplicaciones de visión por computador en tiemporeal. Ha sido desarrollada bajo licencias del tipo BSD (Free to Share, Free toRemix), y el principal precursor ha sido Intel, entidad que financió las prime-ras fases de desarrollo de la libreria.

Actualmente está financiada por el grupo de trabajo WillowGarage. Paramás información, se puede visitar la página de la versión 2.0 en Internet:

http://opencv.willowgarage.com/wiki/ o consultar [120].

B.2. Configuración de OpenCVB.2.1. Configuración en Ubuntu 9.10

Conseguir empezar a trabajar con esta librería fue toda una hazaña. Elconseguirlo para una distribución de Linux, mucho menos. A continuación seexponen de forma detallada los pasos a seguir para la instalación y puestaen marcha de la libreria OpenCV, en su versión 2.0, en la distribución deLinux Ubuntu 9.10. También se ha conseguido instalar de forma satisfactoria

196

Page 216: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

B.2. Configuración de OpenCV 197

en la versión Karmic 10.04. Para otras versiones, tanto de librería como desistema operativo, los pasos descritos a continuación no garantizan el correctofuncionamiento, aunque es posible que también funcione correctamente.

B.2.1.1. Paso 0

En primer lugar, es imprescindible asegurarnos que las versiones de lospaquetes que se van a descargar estén actualizadas, y sean estables. Para ello,en el menú de usuario de Ubuntu, accedemos a :

Sistema -> Administración -> Orígenes del Software

En esta ventana deben estar marcados, al menos, las que se indican a conti-nuación para el propósito de esta guía:

Figura B.1: Lista de servidores de versiones

A continuación , sobre la pestaña ’Other Software’, seleccionar, al menos,las siguientes opciones:

http://archive.canonical.com/ubuntu karmic partnerhttp://archive.canonical.com/ubuntu karmic partner (Source

Code)

Es necesario asegurar que la versión de los paquetes esté actualizada:

> sudo apt-get upgrade

Page 217: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

B.2. Configuración de OpenCV 198

B.2.1.2. Paso 1

Obtenemos todos los prerequisitos necesarios para el correcto funciona-miento de la libreria OpenCV:

> sudo apt-get install build-essential libgtk2.0-dev

Estas son las librerias que dan soporte para video en OpenCV:

> sudo apt-get install libavcodec-dev libavformat-devlibjpeg62-dev libtiff4-dev> sudo apt-get install build-dep libswscale-dev swig

FFmpeg es una plataforma para el manejo de streams de video y audio.En el caso de que al intentar instalar la libreria build-dep se produzca

algún tipo de error, bien porque no se ha definido dicha libreria para nuestradistribución de Linux o bien porque no se encuentra en el repositorio, probarcon el siguiente comando:

> sudo aptitude build-dep

B.2.1.3. Paso 2

Obtenemos la versión 2.0 de la libreria de Intel, en su versión para sistemastipo UNIX, y la desempaquetamos por ejemplo en nuestra carpeta personal’home’:

Fuente de la descarga:

http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.0/

Comando para desempaquetar:

> tar -xjf OpenCV-2.0.0.tar.bz2

B.2.1.4. Paso 3

A continuación se van a generar los enlaces simbólicos para las librerias devideo. En este punto es necesario loguearse en el sistema como super-usuario(sudo -s) y realizar las siguientes operaciones:

Page 218: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

B.2. Configuración de OpenCV 199

> mkdir /usr/include/ffmpeg> ln -s /usr/include/libavcodec/avcodec.h

/usr/include/ffmpeg/avcodec.h> ln -s /usr/include/libavformat/avformat.h

/usr/include/ffmpeg/avformat.h> ln -s /usr/include/libavformat/avio.h

/usr/include/ffmpeg/avio.h> ln -s /usr/include/libavutil/avutil.h

/usr/include/ffmpeg/avutil.h

El comando ln en linux sirve para establecer enlaces entre archivos.

B.2.1.5. Paso 4

Volvemos a la carpeta donde se haya descomprimido los fuentes de lalibreria OpenCV, y procedemos a realizar las operaciones de configuración einstalación:

> ./configure --prefix=/usr/local/opencv--enable-apps --enable-shared

--enable-swscale --enable-gpl --with-swig> sudo ln -s /usr/include/libswscale/swscale.h

/usr/include/ffmpeg/swscale.h

Nota 1: Probablemente en el terminal hayamos obtenido algún mensajerelacionado con swscale o gpl. Este mensaje variará en función de laversión que hayamos descargado de los fuentes en el paso 1.Puesto queno son imprenscindibles, pueden ser omitidos por el momento.

Nota 2: En el caso de que tras este punto se haya producido algún error,es necesario volver al paso 2. Esto es debido a que cuando lanzamosel comando ./configure se modifica el make generado, por lo que si sehan creado enlaces simbólicos con alguna de las librerias anteriores, esnecesario partir de una copia limpia del conjunto de fuentes de OpenCV.

B.2.1.6. Paso 5

Una vez que hemos creado todos los enlaces, descomprimido la libreria einstalado todas las librerias auxiliares, se procede a compilar la libreria paranuestro sistema. Es posible que para realizar la siguiente operación tengamosque loguearnos como super-usuario. Los pasos a seguir son los siguientes:

1. En el directorio donde se ha descomprimido la libreria, procedemos acompilar los fuentes haciendo uso del comando make:

Page 219: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

B.2. Configuración de OpenCV 200

> make

Importante: Si despues de hacer el make se generan errores, en funcion dela version del paquete que se haya descargado, es necesario o bien volveral paso 0, comprobar que los orígenes de software son los correctos, yvolver a realizar los pasos anteriores. Si bien realizando estos pasos nose resuelven los errores a la hora de realizar el make, es necesario vernota B.

2. Tras unos minutos, el proceso anterior habrá finalizado. Si todo ha idobien, y no hemos obtenido ningun mensaje de error en el terminal, pro-cedemos a instalar la libreria:

> sudo make install

B.2.1.7. Paso 6

Configuramos nuestro sistema para localizar y enlazar las librerias deOpenCV:

> echo /usr/local/opencv/lib >/etc/ld.so.conf.d/opencv.conf

Actualizamos las librerias para asegurarnos que todo está correcto:

> ldconfig -v | grep opencv

Es posible que se muestren algunos mensajes de error de rutas a librerias.No hay problema, salvo probablemente la última línea, que es la que vamosbuscando. Si aparece ena la consola “/usr/local/opencv/lib”, todo ha ido co-rrectamente.

B.2.1.8. Paso 7

Configuramos el pkg-config y las variables de entorno, escribiendo los si-guientes comandos en el terminal:

> echo ’export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv/lib/pkgconfig’ >> /etc/bash.bashrc> echo ’export PYTHONPATH=/usr/local/opencv/lib/python2.6/

site-packages/opencv’ >> /etc/bash.bashrc

La segunda línea es necesaria si se tiene pensado programar con Python. Sino es el caso, se puede omitir dicha exportación. A continuación reiniciamosel terminal para que todos los pasos de configuración sean actualizados.

Page 220: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

B.2. Configuración de OpenCV 201

B.2.1.9. Paso 8

En principio, si se ha llegado a este punto sin ningún error en el terminal, esporque se ha instalado correctamente la libreria de OpenCV en el sistema. Paraverificarlo, accedemos al directorio donde hemos descomprimido la libreriade OpenCV, y accedemos al subdirectorio samples/c, y autentificándonos denuevo como super-usuario, procedemos a ejecutar el siguiente comando en elterminal:

> . build_all.sh

Si todo ha ido bien, la mayoria de los ejemplos se compilarán para obtener losejecutables en la carpeta OpenCV2.0.X/bin.

B.2.1.10. Paso 9

Este paso no es necesario para la instalación de la libreria en el sistema,pero sí para la correcta compilación de cualquier ejemplo que se implementeusando definiciones de la libreria OpenCV. Si optamos por compilar nuestrosfuentes haciendo uso de la herramienta make, para poder enlazar correcta-mente las librerias de OpenCV será necesario establecer el formato de enlacesimbólico con las mismas en un archivo Makefile.

A modo de ejemplo, a continuación se expone el contenido de una archivoMakefile que sirve para compilar un archivo fuente main.cpp, el cual contienellamada a funciones de OpenCV:

CC=g++CFLAGS=-I. -WallLFLAGS=-lrt -lueye_apiDEPS = general.hpp Matrix.hpp CSensorCamara.hppmain: main.cpp

$(CC) $(CFLAGS) $(LFLAGS) -ggdb ‘pkg-config --cflags opencv‘main.cpp -o main ‘pkg-config --libs opencv ‘

En este ejemplo, se incluyen referencias a las siguientes librerias/archivos:

Libreria externa: -lueye_api

Librerias de definiciones: general.hpp, Matrix.hpp, CSensorCamara.hpp.

Page 221: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

B.2. Configuración de OpenCV 202

B.2.2. Configuración para Dev C++ en entornos Win-dows

Los pasos aquí descritos son igualmente válidos tanto para la versión 2.0como para la versión 2.1 de la librería de OpenCV.

B.2.2.1. Paso 0

Para instalar la librería de OpenCV es necesario acudir a la página dondese encuentra en versión ejecutable el instalable de la versión 2.0:

https://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.0/

Una vez seguidos los pasos de instalación, se da por finalizado este pasoinicial.

B.2.2.2. Paso 1

Se inicia el compilador Dev C++, en cualquiera de sus versiones actuales.Si no dispone del programa, se puede descargar del siguiente enlace web:

http://sourceforge.net/projects/dev-cpp/

Una vez finalizado este paso, se supone que el lector dispone del programaDev C++ correctamente instalado en su máquina y ejecutándose.

B.2.2.3. Paso 2

Se crea un nuevo proyecto, en el cual se pueden generar tantos archivosfuente como sea necesario. Por ejemplo, se puede crear un archivo fuentedenominado main.cpp, cuyo código sea de prueba, como el mostrado a conti-nuación:

#include ‘‘highgui.h”#include ‘‘cv.h’’int main( int argc, char** argv )

IplImage* img = cvLoadImage( argv[1] );cvNamedWindow( ‘‘Example1”, CV_WINDOW_AUTOSIZE );cvShowImage( “Example1”, img );cvWaitKey(0);cvReleaseImage( &img );cvDestroyWindow( “Example1” );

Page 222: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

B.2. Configuración de OpenCV 203

El código anterior carga una imagen a partir de la ruta pasada como argumentode llamada y la muestra en una ventana gráfica.

B.2.2.4. Paso 3

En este paso, se procede a la definición de un nuevo tipo de compilador enDev C++. En primer lugar:

Ir a “Tools” → “Compiler Options” , y crear un nuevo compilador,presionando sobre la cruz verde de la parte derecha del cuadro, y lodenominados por ejemplo “Compilador por Defecto”.

Figura B.2: Creación del nuevo compilador.

Posteriormente, seleccionamos la casilla "Add these commands to thelinker command line" (Figura B.2) y añadimos al recuadro lo siguien-te(incluyendo el guión delante):

-llibcxcore200 -llibcv200 -llibcvaux200-llibhighgui200 -llibml200 -llibfftw3-3

Page 223: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

B.2. Configuración de OpenCV 204

Nos vamos a la pestaña “Directories” y en la subpestaña “Binaries”deben estar incluidas las siguientes opciones (pulsando la opción “Add”para añadir nuevas) tal y como se muestra en la Figura B.3 :

> C:\OpenCV2.0\bin> C:\Dev-Cpp\Bin> C:\Dev-Cpp\libexec\gcc\mingw32\3.4.2

Figura B.3: Inclusión de rutas en Directories→Binaries.

Page 224: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

B.2. Configuración de OpenCV 205

En la pestaña Directories → Libraries deben estar incluidas las siguien-tes rutas (Figura B.4):

> C:\OpenCV2.0\lib> C:\Dev-Cpp\lib

Figura B.4: Inclusión de rutas en Directories→Libraries.

Page 225: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

B.2. Configuración de OpenCV 206

En la pestaña Directories → C includes deben estar incluidas las si-guientes rutas (Figura B.5):

> C:\OpenCV2.0\include\opencv> C:\Dev-Cpp\include

Figura B.5: Inclusión de rutas en Directories→C includes.

Page 226: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

B.2. Configuración de OpenCV 207

En la pestaña Directories → C++ includes deben estar incluidas lassiguientes rutas (Figura B.6):

> C:\OpenCV2.0\include\opencv> C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include> C:\Dev-Cpp\include\c++\3.4.2\backward> C:\Dev-Cpp\include\c++\3.4.2\mingw32> C:\Dev-Cpp\include\c++\3.4.2> C:\Dev-Cpp\include

Figura B.6: Inclusión de rutas en Directories→C++ includes.

Pulsamos el botón OK y listo.

Page 227: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

B.2. Configuración de OpenCV 208

B.2.2.5. Paso 4

Todo lo necesario para poder compilar el proyecto ya está configurado.Tan solo hace falta decirle al Dev C++ qué compilador queremos usar. Así,cuando se vaya a compilar el proyecto, es necesario:

Sobre el nombre del proyecto (parte izquierda de la ventana) → Botónderecho de ratón→ “Project Options” .En la pestaña “Compiler”, selec-cionar el compilador que generamos antes, el llamado “Compilador porDefecto”.

Una última opción, no necesaria pero sí adecuada, es decirle a Dev C++ quequeremos que genere código optimizado. Para ello, en la misma ruta que elanterior, seleccionamos “Compiler” y en “Further Optimizations”→”Best Op-timizations” →”Yes” (Figura B.7).

Figura B.7: Optimización de código en Dev C++.

Page 228: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

B.3. Características de la versión 2.1 209

B.2.2.6. Paso 5

Para que al compilar no se produzcan errores no deseados, es necesariomodificar una línea en un archivo fuente de OpenCV. Así pues:

En el directorio C:\ ...\include\opencv\ debe haber un fichero denomi-nado: cxoperations.hpp.

Lo editamos, y buscamos en la línea número 67 del fichero anterior algosimilar a esto:

#include <bits/atomicity.h>#if __GNUC__ >= 4

Localizada la línea, debemos sustituirla por ésta otra:

#include <bits/atomicity.h>#if __GNUC__ >= 4 || __MINGW32__

B.3. Características de la versión 2.1En la fecha de entrega del presente proyecto, se encuentra publicada la

versión 2.1 de la presente libreria. Además de la inclusión de nuevos algorit-mos, y más optimizados, se incluye además un cambio a nivel de generaciónde código para extraer el máximo rendimiento de las arquitecturas multime-dia y multinúcleo para algoritmos de alto coste computacional. Uno de loscambios más llamativos han sido las modificaciones en la interfaz para C++,eliminando el prefijo cv del comienzo de los nombres de cada función.

Debido principalmente a falta de tiempo, no se ha profundizado en eldesarrollo con esta nueva versión de la libreria, aunque en lo referente a lasfunciones utilizadas en las clases implementadas se comprueba que no hansufrido proceso de mejora, por lo que es posible que no se obtenga una mejorarelativa en lo que respecta al rendimiento.

Par más información se refiere al lector a consultar el siguiente enlace web:

http://opencv.willowgarage.com/documentation/cpp/index.html.

Page 229: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Apéndice C

Interfaz de programación de lacámara

A continuación se detallan las funciones utilizadas de la libreria de la cá-mara [118].

Variables globales de la libreria de la cámara declaradas en el código delas clases:

// Identificador de la Camara uEye

HIDS CamHandler;

// Identificador del buffer de memoria

uint32 CamBufferID;

// Puntero a buffer donde se guardan las imagenes

char* CamImagePointer;

// Información del sensor de la cámara

SENSORINFO sensorInfo;

Función de inicialización del dispositivo:

is_InitCamera (..)

Esta función acepta como parámetro de entrada el identificador de lacámara en el sistema y un handler para una ventana de diálogo, que seestablece a nulo. La tarea de esta función es arrancar el driver y crearla conexión. Puede devolver éxito en la inicialización o fracaso.

210

Page 230: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

APÉNDICE C. INTERFAZ DE PROGRAMACIÓN DE LA CÁMARA 211

Función de configuración mediante archivo:

is_LoadParameters (CamHandler, ArchivoConfig)

Con esta función se inicializa la cámara con unos parámetros de con-figuración presentes en ArchivoConfig, formateados debidamente, talescomo tasa de fps, activación del autocontraste (para adecuar el sensor alas condiciones lumínicas de la escena), etc. Puede devolver éxito en laconfiguración, o error.

Para obtener información del sensor:

is_GetSensorInfo (CamHandler, &sensorInfo);

Con esta función recuperamos el tamaño de la imagen en x e y, entreotras cosas.

Activación del trigger de la cámara mediante evento externo:

is_SetExternalTrigger (CamHandler, IS_SET_TRIGGER_SOFTWARE)

Se establece la condición, con esta función, de que la cámara cada vez quese llame a la función de captura devolverá la imagen recién capturada.Además, para las condiciones de inicialización, si esta función desactivael trigger por software la cámara tarda en torno a 20 frames en adecuarsea las condiciones lumínicas, mientras que con el trigger activado, trasunos 5 frames ya se ha estabilizado el sensor. Puede devolver éxito en lainicialización o fracaso.

Funciones de liberalización de memoria y del dispositivo de imagen:

is_FreeImageMem (CamHandler, CamImagePointer, CamBufferID);is_ExitCamera (CamHandler);

Puede devolver éxito en la liberalización o fracaso.

Función para establecer el modo de captura de imagen:

is_SetColorMode (CamHandler, IS_CM_MONO8);

Page 231: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

APÉNDICE C. INTERFAZ DE PROGRAMACIÓN DE LA CÁMARA 212

Se establece que el tipo de imagen capturada esté en escala de grises,monocroma, de 8 bits de profundidad. Puede devolver éxito en la inicia-lización o fracaso.

Conjunto de funciones para la reserva del buffer de memoria para lasimágenes capturadas:

is_AllocImageMem (CamHandler, ...);is_SetImageMem (CamHandler, CamImagePointer, CamBufferID);is_SetImageSize (CamHandler, dimX, dimY);is_SetDisplayMode (CamHandler, IS_CM_MONO8);

Si tras la llamada a la primera función no se ha podido reservar memoria,una macro de error derá devuelta, en cuyo caso debemos volver a intentarla reserva. El resto de funciones son complementarias, y es necesario quepara la correcta configuración sean llamadas en el orden que se indica.Pueden devolver éxito en la inicialización o fracaso.

Para obtener la imagen recién capturada del buffer de memoria de lacámara se utiliza la función:

is_FreezeVideo (CamHandler, IS_WAIT)

Cada vez que esta función es llamada (1 vez por iteración del bucle) secaptura la imagen actual, con un retardo despreciable. La alternativaa esta función se denomina is_CaptureVideo(), la cual según el manualde la cámara sirve para realizar captura contínua, pero al transferir laimagen al espacio de programa del usuario, el tiempo no es despreciable,y los efectos, tal y como se explica en el capítulo 8, no son deseables.Puede devolver éxito en la captura o fracaso.

Page 232: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

APÉNDICE C. INTERFAZ DE PROGRAMACIÓN DE LA CÁMARA 213

Page 233: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Apéndice D

Diagrama temporal de Gantt.

214

Page 234: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Id. Nombre de tarea Comienzo Fin

mar 2010 abr 2010 may 2010

18/47/3 28/3 4/4 25/421/3 11/428/2 2/514/3

2 15/03/201001/03/2010Lectura de artículos.

3 25/03/201010/03/2010Configuración de la plataforma para

las primeras implementaciones.

4 10/05/201029/03/2010

Migración a la nueva plataforma de

desarrollo y primeras

aproximaciones.

5 02/04/201029/03/2010Configuración de OpenCV

1

6

7

8

9

10

25/03/201001/03/2010Puesta en marcha

27/04/201027/04/2010Deshecho del template matching.

09/04/201005/04/2010Asimilación de nuevos conceptos

teóricos.

19/04/201012/04/2010Primeras implementaciones.

20/04/201013/04/2010Lectura de manuales de

programación.

27/04/201021/04/2010Primeros experimentos.

11

12

13

14

15

16

17

18

30/04/201028/04/2010Nuevas alternativas.

10/05/201003/05/2010Comienzo con el tablero de ajedrez.

15/06/201011/05/2010Desarrollo de la primera propuesta.

13/05/201011/05/2010Análisis

14/05/201013/05/2010Definición del problema.

10/06/201011/05/2010Nuevos conceptos teóricos.

21/05/201017/05/2010Primeras Implementaciones

21/05/201019/05/2010Búsqueda de información.

19

20

21

22

23

24

25

26

27

25/05/201021/05/2010Estudio de librería del sensor óptico.

02/06/201025/05/2010Implementación.

04/06/201002/06/2010Primeras pruebas.

07/06/201003/06/2010Correcciones.

11/06/201007/06/2010Primeros experimentos.

25/05/201020/05/2010Estudio del manual de calibración de

la cámara.

28/05/201025/05/2010Toma de imágenes para la calibración.

11/06/201011/06/2010Comprobación de los resultados.

28

29

30

31

14/06/201011/06/2010Experimentos con la plantilla.

15/06/201015/06/2010Conclusiones.

05/08/201017/06/2010Segunda propuesta.

21/06/201017/06/2010Estudio de la teoría.

25/06/201021/06/2010Primeras pruebas con

cvGoodFeaturesToTrack()

32

33

34

05/07/201028/06/2010Primeras pruebas con flujo óptico.

16/07/201005/07/2010Implementación.

30/07/201020/07/2010

Estudio e Implementación de la

descomposición de la matriz de

homografía.

05/08/201002/08/2010Conclusiones.

jun 2010 jul 2010 ago 2010 sep 2010

9/5 16/5 23/5 30/5 6/6 13/6 20/6 27/6 4/7 11/7 18/7 25/7 1/8 8/8 15/8 22/8 29/8 5/9 12/9

39

35

36

37

38

17/09/201002/08/2010Memoria

30/08/201002/08/2010Recopilación de Información.

10/09/201005/08/2010Redacción.

17/09/201010/09/2010Corrección

Page 235: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Apéndice E

Diagrama de clases de laaplicación

216

Page 236: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

CSensor+Hgc+Inicializado

+CSensor()+inicializa()+verifica()+finaliza()+leeDatos()+~CSensor()-fusionaDatos()

CGestorPic-ControladorPuerto-MedidaAltura-Inicializado

+CActuador ()+inicializa()+actua()+finaliza()+~CActuador()

CActuador-GestorPic-Escalado-Inicializado

+CActuador()+inicializa()+actua()+finaliza()+~CActuador()

PrincipalQuadrotor+datosSensor+x+u+sensor+gestorPic+actuador+sensorAltura

+main()+leyDeControl()

CObservador+AA+B+C+L+uk_1+yk_1+Xk+Inicializado

+CObservador()+inicializa()+actualizaEstado()+finaliza()

CSensorImu-Modo-Settings-RetrieveMode-InterfazCmt3-Paquete-DatosAnt-ContadorErrorTimeOut-ContadorErrorNoTimeOut-ContadorOutliers-ModoIntegracionVelocidadLineal-HayLecturaPrevia-Inicializado-CmtCalDataAnt-CmtOriQuatAnt

+CSensorImu()+inicializa()+finaliza()+verifica()+leeDatos()+restauraFactoryDefaults()+getContadorErrorTimeOut()+resetContadorErrorTimeOut()+getContadorErrorNoTimeOut()+resetContadorErrorNoTimeOut()+getContadorOutliers()+resetContadorOutliers()+~CSensorImu()-filtraOutliers()-hardwareScan()-doMtSettings()

CSensorCamara-CamHandler-CamBufferID-CamImagePointer-HayLecturaPrevia-Inicializado-Img-ImgColor-ParamDistorRadial-ParamDistorTangen-MatrizIntrinseca-Corners-DimX-DimY-CoefsDistortion-VectorRotacion-VectorTraslacion-DatosAnt-MatrizRotacion-K

+CSensorCamara()+inicializa()-inicializaModeloObjeto()+leeDatos()+finaliza()-finalizaModeloObjeto()-inicializaModeloCamara()-finalizaModeloCamara()-inicializaDispositivoCamara()-finalizaDispositivoCamara()

CSensorCamara2-Objeto-H-Mascara-EigImg-TempImg-ImgNext-PrevPyramid-Pyramid-SwapTemp-ImgPrev-SwapCorners-ContadorInitCamara-numCaracteristicas-CornerCount-statusBuffer-trackError-BanderaEstado-ObjetoSeleccionado-PrimerFrameSeleccion-seleccionInitCaracteristicas-ModoImagen+Tsg

-TrackingLK()-decomposeHomography()

CSensorCamara1-Objeto-PuntosImagen-PuntosImagenReproy

+verifica()-calculaCalibracionExterna()-muestraVisualizacion()-calculaHomografia()

seleccion.hpphomographyDecomposition.hpp

<<uses>><<uses>>

IntrinsicMatrix.xml

<<uses>>

DistortionCoeffs.xml

<<uses>>

ConfigHardware.ini

<<uses>>

OpenCV

*.so

*.hpp

Libreria Cámara

*.so

*.hpp

<<uses>> <<uses>>

*.a

<<uses>><<uses>>

TMatrix

TVector

Librerias comunes

CSensorAltura-GestorPic-Altura-Inicializado

+CSensorAltura()+inicializa()+leeDatos()+finaliza()

Page 237: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

Bibliografía

[1] Jianhong Liang, Xusheng Lei, Song Wang, Yongliang Wu and TianmiaoWang. A Small Unmanned Aerial Vehicle for Polar Research. Procee-dings of the IEEE International Conference on Automation and LogisticsQingdao, China September 2008.

[2] Jovan D. Boskovic, Ravi Prasanth and Raman K. Mehra. A Multi-LayerControl Architecture for Unmanned Aerial Vehicles. Proceedings of theAmerican Control Conference Anchorage, AK May 8-1 0,2002.

[3] Nicolas Guenard, Tarek Hamel, and Robert Mahony. A Practical VisualServo Control for an Unmanned Aerial Vehicle. IEEE Ttransactions onrobotics, vol. 24, no. 2, April 2008.

[4] Warren R. Dufrene, Jr. AI Techniques in Uninhabited Aerial VehicleFlight.

[5] Xusheng Lei, Jianhong Liang, Song Wang, Tianmiao Wang. An Inte-grated Navigation System For A Small UAV Using Low-Cost Sensors.Proceedings of the 2008 IEEE International Conference on Informationand Automation June 20 -23, 2008, Zhangjiajie, China.

[6] Tahir Hameed, Wang Wei Ren Zhang. Conceptual Designing – Unman-ned Aerial Vehicle Flight Control System. The Ninth International Con-ference on Electronic Measurement & Instruments.

[7] Nicolas Guenard, Tarek Hamel, Laurent Eck. Control Laws For TheTele Operation Of An Unmanned Aerial Vehicle Known As An X4-flyer. Proceedings of the 2006 IEEE/RSJ International Conference onIntelligent Robots and Systems October 9 - 15, 2006, Beijing, China.

[8] Peter W. Sarunic, Robin J. Evans. Control of Unmanned Aerial VehiclesPerforming Multiple Target Passive Detection and Tracking.

[9] Ondrej Spinka, Stepan Kroupa, Zdenek Hanzalek. Control System forUnmanned Aerial Vehicles.

218

Page 238: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

BIBLIOGRAFÍA 219

[10] Bhaskar Prasad Rimal, Hyoim Shin and Eunmi Choi. Simulation ofNonlinear Identification and Control of Unmanned Aerial Vehicle: AnArtificial Neural Network Approach.

[11] Andon Topalov, Nikola Shakev, Severina Nikolova, Dobrin Seyzinski,Okyay Kaynak. Trajectory Control of Unmanned Aerial Vehicle UsingNeural Nets with a Stable Learning Algorithm. 17th MediterraneanConference on Control & Automation Makedonia Palace, Thessaloni-ki, Greece June 24 - 26, 2009.

[12] Warren R. Dufene, Jr., Graduate School of Computer and InformationSciences, Nova Southeastem Universiy, Ft. Approach for autonomouscontrol of unmanned aerial vehicle using intelligent agents for knowledgecreation.

[13] Janne Heikkilä and Olli Silvén. A Four-step Camera Calibration Proce-dure with Implicit Image Correction.

[14] J.-Y. Bouguet, ”Camera Calibration Toolbox for Matlab”, June 2008,http://www.vision.caltech.edu/bouguetj/calibdoc/index.html.

[15] B.Bishop, S.Hutchinson,M.Spong. Camera Modelling for Visual ServoControl Applications.

[16] Ong Wei Ming Eugene. Ground Control Station for Unmanned AerialVehicles.

[17] Odile Bourquardez, Robert Mahony, Tarek Hamel and François Chau-mette. Stability and performance of image based visual servo controlusing first order spherical image moments. Proceedings of the 2006IEEE/RSJ International Conference on Intelligent Robots and SystemsOctober 9 - 15, 2006, Beijing, China.

[18] Peter I. Corke, Seth A. Hutchinson. A New Hybrid Image-Based Vi-sual Servo Control Scheme. Proceedings of the 39º IEEE Conference onDecision and Control Sydney, Australia, December, 2000.

[19] Billibon H. Yoshimi and Peter K. Allen. Active, uncalibrated visual ser-voing.

[20] Tarek Hamel, Robert Mahony. Image based visual servo control for aclass of aerial robotic systems.

Page 239: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

BIBLIOGRAFÍA 220

[21] Alessandro Astolfi, Liu Hsu, Mariana S. Netto, and Romeo Ortega. TwoSolutions to the Adaptive Visual Servoing Problem. IEEE Transactionson robotics and automation, vol. 18, no. 3, june 2002.

[22] Jian Chena, Darren M. Dawsonb, Warren E. Dixonc, Vilas K. Chitra-karanb. Navigation function-based visual servo control.

[23] Ezio Malis and Patrick Rives. Uncalibrated Active Affine Reconstructionclosing the loop by Visual Servoing. Proceedings of the 2003 IEE/RSJIntl. Conference on Intelligent Robots and Sytems. Las Vegas, Nevada.October 2003.

[24] François Chaumette, Ezio Malis. 2 1/2 D visual servoing: a possiblesolution to improve image-based and position-based visual servoings.Proceedings of the 2000 IEEE International Conference on Robotics &Automation San Francisco, CA April 2000.

[25] Fransois-Xavier Espiau, Ezio Malis and Patrick Rives. Robust featurestracking for robotic applications: towards 21/2D visual servoing withnatural images. Proceedings of the 2002 IEEE International Conferenceon Robotics & Automation Washington, DC May 2002.

[26] Ezio Malis. Tesis. 1998.

[27] Selim Benhimane, Ezio Malis. Homography-based 2D Visual Servoing.Proceedings of the 2006 IEEE International Conference on Robotics andAutomation Orlando, Florida - May 2006.

[28] Christophe Collewet and François Chaumette. Positioning a CameraWith Respect to Planar Objects of Unknown Shape by Coupling 2-DVisual Servoing and 3-D Estimations. IEEE Transactions on roboticsand automation, vol. 18, no. 3, june 2002.

[29] Andrew I. Comport, Eric Marchand, François Chaumette. Robustmodel-based tracking for robot vision. Proceedings of 2004 IEE/RSJInternational Conference on intelligent Robots and Systems September28 - October 2,2004, Sendai, Japan.

[30] Justin A. Borgstadt , Nicola J. Ferrier. Visual Servoing: Path Interpo-lation by Homography Decomposition.

[31] Erdinç Altug, James P. Ostrwski, Robert Mahony. Control of a qua-drotor Helicopter using Visual Feedback. Proceedings of the 2002 IEEEInternational Conference on Robotics & Automation Washington, DCMay 2002.

Page 240: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

BIBLIOGRAFÍA 221

[32] Nicholas Kottenstette. Constructive Non-Linear Control Design WithApplications to Quad-Rotor and Fixed-Wing Aircraft.

[33] Zhongshi Wang , Wei Wu , Xinhe Xu , Dingyu Xue. Recognition and lo-cation of the internal corners of planar checkerboard calibration patternimage.

[34] Hae YongKim. Rotation-discriminating template matching based onFourier coefficients of radial projections with robustness to scaling andpartial occlusion.

[35] Yi-Hsien Lin, Chin-Hsing Chen. Template matching using the parame-tric template vector with translation, rotation and scale invariance.

[36] GRASP Laboratory. UAV’s Research Videos.1: http://www.youtube.com/watch?v=icdb9ftdZOw2: http://www.youtube.com/watch?v=MvRTALJp8DM

[37] Stanford University HUMMINGBIRD Aerospace Robotics Laboratory.http://sun-valley.stanford.edu/~heli/

[38] Montgomery, J. F. (1999). Learning Helicopter Control Through ’tea-ching by showing’. PhD thesis, University of Southern California, LosAngeles, CA.

[39] Odile Bourquardez, Robert Mahony, Nicolas Guenard, François Chau-mette, Tarek Hamel, and Laurent Eck. Image-Based Visual Servo Con-trol of the Translation Kinematics of a Quadrotor Aerial Vehicle.

[40] Civita, M. L.. Integrated Modeling and Robust Control for Full- Enve-lope Flight of Robotic Helicopters. PhD thesis, Carnegie Mellon Univer-sity, Pittsburgh, PA. 2003.

[41] François Chaumette. Visual Servo Control II. Advanced Approaches.

[42] Seth Hutchinson, Gregory D. Hager and Peter I. Corke. A Tutorial onVisual Servo Control. IEEE Transactions on robotics and automation,vol. 12, no. 5, october 1996.

[43] G. Chesi, E. Malis and R. Cipolla. Automatic segmentation and mat-ching of planar contours for visual servoing. Proceedings of the 2000IEEE lntemational Conference on Robotics & Automation San Francis-co. CA April 2000.

[44] BEAR: Berkeley Aerobot Team.http://robotics.eecs.berkeley.edu/bear/

Page 241: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

BIBLIOGRAFÍA 222

[45] Harris, C. and Stephens, M. 1988. A combined corner and edge detector.In 4th Alvey Vision Conference. 147–151.

[46] Shim, H. Hierarchical Flight Control System Synthesis for Rotorcraft-based Unmanned Aerial Vehicles. PhD thesis, University of California,Berkeley. 2000.

[47] Amidi, O. An Autonomous Vision-Guided Helicopter. PhD thesis, Ro-botics Institute, Carnegie Mellon University. 1996.

[48] Hrabar, S. E. Vision-Based 3D Navigation for an Autonomous Helicop-ter. PhD thesis, University of Southern California. 2006.

[49] The Aerial Regional-scale Environmental Surveyor (Ares).http://marsairplane.larc.nasa.gov/index.html

[50] Vincent Lepetit and Pascal Fua. Monocular Model-Based 3D Trackingof Rigid Objects: A Survey.

[51] François Chaumette and Seth Hutchinson. Visual Servo Control Part I:Basic Approaches.

[52] Guilherme Vianna Raffo. Tesis de Máster. 2007.

[53] Egan G.K. and Taylor B. Characterisation of Infrared Sensors for Ab-solute Unmanned Aerial Vehicle Attitude Determination.

[54] Sentoso, F., Liu, M., and Egan, G.K.. Linear Quadratic Optimal ControlSynthesis for a UAV.

[55] A.K. Goodwin, G.K. Egan and F. Crusca. UAV Ridge Soaring in anUnknown Environment.

[56] W.K. Kong, G.K. Egan and T. Cornall. Feature Based Navigation forUAV’s.

[57] G.K. Egan, R.E. Cooper and B. Taylor. Unmanned Aerial Vehicle Re-search at Monash University

[58] B. Taylor and G.K. Egan. Monash UAV Operations Manual .

[59] G.K. Egan and R.J. Cooper. An Unmanned Aerial Vehicle Autopilot.

[60] The Distributed Flight Array.http://www.idsc.ethz.ch/Research_DAndrea/DFA

Page 242: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

BIBLIOGRAFÍA 223

[61] Aerospace Controls Laboratory . UAV SWARM Health ManagementProject.http://vertol.mit.edu/videos.html

[62] Frédéric Jurie and Michel Dhome. Hyperplane Approximation for Tem-plate Matching.

[63] David Suter, Tarek Hamel, Robert Mahony. Visual Servo Control usinghomography estimation for the stabilization of an X4-flyer.

[64] E. Montijano and C. Sagues. Fast Pose Estimation For Visual NavigationUsing Homographies. The 2009 IEEE/RSJ International Conference onIntelligent Robots and Systems October 11-15, 2009 St. Louis, USA.

[65] Elan Dubrofsky. Homography Estimation.

[66] D. Santosh Kumar and C.V. Jawahar. Robust Homography-Based Con-trol for Camera Positioning in Piecewise Planar Environments.

[67] Weibin Sun Xubo Yang Shuangjiu Xiao Wencong Hu. Robust Recogni-tion of Checkerboard Pattern for Deformable Surface Matching in Mul-tiple Views.

[68] Ezio Malis and Manuel Vargas. Effects of camera-calibration errors onthe homography decomposition.

[69] University of Southern California. Autonomous Flying Vehicle Project.http://robotics.usc.edu/~avatar/images.htm

[70] John T. Feddema, C. S . George Lee and Owen Robert Mitchell. Weigh-ted Selection of Image Features for Resolved Rate Visual Feedback Con-trol. IEEE Transactions on robotics and automation, vol. 1, no. i , fe-bruary 1991.

[71] Grégory Flandin François Chaumette Eric Marchand. Eye-in-hand /Eye-to-hand Cooperation for Visual Servoing.

[72] Roger y. Tsai and Reimar k. Lenz. A New Technique for Fully Autono-mous and Efficient 3D Robotics Hand/Eye Calibration.

[73] Brad Nelson, Pradeep K. Khosla. Integrating Sensor Placement and Vi-sual Tracking Strategies.

[74] Nikolaos P. Papanikolopoulos,Pradeep K . Khosla and Takeo Kanade.Visual Tracking of a Moving Target by a Camera Mounted on a Robot:A Combination of Control and Vision. IEEE Transactions on roboticsand automation. vol. 9, no. I , february 1993.

Page 243: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

BIBLIOGRAFÍA 224

[75] Hill, J., and Park, W.T. Real Time Control of a Robot with a MobileCamera. Proceedings of the 9th ISIR , Washingtong DC, March, pp.233-246, 1979.

[76] Grasp Laboratory:http://www.grasp.upenn.edu/

[77] Monash University:http://www.ctie.monash.edu.au/AEROBOTICS/

[78] Lamiroy, B., Espiau, B., Andreff, N., and Horaud, R. Controlling Robotswith Two Cameras: How to Do Properly. Proc. IEEE/RSJ Int. Conf. onRobotics and Automation, pp. 2100-2105, 2000.

[79] Lamiroy, B. Puget, C. Horaud, R. What Metric Stereo Can Do for VisualServoing. Proceedings of the 2000 IEEE/RSJ Int. Conf. On IntelligentRobots and Systems, pp. 251-256, 2000.

[80] Namiki, A., Hashimoto, K., and Ishikawa, M. A Hierarchical ControlArchitecture for High-Speed Visual Servoing. International Journal ofRobotics Research, vol. 22, No 10-11, pp. 873-888, 2003.

[81] Lippiello, V., Siciliano, B. and Villani, L. Position and Orientation Esti-mation Based on Kalman Filtering of Stereo Images. Proceedings of the2001 IEEE International Conference on Control Applications, MexicoCity, September 5-7, 2001.

[82] Deng, L., Janabi-Sharifi, F., and Wilson, W.J. Stability and Robustnessof Visual Servoing Methods. Proceedings of the 2002 IEEE InternationalConference on Robotics and Automation, Washington, DC, May, 2002.

[83] Chaumette, F. Potencial Problems of Stability and Convergence inImage-Based and Position-Based Visual Servoing. The Confluence ofVision and Control.

[84] Martin, F., and Horaud, R. Múltiple-camera tracking of Rigid objects.International Journal of Robotics Research. Vol. 21, No. 2, pp. 97-113.

[85] Espiau, B. Effect of Camera Calibration Errors on Visual Servoing in Ro-botics. 3rd. International Symposium on Experimental Robotics, Kyoto,Japan, October 1993.

[86] Jagersand, M., Nelson, R. and Fuentes, O. Experimental Evaluation ofUncalibrated Visual Servoing for Precision Manipulation. Proceedingsof Int. Conf. Robotics & Automation, 1997.

Page 244: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

BIBLIOGRAFÍA 225

[87] Iwatsuki, M., and Okiyama, N. A New Formulation of Visual ServoingBased on Cylindrical Coordinate System. IEEE Trans. Robot. Auto-mat., vol 21, Nº 2, pp. 266-273, April, 2005.

[88] Mezouar, Y., and Chaumette, F. Path Planning in Image Space for Ro-bust Visual Servoing. Proceedings of the 2000 IEEE International Con-ference on Robotics and Automation, San Francisco, CA. April, 2000.

[89] Malis, E., Chaumette, F., and Boudet, S. 2½D Visual Servoing. IEEETrans. on Robotics and Automation, 15(2), pp. 234-246, 1999.

[90] Fang, Y., Behal, A., Dixon, W.E., and Dawson, D.M. Adaptive 2.5D Vi-sual Servoing of Kinematically Redundant Robots Manipulators. Pro-ceedings of the 41st IEEE Conference on Decision and Control, LasVegas, Nevada USA, 2002.

[91] Deguchi, K. Optimal motion Control for Image-Based Visual Servoingby Decoupling Traslation and Rotation. Proccedings of the IEEE/RSJInt. Conf. on Intelligent Robots and Systems, Victoria, B.C. Canada,1998.

[92] Hutchinson, S., and Gans, N. Switching Approaches to Visual ServoControl. Proceedings IEEE Int. Symposium, 27-30 October, 2002.

[93] Hafez, A.H.A, and Jawahar C.V. Visual Servoing by Optimization of a2D/3D Hybrid Objective Function. Proceedings of the 2007 IEEE Int.Conf. on Robotics and Automation, Roma, Italy, 10-14 April, 2007 .

[94] Corke, P.I., and Hutchinson, S.A., A New Partitioned Approach toImage-Based Visual Servo Control. IEEE Transaction on Robotics andAutomation, Vol. 17, No 4, August, 2001.

[95] Cretual, A, and Chaumette, F. Positioning a Camera Parallel to a PlaneUsing Dynamic Visual Servoing. IEEE Int. Conf. On Intelligent Robotsand Systems, Vol. 1, pp. 43-48, Grenoble, France, 1997.

[96] Colombo, C. Allota, B., and Darío, P. Affine Visual Servoing: A Frame-work for Relative Positioning with a Robot. Int. Conf. on Robotics andAutomation, pp. 464-471, Nagoya, Japan, 1995.

[97] Wijesoma, S., Wolfe, D., and Richards, R. Eye-to-Hand Coordinationfor Vision-Guided Robot Control Applications. International Journalon Robotics Research, vol. 12, No 1, pp.65-68, 1993.

Page 245: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

BIBLIOGRAFÍA 226

[98] Papanikolopoulos, N.P., Khosla, P.K., and Kanade, T. Visual Trackingof a Moving Target by a Camera Mounted on a Robot: A Combinationof Vision and Control. IEEE Transactions on Robotics and Automation,vol 9, pp. 14-35, 1993.

[99] Malis, E. Survey of Vision-Based Robot Control. ENSIETA EuropeanNaval Ship Design Short Course, Brest, France, April, 2002.

[100] Suh, I. Visual Servoing of Robot Manipulators by Fuzzy MembershipFunction Based Neural Networks. K. Hashimoto editor, Visual Servoing,pp. 285-315, World Scientific, Singapore, 1993.

[101] Mezouar, Y., and Chaumette, F. Optimal Camera Trajectory withImage-Based Control. International Journal of Robotics and Research.Vol. 22, No 10-11, pp. 781-803, October-November 2003.

[102] Sequeira, P.J., Mendonca, L.F., Sousa, J., and Caldas, J.R. Uncalibra-ted Eye-to-Hand Visual Servoing Using Inverse Fuzzy Models. IEEETransactions on Fuzzy Systems, to appear, 2007.

[103] Dementhon, D., and Davis, D.S. Model-Based Object Pose in 25 Linesof Code. International Journal of Computer Vision, 15(1/2), pp. 123-141, 1995.

[104] Pari, L., Sebastián, J.M., González, C., and Angel, L. Image Based Vi-sual Servoing: a New Method for the Estimation of the Image Jacobianin Dynamic Environments.

[105] Kragic, D., and Christensen, H. Cue Integration for Visual Servoing.IEEE Transactions on Robotics and Automation, vol. 17, Nº 1, February,2001.

[106] Grosso, E., Metta, G., Oddera, A., and Sandini, G. Robust Visual Ser-voing in 3-D Reaching Tasks. IEEE Transsactions on Robotics and Au-tomation, 12(5): 732-742, October 1996.

[107] Wilson, W., Hull, C.W., and Janabi-Sharifi, F. Robust Image Processingand Position-Based Visual Servoing. M. Vincze & Hager Ed. “Robustvision for manipulation”. Spie/IEEE Series, pp. 163-220, 2000.

[108] Malis, E. Theoretical Improvements in the Stability Analysis of a NewClass of Model-Free Visual Servoing Methods. IEEE Transactions onRobotics and Automation, Vol. 18, No 2, 2002.

[109] Anderson, R.L. Dynamic Sensing in a Ping-Pong Playing Robot. IEEETrans. Robotics and Automation, 5(6):723-739, 1989.

Page 246: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

BIBLIOGRAFÍA 227

[110] Espiau, B., Chaumette, F. and Rives, P. A New Approach to VisualServoing in Robotics. IEEE Transactions on Robotics and Automation,Vol. 8, No 3, 1992 .

[111] Eric Beets, Samia Boukir, and David Suter. Aircraft Pose Estimationfrom Homography.

[112] Bourquardez, O., and Chaumette, F. Visual Servoing of an Airplanefor Alignment with Respect to a Runway. Proceeding of the 2007 IEEEInternational Conference on Robotics and Automation, Roma, April 10-14 2007.

[113] Namiki, A., Nakabo, Y., Ishii, I., and Ishikawa, M. 1-ms Sensory-MotorFusion System. IEEE/ASME Transactions on Mechatronics, vol. 5, No3, September 2000.

[114] Moravec, H. 1979. Visual mapping by a robot rover. In Proceedingsof the International Joint Conference on Artificial Intelligence (IJCAI).598–600.

[115] Lowe, D. 2004. Distinctive image features from scale-invariant keypoints.Int. J. Comput. Vision 60, 2, 91–110.

[116] Mikolajczyk, K. and Schmid, C. 2003. A performance evaluation of lo-cal descriptors. In IEEE Conference on Computer Vision and PatternRecognition (CVPR). 1615–1630.

[117] Bruce D. Lucas and Takeo Kanade. An iterative image registration te-chnique with an application to stereo vision. In Proc. of Imaging Un-derstanding Workshop, pages 121130, 1981.

[118] Manual for uEye Cameras Version 3.50.00. October 2009.

[119] Cool LiteRunner-ECO PC/104 Carrier for CoreExpress® Technical Ma-nual.http://www.lippertembedded.com/

[120] G. Bradsky and A. Kaelher, ”Learning OpenCV. Computer Vision withthe OpenCV Library”, O’Reilly, 2008.

[121] Autonomous Helicopter Project, Carnegie Mellon University.http://www.cs.cmu.edu/afs/cs/project/chopper/www/history.html

[122] N. Andreff, R. Horaud and B. Espiau, ”Robot Hand-Eye CalibrationUsing Structure from- Motion”, The International Journal of RoboticsResearch, Vol. 20, No. 3, pp.228-248, 2001.

Page 247: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

BIBLIOGRAFÍA 228

[123] Ezio Malis and Manuel Vargas. Deeper understanding of the homo-graphy decomposition for vision-based control.

[124] Georgia Institute of Technology.http://www.gatech.edu/

[125] Open Tracking Library:http://www.opentl.org/.

[126] Weyns - A Pattern Language for Multi-Agent Systems, Danny Weins,DistriNet Labs,2009.

[127] Craparo - Natural Language Processing for Unmanned Aerial VehicleGuidance Interfaces, Emily M.Craparo, MIT,2002.

[128] California Institute of Technology.http://www.caltech.edu/

[129] Fusión Sensorial imu-Cámara. Manuel Vargas, Junio 2010.

[130] B.N.Passow, M.A.Gongora, S.Coupland, A.A.Hopgood, Real-time Evo-lution of an Embedded Controller for an Autonomous Helicopter, Proc.of the IEEE Congress on Evolutionary Computation, WCCI’08, HongKong, 2008.http://www.youtube.com/watch?v=JiyCXF6cnpQ

Page 248: Realimentacion Visual Para El Control de Un Vehiculo Aereo Cuatrimotor No Tripulado-Optimizado

BIBLIOGRAFÍA 229