Anda di halaman 1dari 248

JE

R
CU

ESS MA
REALI
PAR
UN
UATRI

ARA GO
IMEN
RA EL
VEH
MOTO
S


ONZLE




NTACI
CON
CULO
OR NO











SEVILLA
2010
EZ VILL
N VI
NTROL
O AR
O TRIP
A
LAGME
ISUAL
L DE
REO
PULA
EZ
L
ADO









































R
CU
Dpto
JE
D
UNIV
INGEN
REALI
PAR
UN
UATRI
Proye
o. de Ing
E
ESS MA
DR. MA
VERSID
NIERO
IMEN
RA EL
VEH
MOTO
ecto Final
geniera
Escuela Su
ARA GO
ANUEL V
Sevilla, S







DAD D


EN INF



NTACI
CON
CULO
OR NO


de Carrera

a de Sist

uperior de

POR

ONZLE

TUTOR

VARGAS


Septiembre

E SEVI
FORM
N VI
NTROL
O AR
O TRIP
a presenta
temas y
Ingeniero
EZ VILL
S VILLA
e de 2010.
ILLA
TICA
ISUAL
L DE
REO
PULA
ado en:
Autom
os
LAGME
ANUEVA
.
L
ADO
tica
EZ
A
i
ii
iii
A Marta, mi novia, y mi familia, por su incomensurable paciencia.
A Rafa y Ramn, entre otros, compaeros del Departamento de Ingeniera
de Sistemas y Automtica de la Universidad de Sevilla, por haberme acogido
como uno ms entre ellos, y por haberme dado continuas muestras de cario.
Y en especial a Manuel Vargas, profesor del Dpto., por haber conado en m
habindome dado esta oportunidad y por estar siempre disponible para
ayudarme cada vez que llamaba a la puerta de su despacho, que no han sido
pocas.
Gracias por haber estado siempre ah.
iv
v
El contexto en el que se desarrolla este proyecto es en el del
control de vehculos areos autnomos (UAV). Se afronta esta ta-
rea desde un punto de vista distinto al habitual, considerando en
primer lugar un control complementado mediante informacin
visual obtenida del entorno, y en segundo lugar, como posible
ampliacin, se describen algunas tcnicas mediante las cuales la
nica informacin sensorial para el control sera la obtenida con
el sensor ptico. Se plantear un esquema de control basado en
visin, y se incluirn descripciones de algoritmos para el proce-
samiento de la informacin visual. Como conclusin a la presente
memoria, y dada la especialidad del autor, se incluirn tambin
posibles ampliaciones del presente trabajo ms prximas a la en-
seanza recibida como Ingeniero en Informtica.
vi
ndice general
1. Introduccin 1
1.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Problemas en el control visual de vehculos areos autnomos . 4
1.3. Objetivos y propuestas . . . . . . . . . . . . . . . . . . . . . . 7
1.4. Estructura del proyecto . . . . . . . . . . . . . . . . . . . . . 8
2. Estado del arte del control de plataformas UAV 11
2.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2. Control no basado en visin de vehculos areos autnomos . . 13
2.3. Control con informacin visual de vehculos areos autnomos 16
2.4. Aplicaciones del control visual en plataformas autnomas . . . 18
3. Tcnicas de control con realimentacin visual 21
3.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2. Conguraciones cmara-robot . . . . . . . . . . . . . . . . . . 22
3.2.1. Segn la disposicin de la cmara respecto del robot . 22
3.2.2. Segn el nmero de cmaras . . . . . . . . . . . . . . . 24
3.3. Esquemas de control visual . . . . . . . . . . . . . . . . . . . . 25
3.3.1. En funcin de la estructura de control . . . . . . . . . 25
3.3.2. En funcin de la informacin visual . . . . . . . . . . 27
3.3.3. En funcin de los elementos requeridos en el campo visual 33
3.3.4. En funcin de la necesidad de modelo del objeto . . . . 34
3.3.5. En funcin del modelo visuo-motor . . . . . . . . . . . 35
3.4. Otros aspectos del control visual . . . . . . . . . . . . . . . . . 36
3.5. Conclusin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4. Localizacin y seguimiento del objeto de referencia 39
4.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2. Representacin del objeto . . . . . . . . . . . . . . . . . . . . 42
4.3. Seleccin de caractersticas para el seguimiento . . . . . . . . . 47
4.4. Deteccin del objeto . . . . . . . . . . . . . . . . . . . . . . . 49
4.4.1. Detectores de puntos . . . . . . . . . . . . . . . . . . . 49
vii
NDICE GENERAL viii
4.4.2. Mtodos de deteccin no basados en puntos . . . . . . 52
4.5. Seguimiento del objeto . . . . . . . . . . . . . . . . . . . . . . 53
4.5.1. Seguimiento basado en puntos . . . . . . . . . . . . . . 54
4.5.2. Seguimiento basado en apariencia . . . . . . . . . . . . 58
4.5.3. Seguimiento de siluetas y contornos . . . . . . . . . . . 60
5. Sensor ptico: modelado y proceso de calibracin 61
5.1. Modelado de la cmara . . . . . . . . . . . . . . . . . . . . . . 61
5.1.1. Modelo pinhole . . . . . . . . . . . . . . . . . . . . . . 61
5.1.2. Parmetros extrnsecos . . . . . . . . . . . . . . . . . . 62
5.1.3. Parmetros intrnsecos . . . . . . . . . . . . . . . . . . 65
5.2. Posicionamiento 3D mediante el sistema de visin . . . . . . . 71
5.3. Proceso de calibracin . . . . . . . . . . . . . . . . . . . . . . 73
5.3.1. Base terica . . . . . . . . . . . . . . . . . . . . . . . . 73
5.3.2. Proceso de calibracin en la prctica . . . . . . . . . . 78
6. Implementacin de mecanismos para la extraccin de infor-
macin visual 91
6.1. Objeto de referencia tridimensional . . . . . . . . . . . . . . . 92
6.1.1. Representacin, localizacin y seguimiento del objeto de
referencia . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.1.2. Clculo de los parmetros extrnsecos . . . . . . . . . . 100
6.1.3. Proyeccin tridimensional . . . . . . . . . . . . . . . . 101
6.1.4. Comprobacin de resultados . . . . . . . . . . . . . . . 104
6.1.5. Problemas durante la implementacin . . . . . . . . . . 111
6.2. Objeto de referencia plano . . . . . . . . . . . . . . . . . . . . 113
6.2.1. Matriz de homografa . . . . . . . . . . . . . . . . . . . 116
6.2.2. GoodFeaturesToTrack() y ujo ptico para el seguimien-
to del objeto de referencia . . . . . . . . . . . . . . . . 128
6.2.3. SIFT - Scale Invariant Feature Transform . . . . . . . 145
6.2.4. SURF - Speeded Up Robust Features . . . . . . . . . . . 147
6.3. Otras alternativas para la realimentacin visual . . . . . . . . 150
7. Fusin sensorial 151
7.1. Descripcin del sensor inercial . . . . . . . . . . . . . . . . . . 151
7.2. Funciones de interfaz con la IMU . . . . . . . . . . . . . . . . 153
7.2.1. Datos de orientacin . . . . . . . . . . . . . . . . . . . 153
7.2.2. Calibrated Data . . . . . . . . . . . . . . . . . . . . 155
7.3. Medidas incompletas de la IMU . . . . . . . . . . . . . . . . . 157
7.4. Fusin de la informacin . . . . . . . . . . . . . . . . . . . . . 160
7.5. Calibracin IMU-Cmara . . . . . . . . . . . . . . . . . . . . . 161
7.6. Otras alternativas de realimentacin sensorial . . . . . . . . . 168
NDICE GENERAL ix
8. Hardware y modelado del helicptero Quadrotor 171
8.1. Descripcin del modelo del quadrotor . . . . . . . . . . . . . . 171
8.1.1. Descripcin del modelo del UAV . . . . . . . . . . . . . 171
8.1.2. Planteamiento del modelo del sistema . . . . . . . . . . 172
8.2. Esquema general de control . . . . . . . . . . . . . . . . . . . 180
8.3. Descripcin del equipo . . . . . . . . . . . . . . . . . . . . . . 181
9. Trabajos futuros y conclusin 184
9.1. Ampliaciones y otras alternativas para el control . . . . . . . . 184
9.1.1. Open Tracking Library . . . . . . . . . . . . . . . . . . 184
9.1.2. Lenguaje de comunicacin de UAVs . . . . . . . . . . . 185
9.1.3. Ampliaciones con la librera OpenCV . . . . . . . . . . 187
9.1.4. Obtencin de un controlador robusto mediante algorit-
mos genticos . . . . . . . . . . . . . . . . . . . . . . . 188
9.1.5. Aplicacin de tcnicas de inteligencia articial para el
control . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
9.2. Conclusin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
A. Cdigo desarrollado 194
B. OpenCV 196
B.1. Caractersticas de la versin 2.0 . . . . . . . . . . . . . . . . . 196
B.2. Conguracin de OpenCV . . . . . . . . . . . . . . . . . . . . 196
B.2.1. Conguracin en Ubuntu 9.10 . . . . . . . . . . . . . . 196
B.2.2. Conguracin para Dev C++ en entornos Windows . . 202
B.3. Caractersticas de la versin 2.1 . . . . . . . . . . . . . . . . . 209
C. Interfaz de programacin de la cmara 210
D. Diagrama temporal de Gantt. 214
E. Diagrama de clases de la aplicacin 216
NDICE GENERAL x
ndice de guras
1.1. Ejemplo de esquema del diagrama de bloques para la estimacin
y control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Sistema de sujecin del UAV para experimentos. . . . . . . . . 4
2.1. Ejemplo de rotor de una sola aspa. . . . . . . . . . . . . . . . 12
2.2. Ejemplo de conguracin de 2 aspas por rotor. . . . . . . . . . 12
2.3. Detalle de las antenas receptoras del GPS del prototipo de la
Universidad de Standford Hummingbird. . . . . . . . . . . . 14
2.4. Helicptero del proyecto AVATAR, de la Universidad de Sout-
hern California. . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5. Experimentos de vuelo en formacin en el proyecto BEAR:
BErkeley Aerobot Research. . . . . . . . . . . . . . . . . . . . 15
2.6. Helicptero de la Universidad Carnegie Mellon. . . . . . . . . 17
2.7. Brazo robtico del transbordador espacial. . . . . . . . . . . . 18
2.8. Titular de la revista Spectrum: Lecciones del vertido del Golfo
para la Robtica. . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.9. Izquierda: Misiones espaciales no tripuladas. Derecha: Detalle
de UAV para aplicaciones militares. . . . . . . . . . . . . . . . 20
3.1. Ejemplo de cmara en mano. . . . . . . . . . . . . . . . . . . 22
3.2. Ejemplo de cmara ja (izquierda) embebida en parte inferior
del sistema de la derecha. . . . . . . . . . . . . . . . . . . . . 23
3.3. Eye-in-hand / Eye-to-hand cooperation. . . . . . . . . . . . . . 23
3.4. Sistema de cmaras estreo. . . . . . . . . . . . . . . . . . . . 24
3.5. Control visual mirar y mover dinmico. . . . . . . . . . . . . . 26
3.6. Control visual directo. . . . . . . . . . . . . . . . . . . . . . . 27
3.7. Control visual basado en posicin. . . . . . . . . . . . . . . . . 28
3.8. Control visual basado en imagen. . . . . . . . . . . . . . . . . 29
3.9. Control visual 2D . . . . . . . . . . . . . . . . . . . . . . . . 30
3.10. Control visual basado en movimiento. . . . . . . . . . . . . . . 32
3.11. Clasicacin de los sistemas de control visual respecto al mo-
delo visuo-motor. . . . . . . . . . . . . . . . . . . . . . . . . . 35
xi
NDICE DE FIGURAS xii
3.12. Ejemplo de deteccin de lneas en entornos urbanos. . . . . . . 37
3.13. Ejemplo de deteccin de lneas en una carretera. . . . . . . . . 37
4.1. Objeto de referencia utilizado en el presente proyecto. . . . . . 40
4.2. Representacin del objeto por puntos. . . . . . . . . . . . . . . 42
4.3. Representacin del objeto usando formas geomtricas bsicas. 43
4.4. Representacin del objeto usando contornos y siluetas. . . . . 43
4.5. Representacin del objeto como modelo articulado. . . . . . . 44
4.6. Representacin del esqueleto de un objeto. . . . . . . . . . . . 44
4.7. Puntos de inters usando Harris. . . . . . . . . . . . . . . . . . 49
4.8. Puntos de inters usando KLT. . . . . . . . . . . . . . . . . . 50
4.9. Puntos de inters usando SIFT. . . . . . . . . . . . . . . . . . 51
4.10. Kernel Tracking. . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.11. Evolucin de contornos. . . . . . . . . . . . . . . . . . . . . . 54
4.12. Conjunto total de asociaciones de un punto. . . . . . . . . . . 55
4.13. Correspondencias correctas para un conjunto de puntos. . . . . 55
4.14. 1: Velocidad mxima. 2: Cambios pequeos en la velocidad. 3:
Restricciones comunes. 4: Geometra del objeto. . . . . . . . . 56
4.15. Seguimiento de caractersticas usando el algoritmo KLT tracker. 59
5.1. Modelo pinhole de la cmara. . . . . . . . . . . . . . . . . . . 62
5.2. Relacin gemetrica-espacial entre el sistema de coordenadas
de la cmara y el sistema de coordenadas del objeto. . . . . . . 63
5.3. Representacin de los parmetros intrnsecos de la cmara. . . 67
5.4. Ejemplo del efecto de la distorsin radial. . . . . . . . . . . . . 68
5.5. Representacin vectorial ante un valor positivo de k
1
. . . . . . 69
5.6. Representacin vectorial ante un valor positivode p
1
. . . . . . 69
5.7. Representacin vectorial para un valor positivo de p
2
. . . . . . 70
5.8. Distorsin tangencial. El plano de la imagen no es del todo
paralelo al de la lente. . . . . . . . . . . . . . . . . . . . . . . 70
5.9. Sistemas de coordenadas involucrados y nomenclatura. . . . . 71
5.10. Objetos de calibracin planar y cbico. . . . . . . . . . . . . . 73
5.11. Detalle de una de las capturas del objeto para la calibracin. . 74
5.12. Detalle de corners en el objeto de calibracin. . . . . . . . . . 79
5.13. Imgenes del tablero de ajedrez vistas desde varios puntos dis-
tintos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.14. Reconstruccin 3D terica. . . . . . . . . . . . . . . . . . . . . 80
5.15. Reconstruccin 3D real. . . . . . . . . . . . . . . . . . . . . . 81
5.16. Cmara y plantilla de calibracin con los correspondientes sis-
temas de coordenadas. . . . . . . . . . . . . . . . . . . . . . . 82
5.17. Localizacin automtica de los puntos y origen del sistema de
referencia del objeto. . . . . . . . . . . . . . . . . . . . . . . . 84
NDICE DE FIGURAS xiii
5.18. Situacin de los puntos antes de realizar la correccin manual. 85
5.19. Situacin de los puntos despus de realizar la correccin manual. 85
5.20. Reproyeccin del conjunto de puntos sobre los puntos reales de
la imagen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.21. Detalle de la diferencia entre punto de la imagen real (rojo) y
punto reproyectado (azul). . . . . . . . . . . . . . . . . . . . . 87
5.22. Reproyeccin media del error. . . . . . . . . . . . . . . . . . . 87
5.23. Representacin 3D de los parmetros extrnsecos (1). . . . . . 88
5.24. Representacin 3D de los parmetros extrnsecos (2). . . . . . 88
6.1. Ejemplo de realidad aumentada. . . . . . . . . . . . . . . . . . 93
6.2. Herramienta de precisin necesaria para determinar la geome-
tra del objeto de inters. . . . . . . . . . . . . . . . . . . . . . 94
6.3. Ejemplo de localizacin de corners por interseccin de rectas. . 95
6.4. Precisin en la localizacin de los corners, basado en el gradien-
te del punto en la imagen. . . . . . . . . . . . . . . . . . . . . 98
6.5. Representacin de los ejes del sistema de coordenadas del objeto. 99
6.6. Reconstruccin 3D del objeto de inters. . . . . . . . . . . . . 103
6.7. Plantilla para experimentos en el laboratorio. . . . . . . . . . 104
6.9. Alineacin de la cmara con la plantilla de referencia. . . . . . 105
6.8. Detalle de las marcas de medicin en la plantilla. . . . . . . . 105
6.10. Situacin inicial tablero (Izq). Situacin nal (Dcha). . . . . . 106
6.11. Centro real estimado del sistema de coordenadas de la cmara. 107
6.12. Situacin inicial tablero (Izq). Situacin nal(Dcha).Se aprecia
desplazamiento en horizontal. . . . . . . . . . . . . . . . . . . 108
6.13. Posicin inicial (Izq) y posicin nal (Dcha). . . . . . . . . . . 109
6.14. Marcas en la plantilla para medir la rotacin. . . . . . . . . . 110
6.15. Experimentos para comprobar la rotacin del tablero. . . . . . 110
6.16. Representacin del objeto mediante formas geomtricas bsicas
para el clculo de la homografa. . . . . . . . . . . . . . . . . . 114
6.17. Frame actual y deseado del sistema. . . . . . . . . . . . . . . . 116
6.18. Representacin grca de la primera restriccin. . . . . . . . . 120
6.19. Representacin grca de la segunda restriccin. . . . . . . . . 121
6.20. Seleccin manual del objeto. . . . . . . . . . . . . . . . . . . . 132
6.21. Obtencin de la mscara de seleccin del objeto. . . . . . . . . 132
6.22. Detalle de la distorsin de la lente. . . . . . . . . . . . . . . . 134
6.23. Restricciones de un punto en Lucas Kanade. . . . . . . . . . . 135
6.24. Representacin piramidal de una imagen. . . . . . . . . . . . . 136
6.25. Bsqueda piramidal con ujo ptico. . . . . . . . . . . . . . . 138
6.26. Estimacin de los puntos usando la funcin cvCalcOpticalFlowPyrLK().139
6.27. Error en la estimacin de los puntos del objeto. . . . . . . . . 139
NDICE DE FIGURAS xiv
6.28. Ejemplo de la tcnica template matching. Se desplaza la plan-
tilla de referencia hasta que el emparejamiento sea ptimo. . . 141
6.29. Reconstruccin parcial usando la matriz de homografa. . . . . 142
6.30. Pxeles con los que se realiza la comparacin del valor de D
para encontrar mximos locales en SIFT. . . . . . . . . . . . . 145
6.31. Histogramas de orientacin SIFT para el clculo del descriptor.
En la imagen se muestra un ejemplo de tamao 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 direccin de y, en la direccin de
xy y las aproximaciones realizadas usando ltros de caja (box
lters). Las regiones grises son igual a 0. . . . . . . . . . . . . 148
7.1. Detalle externo del sensor inercial. . . . . . . . . . . . . . . . . 152
7.2. Detalle interno del sensor inercial. . . . . . . . . . . . . . . . . 152
7.3. Diseo del acoplamiento entre la imu y la cmara. . . . . . . . 161
7.4. Acoplamiento real entre la cmara y el sensor inercial. . . . . . 162
7.5. Montaje para el proceso de calibracin. . . . . . . . . . . . . . 164
7.6. Detalle del puntero lser sobre el centro de referencia. . . . . . 165
7.7. Detalle de la primera estimacin para el centro de referencia
del sistema de la cmara. . . . . . . . . . . . . . . . . . . . . . 166
7.8. Detalle de la segunda estimacin (denitivo) para el centro de
referencia del sistema de la cmara. . . . . . . . . . . . . . . . 167
7.9. Control de UAV mediante cmaras infrarojas. . . . . . . . . . 168
7.10. Vehculo areo de ala ja. . . . . . . . . . . . . . . . . . . . . 169
8.1. Esquema bsico de funcionamiento del quadrotor. . . . . . . . 172
8.2. Conjunto de fuerzas sobre el modelo ideal del quadrotor. . . . 173
8.3. Detalle del helicptero en miniatura. . . . . . . . . . . . . . . 182
8.4. Detalle de uno de los rotores integrados en el quadrotor, en fase
de pruebas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
8.5. Equipo integrado on-board PC-104. . . . . . . . . . . . . . . . 183
8.6. Detalle de integracin de los sensores inercial y ptico a bordo
del quadrotor. . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
9.1. Obtencin del controlador de vuelo mediante algoritmos gen-
ticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
9.2. Ejemplo de robots colaborativos. . . . . . . . . . . . . . . . . 190
B.1. Lista de servidores de versiones . . . . . . . . . . . . . . . . . 197
B.2. Creacin del nuevo compilador. . . . . . . . . . . . . . . . . . 203
NDICE DE FIGURAS xv
B.3. Inclusin de rutas en DirectoriesBinaries. . . . . . . . . . . 204
B.4. Inclusin de rutas en DirectoriesLibraries. . . . . . . . . . . 205
B.5. Inclusin de rutas en DirectoriesC includes. . . . . . . . . . 206
B.6. Inclusin de rutas en DirectoriesC++ includes. . . . . . . . 207
B.7. Optimizacin de cdigo en Dev C++. . . . . . . . . . . . . . . 208
NDICE DE FIGURAS xvi
Captulo 1
Introduccin
1.1. Introduccin
Los vehculos areos autnomos, o como se conocen tambin por sus siglas
en ingls, UAV
1.1
, han sido un rea de investigacin muy activa durante los
ltimos aos. Por ejemplo, el uso de UAVs en aplicaciones civiles de patrulla-
je, monitoreo o investigacin [1] contina en crecimiento debido en parte a la
evolucin y reduccin en el coste de los sistemas de visin.
La visin para el control de un UAV implica realizar un proceso de in-
vestigacin en diversos campos relacionados tanto con el rea de visin por
computador, como son la deteccin y seguimiento de objetos, estimacin de
la posicin, fusin sensorial de GPS
1.2
y medidas inerciales, como otras reas,
como son el modelado y control de sistemas multivariables no lineales.
Un helicptero autnomo posee propiedades que lo convierten en la plata-
forma ideal para casi cualquier tarea. Su inherente habilidad de volar a baja
velocidad, estacionariamente, lateralmente e incluso realizar maniobras en es-
pacios reducidos [36] lo hacen el vehculo areo perfecto para las aplicaciones
mencionadas en el prrafo anterior.
Dichas habilidades son particularmente tiles en entornos conocidos y es-
tructurados donde las caractersticas u objetos a seguir visualmente estn
denidos geomtricamente, lo que facilita la estimacin y el control basado en
visin.
1.1
Unmanned Aerial Vehicle, o vehculo areo no tripulado.
1.2
Global Positioning System o sistema de posicionamiento global.
1
1.1. Introduccin 2
La realizacin de tareas por parte de sistemas automatizados o robotizados
en entornos estructurados con presencia de objetos cuya posicin y orientacin
son conocidas, es un problema que se ha tratado con profundidad durante las
ltimas dcadas ([15][27][28][103], entre otros). Sin embargo, si se considera el
uso futuro de los aviones no tripulados, donde la conguracin del contexto
cambia continuamente, se pone de maniesto lo vital que es la informacin
sensorial presente en el sistema [5].
La utilizacin de un sistema de visin en la realizacin de una tarea por
parte de un sistema automatizado, tiene la denominacin genrica de Con-
trol Visual (Visual Servoing) ([20][23][39][41][51], entre otros). El sistema de
visin obtiene informacin visual de la escena en forma de caractersticas de
imagen, que son realimentadas al lazo de control del sistema. Un ejemplo es
el extrado de [3] y mostrado en la Figura 1.1, en el que la tarea del control
visual es realizada en un equipo en tierra (en la propuesta presentada en este
proyecto la tarea del control visual se lleva a cabo en el helicptero).
Figura 1.1: Ejemplo de esquema del diagrama de bloques para la estimacin
y control.
Los primeros estudios [70][74][75] aplicados sobre todo a procesos indus-
triales ante la presencia de sistemas robotizados, desacoplaban las acciones de
la extraccin de imgenes y el control del robot, de tal manera que el contro-
lador, despus de recibir la informacin visual y determinar la posicin a la
cual moverse, ordenaba al robot a moverse a dicha posicin asumiendo que no
se haba producido ningn cambio en la escena, esto es, el entorno permanece
esttico desde que el comando de movimiento fue ejecutado.
La ventaja de este tipo de control es su simplicidad, siendo sta una de
las razones (entre otras) por la que tan slo puede ser aplicable a sistemas
1.1. Introduccin 3
en los que la tarea a realizar est determinada y no vare (como es el caso de
un entorno industrial). En contraposicin, el control visual tal y como queda
reejado en la bibliografa ([31], entre otros), permite que el sistema de vi-
sin cierre el lazo de control: en cada ciclo la informacin visual del entorno o
de algn objeto de inters situado en la escena es actualizada de tal manera
que el controlador corregira el movimiento a una nueva posicin de destino.
Esta tarea se realiza bien de forma indenida o hasta que el objeto a seguir ha-
ya desaparecido de la escena, con lo que se volvera a una posicin por defecto.
Muchas publicaciones a lo largo de los ltimos aos muestran que las tc-
nicas de control visual
1.3
incrementan la calidad (exactitud, robustez,etc) del
sistema [25][29][66]. La calidad del tracking
1.4
y del control depende del tipo
y nmero de caractersticas de la imagen que se utilizan, donde la redundan-
cia juega un papel muy importante [89] siendo esto habitual en las tareas de
control visual.
Otro aspecto importante es el nmero de cmaras utilizadas. En funcin
del mismo se utilizan unas tcnicas para el control visual [42] u otras [22][93].
En el presente proyecto se ha optado por el uso de una nica cmara, debido
principalmente a que es ms fcil implementar tcnicas para una conguracin
monocular que una conguracin de varias cmaras.
La propuesta presentada en esta memoria combina principalmente tcnicas
de visin por computador, con un terico control a bajo nivel para lograr el
control visual de un UAV por medio del seguimiento visual de caractersticas
en la imagen. El sistema de visin acta pues como un controlador de alto
nivel enviando consignas de posicin al control de vuelo, el cual es responsa-
ble de un control robusto y estable. El resultado de esta combinacin es la
obtencin de un algoritmo de seguimiento visual de caractersticas extradas
de la imagen que controla los desplazamientos de un UAV, tanto en espacios
interiores como exteriores
1.5
.
1.3
O por su traduccin en ingls: Visual Servoing.
1.4
Equivale a la calidad del algoritmo de seguimiento.
1.5
Decir que en principio las pruebas de realizan en interiores, pero que el algoritmo es
para seguimiento de caractersticas en general.
1.2. Problemas en el control visual de vehculos areos autnomos 4
1.2. Problemas en el control visual de vehcu-
los areos autnomos
A pesar de que un UAV posee muchas ventajas para determinadas tareas,
tiene la desventaja de ser difcil de controlar. Esto se pone de maniesto en
[32][52][54], entre otros. Los helicpteros son por naturaleza sistemas multi-
variable bastante inestables, donde el control de bajo nivel encargado de la
estabilidad debe ser capaz de afrontar esta condicin. Si por algn motivo un
UAV dejara de recibir comandos de control, por pequeo que sea el perodo
de tiempo de esta particularidad, se volvera rpidamente inestable y se pre-
cipitara hacia el suelo, con la correspondiente prdida de equipo y dinero.
Esto provoca pues que el investigar con este tipo de plataformas sea una
tarea compleja y peligrosa. En numerosos estudios, para la realizacin de las
pruebas pertinentes del controlador, se suelen establecer medidas de seguridad
para evitar el anterior desenlace: sujecin con cables a una gra o al techo,
sensores de infrarrojos para comprobar que la altura actual se mantiene entre
unos mrgenes de seguridad, etc.
Figura 1.2: Sistema de sujecin del UAV para experimentos.
El problema del control visual sobre robots terrestres es un tema que ha
sido ampliamente estudiado durante las ltimas dcadas, y es un campo al
cual se han aportado numerosas contribuciones. Sin embargo, para sistemas
automatizados areos muchos problemas quedan an pendientes de resolver.
Dichos problemas se acentan si se tiene en cuenta que los vehculos areos
1.2. Problemas en el control visual de vehculos areos autnomos 5
operan en un espacio tridimensional mucho ms amplio que los robots terres-
tres, aadiendo que las capacidades y carga til de los vehculos areos de
pequea a media escala son mucho ms limitadas que la de los robots mviles
terrestres.
Si pensamos adems en que la capacidad de cmputo del sistema on-board
es directamente proporcional al peso del equipo y del consumo de ste, se
plantea la necesidad de estimar las caractersticas adecuadas para soportar
toda la lgica del controlador y del sistema de cmputo para la resolucin de
algoritmos basados en visin.
En este aspecto, los sensores pticos actuales suelen ser livianos y ecientes
en lo que se reere al consumo de energa. Con el aumento en la miniaturi-
zacin de los sensores CCD
1.6
y CMOS, la visin por computador ofrece su
potencial a los MAUV (Micro Air Unmanned Vehicles). Al contrario que los
sensores de escaneado o de barrido laterales, como los lseres, las cmaras
toman muestras instantneas del entorno, lo que es ptimo para este tipo de
plataformas dinmicas.
Pero no todo son ventajas al usar este tipo de sensores; ante cambios en las
condiciones lumnicas, la calidad de las tomas capturadas disminuye, usual-
mente hasta que el sensor se adecua a las mismas. Incluso aunque todas las
condiciones para la captura de imgenes sean las idneas, existe el problema
subyacente de la interpretacin de la escena y de la extraccin de la informa-
cin relevante de ella.
La visin en humanos es considerada eciente en su interpretacin y un
mecanismo casi perfecto; incluso en condiciones extremas, el ser humano es
capaz de extraer informacin 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 extraccin de infor-
macin 3D de la escena haya alcanzado niveles de precisin y detalle ms que
aceptables, siempre se puede dar el caso de que las cmaras generen datos
dispersos y propensos al ruido.
1.6
Un CCD (siglas en ingls de charge-coupled device: dispositivo de carga acoplada) es
un circuito integrado que contiene un nmero determinado de condensadores enlazados o
acoplados
1.2. Problemas en el control visual de vehculos areos autnomos 6
As pues, el problema del control visual para un vehculo areo autnomo
puede ser descrito como:
Desarrollo del sistema de visin : ste a su vez puede ser subdividido en:
Conguracin del hardware apropiado para acometer la tarea del
procesamiento visual a bordo del helicptero.
Desarrollo de la arquitectura de software para comunicar la capa
de controladores con la de procesamiento visual.
Algoritmos de deteccin y seguimiento de caractersticas :
En el presente trabajo se han desarrollado varias propuestas, basadas en
diferentes consideraciones del objeto de control.
Fusin sensorial :
Cmo integrar la informacin visual y la de los dems sensores on-board,
como pueden sensores inerciales, GPS u otros, y la denicin del esquema
ms adecuado en el cual las referencias visuales sean integradas en el
control de vuelo.
Desarrollo del controlador adecuado :
Dadas las ecuaciones que gobiernan la dinmica del helicptero, se trata
de disear un controlador robusto usando como realimentacin la infor-
macin sensorial anterior con los datos de los sensores ptico e inercial,
para el seguimiento de una determinada trayectoria u objeto de inters.
1.3. Objetivos y propuestas 7
1.3. Objetivos y propuestas
En este proyecto se aborda el problema del control visual partiendo de la
premisa de la existencia de un controlador robusto a bajo nivel para el control
de estabilizacin del quadrotor
1.7
. A dicho controlador, o a una modicacin
del mismo, se introduce la informacin visual para controlar la trayectoria del
vehculo por medio de la deteccin y seguimiento de caractersticas en el plano
de la imagen.
Usando tcnicas desarrolladas en posteriores captulos, se espera que el
quadrotor sea capaz de realizar desplazamientos 2D/3D basados en visin,
siguiendo las caractersticas denidas manualmente o seleccionadas de forma
automtica, y usando su ubicacin en la imagen para controlar las maniobras
del mismo. Los mtodos para la localizacin y seguimiento del objeto de refe-
rencia son vistas en detalle en el captulo 4.
La propuesta de control visual (que se vern en detalle en el captulo 3)
que se ha seleccionado para ser implementada es la de control visual basado en
posicin (PBVS Position Based Visual Servoing). Para el esquema de control
visual basado en imagen (IBVS Image Based Visual Servoing) es necesario un
controlador distinto al existente del planteado en [52] (el cual es el controla-
dor usado para la estabilizacin del quadrotor), por lo que no se plantea su
implementacin 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 el
controlador de alto nivel se considera al vehculo como un punto otante en
el espacio (cuyo origen de coordenadas coincide con el centro geomtrico del
quadrotor
1.8
), el cual puede ser controlado mediante referencias de velocidad,
posicin y cambios de orientacin.
Prcticamente la mayor parte del cdigo desarrollado ha sido implementa-
do en el lenguaje de programacin C++, usando la librera de procesamiento
de imgenes OpenCV, en su versin 2.0. La plataforma de desarrollo ha sido
Ubuntu 9.10, sistema basado en UNIX. Ms informacin de todo lo referente
al desarrollo es dada en el Apndice B.
1.7
Es necesario an realizar experimentos con el controlador propuesto en la actualidad.
1.8
Ms 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.
1.4. Estructura del proyecto 8
1.4. Estructura del proyecto
Dado que en el presente proyecto se han mezclado temticas de muy diver-
sa ndole, es necesario exponer de forma detallada algunas de ellas para poder
generar una memoria autocontenida y completa.
En una sola frase, se han mezclado conceptos de procesamiento digital de
imgenes (algoritmos de localizacin y seguimiento), con conceptos de control
de vehculos areos autnomos (basados o no en control visual) incluyendo
adems el modelo del controlador usado para garantizar la estabilidad del
quadrotor; sin olvidar la formulacin del modelo de la cmara, algoritmos pa-
ra la calibracin de la misma; fusin sensorial entre los datos de la cmara con
los del sensor inercial (IMU), cuestiones relacionadas con geometra proyectiva
incluyendo adems la descomposicin de la matriz de homografa, y, adems,
la realizacin de experimentos en el laboratorio. Es por esto necesario un de-
talle en profundidad de algunas de las temticas expuestas anteriormente.
La presente memoria queda estructurada como sigue:
En el captulo 2 se describe brevemente el estado del arte del control de
vehculos areos autnomos (sin usar informacin visual), y una breve
resea histrica del control visual (en el que se hace uso de informacin
visual) aplicado a vehculos areos autnomos. Adems se presentan apli-
caciones reales en las que la plataforma principal es un UAV con parte
de control visual.
En el captulo 3 se describe el estado del arte del control visual para
UAV y las distintas alternativas presentes en la literatura.
En el captulo 4 se desarrollan de forma terica los mtodos presentes en
la literatura para la localizacin y el seguimiento del objeto de referencia.
En el captulo 5 se desarrolla todo el contenido relacionado con el proceso
de calibracin de la cmara, necesario para los experimentos llevados a
cabo en el presente trabajo. Se exponen de forma terica los conceptos
clave y se presentan los resultados obtenidos de dicho proceso.
En el captulo 6 se presentan todas las propuestas para la extraccin
de la informacin visual necesaria para cerrar el lazo del control que se
han implementado y de las cuales se han realizado experimentos en el
laboratorio. Principalmente se clasican en dos grupos: modelando el
objeto como un objeto tridimensional y modelndolo como un objeto
1.4. Estructura del proyecto 9
plano. Se exponen tambin otras tcnicas desarrolladas en fases iniciales
pero que nalmente fueron descartadas por diversos motivos.
Cmo fusionar informacin del sensor inercial con la informacin visual
se expone en el captulo 7.
En el captulo 8 se presenta el sistema de control realimentado para
el quadrotor. Tambin se incluye una descripcin de la dinmica del
sistema.
En el captulo 9 se exponen posibles ampliaciones relacionadas tanto con
el desarrollo de nuevas metas para el controlador de vuelo de los UAVs
como del desarrollo de nuevos mtodos para el control visual, incluyendo
adems una seccin dedicada a las conclusiones tras la realizacin del
presente proyecto.
En los Apndices se presenta el cdigo desarrollado a lo largo de la
realizacin del proyecto, incluyendo adems algunas nociones para la
conguracin de la librera para el procesamiento de imgenes OpenCV.
Se muestran tambin el conjunto de funciones de la librera de la cmara
utilizadas, incluyendo adems un diagrama de clases de la aplicacin y
un diagrama temporal de Gantt que recoge toda la planicacin tempo-
ral del presente proyecto.
1.4. Estructura del proyecto 10
Captulo 2
Estado del arte del control de
plataformas UAV
2.1. Introduccin
Como se ha comentado con anterioridad y puede observarse tambin en el
captulo dedicado a aplicaciones, los vehculos areos autnomos han sido un
rea de investigacin que durante los ltimos aos ha experimentado un gran
avance, por mltiples motivos. Las ms prestigiosas universidades estn ac-
tualmente investigando y desarrollando plataformas experimentales de vuelo
no tripuladas y autnomas. Este tipo de plataformas, como se puede ver en
[32][52][54] suelen ser utilizadas para el estudio de controladores no lineales,
control multivariable, navegacin, deteccin y seguimiento visual de objetos e
incluso planicacin de trayectorias.
Dentro de la amplia variedad de vehculos areos autnomos, cabe destacar
la maniobrabilidad de los helicpteros, y dentro de esta familia, aquellos que
poseen cuatro rotores en el mismo plano (quadrotores coplanares
2.1
). A su
vez, dentro de esta familia existen dos variantes: aquellos en cuyo rotor existe
tan solo un aspa girando en una nica direccin, y aquellos equipos cuyos
rotores estn equipados con dos aspas girando cada una en sentido contrario.
En el presente proyecto se trabaja bajo la suposicin de la existencia de un
controlador para un helicptero quadrotor coplanario con una nica aspa por
rotor. Vanse en las Figuras 2.1 y 2.2 ejemplos de este tipo de conguraciones.
2.1
Este es el tipo de plataforma con la cual se ha experimentado en el presente proyecto.
11
2.1. Introduccin 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 estacionarios
2.2
y maniobrar en espacios reducidos los hacen los vehculos ideales para tales
tareas. Tareas comunes suelen ser las que requieran que el vehculo vuele a
baja altura o se mantenga en vuelo estacionario prximo a un determinado
punto u objeto de inters.
Figura 2.2: Ejemplo de conguracin de 2 aspas por rotor.
Esta proximidad en el vuelo, si no consideramos la realimentacin visual, se
realiza usando medidas del sensor inercial y/o medidas de GPS, lo que limita
y bastante el vuelo a un conocimiento previo de la posicin global del aparato
y de la existencia de un ruta preprogramada de coordenadas. Si se aade al
control realimentacin visual, en tiempo real que pueda controlar el helicpte-
ro en una trayectoria arbitraria no sujeta a restricciones, y fusionndola con el
resto de medidas, podemos aumentar la precisin en vuelos cercanos a objetos,
2.2
En lengua inglesa se reere a este trmino como hoovering.
2.2. Control no basado en visin de vehculos areos autnomos 13
permitiendo conocer la posicin relativa del vehculo respecto del objeto de
inters.
El desarrollo de un vehculo areo autnomo guiado por visin requiere
de diversas disciplinas de la Ingeniera; desde investigar en reas como Teora
del Control hasta la deteccin y seguimiento de objetos mediante visin por
computador.
Se presenta pues a continuacin un amplio repaso del estado del arte del
control (sin realimentacin visual) en UAV para posteriormente exponer el
estado del arte actual del control visual para vehculos areos no tripulados.
Todo lo relativo a la localizacin y seguimiento de objetos se presenta en pro-
fundidad en el captulo 4.
2.2. Control no basado en visin de vehculos
areos autnomos
El origen del estudio del control en el campo de los helicpteros autnomos
tiene su origen varias dcadas atrs. El modelo del sistema dinmico que lo
representa ha sido ampliamente documentado ([2][3][20][31][52], entre otros),
donde se presenta en detalle un estudio sobre el modelo aerodinmico y de
anlisis de estabilidad. Dada la inestabilidad propia de este tipo de vehculos,
los primeros estudios se centraban en obtener un controlador para hacer esta-
ble al sistema.
En [52], por ejemplo, se documenta el diseo de un control realimentado
robusto basado en H, al igual que en [1] se presenta un controlador basado
en lgica difusa para la estabilizacin 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 la
particularidad de solo usar el GPS como sensor principal para la navegacin
sustituyendo a la unidad de medida inercial (IMU), la cual, y por historia, es
el sensor que se haba usado como principal. Este sistema estaba dotado de un
GPS con 4 receptores y 4 antenas colocadas en puntos estratgicos del apa-
rato, con lo que se consegua su posicin, velocidad, actitud
2.3
e informacin
angular. Probablemente tuvieran algunos problemas por mantener las antenas
2.3
Se denomina actitud al ngulo de vuelo que lleva el avin con respecto al horizonte.
2.2. Control no basado en visin de vehculos areos autnomos 14
separadas una distancia relativamente tan pequea (del orden de cm). En la
imagen de la Figura 2.3 se pueden observar en detalle las antenas receptoras
de la unidad de GPS.
Figura 2.3: Detalle de las antenas receptoras del GPS del prototipo de la
Universidad de Standford Hummingbird.
Otra conguracin, la denominada proyecto AVATAR y presentada en [38],
posee una arquitectura jerrquica de mdulos de control, tambin presentada
en [2][31][47][54] (entre otros). Los mdulos de bajo nivel se encargan de tareas
de rpida respuesta como el control de los rotores o movimiento del grupo alar,
mientras que los mdulos de alto nivel se encargan de tareas de planicacin
y navegacin. El control propuesto se ha diseado con leyes de control lineal
usando controladores de tipo PID. Los sensores presentes en esta plataforma
son el GPS, IMU, brjula y snar, entre otros.
Figura 2.4: Helicptero del proyecto AVATAR, de la Universidad de Southern
California.
2.2. Control no basado en visin de vehculos areos autnomos 15
Otra propuesta es la presentada en [40], la cual presenta un control basado
en H, que usa un modelo lineal de alto orden sobre una plataforma comercial
(equipo Yamaha). El controlador consiste en un lazo interno multivariable para
la estabilizacin de la actitud y 4 lazos de control separados para posicin y
velocidad. En [46] se presenta un sistema de control jerrquico usado en el
helicptero BErkeley AeRobot Project (BEAR) [44] (Figura 2.5).
Figura 2.5: Experimentos de vuelo en formacin en el proyecto BEAR: BEr-
keley Aerobot Research.
En primer lugar, se identica la dinmica del sistema y posteriormente se
disean las leyes de estabilizacin. 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 posicin. Para mejorar la fase de navegacin
y 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 acrobticos. Un ejemplo de este
tipo de sistema es el presentado en [36]. En este sistema, segn se describe, dos
tipos de controladores son usados, dependiendo de la fase de vuelo o envolven-
te de vuelo
2.5
. Un control velocidad/orientacin rate/altitud se usa al inicio
y al nal de la envolvente de vuelo, mientras que un control de aceleracin
angular se usa para las maniobras acrobticas.
2.4
Siglas inglesas para Nonlinear Model Predictive Trajectory Controller.
2.5
Todos los aviones tienen limitaciones fsicas: no pueden volar demasiado despacio, o
entraran en prdida; ni demasiado rpido, ya que, o maniobran dentro de sus parmetros
especcos o se volveran inestables e imposible de maniobrar.
2.3. Control con informacin visual de vehculos areos autnomos 16
2.3. Control con informacin visual de vehcu-
los areos autnomos
Se puede decir que la visin por computador es una de las reas ms im-
portantes en el mundo actual de la robtica. Hace relativamente pocos aos,
las capacidades hardware de los equipos empotrados no permitan la puesta
en marcha de aplicaciones visuales sosticadas. ste era el principal obstculo
que evitaba que el control visual tuviera el desarrollo que ha tenido estos aos
atrs. Pero tras la introduccin de nuevas arquitecturas hardware y de proce-
sadores ms rpidos y con soporte para programacin paralela, y de cmaras
cuyas caractersticas crecen exponencialmente con coste lineal, la potencial
ubicuidad del control visual se ha hecho una realidad.
Cuando se presentan trminos como control visual aplicados a vehculos
areos autnomos, se hace referencia al uso de la informacin visual del proce-
samiento de imgenes para el control de velocidad, posicin absoluta o relativa,
o para el control de la orientacin. Al igual que la literatura sobre el control
visual contempla el trmino cmara-en-mano (eye-in-hand) para ciertas con-
guraciones en robots articulados, para el caso de vehculos areos robotizados
el trmino adecuado sera el de cmara a bordo (on-board camera) [20][63].
Uno de los primeros experimentos (Figura 2.6) en los que se describe un
helicptero guiado por visin se describe en [47]. Este vehculo autnomo fu-
siona las lecturas GPS con un sistema de visin, con la nalidad de aumentar
la precisin de la estimacin del estado para la navegacin.
El sistema de visin consiste en un procesador DSP
2.6
que proporciona me-
didas de posicin, velocidad y actitud a frecuencias de 10ms, lo que combinn-
dolo con las lecturas del GPS y la IMU aumenta la precisin en la estimacin
de la actitud y de la posicin del helicptero.
2.6
O por sus siglas en espaol Procesador Digital de Seales.
2.3. Control con informacin visual de vehculos areos autnomos 17
Figura 2.6: Helicptero de la Universidad Carnegie Mellon.
En [59] se enfoca el uso de una cmara como sensor adicional para la nave-
gacin del helicptero autnomo para el caso particular del aterrizaje. Dada
una secuencia de imgenes tomadas por la cmara se consigue una estimacin
del movimiento tridimensional de la misma, la cual se fusiona con la informa-
cin inercial.
El control visual tambin se ha aplicado a vehculos en miniatura, en el
caso del helicptero HMX-4 o Draganyer de cuatro rotores coplanarios [31],
donde la visin se usa para determinar la disposicin del helicptero y para la
deteccin de objetos en tierra. Existen muchas propuestas presentadas en la
literatura sobre el control basado en visin.
La ms interesante, desde el punto de vista del redactor del presente docu-
mento, es el caso de navegacin tridimensional presentado en [48], en la cual
se propone una tcnica que combina ujo ptico con visin estereoscpica. Si
se combina esta tcnica con mapas probabilsticos y un planicador de trayec-
torias, y segn demuestran en varios experimentos, es posible la navegacin
de un UAV en entornos urbanos de forma completamente autnoma.
2.4. Aplicaciones del control visual en plataformas autnomas 18
2.4. Aplicaciones del control visual en plata-
formas autnomas
En este proyecto tan solo se han considerado alternativas que vuelan, o
al menos, lo intentan. Todas las tcnicas relativas al control visual pueden
aplicarse a otro tipo de plataformas, como por ejemplo, los brazos robticos
que operan en el transbordador espacial (Figura 2.7), robots mviles, o incluso
a robots sumergibles que se encarguen de tareas de rescate o reparaciones a
grandes profundidades.
Figura 2.7: Brazo robtico del transbordador espacial.
En el nmero de Septiembre de 2010 de la revista Spectrum (Figura 2.8),
publicada por el IEEE (Institute of Electrical and Electronic Engineers), ante
la reciente tragedia medioambiental del Golfo de Mxico, en el que una es-
tacin de extraccin de crudo en alta mar explosion, provocando la mayor
catstrofe medioambiental de la historia de los EEUU, se ha puesto de mani-
esto la necesidad de tcnicas ms avanzadas de robtica autnoma.
Esto es debido a que la profundidad a la que se encontraba una tubera
que continuamente expulsaba crudo era imposible de sellar in situ por ningn
sumergible tripulado. Si se hubieran dado las circunstancias en las que, un
posible conjunto de vehculos sumergibles autnomos se hubieran coordinado
para poder sellar la fuga, probablemente no se hubieran puesto en peligro ni
2.4. Aplicaciones del control visual en plataformas autnomas 19
Figura 2.8: Titular de la revista Spectrum: Lecciones del vertido del Golfo
para la Robtica.
vidas humanas ni tantos kilmetros de litoral norteamericano.
La lista de aplicaciones es bastante larga, pero en esta seccin se van a dar
algunos ejemplos de desarrollos ya construidos y en funcionamiento.
Vehculo ereo utnomo para investigacin polar :
Presentado en [1], en este artculo se presenta una aplicacin no menos
curiosa en la que un UAV puede ser muy til. Debido a que la clima-
tologa en los polos de la Tierra impide, la mayor parte del ao, que
equipos de investigacin sobre el terreno puedan recoger muestras, se
propone un vehculo autnomo para la investigacin polar. Para obte-
ner precisin de altitud, fusionan informacin sensorial del GPS con la
de un algoritmo de ltro adaptativo de Kalman. Implementan un tipo
de controlador que permite que la aeronave pueda sobrevolar cualquier
zona incluso en situaciones en las que el viento sea un grave problema.
Inspeccin de lneas e instalaciones elctricas :
Normalmente, para este tipo de tareas, se suele utilizar un helicptero
con personal humano a bordo, para documentar in situ el estado de las
lneas elctricas. Pero debido a que las propias lneas elctricas son un
peligro para el vuelo de estas aeronaves, en los ltimos aos las compa-
as elctricas estn aunando esfuerzos con el mundo universitario para
investigar y desarrollar plataformas areas no tripuladas para este tipo
de funciones. El seguimiento visual sera relativamente sencillo, aplican-
do por ejemplo como detector de segmentos o lneas rectas, tambin
aplicado en [112], para el seguimiento de una carretera por parte de un
UAV.
2.4. Aplicaciones del control visual en plataformas autnomas 20
Misiones espaciales no tripuladas :
Este pudiera ser el ejemplo ms llamativo de todos (Figura 2.9 izquier-
da). De sobra es conocido las misiones de la NASA
2.7
hacia el planeta
Marte, en la que actualmente disponen de dos vehculos terrestres de in-
vestigacin. Dichos vehculos son completamente autnomos, en el sen-
tido de que no son operados desde Tierra, debido principalmente a los
problemas de las comunicaciones. Por ello, es de suponer que disponen
de tcnicas de control visual relativamente complejas para la localizacin
de obstculos.
Misiones militares :
Otra de las aplicaciones de vehculos areos no tripulados tienen carc-
ter militar. Situaciones en las que se desea simplemente determinar el
estado del terreno; aqullas en las que no se desean prdidas de vidas hu-
manas, etc. ltimamente los ejrcitos de los pases ms avanzados estn
equipando a sus plataformas UAV con misiles de corto y largo alcance,
para misiones tcticas o de destruccin de infraestructuras estratgicas.
Simplemente al iniciar el explorador web, e introducir en cualquier bus-
cador la palabra UAV y buscar por imgenes, las primeras obtenidas de
la bsqueda son como la mostrada en la Figura 2.9 derecha.
Figura 2.9: Izquierda: Misiones espaciales no tripuladas. Derecha: Detalle de
UAV para aplicaciones militares.
Aplicaciones desde el campo de la medicina y tcnicas quirrgicas, hasta
el campo de la tele-asistencia, pasando por control del trco rodado,... Los
campos de aplicacin de tcnicas de control visual son amplios y muy variados.
2.7
National Aeronautics and Space Administration.
Captulo 3
Tcnicas de control con
realimentacin visual
3.1. Introduccin
El trmino control visual se introdujo en el artculo [75] en 1979 para re-
emplazar al trmino de Realimentacin Visual que era ms especco y de
uso muy generalizado. A partir de 1980 se introducen las primeras descripcio-
nes del control visual, y en publicaciones de aos posteriores, se consolida la
diferencia entre los dos principales y grandes esquemas de control visual como
son el control visual basado en posicin (PVBS) y el control visual basado en
imagen (IBVS).
Desde principios de los aos 90 hasta la presente dcada los avances en el
control visual se han incrementado enormemente cumpliendo con los requisitos
de tiempo real que exigen las aplicaciones, superando los problemas de retardo
y la comunicacin entre procesos. Las principales razones de este adelanto han
sido entre otras las siguientes:
La potencia y bajo coste de las unidades de clculo.
La disponibilidad de sensores pticos de elevadas prestaciones.
El desarrollo de las libreras de procesamiento de imgenes digitales.
A continuacin se detalla el estado del arte del control visual en general, co-
menzando por las diversas conguraciones entre la cmara y el robot y luego
por los esquemas de control propuestos.
21
3.2. Conguraciones cmara-robot 22
3.2. Conguraciones cmara-robot
Esta conguracin est dividida segn dos criterios: la posicin de la c-
mara con respecto al robot y el nmero de cmaras.
3.2.1. Segn la disposicin de la cmara respecto del
robot
Cmara en mano :
En este caso la cmara est montada en el brazo del robot (Figura 3.1) y
se mueve a la par del movimiento del mismo. En esta conguracin existe
una relacin constante entre el sistema de coordenadas de la cmara y el
sistema del efector nal del robot. Algunas aplicaciones requieren ms
de una cmara como en [78]. Una caracterstica de esta conguracin es
que se pueden obtener imgenes de regiones particulares de la escena, es
decir imgenes de carcter parcial [71] donde la resolucin efectiva de la
escena puede ser incrementada, siempre que sea necesario.
Figura 3.1: Ejemplo de cmara en mano.
Cmara ja :
En esta segunda disposicin (Figura 3.2) se tiene una o varias cmaras
jas en algn punto del espacio de trabajo de tal manera que la escena
es observada desde el sistema de la cmara. La relacin entre el sistema
de coordenadas de la cmara y de la base del robot es constante, de tal
manera que la posicin de la cmara es independiente del movimiento
que el brazo del robot pueda efectuar.
3.2. Conguraciones cmara-robot 23
Figura 3.2: Ejemplo de cmara ja (izquierda) embebida en parte inferior del
sistema de la derecha.
Al contrario que la conguracin anterior, de cmara en mano, en esta
conguracin se obtienen imgenes de casi toda la escena, aunque con
menor precisin. En esta opcin se pueden realizar operaciones propias
de una cmara ja motorizada tales como son el pan
3.1
, tilt
3.2
o el zoom,
conocidas tambin como funcin PTZ
3.3
.
Modelo Hbrido :
Es una combinacin de las anteriores conguraciones donde se aprovecha
la informacin de la imagen local que da la conguracin cmara en
mano y la informacin de la imagen global de la cmara en conguracin
cmara ja. En algunos ejemplos, como en [70][71] se realizan dos tareas:
una de posicionamiento y otra de seguimiento y en [73] se implementa
un sistema donde la cmara ja es sostenida por otro robot.
Figura 3.3: Eye-in-hand / Eye-to-hand cooperation.
3.1
Hacer girar la cmara en todo el plano panormico.
3.2
Inclinacin de la cmara.
3.3
Por sus siglas en ingls, Pan Tilt Zoom.
3.2. Conguraciones cmara-robot 24
3.2.2. Segn el nmero de cmaras
Sistema de cmara nica :
Se utiliza una sola cmara en el sistema, de esta manera se minimiza la
tarea del procesamiento visual requerida, pero la prdida de informacin
para la profundidad complica el diseo del control. Dicho parmetro de
profundidad puede ser estimado con anterioridad [70], adaptativamente
[74], o a travs de alguna informacin mtrica del objeto a controlar. La
conguracin cmara en mano es la ms utilizada, debido principalmente
a la sencillez en su implementacin y su bajo costo.
Sistema de dos cmaras :
Conocido tambin como sistema estreo, se tienen dos vistas simultneas
de la escena [79] (Figura 3.4). Esta tcnica tiene la principal ventaja de
que se puede obtener cierta percepcin tridimensional, adems de poder
utilizarse las propiedades de la geometra epipolar [78].
Figura 3.4: Sistema de cmaras estreo.
Sistema de cmaras redundantes :
Para esta conguracin se tienen ms de dos cmaras. Se aprovecha pues
la ventaja de tener redundancia de caractersticas visuales que aade
robustez al sistema, aunque se incrementa el tiempo de procesamiento.
Una aplicacin con tres cmaras se presenta en [84] donde se demuestra
su ecacia ante oclusiones parciales en una tarea de seguimiento
3.4
del
objeto de referencia.
3.4
Tambin denominado tracking de un objeto. Se profundiza en el presente captulo.
3.3. Esquemas de control visual 25
3.3. Esquemas de control visual
En funcin del enfoque desde el cual se mire, se tienen distintas clasica-
ciones :
La estructura de control del sistema electromecnico.
La informacin visual.
La observacin de las caractersticas en la cmara.
Modelo 3D del objeto.
3.3.1. En funcin de la estructura de control
Mirar y mover esttico :
En este esquema de control la extraccin de informacin visual y el con-
trol del robot son dos tareas desacopladas, donde en primer lugar se
extraen y procesan las caractersticas de la imagen, perteneciendo esta
tarea a un bucle externo ms lento, y despus se ejecuta la tarea de
control del robot, estando esta tarea integrada en un bucle interno de
control ms rpido. El robot posteriormente ejecuta el movimiento, asu-
miendo que el entorno permanece esttico.
Al no existir realimentacin visual dinmica, este esquema de control
se dice que no pertenece al control visual. Tambin suele denominarse
control visual indirecto esttico siempre y cuando los bucles de control
y extraccin de informacin operen de forma secuencial.
Mirar y mover dinmico :
En este esquema de control el resultado de la realimentacin visual ali-
menta al controlador interno que se encarga de posicionar el robot. Tam-
bin se suele denominar como control visual indirecto dinmico en el caso
particular de que las dos tareas desacopladas trabajen en paralelo ( la
informacin est presente en todo momento ). El controlador del robot
trabaja 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.).
3.3. Esquemas de control visual 26
Tanto el controlador del robot como el controlador visual estn desaco-
plados, lo que simplica mucho el diseo del control, aliviando de este
modo al controlador visual de tener que afrontar las parte no lineal y la
parte dinmica del robot. Muchos robots poseen su propio controlador
que aceptan coordenadas cartesianas o posiciones incrementales. Como
consecuencia, la mayora de los sistemas implementados en la actualidad
son del tipo mirar y mover dinmico.
Figura 3.5: Control visual mirar y mover dinmico.
Experimentalmente se demuestra que la integracin de la realimenta-
cin visual dentro del controlador permite una operacin eciente y de
convergencia rpida, a pesar de errores en la calibracin de la cmara o
del modelo de movimiento.
3.3. Esquemas de control visual 27
Control visual directo :
En este esquema el controlador (con un ciclo de control muy rpido, infe-
rior a 10 ms.) convierte directamente la informacin visual en consignas
de control a los actuadores en forma de pares aplicados a las articulacio-
nes del robot. A este control comnmente se le suele llamar como control
servo visual.
Figura 3.6: Control visual directo.
3.3.2. En funcin de la informacin visual
Tambin conocida como clasicacin en funcin de la denicin del error.
Control visual basado en posicin :
Tambin llamado control visual 3D (PBVS Position Based Visual Ser-
voing), las caractersticas visuales de la imagen son utilizadas para calcu-
lar la posicin y orientacin del objeto de control en el espacio cartesiano,
donde se considera el modelo geomtrico del objeto (dimensiones reales),
el modelo de la cmara (representado por la matriz de parametros in-
trinsecos de la cmara
3.5
) y la relacin geomtrica cmara robot, lo que
provoca que sea muy sensible a perturbaciones [83].
La funcin de error (funcin de error cinemtico [82]), que es la dife-
rencia entre la posicin y orientacin actual del objeto y su posicin
3.5
Obtenido del proceso de calibracin de la cmara. Presentado en el captulo 5.
3.3. Esquemas de control visual 28
y orientacin deseada, se dene en un espacio cartesiano 3D [42], por
lo que la trayectoria del objeto se controla directamente en un espacio
tridimensional [24]. En este esquema de control se asume que el modelo
considerado del objeto de referencia es ideal; en caso contrario el control
se deteriora.
Figura 3.7: Control visual basado en posicin.
Puesto que la inexactitud en la estimacin de la posicin y orientacin
del objeto no pueden ser calculadas analticamente en funcin de los
errores de calibracin y de las perturbaciones de las medidas, es comple-
jo demostrar analticamente la estabilidad del sistema en presencia de
errores en el modelo.
Dadas las condiciones para la reconstruccin tridimensional, existen mu-
chas propuestas de implementacin del PBVS en sistemas estreo de dos
cmaras. Incluso con ms cmaras, como en [81], donde se usan tres
cmaras jas junto con el ltro de Kalman extendido para estimar la
posicin y orientacin del objeto.
Control visual basado en imagen :
Tambin conocido como control visual basado en caractersticas (IBVS
Imagen Based Visual Servoing [42]), o control visual 2D. En esta estra-
tegia de control la funcin de error y la ley de control estn denidas
directamente en el plano 2D de la imagen y no es necesario un conoci-
miento previo del modelo tridimensional del objeto [111]. Bsicamente
3.3. Esquemas de control visual 29
la tarea de control trata de reducir una medida de distancia entre la
posicin actual y deseada del objetivo en la imagen. Esta tcnica es muy
robusta ante los posibles errores en la denicin del modelo de los obje-
tos, adems de reducirse el tiempo de ciclo de control.
Figura 3.8: Control visual basado en imagen.
En muchos artculos consultados, como en [85], se comprueba experi-
mentalmente que este esquema de control es robusto frente a errores
tanto de la calibracin interna de la cmara como de la posicin relativa
del objeto. El control visual puede realizarse estimando [86] el jacobiano
de la imagen o calculndolo analticamente [51].
Si se opta por el clculo analtico, ser necesario, en primer lugar realizar
la calibracin de la cmara fuera de lnea; en segundo lugar estimar la
relacin geomtrica cmara-robot, y por ltimo estimar la profundidad
(la coordenada Z) a la que se encuentra la caracterstica considerada en
el espacio tridimensional. Por el contrario, si se opta por una estimacin
en lnea, ya no ser necesario conocer ninguno de estos parmetros, por
lo que ser robusto tanto a errores de calibracin de la cmara como de
la calibracin del robot [42].
Un esquema de control IBVS posee estabilidad asinttica local cuando
el nmero de caractersticas en la imagen es al menos 6, como queda de-
mostrado en [51]. En [27][111] y otros se presenta un control visual 2D
basado en homografas, en el que no se necesita ninguna medida de la
3.3. Esquemas de control visual 30
estructura 3D del objeto observado, y utiliza el principio de isomorsmo
con la imagen de referencia para el clculo de la posicin y orientacin
de la cmara. Adems, se comprueba en la prctica la estabilidad local
de la ley de control propuesta, no pudindose garantizar la estabilidad
asinttica global. Otro ejemplo es el dado en [87], donde se realiza con-
trol visual basado en imagen utilizando coordenadas cilndricas de los
puntos en la imagen.
Control visual hbrido :
En este esquema de control se aprovechan las ventajas de los mtodos
basados en imagen y de los basados en posicin, seleccionando adecuada-
mente las caractersticas visuales. Existe por lo tanto una combinacin
entre los esquemas de control PBVS e IBVS, en el que se desacoplan
adems las componentes de traslacin y rotacin. La ley de control est
descrita en funcin de las caractersticas de la imagen y de algunos pa-
rmetros de la posicin y la orientacin del objeto (o de la cmara).
Figura 3.9: Control visual 2D
El esquema ms representativo es el control visual 2D con el cual se
consigue una estabilidad asinttica global en presencia de posibles erro-
res de calibracin, y no es necesario el conocimiento previo del modelo
tridimensional del objeto [26]. En [89] la informacin 3D obtenida a par-
tir de una reconstruccin proyectiva es utilizada para regular el error
de rotacin mientras que la informacin en el plano 2D de la imagen es
3.3. Esquemas de control visual 31
utilizada para regular el error en traslacin. La principal desventaja de
esta tcnica radica en ser relativamente sensible a errores en la medicin
[88] y ser muy sensible al ruido presente en la imagen [24].
En [24] adems de analizar los posibles problemas del control visual ba-
sado en imagen, como son las singularidades y los mnimos locales, se
presentan dos leyes de control para el control visual 2D, y se comen-
ta brevemente las condiciones para obtener una estabilidad global del
sistema. En [90] se presenta un controlador adaptivo para un esquema
de control 2D, y se comprueba su estabilidad mediante Lyapunov. En
[28] tambin se utiliza la reconstruccin proyectiva para realizar control
2D pero aplicado a objetos planos para un sistema monocular cmara
en mano. En [91] se implementa un nuevo controlador y se compara con
otro basado en la descomposicin a partir de la geometra epipolar.
Hay otras propuestas de control hbrido como la de Hutchinson [92], que
propone un esquema de control dinmico (2D & 3D switched dynamic)
que segn el comportamiento del sistema, se intercambia entre control
2D y 3D, por unas reglas de tipo determinstico y probabilstico. Los
resultados presentados son solo a nivel de simulacin. En varios artcu-
los se presenta un sistema de control desacoplado (entre movimientos
traslacionales y rotacionales) utilizando momentos de la imagen.
En [93] se presenta una propuesta llamada control visual 2D/3D donde
se minimiza la suma de los errores tanto en 2D como en 3D multiplicados
cada uno por un factor de peso, que indicar la inuencia de cada tipo
de error. Los resultados de simulacin indican una mejora en el espacio
cartesiano frente al control visual 2D.
Control visual particionado :
Propuesto por Corke y Hutchinson [94] y detallado en [41], es una va-
riacin del control basado en imagen (IBVS), donde se desacopla el mo-
vimiento traslacional y rotacional sobre el eje ptico de la cmara (eje
Z) del movimiento en los otros dos ejes (ejes X e Y). La matriz de inter-
accin se divide en dos submatrices, la primera que depende de los ejes
X e Y, y la segunda que depende solamente del eje Z.
Esta ltima matriz depende tan solo de dos nuevas caractersticas vi-
suales fcilmente computables a partir de las originales. En las pruebas
realizadas se observa que con este esquema se evitan los movimientos
3.3. Esquemas de control visual 32
complicados en el espacio 3D para conseguir la persistencia de las ca-
ractersticas visuales en el plano de la imagen.
Control visual basado en movimiento :
En esta estrategia lo que se mide es el llamado ujo ptico, el cual es
una medida del movimiento de un objeto en la imagen [98]. Hay varios
artculos que usan esta estrategia: en [95] se controla un sistema cma-
ra en mano para posicionar el plano de la imagen paralelo al plano del
objeto; y un ejemplo de tarea con seguimiento de contornos se puede
consultar en [96].
Figura 3.10: Control visual basado en movimiento.
3.3. Esquemas de control visual 33
3.3.3. En funcin de los elementos requeridos en el cam-
po visual
Terminal en lazo abierto EOL :
En esta conguracin se observa tan solo al objeto a controlar. En un
sistema cmara en mano, si se tiene la tarea de posicionar el robot con
respecto a un objeto, esta es llevada a cabo de forma indirecta a travs
del conocimiento de la relacin cinemtica entre la cmara y el robot, cu-
yos errores pueden llevar a errores de posicionamiento ya que no pueden
ser observados por el sistema. En este aspecto, si se observase tambin
el robot se podran 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 nal y el objeto de con-
trol son observados, por lo que, tanto los errores de posicionamiento
del objeto de control y del efector nal se corrigen al mismo tiempo.
Parece pues conveniente usar una conguracin ECL, pero aparte de
utilizarse una conguracin cmara ja, se requeriran mayores recursos
de computacin. En [97] utiliza un sistema monocular con cmara ja
para una tarea de posicionamiento de planos con buenos resultados aun
en presencia de errores del modelo cinemtico y errores de calibracin
del sistema de visin.
3.3. Esquemas de control visual 34
3.3.4. En funcin de la necesidad de modelo del objeto
Extrada de [99], esta clasicacin se basa en el conocimiento a priori del
modelo tridimensional del objeto de control. Esta estrategia se divide en dos
grupos:
Control visual basado en modelo :
Se denomina as cuando se conoce el modelo tridimensional del objeto
de control, que junto con el conocimiento exacto de la calibracin de la
cmara y del robot se estima la posicin y la orientacin actual del obje-
to. Para el caso particular en que las caractersticas visuales a reconocer
sean puntos en la imagen, se necesitan al menos 4 puntos para reali-
zar una estimacin exacta de la posicin y orientacin del objeto [103];
si ms de cuatro puntos pueden ser localizados y extraidos, es posible
prescindir de los parmetros de la cmara y trabajar con un sistema no
calibrado [19][86].
Control visual libre de modelo :
Aqu no se necesita un conocimiento a priori del modelo tridimensional
del objeto. Las caractersticas correspondientes a las posiciones deseadas
se consiguen en una etapa previa fuera de lnea, conocida como teach-by-
showing [42]. En esta tcnica el robot es movido a la posicin deseada,
la cmara toma la imagen del objeto, extrae sus caractersticas visuales
y las almacena en memoria. Estas caractersticas visuales representarn
en la etapa de control a las caractersticas de referencia.
Como en los otros esquemas de control, este paso es muy importante
para el xito de la tarea del control. En este proceso, la diferencia entre
las caractersticas visuales del momento actual y las de referencia cons-
tituir el error a minimizar en el espacio de la imagen. Un error menor
a un umbral determinado signicar que se ha alcanzado la posicin de
referencia deseada con una exactitud en la cual no se tienen en cuenta
los errores de calibracin.
Tambin hay esquemas de control libres del modelo que realizan control
visual 3D donde la rotacin y la traslacin son determinadas a partir
de la matriz esencial, la cual es estimada a partir de las imgenes de la
posicin actual y de la posicin de referencia.
3.3. Esquemas de control visual 35
3.3.5. En funcin del modelo visuo-motor
Esta clasicacin fue propuesta por Kragic [105]. En ste se considera co-
mo elemento de clasicacin el modelo visuo-motor del sistema, es decir, la
relacin entre la parte motora del sistema y las caractersticas en la imagen.
Se dice que es conocido a priori si se dispone de los modelos de los diferentes
componentes del sistema. En caso contrario habra que realizar una estimacin.
En esta clasicacin se distinguen dos alternativas:
Modelo visuo-motor conocido a priori :
Se conocen los parmetros de calibracin de la cmara, la transforma-
cin entre sistemas robot-cmara, la calibracin del robot y el modelo
del objeto. Dentro de esta clasicacin se pueden encuadrar al control
basado en posicin, control basado en imagen y el control visual hbrido.
Modelo visuo-motor estimado :
Dado que no se dispone de ninguno de los parmetros anteriores, es
necesario realizar un proceso de estimacin de los mismos. Este proceso
se realiza fuera de lnea, utilizando mtodos de aprendizaje por redes
neuronales [10][11], redes borrosas [102] o neuro-borrosas [100]. Otros
mtodos usados suelen ser recursivos o incluso realizando movimientos
linealmente independientes [104].
Figura 3.11: Clasicacin de los sistemas de control visual respecto al modelo
visuo-motor.
3.4. Otros aspectos del control visual 36
3.4. Otros aspectos del control visual
Para la clasicacin de las tcnicas de control visual se pueden utilizar otro
tipo de criterios, adems de los mostrados anteriormente. La ley de control a
utilizar, la interpretacin de la escena o incluso los algoritmos de visin utili-
zados, pueden ser otro tipo de criterios de clasicacin vlidos en este contexto.
Un campo de investigacin en control visual es la planicacin de trayec-
torias: til cuando la distancia en la imagen entre la posicin inicial y deseada
del objeto es muy grande. Lo que se busca es que con una funcin de error
en el plano de la imagen se consiga una trayectoria ptima del objeto (o de la
cmara) en el espacio de trabajo a n de mantener las caractersticas visuales
en la imagen, evitando oclusiones u obstculos.
En [101] se presenta una estrategia que genera una trayectoria en el es-
pacio de la imagen correspondiente a un movimiento ptimo de la cmara
para el caso cuando la distancia entre la posicin de inicio y deseada es gran-
de, asumiendo desconocidos los parmetros de calibracin de la cmara y el
modelo del objeto. De forma experimental se verica que es posible seguir la
trayectoria generada mediante este tipo de algoritmos con un control basado
en posicin.
Existen tambin muchas investigaciones respecto a la robustez del contro-
lador basado en informacin visual frente a posibles errores de modelado o
a perturbaciones, para conseguir un control ptimo en escenarios reales. En
[107] se usa un esquema PBVS, y se aplica el ltro de Kalman para predecir la
posicin relativa del objeto utilizndose una base de datos con caractersticas
visuales adecuadas que son utilizadas para realizar una trayectoria ptima con
tcnicas de fusin sensorial con informacin de varias cmaras.
En [106] se presenta un controlador robusto frente a errores de calibracin
en un sistema estreo basado en la disparidad y mediciones del ujo ptico.
Para evitar que las caractersticas visuales salgan de la imagen, en [108] se
presenta una estrategia denominada control visual independiente de los pa-
rmetros intrnsecos, donde se utiliza una cmara con enfoque variable, y el
controlador propuesto puede aumentar el campo de visin de la escena si el
objeto intenta salir fuera de la imagen.
Otro campo es el del control visual en sistemas de alta velocidad, como por
ejemplo el sistema estreo para seguir y golpear una pelota de ping-pong [109].
En [113] se describe una propuesta basada en una estructura con congura-
3.4. Otros aspectos del control visual 37
cin de multiprocesador paralela y un sistema de visin activa masivamente
paralelizada, con la cual se consigue un sistema de fusin motor-sensorial con
velocidad de realimentacin visual de 1 ms. para interactuar con cambios muy
rpidos en el entorno.
A diferencia del uso de puntos en la imagen, pocos trabajos han sido de-
dicados al control visual a partir de lneas (Figura 3.12). La razn principal
es la dicultad de manejar las caractersticas de las lneas en la imagen, las
cuales representan en geometra proyectiva la proyeccin de un plano 3D que
pasa por el centro ptico de la cmara.
Figura 3.12: Ejemplo de deteccin de lneas en entornos urbanos.
Un ejemplo de aplicacin en sistemas monocmara se tiene en [110], donde
la tarea es posicionar la cmara con respecto a una autopista representada
por tres lneas paralelas que estn en un plano, y se calcula el jacobiano de
la imagen considerando constante la altura a la que se encuentra la cmara
sobre la autopista. Otro ejemplo de aplicacin es el dado en [112], tratando el
alineamiento de un UAV con las lneas de una carretera, donde la matriz de
interaccin calculada a partir de las caractersticas desacopladas de las lneas
es integrada en las leyes de control lateral y longitudinal.
Figura 3.13: Ejemplo de deteccin de lneas en una carretera.
3.5. Conclusin 38
3.5. Conclusin
La realizacin de tareas de ndole robtico con un quadrotor requiere de
estructuras de control en tiempo real. Adems la dinmica no lineal y acoplada
del quadrotor impide que pueda ser incluida en las leyes de control visual. Se
considera pues a ste como un robot con un bucle interno (rpido) al cual se
le 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 mover
dinmico basado en posicin y en imagen. Con respecto a la posicin de la
cmara, la alternativa seleccionada en el presente proyecto se basa en colocar
una cmara a bordo del quadrotor (conguracin de cmara en mano), reali-
zando el procesado de la informacin visual a bordo del mismo.
En el presente proyecto se han implementado las tcnicas de control ba-
sado en posicin y control basado en imagen. Para el control visual basado
en posicin, como anteriormente se mencion, se requiere a priori del conoci-
miento de ciertos parmetros del objeto de referencia (modelo 3D), as como
de los parmetros internos de la cmara, lo que supone ciertos problemas a la
hora de ser utilizados para el control visual de un quadrotor autnomo.
En la primera propuesta implementada y presentada en el captulo 6, se
han superado los siguientes requisitos:
Necesidad de la reconstruccin 3D del objeto: el modelo del objeto es
conocido.
Proceso de calibracin de la cmara: explicado en el captulo 5.
Alto coste computacional: optimizacin de las rutinas de captura y tra-
tamiento de las imgenes.
Para una informacin ms completa y detallada acerca de todos los elementos
presentados en este captulo, se reere al lector a consultar [41] y [51].
Captulo 4
Localizacin y seguimiento del
objeto de referencia
4.1. Introduccin
Para el control visual es imprescindible la presencia de un determinado ob-
jeto, denominado objeto de referencia o inters. De la localizacin y posterior
seguimiento de ste se extraer la informacin necesaria para cerrar el lazo
de realimentacin visual para el control del quadrotor. Es por ello necesaria
una clasicacin del conjunto de algoritmos para las tareas de localizacin y
seguimiento de objetos.
Existen otras propuestas [50] en las que se propone una clasicacin distin-
ta a la presentada en este captulo, enfocndose de distinta forma el conjunto
de algoritmos presentes en la literatura. As pues, en el presente captulo se
expone de forma amplia y detallada conceptos relacionados con:
Representacin del objeto de referencia (Figura 4.1).
Mtodos de deteccin basados en la representacin escogida.
Seleccin de caractersticas para el seguimiento, basado en la tcnica
usada para representar al objeto.
Mtodos de seguimiento de caractersticas.
Con los ltimos avances en las libreras de procesamiento digital, el aba-
ratamiento de los componentes hardware y el aumento de la capacidad de
cmputo de stos, la tarea de localizacin y seguimiento de objetos ha ex-
perimentado un gran desarrollo durante los ltimos aos. Producto de este
39
4.1. Introduccin 40
Figura 4.1: Objeto de referencia utilizado en el presente proyecto.
desarrollo, se muestran algunos ejemplos de la funcionalidad y amplio campo
de aplicacin de ste tipo de tcnicas:
Reconocimiento basado en el movimiento: Por ejemplo, reconocimien-
to de personas mediante la identicacin de la forma caracterstica de
andar.
Vigilancia automatizada: Monitorizacin de una zona para la detecccin
de posibles intrusos o actividades no programadas.
Interaccin persona - ordenador: Reconocimiento de gestos, identica-
cin mediante iris, etc.
Monitorizacin del trco: Recoleccin en tiempo real de estadsticas de
autopistas o carreteras basadas en informacin visual, por ejemplo.
Navegacin de vehculos: Generacin de trayectorias y capacidad para
evitar obstculos.
Una denicin relativamente simple que se puede realizar para la tarea del
seguimiento de objetos, puede ser como el problema de la estimacin de la
trayectoria de un objeto determinado con movimiento en el plano de la ima-
gen. Pero esta tarea, por liviana que pudiera parecer su denicin, conlleva
una serie de problemas:
4.1. Introduccin 41
Posible prdida de informacin visual, debida a la proyeccin del mundo
tridimensional a una escena 2- dimensional.
Ruido en las imgenes: Posibles obstculos que se crucen entre la cmara
y el objeto de referencia.
Posibilidad de que el movimiento del objeto de control sea relativamente
rpido o abrupto.
La naturaleza no rgida o articulada de algunos objetos conlleva a posi-
bles cambios en la geometra del objeto de control.
Posibles cambios en la iluminacin de la escena, que provoquen prdida
parcial/temporal de la localizacin del objeto de referencia.
El procesamiento de extraccin de informacin visual debe ser en tiempo
real.
Posibles oclusiones o prdida parcial del objeto.
La tarea del seguimiento se puede simplicar imponiendo algunas restricciones
en el movimiento del objeto. Por ejemplo, muchos de los algoritmos de segui-
miento estudiados consideran que el movimiento del objeto no es abrupto ni
catico, y que mantiene cierta linealidad. Otra de las restricciones considera-
das es que la geometra del objeto, la forma del mismo, es invariante.
Como conclusin a sta introduccin, el conjunto de propuestas para la lo-
calizacin y seguimiento de objetos se pueden encuadrar en preguntas del tipo:
Qu caractersticas de la imagen deben ser usadas?;
Qu representacin del objeto es la mejor para el seguimiento?;
Cmo deben modelarse el movimiento, la apariencia y la gura del objeto?
las cuales son resueltas en los apartados expuestos a continuacin.
4.2. Representacin del objeto 42
4.2. Representacin del objeto
Si se desea localizar un determinado objeto en una escena para su posterior
seguimiento, en primer lugar es necesario denir qu se entiende por objeto.
O dicho de otra forma, cmo se puede codicar la informacin que represen-
ta a un objeto. A continuacin se presentan algunas de las propuestas ms
extendidas en la actualidad.
Puntos :
El objeto de referencia se puede representar como un nico punto, lo que
se correspondera con el centroide del objeto (Figura 4.2.Izquierda), o
bien como un conjunto de varios puntos (Figura 4.2.Derecha). En gene-
ral, la representacin por puntos es adecuada en situaciones en las que
el objeto de referencia ocupa pequeas regiones en la imagen.
Figura 4.2: Representacin del objeto por puntos.
Formas geomtricas :
El objeto puede ser representado bien como un rectngulo (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 traslacin
respecto a un origen determinado o por una transformacin proyectiva
(homograa). Este tipo de tcnicas son usadas tanto para el seguimien-
to de objetos rgidos como para el seguimiento de objetos de geometra
variable.
4.2. Representacin del objeto 43
Figura 4.3: Representacin del objeto usando formas geomtricas bsicas.
Siluetas y contornos :
La representacin por contornos (Figura 4.4. Izquierda) de un objeto de-
ne las fronteras del mismo. La regin contenida dentro del contorno
se denomina silueta del objeto (Figura 4.4. Derecha). Tanto la repre-
sentacin por siluetas como por contornos son buenas tcnicas para el
seguimiento de formas complejas no rgidas.
Figura 4.4: Representacin del objeto usando contornos y siluetas.
Modelos articulados :
Los objetos de referencia articulados estn compuestos, en general, por
un conjunto de partes que unidas conforman al objeto. Por ejemplo, el
cuerpo humano se puede considerar como un objeto articulado, formado
por el torso, los brazos, las manos, la cabeza y los pies. La relacin entre
las distintas partes est regida por modelos cinemticos de movimiento.
4.2. Representacin del objeto 44
Para la representacin de las distintas partes del cuerpo se pueden usar
tanto formas geomtricas bsicas como siluetas o contornos.
Figura 4.5: Representacin del objeto como modelo articulado.
Modelos basados en el esqueleto del objeto :
El esqueleto de un objeto de referencia puede ser calculado usando una
transformacin aritmtica, considerando la media de la distancia entre
las fronteras del objeto. Esta representacin suele ser la ms amplia-
mente utilizada para modelar tanto objetos rgidos como de geometra
variable.
Figura 4.6: Representacin del esqueleto de un objeto.
4.2. Representacin del objeto 45
En las anteriores tcnicas tan slo se representaba la localizacin del objeto
en la escena, mediante puntos, contornos, siluetas o formas geomtricas, en-
tre otros. Pero existen otras formas para localizar un objeto de referencia en
una 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 continuacin se exponen varias tcnicas para representar la apariencia
de un objeto determinado:
Densidad de probabilidad :
La estimacin de densidad de probabilidad de la apariencia del objeto
puede ser paramtrica, como el Gausiano de una imagen
4.1
, o no pa-
ramtrica, como un histograma . Se basan en clasicar mediante algn
tipo de funcin las caractersticas del objeto, tales como el color o la
textura.
Plantillas :
Las plantillas se componen usando formas geomtricas simples o silue-
tas. Una de las ventajas del uso de plantillas es que se codican tanto la
apariencia del objeto, como sus dimensiones. Sin embargo, la informa-
cin visual para la apariencia es extrada tan slo de una nica vista.
Por lo tanto, las plantillas slo son adecuadas para el seguimiento de
objetos cuya posicin no vare considerablemente. Pero como se ver
ms adelante, existen algunas propuestas en la literatura que presentan
soluciones para convertir esta tcnica en invariante ante cambios en la
escala y rotacin, lo que la hacen una tcnica ms 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 dene por un
conjunto de puntos de referencia que pueden pertenecer a la frontera del
objeto o, alternativamente, pueden estar contenidos dentro de la regin
del mismo.
Para cada punto se almacena un vector de apariencia, el cual contiene
informacin acerca del color, textura, o magnitud del gradiente. Estos
modelos requieren de una fase de entrenamiento, donde se aprenden
4.1
El Gausiano de una imagen es un tipo de distribucin que asocia a cada pxel el valor
promedio de sus vecinos.
4.2. Representacin del objeto 46
tanto la forma del objeto como la apariencia asociada, a partir de un
conjunto de vistas diferentes del mismo objeto de referencia.
Modelos de apariencia multivistas :
Estos modelos codican diferentes puntos de vista de un objeto. Una
aproximacin para este tipo de representacin es generar un subespacio
para el conjunto total de vistas. Un ejemplo es el Anlisis de Componen-
tes Principales (PCA) y Anlisis de Componentes Independientes (ICA),
los cuales se han utilizado tanto para la representacin de la forma como
de la apariencia.
En general, existe una relacin directa entre la representacin del objeto y los
algoritmos de seguimiento asociados. Normalmente, en funcin de las condi-
ciones de la aplicacin, se elige una representacin u otra para el objeto.
4.3. Seleccin de caractersticas para el seguimiento 47
4.3. Seleccin de caractersticas para el segui-
miento
Un pilar fundamental en los algoritmos de seguimiento o tracking es la
seleccin de caractersticas en la imagen. En general, lo ms deseable de una
caracterstica visual es que sea nica, para poder ser distinguida del resto de
posibles caractersticas candidatas . Como se determin en el apartado an-
terior, la seleccin de caractersticas est relacionada con la representacin
elegida para el objeto.
Por ejemplo, el color suele usarse como una caracterstica cuando se usan
mtodos de localizacin basados en histogramas; de igual modo tambin son
usados los contornos para mtodos basados en contornos, donde el color no se
considera.
En general, muchos de los algoritmos presentes en la literatura no se basan
en una determinada caractersica, sino que hacen uso de una combinacin de
ellas. A continuacin se exponen en detalle algunas de ellas:
Color :
Para la codicacin del color de una imagen existen dos grandes mto-
dos: la codicacin RGB
4.2
y la codicacin HSV
4.3
. Cada mtodo tiene
sus ventajas e inconvenientes. Por ejemplo, las diferencias entre los co-
lores en el modelo RGB no se corresponden con las diferencias de color
percibidas por el ojo humano, y ambos modelos son sensibles a ruidos
en la imagen.
Bordes :
Normalmente los cambios en la intensidad de las imgenes son mayores
ante la presencia de bordes. Una propiedad importante de los bordes
es que son relativamente ms robustos que los basados en color ante
cambios de iluminacin. La propuesta ms conocida que usa esta tcnica
es la del detector de bordes de Canny.
Flujo ptico :
El ujo ptico se puede considerar como un campo de vectores que re-
presentan el desplazamiento de cada punto, el cual dene la traslacin
de cada pxel en una regin. Se calcula usando una restriccin sobre
4.2
Toda imagen queda codicada como una combinacin de los colores Red Green Blue.
4.3
Del ingls Hue, Saturation, Value Tonalidad, Saturacin, Valor.
4.3. Seleccin de caractersticas para el seguimiento 48
el contraste de la imagen, donde se supone un valor constante para un
determinado pxel en imgenes consecutivas. El ujo ptico se utiliza
comnmente como una caracterstica para la segmentacin basada en
movimiento.
Texturas :
La textura se puede considerar como una medida de la variacin de la
intensidad de una supercie, la cual codica propiedades como regulari-
dad y suavidad en los valores de los pxeles. Al contrario que el color, la
textura precisa de un pre-procesado para generar unas estructuras deno-
minadas descriptores. Al igual que los modelos basados en bordes, este
mtodo es menos sensible a los cambios de iluminacin que el color.
Segn se ha podido observar tras consultar la bibliografa existente, general-
mente el color es una de las caractersticas ms utilizadas para algoritmos de
seguimiento, a pesar de los problemas que presenta ante cambios en las con-
diciones de luz.
4.4. Deteccin del objeto 49
4.4. Deteccin del objeto
En esta seccin se muestran con un mayor nivel de detalle los mtodos para
la localizacin del objeto de inters en la escena. Se divide en dos apartados:
mtodos para la deteccin de puntos caractersticos en la escena y mtodos
basados en otras representaciones. Esta distincin es necesaria, puesto que
en el presente proyecto todas las propuestas implementadas se basan en una
representacin por puntos del objeto de referencia.
4.4.1. Detectores de puntos
Este tipo de mtodos son usados para encontrar puntos que presenten cier-
tas singularidades respecto al rea en la que estn integrados. Una propiedad
deseable de un punto de inters (o corner, como se indica en [120]), debe ser
su invarianza ante cambios de iluminacin en la escena desde el punto de vista
de la cmara. En la literatura, los mtodos ms usados siguiendo este esquema
son el operador de Moravec [114], la tcnica de Harris [45], el detector KLT
[117] y el detector de caractersticas SIFT [115].
Figura 4.7: Puntos de inters usando Harris.
El detector de Harris (Figura 4.7) calcula las derivadas de primer orden de
la imagen, (I
x
,I
y
), en las direcciones de

x e

y para realzar las variaciones de
las intensidades direccionales. Posteriormente, se calcula una matriz con las
derivadas de segundo orden, la cual codica estas variaciones, y es evaluada
para cada pixel en una pequea regin de vecindad:
M =
_

I
2
x

I
x
I
y

I
x
I
y

I
2
y
_
(4.1)
4.4. Deteccin del objeto 50
El primer paso para obtener un punto caracterstico candidato consiste en
usar el determinante y la traza de la matriz M, la cual mide la variacin en
un pequeo entorno de vecindad R = det(M)k tr(M)
2
, donde k es constante.
Los puntos de inters son nalmente seleccionados tras aplicar un deter-
minado umbral sobre R. La misma matriz de momentos M dada en 4.1 es
usada en el paso de deteccin de puntos de inters del mtodo KLT. La rela-
cin R se calcula usando el mnimo de los autovalores de M,
min
. Los puntos
candidatos son posteriormente seleccionados usando el umbral R. El mtodo
KLT elimina los puntos que estn relativamente cerca unos de otros (Figura
4.8).
Figura 4.8: Puntos de inters usando KLT.
Cuantitativamente, los mtodos de KLT y Harris enfatizan las variaciones
de la intensidad usando medidas similares. Por ejemplo, la matriz R en el
mtodo de Harris est relacionada con el polinomio caracterstico usado para
encontrar los autovalores de M ,
2
+ det(M) tr(M) = 0, mientras que
en el mtodo KLT se calculan los autovalores directamente. En la prctica,
ambos mtodos encuentran casi los mismos puntos de inters.
La nica diferencia es pues que el mtodo de KLT incluye un criterio para
distinguir entre puntos separados una cierta distancia. En teora, la matriz M
es invariante tanto a rotacin como a traslacin; sin embargo, no es invariante
a transformaciones proyectivas o anes.
Para introducir un mtodo robusto para la deteccin de buenos puntos de
inters, en [115] se introduce el mtodo denominado como SIFT (Scale Inva-
riant Feature Transformation, Figura 4.9), el cual est compuesto por 4 pasos.
4.4. Deteccin del objeto 51
Figura 4.9: Puntos de inters usando SIFT.
El primero de ellos consiste en construir un espacio a escala mediante la
convolucin de la imagen con ltros Gausianos usando diferentes escalas. A
continuacin se lleva a cabo un proceso de actualizacin de la localizacin de
cada candidato mediante la interpolacin de los valores del color, usando para
ello los pxeles vecinos.
Posteriormente, tanto los candidatos con un bajo contraste como los que
estn incluidos en los bordes, son eliminados. Por ltimo, a los puntos res-
tantes se les asignan orientaciones basndose en los picos del histograma en
la direccin del gradiente, en un pequeo entorno de vecindad alrededor de
cada punto candidato. Para ms informacin, se detalla en profundidad este
mtodo en la seccin 7.2.4.
El detector SIFT genera un mayor nmero de candidatos, si se compara
con los otros dos mtodos. Esto es debido al hecho de que se consideran puntos
a diferentes escalas y diferentes resoluciones (piramidal). Empricamente, se
muestra en [116] que el mtodo de SIFT es ms robusto ante deformaciones en
el objeto. Pero no todo son ventajas: el coste computacional de este mtodo es
relativamente importante, y para aplicaciones en tiempo real es prcticamente
inviable en la actualidad.
4.4. Deteccin del objeto 52
4.4.2. Mtodos de deteccin no basados en puntos
Dado que tan solo se han usado implementaciones de alguno de los mtodos
propuestos en el apartado anterior, cualquier mtodo no basado en deteccin
de puntos no ser tratado en el resto del documento.
Sin embargo, y con carcter meramente ilustrativo, se presenta a continua-
cin una tabla que recoge el conjunto de mtodos ms relevantes relacionados
con la deteccin no basados en puntos presentes en la literatura.
Categorias Trabajos ms relevantes
Segmentacin Mean Shift
Graph-Cut
Contornos Activos
Modelado del fondo Mixture of Gaussians
Eigenbackground
Wall ower
Dynamic texture background
Clasicadores Supervisados Support Vector Machines
Neural Networks
Adaptive Boosting
4.5. Seguimiento del objeto 53
4.5. Seguimiento del objeto
El objetivo de los algoritmos de seguimiento es poder inferir la trayectoria
que el objeto sigue a lo largo de una secuencia de imgenes. La tarea de encon-
trar el objeto y de establecer las correspondencias entre los puntos del frame
anterior 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 objeto
se encuentre son obtenidas mediante un algoritmo de deteccin de objetos, y
posteriormente se le asignaran las correspondencias para los puntos de inters.
En el segundo caso, si se realizan las dos tareas de forma conjunta, tan-
to la regin del espacio como las correspondencias son calculadas al mismo
tiempo, actualizando la posicin del objeto de forma iterativa a partir de las
caractersticas del movimiento del mismo en los frames anteriores.
En cualquiera de las dos tcnicas anteriores, el objeto puede ser repre-
sentado bien por formas (puntos, formas geomtricas, etc.) o por apariencia
(texturas, color, etc.). En funcin pues del modelo de representacin, el m-
todo de seguimiento o tracking ser distinto. A continuacin se exponen las
diferentes categorias para los algoritmos de seguimiento presentes en la lite-
ratura clasicados en funcin de la representacin del objeto de referencia.
Seguimiento de puntos :
El objeto de inters, el cual es localizado en frames consecutivos, es re-
presentado como un conjunto de puntos, y la asociacin de los mismos
se basa en los estados previos del objeto, los cuales incluyen informacin
tanto de la posicin como del movimiento. Con esta aproximacin es ne-
cesario el uso de un mtodo externo para la deteccin del objeto en cada
frame. En el apartado 4.5.1 se detallan varias tcnicas pertenecientes a
esta categoria.
Kernel Tracking :
En este contexto, kernel se reere a la forma o apariencia del objeto de
referencia. Por ejemplo, la representacin del objeto en este apartado
puede ser bien un rectngulo, o bien una elipse, ambos con un histogra-
ma asociado. El objeto es seguido en frames consecutivos calculando el
movimiento de la forma que engloba al mismo, lo cual se puede observar
en la Figura 4.10. Este movimiento normalmente se suele describir en
trminos de traslacin, rotacin y transformacin an.
4.5. Seguimiento del objeto 54
Figura 4.10: Kernel Tracking.
Seguimiento de siluetas :
Este tipo de mtodos usan la informacin contenida dentro de la regin
del objeto, lo que se ha denominado anteriormente como apariencia, pa-
ra calcular los bordes o extremos de la propia regin. Esta informacin
se representa bien como mapas de vectores, o como densidad de probabi-
lidad, entre otros. Dados los modelos de los objetos, las siluetas pueden
ser seguidas bien por tcnicas de matching
4.4
de formas o por el mtodo
de evolucin de contornos.
Figura 4.11: Evolucin de contornos.
4.5.1. Seguimiento basado en puntos
Como se expuso en el apartado anterior, el seguimiento consiste en la es-
timacin de la correspondencia de unos puntos entre un frame y el siguiente.
Pero esta correspondencia es un problema relativamente complejo cuando se
tienen, por ejemplo, oclusiones, falsos positivos, o movimientos errticos del
objeto que provoquen la prdida de posibles emparejamientos.
Los mtodos encuadrados en esta categoria se pueden clasicar en dos
grandes grupos: los mtodos deterministas y los mtodos probabilsticos. Los
4.4
Equivale al clculo de las correspondencias.
4.5. Seguimiento del objeto 55
mtodos deterministas usan heursticas cualitativas para el movimiento, para
el planteamiento de las restricciones sobre el problema de la correspondencia.
Sin embargo, en la otra clase de mtodos se toman de forma explcita medidas
del objeto y se tienen en cuenta algunos valores desconocidos (incertidumbre
en el modelo) para hallar las correspondencias.
4.5.1.1. Mtodos deterministas
En este tipo de mtodos, se dene un coste, asociado a la correspondencia
de un punto entre un frame y el siguiente. As, lo que se intenta es una mi-
nimizacin del coste global para las correspondencias, y este problema queda
formulado como un problema de optimizacin combinatorial.
La solucin, que consiste en una asociacin 1-a-1 de todos los puntos de
un frame con los puntos del siguiente (Figura 4.13) de entre todas las posibles
soluciones (Figura 4.12), puede ser obtenida mediante mtodos de asignacin
ptima, como por ejemplo algoritmos de bsqueda voraces.
Figura 4.12: Conjunto total de asociaciones de un punto.
Figura 4.13: Correspondencias correctas para un conjunto de puntos.
4.5. Seguimiento del objeto 56
Para el clculo del coste, se tienen en cuenta las siguientes restricciones:
Proximidad: Se considera que el objeto no realiza cambios bruscos de
posicin entre frames consecutivos.
Velocidad acotada: Se estima la velocidad mxima a partir de la cual
es imposible que el objeto se mueva, y marca un entorno de vecindad
donde es posible hallar la correspondencia del punto (Figura 4.14, 1).
Smooth Motion: Se asume que tanto la direccin como la velocidad del
objeto no cambian de forma drstica (Figura 4.14, 2).
Restricciones comunes de movimiento: La velocidad del objeto en una
pequea regin es la misma para todos los puntos. Esta consideracin
es 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, son
rgidos, y adems 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 mxima. 2: Cambios pequeos en la velocidad. 3:
Restricciones comunes. 4: Geometra del objeto.
Estas restricciones no son exclusivas de los mtodos deterministas; tambin
pueder ser consideradas en los mtodos probabilsticos o estadsticos.
4.5. Seguimiento del objeto 57
4.5.1.2. Mtodos estadsticos
Para hallar las correspondencias entre los puntos en este tipo de mtodos,
se tienen en cuenta posibles incertidumbres o errores en el modelo para es-
timar la posicin del objeto. Estos errores pueden ser debidos a oclusiones o
cambios de las condiciones lumnicas, entre otros.
Si se considera un determinado objeto mvil observado desde un pun-
to de vista, y se representa parte de la informacin del mismo, como por
ejemplo, la localizacin, sta se puede denir como una secuencia de estados
X
t
: t = 1, 2, ..
Los cambios entre los estados del objeto quedan reejados en la siguiente
ecuacin:
X
t
= f
t
(X
t1
) + W
t
donde W
t
es el denominado ruido blanco
4.5
.
La relacin entre la medicin y el estado se especica por la ecuacin
Z
t
= h
t
(X
t,
N
t
), donde N
t
es el ruido blanco y es independiente de W
t
. El
objetivo de los algoritmos de seguimiento consiste en estimar el estado X
t
dadas todas las mediciones obtenidas hasta el momento, que se traducira en
construir la distribucin de probabilidad p(X
t
| Z
1,...,t
) que rige la dinmica
del movimiento del objeto.
Una solucin ptima a nivel terico es usar un ltro recursivo Bayesiano,
el cual provee una solucin en dos pasos. El primero de ellos, la prediccin,
usa una ecuacin de carcter dinmico y la distribucin de probabilidad ya
calculada del estado en el instante t 1 para obtener la distribucin de proba-
bilidad del estado actual, p(X
t
| Z
1,..,t1
). En el segundo paso, de correccin,
se emplea una funcin de similitud p(Z
t
| X
t
) de la medicin del estado actual
para calcular la siguiente distribucin de probabilidad p(X
t
| Z
1,..,t
).
En el caso donde el conjunto de mediciones obtenidas sean debidas a la
existencia de un nico objeto, entonces con los dos pasos expuestos anterior-
mente es ms que suciente para estimar el estado actual. Pero si existen
varios objetos en la escena, existen otros casos de estudio que no son vistos en
la presente seccin. Para ms informacin de este tipo de mtodos, se reere
al lector a consultar [50].
4.5
Ruido que no se corresponde con ninguna distribucin estadstica.
4.5. Seguimiento del objeto 58
4.5.2. Seguimiento basado en apariencia
La propuesta ms generalizada de esta categoria es la denominada tem-
plate matching. Este mtodo se puede considerar como de bsqueda usando
fuerza bruta, intentando localizar en una imagen I
w
una regin similar a la
que contiene el objeto, denominada O
t
, denida en algn frame anterior. La
posicin de la plantilla puede ser calculada, de entre otras formas [120], usando
el mtodo de correlacin cruzada:
arg max
dx,dy

y
(O
t
(x, y) I
w
(x + dx + dy))
_

y
O
2
t
(x, y)
donde (dx,dy) especica la posicin 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 es
muy sensible a cambios en la iluminacin, los gradientes de la misma tambin
pueden ser usados como caractersticas de la imagen. La principal limitacin
que posee el mtodo de template matching es el coste computacional que ca-
racteriza a los algoritmos de fuerza bruta.
Existen varias propuestas usando otra representacin del objeto; desde cal-
cular la media de los valores del histograma para los pxeles que representan
al objeto, hasta ponderar los valores digitales que tienen dichos pxeles en el
histograma. Esta segunda tcnica se conoce como mean-shift. Para ms infor-
macin, consltese [120], captulo relacionado con tracking.
Otras alternativas para realizar el seguimiento de una regin denida por
una forma geomtrica bsica es la de calcular la traslacin usando un mtodo
de ujo ptico. Esta clase de mtodos son usados para generar una especie
de campo de vectores, calculando el vector de ujo para cada pxel bajo la
restriccin de brillo constante, I(x, y, t) I(x + dx, y + dy, t + dt) = 0. Este
procedimiento, el cual es llevado a cabo en un entorno de vecindad alrededor
del pxel, se puede realizar de dos maneras: de forma algebraica (Lucas and
Kanade, 1981) o geomtricamente (Schunk).
En 1994, Shi y Tomasi propusieron el denominado KLT tracker, el cual es
usado en la implementacin propuesta en este proyecto bajo el nombre de la
funcin cvCalcOpticalFlowPyrLK(), y en el que de forma iterativa se calcula
la traslacin (du,dv) de una regin (se admite como parmetro de entrada al
algoritmo) centrada en un punto de inters:
4.5. Seguimiento del objeto 59
_

I
2
x

I
x
I
y

I
x
I
y

I
2
y
__
du
dv
_
=
_

I
x
I
t

I
y
I
t
_
Una vez que se ha obtenido la nueva localizacin del punto de inters, el
algoritmo KLT tracker evalua la calidad de la zona estimada calculando la
transformacin an:
_
x

_
=
_
a b
c d
__
x
y
_
+
_
t
x
t
y
_
entre las zonas correspondientes en los siguientes frames (los coecientes
a,b,c,d se vern en captulos posteriores).
Si la suma de la diferencia de cuadrados entre la zona actual y la estimada
es menor que un cierto umbral, entonces se sigue estimando la posicin del
punto caracterstico; en caso contrario, se deshecha. Un ejemplo de uso del
algoritmo KLT tracker es el mostrado en la Figura 4.15.
Figura 4.15: Seguimiento de caractersticas usando el algoritmo KLT tracker.
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 relacin
esquemtica con las principales tcnicas y algoritmos, para concluir la clasi-
cacin del estado del arte de la localizacin y seguimiento de objetos.
Categora Trabajo ms relevante Grupo
Modelo de espacios de estados Mtodos de
(Isard , Blake, 1998). Espacio de Estados
Evolucin de Mtodos variacionales
contornos (Bertalmio y otros, 2000) Minimizacin
Mtodos heursticos directa
(Ronfard, 2004)
Dist. de Hausdor
(Huttenlocher y otros, 1993)
Emparejamiento Transformada de Hough
de formas (Sato y Aggarwal, 2004)
(Matching shapes) Histogramas
(Kang y otros, 2004)
Para un mayor nivel de detalle de todas las tcnicas mostradas en esta
seccin, se reere al lector a consultar [50] y [120], entre otros.
Captulo 5
Sensor ptico: modelado y
proceso de calibracin
Se puede considerar al sensor ptico como a uno de los elementos ms im-
portantes de todo el proyecto. Es por ello que se necesita de todo un captulo
para desarrollar el modelo de cmara usado, el proceso de calibracin, y la
base terica que subyace en todo el proceso. Se presenta pues todo lo relacio-
nado con la cmara que ha sido necesario estudiar para poder llevar a cabo la
implementacin presentada en el captulo 6.
5.1. Modelado de la cmara
5.1.1. Modelo pinhole
La modelizacin del sistema de la cmara usada en el presente proyecto se
basa en el modelo pinhole. En este modelo, la cmara realiza una proyeccin
en perspectiva de un punto espacial M a un punto m en el plano de la imagen
a travs del centro ptico de la cmara {C}.
El punto espacial M con coordenadas (X
c
, Y
c
, Z
c
) con referencia al sistema
de coordenadas de la cmara, queda representado en el plano de la imagen
por un punto m con coordenadas (u, v), o tambin denominadas coordenadas
centrales, con referencia al punto central de la imagen (u
0
, v
0
)(Figura 5.1),
donde el punto principal de la cmara se encuentra en el eje ptico de la
misma a una distancia focal f de su centro (sensor).
61
5.1. Modelado de la cmara 62
Figura 5.1: Modelo pinhole de la cmara.
En el modelo presentado se verica que:
u
X
c
=
v
Y
c
=
f
Z
c
(5.1)
La expresin anterior se denomina transformacin en perspectiva, donde se
ha supuesto un modelo libre de distorsin ptica. En las siguientes secciones
se presentan los tipos de distorsiones que estn presentes en este modelo.
5.1.2. Parmetros extrnsecos
La supercie de los puntos de la escena se corresponde con el sistema de
coordenadas, podramos decir, del mundo real, con un origen {W}, y un sis-
tema de ejes de la forma (X
w
, Y
w
, Z
w
). Dado un punto de un objeto, P, ste
queda expresado en el sistema de coordenadas respecto a {W} de la forma
(Px
w
, Py
w
, Pz
w
).
Supongamos ahora que se establece otro sistema de referencia, por ejemplo,
en el origen {C}, y cuyos ejes quedan etiquetados como (X
c
, Y
c
, Z
c
), situado
en el centro del eje ptico de la cmara, tal y como se muestra en la Figura 5.2.
5.1. Modelado de la cmara 63
Figura 5.2: Relacin gemetrica-espacial entre el sistema de coordenadas de
la cmara y el sistema de coordenadas del objeto.
Gracias a esta relacin geomtrica se pueden denir cules son los parme-
tros extrnsecos
5.1
del modelo, los que determinarn la posicin y orientacin
del sistema de coordenadas de la cmara respecto del sistema de coordenadas
del mundo real o del objeto
5.2
.
La posicin del centro ptico {C} respecto a {W} se da mediante el vector
de traslacin t mostrado a continuacin:
t =
_

_
t
x
t
y
t
z
_

_ (5.2)
La orientacin de los ejes del sistema de la cmara respecto al sistema de
ejes del objeto de referencia viene dado por lo que se conoce como matriz de
rotacin R, una matriz cuadrada de orden 3. Esta matriz puede ser obtenida
a partir del producto de matrices de las tres rotaciones simples en cada eje.
5.1
Tambin denominada como tcnica de calibracin externa.
5.2
La denicin puede ser al revs, considerando el sistema de referencia de la cmara
como el origen.
5.1. Modelado de la cmara 64
En esta situacin, una rotacin de grados alrededor del eje se expre-
sar como Rot(, ). Se denen stas rotaciones como sigue:
Rot(X,
x
) =
_

_
1 0 0
0 cos
x
sen
x
0 sen
x
cos
x
_

_ (5.3)
Rot(Y,
y
) =
_

_
cos
y
0 sen
y
0 1 0
sen
y
0 cos
y
_

_ (5.4)
Rot(Z,
z
) =
_

_
cos
z
sen
z
0
sen
z
cos
z
0
0 0 1
_

_ (5.5)
Existen otras formas de representar la rotacin respecto a cada eje por
separado, que son mostradas a continuacin.
Representacin RPY :
R = RPY (
x

z
) = Rot(Z,
z
) Rot(Y,
y
) Rot(X,
x
).
Representacin de Euler :
R = Euler(, , ) = Rot(Z, ) Rot(Y, ) Rot(Z, ).
En esta representacin, la matriz R puede quedar expresada de la si-
guiente forma:
R = Euler(, , ) = RPY (, , ) =
_

_
coscos sencoscos cossen sencoscos sensen
coscos + coscossen sensen + coscoscos cossen
sensen sencos cos
_

_
(5.6)
As pues, ambos sistemas quedan relacionados cumpliendo la siguiente
expresin:
_

_
X
c
Y
c
Z
c
_

_ = R
_

_
X
w
Y
w
Z
w
_

_ +t (5.7)
5.1. Modelado de la cmara 65
Por lo que usando lo anterior, para un punto cualquiera, P, con com-
ponentes (Px
w
, Py
w
, Pz
w
) respecto al sistema de coordenadas {W}, se
puede obtener su representacin respecto al sistema de coordenadas {C},
quedando sus componentes como (Px
c
, Py
c
, Pz
c
) usando 5.7 como sigue:
_

_
Px
c
Py
c
Pz
c
_

_ = R
_

_
Px
w
Py
w
Pz
w
_

_ +t
La ecuacin anterior se suele representar tambin como una nica matriz
cuadrada de dimensin 4, expresada en forma de coordenadas homoge-
neas:
_
P
c
1
_
=
c
T
w
_
P
w
1
_
(5.8)
donde la matriz
c
T
w
indica la matriz respecto del sistema de coordena-
das de la cmara, teniendo la forma:
T =
_
R
3x3
t
3x1
0
1x3
1
_
(5.9)
5.1.3. Parmetros intrnsecos
El punto m tambin puede referirse con respecto al borde superior iz-
quierdo de la imagen que se da en coordenadas (x, y) en pxeles, o tambin
denominadas como coordenadas laterales, realizando la siguiente transforma-
cin:
x = u
0
+ f
x
u (5.10)
y = v
0
+ f
y
v (5.11)
que de forma matricial puede tambin escribirse como:
_

_
x
y
1
_

_ =
_

_
f
x
u
0
0 f
y
v
0
0 0 1
_

_
_

_
u
v
1
_

_ o
_

_
x
y
1
_

_ = K
_

_
u
v
1
_

_ (5.12)
5.1. Modelado de la cmara 66
donde la matriz K
5.3
es la denominada matriz de parmetros intrnsecos,
siendo sta una matriz de 3x3 que describe tanto la geometra como la ptica
de la cmara:
K =
_

_
f
x
0 u
0
0 f
y
v
0
0 0 1
_

_ (5.13)
Se tiene adems que f
x
y f
y
son las denominadas distancias focales
5.4
en
las direcciones x e y respectivamente. Otra forma de expresar estas distancias
focales es la siguiente:
f
x
= k
x
f (5.14)
f
y
= k
y
f (5.15)
donde k
x
y k
y
son los factores de escala, que relacionan el tamao del pxel
con la distancia real. Estos resultados son calculados experimentalmente en el
captulo 7.
Si se asume que f = 1, las coordenadas del punto m se denominan coor-
denadas normalizadas (representan coordenadas pertenecientes a un plano
imagen ideal ubicado a una distancia del centro ptico igual a la unidad, y
est representado por q), a partir de la ecuacin (5.1) se tiene que:
q =
1
Z
c
_

_
X
c
Y
c
Z
c
_

_ = (u, v, 1)
T
(5.16)
donde el smbolo ~ representa que el punto se expresa en coordenadas pro-
yectivas. Las coordenadas normalizadas se pueden conseguir a partir de las
5.3
El coeciente representa la prdida de perpendicularidad entre los ejes de la imagen.
Se asume cero, puesto que prcticamente no afecta para los clculos posteriores.
5.4
Se puede considerar como la distancia del sensor hasta el origen del sistema de referencia
del plano de la imagen.
5.1. Modelado de la cmara 67
Figura 5.3: Representacin de los parmetros intrnsecos de la cmara.
coordenadas en pxeles m a travs de la matriz de parmetros intrnsecos K
despejando q de la relacin m = K q .
5.1.3.1. Coecientes de distorsin de la lente
En teoria es posible denir una lente perfecta, pero en la prctica es impo-
sible. Esto es debido principalmente al proceso de fabricacin de las mismas:
por ejemplo, es mucho ms fcil realizar una lente esfrica que un modelo
matemticamente perfecto de lente parablica.
Tambin resulta complicado el proceso de alineacin de la lente con el
sensor. Por ello, se necesitan ciertos parmetros para identicar estas imper-
fecciones en la lente: son los denominados parmetros de distorsin radial y
distorsin tangencial. La distorsin radial suele ser producto de la forma de la
lente, mientras que la distorsin tangencial suele ser el resultado del proceso
de ensamblaje de la cmara durante la fabricacin de la misma.
En el caso de la distorsin radial, se tiene que las lentes de cmaras reales
normalmente suelen modicar los pxeles cerca de los bordes de la imagen.
Este fenmeno se puede observar en la Figura 5.4. ; es como si se produjera
un efecto de doblado en las esquinas. La distorsin radial suele ser 0 en
el centro de la imagen, incrementndose en mdulo a medida que nos vamos
distanciando del centro hacia los bordes.
5.1. Modelado de la cmara 68
En la prctica, esta distorsin suele ser pequea y puede ser caracterizada
como los primeros trminos de una serie de Taylor alrededor de r = 0
5.5
. Estos
trminos, por convencin suelen denominarse k
1
y k
2
, y para lentes corrientes,
el uso de dos parmetros es ms que sucientes. Para lentes ms baratas o con
mayor distorsin radial es necesario usar hasta el tercer trmino de la serie,
k
3
.
Figura 5.4: Ejemplo del efecto de la distorsin radial.
En general, para recuperar la posicin original de un punto en una ima-
gen obtenida a travs de una lente con distorsin radial, se sigue la siguiente
ecuacin:
x
corregido
= x(1 + k
1
r
2
+ k
2
r
4
+ k
3
r
6
) (5.17)
y
corregido
= y(1 + k
1
r
2
+ k
2
r
4
+ k
3
r
6
) (5.18)
En la expresin anterior, x e y indican las coordenadas de la posicin
original del punto distorsionado en el plano de la imagen, y x
corregido
e y
corregido
es la nueva localizacin del punto tras el proceso de correccin. En las guras
5.5, 5.6 y 5.7 se muestra el efecto de estos parmetros en una lente.
5.5
Bsicamente consiste en la expansin de la funcin de distorsin como un polinomio de
la forma f(r) = a
0
+ a
1
r + a
2
r
2
+ ... alrededor de un determinado factor r.
5.1. Modelado de la cmara 69
Figura 5.5: Representacin vectorial ante un valor positivo de k
1
.
El segundo coeciente de distorsin es el denominado de distorsin tan-
gencial. Al igual que en el caso anterior, esta distorsin tambin puede ser
caracterizada por dos parmetros, denominados p
1
y p
2
. Para corregir la lo-
calizacin de un punto debido a la distorsin tangencial, se tiene que:
x
corregido
= x + [2p
1
y + p
2
(r
2
+ 2x
2
)] (5.19)
y
corregido
= y + [p
1
(r
2
+ 2y
2
) + 2p
2
x] (5.20)
Figura 5.6: Representacin vectorial ante un valor positivode p
1
.
5.1. Modelado de la cmara 70
Figura 5.7: Representacin vectorial para un valor positivo de p
2
.
As pues, en total existen cinco parmetros
5.6
de distorsin identicables y
cuanticables. El proceso de calibracin consiste precisamente en la obtencin
de estos parmetros.
Figura 5.8: Distorsin tangencial. El plano de la imagen no es del todo paralelo
al de la lente.
5.6
En nuestro caso tan solo consideramos 4 (2 de distorsin radial y 2 de distorsin tan-
gencial), pero en otras situaciones es necesario el uso del conjunto total.
5.2. Posicionamiento 3D mediante el sistema de visin 71
5.2. Posicionamiento 3D mediante el sistema
de visin
El sistema completo estar formado por la cmara del sistema acoplada
rgidamente a la IMU y un objeto de control apropiado para la tarea a reali-
zar. Se denomina al sistema de coordenadas ligado a la cmara como {C}. Por
otro lado, se tiene que el objeto visualizado por la cmara ser una plantilla
plana que se corresponde con el objeto de calibracin usado para la calibracin
interna, es decir, el denominado tablero de ajedrez. El sistema ligado al mismo
se denomina {O}.
En la Figura 5.9 se muestran todos los elementos mencionados junto al
sistema 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 frmula 5.9, la posicin y
orientacin de un sistema cualquiera {B} respecto a otro sistema {A} podra
expresarse mediante la matriz de transformacin homognea
a
T
b
:
5.2. Posicionamiento 3D mediante el sistema de visin 72
a
T
b
=
_
a
R
b
a
t
b
0
1x3
1
_
Si se plantea la posicin y orientacin de {G} respecto de {W}:
w
T
g
=
_
w
R
g
w
t
g
0
1x3
1
_
Si bien la matriz de rotacin anterior es fcilmente extrable del vector

g
,
no se podr disponer de la matriz
w
T
g
completa, dado el desconocimiento de
w
t
g
. sta es la principal deciencia que se intenta paliar con la introduccin
del sistema de visin.
Como se ha explicado en captulos anteriores, uno de los principales moti-
vos para la puesta en marcha del sistema de visin es conseguir un seguimiento
tridimensional de algn objeto (es una de las alternativas implementadas), y
la consiguiente estimacin de la posicin y orientacin del mismo respecto de
la cmara (o de forma equivalente, la posicin y orientacin de la cmara res-
pecto del sistema de coordenadas del objeto). A este proceso se le denomina
tambin como calibracin externa, y en cada instante nos proporciona una
estimacin de la matriz
c
T
o
(o de forma equivalente,
o
T
c
=
c
T
1
o
).
Por otro lado, se supone conocida la transformacin existente entre los
sistemas de coordenadas {C} y {G} mediante 5.9,
g
T
c
. Esta matriz se habr
calculado a partir de un proceso de calibracin fuera de lnea conocido como
calibracin IMU-cmara. Una vez que se haya establecido esta relacin, ser
constante, puesto que se establece un acoplamiento rgido mecnico entre am-
bos sensores. Dada esta matriz, es posible obtener la posicin y orientacin
de la IMU respecto al sistema de coordenadas del objeto:
o
T
g
=
o
T
c

g
T
1
c
De esta forma se tiene completamente posicionada la IMU, y en conse-
cuencia el quadrotor respecto al sistema de coordenadas del objeto, {O}. En el
captulo 8 se detalla con mayor profundidad la relacin nal entre los distintos
sistemas de referencia.
5.3. Proceso de calibracin 73
5.3. Proceso de calibracin
5.3.1. Base terica
En la calibracin de la cmara se estiman los parmetros intrnsecos y ex-
trnsecos. Su precisin es importante pues a partir de ellos se obtiene informa-
cin mtrica de la escena tal como dimensiones reales del objeto, profundidad,
movimiento a partir de imgenes, posiciones, orientaciones, etc. Tambin en la
calibracin de la cmara se determinan las distorsiones geomtricas producto
de las imperfecciones de la cmara (distorsiones radial y tangencial ).
La calibracin de la cmara es llevada a cabo al observar un objeto de cali-
bracin cuya geometra en el espacio 3D es conocida con muy buena precisin.
Usualmente el objeto de calibracin consiste en uno o varios planos (si hay
varios planos, suelen establecerse perpendiculares entre s) en los cuales se ha
impreso un determinado patrn de calibracin (Figura 5.10).
Los parmetros de la cmara son recuperados a partir de la relacin entre
las coordenadas tridimensionales del objeto con sus correspondientes proyec-
ciones bidimensionales en la imagen, como por ejemplo en el mtodo de trans-
formacin lineal directa (DLT).
En el mtodo utilizado en el presente proyecto se utiliza simplemente un
nico plano con un patrn de calibracin impreso, denominado afectuosamen-
te como tablero de ajedrez, y usando un mtodo basado en el algoritmo de
Zhang, en el cual los parmetros de la cmara son obtenidos a partir de la
transformacin 2D entre el plano del patrn y el plano de la imagen.
Figura 5.10: Objetos de calibracin planar y cbico.
5.3. Proceso de calibracin 74
Figura 5.11: Detalle de una de las capturas del objeto para la calibracin.
Este tipo de objetos son muy buenos para procesos de calibracin por va-
rios motivos: se conoce perfectamente el modelo del objeto, y adems el punto
caracterstico se encuentra con una precisin bastante buena, porque es un
punto en el que el cambio de la intensidad del color es mximo.
Existen tambin mtodos de autocalibracin, en los cuales no se utiliza nin-
gn objeto de calibracin; stos se basan en un conjunto de imgenes tomadas
por la cmara en diferentes posiciones y orientaciones sobre una escena estti-
ca. En estos casos, la rigidez de la escena genera un conjunto de restricciones
sobre los parmetros intrnsecos de la cmara que son recuperados a partir de
varias imgenes.
En la literatura se presentan diversas propuestas tanto para alternativas
donde no es necesario una calibracin propia de la cmara como aquellas don-
de s lo es, como por ejemplo, mtodos basados en propiedades de los puntos
de fuga, entre otros, que no se detallan por no ser uno de los objetivos del
presente proyecto.
A continuacin se describe el mtodo de Zhang, base terica del mtodo
usado para la calibracin de la cmara. Se eligi este mtodo por la exibilidad
en su aplicacin pues no necesita del conocimiento de la posicin y orientacin
del patrn en el espacio de trabajo. La calibracin en este mtodo parte de
tomar la imagen del patrn ubicado en diferentes posiciones y orientaciones
de tal manera que abarque el mayor conjunto posible de alternativas, para
asegurar una gran riqueza en la informacin visual del patrn.
5.3. Proceso de calibracin 75
Adems de este mtodo existen otras aproximaciones, en funcin del ca-
rcter del sistema de ecuaciones que se planteen: bien puede ser un sistema
lineal (como es este caso) o no lineal. Dado que no es objetivo de esta memoria
discernir entre estos dos mtodos, se reere al lector a consultar [13],[19],[15]
y [23] para ms informacin.
5.3.1.1. Mtodo de Zhang
Si se considera 5.8, la relacin entre un punto tridimensional

P = [X
w
Y
w
Z
w
1]
en el sistema de coordenadas del mundo, y su proyeccin 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 parmetros extrnsecos y K es
la matriz de parmetros intrinsecos de la cmara. Si se asume que el patrn
de calibracin descansa en la coordenada Z
w
= 0 en el sistema del mundo,
la anterior expresin puede ser escrita como:

_
x
y
1
_

_ = K[ r
1
r
2
r
3
t ]
_

_
X
w
Y
w
0
1
_

_
= K[ r
1
r
2
t]
_

_
X
w
Y
w
1
_

_ (5.21)
donde se ha representado a la matriz de rotacin por medio de sus columnas
r
i
. Como todos los puntos del patrn de calibracin descansan sobre el
mismo plano, se puede asumir que

P = [X
w
Y
w
1] el cual est relacionado con
el punto p en la imagen a travs de una homograa H (ver seccin 8.2.1.1):
m = H

M (5.22)
Comparando las dos expresiones anteriores y expresando la homograa en
base a sus columnas se tiene que :
H = [h
1
h
2
h
3
] = K[r
1
r
2
t] (5.23)
Por las propiedades de la matriz de rotacin R, sus dos primeras columnas
cumplen con la condicin de ortonormalidad:
5.3. Proceso de calibracin 76
r
T
1
r
1
= r
T
2
r
2
r
T
1
r
2
= 0 (5.24)
Considerando 5.23 se puede volver a escribir la ecuacin anterior como:
h
T
1
K
T
K
1
h
1
= h
T
2
K
T
K
1
h
2
h
T
1
K
T
K
1
h
2
= 0 (5.25)
A partir de estas dos restricciones, se encuentran los elementos de la matriz
K . Para hallarlos se propone una solucin analtica seguida de una optimiza-
cin no lineal.
Si la matriz K
T
K
1
se expresa de la forma:
K
T
K
1
= B =
_

_
B
11
B
12
B
13
B
21
B
22
B
23
B
31
B
32
B
33
_

_ (5.26)
donde B es una matriz simtrica (u
0
y v
0
son los coordenadas del punto
principal de la imagen ), y equivale a:
B =
_

_
1
f
2
x

f
2
x
f
y
v
0
f
y
u
0
f
2
x
f
y

f
2
x
f
y

2
f
2
x
f
2
y
+
1
f
2
y
(v
0
f
y
u
0
)
f
2
x
f
2
y

v
0
f
2
y
v
0
f
y
u
0
f
2
x
f
2
y
(v
0
f
y
u
0
)
f
2
x
f
2
y

v
0
f
2
y
(v
0
f
y
u
0
)
2
f
2
x
f
2
y
+
v
2
0
f
2
y
+ 1
_

_
(5.27)
puede ser fcilmente representable como un vector de seis elementos
b = [B
11
B
12
B
22
B
13
B
23
B
33
]
T
Sea h
i
= [h
i1
h
i2
h
i3
]
T
la i-sima columna de la matriz de homografa H;
entonces se verica que:
h
T
i
Bh
j
= v
T
ij
b (5.28)
donde v
ij
= [h
i1
h
j1
, h
i1
h
j2
+h
i2
h
j1
, h
i2
h
i2
, h
i3
h
j1
+h
i1
h
j3
, h
i3
h
j2
+h
i2
h
j3
, h
i3
h
j3
]
T
.
Por lo tanto las restricciones planteadas en 5.25 pueden ser re-escritas como
una ecuacin homognea en b de la forma:
5.3. Proceso de calibracin 77
_
v
T
12
(v
11
v
12
)
T
_
b = 0 (5.29)
donde se tendrn tantas ecuaciones como imgenes 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 nmero de imgenes, y al
menos debe cumplirse que n 3 para obtener una solucin nica para b . Se
sabe que la solucin a un sistema como el anterior es el vector propio de V
T
V
asociado a su valor propio ms pequeo.
Una vez que se consigue estimar b , se obtienen a partir de ste todos los
parmetros intrnsecos:
v
0
= (B
12
B
13
B
11
B
23
)/(B
11
B
22
B
2
12
)

= B
33
[B
2
13
+ v
0
(B
12
B
13
B
11
B
23
)]/B
11
f
x
=
_

/B
11
f
y
=
_

B
11
/(B
11
B
22
B
2
12
) (5.31)
= B
12
f
2
x
f
y
/

u
0
= v
0
/[f
y
(B
13
f
2
x
/

)]
Tras obtener una estimacin de la matriz K, los parmetros extrnsecos se
calculan a partir de la expresin 5.23 por:
r
1
= K
1
h
1
r
2
= K
1
h
2
(5.32)
r
3
= K
1
h
3
donde = 1/ K
1
h
1
= 1/ K
1
h
2
.
Una vez obtenidos estos datos, sirven como datos iniciales para una etapa
de renamiento a travs de tcnicas iterativas, donde adems se estiman las
distorsiones radial y tangencial.
5.3. Proceso de calibracin 78
5.3.2. Proceso de calibracin en la prctica
Durante el desarrollo del proyecto, dado que hasta el momento todo lo que
se haba implementado haba sido usando la libreria OpenCV en su versin
2.0, se propuso en una primera aproximacin usar las funciones para calibra-
cin propias de esta librera.
Sin embargo, tras los primeros resultados en los que la reconstruccin par-
cial de los puntos de la imagen no se correspondan con los puntos reales
tridimensionales, y los parmetros intrnsecos contenan algunos errores, se
opt por una calibracin externa, fuera de lnea, basada en el mismo algorit-
mo que el expuesto en la seccin anterior, pero usando para ello la plataforma
de Matlab.
Se us un toolbox de calibracin para Matlab, cuya documentacin necesa-
ria se encuentra en [14]. Tras realizar unas primeras pruebas con este mtodo
se concluy que era el ideal para realizar el proceso de calibracin nal sobre
la cmara. Para una visin global, en primer lugar se detallan los pasos pa-
ra la calibracin que se siguieron usando [120] y posteriormente se detalla el
proceso de calibracin usando el toolbox de Matlab.
5.3.2.1. Calibracin con OpenCV
Tal y como se ha expuesto en las secciones anteriores, para el proceso de
calibracin es necesario disponer de un objeto con un patrn determinado y
realizar mltiples vistas del mismo. El nmero de imgenes inuye en la pre-
cisin de los parmetros a estimar, por lo que se intenta que sea un nmero
relativamente grande (entre 10 y 15) con vistas relativamente distintas del
objeto de calibracin.
En este caso, se dispona de una plantilla estilo tablero de ajedrez, cuya
geometra era conocida (ancho y alto de cada cuadrado de 22.3 mm) y cuyo pa-
trn de puntos era tambin conocido; esto es, se dena una matriz con tantas
columnas como corners
5.7
tuviera a lo ancho y tantas las como corners tuvie-
ra a lo alto. En la Figura 5.12 se puede ver con detalle un corner en el tablero.
5.7
Tambin denominado como punto caracterstico.
5.3. Proceso de calibracin 79
Figura 5.12: Detalle de corners en el objeto de calibracin.
Para extraer las coordenadas de los puntos del objeto en el plano de la
imagen se utilizaba la funcin cvFindChessboardCorners(). Esta funcin reci-
ba como parmetros la imagen captada por la cmara, el ancho y alto del
objeto patrn, y unas mscaras de comportamiento.
Los resultados devueltos por esta funcin eran, ordenados por las y colum-
nas, las coordenadas de los corners en el plano de la imagen. Posteriormente
se aplicaba una funcin para obtener una mejor precisin en las coordenadas
extradas, cvFindCornerSubPix().Una vez que se tenan sucientes puntos del
mismo objeto visto desde varios puntos de vista (Figura 5.13), el siguiente
paso consista en calcular los parmetros intrnsecos de la cmara.
Figura 5.13: Imgenes del tablero de ajedrez vistas desde varios puntos dis-
tintos.
5.3. Proceso de calibracin 80
Para ello, se usaba la funcin cvCalibrateCamera2(), la cual realizaba la
correspondencia de los puntos bidimensionales a los tridimensionales, obte-
niendo como resultado la matriz de parmetros intrnsecos, K, y los parme-
tros correspondientes a las distorsiones radial y tangencial, como un vector de
5 posiciones: k
1
, k
2
, p
1
, p
2
y k
3
.
Calculados los parmetros intrnsecos, el siguiente paso era calcular la posi-
ble reconstruccin 3D a partir de una imagen de partida (Figura 5.14), usando
para ello la funcin cvFindExtrinsicCameraParams2().
Figura 5.14: Reconstruccin 3D terica.
Extrados la matriz R y el vector t como resultados devueltos de la ante-
rior funcin, la idea era que dada la imagen del objeto, esttica, y desplazando
el sistema de coordenadas de la cmara, fuera posible una reconstruccin par-
cial a partir de la frmula 5.8, usando para ello la funcin cvProjectPoints2(),
obteniendo un resultado como el mostrado en la Figura 5.15.
5.3. Proceso de calibracin 81
Figura 5.15: Reconstruccin 3D real.
Dado que los resultados eran difciles de interpretar y no se correspondan
con errores identicables en los parmetros, se concluy que el proceso de ca-
libracin se haba realizado con errores, por lo que se opt por usar un mtodo
ms robusto, y con cierta popularidad, como el usado en [14], y explicado a
continuacin.
5.3. Proceso de calibracin 82
5.3.2.2. Calibracin con el toolbox de Matlab
La cmara sobre la cual se ha realizado el proceso de calibracin es una
cmara monocromo de resolucin (HxV) 752x480 pixels, con sensor CMOS
de 1/3 (pixel cuadrado de 6m de ancho y alto), en concreto el modelo uEye
UI-1220-M de IDS, a la que se le ha acoplado una ptica ja estndar COS-
MICAR/PENTAX de 12mm de distancia focal nominal.
En la Figura 5.16, se muestra en detalle la cmara con una indicacin de
la ubicacin estimada del origen de su sistema de coordenadas, as como la
plantilla empleada para la calibracin, tambin con su sistema de coordenadas
asociado.
Figura 5.16: Cmara y plantilla de calibracin con los correspondientes siste-
mas de coordenadas.
Para realizar el proceso de calibracin con este toolbox, se siguieron las
instrucciones dadas en el primer ejemplo de [14]. Los pasos a seguir para
conseguir una buena calibracin de la cmara 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. En
nuestro caso se eligi la segunda opcin:
5.3. Proceso de calibracin 83
Paso 2:
Cargamos el conjunto de imgenes que hayamos estimado necesarias
para la calibracin (en este caso, el total de imgenes son 17):
Paso 3 :
En este paso se extraen bien de forma manual o automtica los corners
de las diferentes imgenes consideradas. Adems, para cada imagen (se
puede evitar modicando un archivo de conguracin) es necesario in-
troducir:
- Tamao de la ventana de bsqueda del corner: por defecto suele ser una
ventana de 11x11 pxeles alrededor de cada punto (propio pxel 1x1,y
ventana de 5 alrededor, implica que por cada componente: 5+1+5 = 11
pxeles).
- Tamao en cm. del alto y ancho de cada cuadrado del tablero.
Una vez que se han introducido los parmetros anteriores, se opta por
una localizacin automtica de los puntos, pero previamente deniendo
las 4 esquinas del tablero. En este aspecto, es muy importante resaltar
que el orden en el que se seleccionen los 4 puntos afecta a la posterior
5.3. Proceso de calibracin 84
representacin del sistema de coordenadas del objeto, por lo que ayu-
dndonos de una pequea marca en el tablero, se puede denir siempre
el orden de los 4 puntos en sentido horario a partir del punto considerado
como origen del sistema de referencia. Este hecho se puede observar en
la Figura 5.17.
Figura 5.17: Localizacin automtica de los puntos y origen del sistema de
referencia del objeto.
En algunas situaciones, la localizacin automtica de los puntos no de-
vuelve las coordenadas precisas de algunos corners. Es en este punto
donde se identican los parmetros de distorsin de la lente. La idea
es sencilla: se traza una recta entre los puntos de los extremos de cada
esquina, 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 continuacin se muestra cmo antes de la modicacin del parmetro
k
c
algunos puntos estn lejos de la recta de interseccin; y tras modi-
car este parmetro a un valor entorno a -0.5 de media para todas las
imgenes, el resultado es ms satisfactorio.
5.3. Proceso de calibracin 85
Figura 5.18: Situacin de los puntos antes de realizar la correccin manual.
Figura 5.19: Situacin de los puntos despus de realizar la correccin manual.
5.3. Proceso de calibracin 86
Estas correcciones se realizaron para todas y cada una de la imgenes.
Despus de realizar un proceso de optimizacin, los resultados iniciales
son los mostrados en la siguiente tabla:
Parmetro Valor
Distancia 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 ]
Distorsin [ -0.36695 0.93446 0.00009 -0.00052 0.00000 ]
(k
1
, k
2
, p
1
, p
2
, k
3
) [ 0.02283 0.91265 0.00038 0.00025 0.00000 ]
Pxel Error [ 0.09024 0.09061 ]
Paso 4 :
Tras la obtencin de los resultados anteriores, a continuacin es posible
calcular los parmetros extrnsecos respecto a las distintas imgenes de
entrada, y calcular la reproyeccin de los puntos (Figura 5.20) y el error
asociado.
El clculo de la reproyeccin del error (esto es, la diferencia de posicin
entre 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 correctamente
el proceso de calibracin. Si el error es del orden de dcimas de pxel
(Figura 5.22), entonces se ha realizado la calibracin con xito.
Figura 5.20: Reproyeccin del conjunto de puntos sobre los puntos reales de
la imagen.
5.3. Proceso de calibracin 87
Figura 5.21: Detalle de la diferencia entre punto de la imagen real (rojo) y
punto reproyectado (azul).
Si de lo contrario, la media del error varia hasta varias unidades de pxel,
es necesario o bien realizar todo el proceso de calibracin de nuevo o
bien recalcular tan solo los puntos en aquella imagen que haya dado
problemas.
Figura 5.22: Reproyeccin media del error.
5.3. Proceso de calibracin 88
En las Figuras 5.23 y 5.24 se muestra una representacin del conjunto
de imgenes tomadas del tablero, respecto del origen de coordenadas del
mundo (cmara).
Figura 5.23: Representacin 3D de los parmetros extrnsecos (1).
Figura 5.24: Representacin 3D de los parmetros extrnsecos (2).
5.3. Proceso de calibracin 89
Paso 5 :
Si se han realizado modicaciones en la posicin inicial de puntos en
la imagen, sera necesario volver al paso 3 y recalcular de nuevo todos
los parmetros intrnsecos de la cmara. En el presente proceso de ca-
libracin, para anar al mximo la calidad de estos parmetros, dicho
proceso se tuvo que realizar varias veces.
Finalmente, los resultados obtenidos y vericados con Matlab tras el
proceso de calibracin para la cmara indicada al comienzo de la sec-
cin , son los siguientes:
Parmetro Estimacin (px) Comentarios
f
x
2043.2402 Sabiendo que la anchura efectiva del pixel es
de 6m, esto es equivalente a 12.259442mm.
f
y
2044.6518 Sabiendo que la altura efectiva del pixel es
de 6m, esto es equivalente a 12.267911mm.
c
x
354.8575 Coordenada x del punto principal en la imagen.
c
y
240.4531 Coordenada y del punto principal en la imagen.
p
1
0.3668
p
2
0.9305 Coecientes de distorsin radial de la lente.
p
3
0.00008
t
1
0.0005 Coecientes de distorsin tangencial de la lente.
t
2
0.0000
5.3. Proceso de calibracin 90
Captulo 6
Implementacin de mecanismos
para la extraccin de
informacin visual
En el presente captulo se presentan el conjunto de propuestas implemen-
tadas para la extraccin de la informacin visual necesaria para cerrar el lazo
de control visual del quadrotor. Se proponen tambin posibles mejoras y al-
ternativas al control visual. Segn lo presentado en el captulo 4, en funcin
de cmo se considerase al objeto de inters, tridimensional o plano, se podan
aplicar diferentes mtodos para la deteccin y seguimiento.
En la primera propuesta se considera al objeto en todas sus dimensiones,
conociendo adems perfectamente su geometra. Sin embargo, para la segun-
da alternativa se ha considerado al objeto de referencia (se contina haciendo
pruebas con el tablero de ajedrez) plano, sin ninguna informacin sobre su
geometra.
Al nal del captulo se exponen posibles alternativas y ampliaciones para
esta tarea. Se presenta adems la primera tcnica que se desarroll, el segui-
miento basado en plantillas, o template matching. ste mtodo fue rpida-
mente descartado debido a los problemas que son expuestos en esta seccin.
El cdigo correspondiente a todas las propuestas se puede consultar en el
Apndice A, si bien alguna de las funciones utilizadas son detalladas en este
captulo.
91
6.1. Objeto de referencia tridimensional 92
6.1. Objeto de referencia tridimensional
La informacin visual que se extrae con el conjunto de propuestas im-
plementadas en este captulo sirve para obtener los parmetros de rotacin y
traslacin, de manera que fusionndolos con los datos provenientes de la IMU,
se cierra el lazo de control en la tcnica denominada control visual basado en
posicin (PBVS - Position Based Visual Servo), en la que es necesario conocer
tanto la geometra de la cmara como la del objeto. En esta propuesta se tra-
ta de localizar al objeto de referencia con la cmara, estimar los parmetros
extrnsecos (esto es, rotacin y traslacin del objeto respecto del sistema de
coordenadas de la cmara) y realizar un seguimiento de las caractersticas del
objeto en una secuencia de imgenes.
El resultado nal, presentado en la Figura 5.15, desde el punto de vista del
autor, es bastante interesante. Principalmente por varios motivos: el quizs
ms llamativo pudiera ser el que, si se considerara otro objeto de inters, por
ejemplo, una gura de dinosaurio, y se deniera al completo toda su geome-
tra, una de las aplicaciones directas de este tipo de tcnicas es la de la realidad
aumentada o, incluso, realidad virtual.
La realidad aumentada es el trmino que se usa para denir una visin
directa o indirecta de un entorno fsico del mundo real, cuyos elementos se
combinan con elementos virtuales para la creacin de una realidad mixta a
tiempo real. Consiste en un conjunto de dispositivos que aaden informacin
virtual a la informacin fsica ya existente. Esta es la principal diferencia con
la realidad virtual, puesto que no sustituye la realidad fsica, sino que sobre-
imprime los datos calculados al mundo real.
La razn principal por la cual se escogi el tablero de ajedrez como objeto
de inters es obvia; aparte de porque haba sido el objeto para la realizacin
de la calibracin interna de la cmara, es porque su geometra (puntos por
las y por columnas) es sencilla de implementar.
Se podra haber considerado otro objeto, como por ejemplo, el dinosaurio
de la imagen; pero la denicin de su geometra hubiera sido relativamente
ms compleja. Una vez que se hayan calculado la rotacin y traslacin del
objeto respecto de la cmara (o viceversa) en cada escena, estos parmetros
sern introducidos al controlador para conseguir, con un control robusto, que
el quadrotor sea capaz de seguir al objeto de referencia.
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:
Cmara: Cmara calibrada, o al menos se dispone de los parmetros
intrnsecos obtenidos con el proceso de calibracin interna, visto en el
captulo 5. Correctamente conectada al ordenador, y transmitiendo en
modo contnuo
6.1
.
Objeto de inters: Se dispone de la plantilla del tablero de ajedrez, co-
nociendo perfectamente su geometra (midiendo el alto y ancho de sus
cuadrados con un calibre como el de la Figura 6.2, por ejemplo).
El algoritmo bsico que resume los pasos a seguir para lograr el objetivo es el
expuesto en Algoritmo 6.1.
6.1
Ms adelante se presentan los problemas relativos a este modo de captura.
6.1. Objeto de referencia tridimensional 94
Algorithm 6.1 Algoritmo general para la extraccin de informacin visual
para el esquema de control PBVS.
Inicio ControlPBVS_Propuesta_I
ReservaEstructurasMemoria(...)
InicializacionCamara(camara)
[MatrizIntrinseca,ParametrosDistorsion]:=
CalibracionInterna(camara)
PuntosObjeto :=
DefinicinGeometriaObjeto(tablero_ajedrez)
mientras (cierto):
imagen := CapturaImagen(camara)
PuntosImagen := LocalizarObjetoControl(imagen)
[Rotacion,traslacion]:=
CalculaCalibracionExterna(PuntosImagen,PuntosObjeto)
imagenColor :=
ProyectaPuntos(PuntosObjeto,
Rotacion,traslacion,
MatrizIntrinseca,ParametrosDistorsion,..)
fin mientras
LiberaRecursosMemoria(..)
LiberaCamara(camara)
Fin Algoritmo
Figura 6.2: Herramienta de precisin necesaria para determinar la geometra
del objeto de inters.
6.1. Objeto de referencia tridimensional 95
6.1.1. Representacin, localizacin y seguimiento del
objeto de referencia
Era relativamente sencillo localizar los puntos caractersticos o corners
de un tablero de ajedrez despus de consultar la documentacin de OpenCV
[120],[33] y [67]. Dado que la funcin cvFindChessboardCorners() fue utilizada
en una implementacin anterior para el proceso de calibracin interna de la
cmara, fue fcil adaptarla al nuevo cdigo para la obtencin de las coorde-
nadas de los puntos caractersticos en el plano de la imagen. Adems, dichos
corners de la parrilla interior de puntos del tablero de ajedrez presentan unas
propiedades muy buenas para la localizacin y seguimiento, no tanto como
pudiera tener otro objeto de inters.
Figura 6.3: Ejemplo de localizacin de corners por interseccin de rectas.
Existen muchas propuestas para la localizacin de dichos puntos: detector
de corners de Harris; interseccin entre rectas interiores al tablero usando al-
goritmos de deteccin de bordes, como Canny, etc. Incluso existen propuestas,
como la mostrada en [67], en las que se muestran situaciones donde el tablero
se deforma y algoritmos como los anteriores fracasaran en la localizacin de
los puntos.
No existe en la literatura ninguna referencia a cmo se ha implementado
6.1. Objeto de referencia tridimensional 96
la funcin cvFindChessboardCorners(), pero se puede suponer que bien podra
haber sido implementada siguiendo una combinacin de las propuestas ante-
riores. Eso s, cabe resaltar que esta funcin no es til en situaciones en las
que el tablero se deforme considerablemente.
En cada toma, para la localizacin de los puntos interiores al tablero, se
usa la funcin de OpenCV cvFindChessboardCorners(), cuyo prototipo es el
siguiente:
int cvFindChessboardCorners(
const void* image,
CvSize pattern_size,
CvPoint2D32f* corners,
int* corner_count = NULL,
flags = CV_CALIB_CB_ADAPTIVE_THRESH );
Descripcin de los parmetros:
image :
Imagen de entrada capturada por la cmara, donde se supone que est
presente el tablero. Es necesario que la imagen est en formato de 8 bits
monocromo.
pattern_size :
Estructura para la denicin de tamao en OpenCV. Se indican el n-
mero de las y columnas, especicados por el nmero de corners internos
a lo ancho y nmero 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 extrados del
tablero.
corner_count :
Puntero a entero, en el cual se indica el nmero de corners del tablero
encontrados.
Mscaras de comportamiento :
CV_CALIB_CB_ADAPTIVE_THRESH: Se usar un umbral adap-
tativo para el contraste en la imagen para la localizacin de los
corners.
6.1. Objeto de referencia tridimensional 97
CV_CALIB_CB_FILTER_QUADS: Conjunto de restricciones son
aplicadas para rechazar posibles falsos corners.
Una limitacin que presenta esta funcin es que si el tablero completo no est
contenido dentro de la escena, y no se detecta, por ejemplo, una la o colum-
na, no devuelve el conjunto de puntos de la parte del tablero visible, dado que
no cumple con los parmetros de entrada indicados.
En la propuesta indicada en la seccin 6.2, se implementa un mtodo dis-
tinto el cual s devuelve los puntos del objeto en la escena, incluso an cuando
aquel est parcialmente fuera de la misma.
Una vez que se han extrado de la imagen las coordenadas donde se supone
que estn presentes los puntos caractersticos internos del tablero, el siguiente
paso es aplicar un proceso de renamiento sobre el conjunto de coordenadas,
para precisar an ms la localizacin de los puntos caractersticos o corners
obtenidas en el primer paso.
Esta tarea se realiza con la funcin cvFindCornerSubPix():
void cvFindCornerSubPix(
const CvArr* image,
CvPoint2D32f* corners,
int count,
CvSize win,
CvSize zero_zone,
CvTermCriteria criteria );
Descripcin de los parmetros:
image,corners y count :
Igual que en el caso anterior, salvo que se supone que en image estn
presentes los corners pasados como argumento de entrada.
win :
Estructura en OpenCV para especicar el tamao de la ventana de bs-
queda del punto caracterstico, en pxeles. En el presente trabajo, se
considera una ventana de 5x5 de radio desde la posicin del punto. Con
lo que sumando el tamao del pxel en horizontal y vertical queda una
ventana de CvSize(11,11) (ventana de tamao 11x11).
6.1. Objeto de referencia tridimensional 98
Figura 6.4: Precisin en la localizacin de los corners, basado en el gradiente
del punto en la imagen.
zero_zone :
Parmetro opcional de la funcin. Establecido al valor CvSize(-1,-1). No
relevante para el caso actual.
criteria :
Se establecen el nmero de iteraciones mximo en el proceso de bsque-
da. En nuestro caso:
cvTermCriteria(CV _TERMCRI_TPS | CV _TERMCRIT_IER, 30, 0,1).
El algoritmo iterar un nmero mximo de iteraciones que se establece
en 30 cuando se haya alcanzado una precisin del 10 %.
Tras guardar las coordenadas de los puntos en estructuras de memoria in-
termedias, y obtenidas las coordenadas precisas de la localizacin de los puntos
del tablero, queda realizar la representacin de la geometra del objeto, de-
niendo los puntos del objeto, y calcular los parmetros extrnsecos del sistema.
Esto es, realizar el clculo de la rotacin y traslacin de los puntos del
objeto respecto del sistema de coordenadas de la cmara, asumiendo que tanto
la cmara como el objeto pueden desplazarse en cualquier momento. El objeto
se ha denido como una malla de puntos, ordenados por las y columnas, cuya
distancia de separacin es exactamente 22.30 mm (Algoritmo 6.2).
La tercera coordenada se establece a 0, puesto que se supone que el objeto
descansa sobre el plano que contiene al sistema de referencia propio. Cabe
6.1. Objeto de referencia tridimensional 99
Algorithm 6.2 Representacin virtual del objeto.
// Bucle externo a lo largo del eje X
desde i = 0 hasta i < numCornersEjeX
paso: i++
{
// Bucle interno a lo largo del eje Y
numCorner = 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 funcin de extraccin de puntos de la imagen devuelve los
puntos primero por las, y despus por columnas; este es el motivo por el cual
se haya denido del mismo modo para los puntos del objeto.
Un ltimo detalle es indicar qu se considera eje X y eje Y respecto del
sistema de coordenadas del objeto. En la siguiente imagen se representan los
tres ejes de coordenadas, considerando el origen del sistema la esquina superior
izquierda del tablero, opuesta a la marquita de posicin (se puede apreciar
en la Figura 6.5 parte inferior derecha un punto negro).
Figura 6.5: Representacin de los ejes del sistema de coordenadas del objeto.
6.1. Objeto de referencia tridimensional 100
6.1.2. Clculo de los parmetros extrnsecos
En OpenCV existe una funcin que permite calcular los parmetros in-
trnsecos y extrnsecos al mismo tiempo: cvCalibrateCamera2(). sta fue la
primera opcin que se propuso para el clculo de la matriz de rotacin y el
vector de traslacin. Sin embargo, durante los experimentos se comprob que
el tiempo consumido por esta funcin era excesivo, con lo que se propuso una
segunda alternativa, la cual di resultados bastante buenos. Esta funcin es la
denominada cvFindExtrinsicCameraParam2(), la cual se detalla a continua-
cin:
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 descripcin de los parmetros es la siguiente:
object_points :
Representacin virtual de la geometra 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 extrados con la funcin cvFindChessboardCorners().
intrinsic_matrix :
Funcin de parmetros intrnsecos de la cmara K .
distortion_coes :
Vector de coecientes de distorsin radial y tangencial. Expresado de
la forma: k
1
, k
2
, p
1
, p
2
y k
3
(donde k
i
indican coecientes de distorsin
radial y p
i
coecientes de distorsin tangencial ).
rotation_vector :
Vector de rotacin, en el que se devuelve, por cada eje, el vector unitario
asociado y el ngulo de giro sobre el mismo. Para obtener la matriz
de orden 3 necesaria para la aplicacin, se puede usar la funcin de
6.1. Objeto de referencia tridimensional 101
OpenCV cvRodrigues2(), aunque en el presente caso se ha hecho uso de
una funcin denida en el archivo matrix.hpp (vese Apndice A para
ms detalles). Esta funcin se basa en la siguiente relacin:
norm(r)
r r/
R = cosI (1 cos)rr
T
+ sin
_

_
0 r
z
r
y
r
z
0 r
x
r
y
r
x
0
_

_
donde la matriz R es de orden 3 y el vector r es un vector de 1 la y 3
columnas.
translation_vector :
Vector de traslacin del sistema. Los valores devueltos estn expresados
en mm.
6.1.3. Proyeccin tridimensional
El siguiente paso es en el se puede vericar con total seguridad:
Si la calibracin interna de la cmara se ha realizado correctamente.
Si se ha denido correctamente al objeto tridimensional.
Si se ha realizado correctamente la extraccin de los parmetros extrn-
secos del sistema.
Si alguna de las tres etapas anteriores se ha superado con algn tipo de error,
la reproyeccin de la estimacin de los puntos del objeto no ser adecuada, y
por lo tanto, la reconstruccin 3D del mismo contendr errores. Esto es, dada
una localizacin en el espacio tridimensional respecto del sistema de coorde-
nadas de la cmara, es posible reconstruir de forma unvoca donde debera
aparecer en el plano de la imagen en coordenadas expresadas en pxeles, el
punto externo tridimensional.
Esta transformacin se realiza usando la funcin de OpenCV denominada
cvProjectPoints2(), descrita a continuacin:
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 :
Representacin virtual de la geometra del objeto. Presentada en el Algo-
ritmo 6.2. Coordenadas tridimensionales respecto al sistema del objeto.
rotation_vector :
Vector de rotacin, representado como rotacin respecto a cada eje.
translation_vector :
Vector de traslacin del sistema. Los valores devueltos estn expresados
en mm.
intrinsic_matrix :
Funcin de parmetros intrnsecos de la cmara, K. Junto con los coe-
cientes de distorsin, es usada para corregir geomtricamente la imagen.
distortion_coes :
Vector de coecientes de distorsin. Expresado de la forma: k
1
, k
2
, p
1
, p
2
y k
3
(donde k
i
indican coecientes de distorsin radial y p
i
coecientes de
distorsin tangencial ).
image_points :
Parmetro de salida; contendr las coordenadas tridimensionales de la
localizacin del objeto, respecto del sistema de coordenadas de la ima-
gen. Posteriormente ser usado para dibujar los puntos reproyectados.
Tras la ejecucin de la anterior funcin, era posible dibujar la reproyeccin de
los puntos calculados sobre el tablero, consiguindose una precisin bastante
buena. Pero el ltimo paso consista en dibujar el eje Z sobre el tablero. Se
puede calcular fcilmente aplicando la frmula (indicada en 5.1):
u
X
c
=
v
Y
c
=
f
Z
c
6.1. Objeto de referencia tridimensional 103
Figura 6.6: Reconstruccin 3D del objeto de inters.
la cual indica que para conseguir la reconstruccin parcial completa es ne-
cesario dividir esa pequea cantidad por la reproyeccin del eje Z.
Una vez subsanado el defecto, los resultados obtenidos se pueden observar
en la Figura 6.6, donde se observa una reproyeccin del objeto tridimensio-
nal del objeto de inters a partir de los parmetros extrnsecos del sistema.
6.1. Objeto de referencia tridimensional 104
6.1.4. Comprobacin de resultados
El paso complementario para garantizar que los resultados devueltos de
rotacin y traslacin eran buenos era realizar un conjunto de pruebas, en las
que en cada momento se comprobaba cada componente por separado de am-
bos vectores. As, en el laboratorio se dispuso de una plantilla, instalada sobre
la supercie de una mesa larga (de al menos 1.70 m), sobre la cual se haban
pintado 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 cmara se haba jado a una
estructura la cual facilitaba enormente la tarea de garantizar que solamen-
te se desplazaba en la direccin que en ese momento se estaba midiendo. A
continuacin se exponen tanto imgenes de la plantilla con la que se realiz
el conjunto de pruebas como las condiciones de cada prueba individual, y los
resultados experimentales obtenidos.
Figura 6.7: Plantilla para experimentos en el laboratorio.
6.1. Objeto de referencia tridimensional 105
Figura 6.9: Alineacin de la cmara con la plantilla de referencia.
Figura 6.8: Detalle de las marcas de medicin en la plantilla.
6.1. Objeto de referencia tridimensional 106
Con la implementacin de esta primera propuesta, el lazo de control re-
alimentado con informacin visual tiene una velocidad de 10 fps, estimada
a partir de los experimentos en el laboratorio. Un ltimo comentario acer-
ca de esta primera implementacin (Apndice A, clase CSensorCamara.hpp)
es que permite que el origen de la imagen sobre la que se extrae la informa-
cin bien pueda ser del ujo de la cmara, o de un archivo local en la mquina.
6.1.4.1. Experimentos
Clculo de la profundidad :
En este experimento se estableca una posicin ja para la cmara, y se
desplazaba el tablero o objeto de inters sobre la plantilla una distancia
determinada. Se realizaron varias combinaciones variando la profundi-
dad. Un ejemplo de las imgenes consideradas son las mostradas en la
Figura 6.10.
Figura 6.10: Situacin inicial tablero (Izq). Situacin nal (Dcha).
El objetivo de este experimento era, sabiendo lo que se haba desplazado
el tablero en profundidad, ver qu resultados se obtenan tras extraer
rotacin y traslacin por separado de cada una de las imgenes. Los
resultados obtenidos son los siguientes:
Imagen 1. Distancia: 150 cm.
Rotacion Obtenida: 2.226382 2.206937 0.003168
Traslacin Obtenida: -152.037033 -96.652985 1475.505737
6.1. Objeto de referencia tridimensional 107
Imagen 2. Distancia: 120 cm.
Rotacion Obtenida: 2.226527 2.208627 -0.001606
Traslacin Obtenida: -150.829361
-100.066978 1174.485474
Desplazamiento estimado: 1475 1174 = 301mm. Resultado con una
precisin bastante buena, si consideramos que el desplazamiento fsico
realizado ideal, y de unos 30 cm.
En este caso, se observa que, aunque se haya establecido el tablero a 150
cm del centro del sistema de la cmara, la distancia calculada en Z (pro-
fundidad) es de 147,5mm. Esto es debido a que en primeras estimaciones
se consider que el origen del sistema de la cmara estaba en un punto
del juego de lentes; pero tras comprobar que asumiendo esta posicin la
distancia en Z no era correcta, se recalcul usando para ello las tcnicas
mostradas en el captulo anterior, y se obtuvo un nuevo punto para el
centro de este sistema, mostrado en la Figura 6.11.
Figura 6.11: Centro real estimado del sistema de coordenadas de la cmara.
6.1. Objeto de referencia tridimensional 108
Clculo del desplazamiento Eje X :
De nuevo se establece la posicin de la cmara ja, y se desplaza el
tablero sobre la plantilla una distancia determinada, pero esta vez en
sentido transversal de la plantilla, lo que se correspondera con eje Y del
sistema de coordenadas del tablero (eje X respecto del sistema de coor-
denadas de la cmara). Se realizaron varias combinaciones variando este
parmetro. Un ejemplo de las imgenes consideradas son las mostradas
en la Figura 6.12.
Figura 6.12: Situacin inicial tablero (Izq). Situacin nal(Dcha).Se aprecia
desplazamiento en horizontal.
El objetivo de este experimento era, sabiendo lo que se haba desplaza-
do el tablero en horizontal, ver qu resultados se obtenan tras extraer
rotacin y traslacin por separado de cada una de las imgenes. Los
resultados obtenidos son los siguientes:
Imagen 1. Distancia: 170 cm. Posicin en x = 0.
Rotacion Obtenida: -2.213006 -2.228312 0.010414
Traslacin Obtenida: -198.533707 -123.721458 1703.69873
Imagen 2. Distancia: 170 cm. Posicin en x = 5.
Rotacion Obtenida: -2.207929 -2.225694 -0.009675
Traslacin Obtenida: -146.946869
-123.890236 1695.04883
Desplazamiento estimado en X: 198,53146,94 = 51,59mm . Resultado
con una precisin bastante buena, si consideramos que el desplazamiento
fsico realizado es ideal, y de magintud unos 5 cm.
6.1. Objeto de referencia tridimensional 109
Clculo del desplazamiento Eje Vertical :
En este caso, se mantiene en la misma posicin al tablero, y es la cmara
la que desplazamos verticalmente para comprobar el desplazamiento en
el eje X del tablero (lo que importa no es la posicin del tablero respecto
del sistema de coordendas del mundo, sino la posicin relativa entre los
sistemas de la cmara y del tablero). Se realizaron algunas combinacio-
nes variando este parmetro. Un ejemplo de las imgenes consideradas
son las mostradas en la Figura 6.13.
Figura 6.13: Posicin inicial (Izq) y posicin nal (Dcha).
El objetivo de este experimento era, sabiendo lo que se haba despla-
zado la cmara en vertical, ver qu resultados se obtenan tras extraer
rotacin y traslacin por separado de cada una de las imgenes. El eje
Y de la cmara se corresponde con el eje X del tablero. Los resultados
obtenidos son los siguientes:
Imagen 1. Distancia: 160 cm. Posicin en y = 14cm (cmara).
Rotacion nula.
Traslacin Obtenida: -164.424149 -140.093170 1604.13696
Imagen 2. Distancia: 160 cm. Posicin en y = 22cm (cmara)
Rotacion nula.
Traslacin Obtenida: -159.771011 -69.654335
1605.76050
Adems del vertical se han intentado minimizar el resto de componentes
del movimiento (evitar que la cmara se desplazara en horizontal, por
6.1. Objeto de referencia tridimensional 110
ejemplo). Desplazamiento estimado en Y: | 140,0969,65 |= 70,44mm .
Si el desplazamiento en vertical haba sido de 8cm, en este experimento
se puede asumir este error a pequeos errores en el conjunto de medi-
ciones en el planteamiento del experimento (por ejemplo, que la cmara
se hubiera desplazado ligeramente en sentido horizontal).
Tambin se realizaron pruebas para medir la rotacin del tablero respecto al
sistema de coordenadas de la cmara. Se puede observar en la Figura 6.14
las marcas en la plantilla para medir la rotacin del tablero respecto a su
eje Y. En la Figura 6.15 se muestra un ejemplo de los experimentos de este
parmetro y se verica que los resultados son relativamente precisos, tras
varias comprobaciones usando la plataforma Matlab.
Figura 6.14: Marcas en la plantilla para medir la rotacin.
Figura 6.15: Experimentos para comprobar la rotacin del tablero.
6.1. Objeto de referencia tridimensional 111
6.1.5. Problemas durante la implementacin
Los problemas que surgieron en esta primera propuesta estuvieron relacio-
nados tanto con el proceso de implementacin como el de la asimilacin de
conceptos tericos. El autor del presente proyecto nunca haba trabajado en
este campo, y en un primer momento no vea cmo podan estar relacionados
un simple tablero de ajedrez, con la reconstruccin tridimensional del mis-
mo desde el plano de la imagen.
En mi Titulacin no se ven este tipo de conceptos, y la ltima vez que ste
alumno vi geometra y sistemas de referencias fue en asignaturas de primer
curso. As pues, esta complejidad ha ido en paralelo con algunos problemas
relacionados con la implementacin, los cuales se detallan a continuacin:
Plataformas de desarrollo: En las primeras fases del proyecto se comenz
la implementacin de cdigo en la plataforma Microsoft Visual Studio
2008, con la versin de la libreria de OpenCV 1.6. Inicialmente, dado
que an no se haba determinado la extensin del proyecto, se comenz
la implementacin de una interfaz de usuario, como la presentada en
[16]. La idea era que sta albergara posibles controles relacionados con la
estabilidad del vehculo areo, tales como posicin GPS o aceleracin. Se
descart rpidamente, dado que la idea del proyecto no era la realizacin
de este tipo de interfaces.
Debido a que la mayor parte del cdigo relacionado con el sensor inercial
se estaba desarrollando con otra plataforma de desarrollo, Dev C++, se
opt por migrar todo el cdigo hacia esta alternativa. Si la conguracin
de OpenCV sobre Visual Studio fue relativamente sencilla, en esta pla-
taforma no lo fue tanto. En el Apndice B se propone una conguracin
para esta plataforma.
De nuevo, se produjo un cambio, tanto en la plataforma de desarrollo
como en el sistema operativo. Se migr todo el cdigo a Ubuntu 8.04,
usando como herramienta de compilacin gcc (the GNU Compiler Co-
llection). Congurar la la versin 2.0 de la librera de OpenCV en esta
plataforma fue an ms complejo si cabe, puesto que el autor tena ex-
periencia en programacin en Windows; pero en Linux se tuvieron que
adquirir conocimientos medios y avanzados del sistema para poder con-
gurar con xito esta librera. As, una vez congurada la plataforma
nal de desarrollo, se comenz con la implementacin de la presente
propuesta. En el Apndice B se indica cmo se congurara la librera
de OpenCV para Linux.
6.1. Objeto de referencia tridimensional 112
En OpenCV existe una funcin denominada cvCreateCameraCapture(),
la cual, y pasndole un identicador de dispositivo de captura de ima-
gen, es capaz de devolver un ujo contnuo del cual se pueden extraer
imgenes a una frecuencia dada. Pero al instalar el dispositivo de imagen
utilizado, se comprob que ste no se identicaba en el sistema como de
captura de imgenes, sino como dispositivo de tipo uEye. Se tuvo pues
que acudir al manual de usuario de la cmara [118], e implementar toda
la lgica de inicializacin, conguracin, captura de imagen y naliza-
cin. Esto supuso varias jornadas, puesto que la documentacin de la
cmara era compleja y extensa.
Existen dos grandes funciones en la librera de programacin del dis-
positivo de imagen para la captura de imgenes a partir del ujo de
imgenes. stas son : is_CaptureVideo (..) y is_FreezeVideo (..). La
principal diferencia entre ambas funciones es que la primera vuelca de
forma contnua a la tasa determinada de fps congurada imgenes en
el buer de la cmara, mientras que la segunda rellena el buer de la
cmara cada vez que es llamada. Al principio se opt por utilizar la
primera de las funciones, puesto que podamos capturar a una tasa de
hasta 40 fps.
Pero surgi un problema; y ste era que en el tiempo en que se haba
extrado una imagen del buer, y se haba procesado para la obtencin
de los parmetros extrnsecos, la siguiente imagen extrada del buer
no era la que en el instante de tiempo inmediatamente anterior se ha-
ba capturado, sino la siguiente a la procesada que haba en el buer.
Esto daba lugar a situaciones en las que era posible que el tablero se
hubiera desplazado, y no lo detectsemos hasta pasados unos segundos.
La documentacin del manual de la cmara indica que el buer se va
actualizando continuamente; situacin que se ha comprobado que no es
del todo cierta.
6.2. Objeto de referencia plano 113
6.2. Objeto de referencia plano
En esta propuesta se intenta implementar una nueva versin del cdigo,
de forma que ya no se considera ni la geometra del objeto de referencia ni
el modelo de la cmara. Un propuesta similar a la presente se encuentra en
[39] y [3]. En este caso, se considera al objeto de inters plano, y el esquema
de control visual sigue siendo el denominado control visual basado en posicin
(PBVS Position Based Visual Servo). El cdigo es completamente distinto al
anterior, aunque la idea que subyace es la misma: se trata de extraer a partir
de la informacin visual la rotacin y traslacin del objeto respecto del sistema
de coordenadas de la cmara.
Para la localizacin del objeto se ha implementado una bsqueda de carac-
tersticas, o corners, en una regin del espacio delimitada por una mscara, y
para el seguimiento se ha hecho uso de las funciones que proporciona OpenCV
para el tracking de puntos: algoritmo de Lucas-Kanade, o ujo ptico. Dentro
de esta misma seccin se plantea tambin otro mtodo para la localizacin y
seguimiento del objeto de inters: algoritmos de SURF
6.2
y SIFT
6.3
. Se propor-
cionar una base terica de ambos mtodos y los resultados experimentales
obtenidos.
Ya no se calculan los parmetros extrnsecos del sistema tal cual. En este
modelo no existen plano de la imagen, y plano del objeto. Tan solo existe el
plano de la imagen, y el conjunto de puntos extrados del mismo es lo que
se intenta seguir en una secuencia de imgenes. Se plantea una relacin de
transformacin proyectiva, en la que se toma la primera imagen del objeto
(imagen de referencia) y se calcula en cada toma la matriz de homografa
con la nueva imagen del objeto capturada, de forma que en cada instante de
tiempo tenemos una matriz H, cuyos coecientes transformaran la posicin
actual del objeto a la posicin de referencia.
Una vez calculada la matriz de homografa entre cada par de imgenes
(referencia y actual), se plantean dos tcnicas para la extraccin de la rota-
cin y traslacin: mediante descomposicin analtica y numrica. En [30] se
propone otro tipo de descomposicin, se reere al lector para ms informacin
a consultar dicho artculo. En el presente proyecto se aportan en el Apndice
A las implementaciones de ambos mtodos.
La obtencin de la matriz de rotacin y el vector de traslacin respecto de
6.2
SURF: Speeded Up Robust Features.
6.3
Scale-Invariant Feature Transform.
6.2. Objeto de referencia plano 114
la primera propuesta es tambin distinta, e incluye adems un problema: el
vector de traslacin no viene dado en unidades mtricas como en la primera
propuesta, sino que viene escalado y determinado por un factor descono-
cido. En la literatura existen varios artculos en los que no es necesario la
determinacin de dicho factor; mientras que en otras propuestas se determina
que es sencillo de extraer. Ms adelante, en la seccin 6.2.2.5 se expondrn
todos estos aspectos. As pues, y como visin general, se puede proporcionar
un algoritmo genrico que englobe a toda la lgica relacionada con la consi-
deracin plana del objeto. Este algoritmo viene dado en Algoritmo 6.3.
En la bibliografa se pueden encontrar muchos ttulos en los cuales se usa
la matriz de homografa para el control visual basado en imagen (IBVS). stos
son, entre otros: [27][62][63][64] y [66]. Existen otras propuestas distintas tam-
bin basadas en IBVS, como la presentada en [17], en la cual, usan momentos
de primer orden de imgenes esfricas para el control visual.
Otra alternativa no considerada en la implementacin, es, tal y como se
detalla en la Seccin 4.2., en lugar de representar al objeto de inters como un
conjunto de puntos, representarlo como una gura geomtrica, un rectngulo,
por ejemplo. En [27] se muestra esta tcnica para el clculo de la matriz de
homografa entre vistas, y un ejemplo de esta representacin es la mostrada
en la Figura 6.16.
Figura 6.16: Representacin del objeto mediante formas geomtricas bsicas
para el clculo de la homografa.
A continuacin se expone de forma terica en qu consiste la matriz de
homografa utilizada en esta segunda propuesta, y posteriormente se detallan
el conjunto de mtodos implementados.
6.2. Objeto de referencia plano 115
Algorithm 6.3 Algoritmo de extraccin de informacin visual para Control
Visual 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 escena
imagenActual := CapturaImagen(camara)
// Se localizan los puntos del objeto en cada imagen
puntosObjetoActual := extraePuntosObjeto(imagenActual)
matrizHomografia :=
calculaHomografia(puntosObjetoReferencia,
puntosObjetoActual)
[Rotacion,traslacion]:=
DescomposicionHomografia(matrizHomografia)
// Cualquier operacin con la matriz de homografia
TransformacionPerspectiva(imagenActual,matrizHomografia,...)
fin mientras
LiberaRecursosMemoria(..)
LiberaCamara(camara)
Fin Algoritmo
6.2. Objeto de referencia plano 116
6.2.1. Matriz de homografa
6.2.1.1. Denicin
Sea P

el vector de 3x1 que contiene a las coordenadas homogneas de un


punto en la imagen de referencia (Figura 6.17), expresado en un sistema {C

},
y P, expresado en {C}, el vector que contiene las coordenadas homogneas de
un punto en la imagen actual. Se verica que:
P =
C
T
C
P

= RP

+t
Si llamamos d

a la distancia entre el plano de la cmara y el plano de


la imagen en la imagen de referencia, puede vericarse que : n
T
P

= d

. Es
decir,
n
T
P

= 1. Se tiene pues la siguiente relacin:


P = RP

+t
n
T
P

= (R+t
n
T
d

)P

Figura 6.17: Frame actual y deseado del sistema.


Si expresamos las coordenadas de los puntos P

y P como coordenadas
proyectivas dividiendo por su respectiva tercera coordenada, se tiene que:
m =
P
Z
, m

=
P

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 posicin de referencia respecto
del sistema de coordenadas de la cmara, y m = (u, v, 1) es el vector que
contiene las coordenadas proyectivas normalizadas de la posicin actual del
mismo punto.
Se verica que:
mZ = (R+ t
n
T
d

)m

H
m = (R+ t
n
T
d
)m

, siendo
H
=
Z
Z

En conclusin, podemos escribir:

H
m = Hm

donde H es la matriz de homografa en el espacio Eucldeo. Como se puede


observar, se establece una relacin multiplicativa entre los puntos tridimen-
sionales (expresados en coordenadas proyectivas) de un frame con el deseado.
En el espacio de la imagen, tambin se puede establecer una relacin similar
entre los puntos p y p

, de forma:

G
p = Gp

Esta matriz G es la que se puede estimar a partir de la correspondencia


entre un conjunto de puntos para una secuencia de imgenes. Una vez ob-
tenida, la matriz H puede ser deducida teniendo en cuenta que p = Km y
p

= Km

, siendo K la matriz de parmetros intrnsecos de la cmara, de


forma que:

G
Km = GKm


G
m = K
1
GKm

por lo que la matriz H se dene como:


H = K
1
GK
6.2. Objeto de referencia plano 118
En resumen, a partir de la matriz G y conociendo K se puede obtener la
matriz H. A partir de sta, se podr realizar una descomposicin para obtener
los elementos R, t y n. A ste ltimo paso se le denomina reconstruccin
eucldea a partir de la matriz de homografa H.
6.2. Objeto de referencia plano 119
6.2.1.2. Descomposicin de la matriz de homografa en valores sin-
gulares
Propuesto por Faugeras, en [123] se detalla el mtodo seguido para la
implementacin en el presente proyecto. Si se realiza una descomposicin de
valores singulares de la matriz de homografa:
H = UV
T
se obtienen las matrices ortogonales U y V y la matriz diagonal , la
cual contiene los valores singulares de la matriz H. Se puede considerar esta
matriz diagonal como una matriz de homografa tal cual, y aplicar la relacin
siguiente:
= R

+t

n
T

El clculo anterior es simple cuando la matriz a ser descompuesta es diago-


nal. Realizando clculos sobre la anterior ecuacin y planteando un sistema de
ecuaciones lineal (8 grados de libertad), se pueden obtener hasta 8 soluciones
diferentes para la tripleta {R

, t

, n

}.
As pues, asumiendo que la descomposicin de la matriz diagonal se ha
calculado, para calcular la descomposicin nal de los elementos, es necesario
recurrir a las siguientes expresiones:
R = UR

V
T
t = Ut

n = Vn

Para garantizar que la solucin seleccionada es la correcta, es necesario


aplicar un conjunto de restricciones (mostradas a continuacin), que son ge-
nricas a cualquier tcnica de descomposicin.
6.2. Objeto de referencia plano 120
Restricciones
Una de ellas consiste en que en ambas imgenes, el origen de cada sis-
tema de coordenadas debe estar en el mismo lado del objeto plano (Figura
6.18). Esto genera una restriccin tal que:
1 +n
T
R
T
t > 0
Figura 6.18: Representacin grca de la primera restriccin.
Tras aplicar esta restriccin, de ocho posibles soluciones se ha pasado a un
total de cuatro. La segunda restriccin consiste en que para todos los puntos de
referencia posibles, todos deben estar situados enfrente de la cmara (Figura
6.19). Expresado en la actual notacin:
m
T
(Rn) > 0
Donde mson las coordenadas de los puntos de referencia. Tras esta segunda
restriccin, se consigue reducir el nmero de soluciones posibles a dos.
6.2. Objeto de referencia plano 121
Figura 6.19: Representacin grca de la segunda restriccin.
6.2. Objeto de referencia plano 122
6.2.1.3. Descomposicin analtica
En [123] se proponen dos mtodos para este apartado: calculando en primer
lugar el vector normal, o calculando en primer lugar el vector de traslacin.
Dado que es el primero de ellos del cual se ha generado una implementacin
compatible para OpenCV, es el que se describe a continuacin. Se reere al
lector a consultar [123] para ms informacin.
Se pueden obtener diferentes formas para las expresiones analticas intro-
duciendo una matriz simtrica, S, obtenida a partir de la matriz de homografa
H como:
S = H
T
HI =
_

_
s
11
s
12
s
13
s
21
s
22
s
23
s
31
s
32
s
33
_

_
Se representa como M
s
ij
, i, i = 1.,3, las expresiones Menores de la matriz
S. Por ejemplo:
Ms
11
= |
s
22
s
23
s
23
s
33
|= s
2
23
s
22
s
33
0
En general, existen tres alternativas diferentes para obtener las expresiones
de los vectores normales n
e
(y a partir de ste t
e
y R
e
) a partir de la des-
composicin de la matriz de homografa de los componentes de S. As pues,
se escribir como:
n
e
(s
ii
) =
n

e
(s
ii
)
n

e
(s
ii
)
; e = {a, b}, i = {1, 2, 3}
Donde n
e
(s
ii
) signica n
e
desarrollado usando s
ii
. As, los tres casos posi-
bles son los siguientes:
n

a
(s
11
) =
_

_
s
11
s
12
+

Ms
33
s
13
+
23

Ms
22
_

_ ; n

b
(s
11
) =
_

_
s
11
s
12
+

Ms
33
s
13
+
23

Ms
22
_

_ ; (6.1)
n

a
(s
22
) =
_

_
s
12
+

Ms
33
s
22
s
23

13

Ms
11
_

_ ; n

b
(s
22
) =
_

_
s
12

Ms
33
s
22
s
23
+
13

Ms
11
_

_ (6.2)
n

a
(s
33
) =
_

_
s
13
+
12

Ms
22
s
23
+

Ms
11
s
33
_

_ ; n

b
(s
33
) =
_

_
s
13

12

Ms
22
s
23

Ms
11
s
33
_

_ (6.3)
6.2. Objeto de referencia plano 123
donde
ij
= sign(Ms
ij
).
Todas estas frmulas devuelven el mismo resultado. Sin embargo, no todas
ellas pueden ser aplicadas en cada caso, al igual que el clculo de n
e
(s
ii
), el
cual implica una divisin por s
ii
. Esto signica que dicha frmula no puede ser
aplicada cuando la divisin es entre cero (esto ocurre cuando la componente
i-sima de n es nula).
El procedimiento correcto consiste en calcular n
a
y n
b
usando la alternati-
va de entre las tres correspondencias establecidas con el mayor valor absoluto
para s
ii
. sta ser la opcin mejor condicionada. El nico caso a tener en cuan-
ta es cuando solamente tenemos rotacin pura; justamente cuando la matriz
H es la matriz de rotacin. En este caso, todos los componentes de la matriz
S sern nulos. ste ser pues el caso base, en el que no es necesario aplicar
ninguna frmula.
Cabe destacar que las cuatro soluciones obtenidas con estas frmulas son
todas las mismas (esto es, {n
a
, n
a
, n
b
, n
b
}), pero no siempre son devueltas
en el mismo orden; esto signica que, por ejemplo, n
a
(s
11
) se pudiera co-
rresponder con cualquiera de las 4 soluciones anteriores, incluso en lugar de
corresponderse con n
a
(s
11
).
Las expresiones para el vector de traslacin en el marco de referencia,
t

e
= R
T
e
t
e
, pueden obtenerse a partir de las expresiones para los vectores
normales:
t

e
(s
11
) =
n

e
(s
11
)
2s
11
_

_
s
11
s
12

Ms
33
s
13

23

Ms
22
_

_
t
e

2
2 n

e
(s
11
)
_

_
s
11
s
12

Ms
33
s
13

23

Ms
22
_

_
t

e
(s
22
) =
n

e
(s
22
)
2s
22
_

_
s
12

Ms
33
s
22
s
23

13

Ms
11
_

_
t
e

2
2 n

e
(s
22
)
_

_
s
12

Ms
33
s
22
s
23

13

Ms
11
_

_
t

e
(s
33
) =
n

e
(s
33
)
2s
33
_

_
s
13

12

Ms
22
s
23

Ms
11
s
33
_

_
t
e

2
2 n

e
(s
33
)
_

_
s
13

12

Ms
22
s
23

Ms
11
s
33
_

_
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
puede
tambin en una forma ms compacta de n
a
y n
b
:
6.2. Objeto de referencia plano 124
t

a
(s
ii
) =
t
e

2
[
s
ii
n
b
(s
ii
) t
e
n
a
(s
ii
)] (6.4)
t

b
(s
ii
) =
t
e

2
[
s
ii
n
a
(s
ii
) t
e
n
b
(s
ii
)] (6.5)
siendo:

s
ii
= sign(s
ii
)

2
= 2 + trace(S) +
t
e

2
= 2 + trace(S)
Donde puede ser obtenida a partir de:
=
_
2[(1 + trace(S))
2
+ 1 trace(S
2
)] = 2
_
1 + trace(S) Ms
11
Ms
22
Ms
33
La expresin para la matriz de rotacin quedara tal que:
R
e
= H(I
2

e
n
T
e
)
y el vector de traslacin:
t
e
= R
e
t

e
ste es el mtodo implementado en la clase HomographyDecomposition.hpp,
junto con el mtodo de descomposicin de Faugeras explicado en el apartado
anterior. Se reere al lector a consultar la referencia [30] de la bibliografa para
ms informacin.
6.2. Objeto de referencia plano 125
6.2.1.4. Clculo de la matriz de homografa
Una vez determinados los conjuntos de puntos que representan al objeto
entre la imagen inicial y la actual, el siguiente paso consiste en calcular la
matriz de homografa del sistema. En la implementacin se han usado dos
mtodos para la obtencin de dicha matriz; stos son el mtodo RANSAC y
el mtodo LMEDS. En OpenCV existe una funcin para esta tarea, denomi-
nada cvFindHomography(). Una descripcin ms detallada de esta funcin se
presenta a continuacin:
void cvFindHomography(
const CvMat* srcPoints,
const CvMat* dstPoints,
CvMat* H,
int method=0,
double ransacReprojThreshold=0,
CvMat* status=NULL)
Descripcin del prototipo de la funcin:
srcPoints,dstPoints :
Son, respectivamente, el conjunto de puntos del objeto de la imagen
inicial y el conjunto de puntos del objeto de la imagen actual. Cabe
resaltar que en los experimentos se demostr que los puntos deben estar
en orden; es decir, que la posicin i-sima del array srcPoints contenga
al punto i-simo, siendo el mismo encontrado en la posicin i-sima del
array dstPoints.
H :
Matriz de homografa de orden 3 devuelta por el mtodo.
method :
0 : Mtodo comn usando todos los puntos. Sin ningn tipo de
optimizacin.
CV_RANSAC : Clculo de la matriz de homografa usando el m-
todo RANSAC.
CV_LMEDS : Clculo de la matriz de homografa usando el m-
todo LMedS.
6.2. Objeto de referencia plano 126
ransacReprojThreshold :
Solo vlido si el mtodo usado es RANSAC. Indica el mximo error de
reproyeccin permitido para considerar a un punto como vlido.
status :
No usado en esta implementacin.
A continuacin se exponen de forma breve las diferencias entre los mtodos
de RANSAC y LMeds.
Mtodo RANSAC :
El mtodo RANSAC (RANdom SAmple Consensus) es un mtodo de
emparejamiento robusto que da como resultado la solucin ms votada
de entre unas cuantas, calculadas a partir de conjuntos mnimos obte-
nidos aleatoriamente. Para calcular una homografa en tres dimensiones
se necesitan un mnimo de cuatro emparejamientos. La idea del mtodo
RANSAC consiste en seleccionar un nmero de subconjuntos de cuatro
emparejamientos elegidos aleatoriamente dentro del total, que garanti-
ce que, con una probabilidad superior al 99 %, al menos uno de dichos
subconjuntos 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-
mografa. Esta matriz se valora mediante un sistema de votaciones. Para
ello, se ja un umbral que separe los emparejamientos buenos de los ma-
los para esta homografa. Un emparejamiento se considerar bueno si y
slo si la homografa lleva una caracterstica a la otra con un error menor
que el umbral considerado. Se contabiliza el nmero de emparejamientos
buenos (votos favorables), quedndonos al nal con la homografa que
ms votos haya tenido.
Una vez que se ha elegido la homografa ms votada como solucin, se
consideran emparejamientos buenos aquellos que hayan votado a dicha
solucin, mientras que los falsos emparejamientos sern los que no la ha-
yan votado. Para reducir el coste computacional, en el momento en que
una homografa recibe ms del 95 % de los votos, esta se considera solu-
cin denitiva. De esta forma en conjuntos con un porcentaje pequeo
de falsos emparejamientos el clculo de la solucin es casi inmediato.
6.2. Objeto de referencia plano 127
Mtodo LMedS :
LMedS proviene de las palabras inglesas Least Median of Squares (mni-
mo error de la mediana). La idea de este mtodo probabilstico es similar
a la que emplea RANSAC: se seleccionan aleatoriamente un nmero de
subconjuntos y se calcula la matriz de homografa para cada uno de ellos.
En este caso, en lugar de realizar votaciones, lo que se hace es calcular
los residuos que genera el conjunto total de emparejamientos para cada
homografa. De todas las soluciones obtenidas el mtodo escoge aquella
que minimice la mediana de los cuadrados de los residuos. La ventaja
de este mtodo frente a RANSAC es que no necesita jar umbrales.
Sin embargo, es ms costoso computacionalmente. Partiendo de la hip-
tesis de que los datos se ajustan a una distribucin normal, para eliminar
los falsos emparejamientos el mtodo LMedS calcula un umbral en fun-
cin del valor de la mnima mediana obtenida, y elimina todos aquellos
emparejamientos cuyo residuo sea superior a dos veces el cuadrado de
dicho valor:
r
2
i
(2
2
)
Durante los experimentos el mtodo de RANSAC fue el ms robusto a falsos
emparejamientos, en el sentido de que tiene probabilidades ms altas de gene-
rar soluciones exactas que el emparejador bsico (si no se establece ninguna
condicin en la funcin cvFindHomography(..)) o el emparejamiento robusto
utilizando LMedS.
6.2. Objeto de referencia plano 128
6.2.2. GoodFeaturesToTrack() y ujo ptico para el se-
guimiento del objeto de referencia
Como se coment con anterioridad, el algoritmo correspondiente a esta
segunda alternativa para el control visual es completamente distinto. En este
caso, el objeto de referencia puede ser cualquier objeto plano, salvo con la con-
dicin de que debe albergar gran cantidad de puntos caractersticos, o corners.
Se aplica un mtodo inicial de deteccin de caractersticas, y posteriormente
mediante el algoritmo adaptativo de Lucas-Kanade de ujo ptico se intentan
seguir los puntos detectados en la imagen inicial en la secuencia de imgenes
posteriores.
Una vez localizados al menos 4 puntos del mismo objeto entre dos imge-
nes (el original, o de referencia, y el actual), se procede a calcular la matriz de
homografa entre ambos conjuntos de puntos; si los puntos casan, la matriz
de homografa tendr sentido. Si de lo contrario, los 4 puntos no albergan
ningn tipo de relacin geomtrica, la matriz resultante calculada no tendr
sentido. En este aspecto, se han realizado varias pruebas en el laboratorio.
Posteriormente, si la matriz de homografa resultante es correcta, se pro-
cede a la descomposicin de la misma para obtener la matriz de rotacin y
el vector de traslacin, los cuales indican cual es el movimiento inverso que
debera hacer la cmara para que los puntos fueran vistos en las posiciones
dadas en la imagen de referencia. As pues, el algoritmo detallado que recoge
todos los pasos seguidos en esta implementacin, es el propuesto en Algoritmo
6.4.
Este modelo es relativamente ms complejo que el anterior, puesto que se
necesita de ms funciones para localizar y seguir al objeto de referencia. A
continuacin se muestran en profundidad los detalles de la implementacin.
6.2.2.1. Localizacin del objeto de referencia
Dado que en este algoritmo no se dispone de una funcin de deteccin
automtica del objeto de referencia, esto supone tanto una ventaja como una
desventaja. La ventaja consiste en que ahora se puede utilizar cualquier tipo
de objeto, sea plano o no, para la localizacin de puntos dentro de su contorno
y su posterior seguimiento. El problema, obvio, es que hay que implementar
6.2. Objeto de referencia plano 129
Algorithm 6.4 Algoritmo de extraccin de informacin visual para Control
Visual 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 operacin con la matriz de homografia
TransformacionPerspectiva(imagenActual,
matrizHomografia,...)
fin si
Intercambia(puntosObjetoActual,
puntosPosicionEstimada)
Intercambia(imagenActual,
imagenPrevia)
fin bucle
LiberaRecursosMemoria(..)
LiberaCamara(camara)
Fin Algoritmo
6.2. Objeto de referencia plano 130
dicho mtodo.
Consultando [120] y [111], una de las alternativas con ms xito consiste
en utilizar la funcin de OpenCV denominada cvGoodFeaturesToTrack(), la
cual devuelve un conjunto de caractersticas de una escena, que son buenas
candidatas para el seguimiento en una secuencia de imgenes.
Tras realizar varias pruebas iniciales, nalmente se opt por el uso de la
funcin cvGoodFeaturesToTrack(), la cual se detalla a continuacin:
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 caractersticos, o
corners.
eigImage,tempImage :
Son variables necesarias para los clculos de la propia funcin. En un
principio, se pens que los puntos devueltos por esta funcin venan
indexados en funcin de su correspondiente autovalor, devuelto en eigI-
mage. Pero se corrobor que al nalizar la funcin la variable eigImage
no contena ningn tipo de informacin, puesto que al salir de la funcin
la memoria reservada para esta variable es liberada.
corners :
Estructura de tipo array en OpenCV, la cual contiene las coordenadas
de los puntos caractersticos obtenidos en la imagen. Estas coordenadas
son respecto al plano de la imagen.
6.2. Objeto de referencia plano 131
corner count :
Puntero a entero que indica el nmero de corners encontrados en la
imagen. Este parmetro puede ser tanto de entrada como de salida, en
el sentido de que si se inicializa a algn valor, la funcin devolver tan
solo los n mejores corners , donde n es el valor de inicializacin de dicha
varaible. En caso contrario, busca tantos corners como posiciones tenga
el array corners de entrada.
quality_level :
Indica el valor mnimo aceptable para un autovalor para que un de-
terminado punto sea aceptado como corner. El valor actual para este
parmetro es el producto entre quality_level y el menor de los mayores
autovalores encontrados en la imagen. As, este valor no debe exceder
de 1. Un valor tpico suele estar comprendido entre 0.10 y 0.01.
min_distance :
Se indica la distancia mnima entre dos puntos. Expresada en pxeles.
Dependera pues de cada tipo de objeto.
mask :
Se pueden buscar los puntos caractersticos en toda la regin de la ima-
gen, o bien en un rea determinada. En esta propuesta se ha diseado
una funcin para la seleccin manual del objeto (Figura 6.20 y Figura
6.21); mediante 4 puntos, se selecciona la regin de la imagen donde est
el objeto, y donde se desea buscar las caractersticas que describen al
mismo. sta funcin se encuentra denida en el conjunto de clases imple-
mentadas, ms concretamente en el chero seleccion.hpp. Una mscara
no es ms que una regin lgica del espacio; aquellos puntos o coorde-
nadas que estn a un valor positivo sern considerados, mientras que las
que tengan un valor nulo, no lo sern.
block_size :
Regin del espacio alrededor de cada pxel que es considerada para el
clculo de las derivadas de segundo orden. Normalmente suele tener un
valor comprendido entre 3 y 5 pxeles alrededor del punto.
use_harris,k :
Si use_harris es distinto de cero, entonces para la deteccin de los puntos
se usa la tcnica de Harris, en lugar de la de Shi y Tomasi. El valor k
es el coeciente de Harris (ver Seccin 4.4.1), cuyo valor por defecto en
este caso suele ser de 0.4.
6.2. Objeto de referencia plano 132
La implementacin de esta funcin sigue la denicin de Shi y Tomasi (Sec-
cin 4.5.2). Bsicamente, en esta alternativa se calculan hasta las derivadas
segundas (usando operadores de Sobel) que son necesarias para la obtencin
de los autovalores de la matriz de autocorrelacin alrededor de una pequea
regin alrededor de cada punto.
Figura 6.20: Seleccin manual del objeto.
Figura 6.21: Obtencin de la mscara de seleccin del objeto.
Donde los cambios sean ms bruscos, ser una buena zona en la que situar
un punto caracterstico. En contraposicin con el criterio de Harris (Seccin
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 resultados
con la propuesta de Shi y Tomasi que con el mtodo de Harris (por las consi-
deraciones expuestas en [120]).
En la implementacin de la clase CSensorCamara2.hpp, la cual alberga la
propuesta presentada en esta seccin, la funcin cvGoodFeaturesToTrack() se
aplica en dos ocasiones. La primera de ellas es para ajustar el nmero mximo
de puntos que se considerarn para representar al objeto. As, se suele ini-
cializar el array para contener dichos puntos a un valor de 150, para despus
ajustarlo a las necesidades reales de clculo. As se evita la reserva excesiva
de memoria.
En segundo lugar, se aplica esta funcin para la extraccin de puntos que
sern considerados en las siguientes imgenes. Una primera aproximacin en
la estimacin del valor de los coecientes de dicha funcin es la presentada en
el cdigo propuesto en el Apndice A. Una vez que se ha realizado una llama-
da a esta funcin, el array corners contendr las coordenadas de los puntos
del objeto. Al igual que en la primera propuesta de implementacin, aplica-
mos la funcin cvFindCornerSubPix() para obtener una mejor precisin de la
localizacin de los puntos encontrados.
Tras localizar el objeto de inters en la escena, y ser representado median-
te el conjunto de puntos devueltos por la funcin cvGoodFeaturesToTrack(),
el siguiente paso es precisamente realizar el tracking de dichos puntos, es
decir, el seguimiento de los mismos entre diferentes imgenes de la escena que
se comenta en el siguiente apartado.
Como ltimo detalle de esta seccin es que en la implementacin de esta
propuesta se mantienen la estructuras de memoria para la matriz intrnseca y
los parmetros de distorsin. Aunque no son necesarios en este modelo, bien
si lo pueden ser para la correccin geomtrica de la imagen. En la Figura 6.22
se puede observar cmo la linea superior del tablero se observa curvada en la
imagen; esto es debido a defectos en la lente, que bien pueden ser corregidos
en el cdigo haciendo uso de la funcin cvUndistort2(), la cual corrige geom-
tricamente la imagen haciendo uso de la matriz de calibracin interna y de los
parmetros de distorsin.
Tras varias pruebas iniciales se comprob que si era necesario una correc-
cin geomtrica de la imagen se perdan de media unos 3 fps; por lo que en la
implementacin sta opcin se ha denido de forma opcional, si fuera necesa-
ria.
6.2. Objeto de referencia plano 134
Figura 6.22: Detalle de la distorsin de la lente.
6.2.2.2. Seguimiento de los puntos del objeto de referencia
En una primera aproximacin se pens que la funcin cvGoodFeatures-
ToTrack() devolva los puntos en el mismo orden, entre una secuencia de
imgenes consecutivas. Posteriormente, cuando se comprob que no era de tal
forma, se pens en indexar algn array en el que se relacionara el punto con
su autovalor, de forma que segn el segundo parmetro se pudiera localizar
al mismo punto entre imgenes consecutivas. Pero al intentar acceder a la
estructura de eigImage (es la que contiene los autovalores para los puntos de-
vueltos) se comprob tambin que no era posible, puesto que dicha estructura
de memoria era liberada justo antes de terminar la funcin.
Una de las maneras en la que se pens que los puntos devueltos no se
correspondan entre escenas era que la matriz de homografa resultante no
tena sentido. Se verica que entre dos imgenes distintas, si no ha habido
ningn tipo de rotacin ni de traslacin, la matriz que lleva del mismo punto
expresado en el sistema de referencia al mismo sistema, esto es, la matriz de
homografa, es precisamente la matriz identidad I. Los resultados observados
no se correspondan con esta armacin, por lo que se determin que con la
funcin de localizacin de puntos no era suciente.
Consultando de nuevo la bilbiograa, se decidi por realizar pruebas con
6.2. Objeto de referencia plano 135
la funcin de OpenCV cvCalcOpticalFlowPyrLK(). Esta funcin basa su im-
plementacin en tres suposiciones (Figura 6.23):
Constancia del brillo: Se asume que el brillo de un pxel entre una imagen
y la siguiente no cambia bruscamente (se considera constante) .
Persistencia temporal: El movimiento del punto caracterstico cambia
relativamente poco de una imagen a la siguiente.
Coherencia espacial: Los puntos vecinos al punto caracterstico, perte-
necientes al mismo plano, tienen el mismo movimiento y proyecciones
similares en la secuencia de imgenes consecutivas.
Figura 6.23: Restricciones de un punto en Lucas Kanade.
El algoritmo detallado a continuacin realiza un seguimiento del punto en una
secuencia de imgenes, basndose en las anteriores asunciones y en la deni-
cin del ujo ptico (Seccin 4.3), incluyendo adems un proceso de bsqueda
piramidal (Figura 6.24 y 6.25).
Esta pirmide se corresponde a una secuencia de imgenes resultado de una
reduccin de escala de la imagen inicial por mltiplos de dos. En la Figura
6.24, I
0
ser la imagen inicial y las imgenes I
1
, I
2
e I
3
sern las siguientes
6.2. Objeto de referencia plano 136
Figura 6.24: Representacin piramidal de una imagen.
imgenes de la pirmide. Posteriormente se realiza el clculo del ujo ptico
tras colocar el punto buscando en la posicin en la que se encontr en la
iteracin anterior. Este paso del algoritmo solo funciona si el ujo ptico de
este punto es pequeo, cosa que se puede asegurar gracias a la utilizacin de
la representacin piramidal.
As pues, queda detallar la funcin 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 imgenes en las que se
desean buscar los puntos caractersticos.
6.2. Objeto de referencia plano 137
pyrA,pyrB :
Estructuras de memoria para contener las distintas capas de bsqueda
de la pirmide de bsqueda.
featuresA,featuresB :
El primer array contiene los puntos que se desean seguir, los cuales
son analizados para extraer la caracterstica de su movimiento. El array
featuresB contendr la localizacin estimada de los puntos calculados a
partir del movimiento de los puntos originales.
count :
Nmero de puntos en el array featuresA.
winSize :
Estructura para indicar el tamao en OpenCV de la ventana de bs-
queda alrededor del pxel que contiene la caracterstica. En el presente
trabajo se ha propuesto una ventana de tamao 5 pxeles.
level :
Entero para indicar la profundidad de la bsqueda piramidal. Si se esta-
blece a 0, se realiza el proceso de bsqueda en un solo nivel (no habra
bsqueda 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 funcin, si la posicin i-sima
contiene un 1, signica que el punto i-simo del array featuresA ha sido
localizado. En caso contrario, el valor en esta posicin ser de 0.
track_error :
Si est activo, es un array de nmeros en formato real, que indica la
diferencia entre la localizacin del punto en la primera toma y la loca-
lizacin estimada del punto en la imagen actual. Es utilizado en una
tcnica de optimizacin propuesta en el siguiente apartado.
criteria :
Se establecen las condiciones de parada del algoritmo. En este caso, hasta
un mximo de 10 iteraciones o una precisin inferior al 10 %. Aunque an
es necesario la realizacin de varias pruebas para determinar su posible
valor denitivo.
6.2. Objeto de referencia plano 138
ags : Las usadas en esta implementacin son (en conjuncin con el operador
booleano &):
CV_LKFLOW_PYR_A_READY: Indica que la pirmide de bs-
queda para la imagen de referencia es calculada antes de la llamada
y almacenada en pyrA.
CV_LKFLOW_INITIAL_GUESSES: Indica que el array featu-
resB contiene una estimacin inicial de la localizacin de los puntos
antes de realizar la llamada a la funcin.
Al igual que tras la llamada de cvGoodFeaturesToTrack(), tras la ejecucin de
esta funcin se realiza tambin un proceso de renamiento en la precisin de
las coordenadas con la funcin cvFindCornerSubPix().
Figura 6.25: Bsqueda piramidal con ujo ptico.
Al tiempo que se presenta este proyecto, an se estn realizando diferen-
tes conguraciones en el laboratorio para obtener de forma experimental los
parmetros que optimicen el funcionamiento de esta funcin. Se prueba con
diversos objetos de inters y se visualizan los resultados obtenidos.
Un ejemplo de ello es el mostrado en la Figura 6.26, en la que se puede
observar la estimacin de la localizacin de los puntos interiores al tablero
de ajedrez con una tasa de aproximadamente 15 veces por segundo (15 fps,
en total), incluyendo la tarea de descomposicin de la matriz de homografa H.
6.2. Objeto de referencia plano 139
Figura 6.26: Estimacin de los puntos usando la funcin cvCalcOptical-
FlowPyrLK().
Optimizacin del mtodo propuesto
El principal problema del mtodo anterior consiste en que cuando algn
objeto se cruza entre la cmara y el objeto de referencia, los puntos caracte-
rsticos del mismo se dispersan (Figura 6.27). La mismo sucede si se mueve el
objeto con cierta rapidez.
Figura 6.27: Error en la estimacin 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 de
imgenes se vayan descartando puntos hasta sobrepasar el mnimo necesario
para calcular la matriz de homografa (4 puntos).
As, se plantea la necesidad de aadir algn mecanismo para evitar este
tipo se situaciones no deseables. Existe una propuesta, an no implementada,
que consiste en aplicar tcnicas de template matching cuando el mtodo ante-
rior falla para localizar de nuevo el objeto.
6.2. Objeto de referencia plano 140
La idea se expone en los siguientes pasos:
Paso 1 :
Para la localizacin inicial del objeto se utiliza la funcin cvGoodFeatu-
resToTrack(), con seleccin manual para la mscara.
Paso 2 :
Para el seguimiento se hace uso de la funcin cvCalcOpticalFlowPyrLK(),
calculando en cada iteracin la media del desplazamiento de los pxeles,
obtenido a partir de track_error. Se calcula el mnimo y mximo valor
en las coordenadas tanto del eje X como del eje Y. stas cuatro coorde-
nadas determinarn una regin del espacio en la que se est desplazando
el objeto.
Paso 3 :
Si en algn momento los puntos estimados no verican que se desplazan
en media igual que el conjunto (en principio el objeto no se deforma geo-
mtricamente), estos son eliminados, para garantizar que no pertenecen
al objeto. Este paso es an matizable, en el sentido de que otra restric-
cin para usar la media del conjunto es que no haya alguna deformacin
por efecto de la perspectiva.
Paso 4 :
Si se alcanza el mnimo de puntos necesarios para calcular de forma pti-
ma la matriz de homografa (segn lo indicado anteriormente, al menos
4), se busca de nuevo al objeto en la regin delimitada por los puntos del
paso 2. La forma de bsqueda en este caso es por fuerza bruta siguiendo
la tcnica de template matching denida en 4.5.2. En este caso, el patrn
a buscar se corresponde con la seccin de la imagen delimitada por los
puntos del paso 2, y la imagen donde buscar al objeto es la imagen actual.
El valor devuelto se corresponder con el centro de un rectngulo que
contendr al objeto y a algunos puntos externos. Se extraen las caracte-
rsticas de la regin devuelta, y se vuelve al paso 2. Los puntos externos
devueltos en este paso se irn descartando sucesivamente tras varias
iteraciones del paso 2.
6.2. Objeto de referencia plano 141
Figura 6.28: Ejemplo de la tcnica template matching. Se desplaza la plantilla
de referencia hasta que el emparejamiento sea ptimo.
6.2. Objeto de referencia plano 142
6.2.2.3. Ejemplo de aplicacin. Reconstruccin proyectiva
Un ejemplo muy interesante de la obtencin de la matriz de homografa es
la reconstruccin 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 imagen
actual, y la matriz de transformacin (en este caso la matriz de homografa)
que lleva puntos de un sistema al otro, tendremos una reconstruccin parcial
de la escena original, siendo precisamente reconstruido el objeto de referencia.
En la Figura 6.29 se muestra cmo a pesar de que el objeto se encuentra en
movimiento (Derecha), al aplicar la matriz de homografa, la transformacin
parcial (Izq) reconstruye el objeto a partir de su posicin inicial, que precisa-
mente era cuando el tablero estaba en una posicin casi horizontal respecto
al punto de vista de la cmara. Se puede observa cmo en la imagen de la
izquierda todo lo que no es el objeto de referencia est rotado respecto del
punto de vista de la cmara. La funcin de OpenCV utilizada para realizar
esta transformacin se denomina cvWarpPerspective() [120].
Figura 6.29: Reconstruccin parcial usando la matriz de homografa.
6.2. Objeto de referencia plano 143
6.2.2.4. Clculo del factor de indeterminacin
Tal y como se ha expresado en la seccin 6.2.1.1, a partir de la matriz de
homografa H obtenemos una reconstruccin parcial, de la cual es necesario
estimar algunos parmetros ms para poder obtener la reconstruccin com-
pleta. Partiendo de la expresin:

h
m = Hm

donde H estar relacionada con rotacin y traslacin de forma que:


H = (R+
t
d

n
T
) (6.6)
lo que se desea en esta propuesta, tal y como se consigui en la primera
implementacin, es obtener el factor de escala para determinar de forma ms o
menos precisa cul ha sido el desplazamiento del objeto respecto de la posicin
inicial. Una de las vas por las cuales es posible la obtencin de dicho factor,
es observando que:
det(H) = det(R+t
n
T
d

) = (1 +
tn
T
d

)
Se han realizado varias pruebas, situando la cmara perpendicularmente
al objeto de referencia (tablero de ajedrez). En estas condiciones se tiene que
el vector normal del sistema de referencia es de la forma n = (0, 0, 1)
T
, y se
cumple que las dos primeras columnas de la matriz de homografa son pro-
porcionales a las dos primeras columnas de la matriz de rotacin. Otra forma
de clculo es la siguiente.
En primer lugar, se calcula la descomposicin en valores singulares de la
matriz de homografa H:
svd(H) = {
1
,
2
,
3
},
1

2

3
En general, existen dos formas para la normalizacin de la matriz de ho-
mografa. La primera de ellas, es forzando a que el det(H) = 1. La segunda,
6.2. Objeto de referencia plano 144
ms interesante para nuestro caso, es garantizando que
2
= 1. En este caso,
el factor de la frmula 6.6 debe ser tambin unitario:
H = (R+t
n
T
d

)
En este caso, se puede comprobar que:
t
d


1
+
3
Es ms, incluso aunque no se haya normalizado H, puede vericarse que
la nica diferencia respecto a la relacin anterior es que hay que generalizarla
de la forma:
t
d



1
+
3

2
Con este resultado terico se realizarn un conjunto de experimentos si-
milares a los expuestos en la seccin 6.1.4.1.
6.2. Objeto de referencia plano 145
6.2.3. SIFT - Scale Invariant Feature Transform
SIFT es una tcnica precursora de SURF propuesta por David G. Lowe
en 2004 [115]. Esta tcnica tiene una gran aceptacin por la calidad de las
caractersticas que extrae.
Para detectar puntos de inters en primer lugar se transforma la imagen I
de la que se quieren extraer los puntos mediante mscaras G de convolucin
gaussiana a diferentes escalas:
G(x, y, ) =
1
2
2
e
(x
2
+y
2
)
2
2
Posteriormente se calculan las diferencias D entre las distintas imgenes sua-
vizadas, donde es la operacin de convolucin en x e y:
L(x, y, ) = G(x, y, ) I(x, y) (6.7)
A partir de la ecuacin 6.6 se dene:
D(x, y, ) = L(x, y, k) L(x, y, )
Posteriormente, el extractor calcula mximos locales en D(x, y, ) compa-
rando con sus vecinos, tanto en la misma escala como en las escalas anterior
y posterior. En la Figura 6.30 se pueden observar todos los pxeles con los que
se realiza la comparacin.
Figura 6.30: Pxeles con los que se realiza la comparacin del valor de D para
encontrar mximos locales en SIFT.
6.2. Objeto de referencia plano 146
Para todos los puntos detectados se calcula un descriptor especial em-
pleando la magnitud y la orientacin del gradiente. Partiendo de una ventana
de 16x16 pxeles se calculan histogramas de orientacin como los de la parte
derecha de la Figura 6.31. Al nal, para cada punto de inters se obtiene un
descriptor de 128 parmetros de longitud (4x4x8).
Figura 6.31: Histogramas de orientacin SIFT para el clculo del descriptor.
En la imagen se muestra un ejemplo de tamao 2x2 histogramas (derecha)
obtenidos a partir de una ventana de 8x8 (izquierda), el extractor utiliza una
ventana de 16x16, obteniendo 4x4 histogramas de descriptores.
Las primeras pruebas experimentales con este mtodo resultan no ser tan
buenas en cuanto a coste computacional. Aunque sea un buen mtodo para la
extraccin robusta de caractersticas, no es vlido para aplicaciones en tiempo
real, y para una imagen media de 752x480, como es nuestro caso, el tiempo
de extraccin de caractersticas es del orden de segundos para cada imagen.
6.2. Objeto de referencia plano 147
6.2.4. SURF - Speeded Up Robust Features
Propuesta recientemente por Herbert Bay [111], SURF es una tcnica para
la extraccin de puntos en una imagen, cuya principal ventaja es su robustez
ante cambios en la rotacin o de escala. Esto hace que el posterior empare-
jamiento de caractersticas entre imgenes sea muy robusto. Adems lo hace
con un coste computacional inferior al de otros extractores de calidad simi-
lares como SIFT [115]. A continuacin se presenta una breve descripcin del
funcionamiento de este mtodo.
6.2.4.1. Puntos de inters
Lo primero que hace el algoritmo es encontrar puntos de inters dentro
de la imagen. La imagen debe estar tomada en escala de grises, sin embargo,
para obtener una mayor precisin numrica normaliza el valor de cada pxel,
transformndolo en un valor real que se encuentre en el intervalo [0,1].
Con la matriz de pxeles ya normalizados, el algoritmo busca mximos
locales del determinante de la matriz Hessiana. Dado un pxel de la imagen
denido por sus coordenadas p = (x, y), la matriz Hessiana del punto p con
un valor de escala se dene como:
H(p, ) =
_
L
xx
L
xy
L
xy
L
yy
_
donde L
xx
, L
xy
y L
yy
representan las derivadas segundas parciales de la
gaussiana G() respecto a las coordenadas de cada pxel p = (x, y), descritas
como:
L
xy
=

2
G(p, )
xy
L
xx
=

2
G(p, )
x
2
L
yy
=

2
G(p, )
y
2
Para que el algoritmo sea ms eciente, en lugar de calcular las segun-
das derivadas, se hace una aproximacin mediante ltros en forma de caja,
6.2. Objeto de referencia plano 148
Figura 6.32: De izquierda a derecha: Las derivadas parciales de segundo orden
de la Gaussiana en la direccin de y, en la direccin de xy y las aproximaciones
realizadas usando ltros de caja (box lters). Las regiones grises son igual a 0.
como los que aparecen en la Figura 6.32. Si se emplean imgenes integrales,
las convoluciones para estos ltros pueden ser calculadas en muy poco tiempo.
Una imagen integral I

es una representacin de la imagen en la que cada


pxel p = (x, y) almacena el valor del sumatorio en x y en y desde el origen
hasta el punto. Este valor viene representado en la siguiente expresin:
I

=

x

y
p(x, y)
6.2.4.2. Caractersticas de los descriptores
Para cada punto extrado en la imagen integral, se calcula un descriptor
de longitud variable que identique de forma unvoca dicho punto. Cuanto
mayor sea la longitud que se emplee para los descriptores, el emparejamiento
ser ms robusto, pero todo el proceso requerir un mayor tiempo de proce-
samiento.
Las tres caractersticas que denen 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 caracterstica es muy interesante, ya que clasica los puntos en dos
clases: brillantes y oscuros.
De esta forma, en el emparejamiento, mirando el signo del determinante
se podran descartar una gran cantidad de puntos sin tener que mirar el
resto de los valores del descriptor.
6.2. Objeto de referencia plano 149
Orientacin del gradiente :
Para cada punto extrado, el extractor dene una regin circular alrede-
dor del mismo y calcula la orientacin dominante del gradiente dentro
de dicha regin.
Sumatorio del gradiente :
Se dene una regin cuadrada alrededor del punto seleccionado del ta-
mao relativo a un factor de escala con el que se detect. Dependiendo
del tamao elegido para el descriptor se subdivide la regin en partes
iguales (4, 9, 16 32) y se calculan 4 valores en cada subregin basados
en los valores del gradiente obtenidos en la correspondiente subregin.
El conjunto de valores obtenido constituye el descriptor del punto.
sta tcnica est an bajo desarrollo en la fecha de entrega del proyecto. Las
primeras pruebas experimentales con cdigos de prueba han dado resultados
relativamente pobres en lo que a velocidad se reere, aunque la ecacia en la
deteccin y seguimiento
6.4
de los puntos es bastante buena.
6.4
No se realiza ninguna tarea de seguimiento; los puntos son recalculados en cada imagen
de la secuencia.
6.3. Otras alternativas para la realimentacin visual 150
6.3. Otras alternativas para la realimentacin
visual
Al comienzo del desarrollo del proyecto se bas la localizacin y segui-
miento del objeto de inters en la tcnica denominada template matching.
Tras numerosas pruebas, nalmente se descart por dos motivos:
Prdida del objeto ante cambios de escala: Si se desplazaba el objeto en
profundidad respecto a la cmara, dado que la plantilla de referencia es
ja, se perda la localizacin del objeto en la imagen.
Prdida del objeto ante rotacin: En funcin de la distancia a la que se
planteara el objeto respecto de la cmara, haba un lmite en la rotacin
(bien de la cmara respecto al objeto o viceversa) en el que se perda de
nuevo la localizacin del objeto.
Adems, dados los anteriores problemas y que el mtodo es de los denomina-
dos de fuerza bruta, se opt nalmente por buscar nuevas alternativas para la
localizacin y seguimiento del objeto. Los mtodos propuestos en el presente
captulo son tanto invariantes en los cambios de escala como en los cambios
de rotacin. Sin embargo, existen alternativas y propuestas en [34],[36] y [60]
en las que se plantean tcnicas aplicadas a template matching para hacerlas
invariantes a los cambios anteriormente mencionados.
Otra posible tcnica que hubiera podido ser implementada es el seguimien-
to del objeto considerando solamente los contornos del mismo, tal y como se
plantea en [43]. En esta propuesta, a partir de la localizacin de los contornos
y del emparejamiento en una secuencia de imgenes, se realiza el clculo de
la matriz de homografa H entre ambas vistas. El resto de pasos es similar a
lo presentado en este captulo.
Captulo 7
Fusin sensorial
Hasta el momento todo lo explicado en los captulos anteriores se corres-
ponde con el conjunto de tcnicas utilizadas para el control basado en visin.
Pero a bordo del quadrotor es necesaria la incorporacin de algn otro tipo
de sensor, principalmente debido a que si hubiera problemas con el sensor p-
tico y no hubiera ninguna medida de seguridad implementada, el vehculo se
precipitara hacia el suelo, con la ms que probable prdida del mismo.
Es por ello que se requiere de una fusin sensorial completa, de manera que
cuando un sensor no aporte toda la informacin necesaria para el control y
estabilizacin del quadrotor, se pueda complementar con alguna otra medida
proveniente de otras fuentes.
7.1. Descripcin del sensor inercial
La descripcin comercial de la IMU utilizada en el presente proyecto es una
MTi-G (Figura 7.1), de Xsens Technologies B.V. Es una unidad de medida
inercial, con un sistema GPS integrado, y con un procesador que mantiene
siempre un sistema de referencia para la navegacin y la altitud. El procesa-
dor interno de bajo consumo ejecuta en tiempo real un Filtro extendido de
Kalman, proporcionando una estimacin de la posicin 3D y estimacin de
velocidad. Dispone, entre otras funcionalidades, de aceleracin 3D calibrada,
brjula y barmetro.
En la Figura 7.2 se muestra un esquema de los distintos componentes
y funcionalidades que posee esta unidad. Posee, entre otras, las siguientes
151
7.1. Descripcin del sensor inercial 152
Figura 7.1: Detalle externo del sensor inercial.
Figura 7.2: Detalle interno del sensor inercial.
caractersticas:
Estimacin en tiempo real de las medidas de posicin/velocidad y me-
didas de GPS.
Sensibilidad de seguimiento -160 dBm.
Inmunidad a interferencias de tipo GPS.
Sensor de presin (barmetro).
Tasa de actualizacin de 120Hz, como mnimo.
Bajo consumo 910 mW.
7.2. Funciones de interfaz con la IMU 153
7.2. Funciones de interfaz con la IMU
La comunicacin entre la IMU y el PC104 de a bordo se realiza fsicamente
a travs de un puerto tipo serie/USB. Se dispone de unos mdulos software
que ofrecen funciones de alto nivel para congurar y obtener medidas del dis-
positivo. Pueden obtenerse datos de distintos tipos, fundamentalmente, datos
de orientacin, datos de posicin y velocidad a partir del GPS, y los llama-
dos calibrated data, incluyendo medidas de aceleracin lineal, de velocidad
angular y de norte magntico. Tambin es posible la obtencin de medidas
baromtricas y de temperatura. A continuacin, se comentarn brevemente
las funciones de alto nivel que pueden usarse como interfaz con la IMU.
7.2.1. Datos de orientacin
La orientacin puede ser obtenida de 3 formas distintas: como un cuater-
nio unitario, mediante los ngulos de Euler o como matriz de rotacin. Se ha
observado el hecho de que estos datos presentan una deriva importante en,
al menos, uno de los ngulos. Esto se reduce signicativamente situando la
antena GPS en zonas exteriores (al aire libre). En zonas interiores, la deriva
se 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 siguiente
estructura:
struct CmtQuat { double m data[4]; };
Se denira un dato de este tipo:
CmtQuat qatData;
y podramos obtener la medida con la funcin de lectura:
qatData = packet->getOriQuat(0);
Todas las funciones del tipo get...() tienen como argumento el nmero del
dispositivo 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.
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 orientacin mediante la tripleta de ngulos de Euler
respecto a ejes jos. Cabe destacar que las medidas de estos ngulos se dan
en grados, no en radianes. La estructura de datos asociada es la siguiente:
struct CmtEuler {
double m_roll; // Rotation around x-axis / back-front-line
double m_pitch; // Rotation around y-axis / right-left-line
double m_yaw; // Rotation around z-axis / down-up-line
};
Se denira un dato de este tipo:
CmtEuler eulerData;
y podramos obtener la medida mediante:
eulerData = packet->getOriEuler (0);
Los ngulos de Euler tienen una indeterminacin cuando el segundo ngulo
est prximo o es igual a los +90 -90. Esta indeterminacin no existe en
formato cuaternio o matriz de rotacin.
7.2.1.3. Matriz de Rotacin
Si lo deseamos, podemos pedir que se nos facilite la matriz de rotacin
completa. La estructura asociada es la siguiente:
struct CmtMatrix {
double m data[3][3];
};
Podemos denir un dato de este tipo mediante:
CmtMatrix matrixData;
y obtener la matriz usando la funcin:
matrixData = packet->getOriMatrix(0);
7.2. Funciones de interfaz con la IMU 155
7.2.2. Calibrated Data
Permite obtener la medida de tres sensores: acelermetro, girscopo y br-
jula.
Acelermetro :
Ofrece una medida de la aceleracin lineal (en m/s
2
) de la IMU respecto
al sistema inercial, pero expresado respecto al propio sistema de la IMU.
Un inconveniente de esta medida es que lleva incorporado el efecto de la
aceleracin de la gravedad. Es como si, en situacin de reposo, la IMU se
estuviera moviendo en direccin vertical hacia arriba con una aceleracin
igual a la de la gravedad, aproximadamente: [0, 0, 9,713923]
T
.
Girscopo (gyro) :
Proporciona un vector velocidad angular (en rad/s) de la IMU respecto
al sistema inercial, pero expresado respecto al propio sistema de la IMU.
Brjula (compass) :
Aporta la direccin del vector norte magntico respecto al sistema de
coordenadas local de la IMU. Las unidades son en a.u. (arbitrary units,
unidades normalizadas con la fuerza del campo magntico de la Tierra).
Dadas las unidades, de esta medida probablemente slo tenga sentido
usar la direccin.
Conviene insistir en que estas medidas no estn expresadas respecto al sistema
de 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 denir un dato de este tipo:
CmtCalData calData;
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 opcin para obtener los calibrated data, se trata del formato raw
data, 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 denir 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);
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 relativamente
precisa de la orientacin y de la velocidad angular, as como de la aceleracin
lineal: , y a, respectivamente. Estos datos se obtendran con las llamadas
a 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 orientacin viene expresada respecto al sistema de refe-
rencia inercial, mientras que la velocidad angular y aceleracin lineal vienen
expresadas respecto al sistema de coordenadas mvil 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 referencia
inercial:
_

a
g

g
_

_ =
_

R
g
a
(g)
g

R
g

(g)
g

g
_

_
donde

R
g
es la matriz de rotacin equivalente a la tripleta de ngulos

g
= [, , ]
T
. Para obtener una medida efectiva de la aceleracin lineal, es
necesario eliminar la contribucin de la gravedad:

t
g
=

a
g

g, siendo g

[0, 0, 9,713923]
T
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 relacin entre ambos vectores viene dada
por:

g
=
_

_
1
r
31
r
32
r
2
32
+r
2
33
r
31
r
33
r
2
32
+r
2
33
0
r
33

r
2
32
+r
2
33
r
32

r
2
32
+r
2
33
0
r
32
r
2
32
+r
2
33
r
33
r
2
32
+r
2
33
_

g
Con esto, es posible componer un vector de medida preliminar, de la forma:
x
raw
=
_

t
g

g
_

_
Desde el punto de vista del control, resulta ms interesante disponer de
estimaciones tanto de la velocidad como de la posicin lineal, en lugar de la
aceleracin. A partir de dicha aceleracin lineal, se puede obtener por software
una estimacin de la velocidad lineal. En principio, la opcin ms inmediata es
hacer una estimacin discreta mediante Euler hacia atrs, usando un perodo
de integracin jo T
m
:

t
g
(k)

t
g
(k 1) + T
m

t
g
(k)
Tambin podra pensarse en mtodos ms elaborados para realizar esta
estimacin de la velocidad. Por un lado, se puede optar por ltrar la seal de
aceleracin lineal despues de realizar un estudio de su espectro frecuencial en
condiciones normales. Por otro lado, en ausencia de un ltrado apropiado de
la aceleracin, podra suavizarse su efecto en la integral simplemente modi-
cando la ecuacin anterior por:

t
g
(k)

t
g
(k 1) +
T
m
2
(

t
g
(k) +

t
g
(k 1))
7.3. Medidas incompletas de la IMU 159
En caso de que se estime que el periodo no es sucientemente constante
de un ciclo al siguiente, habra que modicar esta relacin por la siguiente:

t
g
(k)

t
g
(k 1) +
1
2
(T(k)

t
g
(k) + T(k 1)

t
g
(k 1))
Donde se tiene que T(k) se dene como el tiempo transcurrido desde que
se tom la medida (k 1) hasta que se tom la medida k .
Lo que no parece viable es aplicar el mismo mecanismo de integracin (en
cualquiera de sus variantes) para obtener una aproximacin de la posicin,
puesto que es previsible que integrar dos veces una medida d resultados poco
aceptables. De este modo, se asumir que, con la IMU nicamente podemos
llegar a disponer de un vector de medida ampliado respecto al anterior, de la
forma:
x
imu
=
_

t
g

t
g

g
_

_
Sin embargo, lo que interesa como vector para la realimentacin del control
es:
x =
_

t
g

t
g

g
_

_
(7.1)
Para resolver esta deciencia es para lo que se plantea la inclusin del
sensor ptico en el sistema, cuyo modelo ya se ha explicado en el captulo 5.
A continuacin se detalla cmo sera el proceso de integracin entre el sensor
inercial y el sensor ptico.
7.4. Fusin de la informacin 160
7.4. Fusin de la informacin
En este punto se dispone de informacin que puede ser redundante y otra
que es complementaria. Por un lado, dado que se asume que la orientacin que
proporciona la IMU por s sola es sucientemente precisa, se puede extraer
la parte del vector de medida correspondiente a
w

g
. Por otra parte, dada
la dicultad de obtener una medida directa de
w
t
g
, se opta por reemplazarla
por
o
t
g
. Asimismo, se realizar una estimacin de la derivada de este ltimo
vector:
o

t
g
. Esto conlleva a un nuevo vector de medida:
o,w
x
g
=
_

_
o
t
g
o

t
g
w

g
w

g
_

_
el cual tendra como caracterstica poco deseable que no todos sus elemen-
tos estn referidos al mismo sistema de coordenadas. Pese a que tal vez esto no
supusiera ningn problema, resulta ms natural tener todos los componentes
del vector de medida referidos al mismo sistema de coordenadas, {W}. Para
ello, se se realizar un paso previo de multiplicacin de
o
t
g
como de
o

t
g
por la
matriz de orientacin

R
o
:
o
t
(w)
g
=
w
R
0

o
t
g
o

t
(w)
g
=
w
R
0

t
g
Resulta, por tanto, necesario disponer de la matriz
w
R
0
. Esta matriz puede
obtenerse en cada momento de la siguiente forma:
w
R
0
=
w
R
g

g
R
c

o
R
(1)
c
Con todo esto, se puede ofrecer el vector de medida denitivo:
w
x
g
=
_

_
o
t
(w)
g
w

t
(w)
g
w

g
w

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, an manteniendo la
referencia constante, si se mueve el objeto, se mover el quadrotor (si bien
sin cambiar su orientacin), para reubicarse en la misma posicin relativa al
objeto, que es quien ja la referencia.
7.5. Calibracin IMU-Cmara 161
7.5. Calibracin IMU-Cmara
El acomplamiento mecnico entre la IMU y la cmara se ha realizado a
partir del diseo de la pieza que aparece en la Figura 7.3. Por su parte, en la
Figura 7.4 se puede apreciar la disposicin relativa de los dos sensores con la
ubicacin aproximada de los sistemas de coordenadas respectivos.
El proceso de calibracin IMU-cmara consiste en estimar precisamente
esa disposicin relativa de los dos sistemas de coordenadas. En particular, se
busca estimar la posicin y orientacin del sistema de coordenadas de la c-
mara {C} respecto al de la IMU {G}.
Figura 7.3: Diseo del acoplamiento entre la imu y la cmara.
Para realizar esta calibracin, se utiliz en primera instancia el mtodo
conocido como hand-eye calibration de Tsai y Lenz [72], que tradicionalmente
se emplea para la calibracin entre la cmara y el efector nal de un robot
7.5. Calibracin IMU-Cmara 162
Figura 7.4: Acoplamiento real entre la cmara y el sensor inercial.
manipulador al que est rgidamente acoplada aqulla. Para realizar esta cali-
bracin es necesario recurrir de nuevo a un objeto de geometra conocida, del
tipo tablero de ajedrez, por ejemplo.
El mtodo parte de la captura de varias imgenes desde diversos puntos
de vista de dicho objeto, el cual debe permanecer inmvil, mientras se varan
las posiciones de la cmara haciendo uso del brazo articulado. Para cada uno
de los puntos de vista, debe registrarse la posicin del efector nal del brazo
manipulador y realizar una estimacin de la posicin y orientacin del objeto
respecto a la cmara.
Con esta informacin, se aplica el algoritmo que proporcionar la transfor-
macin homognea de la cmara al sistema de coordenadas ligado al efector
nal del robot. Para que el resultado sea aceptable, los puntos de vista deben
cumplir algunos requisitos, como que el desplazamiento entre los distintas po-
siciones no sea sucientemente grande y que existan al menos dos pares de
tomas entre las cuales la rotacin se realice en torno a ejes no paralelos.
En el presente caso, el papel del efector nal lo debe desempear de alguna
forma la IMU. La diferencia fundamental estriba en que, si bien la IMU pue-
de proporcionar informacin de orientacin (respecto a un sistema inercial),
es incapaz de proporcionar una medida de posicin que permita conocer el
desplazamiento que la misma ha sufrido desde un punto de vista a otro.
Dada esta importante limitacin, una opcin era hacer las diversas tomas
intentando que el origen del sistema de coordenadas de la IMU no se despla-
7.5. Calibracin IMU-Cmara 163
zara en ningn momento y jugar nicamente con la orientacin para conseguir
puntos de vista diferentes del objeto. Es evidente que, al realizar este tipo de
movimientos, la cmara s que sufrira algn desplazamiento, aunque bastante
limitado, 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 ningn desplazamiento durante
el experimento, se opt por utilizar dos punteros lsers inmviles, dispues-
tos en sendos trpodes de tal forma que sus rayos intersectaran en un punto
en el espacio. Idealmente, en ese punto se colocara el origen del sistema de
coordenadas de la IMU. Sin embargo, de acuerdo con la documentacin del
sensor inercial, el origen del sistema de coordenadas de la IMU no coincide
con ningn punto de la carcasa del dispositivo, sino con un punto interior.
Pese a todo, la localizacin del mismo es conocida respecto a un punto
caracterstico del exterior (ver punto en rojo prximo a la esquina superior
derecha de la IMU en la Figura 7.3). Este mismo punto se resalta en la parte
izquierda de la Figura 7.4. Se sabe que la posicin de dicho punto respecto al
sistema 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 el
que permaneciera inmvil. De esta forma, el origen de la IMU s se habra
desplazado, pero este desplazamiento es fcilmente calculable.
En la Figura 7.5 puede apreciarse la disposicin de todos los elementos,
mientras que en la Figura 7.6 puede verse marcado por los lsers el punto
usado como centro de los giros.
Los resultados de la calibracin cmara-IMU empleando el mtodo hand-
eye calibration referido no fueron satisfactorios. Ello se atribuye a que los
desplazamientos entre unas posiciones y otras fueron todos excesivamente re-
ducidos. Como alternativa, se propuso usar un nuevo mtodo, propuesto por
Andre et al. [122], el cual permite una estimacin robusta de la disposicin
entre una cmara y un elemento electromecnico incluso en situaciones singu-
lares, tales como rotacin pura y traslacin pura.
7.5. Calibracin IMU-Cmara 164
Figura 7.5: Montaje para el proceso de calibracin.
En una primera aproximacin, ms o menos simple, se realiz sta cali-
bracin partiendo de una estimacin de la posicin del origen del sistema de
coordenadas de la cmara, de las medidas de la pieza de acoplamiento y de la
situacin terica del sistema de coordenadas de la IMU.
Para la estimacin de la posicin del sistema de coordenadas de la cmara,
es necesario tener en cuenta que la mayor incertidumbre est presente en la
posicin a lo largo del eje ptico, mientras que para los ejes X e Y se toma el
centro de la lente (ver Figura 7.4 izquierda). Los experimentos llevados a cabo
para hacer esta estimacin consistieron en hacer pares de tomas, de tal forma
que en cada par se realizaba un giro de la cmara respecto a su eje Y, dejando
la plantilla inmvil e intentando que el giro fuera lo ms amplio posible sin
que dicha plantilla se saliera de la imagen.
Se apuntara con el lser desde arriba de forma que se garantizara que el
giro se realizaba en torno al punto marcado sobre la lente por el lser (ver
Figura 7.7). La nica diferencia entre cada par de tomas era que la cmara se
habra desplazado a lo largo del eje Z algunos milmetros
7.1
.
7.1
Recalcar que de un par de tomas al siguiente, el objeto puede moverse libremente.
7.5. Calibracin IMU-Cmara 165
Figura 7.6: Detalle del puntero lser sobre el centro de referencia.
Para la primera y segunda toma de cada par, se estimar la posicin y
orientacin de la plantilla respecto a la cmara,
c
1
T
o
y
c
2
T
o
, respectivamente.
A continuacin, se estima la transformacin:
c
1
T
c
2
=
c
1
T
c
2
o
T
1
o
De todos los giros analizados, aqul para el que el desplazamiento de la
cmara de la primera a la segunda toma tenga menor mdulo, debera corres-
ponderse con la situacin del origen de la cmara coincidente con la profun-
didad marcada por el lser:
min(
c
1
t
c
2
)
7.5. Calibracin IMU-Cmara 166
Figura 7.7: Detalle de la primera estimacin para el centro de referencia del
sistema de la cmara.
En una primera estimacin, se obtuvo que la profundidad de la lente a la
que se encontraba el origen de la cmara era la que aparece en la Figura 7.7.
Esto haca que la posicin del origen del sistema de coordenadas de la cmara
respecto a la IMU estuviera situada en:
g
t
c
= [28,51, 53 2, 21]
T
(mm)
En una segunda estimacin (Figura 7.8), esta medida se corrigi, obtenin-
dose nalmente:
g
t
c
= [28,51, 53 2, 37]
T
(mm)
correspondiendo con la ubicacin que se muestra en las Figuras 7.3 y 7.4
(derecha).
7.5. Calibracin IMU-Cmara 167
Figura 7.8: Detalle de la segunda estimacin (denitivo) para el centro de
referencia del sistema de la cmara.
En lo que respecta a la orientacin, de forma aproximada, se estima que
para llevar el sistema de coordenadas de la IMU al de la cmara, basta con
realizar un giro respecto al eje Y de la IMU de 180 grados. Expresado en
forma de RPY, se tendra que:
g

c
= [0, , 0]
T
Resultando como matriz de transformacin del sistema cmara-IMU la
siguiente:
g
T
c
=
_

_
1 0 0 28,51
0 1 0 53,2
0 0 1 37
0 0 0 1
_

_
(10
3
m)
7.6. Otras alternativas de realimentacin sensorial 168
7.6. Otras alternativas de realimentacin sen-
sorial
Tal y como se mostr en el Captulo 2, existe una gran variedad de sen-
sores con los que poder realizar controladores relativamente robustos para el
control de vuelo de los UAV. Desde sensores inerciales, como los usados en la
propuesta de este proyecto, hasta sensores de posicionamiento con GPS, entre
otros.
Pero en la literatura tambin se proponen distintas alternativas para el
control no basadas en imagen. Un ejemplo es el mostrado en [53], en el que
se propone un sensor basado en luz infraroja para la estimacin de la altura
de un vehculo areo no tripulado. Precisamente haciendo uso de este tipo de
sensores, se muestra en [36,2] un experimento bastante curioso. Se instalan un
conjunto de cmaras en la zona de vuelo del helicptero, basadas en luz infra-
roja, para calcular en cada momento mediante triangularizacin la posicin
actual del vehculo.
Figura 7.9: Control de UAV mediante cmaras infrarojas.
Con sta tcnica, es posible realizar maniobras a gran velocidad, como por
ejemplo pasar a travs de un pequeo hueco en una pared a una velocidad de
varios m/s (Figura 7.9) o esquivar obstculos en tiempo real. A diferencia del
control visual planteado en el presente proyecto, la cmara en estos casos no
va a bordo del quadrotor.
7.6. Otras alternativas de realimentacin sensorial 169
Otra propuesta para un control distinto al presentado en esta seccin es la
mostrada en [5], en la que se describe un controlador de vuelo y de navegacin
para un vehculo areo no tripulado de ala ja (distinto al quadrotor)(Figura
7.10) con sensores de bajo coste, tales como altmetros baromtricos o medi-
dores para la velocidad del aire, para mejorar la eciencia en la gestin de
posibles situaciones de emergencia. Se incluyen adems ltros adaptativos de
Kalman para obtener medidas ms robustas para el control de la altitud y
una red neuronal para el control de la actitud.
Figura 7.10: Vehculo areo de ala ja.
7.6. Otras alternativas de realimentacin sensorial 170
Captulo 8
Hardware y modelado del
helicptero Quadrotor
En este captulo, en primer lugar, se describen a nivel terico las ecuacio-
nes que gobiernan la dinmica del movimiento del quadrotor. Posteriormente
se incluye el esquema general de control para la estabilizacin del quadrotor,
incluyendo el sistema de visin y el sensor inercial, cerrando el lazo de control.
Por ltimo, se describe en conjunto todos los componentes que conforman el
hardware del sistema.
Todo lo relacionado con el modelado lineal del sistema del quadrotor y las
propuestas de estructuras de control para el seguimiento de trayectorias se
ha extrado del documento [52], trabajo n de Mster de Guilherme Vianna,
integrante del grupo de investigacin.
8.1. Descripcin del modelo del quadrotor
8.1.1. Descripcin del modelo del UAV
El vehculo areo utilizado es un helicptero 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 elctrico de corriente continua, un mecanismo
de engranaje y un rotor de palas. Para lograr movimiento hacia adelante la
velocidad del rotor trasero debe ser aumentada y, simultneamente, la veloci-
dad del rotor delantero debe ser disminuida.
171
8.1. Descripcin del modelo del quadrotor 172
El desplazamiento lateral se ejecuta con el mismo procedimiento, pero
usando los rotores de la derecha y de la izquierda. El movimiento de guiada
(yaw) se obtiene a partir de la diferencia en el par de torsin entre cada par
de rotores, es decir, se aceleran los dos rotores con sentido horario mientras se
desaceleran los rotores con sentido anti-horario, y vice-versa.
Figura 8.1: Esquema bsico de funcionamiento del quadrotor.
8.1.2. Planteamiento del modelo del sistema
En esta seccin se presenta el modelado basado en leyes fsicas que des-
criben la posicin y orientacin del helicptero quadrotor. Para obtener el
modelo dinmico se supone al vehculo como un cuerpo rgido en el espacio,
sujeto a una fuerza principal (empuje) y tres momentos (pares). En la Figura
8.2 se muestra las fuerzas que ejercen las distintas hlices para generar el mo-
vimiento del vehculo.
Para generar un movimiento de balanceo o de roll (ngulo ) se realiza
mediante un desequilibrio entre las fuerzas f
2
y f
4
(ver Figura 8.2). Para el
movimiento de cabeceo o de pitch (ngulo ), el desequilibrio a realizar ser
entre las fuerzas f
1
y f
3
. El movimiento en el ngulo de guiada o de yaw
(ngulo ) se realizar por el desequilibrio ente los conjuntos de fuerzas (f
2
,
f
4
) y (f
1
, f
3
). Este movimiento es posible ya que los rotores 1 y 3 giran en
sentido contrario a los rotores 2 y 4. Para concluir, el empuje total que provoca
que el helicptero se desplace perpendicularmente al plano de los rotores, se
obtiene como la suma de las cuatro fuerzas que ejercen los rotores.
8.1. Descripcin del modelo del quadrotor 173
Figura 8.2: Conjunto de fuerzas sobre el modelo ideal del quadrotor.
Un comentario ms al respecto est relacionado con los efectos giroscpicos
resultantes, tanto del cuerpo rgido rotando en el espacio como de la rotacin
de las cuatro hlices. En la siguiente tabla se muestran los principales efectos
fsicos que actan sobre el helicptero.
Trmino Correspondencia
C Trminos constantes
Velocidad angular del rotor
J
R
Momento de inercia rotacional
l Distancia del centro de masa a los rotores
J Momento de inercia del cuerpo rgido
, , ngulos de Tait-Bryan
8.1. Descripcin del modelo del quadrotor 174
Efectos Fuentes Formulacin
Efectos Aerodinmicos - Rotacin de los rotores.
- Giro de hlices. C
2
Pares Inerciales Opuestos - Cambio en la velocidad de
rotacin de los rotores. J
R

Efectos de la Gravedad - Posicin del centro de masa. l


- Cambio en la orientacin
Efectos del cuerpo rgido. J
Giroscpicos - Cambio en la orientacin
del plano de los rotores. J
R
,
Friccin - Conjunto de movimientos.
del helicptero C

,

Respecto al modelo del helicptero, se asume que el centro de masa es


coincidente con el origen del sistema de coordenadas jo al helicptero, y se
supone que la estructura del mismo es simtrica, lo que resulta en la matriz
de inercia diagonal.
Para la estimacin de la posicin y orientacin del vehculo respecto a un
sistema de coordenadas de referencia inercial {W}, se tiene en cuenta que el
helicptero est caracterizado por un sistema de coordenadas ligado a l y con
origen en su centro de masa (Figura 8.2).
Este sistema se dene considerando B = {

x
L
,

y
L
,

z
L
} como el sistema de
coordenadas jo al helicptero, donde el eje

x
L
es la direccin normal de ata-
que del helicptero,

y
L
es ortogonal a

x
L
y es positivo hacia estribor en el
plano horizontal, mientras que

z
L
est orientado en sentido ascendente y or-
togonal al plano

x
L
O

y
L
. El sistema de coordenadas inercial, W = {

x ,

y ,

z }
se considera jo respecto a tierra.
En [52] se designa el vector = {x, y, z} como la posicin del centro de
masa del helicptero con respecto al sistema inercial W. De igual modo, la
orientacin del vehculo viene dada por la matriz de rotacin R
W
: B W,
donde R
W
es una matriz de rotacin RPY.
La rotacin de un cuerpo rgido puede ser representada mediante los n-
gulos de Tait-Bryan, los cuales, son tres ngulos usados para describir una
rotacin general en el espacio Euclideo tridimensional a travs de tres rotacio-
nes sucesivas entorno al sistema de ejes mvil sobre el que estn denidas. As,
la conguracin de la rotacin de un cuerpo rgido en el espacio es realizada
a travs de tres rotaciones sucesivas:
8.1. Descripcin del modelo del quadrotor 175
Rotacin segn x de : el primer giro es el correspondiente al ngulo de
roll o de balanceo, , y se realiza alrededor del eje x .
Rotacin segn y de : el segundo giro se realiza alrededor del eje y a
partir del nuevo eje y
L
, con el ngulo pitch o de cabeceo, , para dejar
el eje z
L
en su posicin nal.
Rotacin segn z de : el tercer giro y ltima rotacin corresponde al
ngulo de guiada o yaw, , alrededor del eje z a partir del nuevo eje
z
L
para llevar al helicptero a su posicin nal.
A partir de las rotaciones presentadas anteriormente, se pueden denir las ma-
trices de rotacin y tipo de rotacin que representan la orientacin del cuerpo
rgido rotando alrededor de cada eje.
Si se denominan a estas matrices R(x, ), R(y, ) y R(z, ), la matriz de
rotacin completa de B respecto de W , denominada matriz de coseno directa,
viene dada por la expresin:
R
W
= R(z, ) R(y, ) R(x, ).
Sin entrar en detalles matemticos, la matriz de rotacin expresada en
el sistema de coordenadas de B es la traspuesta de R
W
debido a que dicha
matriz es ortonormal. A partir de la matriz R
W
y relacionando la derivada
de la matriz ortonormal con una matriz anti-simtrica, se pueden obtener las
ecuaciones cinmaticas de rotacin del vehculo que establecen las relaciones
entre las velocidades angulares.
La relacin entre las velocidades angulares en el sistema jado al cuerpo y
la variacin en el tiempo de los ngulos de Tait-Bryan viene dada por:
=
_

_
1 0 sin
0 cos sincos
0 sin coscos
_

_
_

_
El movimiento rotacional del helicptero viene dado por las componentes
de las velocidad angular en los tres ejes: velocidad angular de balanceo (p),
velocidad angular de cabeceo (q), y velocidad angular de guiada (r), sobre
8.1. Descripcin del modelo del quadrotor 176
los ejes {

x
L
,

y
L
,

z
L
} respectivamente.
Estas velocidades rotacionales son debidas a los pares ejercidos sobre el
sistema ligado al cuerpo del helicptero producidas por las fuerzas externas,
las cuales denen los diferentes momentos en los tres ejes: momento de balan-
ceo (L), momento de cabeceo (M), y momento de guiada (N) sobre los ejes
{

x
L
,

y
L
,

z
L
} respectivamente.
El movimiento de traslacin viene dado por las componentes de la velo-
cidad v
0
en los tres ejes inerciales con relacin a la velocidad absoluta del
helicptero expresada en la base B, V
0
. Las velocidades v y V estn relacio-
nadas por la expresin: v
0
= R
W
V
0
.
8.1.2.1. Ecuaciones dinmicas del helicptero
Las ecuaciones dinmicas de un cuerpo rgido sujeto a fuerzas externas
aplicadas al centro de masa y expresadas en el sistema de coordenadas B se
pueden obtener a travs de la formulacin de Newton-Euler como sigue:
_
mI
3x3
0
0 J
_ _
v

_
+
_
mV
J
_
=
_
F + F
d
+
d
_
donde J R
3x3
es la llamada matriz de inercia, I
3x3
es la matriz identidad,
v es el vector de velocidad translacional, es el vector de velocidad angular
y m es la masa total del helicptero.
De acuerdo con las suposiciones anteriores, la matriz de inercia J se pue-
de suponer diagonal, y si consideramos el vector de estado = [ v

]
T
donde y v

representan la posicin y la velocidad lineal expresada en W,


= [ ] y es la velocidad angular expresada en el sistema del helicp-
tero, se pueden reescribir las ecuaciones de movimiento de un cuerpo rgido
como (idntico resultado en [3]):
8.1. Descripcin del modelo del quadrotor 177
_

= v
m

v

= R
I
F
B

R
W
= R
W
S()
J = J +
b
donde

= v

= R
W
V y S() = R
T
W

R
W
Por otra parte, F
B
y
B
, denidas en el sistema del helicptero, son las
fuerzas y pares externos aplicados al cuerpo del helicptero, y consisten basi-
camente en su propio peso, en el vector de fuerzas aerodinmicas, en el empuje
y 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 ecuacin diferencial no lineal que
caracteriza al sistema:

= f() +
4

i=1
g
i
()U
i
donde:
: Vector de estados, de la forma = [ v

]
T
.
U
i
: Entrada principal de control aplicada sobre el motor i-simo.
f, g: Expresiones denidas en [52] en funcin de .
Segn se concluye, se determina que la expresin anterior es suciente para el
diseo de un controlador en el cual se consideran los momentos aerodinmicos
y las fuerzas que puedan actuar sobre el vehculo en entornos desconocidos
como un conjunto de perturbaciones externas.
En el diagrama de la seccin 8.2, se muestra el conjunto de vectores de
medidas que se denen para cada elemento, y la relacin en el esquema de
control realimentado para el control del quadrotor. En este caso se dene
como:
=
_

_
8.1. Descripcin del modelo del quadrotor 178
al vector que contiene la rotacin respecto a cada eje, el cual se dene
tanto para la IMU como para la cmara, de la forma
W

G
para el caso de la
IMU respecto del sistema inercial y
O

C
para el caso de la cmara respecto
del sistema del objeto.
Del mismo modo se aaden al sistema dos nuevos vectores de estado; el
primer de ellos ya se deni en el captulo de la fusin sensorial, y recoge
toda la informacin que aporta la IMU y la cmara, el cual tiene la siguiente
expresin:
W
x
G
=
_

_
O
p
(W)
G
W
p
G
W

G
W

G
_

_
Tras el proceso de fusin sensorial, el vector de estado con el que se reali-
mentara al lazo de control es el expresado anteriormente:
W
x
G
. Sin embargo,
el vector anterior expresa velocidad, posicin y ngulos de la IMU ({G}) res-
pecto al sistema de coordenadas inercial {W} , siendo incompatible con las
entradas del controlador, el cual, requiere de medidas que estn expresadas
respecto al sistema de referencia del quadrotor, {B}.
Para solventar este problema, se supone de la existencia de un dispositi-
vo tipo caja negra, denominado Transformacin, entre el bloque de fusin
sensorial y el controlador, de forma que se pueda adaptar el vector de estados
W
x
G
al sistema de referencia del quadrotor, {B}, mediante la siguiente expre-
sin:
W
x
B
=
_

_
W
p
B
W
p
B
W

B
W

B
_

_
Dado el conjunto anterior de expresiones, en la seccin siguiente se presenta
el esquema general de control del quadrotor.
8.1. Descripcin del modelo del quadrotor 179
8.2. Esquema general de control 180
8.2. Esquema general de control
8.3. Descripcin del equipo 181
8.3. Descripcin del equipo
La plataforma que se ha utilizado para el conjunto de experimentos es un
helicptero en miniatura (Figura 8.3) propulsado por cuatro rotores (Figura
8.4). A bordo del aparato se colocan los siguientes sensores:
Cmara uEye modelo u220. Resolucin de 752x480, a unos 40 fps, pro-
fundidad de color de 8 bits.
Sensor de medida inercial (IMU), para los datos de aceleracin y posi-
cin mediante GPS.
PC 104 Cool LiteRunner-ECO, de la compaia LIPPERT Embedded
Computers GmbH. Aparte de los puertos de E/S de los que dispone este
equipo, el equipo dispone de un -procesador Intel Atom Z510 a 1.6
Ghz de doble ncleo, con 2 GB de memoria DRAM y hasta 4 GB de
memoria FLASH como soporte para memoria principal. Los motivos por
los cuales se ha escogido este equipo son:
Equipo de bajo consumo ( 11 W).
Dado que toda la tarea de procesamiento de imgenes es llevada a
cabo on-board (no va a existir un equipo o-line que se encargue
de gestionar el procesamiento visual y de enviar las consignas de
control a los motores, como en [3]), se precisa de un procesador
que al menos fuera de doble ncleo, incluyendo adems suciente
memoria dinmica, para evitar que el equipo supusiera un cuello
de botella en el sistema. En la Figura 8.5 se puede ver en detalle
una ilustracin de este elemento.
En la Figura 8.6 se muestra el acoplamiento mecnico entre la cmara y el
sensor inercial.
8.3. Descripcin del equipo 182
Figura 8.3: Detalle del helicptero en miniatura.
Figura 8.4: Detalle de uno de los rotores integrados en el quadrotor, en fase
de pruebas.
8.3. Descripcin del equipo 183
Figura 8.5: Equipo integrado on-board PC-104.
Figura 8.6: Detalle de integracin de los sensores inercial y ptico a bordo del
quadrotor.
Captulo 9
Trabajos futuros y conclusin
9.1. Ampliaciones y otras alternativas para el
control
Debido a la formacin obtenida correspondiente a Ingeniera en Inform-
tica, el autor ve este campo desde otro punto de vista al que lo pudiera ver,
por ejemplo, un Ingeniero en Aeronutica. Dada la formacin en asignaturas
como Inteligencia Articial o Procesadores de Lenguajes, a continuacin se
exponen posibles ampliaciones o nuevos proyectos que versan sobre este rea,
y las conclusiones derivadas de la nalizacin del proyecto.
9.1.1. Open Tracking Library
Enlace indicado en [125], se trata de una librera para desarrollar aplica-
ciones para el seguimiento tridimensional de objetos en el espacio. Hace uso
de la librera OpenGL para la visualizacin de los resultados. Las principales
caractersticas de la misma son las siguientes:
Arquitectura software modular, con programacin orientada a objetos.
Conjunto de algoritmos y tcnicas bsicas para el procesamiento digital
de imgenes: ltros Bayesianos, representacin de la posicin, almace-
namiento, etc.
Algoritmos optimizados con soporte para tiempo real y procesamiento
GPU (Graphic Processor Unit).
Abstraccin genrica de sensores del tipo cmara, rdar, GPS, etc.
184
9.1. Ampliaciones y otras alternativas para el control 185
Posibilidad de integracin multiplataforma.
Sera interesante poder desarrollar algn cdigo con esta librera, pero debido
a falta de tiempo se deja como una posible alternativa para el desarrollo futuro
de aplicaciones para el control visual.
9.1.2. Lenguaje de comunicacin de UAVs
Esta parcela es ms relativa a lo visto en la Titulacin del autor que a
lo propio que se haya podido aprender en este proyecto. Esta propuesta de
un posible lenguaje para UAVs parti como un trabajo voluntario para una
asignatura de procesadores de lenguajes.
Sera muy interesante poder desarrollar esta idea, porque a partir de vehcu-
los areos realmente autnomos, es posible generar una comunicacin entre
ellos con un formato determinado, y poder realizar tareas complejas. A conti-
nuacin se detalla brevemente esta propuesta.
9.1.2.1. Caractersticas del lenguaje propuesto
El lenguaje presentado es una combinacin de dos lenguajes completamen-
te distintos; por un lado, se han extrado ideas del lenguaje propuesto en [126],
el cual es una propuesta de un lenguaje para comunicacin en sistemas mul-
tiagentes. Este lenguaje se adapta a un sistema multiagente de forma ecaz
porque es orientado a objetos, lo que le da cierta exibilidad para la denicin
de distintos tipos de atributos y/o mtodos. Un ejemplo del mismo se muestra
a continuacin:
value CommunicationService is abstraction ()
{
Send_Receive : Connection[Message];
Transmit_Deliver : Connection[any];
..
choose {
//send message
via Send_Receive receive message_out;
unobservable;
...
via Transmit_Deliver send transmit_out;
9.1. Ampliaciones y otras alternativas para el control 186
or
...
}
}
El otro lenguaje del cual tambin se han extrado varias ideas es el presentado
en [127]. En este documento se propone un lenguaje para la comunicacin entre
un vehculo areo no tripulado (UAV) y una torre de control. Lo singular que
presenta esta propuesta es que la comunicacin se basa en el lenguaje natural,
con lo que aparentemente es relativamente sencillo de entender e implementar.
Un ejemplo del mismo se muestra a continuacin:
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 que
no es ms que una primera propuesta, con bastantes elementos mejorables:
CONTROL_MODULE task1
OPEN
>STATE_DEFINITION OPEN:
<GROUP : identificadorGrupo1>
UAV_SET
UAV_DEF
UAV_ID := UAV2
UAV_POSITION
GPS_COORDENATE := (11p3822)
GPS_ALTITUDE := (23)
END UAV_POSITION
END UAV_DEF
...
END UAV_SET <GROUP;>
>STATE_DEFINITION CLOSE;
>CONTROL_ROUTINE OPEN:
...
<PROCS;>
<MAIN>
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 investigacin rela-
cionada con esta temtica es muy amplia.
9.1.3. Ampliaciones con la librera OpenCV
Existen muchos algoritmos y tcnicas de OpenCV que no han sido vistos
debido a falta de tiempo. Clasicadores, algoritmos de condensacin para el
seguimiento de objetos, optimizacin del cdigo a bajo nivel con el conjunto
de utilidades TBB
9.1
de la versin 2.0, etc. La librera de OpenCV es muy
extensa, y posee algoritmos para casi todo.
Por ejemplo, dado que la cmara del sistema es monocroma, todos los
algoritmos para la localizacin y el seguimiento del objeto estn basados en
este tipo de imgenes. Sin embargo, existen gran cantidad de mtodos para la
localizacin y seguimiento de objetos que son muy robustos ante cambios en
la escala y rotaciones, basados en el color o en otras propiedades; informacin
visual que no es posible capturar con este tipo de sensor ptico.
9.1
Intel Threading Building Blocks (Intel TBB) es una biblioteca basada en plantillas
para C++ desarrollada por Intel para facilitar la escritura de programas que exploten las
capacidades de paralelismo de los procesadores con arquitectura multincleo.
9.1. Ampliaciones y otras alternativas para el control 188
9.1.4. Obtencin de un controlador robusto mediante
algoritmos genticos
Un algoritmo gentico, bsicamente consiste en representar el dominio de
un determinado problema como un conjunto de individuos, caracterizndolos
mediante su cromosoma. A partir de una poblacin inicial, y aplicando un
conjunto de operadores bsicos (la mutacin y el cruce), es posible encontrar
una poblacin 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-
cin de los algoritmos genticos para la obtencin de los parmetros necesarios
de un controlador PID robusto ante posibles perturbaciones (tales como r-
fagas de viento) para controlar el vuelo de un mini-helicptero. Se parte de
una poblacin inicial, y mediante un proceso de aprendizaje y evolucin de la
poblacin aplicando operadores de mutacin y cruce, tras varias generaciones
(unas 27, y 6 horas despus) consiguen obtener los parmetros para un con-
trolador que, como se puede ver en [130], hace que el vuelo del helicptero
sea relativamente estable. En la Figura 9.1 se puede observa un detalle de los
experimentos presentados en esta propuesta.
Figura 9.1: Obtencin del controlador de vuelo mediante algoritmos genticos.
9.1. Ampliaciones y otras alternativas para el control 189
9.1.5. Aplicacin de tcnicas de inteligencia articial
para el control
Existen muchas otras tcnicas de I.A., adems de la presentada en la sec-
cin anterior, que son posibles aplicar al campo del control de UAVs. Por
ejemplo, una red neuronal se puede denir como un grafo dirigido, en el que
existen varias capas interconexionadas entre s, y cuyo objetivo es adecuar
el sistema que est modelando al entorno para que el comportamiento sea el
adecuado.
Este tipo de tcnicas ([10][11]) sustituiran a cierta parte del controlador
en 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 dichos
pesos en el proceso de entrenamiento. Sera un campo muy interesante en el
cual poder investigar en un futuro.
Otra tcnica relacionada con la inteligencia articial consiste en el apren-
dizaje automtico. Existen muchos mtodos para el aprendizaje por parte de
una mquina de cierta tarea, pero los sistemas clasicadores propuestos por
Holland son los que ms se adecuaran a esta aproximacin. Se trata de un
conjunto de sensores que captan la informacin del exterior, y en base a un
conjunto de reglas pre-establecidas y a una implementacin de una versin
simplicada de algoritmos genticos, es posible conseguir un vuelo automti-
co por parte de un UAV, utilizando por un lado el control visual que cierre el
lazo de contro, pero ante posibles perturbaciones como pudieran ser pjaros
o otro tipo de objeto/animal el vehculo supiera que se tiene que apartar, y
dar los comandos de control necesarios al sistema para evitar dichos obstcu-
los. Es otra rea de investigacin muy interesante, puesto que con este tipo de
tcnicas de aprendizaje automtico realmente es posible construir vehculos
que realmente posean capacidades de autonoma.
Existen en la literatura muchas ms aplicaciones, que si el lector estuviera
interesado, puede consultar: [47],[4],[8] y [12]. En el ltimo artculo se expone
una propuesta muy interesante: aplicar tcnicas de agentes inteligentes para
el control de vehculos autnomos. Pero es posible llevarlo un paso ms all:
Sera posible generar una red de UAVs (Figura 9.2), gobernados por
agentes inteligentes, interconectados entre s [60] y hablando el mismo len-
guaje, entrenados para evitar cierto tipo de obstculos, basando sus leyes de
navegacin en esquemas de control visual para realizar una tarea especca?
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 que
la NASA est actualmente investigando [49] en sistemas complejos de agentes
inteligentes para futuras misiones espaciales utilizando plataformas areas no
tripuladas basadas en cierta parte, control visual, cambiara de opinin?.
Mi opinin es que es un rea fascinante, a la que me encantara dedicarme
en un futuro.
9.2. Conclusin 191
9.2. Conclusin
Para introducir al lector de forma breve en los proyectos ms interesantes
y relevantes, en la siguiente tabla se muestran los principales grupos de inves-
tigacin y las plataformas de helicpteros autnomos en uso hoy en da.
Centro Caractersticas principales
Georgia Institute of Technology, Helicptero Yamaha R-50
Atlanta,USA. ISIS IMU con frec. de actualizacin a 100Hz
Desviacin 0.02 grados/ minuto.
Altmetros basados en radar y sonar
Control basado en redes neuronales
Feedback Linearization
Canegie Mellon University, Helicptero Yamaha R-Max
Pittsburgh,USA. Litton LN-200 IMU a 400Hz
Novatel RT-2 GPS diferencial
Control H
University of Southern Helicptero Bergen Industrial Twin
California,USA. ISIS IMU a 100Hz frec. de actualizacin
Novatel RT-2 GPS diferencial
Control PID
Linkoping University, Suecia. Helicptero Yamaha R-Max
RTK GPS, sonar, compass, sensor de
temperatura y presin
Yamaha sensores de actitud (YACS)
Control Fuzzy. Basado en modelado dinmico
Massachusetts Institute Helicptero X-Cell 60
Technology,MIT,USA. ISIS IMU a 100Hz frecuecia de actualizacin
Superstar GPS a 1Hz
Control basado en LQR
University of California Helicptero Yamaha R-Max
Berkeley,USA. Sistema integrado Boeing DQI-NP
INS/GPS. Provee informacin de velocidad,
posicin y actitud
Novatel RT-2 GPS diferencial
9.2. Conclusin 192
La realizacin de este proyecto ha supuesto un gran enriquecimiento, tan-
to personal como intelectual. El enriquecimiento personal ha sido inherente al
continuo contacto con varios compaeros y con el tutor del proyecto, el cual
me ha ayudado muchsimo para lograr la nalizacin del presente trabajo. Sin
su ayuda, este proyecto hubiera albergado an ms dicultad.
Los conocimientos tericos y tcnicos adquiridos son muchos y muy va-
riados: desde la comprensin de la dinmica de vuelo del quadrotor, hasta la
conguracin y puesta en marcha de distintos tipos de libreras, pasando por
el estudio del controlador propuesto en [52] para la estabilizacin del helicp-
tero, entre otros.
Dada mi titulacin, y una vez adquiridos los conocimientos tras la reali-
zacin del presente proyecto, es fcil imaginar posibles ampliaciones o apli-
caciones, tal y como queda expuesto en el presente captulo. Es un rea de
investigacin muy extensa e interesante, en la con una frecuencia cada vez ma-
yor se proponen nuevas tcnicas y/o aplicaciones sobre las plataformas UAVs.
9.2. Conclusin 193
Apndice A
Cdigo desarrollado
El conjunto de clases que se han desarrollado especcamente para las
tareas presentadas en el presente proyecto son 4:
CSensorCamara.hpp: Contiene la implementacin detallada en la seccin
6.1.
CSensorCamara2.hpp: Contiene la implementacin detallada en la sec-
cin 6.2.
homographyDecomposition.hpp: Contiene la implementacin detallada
en la seccin 6.2.1.
seleccion.hpp: Conjunto de funciones tiles para la seleccin manual del
objeto.
Adems, para el desarrollo del cdigo anterior se hicieron uso de un conjunto
de bibliotecas pre-denidas :
matriz.hpp: Biblioteca de funciones para manipulacin de matrices.
general.hpp: Biblioteca de funciones para denicin y manipulacin de
tipos de datos.
En el CD adjunto a la documentacin del presente proyecto se pueden encon-
trar los cheros fuentes asociados.
194
APNDICE A. CDIGO DESARROLLADO 195
Apndice B
OpenCV
B.1. Caractersticas de la versin 2.0
La libreria OpenCV (Open Source Computer Vision) es una libreria com-
puesta de funciones para aplicaciones de visin por computador en tiempo
real. Ha sido desarrollada bajo licencias del tipo BSD (Free to Share, Free to
Remix), y el principal precursor ha sido Intel, entidad que nanci las prime-
ras fases de desarrollo de la libreria.
Actualmente est nanciada por el grupo de trabajo WillowGarage. Para
ms informacin, se puede visitar la pgina de la versin 2.0 en Internet:
http://opencv.willowgarage.com/wiki/ o consultar [120].
B.2. Conguracin de OpenCV
B.2.1. Conguracin en Ubuntu 9.10
Conseguir empezar a trabajar con esta librera fue toda una hazaa. El
conseguirlo para una distribucin de Linux, mucho menos. A continuacin se
exponen de forma detallada los pasos a seguir para la instalacin y puesta
en marcha de la libreria OpenCV, en su versin 2.0, en la distribucin de
Linux Ubuntu 9.10. Tambin se ha conseguido instalar de forma satisfactoria
196
B.2. Conguracin de OpenCV 197
en la versin Karmic 10.04. Para otras versiones, tanto de librera como de
sistema operativo, los pasos descritos a continuacin no garantizan el correcto
funcionamiento, aunque es posible que tambin funcione correctamente.
B.2.1.1. Paso 0
En primer lugar, es imprescindible asegurarnos que las versiones de los
paquetes que se van a descargar estn actualizadas, y sean estables. Para ello,
en el men de usuario de Ubuntu, accedemos a :
Sistema -> Administracin -> Orgenes del Software
En esta ventana deben estar marcados, al menos, las que se indican a conti-
nuacin para el propsito de esta gua:
Figura B.1: Lista de servidores de versiones
A continuacin , sobre la pestaa Other Software, seleccionar, al menos,
las siguientes opciones:
http://archive.canonical.com/ubuntu karmic partner
http://archive.canonical.com/ubuntu karmic partner (Source
Code)
Es necesario asegurar que la versin de los paquetes est actualizada:
> sudo apt-get upgrade
B.2. Conguracin 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-dev
libjpeg62-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
algn tipo de error, bien porque no se ha denido dicha libreria para nuestra
distribucin de Linux o bien porque no se encuentra en el repositorio, probar
con el siguiente comando:
> sudo aptitude build-dep
B.2.1.3. Paso 2
Obtenemos la versin 2.0 de la libreria de Intel, en su versin para sistemas
tipo 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 continuacin se van a generar los enlaces simblicos para las librerias de
video. En este punto es necesario loguearse en el sistema como super-usuario
(sudo -s) y realizar las siguientes operaciones:
B.2. Conguracin 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 la
libreria OpenCV, y procedemos a realizar las operaciones de conguracin e
instalacin:
> ./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 algn mensaje
relacionado con swscale o gpl. Este mensaje variar en funcin de la
versin que hayamos descargado de los fuentes en el paso 1.Puesto que
no son imprenscindibles, pueden ser omitidos por el momento.
Nota 2: En el caso de que tras este punto se haya producido algn error,
es necesario volver al paso 2. Esto es debido a que cuando lanzamos
el comando ./congure se modica el make generado, por lo que si se
han creado enlaces simblicos con alguna de las librerias anteriores, es
necesario 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 e
instalado todas las librerias auxiliares, se procede a compilar la libreria para
nuestro sistema. Es posible que para realizar la siguiente operacin tengamos
que loguearnos como super-usuario. Los pasos a seguir son los siguientes:
1. En el directorio donde se ha descomprimido la libreria, procedemos a
compilar los fuentes haciendo uso del comando make:
B.2. Conguracin de OpenCV 200
> make
Importante: Si despues de hacer el make se generan errores, en funcion de
la version del paquete que se haya descargado, es necesario o bien volver
al paso 0, comprobar que los orgenes de software son los correctos, y
volver a realizar los pasos anteriores. Si bien realizando estos pasos no
se resuelven los errores a la hora de realizar el make, es necesario ver
nota B.
2. Tras unos minutos, el proceso anterior habr nalizado. Si todo ha ido
bien, 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
Conguramos nuestro sistema para localizar y enlazar las librerias de
OpenCV:
> 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 lnea, que es la que vamos
buscando. Si aparece ena la consola /usr/local/opencv/lib, todo ha ido co-
rrectamente.
B.2.1.8. Paso 7
Conguramos el pkg-cong 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 lnea es necesaria si se tiene pensado programar con Python. Si
no es el caso, se puede omitir dicha exportacin. A continuacin reiniciamos
el terminal para que todos los pasos de conguracin sean actualizados.
B.2. Conguracin de OpenCV 201
B.2.1.9. Paso 8
En principio, si se ha llegado a este punto sin ningn error en el terminal, es
porque se ha instalado correctamente la libreria de OpenCV en el sistema. Para
vericarlo, accedemos al directorio donde hemos descomprimido la libreria
de OpenCV, y accedemos al subdirectorio samples/c, y autenticndonos de
nuevo como super-usuario, procedemos a ejecutar el siguiente comando en el
terminal:
> . build_all.sh
Si todo ha ido bien, la mayoria de los ejemplos se compilarn para obtener los
ejecutables en la carpeta OpenCV2.0.X/bin.
B.2.1.10. Paso 9
Este paso no es necesario para la instalacin de la libreria en el sistema,
pero s para la correcta compilacin de cualquier ejemplo que se implemente
usando deniciones de la libreria OpenCV. Si optamos por compilar nuestros
fuentes haciendo uso de la herramienta make, para poder enlazar correcta-
mente las librerias de OpenCV ser necesario establecer el formato de enlace
simblico con las mismas en un archivo Makele.
A modo de ejemplo, a continuacin se expone el contenido de una archivo
Makele que sirve para compilar un archivo fuente main.cpp, el cual contiene
llamada a funciones de OpenCV:
CC=g++
CFLAGS=-I. -Wall
LFLAGS=-lrt -lueye_api
DEPS = general.hpp Matrix.hpp CSensorCamara.hpp
main: 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 deniciones: general.hpp, Matrix.hpp, CSensorCamara.hpp.
B.2. Conguracin de OpenCV 202
B.2.2. Conguracin para Dev C++ en entornos Win-
dows
Los pasos aqu descritos son igualmente vlidos tanto para la versin 2.0
como para la versin 2.1 de la librera de OpenCV.
B.2.2.1. Paso 0
Para instalar la librera de OpenCV es necesario acudir a la pgina donde
se encuentra en versin ejecutable el instalable de la versin 2.0:
https://sourceforge.net/projects/opencvlibrary/files/opencv-win/
2.0/
Una vez seguidos los pasos de instalacin, se da por nalizado este paso
inicial.
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 nalizado este paso, se supone que el lector dispone del programa
Dev C++ correctamente instalado en su mquina y ejecutndose.
B.2.2.3. Paso 2
Se crea un nuevo proyecto, en el cual se pueden generar tantos archivos
fuente como sea necesario. Por ejemplo, se puede crear un archivo fuente
denominado main.cpp, cuyo cdigo sea de prueba, como el mostrado a conti-
nuacin:
#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 );
}
B.2. Conguracin de OpenCV 203
El cdigo anterior carga una imagen a partir de la ruta pasada como argumento
de llamada y la muestra en una ventana grca.
B.2.2.4. Paso 3
En este paso, se procede a la denicin de un nuevo tipo de compilador en
Dev 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 lo
denominados por ejemplo Compilador por Defecto.
Figura B.2: Creacin del nuevo compilador.
Posteriormente, seleccionamos la casilla "Add these commands to the
linker command line" (Figura B.2) y aadimos al recuadro lo siguien-
te(incluyendo el guin delante):
-llibcxcore200 -llibcv200 -llibcvaux200
-llibhighgui200 -llibml200 -llibfftw3-3
B.2. Conguracin de OpenCV 204
Nos vamos a la pestaa Directories y en la subpestaa Binaries
deben estar incluidas las siguientes opciones (pulsando la opcin Add
para aadir 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: Inclusin de rutas en DirectoriesBinaries.
B.2. Conguracin de OpenCV 205
En la pestaa Directories Libraries deben estar incluidas las siguien-
tes rutas (Figura B.4):
> C:\OpenCV2.0\lib
> C:\Dev-Cpp\lib
Figura B.4: Inclusin de rutas en DirectoriesLibraries.
B.2. Conguracin de OpenCV 206
En la pestaa 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: Inclusin de rutas en DirectoriesC includes.
B.2. Conguracin de OpenCV 207
En la pestaa Directories C++ includes deben estar incluidas las
siguientes 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: Inclusin de rutas en DirectoriesC++ includes.
Pulsamos el botn OK y listo.
B.2. Conguracin de OpenCV 208
B.2.2.5. Paso 4
Todo lo necesario para poder compilar el proyecto ya est congurado.
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) Botn
derecho de ratn Project Options .En la pestaa Compiler, selec-
cionar el compilador que generamos antes, el llamado Compilador por
Defecto.
Una ltima opcin, no necesaria pero s adecuada, es decirle a Dev C++ que
queremos que genere cdigo optimizado. Para ello, en la misma ruta que el
anterior, seleccionamos Compiler y en Further OptimizationsBest Op-
timizations Yes (Figura B.7).
Figura B.7: Optimizacin de cdigo en Dev C++.
B.3. Caractersticas de la versin 2.1 209
B.2.2.6. Paso 5
Para que al compilar no se produzcan errores no deseados, es necesario
modicar una lnea en un archivo fuente de OpenCV. As pues:
En el directorio C:\ ...\include\opencv\ debe haber un chero denomi-
nado: cxoperations.hpp.
Lo editamos, y buscamos en la lnea nmero 67 del chero anterior algo
similar a esto:
#include <bits/atomicity.h>
#if __GNUC__ >= 4
Localizada la lnea, debemos sustituirla por sta otra:
#include <bits/atomicity.h>
#if __GNUC__ >= 4 || __MINGW32__
B.3. Caractersticas de la versin 2.1
En la fecha de entrega del presente proyecto, se encuentra publicada la
versin 2.1 de la presente libreria. Adems de la inclusin de nuevos algorit-
mos, y ms optimizados, se incluye adems un cambio a nivel de generacin
de cdigo para extraer el mximo rendimiento de las arquitecturas multime-
dia y multincleo para algoritmos de alto coste computacional. Uno de los
cambios ms llamativos han sido las modicaciones en la interfaz para C++,
eliminando el prejo cv del comienzo de los nombres de cada funcin.
Debido principalmente a falta de tiempo, no se ha profundizado en el
desarrollo con esta nueva versin de la libreria, aunque en lo referente a las
funciones utilizadas en las clases implementadas se comprueba que no han
sufrido proceso de mejora, por lo que es posible que no se obtenga una mejora
relativa en lo que respecta al rendimiento.
Par ms informacin se reere al lector a consultar el siguiente enlace web:
http://opencv.willowgarage.com/documentation/cpp/index.html.
Apndice C
Interfaz de programacin de la
cmara
A continuacin se detallan las funciones utilizadas de la libreria de la c-
mara [118].
Variables globales de la libreria de la cmara declaradas en el cdigo de
las 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;
// Informacin del sensor de la cmara
SENSORINFO sensorInfo;
Funcin de inicializacin del dispositivo:
is_InitCamera (..)
Esta funcin acepta como parmetro de entrada el identicador de la
cmara en el sistema y un handler para una ventana de dilogo, que se
establece a nulo. La tarea de esta funcin es arrancar el driver y crear
la conexin. Puede devolver xito en la inicializacin o fracaso.
210
APNDICE C. INTERFAZ DE PROGRAMACIN DE LA CMARA 211
Funcin de conguracin mediante archivo:
is_LoadParameters (CamHandler, ArchivoConfig)
Con esta funcin se inicializa la cmara con unos parmetros de con-
guracin presentes en ArchivoCong, formateados debidamente, tales
como tasa de fps, activacin del autocontraste (para adecuar el sensor a
las condiciones lumnicas de la escena), etc. Puede devolver xito en la
conguracin, o error.
Para obtener informacin del sensor:
is_GetSensorInfo (CamHandler, &sensorInfo);
Con esta funcin recuperamos el tamao de la imagen en x e y, entre
otras cosas.
Activacin del trigger de la cmara mediante evento externo:
is_SetExternalTrigger (CamHandler, IS_SET_TRIGGER_SOFTWARE)
Se establece la condicin, con esta funcin, de que la cmara cada vez que
se llame a la funcin de captura devolver la imagen recin capturada.
Adems, para las condiciones de inicializacin, si esta funcin desactiva
el trigger por software la cmara tarda en torno a 20 frames en adecuarse
a las condiciones lumnicas, mientras que con el trigger activado, tras
unos 5 frames ya se ha estabilizado el sensor. Puede devolver xito en la
inicializacin o fracaso.
Funciones de liberalizacin de memoria y del dispositivo de imagen:
is_FreeImageMem (CamHandler, CamImagePointer, CamBufferID);
is_ExitCamera (CamHandler);
Puede devolver xito en la liberalizacin o fracaso.
Funcin para establecer el modo de captura de imagen:
is_SetColorMode (CamHandler, IS_CM_MONO8);
APNDICE C. INTERFAZ DE PROGRAMACIN DE LA CMARA 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-
lizacin o fracaso.
Conjunto de funciones para la reserva del buer de memoria para las
imgenes 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 funcin no se ha podido reservar memoria,
una macro de error der devuelta, en cuyo caso debemos volver a intentar
la reserva. El resto de funciones son complementarias, y es necesario que
para la correcta conguracin sean llamadas en el orden que se indica.
Pueden devolver xito en la inicializacin o fracaso.
Para obtener la imagen recin capturada del buer de memoria de la
cmara se utiliza la funcin:
is_FreezeVideo (CamHandler, IS_WAIT)
Cada vez que esta funcin es llamada (1 vez por iteracin del bucle) se
captura la imagen actual, con un retardo despreciable. La alternativa
a esta funcin se denomina is_CaptureVideo(), la cual segn el manual
de la cmara sirve para realizar captura contnua, pero al transferir la
imagen al espacio de programa del usuario, el tiempo no es despreciable,
y los efectos, tal y como se explica en el captulo 8, no son deseables.
Puede devolver xito en la captura o fracaso.
APNDICE C. INTERFAZ DE PROGRAMACIN DE LA CMARA 213
Apndice D
Diagrama temporal de Gantt.
214
Id. Nombre de tarea Comienzo Fin
mar 2010 abr 2010 may 2010
18/4 7/3 28/3 4/4 25/4 21/3 11/4 28/2 2/5 14/3
2 15/03/2010 01/03/2010 Lectura de artculos.
3 25/03/2010 10/03/2010
Configuracin de la plataforma para
las primeras implementaciones.
4 10/05/2010 29/03/2010
Migracin a la nueva plataforma de
desarrollo y primeras
aproximaciones.
5 02/04/2010 29/03/2010 Configuracin de OpenCV
1
6
7
8
9
10
25/03/2010 01/03/2010 Puesta en marcha
27/04/2010 27/04/2010 Deshecho del template matching.
09/04/2010 05/04/2010
Asimilacin de nuevos conceptos
tericos.
19/04/2010 12/04/2010 Primeras implementaciones.
20/04/2010 13/04/2010
Lectura de manuales de
programacin.
27/04/2010 21/04/2010 Primeros experimentos.
11
12
13
14
15
16
17
18
30/04/2010 28/04/2010 Nuevas alternativas.
10/05/2010 03/05/2010 Comienzo con el tablero de ajedrez.
15/06/2010 11/05/2010 Desarrollo de la primera propuesta.
13/05/2010 11/05/2010 Anlisis
14/05/2010 13/05/2010 Definicin del problema.
10/06/2010 11/05/2010 Nuevos conceptos tericos.
21/05/2010 17/05/2010 Primeras Implementaciones
21/05/2010 19/05/2010 Bsqueda de informacin.
19
20
21
22
23
24
25
26
27
25/05/2010 21/05/2010 Estudio de librera del sensor ptico.
02/06/2010 25/05/2010 Implementacin.
04/06/2010 02/06/2010 Primeras pruebas.
07/06/2010 03/06/2010 Correcciones.
11/06/2010 07/06/2010 Primeros experimentos.
25/05/2010 20/05/2010
Estudio del manual de calibracin de
la cmara.
28/05/2010 25/05/2010 Toma de imgenes para la calibracin.
11/06/2010 11/06/2010 Comprobacin de los resultados.
28
29
30
31
14/06/2010 11/06/2010 Experimentos con la plantilla.
15/06/2010 15/06/2010 Conclusiones.
05/08/2010 17/06/2010 Segunda propuesta.
21/06/2010 17/06/2010 Estudio de la teora.
25/06/2010 21/06/2010
Primeras pruebas con
cvGoodFeaturesToTrack()
32
33
34
05/07/2010 28/06/2010 Primeras pruebas con flujo ptico.
16/07/2010 05/07/2010 Implementacin.
30/07/2010 20/07/2010
Estudio e Implementacin de la
descomposicin de la matriz de
homografa.
05/08/2010 02/08/2010 Conclusiones.
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/2010 02/08/2010 Memoria
30/08/2010 02/08/2010 Recopilacin de Informacin.
10/09/2010 05/08/2010 Redaccin.
17/09/2010 10/09/2010 Correccin
Apndice E
Diagrama de clases de la
aplicacin
216
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.hpp homographyDecomposition.hpp
<<uses>> <<uses>>
IntrinsicMatrix.xml
<<uses>>
DistortionCoeffs.xml
<<uses>>
ConfigHardware.ini
<<uses>>
OpenCV
*.so
*.hpp
Libreria Cmara
*.so
*.hpp
<<uses>> <<uses>>
*.a
<<uses>>
<<uses>>
TMatrix
TVector
Librerias
comunes
CSensorAltura
-GestorPic
-Altura
-Inicializado
+CSensorAltura()
+inicializa()
+leeDatos()
+finaliza()
Bibliografa
[1] Jianhong Liang, Xusheng Lei, Song Wang, Yongliang Wu and Tianmiao
Wang. A Small Unmanned Aerial Vehicle for Polar Research. Procee-
dings of the IEEE International Conference on Automation and Logistics
Qingdao, China September 2008.
[2] Jovan D. Boskovic, Ravi Prasanth and Raman K. Mehra. A Multi-Layer
Control Architecture for Unmanned Aerial Vehicles. Proceedings of the
American Control Conference Anchorage, AK May 8-1 0,2002.
[3] Nicolas Guenard, Tarek Hamel, and Robert Mahony. A Practical Visual
Servo Control for an Unmanned Aerial Vehicle. IEEE Ttransactions on
robotics, vol. 24, no. 2, April 2008.
[4] Warren R. Dufrene, Jr. AI Techniques in Uninhabited Aerial Vehicle
Flight.
[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 Information
and 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 The
Tele Operation Of An Unmanned Aerial Vehicle Known As An X4-
yer. Proceedings of the 2006 IEEE/RSJ International Conference on
Intelligent Robots and Systems October 9 - 15, 2006, Being, China.
[8] Peter W. Sarunic, Robin J. Evans. Control of Unmanned Aerial Vehicles
Performing Multiple Target Passive Detection and Tracking.
[9] Ondrej Spinka, Stepan Kroupa, Zdenek Hanzalek. Control System for
Unmanned Aerial Vehicles.
218
BIBLIOGRAFA 219
[10] Bhaskar Prasad Rimal, Hyoim Shin and Eunmi Choi. Simulation of
Nonlinear Identication and Control of Unmanned Aerial Vehicle: An
Articial Neural Network Approach.
[11] Andon Topalov, Nikola Shakev, Severina Nikolova, Dobrin Seyzinski,
Okyay Kaynak. Trajectory Control of Unmanned Aerial Vehicle Using
Neural Nets with a Stable Learning Algorithm. 17th Mediterranean
Conference on Control & Automation Makedonia Palace, Thessaloni-
ki, Greece June 24 - 26, 2009.
[12] Warren R. Dufene, Jr., Graduate School of Computer and Information
Sciences, Nova Southeastem Universiy, Ft. Approach for autonomous
control of unmanned aerial vehicle using intelligent agents for knowledge
creation.
[13] Janne Heikkil and Olli Silvn. 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 Servo
Control Applications.
[16] Ong Wei Ming Eugene. Ground Control Station for Unmanned Aerial
Vehicles.
[17] Odile Bourquardez, Robert Mahony, Tarek Hamel and Franois Chau-
mette. Stability and performance of image based visual servo control
using rst order spherical image moments. Proceedings of the 2006
IEEE/RSJ International Conference on Intelligent Robots and Systems
October 9 - 15, 2006, Being, China.
[18] Peter I. Corke, Seth A. Hutchinson. A New Hybrid Image-Based Vi-
sual Servo Control Scheme. Proceedings of the 39 IEEE Conference on
Decision 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 a
class of aerial robotic systems.
BIBLIOGRAFA 220
[21] Alessandro Astol, Liu Hsu, Mariana S. Netto, and Romeo Ortega. Two
Solutions to the Adaptive Visual Servoing Problem. IEEE Transactions
on 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 Ane Reconstruction
closing the loop by Visual Servoing. Proceedings of the 2003 IEE/RSJ
Intl. Conference on Intelligent Robots and Sytems. Las Vegas, Nevada.
October 2003.
[24] Franois Chaumette, Ezio Malis. 2 1/2 D visual servoing: a possible
solution 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 features
tracking for robotic applications: towards 21/2D visual servoing with
natural images. Proceedings of the 2002 IEEE International Conference
on 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 and
Automation Orlando, Florida - May 2006.
[28] Christophe Collewet and Franois Chaumette. Positioning a Camera
With Respect to Planar Objects of Unknown Shape by Coupling 2-D
Visual Servoing and 3-D Estimations. IEEE Transactions on robotics
and automation, vol. 18, no. 3, june 2002.
[29] Andrew I. Comport, Eric Marchand, Franois Chaumette. Robust
model-based tracking for robot vision. Proceedings of 2004 IEE/RSJ
International Conference on intelligent Robots and Systems September
28 - 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 IEEE
International Conference on Robotics & Automation Washington, DC
May 2002.
BIBLIOGRAFA 221
[32] Nicholas Kottenstette. Constructive Non-Linear Control Design With
Applications 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 pattern
image.
[34] Hae YongKim. Rotation-discriminating template matching based on
Fourier coecients of radial projections with robustness to scaling and
partial 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. UAVs Research Videos.
1: http://www.youtube.com/watch?v=icdb9ftdZOw
2: 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, Los
Angeles, CA.
[39] Odile Bourquardez, Robert Mahony, Nicolas Guenard, Franois 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] Franois Chaumette. Visual Servo Control II. Advanced Approaches.
[42] Seth Hutchinson, Gregory D. Hager and Peter I. Corke. A Tutorial on
Visual 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 2000
IEEE lntemational Conference on Robotics & Automation San Francis-
co. CA April 2000.
[44] BEAR: Berkeley Aerobot Team.
http://robotics.eecs.berkeley.edu/bear/
BIBLIOGRAFA 222
[45] Harris, C. and Stephens, M. 1988. A combined corner and edge detector.
In 4th Alvey Vision Conference. 147151.
[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 Tracking
of Rigid Objects: A Survey.
[51] Franois Chaumette and Seth Hutchinson. Visual Servo Control Part I:
Basic Approaches.
[52] Guilherme Vianna Rao. Tesis de Mster. 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 Control
Synthesis for a UAV.
[55] A.K. Goodwin, G.K. Egan and F. Crusca. UAV Ridge Soaring in an
Unknown Environment.
[56] W.K. Kong, G.K. Egan and T. Cornall. Feature Based Navigation for
UAVs.
[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
BIBLIOGRAFA 223
[61] Aerospace Controls Laboratory . UAV SWARM Health Management
Project.
http://vertol.mit.edu/videos.html
[62] Frdric Jurie and Michel Dhome. Hyperplane Approximation for Tem-
plate Matching.
[63] David Suter, Tarek Hamel, Robert Mahony. Visual Servo Control using
homography estimation for the stabilization of an X4-yer.
[64] E. Montano and C. Sagues. Fast Pose Estimation For Visual Navigation
Using Homographies. The 2009 IEEE/RSJ International Conference on
Intelligent 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. Eects of camera-calibration errors on
the 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] Grgory Flandin Franois 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 Ecient 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 robotics
and automation. vol. 9, no. I , february 1993.
BIBLIOGRAFA 224
[75] Hill, J., and Park, W.T. Real Time Control of a Robot with a Mobile
Camera. 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., Andre, N., and Horaud, R. Controlling Robots
with Two Cameras: How to Do Properly. Proc. IEEE/RSJ Int. Conf. on
Robotics and Automation, pp. 2100-2105, 2000.
[79] Lamiroy, B. Puget, C. Horaud, R. What Metric Stereo Can Do for Visual
Servoing. Proceedings of the 2000 IEEE/RSJ Int. Conf. On Intelligent
Robots and Systems, pp. 251-256, 2000.
[80] Namiki, A., Hashimoto, K., and Ishikawa, M. A Hierarchical Control
Architecture for High-Speed Visual Servoing. International Journal of
Robotics 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 the
2001 IEEE International Conference on Control Applications, Mexico
City, September 5-7, 2001.
[82] Deng, L., Janabi-Shari, F., and Wilson, W.J. Stability and Robustness
of Visual Servoing Methods. Proceedings of the 2002 IEEE International
Conference on Robotics and Automation, Washington, DC, May, 2002.
[83] Chaumette, F. Potencial Problems of Stability and Convergence in
Image-Based and Position-Based Visual Servoing. The Conuence of
Vision and Control.
[84] Martin, F., and Horaud, R. Mltiple-camera tracking of Rigid objects.
International Journal of Robotics Research. Vol. 21, No. 2, pp. 97-113.
[85] Espiau, B. Eect 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 of
Uncalibrated Visual Servoing for Precision Manipulation. Proceedings
of Int. Conf. Robotics & Automation, 1997.
BIBLIOGRAFA 225
[87] Iwatsuki, M., and Okiyama, N. A New Formulation of Visual Servoing
Based 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. 2D Visual Servoing. IEEE
Trans. 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, Las
Vegas, Nevada USA, 2002.
[91] Deguchi, K. Optimal motion Control for Image-Based Visual Servoing
by Decoupling Traslation and Rotation. Proccedings of the IEEE/RSJ
Int. Conf. on Intelligent Robots and Systems, Victoria, B.C. Canada,
1998.
[92] Hutchinson, S., and Gans, N. Switching Approaches to Visual Servo
Control. Proceedings IEEE Int. Symposium, 27-30 October, 2002.
[93] Hafez, A.H.A, and Jawahar C.V. Visual Servoing by Optimization of a
2D/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 to
Image-Based Visual Servo Control. IEEE Transaction on Robotics and
Automation, Vol. 17, No 4, August, 2001.
[95] Cretual, A, and Chaumette, F. Positioning a Camera Parallel to a Plane
Using Dynamic Visual Servoing. IEEE Int. Conf. On Intelligent Robots
and Systems, Vol. 1, pp. 43-48, Grenoble, France, 1997.
[96] Colombo, C. Allota, B., and Daro, P. Ane Visual Servoing: A Frame-
work for Relative Positioning with a Robot. Int. Conf. on Robotics and
Automation, pp. 464-471, Nagoya, Japan, 1995.
[97] Wesoma, S., Wolfe, D., and Richards, R. Eye-to-Hand Coordination
for Vision-Guided Robot Control Applications. International Journal
on Robotics Research, vol. 12, No 1, pp.65-68, 1993.
BIBLIOGRAFA 226
[98] Papanikolopoulos, N.P., Khosla, P.K., and Kanade, T. Visual Tracking
of a Moving Target by a Camera Mounted on a Robot: A Combination
of 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 European
Naval Ship Design Short Course, Brest, France, April, 2002.
[100] Suh, I. Visual Servoing of Robot Manipulators by Fuzzy Membership
Function Based Neural Networks. K. Hashimoto editor, Visual Servoing,
pp. 285-315, World Scientic, Singapore, 1993.
[101] Mezouar, Y., and Chaumette, F. Optimal Camera Trajectory with
Image-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. IEEE
Transactions on Fuzzy Systems, to appear, 2007.
[103] Dementhon, D., and Davis, D.S. Model-Based Object Pose in 25 Lines
of Code. International Journal of Computer Vision, 15(1/2), pp. 123-
141, 1995.
[104] Pari, L., Sebastin, J.M., Gonzlez, C., and Angel, L. Image Based Vi-
sual Servoing: a New Method for the Estimation of the Image Jacobian
in 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-Shari, F. Robust Image Processing
and Position-Based Visual Servoing. M. Vincze & Hager Ed. Robust
vision for manipulation. Spie/IEEE Series, pp. 163-220, 2000.
[108] Malis, E. Theoretical Improvements in the Stability Analysis of a New
Class of Model-Free Visual Servoing Methods. IEEE Transactions on
Robotics and Automation, Vol. 18, No 2, 2002.
[109] Anderson, R.L. Dynamic Sensing in a Ping-Pong Playing Robot. IEEE
Trans. Robotics and Automation, 5(6):723-739, 1989.
BIBLIOGRAFA 227
[110] Espiau, B., Chaumette, F. and Rives, P. A New Approach to Visual
Servoing in Robotics. IEEE Transactions on Robotics and Automation,
Vol. 8, No 3, 1992 .
[111] Eric Beets, Samia Boukir, and David Suter. Aircraft Pose Estimation
from Homography.
[112] Bourquardez, O., and Chaumette, F. Visual Servoing of an Airplane
for Alignment with Respect to a Runway. Proceeding of the 2007 IEEE
International Conference on Robotics and Automation, Roma, April 10-
14 2007.
[113] Namiki, A., Nakabo, Y., Ishii, I., and Ishikawa, M. 1-ms Sensory-Motor
Fusion System. IEEE/ASME Transactions on Mechatronics, vol. 5, No
3, September 2000.
[114] Moravec, H. 1979. Visual mapping by a robot rover. In Proceedings
of the International Joint Conference on Articial Intelligence (CAI).
598600.
[115] Lowe, D. 2004. Distinctive image features from scale-invariant keypoints.
Int. J. Comput. Vision 60, 2, 91110.
[116] Mikolajczyk, K. and Schmid, C. 2003. A performance evaluation of lo-
cal descriptors. In IEEE Conference on Computer Vision and Pattern
Recognition (CVPR). 16151630.
[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 121{130, 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 with
the OpenCV Library, OReilly, 2008.
[121] Autonomous Helicopter Project, Carnegie Mellon University.
http://www.cs.cmu.edu/afs/cs/project/chopper/www/history.
html
[122] N. Andre, R. Horaud and B. Espiau, Robot Hand-Eye Calibration
Using Structure from- Motion, The International Journal of Robotics
Research, Vol. 20, No. 3, pp.228-248, 2001.
BIBLIOGRAFA 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 Vehicle
Guidance Interfaces, Emily M.Craparo, MIT,2002.
[128] California Institute of Technology.
http://www.caltech.edu/
[129] Fusin Sensorial imu-Cmara. 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, WCCI08, Hong
Kong, 2008.
http://www.youtube.com/watch?v=JiyCXF6cnpQ
BIBLIOGRAFA 229