cenidet...resumen en este trabajo se investiga la visión binocular (visión artificial con dos...

111
cenidet Centro Nacional de Investigación y Desarrollo Tecnológico Departamento de Ciencias Computacionales TESIS DE MAESTRIA EN CIENCIAS Visión binocular para robot móvil en exteriores simulados Presentada por: Sergio Alejandro González Segura Ingeniero en Sistemas Computacionales por el Instituto Tecnológico de Mérida Como requisito para la obtención del grado de: Maestro en Ciencias en Ciencias de la Computación Director de tesis: Dr. José Ruiz Ascencio Jurado: Dr. Raúl Pinto Elías – Presidente M.C. Andrea Magadán Salazar – Secretario Dr. Andrés Blanco Ortega – Vocal Cuernavaca, Morelos, México. 28 de febrero de 2011

Upload: others

Post on 11-May-2020

44 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

cenidetCentro Nacional de Investigación y Desarrollo Tecnológico

Departamento de Ciencias Computacionales

TESIS DE MAESTRIA EN CIENCIASVisión binocular para robot móvil en exteriores simulados

Presentada por:Sergio Alejandro González Segura

Ingeniero en Sistemas Computacionales por el Instituto Tecnológico de Mérida

Como requisito para la obtención del grado de:Maestro en Ciencias en Ciencias de la Computación

Director de tesis:Dr. José Ruiz Ascencio

Jurado:Dr. Raúl Pinto Elías – Presidente

M.C. Andrea Magadán Salazar – SecretarioDr. Andrés Blanco Ortega – Vocal

Cuernavaca, Morelos, México. 28 de febrero de 2011

Page 2: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos
Page 3: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos
Page 4: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Agradecimientos

A la Universidad Autónoma de Yucatán (UADY) por la licencia y el apoyo económico que me proporcionó a lo largo de mis estudios de maestría.

Al Centro Nacional de Investigación y Desarrollo Tecnológico (CENIDET) y su personal por sus enseñanzas y orientación en estos años de aprendizaje.

Al Consejo Nacional de Ciencia y Tecnología (CONACYT) por el apoyo económico proporcionado a este proyecto.

A mi asesor, el Dr. José Ruiz Ascencio, por su dirección, enseñanzas y orientación a lo largo del desarrollo de este proyecto.

A mis revisores, el Dr. Raúl Pinto Elías, la M.C. Andrea Magadán Salazar y el Dr. Andrés Blanco Ortega por sus importantes comentarios y observaciones.

A mis amigos y compañeros que me aguantaron y ayudaron durante este período: Norma Elizabeth Valencia, Jorge Alberto Fuentes, Andrea Magadán, Manuel Escalante, Cinhtia González, David Pech, Ana Isabel González, César Ordax-Avecilla, Claudia Aime Suárez.

Y a mis amigos y compañeros en la UADY, sin cuyo apoyo esta aventura no hubiera empezado.

Visión binocular para robot móvil en exteriores simulados i

Page 5: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Resumen

En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos de navegación y se construye un robot móvil para probar la efectividad de los algoritmos investigados.

Se estudian y analizan diversas técnicas de visión binocular, las cuales se utilizan para la construcción de un sistema de visión para robots móviles, que va desde la obtención de imágenes hasta odometría, pasando por correspondencia y reconstrucción. Este sistema utiliza técnicas y algoritmos básicos elegidos de entre los estudiados, y pretende ser asimilable y extensible. Esto significa que es posible diseñar nuevos algoritmos de correspondencia o de navegación, y probarlos en el sistema sin grandes dificultades.

También se construye un robot móvil y, mediante experimentos, se obtienen sus parámetros de funcionamiento. Este robot tiene piezas de baja precisión, pero es económico y funciona suficientemente bien para las necesidades del sistema de visión. Consiste en dos cámaras, una laptop, dos motores de corriente directa, una tarjeta de potencia con interfaz USB y una plataforma con ruedas.

Para la calibración, rectificación y reconstrucción se usa el método de Bouguet; se prueban tres métodos de correspondencia por bloques; se desarrollan dos algoritmos de navegación que usan la información de la reconstrucción; y el software se implementa en una colección de clases en C++ diseñadas para extenderse con otros algoritmos.

La reconstrucción proporciona una colección de puntos 3D, varias imágenes tipo “vista de pájaro” y un vector de profundidades 1D que contiene las distancias a los obstáculos para cada ángulo. No se recuerda la información previa, lo que significa que la información se olvida entre cada par de procesamientos.

Se realizan experimentos en un ambiente controlado de suelo plano en el cual se colocan algunos obstáculos con alta textura (como los esperados en ambientes exteriores, por lo que el ambiente se denomina “exteriores simulados”). Se concluye que el sistema de visión permite al robot esquivar los obstáculos de forma segura a pesar de la falta de precisión del robot y del desconocimiento del ambiente.

Visión binocular para robot móvil en exteriores simulados iii

Page 6: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Abstract

In this work binocular vision (artificial vision with two cameras focused on the same scene) is investigated as an information source for navigation algorithms and a mobile robot is built to test the effectiveness of the investigated algorithms.

Several binocular vision techniques are studied and analyzed, and are used to build a mobile robot vision system, from image capture to odometry, including correspondence and reconstruction. This system uses techniques and basic algorithms selected from those studied, and aims to be understandable and extensible. So it is possible to design new matching or navigation algorithms, and test them in the system without major difficulties.

Also a mobile robot is built and, through experiments, its working parameters are obtained. This robot has low precision parts, but is cheap and works well enough for the needs of the vision system. It consists of two cameras, a laptop, two direct current motors, a power board with USB interface and a wheeled platform.

Bouguet’s method is used for calibration, correction and reconstruction; three block matching methods are tested; two navigation algorithms, which use the reconstruction information, are developed; and the software is implemented in a library of C++ classes designed to be extended with other algorithms.

The reconstruction provides a collection of 3D points, several “bird's view” images and a 1D depth vector with the obstacle distances for each angle. No prior information is recalled, which means that information is forgotten between each pair of processes.

Experiments are conducted in a controlled environment with a flat floor in which are placed some obstacles with high texture (as those expected in outdoor environments, so that the environment is called "simulated outdoors”). It is concluded that the vision system enables the robot to avoid obstacles safely despite the imprecision of the robot and the unknown environment.

Visión binocular para robot móvil en exteriores simulados iv

Page 7: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Índice de contenido

Agradecimientos...........................................................................................................................i

Resumen.....................................................................................................................................iii

Abstract.......................................................................................................................................iv

Índice de figuras........................................................................................................................vii

Capítulo 1 Introducción.............................................................................................................11.1 Antecedentes......................................................................................................................31.2 Descripción del problema..................................................................................................41.3 Objetivo.............................................................................................................................51.4 Metodología de solución...................................................................................................51.5 Alcances y limitaciones.....................................................................................................51.6 Organización de la tesis.....................................................................................................7

Capítulo 2 Fundamentos teóricos y estado del arte...................................................................82.1 Coordenadas cartesianas...................................................................................................8

2.1.1 Traslación..................................................................................................................92.1.2 Rotación.....................................................................................................................9

2.2 Coordenadas homogéneas...............................................................................................112.3 Imágenes.........................................................................................................................132.4 Puntos destacados............................................................................................................132.5 Proyección en perspectiva...............................................................................................142.6 Homografía.....................................................................................................................182.7 Ecuación de línea en coordenadas homogéneas..............................................................192.8 Visión estéreo..................................................................................................................20

2.8.1 Calibración..............................................................................................................202.8.1.1 Métodos tradicionales usando objetivos 3D....................................................222.8.1.2 Métodos basados en objetivos 2D...................................................................23

2.8.2 Correspondencia......................................................................................................252.8.3 Reconstrucción........................................................................................................35

2.9 Navegación......................................................................................................................402.10 Aplicaciones de robots móviles que usan visión estéreo...............................................42

Capítulo 3 Robot móvil............................................................................................................443.1 Control de velocidad de los motores...............................................................................493.2 Comunicación del robot con la laptop.............................................................................503.3 Firmware del robot móvil................................................................................................513.4 Caracterización del robot móvil......................................................................................53

Capítulo 4 Software.................................................................................................................564.1 Obtención de imágenes estéreo.......................................................................................57

Page 8: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

4.2 Calibración......................................................................................................................594.3 Rectificación....................................................................................................................614.4 Reconstrucción................................................................................................................62

4.4.1 Desproyección.........................................................................................................624.4.2 Proyección paralela sobre el plano del suelo...........................................................634.4.3 Selección de posibles obstáculos más cercanos......................................................654.4.4 Dilatación proporcional para esquivar obstáculos...................................................66

4.5 Algoritmos de correspondencia.......................................................................................674.5.1 Algoritmo BM.........................................................................................................684.5.2 Algoritmo SGBM....................................................................................................704.5.3 Algoritmo BTM.......................................................................................................714.5.4 Resumen..................................................................................................................72

4.6 Odometría........................................................................................................................734.7 Navegación......................................................................................................................73

Capítulo 5 Experimentación y resultados................................................................................775.1 Calibración......................................................................................................................775.2 Rectificación....................................................................................................................785.3 Triangulación...................................................................................................................785.4 Simulaciones...................................................................................................................805.5 Pruebas en el ambiente de exteriores simulados.............................................................81

Capítulo 6 Conclusiones y trabajo futuro................................................................................866.1 Conclusiones finales........................................................................................................866.2 Aportaciones....................................................................................................................876.3 Trabajo futuro..................................................................................................................87

Referencias.................................................................................................................................89

Anexo A: Librerías y herramientas............................................................................................95

Anexo B: Manual de usuario del software.................................................................................98

Page 9: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Índice de figuras

Figura 1.1: Visión binocular.........................................................................................................1Figura 1.2: Disparidad.................................................................................................................2Figura 1.3: Robot móvil...............................................................................................................2Figura 1.4: Ambiente de exteriores simulados.............................................................................3Figura 1.5: Patrón de calibración tipo “tablero de ajedrez”.........................................................6Figura 2.1: Representación de un punto en plano cartesiano.......................................................8Figura 2.2: Traslación de un punto..............................................................................................9Figura 2.3: Rotación de los vectores generadores.......................................................................9Figura 2.4: Rotación de los vectores generadores en ángulo negado........................................11Figura 2.5: Imagen tipo mosaico de pixeles..............................................................................13Figura 2.6: Etapas típicas de un detector de esquinas [Teixeira 2008]......................................14Figura 2.7: (a) Cámara Pinhole; (b) Proyección en una cámara Pinhole...................................15Figura 2.8: Proyección en el eje {y}..........................................................................................15Figura 2.9: Proyección para el eje {x}.......................................................................................15Figura 2.10: Traslación y rotación de la cámara........................................................................17Figura 2.11: Proyección de un plano en otro plano...................................................................18Figura 2.12: Línea y punto en coordenadas homogéneas..........................................................19Figura 2.13: Distorsión radial [Bradski 2008]...........................................................................21Figura 2.14: Patrones de calibración de dos planos [Tsai 1987] y de un plano [Zhang 2000]. .21Figura 2.15: Línea epipolar. Modificado de [Hillman 2005].....................................................26Figura 2.16: Cálculo de {ud} usando {G}.................................................................................27Figura 2.17: Puntos especiales: a) epipolo; b) homógrafo cero................................................28Figura 2.18: Formación de imágenes en cámaras paralelas [López 2005]................................30Figura 2.19: Rectificación usando una homografía...................................................................30Figura 2.20: Rectificación [Brown 2003]..................................................................................31Figura 2.21: Representación de la disparidad............................................................................31Figura 2.22: Correspondencia por bloques [Bradski 2008].......................................................32Figura 2.23: Resolución subpixel..............................................................................................33Figura 2.24: Oclusión.................................................................................................................33Figura 2.25: Correspondencia por bloques con líneas epipolares no paralelas.........................33Figura 2.26: Malla no-estática [Kosov 2009]. La flecha indica la peculiaridad........................35Figura 2.27: Triangulación en cámaras paralelas.......................................................................37Figura 2.28: Escala del vector {[uT f]T}...................................................................................38Figura 2.29: Clasificación en transitable y obstáculo [DeCubber 2009] con V-disparity.........38Figura 2.30: Etapas de la visión en el robot José [Murray 2005]: (a) imagen; (b) mapa de disparidades 2D; (c) mapa de disparidades 1D; (d) disparidades con ruido; e) mapa de profundidades 1D.......................................................................................................................39Figura 2.31: Robot QRIO [Gutmann 2008] con obstáculos, escaleras y una mesa a manera de túnel............................................................................................................................................39

Visión binocular para robot móvil en exteriores simulados vii

Page 10: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 2.32: Malla 3D de ocupación [Gutmann 2008]..............................................................40Figura 2.33: Mapa tipo tessalation [Buffa 1992].......................................................................41Figura 2.34: Simulaciones de un RRT [Bruce 2003].................................................................41Figura 2.35: Campos de "esquivar" y de "atracción" [Hernández 2005]...................................42Figura 2.36: “Spirit”*, uno de los Rover usados en la exploración de Marte............................42Figura 2.37: Guía de museos RHINO [Burgard 1999]..............................................................43Figura 3.1: Diagrama de bloques del robot móvil.....................................................................44Figura 3.2: Cámara webcam Logitech Pro 9000.......................................................................44Figura 3.3: Robot móvil y sus tres ruedas..................................................................................45Figura 3.4: Par estéreo...............................................................................................................45Figura 3.5: Diagrama a bloques de la tarjeta de interfaz...........................................................46Figura 3.6: Funcionamiento del PWM.......................................................................................46Figura 3.7: Puente H * ..............................................................................................................47Figura 3.8: Prototipo de la tarjeta de interfaz............................................................................48Figura 3.9: Diagrama esquemático del circuito de la tarjeta de interfaz...................................48Figura 3.10: Control de dirección de los motores......................................................................49Figura 3.11: Emulación de RS-232 sobre USB [Rojvanit 2004]...............................................50Figura 3.12: Estructura del firmware.........................................................................................52Figura 3.13: Curva de movimiento versus tiempo.....................................................................53Figura 3.14: Dos regiones de operación del estimado de movimiento......................................53Figura 3.15: Movimientos lateral y al frente del giro................................................................55Figura 4.1: Diagrama de clases del software.............................................................................56Figura 4.2: Colección de imágenes para calibración [Bouguet 2010].......................................58Figura 4.3: Esquinas coloreadas en un patrón tipo "tablero de ajedrez"....................................59Figura 4.4: Distorsión radial......................................................................................................60Figura 4.5: Distorsión tangencial [Bradski 2008]......................................................................60Figura 4.6: Rectificación............................................................................................................62Figura 4.7: Calibración del suelo...............................................................................................63Figura 4.8: Proyección paralela sobre el plano del suelo...........................................................64Figura 4.9: Ejemplo de colisión debida al ancho del robot........................................................66Figura 4.10: Cálculo de la dilatación.........................................................................................67Figura 4.11: Ambiente para calibrar los algoritmos de correspondencia, vista lateral y de pájaro..........................................................................................................................................68Figura 4.12: BM con parámetros predeterminados....................................................................69Figura 4.13: BM con ventana de 41 pixeles..............................................................................70Figura 4.14: Definiciones para la métrica Birchfield-Tomasi....................................................71Figura 4.15: SGBM con ventana de 3 pixeles y demás parámetros predeterminados...............71Figura 4.16: SGBM con ventana=3, P1=6*3*3*3, P2=64*3*3*3, uniquenessRatio=30, speckleWindow=250, speckleRange=32...................................................................................71Figura 4.17: BTM con parámetros predeterminados.................................................................72Figura 4.18: Actualización de coordenadas del robot móvil......................................................73Figura 4.19: Máquina de estados de Navegador........................................................................74Figura 4.20: Cálculo de la distancia mínima a los obstáculos...................................................75

Visión binocular para robot móvil en exteriores simulados viii

Page 11: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 4.21: Ejemplo de colisión debida a obstáculos fuera del área de visión........................75Figura 4.22: Algoritmo para esquivar obstáculos......................................................................76Figura 5.1: Prueba de la rectificación........................................................................................78Figura 5.2: Esquivar por la izquierda y por la derecha..............................................................80Figura 5.3: Pasar entre dos y entre tres obstáculos....................................................................81Figura 5.4: Ejemplo de falla en el algoritmo de navegación.....................................................81Figura 5.5: Obstáculos usados en los experimentos..................................................................82Figura 5.6: Vista estéreo del obstáculo mesa.............................................................................82Figura 5.7: Vista estéreo del obstáculo pared 1.........................................................................83Figura 5.8: Vista estéreo del obstáculo pared 2.........................................................................83Figura 5.9: Vista estéreo del obstáculo planta............................................................................84Figura 5.10: Vista estéreo del obstáculo roca............................................................................84Figura 5.11: Vista estéreo del obstáculo silla.............................................................................84Figura 5.12: Experimento en el cual el robot pasa entre las patas de una silla..........................85

Visión binocular para robot móvil en exteriores simulados ix

Page 12: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Índice de tablas

Tabla 3.1: Control de velocidad y dirección de los motores......................................................49Tabla 3.2: Formato del tercer número en la cadena de control..................................................51Tabla 3.3: Experimentos para caracterizar al robot móvil.........................................................54Tabla 4.1: Comparación de algoritmos de correspondencia......................................................72Tabla 5.1: Reconstrucción de un triángulo virtual.....................................................................79Tabla 5.2: Reconstrucción de un triángulo real..........................................................................80

Visión binocular para robot móvil en exteriores simulados x

Page 13: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Capítulo 1 Introducción

Desde que se introdujo en la literatura el término “robot” ha tomado varios significados, desde entidades virtuales hasta mecanismos físicos. Arkin [Arkin 1998] define a los robots como: “un robot es una máquina capaz de extraer información de su ambiente, y usar este conocimiento para moverse de forma segura, en una manera significativa y con propósito”. Esta definición es adecuada para los robot móviles, los cuales pueden desplazarse por un ambiente.

Existen múltiples variantes de robots móviles: con ruedas, con patas, tipo serpiente, humanoides, aéreos, submarinos, etc. Estos robots suelen usarse en ambientes no estructurados, cambiantes y/o desconocidos, como por ejemplo: exploración planetaria [Goldberg 2002][Maimone 2007], exploración submarina [Dudek 2006][Dudek 2007], transporte de material, guías de recorridos en museos [Burgard 1999], agricultura [Rovira-Más2007], etc. En general son atractivos para realizar tareas que a los humanos les resultan tediosas, desagradables, peligrosas o incluso inalcanzables. Los robots móviles usualmente son conocidos como sistemas AGV (Automated Guided Vehicles, Vehículos Guiados Automáticamente) [Bertozzi 2000] y AMR (Autonomous Mobile Robotics, Robots Móviles Autónomos) [DeSouza 2002].

En ambientes estructurados y controlados los robots no requieren obtener información de su ambiente en tiempo real, por ejemplo: los brazos robot usados ampliamente en la automatización de procesos industriales. Sin embargo, en ambientes cambiantes es muy importante obtener información en tiempo real.

Para muchas especies animales el sentido de la vista proporciona una gran cantidad de información sobre el entorno, por lo que la visión es potencialmente muy rica como sensor para los robots. En la visión binocular (Figura 1.1) biológica ambos ojos se enfocan sobre la misma escena, produciendo imágenes con ligeras diferencias, de las cuales el cerebro obtiene información de profundidad rápidamente y sin esfuerzo consciente, en base al ángulo entre los ojos y las diferencias en las imágenes. Este proceso se conoce como estereopsis.

Figura 1.1: Visión binocular

En la visión binocular artificial, en forma análoga a la biológica, se enfocan dos cámaras a la

Visión binocular para robot móvil en exteriores simulados 1

Page 14: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

misma escena. Esto produce dos imágenes con ligeras diferencias entre sí, las cuales se miden como disparidades (Figura 1.2), y de ellas las computadoras obtienen información de profundidad mediante algoritmos de visión estéreo. Sin embargo, los procesos conocidos todavía son costosos computacionalmente y están sujetos a errores.

Figura 1.2: Disparidad

La visión binocular como sensor de profundidad para robots es muy atractiva por su potencial riqueza, por ser no-invasiva (utiliza iluminación natural) y por ser análoga a la visión humana, además de que en comparación con otras técnicas (por ejemplo: flujo óptico) es menos sensible a los cambios en el ambiente [Limongiello 2006]. En contra tiene el alto costo computacional debido a la gran cantidad de datos a procesar, sin embargo, las computadoras han ido aumentando su poder de cálculo, a la par que las cámaras de video para computadoras (webcam) han ido bajando de precio, por lo que la visión binocular se ha hecho más factible y asequible.

En este trabajo se realiza una revisión del estado del arte y del marco conceptual de la visión estéreo para robots móviles, y se explora a la visión binocular como sensor de profundidad para los mismos. También se construye un robot móvil y se implementa un sistema de visión binocular.

Como robot móvil se utiliza un carrito de tres ruedas, de 30cm x 30cm de base y 25cm de alto (Figura 1.3). Dicho robot se caracteriza, y con la información de la caracterización se implementa un módulo de odometría (estudio de la posición del robot móvil durante la navegación).

Figura 1.3: Robot móvil

Capítulo 1 Introducción 2

Page 15: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Para la navegación se diseña un algoritmo simple basado en máquinas de estado, el cual esquiva obstáculos mientras se dirige a su objetivo. Como entrada utiliza las distancias y ángulos a los obstáculos, información obtenida con visión binocular, y su salida son comandos de desplazamientos y giros.

Debido a que el robot móvil construido usa ruedas para desplazarse, el ambiente de pruebas tiene un suelo plano. Por otro lado, debido a los intereses de la línea de investigación de visión robótica en el trabajo agroforestal en particular de agricultura protegida, los obstáculos son típicos de la naturaleza. Este tipo de ambiente se define como exteriores simulados (Figura1.4).

En las pruebas finales el robot esquiva exitosamente obstáculos de la naturaleza (rocas, plantas) y de interiores (sillas, mesas, paredes), esto valida al sistema de visión y se concluye que puede ser utilizado en ambientes de exteriores simulados, por ejemplo para vigilar cultivos protegidos en invernaderos.

1.1 Antecedentes

En el Centro Nacional de Investigación y Desarrollo Tecnológico (CENIDET) la visión estéreo ha sido explorada en la línea de investigación de visión robótica del área de Inteligencia Artificial del departamento de Ciencias Computacionales. A continuación una breve descripción de algunos trabajos desarrollados en el CENIDET y considerados como antecedentes a éste:

En la tesis “Visión Estereoscópica y Estimación de Pose para el Posicionamiento de un Brazo Robótico”[Gómez 2008] se implementaron dos algoritmos de calibración, uno de triangulación lineal y uno de estimación de pose. También se diseñó y construyó una cuarta articulación para un brazo robot tipo PUMA (Programmable Universal Manipulator Assembly), con su tarjeta de potencia. Los objetos con los que se trabajó fueron tres diodos

Visión binocular para robot móvil en exteriores simulados 3

Figura 1.4: Ambiente de exteriores simulados

Page 16: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

emisores de luz o LED, los cuales se localizan usando segmentación por color. Se trabajó con un par de cámaras fijas en configuración estéreo y con una cámara montada en el brazo robótico.

En la tesis “Seguimiento y asimiento de un objeto en movimiento por medio de un robot manipulador y visión estéreo”[Fuentes 2009] se implementó un sistema capaz de seguir y asir un objeto móvil en tiempo real, el cual consta de 2 partes: un sistema de visión y uno de control. El sistema de visión usa detección por color para extraer el objeto del fondo, una técnica de triangulación para estimar la posición del objeto, y un predictor lineal para estimar la trayectoria del objeto en tres dimensiones.

La presente tesis se diferencia de las anteriores en que agrega la capacidad de trabajar en tiempo real, utiliza varios algoritmos de correspondencia, las cámaras no son fijas ya que el par estéreo de cámaras está montado sobre el robot móvil, y se incluye un algoritmo de navegación para utilizar los resultados del módulo de visión. Además, En los trabajos anteriores la triangulación se hacía sobre los centroides de áreas obtenidas con segmentación, en cambio en el presente trabajo la triangulación es sobre pares de puntos encontrados con los algoritmos de correspondencia.

1.2 Descripción del problema

Probablemente el problema más representativo sea operar en tiempo real, pues aunque los algoritmos sean muy precisos, si los resultados se entregan demasiado tarde ya no son útiles. El tiempo real involucra la selección y posible modificación de algoritmos de visión estéreo, especialmente en correspondencia y reconstrucción.

También es necesario considerar un equilibrio entre precisión y rapidez, pues generalmente son excluyentes. Se requiere información suficientemente precisa y confiable, y de forma suficientemente rápida, tomando en cuenta los recursos computacionales disponibles.

El ambiente en el que se trabaja es no estructurado, esto significa que el sistema de visión debe ser general, sin suposiciones de estructuras en su interior.

Los objetos del ambiente son tanto de la naturaleza como de interiores, lo que significa que algunos tienen alta textura mientras que otros baja textura. Esto se refleja en que los algoritmos de correspondencia deben funcionar bien con ambos tipos de objetos, o bien clasificar áreas en baja textura y alta textura y ejecutar algoritmos diferentes según el tipo de área.

Además de los anteriores existen otros problemas de la visión estéreo y de los robots móviles que deben atenderse, como son: la sincronización de las cámaras y la vibración de la estructura física.

Capítulo 1 Introducción 4

Page 17: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

1.3 Objetivo

Investigar e implementar un sistema de visión artificial estéreo binocular que permita a un robot móvil avanzar y esquivar obstáculos en un ambiente de interiores con algunos objetos de exteriores (exteriores simulados).Para lograr ésto el sistema debe:

• Operar en tiempo real, es decir, su tiempo de respuesta debe ser de aproximadamente un segundo en un robot avanzando a medio metro por segundo.

• Funcionar en una computadora personal portátil típica, es decir: 1 GB en RAM y 3 GHz de procesador.

• Funcionar con algunos objetos de interiores (suelo plano) y de la naturaleza (piedras y plantas).

• Generar un mapa 2D de profundidades, el cual es un arreglo 2D donde cada elemento contiene las coordenadas 3D de un punto.

1.4 Metodología de solución

El esquema de solución que se propuso es el siguiente:1. Estudiar la visión binocular: calibración, correspondencia y reconstrucción.2. Implementar un módulo de visión binocular que obtenga un mapa 2D de

profundidades.3. Construir o adquirir un robot móvil.4. Caracterizar al robot móvil.5. Implementar un módulo de control para el robot móvil.6. Fijar las cámaras en el robot móvil.7. Probar el módulo de visión.8. Implementar un módulo de navegación.9. Integrar los módulos en el sistema de visión.10. Realizar pruebas y optimizar para tiempo real, tipo de ambiente (exteriores simulados)

y detalles del robot móvil.

1.5 Alcances y limitaciones

Se diseñó y construyó un robot móvil (Figura 1.3) de tres ruedas controlado por una laptop para probar el sistema de visión. Entre sus particularidades están:

• La computadora (laptop) tiene un procesador de 1.6 Ghz y 1 GB de RAM. • Las máximas velocidades en línea recta y angular fueron 43 cm por segundo y 83

grados por segundo respectivamente.

Visión binocular para robot móvil en exteriores simulados 5

Page 18: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Se calibró y usó un par estéreo de cámaras. Para la calibración se utilizó un patrón de calibración tipo “tablero de ajedrez” (Figura 1.5) el cual se imprimió y fijó a una base de acrílico para este fin. Aunque la visión estéreo puede realizarse con más de dos cámaras, el sistema construido sólo utilizó la configuración binocular.

Figura 1.5: Patrón de calibración tipo “tablero de ajedrez”

Se diseñó e implementó un módulo de visión estéreo, el cual entrega un mapa de profundidades 2D, además de uno 1D y varios mapas tipo “vista de pájaro”, es decir, similares a fotografías tomadas desde arriba. Como restricciones: los mapas sólo abarcan lo que el robot esté viendo en ese momento, y no se utiliza la información de un mapa anterior en la generación del siguiente.

No se realizó SLAM (Simultaneous Localization And Mapping), es decir, no se usó la visión para generar un mapa ni localizar al robot en él. En vez de eso, el sistema mantiene un estado interno que incluye las coordenadas del robot, e intenta llegar a las coordenadas destino.

Se diseñó e implementó un módulo de navegación el cual utiliza el mapa de profundidades 1D. El mapa de profundidades 1D es un resumen del mapa de profundidades 2D, por lo que, de forma indirecta, usa el mapa de profundidades 2D.

Se obtuvo una colección de imágenes y videos (secuencias de imágenes) estéreo, los cuales pueden utilizarse en proyectos futuros.

Se probaron tres algoritmos de correspondencia, todos ellos variantes de la correspondencia por bloques. El más rápido consiguió un tiempo de respuesta del software de aproximadamente 130 ms.

El sistema funcionó adecuadamente en un ambiente de pruebas tipo exteriores simulados (Figura 1.4), en el cual se utilizaron sillas, mesas, suelo y paredes como objetos de interiores, y como objetos de exteriores se utilizaron piedras y arbustos. Los objetos utilizados tuvieron un tamaño similar al robot o mayor.

Todos los experimentos fueron realizados con objetos fijos en el terreno y con iluminación de luz de día, que aunque no fue controlada y variaba con las nubes y reflejos, en todos los experimentos fue suficiente para producir imágenes claras en las cámaras.

Capítulo 1 Introducción 6

Page 19: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

1.6 Organización de la tesis

Este documento se compone de 6 capítulos, además de las referencias y anexos. Éstos se organizan de la siguiente manera: En el capítulo 2 se presentan conceptos importantes para la comprensión de esta tesis y se presentan trabajos relacionados con la visión estéreo y navegación en robots móviles; los capítulos 3 y 4 muestran el funcionamiento del robot móvil y del software respectivamente; el capítulo 5 ilustra los experimentos; y por último, el capítulo 6 expone las conclusiones y observaciones.

Visión binocular para robot móvil en exteriores simulados 7

Page 20: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Capítulo 2 Fundamentos teóricos y estado del arte

En este capítulo se estudian los fundamentos teóricos de la visión estéreo, necesarios para comprender el desarrollo de este proyecto. También se toca ligeramente a la navegación y se aprovecha para mencionar el estado del arte de los temas tratados. Actualmente la visión estéreo se basa en geometría proyectiva, por lo que se realiza una revisión de ésta, desde coordenadas cartesianas hasta proyecciones.

2.1 Coordenadas cartesianas

El plano cartesiano (2D) está definido por dos vectores generadores ortonormales (a 90° y de magnitud unitaria), representados con los símbolos { x } y { y }, los cuales pueden representarse de la siguiente manera:

x=[1 0 ]T , y=[0 1]T (2.1)

Por lo tanto un punto en el plano cartesiano puede definirse como una combinación lineal de los vectores generadores (Ecuación 2.2 y Figura 2.1).

u=[ux u y]T=u x∗xu y∗y (2.2)

Donde el tilde en la { u } significa que está en coordenadas cartesianas.

u x∗x u

y u y∗y

xFigura 2.1: Representación de un punto en plano cartesiano

Para representar un punto en un espacio de tres dimensiones (3D) se sigue la misma idea y se obtiene un vector de tres dimensiones:

u=[ux u y uz ]T=u x∗xu y∗yu z∗z (2.3)

Son varias las transformaciones que pueden realizarse sobre el punto así definido, a continuación se analizan la traslación y la rotación.

Capítulo 2 Fundamentos teóricos y estado del arte 8

Page 21: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

2.1.1 Traslación

La traslación en el plano (2D) consiste en desplazar un punto, de tal forma que sus nuevas coordenadas son las anteriores más un desplazamiento. El desplazamiento se puede codificar en un vector de traslación, de manera que la traslación se represente como una suma de vectores (Ecuación 2.4 y Figura 2.2).

u' = ut = [ux+tx uy+ty]T (2.4)Donde { t } es el vector de traslación en coordenadas cartesianas.

Figura 2.2: Traslación de un punto

Lo cual también es válido en un espacio de tres dimensiones (3D), con la diferencia de que en el espacio los vectores tienen tres dimensiones en vez de dos.

2.1.2 Rotación

La rotación de un punto en el plano se define como el girar al punto con respecto al origen. Esto se puede conseguir rotando los vectores generadores, de manera que al aplicar la combinación lineal que representa al punto (Ecuación 2.2) con los nuevos vectores generadores, se obtenga una ecuación lineal que representa un punto rotado con los vectores generadores originales. En la Figura 2.3 y en la Ecuación 2.5 se observa cómo quedan los nuevos vectores generadores después de rotarlos.

xFigura 2.3: Rotación de los vectores generadores

Visión binocular para robot móvil en exteriores simulados 9

tu

u '

Seno

Coseno

Coseno

– Seno

y

y 'x '

Page 22: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

x '=[cos sen]T , y '=[−sen cos]T (2.5)

Es posible organizar los términos de los vectores generadores rotados ({ x ' } y { y ' }) en una matriz de rotación { R }, tal y como se muestra en la Ecuación 2.6.

u '=u x∗x 'u y∗y '=[ x ' y ' ]∗[u x

u y]=[cos −sensen cos ]∗[u x

u y]= R∗u (2.6)

De esta forma, una rotación se consigue al multiplicar el punto original por la matriz de rotación, y se observa que las columnas de la matriz de rotación son los vectores generadores rotados.

En 3D se define una rotación para cada eje, de manera que existe una rotación con respecto al eje {x}, otra con respecto al eje {y}, y una última con respecto al eje {z}. Éstas se calculan ignorando uno de los ejes a la vez y calculado la rotación en el plano formado con los ejes restantes. Las matrices de rotación 3D pueden verse en la Ecuación 2.7.

R x=[1 0 00 cos −sen0 sen cos ] , R y=[ cos 0 sen

0 1 0−sen 0 cos] , R z=[cos −sen 0

sen cos 00 0 1] (2.7)

Al representar las rotaciones en forma de matrices, debido a la propiedad asociativa de las mismas, éstas se pueden encadenar. En la Ecuación 2.8 se muestra la matriz { RT }, la cual representa una rotación { R x } seguida de una rotación { R y }.

u ' '= R y Rx u = R y Rx u= RT u (2.8)

Es importante notar que las columnas de las matrices de rotación corresponden a los vectores generadores rotados, los cuales son ortonormales entre sí (están a 90° y su norma es uno), por lo que las matrices son ortonormales. Entre otras propiedades de estas matrices, se sabe que su inversa es igual a su transpuesta [Golub 1996].

Otra forma de conseguir la rotación de un punto consiste en rotar los vectores generadores ({ x } y { y }) en un ángulo contrario al que se desea rotar el punto { u }, y calcular las proyecciones del punto sobre los nuevos vectores generadores ({ x ' ' } y { y ' ' }, Figura 2.4). Estas proyecciones corresponden a las coordenadas de un punto rotado en el sistema de coordenadas original.

Capítulo 2 Fundamentos teóricos y estado del arte 10

Page 23: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 2.4: Rotación de los vectores generadores en ángulo negado

Las proyecciones se pueden calcular con los productos punto entre los vectores generadores de ángulo negado ({ x ' ' } y { y ' ' }) y el punto original { u }, y pueden agruparse en una matriz de rotación, tal como se muestra en la Ecuación 2.9.

u '=[ x ' ' T uy ' ' T u]= R∗u , R=[ x ' ' T

y ' ' T ] (2.9)

En las ecuaciones 2.6 y 2.9 se puede observar que las columnas de la matriz de rotación { R } corresponden a los vectores generadores rotados el ángulo { }, mientras que las filas corresponden a los vectores generadores rotados el ángulo negado { − }. Esto muestra que la inversa, transpuesta y “rotación por el ángulo negado” son equivalentes en las matrices de rotación.

Si se desea rotar un punto con respecto a un pivote que no sea el origen, es necesario realizar una transformación de coordenadas (una traslación) de manera que en el nuevo sistema de coordenadas el origen esté sobre el pivote, se realiza la rotación sobre el nuevo origen, y luego se realiza una trasformación inversa para regresar al punto en el sistema de coordenadas original. En coordenadas cartesianas no es posible obtener una matriz que represente rotaciones y traslaciones encadenadas, sin embargo sí es posible en coordenadas homogéneas, las cuales se verán a continuación.

2.2 Coordenadas homogéneas

En coordenadas homogéneas un punto 2D se representa con un vector de tres elementos, en ocasiones se utiliza un escalar para indicar que los primeros elementos son las coordenadas cartesianas y el último es uno (Ecuación 2.10), y en ocasiones no se utiliza (Ecuación 2.11) para indicar que es la misma coordenada sin importar la escala.

u=[u x u y]T

s u=[ s∗u x s∗u y s ]T , u=[u x u y 1]T(2.10)

Donde { u } es un punto en coordenadas cartesianas 2D;

Visión binocular para robot móvil en exteriores simulados 11

y ' 'y

u

x−

x ' '

Page 24: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

{ u } y {s u} son el mismo punto en coordenadas homogéneas 2D; y{s} es una constante diferente de cero.

u=[s∗ux s∗u y s ]T (2.11)

En general, para pasar de coordenadas cartesianas a homogéneas se agrega un uno al final del vector, y para pasar de coordenadas homogéneas a cartesianas se dividen las primeras coordenadas entre la última y se retira la última. Este proceso es válido para cualquier número de dimensiones.

En coordenadas homogéneas la traslación {T} se representa de la siguiente forma:

u '=T∗u=[ I t0T 1]∗u=[1 0 t x

0 1 t y

0 0 1 ]∗[u x

u y

1 ] (2.12)

Donde {T} es la matriz de traslación en coordenadas homogéneas; y{ t } es el vector de traslación en coordenadas cartesianas.

Mientras que la rotación se expresa con una fila y columna extra de la siguiente forma:

u ' '=R∗u=[ R 00T 1]∗u=[cos −sen 0

sen cos 00 0 1]∗[ux

u y

1 ] (2.13)

Donde {R} y {u} son la matriz de rotación y el punto respectivamente, ambos en coordenadas homogéneas.

Ya que la rotación y la traslación se expresan como matrices de las mismas dimensiones, éstas se pueden encadenar, tal y como se muestra en la Ecuación 2.14.

u ' '=R∗u '=R∗T∗u=R∗T ∗u=M∗u , M=R∗T (2.14)Donde {M} incluye una rotación después de una traslación.

De esta forma, para rotar un punto con un pivote diferente al origen se hace lo siguiente:

u '=T p−1∗R∗T p∗u , T p=[ I − p

0 1 ] , T p−1=[ I p

0 1 ] (2.15)

Donde { p }es el pivote en coordenadas cartesianas; {Tp} es la primer traslación, la cual lleva el pivote { p } al origen;{R} es la rotación deseada con respecto al pivote;{ T p

−1 } es la inversa de {Tp} y por lo tanto es la traslación que lleva el origen al pivote; y {u'} es el punto {u} rotado con respecto a { p }.

Capítulo 2 Fundamentos teóricos y estado del arte 12

Page 25: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

2.3 Imágenes

Existen varias clasificaciones y formatos de imágenes, pero en este trabajo el término “imagen” se usa para referirse a las imágenes digitales tipo mapa de bits, también conocidos como mosaicos de pixeles. Estas imágenes son arreglos bidimensionales de pixeles, donde cada pixel contiene información de color y brillo de un pequeño rectángulo de la imagen (el pixel), y en conjunto contienen información sobre el mundo 3D. En la Figura 2.5 puede verse una imagen de un ojo humano a muy baja resolución (12x24 pixeles), la cual ha sido amplificada para que se puedan notar los pixeles.

Figura 2.5: Imagen tipo mosaico de pixeles

Las cámaras son los dispositivos encargados de obtener imágenes del mundo 3D, y en particular las cámaras digitales realizan un proceso de digitalización, en el cual la información analógica del mundo real se discretiza y convierte en un arreglo de pixeles.

Entre los parámetros de las imágenes está su resolución, que corresponde al número de pixeles, y la profundidad de color, que corresponde al número de bits que se usan para representar el color. La máxima resolución que una imagen puede tener depende del dispositivo sensor de la cámara, y a mayor número de bits más colores pueden representarse, sin embargo, cada pixel sólo puede almacenar un color.

2.4 Puntos destacados

Los puntos destacados son aquellos que tienen alguna propiedad especial dentro de la imagen, de manera que es posible reconocerlos y trabajar con ellos en vez de con toda la imagen, por ejemplo: las esquinas. Se utilizan en SLAM (mapeo y localización simultáneos) [Mozos2007], para identificar las esquinas en los patrones de calibración [Hillman 2005] y en algoritmos de correspondencia por características, que se verán más adelante. Las etapas típicas de un detector de esquinas se representan en la Figura 2.6.

Visión binocular para robot móvil en exteriores simulados 13

Page 26: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Cálculo de que tan esquina son los pixeles Supresión no-máxima

Imagen de entrada mapa de esquineidad mapa de esquinasFigura 2.6: Etapas típicas de un detector de esquinas [Teixeira 2008]

Probablemente el detector Harris [Harris 1998] es el más usado para detectar esquinas debido a que es invariante a escala, rotación, iluminación y ruido. Este método está basado en la matriz {C(x,y)}, la cual es calculada en una ventana para cada punto de la imagen, de acuerdo a la Ecuación 2.16.

C x , y= ∑ I x2 ∑ I x I y

∑ I x I y I y2 (2.16)

Donde {Ix} , {Iy} son los gradientes horizontal y vertical respectivamente.

Para saber qué tan esquina es un punto se utiliza la función de correlación:R = det(C) – k*(traza(C))2 (2.17)

El resultado de aplicar esta función (Ecuación 2.17) a todos los puntos de la imagen produce una manta donde la altura está indicada por {R}, y en donde los picos corresponden a las esquinas. Varios filtros se le pueden pasar al operador básico, como por ejemplo: descartar esquinas poco pronunciadas o muy cercanas unas de otras.

La detección de esquinas consume tiempo y recursos de procesador, por lo que para liberar al procesador se han creado aproximaciones que implementan los algoritmos en el GPU (el procesador gráfico en las tarjetas aceleradoras gráficas de las PC). En uno de esos trabajos [Teixeira 2008] se desarrolla una plantilla para implementar algoritmos detectores de esquinas que se ejecutan enteramente en el GPU, el cual reporta tiempos de proceso de 6 milisegundos en pruebas con imágenes de 640x480 pixeles con alrededor de 500 puntos (esquinas) y usando una tarjeta NVIDIA GeForce 8800 GTX.

2.5 Proyección en perspectiva

Existen varios modelos que describen el proceso mediante el cual una cámara mapea el mundo 3D en una imagen 2D. El más simple de ellos es el modelo Pinhole (Figura 2.7.a), el cual modela la proyección con líneas rectas que van desde los puntos 3D del mundo hasta los puntos 2D de la imagen, a través de un agujero infinitesimal: el centro óptico.

Capítulo 2 Fundamentos teóricos y estado del arte 14

Page 27: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

(a) (b)Figura 2.7: (a) Cámara Pinhole; (b) Proyección en una cámara Pinhole

Se denominan ejes {yu} y {xu} a los ejes del plano de la imagen, y {xw}, {yw} y {zw} a los ejes del espacio 3D. Si la cámara está alineada, es decir, si el centro óptico está en el origen y el eje óptico está alineado a {zw} tal y como muestra la Figura 2.7.b, es posible descomponer el proceso en las proyecciones para los ejes {x} y {y} (Figura 2.8 y Figura 2.9).

Figura 2.8: Proyección en el eje {y}

Figura 2.9: Proyección para el eje {x}

De esta forma, por triángulos semejantes se obtienen las ecuaciones que describen el proceso:

Visión binocular para robot móvil en exteriores simulados 15

Page 28: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

u x

f=

w x

w z u x=

f ∗w x

w z

u y

f=

w y

w z u y=

f ∗w y

w z

(2.18)

Donde {f} es la distancia del centro óptico al plano óptico y se conoce como la distancia focal;{ux} y {uy} son las coordenadas 2D de un punto en el plano de la imagen; y {wx}, {wy} y {wz} son las coordenadas 3D de un punto en el espacio.

Estas ecuaciones pueden expresarse en forma matricial con coordenadas homogéneas como sigue:

s∗u=K∗[ I 0]∗w ,

K =[ f 0 00 f 00 0 1] , [ I 0 ]=[1 0 0 0

0 1 0 00 0 1 0] , w=[w x

w y

w z

1] , u=[u x

u y

1 ]=[f ∗w x

w z

f ∗w y

w z

1] (2.19)

Donde {w} es un vector que representa un punto en el espacio 3D; {K} es la matriz intrínseca de la cámara; {u} es el punto 2D en la imagen en coordenadas homogéneas;{s} es un escalar que se ajusta de manera que el tercer elemento de {u} sea uno, lo cual facilita la conversión de coordenadas homogéneas a cartesianas;{I} es la matriz identidad; y {0} el vector cero.

En la adquisición de imágenes por parte de una cámara también intervienen las resoluciones en {x} y en {y} del dispositivo sensor, las cuales no necesariamente tienen que ser iguales. Otro factor que influye es que generalmente el origen de una imagen de computadora está en la esquina superior izquierda, no en el punto principal (centro), donde el punto principal es el punto en el plano de la imagen más cercano al centro óptico. Esto se refleja en la matriz {K} como sigue:

Capítulo 2 Fundamentos teóricos y estado del arte 16

Page 29: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

K=K t∗K s∗K f=[s x∗ f 0 px

0 s y∗ f p y

0 0 1 ]=[ f x 0 p x

0 f y p y

0 0 1 ]f x=s x∗ f , f y=s y∗ f ,

K f=[ f 0 00 f 00 0 1] , K s=[s x 0 0

0 s y 00 0 1] , K t=[1 0 p x

0 1 p y

0 0 1 ](2.20)

Donde {sx} y {sy} son los factores de resolución del dispositivo sensor; y{px} y {py} son las coordenadas del punto principal (centro) con respecto al origen de la

imagen (el origen generalmente está en la esquina superior izquierda).

Aunque no es común, es posible que los pixeles del dispositivo sensor no sean exactamente rectangulares, sino que tengan una inclinación diferente a los 90°, esto se reflejaría en la matriz intrínseca como se muestra en la Ecuación 2.21.

K =[ px

0 p y

0 0 1 ] (2.21)

Donde { } describe la inclinación de los ejes de la imagen, y es cero para 90°; y { } y { } no son exactamente {fx} y {fy} respectivamente, pero tienden a ellos conforme { } tiende a cero.

Si la cámara no está alineada entonces es necesario trasladar y rotar la cámara hasta que esté alineada. Esto es equivalente a trasladar y rotar los puntos (Figura 2.10), lo cual se refleja en la ecuación de proyección (Ecuación 2.22).

Figura 2.10: Traslación y rotación de la cámara

s∗u=K∗[ I 0 ]R∗T∗w=K∗[ R t ]∗w=P∗w ,

R=[r 1x r1y r 1z

r 2x r2y r 2z

r 3x r3y r 3z] , t=[t x

t y

t z]=− R∗c , c=[c x

c y

c z] , T=[ I t

0T 1] , R=[ R 00T 1] (2.22)

Visión binocular para robot móvil en exteriores simulados 17

Page 30: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Donde {R} es, en coordenadas homogéneas, la matriz de rotación que alinea la cámara con los ejes; { R } es la misma matriz de rotación en coordenadas cartesianas; {T} es, en coordenadas homogéneas, la matriz de traslación que lleva la cámara al origen;{ t } es un vector de traslación en coordenadas cartesianas con la misma información que {T}; { c } son las coordenadas cartesianas del centro óptico; y {P} es la matriz de cámara, también llamada matriz de proyección, la cual engloba a la matriz intrínseca {K} y a la extrínseca { [ R t ] }.

2.6 Homografía

Un caso especial de proyección se produce cuando en un espacio 3D un plano se proyecta sobre otro plano (Figura 2.11).

(a) (b)Figura 2.11: Proyección de un plano en otro plano

En este caso, sin perder generalidad se puede elegir un sistema de coordenadas 3D en el cual el plano a proyectar sea {xy}, entonces ocurre que para cada punto del plano a proyectar su coordenada {z} es cero (Figura 2.11.b). Luego entonces la proyección se puede expresar como:

s∗u=K∗[ r1 r 2 r3 t ]∗[w x

w y

01 ] (2.23)

Donde { r 1 }, { r 2 } y { r 3 } son los vectores columna de la matriz de rotación { R }.

En la Ecuación 2.23 se observa que { r 3 } siempre se multiplica por cero ({wz = 0}), por lo que puede descartarse sin que el resultado cambie, produciendo la Ecuación 2.24.

Capítulo 2 Fundamentos teóricos y estado del arte 18

Page 31: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

s∗u=K∗[ r1 r 2 t ]∗[w x

w y

1 ] , H=K∗[ r1 r 2 t ] (2.24)

A la matriz de 3x3 ({H}) resultante se le conoce como homografía.

2.7 Ecuación de línea en coordenadas homogéneas

En coordenadas homogéneas una línea se representa por un vector con el mismo tamaño que un punto, de manera que para saber si un punto está en una línea se realiza un producto punto entre los vectores de la línea y el punto, y si el resultado es cero entonces la línea pasa por el punto (Figura 2.12 y Ecuación 2.25).

Figura 2.12: Línea y punto en coordenadas homogéneas

l= [a b c ]T

p=[ p x p y 1]T

l T p=a∗pxb∗p yclT p=0

(2.25)

Donde {l} y {p} son las coordenadas homogéneas de la línea y del punto respectivamente.

En coordenadas cartesianas dos puntos determinan una línea, esto es válido también en coordenadas homogéneas, pero el método para determinar la línea es más simple, se basa en el producto cruz entre los puntos:

l= p1× p2 (2.26)Donde {p1} y {p2} son los puntos en coordenadas homogéneas por los que pasa la línea {l}.

Una forma de realizar el producto cruz es mediante el operador {[ ]x}[Hartley 2003], el cual se define como:

Visión binocular para robot móvil en exteriores simulados 19

p=[ px p y 1]Tl=[a b c ]T

Page 32: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

v=[v1

v 2

v 3] , [v ]x=[ 0 −v 3 v2

v3 0 −v1−v 2 v1 0 ] (2.27)

De manera que la Ecuación 2.26 se puede representar como:l=[ p1 ]x p2 (2.28)

2.8 Visión estéreo

La visión estéreo es una técnica para recuperar la información 3D a partir de imágenes 2D, para lo cual es posible utilizar dos o más cámaras. Cuando se utilizan dos cámaras se habla de visión binocular.

Para su estudio la visión estéreo se divide en calibración, correspondencia y reconstrucción [Brown 2003]:

• Calibración. Consiste en obtener los parámetros del modelo elegido para describir el funcionamiento de la cámara.

• Correspondencia. Es considerado el principal problema de visión estéreo y sigue abierto a nuevos desarrollos. Consiste en encontrar los puntos 2D de las imágenes correspondientes al mismo punto 3D en el espacio.

• Reconstrucción. Consiste en obtener información relevante sobre el mundo 3D, por ejemplo: colecciones de coordenadas de puntos 3D, mapas 2D tipo “vistas de pájaro”, superficies 3D o 2.5D de objetos, etc.

A continuación se describen más detalladamente estas partes.

2.8.1 Calibración

Una cámara se considera calibrada si se conocen los parámetros del modelo elegido para representarla. Usando como base el modelo pinhole (Figura 2.7) se obtiene la ecuación de proyección (Ecuación 2.22), la cual se presenta de nuevo en forma resumida:

s u = P w (2.29)Donde {u} es un punto 2D en la imagen en coordenadas homogéneas; {w} es un punto en el espacio también en coordenadas homogéneas, y {P} es la matriz de cámara.

Si se encuentra la matriz de cámara {P} entonces la cámara se considera calibrada. También se considera calibrada si se encuentran los 6 parámetros extrínsecos y 4 intrínsecos con los que se generó {P} (son 4 intrínsecos si en la Ecuación 2.21 se considera { =0 }, de lo contrario

Capítulo 2 Fundamentos teóricos y estado del arte 20

Page 33: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

serían 5). Los 6 extrínsecos son los que describen la traslación y rotación de la cámara (una rotación y una traslación por cada eje), mientras que los 4 intrínsecos corresponden a los elementos no-cero de la matriz intrínseca {K} de la Ecuación 2.20, que son: la resolución en {x} por la distancia focal ({sx*f}), la resolución en {y} por la distancia focal ({sy*f}), y las coordenadas del punto principal {px} y {py}.

En muchos casos este modelo no es suficiente, y es necesario considerar la distorsión debida a imperfecciones en las lentes que ocurren en las cámaras reales. Ésto se ejemplifica en la Figura 2.13, en donde la imagen debería ser un cuadrado, sin embargo, debido a la distorsión radial aparece redondeado.

Figura 2.13: Distorsión radial [Bradski 2008]

En la literatura [Li 2004] se encuentra una clasificación de las técnicas de calibración:1. Métodos tradicionales usando objetivos 3D (2 o 3 planos ortogonales, Figura 2.14.a)

[Tsai 1987].2. Métodos basados en objetivos 2D (un plano, Figura 2.14.b). Más fáciles de usar, pero

con menos precisión que usando objetivos 3D [Zhang 2000].3. Autocalibración. Matemáticamente son problemas más complejos. Al mover una

cámara en una escena estática se obtiene la información necesaria para la calibración [Hartley 1994].

(a) dos planos (b) un plano

Figura 2.14: Patrones de calibración de dos planos [Tsai 1987] y de un plano [Zhang 2000]

Las dos primeras clasificaciones de técnicas (basada en objetivos 2D y 3D) también se conocen como fotogramétricas [Zhang 2000]. En estos casos, se requiere proporcionar suficientes ejemplos de puntos 3D {w} con sus respectivos puntos en la imagen 2D {u} hasta

Visión binocular para robot móvil en exteriores simulados 21

Page 34: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

que se determinen, ya sean los parámetros extrínsecos e intrínsecos, o bien directamente los elementos de {P}. Una forma de obtener estas colecciones de puntos es la siguiente:

1. aplicar algoritmos de puntos destacados sobre las imágenes de los patrones de calibración, y

2. asignarles coordenadas 3D en base a las mediciones previamente realizadas sobre el patrón de calibración.

2.8.1.1 Métodos tradicionales usando objetivos 3D

Es posible expresar la ecuación de proyección {s u = P w} (Ecuación 2.29) de la siguiente forma:

s[u x

u y

1 ]=[ p11 p12 p13 p14

p21 p22 p23 p24

p31 p32 p33 p34][w x

w y

w z

1] (2.30)

De donde se obtienen las relaciones entre los puntos {u} 2D y {w} 3D:

u x=w x p11w y p12w z p13 p14

w x p31w y p32w z p33 p34

u y=w x p21w y p22w z p23 p24

w x p31w y p32w z p33 p34

(2.31)

Y despejando de manera que los elementos de {P} sean incógnitas se obtienen 2 ecuaciones lineales homogéneas:

w x p11w y p12w z p13p14−ux w x p31−ux w y p32−u x w z p33−ux p34=0w x p21w y p22w z p23 p24−uy w x p31−u y w y p32−u y w z p33−uy p34=0 (2.32)

Las cuales al ser evaluadas con varios puntos del patrón de calibración producen un sistema de ecuaciones (Ecuación 2.33), y ya que debido a {s} la matriz {P} está sujeta a un factor de escala (tiene un espacio nulo), el sistema tiene una solución no-trivial.

M p=0p=[ p11 p12 p13 ... p33 p34 ]

T (2.33)

Es importante notar que los valores de {u} se obtienen de un algoritmo de detección de esquinas, y están sujetos a la discretización y a errores en el proceso de digitalización, mientras que los valores de {w} los proporciona el usuario y están sujetos a las deformaciones

Capítulo 2 Fundamentos teóricos y estado del arte 22

Page 35: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

e imprecisiones del patrón de calibración, por lo que es recomendable tener más puntos de los estrictamente necesarios para resolver el sistema.

Como {P} tiene 11 grados de libertad (12 incógnitas y un espacio nulo) y cada punto 3D proporciona 2 ecuaciones, se requieren como mínimo 5.5 puntos, los cuales además deben estar en cuando menos 2 planos (ser no-coplanares), de manera que se obtenga una solución única no-trivial. En [Hillman 2005] se presentan varios métodos para resolver este sistema, dos de ellos son los siguientes:

• Solución no homogénea: para alguna {ij} se hace a una de las {pij} igual a uno (por ejemplo {p34=1}), se reorganiza de manera que se obtiene un {M' p' = b}, y se resuelve por la pseudo inversa {p' = M'+ b}, donde {M'+ = (M'T M')-1 MT}. Si {M} está sobredeterminada (tiene más de 11 filas), entonces este método es equivalente a encontrar la mejor {p'} por mínimos cuadrados.

• Descomposición por valores singulares (SVD): el método SVD encuentra una {p} cuya norma es uno, y si {M} está sobredeterminada es equivalente a encontrar la mejor {p} por mínimos cuadrados. Lo que se hace es descomponer {M} de la siguiente forma: {M=U D VT}, donde {U} y {V} son matrices cuadradas mientras que {D} es una matriz diagonal, entonces la solución se encuentra directamente como la columna de {V} que corresponde al valor más pequeño de {D}, la cual en el SVD ordenado es la que está más a la derecha.

Tsai [Tsai 1987] también encuentra la distorsión de los lentes, o más precisamente: considera sólo a la distorsión radial (Figura 2.13) y la modela como se indica en la Ecuación 2.34. Tsai sólo encuentra los primeros dos términos: {k1} y {k2}, lo que según su experiencia generalmente es suficiente.

r=xd2 yd

2 , Dx=xd∗k 1 r 2k 2∗r 4... , D y=y d∗k 1 r 2k2∗r 4...xu=xdD x , yu=ydD y

(2.34)

Donde {xu} y {yu} son las coordenadas ideales que deberían aparecer en la pantalla si no hubiera distorsión;{xd} y {yd} son las coordenadas reales que aparecen en la pantalla debidas a la distorsión; {r} es la distancia radial de las coordenadas distorsionadas al centro óptico, que en este caso se consideró en el origen; y{Dx} y {Dy} son los desplazamientos que corrigen la distorsión radial.

2.8.1.2 Métodos basados en objetivos 2D

Los métodos basados en objetivos planos (2D) utilizan homografías entre el plano del patrón de calibración y el plano de la imagen, y el primero fue desarrollado por Zhang [Zhang 2000].

Visión binocular para robot móvil en exteriores simulados 23

Page 36: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Como ya se vio en la Ecuación 2.24, cuando el patrón de calibración es un plano, entonces la ecuación de proyección puede reducirse a una matriz de 3x3, la cual además guarda una relación estrecha con los parámetros de la cámara. En este caso la Ecuación 2.30 se reduce a la Ecuación 2.35, puesto que se elige un sistema de coordenadas en las que todas las {wz} son cero.

s[u x

u y

1 ]=[h11 h12 h13

h21 h22 h23

h31 h32 h33][w x

w y

1 ] (2.35)

De la Ecuación 2.35 se obtienen las relaciones entre los puntos 2D de la imagen ({u}) y los del patrón de calibración ({[wx wy]T}):

u x=w x h11w y h12h13

w x h31w y h32h33

u y=w x h21w y h22h23

w x h31w y h32h33

(2.36)

Al evaluar la Ecuación 2.36 con varios puntos {w} del patrón de calibración y sus correspondientes puntos {u} en la imagen, se genera un sistema de ecuaciones lineales cuyas incógnitas son los elementos de la homografía (Ecuación 2.37).

M h=0h=[h11 h12 h13 ... h32 h33]

T (2.37)

Luego se relacionan los parámetros de los elementos de la homografía con los parámetros de la cámara, tal y como también se hizo en la Ecuación 2.24. El resultado se muestra en la Ecuación 2.38.

[h1 h2 h3]= s K [ r1 r2 t ] (2.38)

De la Ecuación 2.38 se obtienen las siguientes relaciones:h1= s K r1 , h2=s K r 2 , h3=s K t

r 1=1s K −1 h1 , r2=

1s K−1 h2 , t=1

s K−1 h3 , (2.39)

Y como se sabe que la matriz de rotación {R} es ortonormal, entonces se cumplen las siguientes relaciones:

Capítulo 2 Fundamentos teóricos y estado del arte 24

Page 37: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

r 1× r2= r 3 (2.40)r 1

T r 2=0 , r 1T r1=r 2

T r2=1 (2.41)

Reemplazando los vectores columna de {R} de la Ecuación 2.41 por sus equivalencias encontradas en la Ecuación 2.39 se obtienen las siguientes restricciones:

h1T K−T K−1 h2=0 , h1

T K−T K−1 h1=h2T K −T K−1 h2 (2.42)

Por lo que cada homografía {H} aporta dos restricciones. Entonces, como la matriz intrínseca {K} tiene 4 grados de libertad, se requieren como mínimo dos homografías para determinar a {K}. Sin embargo, al utilizar múltiples homografías y mínimos cuadrados se determinan de forma más precisa los parámetros intrínsecos ({K}), y se minimizan los errores debidos al proceso de digitalización y a imperfecciones en el patrón de calibración.

Una vez que se tiene la matriz intrínseca {K}, la matriz extrínseca { [ r 1 r 2 r 3 t ] } se obtiene utilizando las equivalencias encontradas en la Ecuación 2.39 y la relación indicada en la Ecuación 2.40.Algunos detalles interesantes encontrados por Zhang:

• Si sólo se utilizan dos planos (el mínimo necesario), se obtiene la mayor precisión cuando estos están a 90°.

• La matriz intrínseca {K} no suele cambiar en las cámaras, por lo que es posible calibrar {K} una vez y en sucesivas recalibraciones utilizar sólo una homografía para encontrar la matriz extrínseca ({ [ R t ] }).

2.8.2 Correspondencia

El problema de la correspondencia consiste en encontrar para cada punto en la imagen izquierda su correspondiente en la imagen derecha, de tal forma que ambos sean producidos por el mismo punto 3D.

Existen varias restricciones que facilitan la correspondencia, un listado puede hallarse en [Jimenez 1995]. Probablemente la más importante sea la restricción epipolar, que dice que dado un punto su correspondiente está en una línea en otra imagen, a la cual se le llama “línea epipolar” (Figura 2.15).

Visión binocular para robot móvil en exteriores simulados 25

Page 38: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 2.15: Línea epipolar. Modificado de [Hillman 2005]

La matriz fundamental {F} [Hartley 2003] es una matriz de 3x3 que relaciona puntos en una imagen con sus líneas epipolares correspondientes en la otra imagen. A continuación se expondrá una forma de obtener la matriz fundamental.

Es posible expresar la ecuación de proyección utilizando matrices de 4x4 y vectores de 4 elementos:

S u= P w ,

S=[s 0 0 00 s 0 00 0 s 00 0 0 1] , u=[ux

u y

11] , P=[K 0

0T 1]∗[ R t0T 1]=[K R K t

0T 1 ] (2.43)

Donde { u } tiene una fila más que {u}, la cual siempre tiene {1}; así como{ P } tiene una fila más que {P}, cuyo contenido siempre es {[0 0 0 1]}.

La Ecuación 2.43 permite despejar {w}, de manera que para determinarlo se requiere la matriz de cámara {P}, un punto en la imagen {u} y el valor de la escala {s}:

w= P−1 S u (2.44)

Entonces las ecuaciones de desproyección para la cámara izquierda y derecha son las ecuaciones 2.45 y 2.46 respectivamente, donde {w} es el mismo punto 3D.

w= P i−1 S i ui (2.45)

Donde el subíndice {i} denota que se trata de la proyección, escala e imagen izquierdas.

w= Pd−1 S d u d (2.46)

Donde el subíndice {d} denota que se trata de la proyección, escala e imagen derechas.

Capítulo 2 Fundamentos teóricos y estado del arte 26

Page 39: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Como {w} es el mismo punto 3D, entonces es posible realizar lo siguiente:P i

−1 S i u i= P d−1 S d ud , P d

P i−1 S i ui=S d ud (2.47)

En este trabajo se define a la matriz otraproyectiva {G} como:G= Pd

P i−1 (2.48)

Entonces la Ecuación 2.47 se simplifica quedando como se muestra en la Ecuación 2.49, a la que en este trabajo se denomina: ecuación otraproyectiva.

S d ud=G S i ui (2.49)

La ecuación otraproyectiva puede entenderse como que: teniendo un punto {ui}, y dando valores sucesivos de {si} (la {s} en la Ecuación 2.43 aplicada a la proyección izquierda), se obtienen valores sucesivos de {ud}. Esto puede observarse en la Figura 2.16.

Figura 2.16: Cálculo de {ud} usando {G}

Es importante notar que durante la calibración es posible elegir un sistema de coordenadas tal que una de las cámaras esté en el origen y alineada con los ejes (como en la Figura 2.7.b), por ejemplo la cámara izquierda. Esto simplifica las ecuaciones de proyección a las formas mostradas en la Ecuación 2.50.

P i=[K i 00T 1] , P d=[K d R −K d R c

0T 1 ]=[K d R K d t0T 1 ] (2.50)

Donde { R } es la rotación de la cámara izquierda con respecto a la derecha,{ c } son las coordenadas del centro óptico de la cámara derecha, o también el desplazamiento de la cámara derecha con respecto a la izquierda, estando al izquierda en el origen; y{ t } es un vector de desplazamiento que por cuestiones de simplicidad se usa en vez de { − R c }, y corresponde a las coordenadas del centro óptico de la cámara izquierda con

Visión binocular para robot móvil en exteriores simulados 27

Page 40: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

respecto a la derecha.

Y por lo tanto la matriz otraproyectiva {G} también se puede calcular como:

G=[K dR K i

−1 K d t0T 1 ] (2.51)

Por otro lado, despejando {udx} y {udy} de la Ecuación 2.49 se obtiene la Ecuación 2.52.

udx=g11uix sig12 uiy sig 13 sig14

g31 uix sig32 uiy sig 33 sig34

udy=g21 uix sig22 uiy sig 23 sig24

g31 uix sig32 uiy sig 33 sig34

(2.52)

Usando la ecuación 2.52 es posible encontrar unos puntos especiales cuando {si} tiende a cero y cuando tiene al infinito. Estos puntos son el epipolo (Ecuación 2.53) y el homógrafo cero (Ecuación 2.54) respectivamente.

e dx=lim s0 udx=g14

g34

edy=lim s0 udy=g24

g34

(2.53)

Donde {edx} y {edy} son las coordenadas cartesianas del epipolo (Figura 2.17.a), el cual es un punto en el plano de la imagen por el que pasan todas las líneas epipolares.

Figura 2.17: Puntos especiales: a) epipolo; b) homógrafo cero

h0dx=lim s∞ udx=g11 uix sig 12 uiy sig 13 si

g31 uix sig 32 uiy sig 33 si

h0dy=lim s∞ u dy=g21 uix sig 22 uiy sig 23 si

g31 uix sig 32 uiy sig 33 si

(2.54)

Donde {h0dx} y {h0dy} son las coordenada del homógrafo cero, el cual es el punto {ud} correspondiente a {ui} cuando {w} está a una distancia infinita (Figura 2.17.b).

Capítulo 2 Fundamentos teóricos y estado del arte 28

Page 41: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

De lo anterior se concluye que la homografía cero se puede calcular como:

sd hd=H 0d w , H 0d=[g 11 g 12 g13

g 21 g 22 g 23

g 31 g 32 g33]=K d

R K i−1

(2.55)

Donde { R } es la rotación de la cámara derecha con respecto a la izquierda, tal y como se vio en la Ecuación 2.50.

Y la estructura de {G} es:

G=[H 0d ed

0T 1 ] , ed=[s edx

s edy

s ]=[g14

g24

g34]=K d t (2.56)

Donde {ed} es el epipolo derecho en coordenadas homogéneas, y corresponde a la proyección del centro óptico de la cámara izquierda en la cámara derecha.

La línea que pasa por el epipolo y el homógrafo cero es la línea epipolar. Para obtenerlo se puede realizar el producto cruz entre {ed} y {hd}:

l ed=[ed ]x hd=[ed ]x H d u i=F ui (2.57)Donde {ui} es un punto en la imagen izquierda;{F} es la matriz Fundamental; y{led} es la linea epipolar derecha.

Por tanto la matriz Fundamental {F} se puede encontrar como indica la Ecuación 2.58:F=[e d ]x H 0d=[K d t ]x K d

R K i−1

F=[F 11 F12 F13

F 21 F 22 F23

F 31 F32 F33]=[g 24 g31−g 34 g21 g24 g32−g34 g22 g 24 g33−g34 g 23

g 34 g11−g 14 g31 g34 g12−g14 g32 g34 g13−g14 g33

g14 g21−g 24 g11 g14 g 22−g24 g12 g 14 g23−g24 g 13] (2.58)

También es posible obtener {F} usando directamente los puntos de las imágenes: si se tiene una colección de puntos correspondientes, entonces cumplen que cada uno está en la línea epipolar de su correspondiente, y por lo tanto satisfacen la Ecuación 2.59:

udT F ui=0 , u i

T F T ud=0 (2.59)

En la Ecuación 2.59 cada punto proporciona una restricción, y como {F} tiene 8 grados de libertad (9 términos sujetos a un factor de escala), se requieren 8 puntos para determinar {F}. En esto se basa el algoritmo de los ocho puntos [Hartley 1997].

En geometría epipolar también existe la matriz Esencial {E} (Ecuación 2.60), la cual guarda una estrecha relación con la matriz Fundamental (Ecuación 2.61), ya que mientras la matriz

Visión binocular para robot móvil en exteriores simulados 29

Page 42: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Fundamental relaciona puntos en el espacio de las imágenes, la matiz Esencial relaciona puntos en el espacio físico 3D [Bradski 2008].

E= [ t ]xR (2.60)

F=K d−T E K i

−1 , E=K dT F K i (2.61)

Un caso especial ocurre en la configuración de cámaras paralelas (Figura 2.18) [López 2005], en la cual los planos de imagen de las dos cámaras coinciden, lo cual causa que las líneas epipolares sean paralelas, y si las matrices intrínsecas coinciden, también están sobre la misma coordenada {y}. En la práctica es difícil conseguir esta alineación, sin embargo es posible rectificar las imágenes de manera que queden como si fueran tomadas de cámaras paralelas [Oram 2001] [Hartley 1999], y el proceso puede realizarse al mismo tiempo que se elimina la distorsión de las lentes [Bouguet 2010].

Figura 2.18: Formación de imágenes en cámaras paralelas [López 2005]

Si el plano de imagen de la cámara derecha {ud} no es el mismo que el de la izquierda {ui}, entonces existe un plano que sí lo es {uh}, y existe una homografía cero {H0} que las relaciona (Figura 2.19).

Figura 2.19: Rectificación usando una homografía

La homografía {H0} de la Figura 2.19 queda determinada por la rotación entre las cámaras (Ecuación 2.55), es decir, la rotación entre los planos {ud} y {ui}.

Capítulo 2 Fundamentos teóricos y estado del arte 30

Page 43: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Sin embargo, con el fin de minimizar la distorsión en las imágenes, el proceso general consiste en dividir los ángulos de la rotación a la mitad para generar dos homografías, una se aplica a la imágen derecha y otra a la izquierda (Figura 2.20). Además, se ajustan las escalas de manera que se aproveche el área util de las imágenes y se calculan nuevas matrices de proyección para el espacio rectificado [Bouguet 2010].

Figura 2.20: Rectificación [Brown 2003]

La importancia de la restricción epipolar es que reduce la búsqueda de puntos correspondientes de un espacio 2D (el plano) a un espacio 1D (la línea epipolar). De hecho, la búsqueda se reduce al segmento de línea epipolar definido por el epipolo y el punto homógrafo cero {h0}, y de este segmento la parte que esté en la imagen.

Un concepto importante es la disparidad, la cual puede conceptualizarse como la distancia que se recorre (en pixeles) sobre la línea epipolar desde el homógrafo cero hasta el punto correspondiente (Figura 2.21).

Figura 2.21: Representación de la disparidad

Los algoritmos de correspondencia pueden clasificarse según: • Tipo de algoritmo (“global – local”) [Brown 2003]. Los métodos locales usan

información de un pixel y sus vecindades inmediatas, mientras que los métodos globales usan la información de una línea o de toda la imagen.

• Tipo de datos en los que se basa (“característica – bloque – región”) [Barnard 1982] [Foggia 2007]. Para disminuir la incertidumbre de aparear un pixel se utilizan también sus alrededores. Una forma de hacer esto consiste en utilizar directamente las intensidades de un área predefinida, a la cual se le llama bloque. Otra forma es la

Visión binocular para robot móvil en exteriores simulados 31

Page 44: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

característica, la cual consiste en describir el pixel y sus alrededores, con datos tales como su color, derivadas parciales, curvatura, etc. Las regiones son segmentaciones de la imagen con forma y tamaño variable, las cuales intentan pertenecer cada una al mismo objeto.

En la correspondencia local por bloques, para reducir la incertidumbre, el algoritmo analiza un pixel y sus alrededores en el interior de una ventana generalmente rectangular (Figura 2.22), y se realiza una convolución de la ventana en la línea epipolar.

Figura 2.22: Correspondencia por bloques [Bradski 2008]

El proceso básico es el siguiente:Para cada bloque de la imagen izquierda:

Se aplica una función de apareo con todos los bloques sobre la línea epipolar de la imagen derecha.

Se elige el bloque más parecido al de la imágen izquierda, y se consideran apareados el pixel central de la ventana izquierda con el central de la ventana derecha.

Fin para.

Las funciones de apareo miden qué tanto se parecen o qué tanto se diferencian dos bloques. Hay múltiples funciones, una de las más simples es la SAD (Sum of Absolute Diferences), la cual suma las diferencias en intensidad de cada pixel de una ventana con su correspondiente en la otra ventana, tal y como puede verse en la Ecuación 2.62.

Capítulo 2 Fundamentos teóricos y estado del arte 32

Page 45: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

∑u ,v

∣I 1u , v − I 2u−d , v ∣ (2.62)

Donde {I1} e {I2} son las funciones de intensidad de una imagen izquierda y derecha respectivamente;{u} y {v} son las coordenadas de un pixel dentro de una ventana; y {d} es el valor de la disparidad para la cual la función está analizando el nivel de diferencia.

En la Ecuación 2.62 la disparidad es un número entero y está en pixeles, ya que las coordenadas de los pixeles son enteras. Sin embargo es posible obtener mayor precisión con la aproximación subpixel [Szeliski 2002], la cual aproxima las funciones de apareo de las disparidades a una curva (Figura 2.23) y obtiene el mínimo (o máximo) de la curva, lo cual proporciona decimales al valor de disparidad encontrado.

Figura 2.23: Resolución subpixel

Uno de los problemas de la correspondencia es que en las imágenes, debido a las oclusiones, no todos los puntos tienen un correspondiente. Esto puede verse en la Figura 2.24, donde el punto “x” estaría en la imagen izquierda pero no en la derecha.

Figura 2.24: Oclusión

Otro de los problemas de la correspondencia por bloques es la distorsión debida a las líneas epipolares no paralelas (Figura 2.25). Este problema se resuelve con la rectificación.

Figura 2.25: Correspondencia por bloques con líneas epipolares no paralelas

Al finalizar un algoritmo de correspondencia, éste puede proporcionar:

Visión binocular para robot móvil en exteriores simulados 33

disparidad

Función de apareo

Page 46: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

• Una colección dispersa de puntos apareados. Es el resultado típico de los algoritmos basados en características, ya que generalmente sólo se procesan los pixeles con las características sobresalientes.

• Un mapa de disparidades denso. Es la salida típica de los algoritmos basados en bloques y los globales, y es “denso” porque se intenta obtener la disparidad de todos los puntos de la imagen. Generalmente el mapa de disparidades es un arreglo 2D del mismo tamaño que la imagen, donde cada pixel ha sido reemplazado por su disparidad correspondiente.

Entre los últimos avances en cuanto al tema de la correspondencia están:• Apareamiento de regiones [Foggia 2007]. En esta aproximación se segmenta la imagen

en regiones, se describe cada región, se genera un grafo donde los nodos son las regiones y los arcos las adyacencias en las regiones, y se aparea el grafo. Es una aproximación robusta ante las vibraciones que genera un mapa de disparidades semi-denso de baja precisión, ideal para operaciones de robots móviles. Es “semi-denso” porque encuentra la disparidad para los centroides de cada región, sin embargo, es una buena aproximación considerar que todos los puntos de la región tienen la misma disparidad.

• Propagación de creencias (belief propagation). En [Yang 2009] se presenta una técnica tipo propagación-de-creencas de alto desempeño (la mejor de su clase según la base de datos de Middlebury [Scharstein 2002] en 2009). Es una técnica global que minimiza la energía del mapa de disparidades. Funciona pasando mensajes a través de un grafo definido por la malla (grid) de la imagen 4-conectada (un pixel tiene 4 adyacentes). Cada mensaje es un vector con las posibles etiquetas. En cada iteración el nuevo mensaje es computado usando el mensaje anterior, el estado del pixel y el costo del cambio.

• Métodos variacionales. Los métodos variacionales están entre los más precisos para obtener mapas densos de disparidad, originalmente fueron diseñados para atacar la complejidad de los algoritmos basados en flujo óptico, pero se han adaptado para la visión estéreo, ya que el flujo óptico es similar a la visión estéreo sin la restricción epipolar. En [Kosov 2009] se presenta un método variacional que combina una técnica adaptativa multi-nivel con una aproximación multi-malla (Figura 2.26). La técnica adaptativa multi-nivel refina la malla sólo en peculiaridades, reduciendo así el costo computacional y manteniendo casi la misma calidad.

Capítulo 2 Fundamentos teóricos y estado del arte 34

Page 47: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 2.26: Malla no-estática [Kosov 2009]. La flecha indica la peculiaridad

• Estéreo denso por características. Las características generalmente no se utilizan en estéreo denso (mapa denso de disparidades) debido al costo de obtener descriptores para cada pixel, sin embargo, cuando la distancia entre las cámaras es muy grande (línea base ancha) los algoritmos de bloques presentan muchos fallos debido a las altas diferencias de perspectiva, y las características se vuelven atractivas. En [Tola 2010] se presenta un descriptor eficiente para obtener características de pixeles y se utiliza en un algoritmo de correspondencia denso, obteniéndose mejores resultados que con otros descriptores y que con algoritmos por bloques. Sin embargo, el tiempo de proceso aún es elevado para propositos de tiempo real (3.8 segundos para una imagen de 800x600 en una Laptop IBM T60).

Para revisiones más completas de algoritmos de correspondencia se puede consultar [Scharstein 2002] y [Nalpantidis 2007].

2.8.3 Reconstrucción

La parte más básica de la reconstrucción es la triangulación [Hartley 1997][Kanatani 2008][Nordberg 2008], la cual obtiene los puntos 3D a partir de las correspondencias y la información obtenida en la calibración.

Uno de los métodos más comunes de triangulación es la lineal, la cual consiste en resolver el sistema de ecuaciones formado al proyectar un punto 3D {w} en las dos imágenes: la izquierda y la derecha (Ecuación 2.63).

siui=P i w , sd ud=P d w (2.63)Donde {ui} y {ud} son los puntos 2D en la imagen izquierda y derecha respectivamente;{si} y {sd} son las escalas arbitrarias a las que están sometidas las coordenadas homogéneas;{Pi} y {Pd} son las matrices de cámara izquierda y derecha respectivamente; y{w} es el punto 3D visto por ambas cámaras.

Cada proyección genera dos ecuaciones de la forma de la Ecuación 2.32 (página 22), las

Visión binocular para robot móvil en exteriores simulados 35

Page 48: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

cuales al reorganizarse para que {w} sea la incógnita generan las siguientes ecuaciones: p11−ux p31w x p12−ux p32w y p13−ux p33w z=u x p34− p14 p21−u y p31w x p22−uy p32w y p23−u y p33w z=u y p34− p24

(2.64)

Las dos proyecciones generan cuatro restricciones, de las cuales sólo tres son estrictamente necesarias, pero pueden usarse las cuatro para reducir el error proveniente de la digitalización. Si se usan las cuatro el sistema adquiere la forma:

A w=b ,

A=[ pi11−uix pi31 pi12−u ix p i32 pi13−u ix p i33 pi21−uiy pi31 pi22−u iy p i32 pi23−u iy p i33 pd11−udx pd31 pd12−udx pd32 pd13−udx pd33 pd21−udy pd31 pd22−udy pd32 pd23−udy pd33

]w=[w x

w y

w z] , b=[ u ix p i34−p i14

u ix p i34−p i24

udx pd34−pd14

udx pd34−pd24]

(2.65)

Que puede resolverse por varios métodos, por ejemplo el de la pseudoinversa:w=Ab , A=AT A−1 AT (2.66)

A continuación se presenta una forma de triangulación similar a la lineal. En este otro método, se observa que en las ecuaciones de desproyección (ecuaciones 2.45 y 2.46 de la página 26), teniendo {ui} y {ud}, sólo hace falta conocer {si} o {sd} para encontrar a {w}. En base a esto se utiliza la ecuación otraproyectiva (Ecuación 2.49, página 27) para encontrar a {si}.

Expandiendo y organizando los términos de la Ecuación 2.49 para que {si} y {sd} sean las incógnitas se obtiene el siguiente sistema de ecuaciones:

g 11uixg12 uiyg13 si−udx sd=−g 14 (2.67)g21 uixg22 uiyg23 si−udy sd=−g24 (2.68)g 31uixg32 uiyg33 si−sd=−g34 (2.69)

En las ecuaciones anteriores se observa que son tres ecuaciones con dos incógnitas, de las cuales sólo se requiere resolver una incógnita. En la Ecuación 2.70 se presenta una solución para {si} tomando las ecuaciones 2.67 y 2.69.

si=g34 udx−g14

g11 uixg 12 uiy−g 31uix udx−g32 uiy udx−g33 udxg 13(2.70)

Capítulo 2 Fundamentos teóricos y estado del arte 36

Page 49: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Luego entonces, para encontrar el punto 3D {w}, sólo es necesario reemplazar en la ecuación desproyectiva (Ecuación 2.45) al {si} encontrado en la Ecuación 2.70. Una ventaja de este último método con respecto al anterior, es que las matrices {G} y { P i

−1 } pueden calcularse por adelantado una sola vez, mientras que en el método anterior la Ecuación 2.65 debe calcularse y resolverse para cada triangulación.

En el caso especial de las cámaras paralelas, la triangulación se simplifica mucho, ya que es posible descartar la coordenada {y} y utilizar triángulos semejantes para obtener {w}. Este mismo caso se presenta en el espacio rectificado, es decir, después de realizar la rectificación.

Figura 2.27: Triangulación en cámaras paralelas

En la Figura 2.27 Es posible observar que el triángulo {ui, u'd, ci} es semejante con el triángulo {ci,cd,w}, de donde se obtiene la siguiente relación:

df= B

w z, w z= f B

d (2.71)

Donde {f} es la distancia focal, es decir, la distancia del centro óptico al plano de la imagen;{d} es la disparidad, la cual en el caso de cámaras paralelas se calcula como {udx – uix}; y {B} es la distancia entre las cámaras, también conocida como baseline.

Para obtener las restantes coordenadas de {w} es posible considerar a {B/d} como un factor que escala al vector {[uT f]T} (Figura 2.28), de manera que se obtienen las restantes relaciones (Ecuación 2.72).

Visión binocular para robot móvil en exteriores simulados 37

Page 50: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 2.28: Escala del vector {[uT f]T}

w x=u x−c x Bd , w y=c y−u y B

d (2.72)

Como nota aclaratoria, la Ecuación 2.72 se obtuvo considerando que en las imágenes el eje positivo de {yu} va hacia abajo mientras que en el espacio 3D el eje positivo de {yw} va hacia arriba.

Las ecuaciones 2.71 y 2.72 pueden expresarse en forma matricial utilizando una matriz de desproyección {Q} [Bradski 2008]:

w=Q [u x

u y

d1 ] , Q=[1 0 0 −c x

0 −1 0 c y

0 0 0 f0 0 1 /B 0 ] (2.73)

Para un robot móvil es muy importante clasificar el terreno en transitable y obstáculo. A continuación algunas soluciones propuestas en la literatura:

• En [DeCubber 2009] se presenta una solución para clasificar el terreno en transitable u obstáculo usando visión estéreo y la métrica V-disparity [Labayrade 2002]. V-disparity considera al terreno transitable como una superficie continua en el espacio de disparidades, la cual se ve como una línea en el histograma de disparidades (Figura2.29 inciso 'c'). El método es robusto, funciona en tiempo real y fue probado en exteriores no estructurados, aunque requiere que la superficie transitable ocupe una buena parte de la imagen y las cámaras estén a la misma distancia del suelo.

Figura 2.29: Clasificación en transitable y obstáculo [DeCubber 2009] con V-disparity

Capítulo 2 Fundamentos teóricos y estado del arte 38

Page 51: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

• En [Konolige 2006] se clasifican obstáculos y terrenos transitables utilizando visión estéreo. Primero se encuentra un mapa de disparidades, el cual tiene la disparidad para cada pixel, luego utiliza un algoritmo fast RANSAC para identificar el plano del suelo, por último se identifican zonas transitables de no-transitables utilizando un modelo de color. Al utilizar el modelo de color se detectan obstáculos más allá de lo que permitiría el usar solamente el mapa de disparidades, por lo que se aumenta el alcance en distancia del sistema de visión.

• Un proceso de correspondencia por bloques devuelve un mapa de disparidades 2D, pero en [Murray 2005] se toma la máxima disparidad de cada columna, obteniendo así un mapa de disparidades 1D (Figura 2.30.c). Las disparidades se filtran para eliminar los errores en la correspondencia (Figura 2.30.d) y se obtiene la distancia a los obstáculos (Figura 2.30.e). El ahorro en costo computacional les permite procesar 5 pares de imágenes cada segundo en un robot que se desplaza a 1.5 metros por segundo.

Figura 2.30: Etapas de la visión en el robot José [Murray 2005]: (a) imagen; (b) mapa de disparidades 2D; (c) mapa de disparidades 1D; (d) disparidades con ruido; e) mapa de

profundidades 1D

• En [Gutmann 2008] se utiliza un robot humanoide con visión estéreo capaz de subir escaleras y pasar por túneles (Figura 2.31). En la reconstrucción se ajusta una nube de puntos a planos y llena una malla 3D de ocupación (Figura 2.32).

Figura 2.31: Robot QRIO [Gutmann 2008] con obstáculos, escaleras y una mesa a manera de túnel

Visión binocular para robot móvil en exteriores simulados 39

Page 52: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 2.32: Malla 3D de ocupación [Gutmann 2008]

2.9 Navegación

Según Arkin [Arkin 1998], los robots se clasifican en deliberativos y reactivos. El enfoque clásico es el deliberativo, en el cual se realizan razonamientos simbólicos sobre un modelo del entorno, sin embargo ese modelo presenta problemas para producir un comportamiento autónomo en entornos complejos, de manera que sólo funciona bien en entornos estructurados y predecibles.

En el enfoque reactivo hay una conexión directa entre percepción y acción, sin una representación simbólica, lo cual le permite ser más rápido que el enfoque deliberativo y adaptarse mejor a entornos no estructurados y desconocidos. Sin embargo no son adecuados para tareas de alto nivel como por ejemplo resolver un laberinto.

Los sistemas basados en comportamientos son una mejora a los sistemas reactivos que permiten incorporar conductas más complejas mediante módulos situación-acción capaces de cooperar y competir unos con otros, lo cual permite expandir las capacidades de un robot simplemente añadiendo nuevos módulos.

Un ejemplo de enfoque deliberativo se puede ver en [Buffa 1992]. En ese trabajo se genera un mapa tipo tessalation (triangulación Delaunay restringida) 2D, en el cual se clasifican los bordes de los triángulos en ocupados si hay obstáculos en él, libres si el robot puede pasar, y pasadizos si no se sabe que hay y el robot podría pasar por él (Figura 2.33). El algoritmo de navegación utiliza un segundo en una SPARC2 y consta de los siguientes pasos:

1. asociar a cada pasadizo un triángulo; 2. generar un grafo con los triángulos con bordes libres, de manera que los centros de

gravedad de los triángulos son los nodos, y la adyacencia entre los triángulos los vértices;

3. calcular la ruta más corta hacia algún triángulo con borde de tipo pasadizo mediante el algoritmo de Dijkstra; y

4. suavizar la ruta y seguirla.

Debido al elevado tiempo de proceso, el robot se detiene antes de adquirir las imágenes, una

Capítulo 2 Fundamentos teóricos y estado del arte 40

Page 53: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

vez que las tiene las procesa, se mueve de acuerdo al plan, y vuelve al inicio del ciclo.

a) pasadizos b) triángulos y ruta planificadaFigura 2.33: Mapa tipo tessalation [Buffa 1992]

Otro ejemplo deliberativo son los RRT (Rapidly-exploring Random Trees) [LaValle 2010] [Bruce 2003], los cuales crean un árbol que se extiende aleatoriamente hacia el objetivo, donde cada nodo es alcanzable desde el anterior por movimientos simples del robot (una curva y una recta). Para extender el árbol se elige aleatoriamente un nodo, con prioridad a los más cercanos al objetivo, y se extiende aleatoriamente, con prioridad a dirigirse al objetivo. El proceso prosigue hasta que el objetivo se alcanza, entonces se calcula la ruta.

Figura 2.34: Simulaciones de un RRT [Bruce 2003]

En [Hernández 2005] puede verse un ejemplo de navegación reactiva usando campos potenciales, la cual es similar a los campos electrostáticos de la física. En esa metodología se divide el espacio en celdas, luego para cada objeto se calcula su campo correspondiente, donde las metas generan atracción y los obstáculos repulsión (Figura 2.35) y se agrega su efecto a cada celda. Después de procesar todos los objetos, en cada celda se obtiene la sumatoria de los efectos de cada objeto, la cual es un vector que indica la ruta que debe seguir el robot.

Visión binocular para robot móvil en exteriores simulados 41

Page 54: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

a) esquivar b) atracciónFigura 2.35: Campos de "esquivar" y de "atracción" [Hernández 2005]

Otro ejemplo reactivo es el usado en [Lara 2007]. Se utiliza el ideomotor, en el cual la percepción y la acción están en el mismo proceso cognitivo. En ese trabajo el ideomotor se implementa con una red neuronal en configuración “hacia adelante” (forward), la cual se usa para predecir y evitar colisiones.

2.10 Aplicaciones de robots móviles que usan visión estéreo

Los robots Rover (Figura 2.36) que se usaron para explorar exitosamente Marte en 1997 han establecido un estándar para la exploración robótica autónoma de superficies planetarias [Maimone 2007]. Tienen varias capacidades autónomas, como detectar y esquivar zonas peligrosas, usan cámaras de visión amplia para minimizar el número de partes móviles, estéreo binocular pasivo (la fuente de iluminación es el sol) para detectar terreno peligroso, odometría visual para medir su desplazamiento, y se calibran en Marte debido a los cambios en los parámetros de las cámaras como consecuencia del viaje [Goldberg 2002].

Figura 2.36: “Spirit”*, uno de los Rover usados en la exploración de Marte.

* Tomado de la NASA.

Capítulo 2 Fundamentos teóricos y estado del arte 42

Page 55: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

La tecnología desarrollada para los Rover ha sido usada también en exploración submarina con fines de minería [Jasiobedzki 2007].

El robot guía de museos RHINO (Figura 2.37) utiliza múltiples sensores, entre ellos visión estéreo, para localizarse en un mapa y esquivar obstáculos [Burgard 1999]. Consta de 3 computadoras locales y 2 remotas con procesamiento asíncrono distribuido y toma de decisiones descentralizada. Una de las razones de su éxito en un ambiente tan cambiante y complejo es el razonamiento y representación probabilísticos. .

Figura 2.37: Guía de museos RHINO [Burgard 1999]

Otros ejemplos de robots con visión estéreo:• Una cosechadora de maíz [Rovira-Más 2007]. Utiliza visión estéreo para distinguir los

tallos de las plantas de maíz y dirigir a una cosechadora.• Sillas ruedas para invidentes [Ivanchenko 2008][Coughlan 2006]. Utilizan visión

estéreo para distinguir obstáculos y así mejorar la movilidad de invidentes.

Visión binocular para robot móvil en exteriores simulados 43

Page 56: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Capítulo 3 Robot móvil

Para probar los algoritmos de visión se diseñó y construyó un robot móvil, cuyo diagrama de bloques puede verse en la Figura 3.1. Las dimensiones finales fueron de 30 cm x 30 cm de base y 25 cm de alto.

Figura 3.1: Diagrama de bloques del robot móvil

Para obtener las imágenes se utilizaron como cámaras a dos webcam Logitech Pro 9000 (Figura 3.2), las cuales soportan una resolución de hasta de 2 MP (mega pixeles) y hasta 30 fps (cuadros por segundo).

Figura 3.2: Cámara webcam Logitech Pro 9000

El poder de cálculo que requieren los algoritmos de visión se obtuvo de una laptop modelo Acer Aspire One, la cual fue elegida por su pequeño tamaño y poco peso. Entre sus características están: 1 GB de RAM, procesador de 1.6 Ghz, disco duro de 120 GB, red inalámbrica por WiFi, 3 puertos USB, dimensiones de 248 mm x 170 mm x 29 mm, y peso de 1 Kg.

En el diseño de la parte mecánica se utilizó la configuración de tres ruedas, dos de las cuales tienen tracción independiente (con su respectivo motor) mientras que una tercera gira libremente (Figura 3.3).

Capítulo 3 Robot móvil 44

PC(Laptop)

Tarjeta de interfaz Motores

Cámaras(par estéreo)

Page 57: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 3.3: Robot móvil y sus tres ruedas

El robot móvil se construyó partiendo de un juguete, del cual se tomó parte de la base, los dos motores de CD (corriente directa) y las dos ruedas delanteras. Aunque no se retiraron las dos ruedas traseras, se agregó una rueda de giro libre entre ellas de manera que ya no tocaran el suelo, por lo que para efectos prácticos el robot sólo tiene tres ruedas. Las dos cámaras y la laptop se integraron al resto de la estructura usando acrílico y tornillos.

Las cámaras se colocaron en la base de acrílico en configuración aproximadamente paralela y a una baseline (distancia entre cámaras) de 11.7 cm (Figura 3.4). Como punto de comparación, la separación interocular humana es de aproximadamente de 6.5 cm.

Figura 3.4: Par estéreo

La precisión en los sistemas de triangulación esta relacionada directamente con la distancia entre las cámaras [Mischler 2007][Torres 1998], de manera que a mayor baseline mayor resolución en grandes profundidades, sin embargo, en pequeñas profundidades una baseline grande produce grandes distorsiones, ya que los ángulos son muy diferentes, y eso dificulta la correspondencia. Este problema no fue evidente sino hasta que el robot estuvo construido, por lo que su baseline es un poco mayor de lo recomendable, y se recomienda disminuirlo en versiones futuras.

Las cámaras se conectan directamente a la laptop, y para poder utilizarlas en el software sólo se requieren sus programas controladores (drivers), los cuales proporciona el fabricante. Por otro lado, las laptops no pueden controlar directamente a los motores, por lo que se construyó

Visión binocular para robot móvil en exteriores simulados 45

motor motor

Page 58: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

una tarjeta de interfaz USB para dicha función. El diagrama a bloques de la tarjeta de interfaz puede verse en la Figura 3.5.

Figura 3.5: Diagrama a bloques de la tarjeta de interfaz

En la Figura 3.5 se muestran algunos componentes que se explican a continuación:• El USB (Universal Serial Bus) es un puerto estándar de comunicaciones que ha

reemplazado a los antiguos puerto serie y paralelo de la PC. Entre sus características está que es totalmente “Plug & Play”, lo que significa que los dispositivos se pueden conectar y desconectar sin necesidad de apagar el equipo, sin que por ello hayan riesgos de daños en el hardware. Además posee velocidades de transmisión de hasta 480Mb/s en el estándar USB 2.0, y proporciona alimentación de 5V de manera que dispositivos de bajo consumo de corriente no requieren una fuente de alimentación externa.

• Un microcontrolador es un circuito integrado que tiene los elementos de una computadora integrados, es decir: CPU (Central Processing Unit), memoria y puertos de E/S. El PIC18F2550 en particular posee la capacidad de comunicación por USB 2.0 y 2 módulos PWM de 10 bits, entre otros.

• El PWM (Pulse Width Modulation) es una técnica de control de potencia por ancho de pulso, en el cual la potencia entregada a un dispositivo, un motor por ejemplo, depende del porcentaje de tiempo que el dispositivo esté encendido (Figura 3.6).

Figura 3.6: Funcionamiento del PWM

• Un puente H es una forma de controlar la dirección de giro de un motor de CD. Recibe su nombre porque generalmente se representa con 4 transistores alrededor de un motor formando una “H” (Figura 3.7).

Capítulo 3 Robot móvil 46

Page 59: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 3.7: Puente H *

En la Figura 3.8 se muestra el prototipo de la tarjeta de interfaz, mientras que en la Figura 3.9 se muestra el diagrama esquemático de la misma.

* Tomado de http://www.neoteo.com/puente-h-para-motores-cc-parte-ii.neo.

Visión binocular para robot móvil en exteriores simulados 47

Page 60: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 3.8: Prototipo de la tarjeta de interfaz

Figura 3.9: Diagrama esquemático del circuito de la tarjeta de interfaz

La tarjeta de interfaz (Figura 3.9) se conecta a la laptop por medio de un cable USB, y proporciona comunicación bidireccional con un microcontrolador PIC18F2550 de Microchip. Un circuito integrado L293D proporciona los dos puentes H para el control de los dos motores de corriente directa, y un regulador de voltaje L7805 proporciona los 5 voltios para la alimentación digital del L293D. La potencia para mover los motores es tomada directamente de un paquete de 6 pilas AA en serie, de a 1.5 voltios cada una. Los detalles de funcionamiento se expondrán a continuación.

Capítulo 3 Robot móvil 48

Puente H

Conexión USB

Salida a motor izquierdo

Salida a motor derecho

Microcontrolador

Alimentación para motores, de 7V a 12V

Page 61: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

3.1 Control de velocidad de los motores

Para controlar la velocidad de los motores se utiliza la técnica PWM (Figura 3.6), en la cual la velocidad depende del tiempo promedio en que los motores estén encendidos. Un motor está encendido si recibe voltajes diferentes en cada terminal, y apagado si los voltajes son iguales o si está desconectado.

El ancho de pulso del PWM del PIC18F2550 se puede controlar con 10 bits de precisión, esto permite valores de PWM de 0 a 1023, Además, el período del PWM se configuró para ser de 1023 microsegundos.

Los bits del puerto A (RA1 y RA3 en la Figura 3.9) determinan la dirección de los motores (Figura 3.10). Si el bit del puerto A es 0, entonces el motor avanzará si el ancho del pulso es mayor a cero, o estará detenido si es igual a cero; de la misma forma, si el bit del puerto A es 1, entonces el motor retrocederá si el valor del PWM es menor a 1023, o estará detenido si es igual a 1023. Esto se puede ver en la Tabla 3.1.

Figura 3.10: Control de dirección de los motores

Tabla 3.1: Control de velocidad y dirección de los motores

Bit de habilitación en el puerto A

Bit de dirección en el puerto A

Valor de PWM

Resultado

0 X X Motor desconectado, frenado lento.1 0 0 Frenado rápido.1 0 255 Avance a ¼ de potencia.1 0 512 Avance a ½ de potencia.1 0 767 Avance a ¾ de potencia.1 0 1023 Avance a toda potencia.1 1 0 Retroceso a toda potencia.1 1 255 Retroceso a ¾ de potencia.

Visión binocular para robot móvil en exteriores simulados 49

Page 62: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

1 1 512 Retroceso a ½ de potencia.1 1 767 Retroceso a ¼ de potencia.1 1 1023 Frenado rápido.

Donde la {X} significa que no importa su valor.

3.2 Comunicación del robot con la laptop

La comunicación se realiza físicamente por el puerto USB, sin embargo, desde el punto de vista de la PC (laptop) lo que existe es un puerto serie al cual se envían caracteres. Esto es gracias al driver CDC (Communication Device Class) [AN956 2004] de Microchip, el cual emula al puerto serie RS-232 (Figura 3.11).

Figura 3.11: Emulación de RS-232 sobre USB [Rojvanit 2004]

Desde la PC se envía una cadena de tres números separados por espacios y terminada por un espacio y un salto de línea. El primer número corresponde al valor del PWM del motor izquierdo, y va de 0 a 1023 (debido a los 10 bits de resolución), el segundo número corresponde al valor del PWM del motor derecho, también de 0 a 1023, y por último el tercer número corresponde al valor en decimal del puerto A según la Tabla 3.2. Unos ejemplos de cadenas de control pueden verse a continuación:

• La cadena “1023 1023 5 ” (seguido de un salto de línea) corresponde la máxima velocidad avanzando.

Capítulo 3 Robot móvil 50

Page 63: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

• Si se desea que el motor derecho esté apagado (desconectado) mientras que el izquierdo retrocede a velocidad media, entonces la cadena de control podría ser “512 0 3 ” (seguido de un salto de línea).

Tabla 3.2: Formato del tercer número en la cadena de control

Bit 3 (+8) Bit 2 (+4) Bit 1 (+2) Bit 0 (+1)Dirección del motor derecho.

Habilitación del motor derecho.

Dirección del motor izquierdo.

Habilitación del motor izquierdo.

Para usar el puerto serie virtual se usó la librería RS-232 [Beelen 2010], la cual permite usar el puerto serie con sencillas funciones en C. Las funciones usadas en este proyecto fueron:

int OpenComport(int comport_number, int baudrate).- Abre el puerto serie a la velocidad deseada, devuelve 1 en caso de error. El primer puerto serie (COM1 ó /dev/ttyS0) es el número cero.

void cprintf(int comport_number, const char *text).- Envía una cadena terminada en NULL ('\0') al puerto serie indicado.

int PollComport(int comport_number, unsigned char *buf, int size).- Lee una cadena del puerto serie, devuelve la cantidad de letras (bytes) leídas.

void CloseComport(int comport_number).- Cierra y libera el puerto serie.

3.3 Firmware del robot móvil

El firmware es el programa que se graba en el microcontrolador, de manera que se ejecuta cada vez que el microcontrolador entra en funcionamiento.

Para conseguir la comunicación USB se utilizó una versión modificada del firmware MCHPFSUSB 1.2 (http://ww1.microchip.com/downloads/en/DeviceDoc/MCHPFSUSB_Setup_v1.2.exe) de la tarjeta entrenadora para el PIC18F4550 de Microchip (PICDEM™ FS USB Demo Board), de acuerdo a su guía de usuario [DS51679A 2007], un tutorial[Moyano 2009] y un proyecto de ejemplo[Lesnet 2008]. Microchip proporciona junto con el firmware al driver CDC, lo cual facilita la programación.

El firmware funciona de la siguiente forma: Después de iniciar o reiniciar (resetear) el microcontrolador, éste ejecuta el “main()”, del firmware, en el cual se llama a “InitializeSystem()”, la cual realiza la configuración inicial prefijada y llama a “UserInit()” en donde el usuario debe poner sus rutinas de inicialización. Posteriormente “main()” entra en un ciclo infinito ejecutando a “USBTasks()” y a “ProcessIO()”, donde la primera se encarga de las operaciones necesarias para atender el USB, como son la recepción y transmisión, mientras que la segunda es donde el usuario pone sus rutinas de operación. Las dos rutinas que el

Visión binocular para robot móvil en exteriores simulados 51

Page 64: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

usuario debe modificar para adaptar el firmware a su proyecto son “UserInit” y “ProcesIO”, ambos en el archivo “user.c”. Esto se representa en la Figura 3.12.

Figura 3.12: Estructura del firmware

Siguiendo este esquema, en la rutina “UserInit” se incluyó la inicialización del PWM con las siguientes instrucciones:

• OpenTimer2(TIMER_INT_ON & T2_PS_1_16 & T2_POST_1_1). Activa el Timer2, el cual está ligado al PWM, y establece su predivisor de frecuencia (prescaler) en 16 (“T2_PS_1_16”). El postscaler (“T2_POST_1_1”) no se utiliza (según la hoja de datos del PIC18F2550).

• OpenPWM1(255), OpenPWM2(255). Inicia los PWM con un segundo divisor en 255. El periodo se calcula como: [(PR2)+1]*4*TOSC*TMR2_Prescaler [DS51297F 2005]. Como en este caso PR2 (el parámetro de OpenPWMx) es 255, TOSC = 62.5 nanosegundos (1/16 MHz) y TMR2_Prescaler = 16, producen un período de 1024 nanosegunos, o lo que es lo mismo: 1.024 ms.

Además en “ProcessIO” se incluyó un algoritmo que recibe caracteres hasta completar 3 números separados por espacios de la forma “NUM1 NUM2 NUM3 ”, para luego aplicar las siguientes instrucciones:

• SetDCPWM1(NUM1), SetDCPWM2(NUM2). Establecen el ciclo de trabajo del PWM1 y PWM2 respectivamente. El ciclo de trabajo es un número entre 0 y 1023, siendo 0 el correspondiente al 100% de los 1023 ns en cero, y el 1023 el correspondiente al 100% de los 1023 ns en 1.

• PORTA = NUM3. Envía los bits de NUM3 directamente al puerto A.

Estos pasos serían suficientes si se utilizara la tarjeta entrenadora, pero como en este proyecto se construyó una tarjeta de interfaz nueva, se procedió a cambiar otras partes:

• Se cambió el PIC18F4550 por el PIC18F2550.• Se configuró para utilizar un cristal de 4MHz. Mediante el PLL (Phase Lock Loop)

interno se adquirieron los 48MHz del USB, y el CPU se configuró a 16 Mhz.• Se configuró para utilizar el PWM1 en RC1 (pin 13).• Se configuró el PIC para usar alimentación directamente desde el USB y se eliminó el

modo “sleep”.• Se eliminaron los módulos del display y del sensor de temperatura, los cuales son

periféricos de la tarjeta entrenadora.

Capítulo 3 Robot móvil 52

main InitializeSystem USBTasks ProcessIO

UserInit

Page 65: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

3.4 Caracterización del robot móvil

Una vez terminada la parte física y el firmware del robot, se construyó un modelo de desplazamiento y se obtuvieron sus parámetros como se describe a continuación.

El movimiento relativo del robot se dividió en 3 etapas: aceleración, velocidad constante y frenado. Si se proporciona el tiempo suficiente para que se alcance la velocidad constante (velocidad máxima para el PWM proporcionado), entonces el movimiento puede calcularse con una ecuación lineal sobre el tiempo: {z = v*t + zoff} (Figura 3.13 y Figura 3.14).

Figura 3.13: Curva de movimiento versus tiempo

Observando al robot móvil se estimó que el tiempo de frenado era de aproximadamente un segundo, y el tiempo de aceleración de medio segundo (500 ms).

Si el tiempo no es suficiente para alcanzar la velocidad constante, entonces el cálculo de la distancia recorrida se hace complejo de calcular. Por simplicidad también se aproximó a una ecuación lineal: {z=vch*t} (Figura 3.14).

Figura 3.14: Dos regiones de operación del estimado de movimiento

Para obtener los parámetros de estos modelos se realizaron varios experimentos. Los datos obtenidos y los parámetros calculados pueden verse en la Tabla 3.3, donde se observa que se realizaron tres experimentos ({z exp1}, {z exp2} y {z exp3}) para cada combinación de datos de entrada y se promediaron los resultados.

Visión binocular para robot móvil en exteriores simulados 53

FrenadoFrenadoAceleración

Velocidad constanteAproximación lineal

Page 66: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Tabla 3.3: Experimentos para caracterizar al robot móvil

Mizq Mder t z exp1 z exp2 z exp3 z v zoff vch

767 767 500 ms 4 cm 3.5 cm 2.5 cm 3.3 cm 0.0066767 767 1500

ms23 cm 23.5 cm 26.5 24.3 0.021 -7.2

1023 1023 500 ms 14 cm 14.5 cm 15.5 cm 14.6 cm 0.02921023 1023 1500

ms58.5 cm 58.5 cm 58.5 cm 58.5 cm 0.0439 -7.35

1023 0 500 ms -20° -20° -20° -20° -0.041023 0 1500

ms-100° -95° -96° -97° -0.077 18.5

0 -1023 500 ms -22° -19° -20° -20.3° 0.04060 -1023 1500

ms-100° -110° -100° -103.3° -0.083 21.2

0 1023 500 ms 20° 10° 11° 13.6° 0.02720 1023 1500

ms76° 76° 83° 78.3° 0.0647 -12.05

-1023 0 500 ms 25° 27° 29° 27° 0.054-1023 0 1500

ms101° 103° 108° 104° 0.077 -11.5

Donde {Mizq} y {Mder} son el valor PWM de los motores izquierdo y derecho respectivamente, un valor positivo significa avanzar, un valor negativo retroceder, 1023/-1023 son la máxima potencia y cero es “sin movimiento”;{t} es el tiempo en que se mantuvo el valor de PWM;{z exp1}, {z exp2} y {z exp3} son los desplazamientos en el eje {z} de los experimentos 1, 2 y 3 respectivamente;{z} es la distancia promedio recorrida;{v} es la velocidad constante;{zoff} es el desplazamiento durante la aceleración; y {vch} es la velocidad promedio antes de alcazar la velocidad constante.

En la Tabla 3.3 se observa que:• La máxima velocidad avanzando del robot fue de 0.0439 cm/ms, lo que equivale a 43.9

cm/s, aproximadamente medio metro por cada segundo.

Capítulo 3 Robot móvil 54

Page 67: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

• La máxima velocidad ángular negativa fue de -83 grados por cada segundo.• La máxima velocidad ángular positiva fue de 77 grados por cada segundo.• Hay una gran diferencia entre girar por la izquierda y por la derecha, esto se supone

que es por diferencias físicas en los motores y en las llantas.

Para simplificar los cálculos sólo se utilizó la máxima potencia en todos los movimientos, además sólo se implementaron giros y avances, no se implementaron movimientos compuestos.

El cálculo del movimiento durante los avances se obtiene directamente de la fórmula. Por otra parte los giros, debido a la estructura física del robot móvil, además del cambio en el ángulo también involucran un movimiento al frente y otro lateral (Figura 3.15). Después de varios experimentos, y debido a que el origen fué la cámara izquierda, el radio del giro (RadioGiro) se estimó en 1 cm para giros a la izquierda, y 12 cm para giros a la derecha.

Figura 3.15: Movimientos lateral y al frente del giro

Visión binocular para robot móvil en exteriores simulados 55

Page 68: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Capítulo 4 Software

El software se diseñó e implementó como un conjunto de clases (Figura 4.1) a fin de hacerlo más fácil de entender, modificar y extender. A continuación una breve descripción de las clases, mencionando sus responsabilidades, métodos y atributos más importantes.

Figura 4.1: Diagrama de clases del software.

BinocCam: se responsabiliza de configurar las cámaras y proporciona las imágenes a color izquierda y derecha en forma de atributos (imgIzq, imgDer). Para realizar simulaciones se puede configurar para que obtenga las imágenes de una lista de archivos o de videos previamente grabados. También permite guardar y cargar imágenes.

BinocCalib: su tarea es calibrar las cámaras, para lo cual obtiene las imágenes de BinocCam. Genera las matrices de calibración y las guarda en archivos. También lee la calibración de los archivos, de esta manera sólo es necesario calibrar una vez.

BinocRectif: proporciona imágenes a color rectificadas en forma de atributos. Para esto utiliza la información de la calibración.

BinocCorresp: proporciona una interfaz común a diversos algoritmos de correspondencia. Su método calcDisp es virtual y puede sobrecargarse en una clase hija (polimorfismo) para

Capítulo 4 Software 56

Flujo de datos

ArchivosBinocCam imgIzq, imgDer

BinocCalib Q, Rizq, Rder, Dizq, Dder

BinocRectifimgIzq, imgDer

BinocCorresp Virt llamaDiv(), Virt calcDisp(), disp

BinocReconst <T>divPlanos(), imgAbajo, imgEnmedio, imgArriba, distCentroOptico

Navegador setOrig(), setDest(), Virt isReady()

ControlCarro setAvance(), setGiro(), isReady(), getMovEstimado()

Rizq, R

der,

Dizq, D

der

Q

Archivos

BC_SGBMcalcDisp()

BC_BTMllamaDiv(), calcDisp()

... herencia

suelo

Page 69: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

realizar otros algoritmos de correspondencia de forma transparente a las demás clases. Su método llamaDiv también puede sobrecargarse para llamar a diferentes algoritmos de reconstrucción dentro de BinocReconst, según sean las necesidades de los datos que proporcione el algoritmo de correspondencia. En la Figura 4.1 BC_SGBM (Semi Global Block Matching) y BC_BTM (Birchfield-Tomasi sampling-insensitive intensity local matcher) son clases hijas de BinocCorresp y utilizan otros algoritmos de correspondencia.

BinocReconst: proporciona el método divPlanos, el cual toma cada par de puntos 2D devueltos por el algoritmo de correspondencia y lo desproyecta produciendo puntos 3D, a los cuales clasifica en tres mapas tipo “vista de pájaro” según su altura sobre el plano del suelo: imgAbajo, imgEnmedio e imgArriba. Los puntos en imgAbajo e imgEnmedio son baches y obstáculos respectivamente, por lo que se utilizan para generar un vector con las distancias y ángulos de los posibles obstáculos más cercanos, estos se almacenan en distCentroOptico. La clase proporciona varias implementaciones del método divPlanos, cada una adecuada a un diferente tipo de datos (carácter, entero, flotante) o presentación de datos (matriz, vector) que produzca el algoritmo de correspondencia. Esto permite utilizar nuevos algoritmos de correspondencia sin el típico costo de la sobrecarga de métodos.

Navegador: requiere que se le establezcan las coordenadas iniciales del robot móvil y las coordenadas del destino, entonces esta clase se encarga de generar las órdenes para ControlCarro de manera que eventualmente se llegue al destino, y se esquiven los obstáculos presentes en el proceso. Entre sus responsabilidades está detectar obstáculos (usando la información de BinocReconst) y actualizar las coordenadas del robot móvil (usando la información de odometría que devuelve ControlCarro). Permite implementar otros algoritmos de navegación sobrecargargando su método isReady.

ControlCarro: requiere que se le establezca un valor de giro (setGiro) en radianes o un valor de distancia (setAvance) en centímetros, y se encarga de que el robot móvil realice los movimientos necesarios para cumplir el comando. También se responsabiliza de la odometría y de la comunicación con el hardware del robot móvil.

A continuación se explica la forma en que se implementan los algoritmos más importantes.

4.1 Obtención de imágenes estéreo

Las imágenes estéreo son dos imágenes, una por cada cámara, tomadas simultáneamente. En la práctica no se logró tomarlas simultáneamente, pero se redujo la diferencia en tiempo entre las capturas y se absorbió el error de sincronía en los demás algoritmos.

Para reducir la diferencia en tiempo entre las imágenes del par estéreo se configuraron las cámaras a 30 cuadros por segundo y se tomaron las imágenes con instrucciones consecutivas. Con estas medidas se redujo el tiempo entre las imágenes a un máximo de 33ms, con un

Visión binocular para robot móvil en exteriores simulados 57

Page 70: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

promedio inferior a los 15ms.

Para reducir el efecto de la falta de sincronía en los algoritmos de visión, el robot móvil le tiene más confianza a las imágenes que toma estando quieto, ya que en esos momentos la escena es estática (no se mueve ni el robot ni los obstáculos) y por lo tanto la falta de sincronía no afecta. Esto se refleja en que cuando está girando no realiza correspondencia, pues es cuando la falta de sincronía produce más errores, y cuando está avanzando y detecta un obstáculo, el robot móvil se detiene y vuelve a mirar, si el obstáculo sigue allí reacciona, de lo contrario considera que fue un error y continúa avanzando.

La obtención de imágenes se realizó con OpenCV [OpenCV 2010] y con VideoInput [Watson1995]. El segundo se utilizó porque en algunas condiciones OpenCV presentaba fallas para manejar dos cámaras.

Antes de realizar la calibración es necesario contar con una colección de imágenes estéreo del patrón de calibración (Figura 4.2). En este proyecto se utilizaron 14 imágenes de un patrón de calibración plano (2D) tipo “tablero de ajedrez” de 7x8, los cuales generan arreglos de esquinas interiores de 6x7 (los bordes se descartan para mayor precisión).

Figura 4.2: Colección de imágenes para calibración [Bouguet 2010]

A cada imagen se le aplica un algoritmo que busca las esquinas interiores, si las encuentra las devuelve en una lista ordenada, se colorean y se presentan al usuario (Figura 4.3). Las funciones para detectar y colorear las esquinas se tomaron de OpenCV, y son “cv::findChessboardCorners” y “cv::drawChessboardCorners” respectivamente. El usuario observa las imágenes y puede decidir descartarlas si observa algún error, o bien agregarlas a la lista de imágenes estéreo que le pasan al algoritmo de calibración.

Capítulo 4 Software 58

Page 71: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 4.3: Esquinas coloreadas en un patrón tipo "tablero de ajedrez"

El algoritmo es el siguiente:Abrir las cámaras. Mientras no se tengan todas las imágenes solicitadas

Obtener una imagen. Encontrar las esquinas. Dibujar las esquinas en la imagen y mostrar al usuario.Si el usuario acepta la imagen

Agregar la imagen y sus esquinas a la lista.Fin_si

Fin_mientras

El sistema desarrollado permite guardar y recuperar las imágenes de manera que puedan ser reutilizadas en varios procesos de calibración.

4.2 Calibración

Una vez que se tiene la colección de imágenes estéreo, se realiza la calibración fotogramétrica. Para esto se genera un arreglo con las coordenadas de cada esquina en la imagen (2D) y otro con las coordenadas en el plano de calibración, tal y como requiere el algoritmo de Zhang [Zhang 2000]. Las coordenadas de la imagen se obtienen del algoritmo de detección de esquinas, mientras que las coordenadas del plano de calibración se obtienen de una simple fórmula:

[ j∗AnchoCuadro −i∗AltoCuadro ] (4.1)Donde {j} es el número de columna del arreglo;{i} es el número de fila; y{AnchoCuadro} y {AltoCuadro} son las dimensiones de un cuadro del “tablero de ajedrez”, y en el patrón utilizado fueron de 6.65 cm.

El algoritmo de Zhang de la librería OpenCV encuentra 5 parámetros de distorsión, las matrices intrínsecas de las cámaras, y para cada imagen la rotación y traslación con respecto al

Visión binocular para robot móvil en exteriores simulados 59

Page 72: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

patrón de calibración.

Los parámetros de distorsión son {[k1 k2 p1 p2 k3]}, donde {k1}, {k2} y {k3} son coeficientes de distorsión radial (Figura 4.4 y Ecuación 4.2 [Heikkila 1997]), los cuales modelan la deformación de la imagen de acuerdo a su distancia al punto principal (el punto de la imagen más cercano al centro óptico, generalmente en el centro de la imagen), mientras que {p1} y {p2} son los coeficientes de distorsión tangencial (Figura 4.5 y Ecuación 4.3 [Heikkila1997]), los cuales son debidos a errores en la alineación de las lentes con respecto al plano de la imagen. En este proyecto, debido a que se observó buena calidad en las imágenes de las cámaras, sólo se utilizaron los primeros dos coeficientes de distorsión radial ({k1} y {k2}).

Figura 4.4: Distorsión radial

r= xd2 yd

2

x u=xd 1k 1 r2k 2 r 4k 3 r6 , y u= yd 1k 1 r2k 2∗r 4k 3 r6 (4.2)

Donde {xu} y {yu} son las coordenadas corregidas que deberían aparecer en la pantalla si no hubiera distorsión;{xd} y {yd} son las coordenadas reales que aparecen en la pantalla debidas a la distorsión;{r} es la distancia radial de las coordenadas distorsionadas al centro óptico, que en este caso se consideró como cero; y{k1}, {k2} y {k3} los coeficientes de distorsión radial.

Figura 4.5: Distorsión tangencial [Bradski 2008]

Capítulo 4 Software 60

Page 73: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

r= x d2y d

2

x u=xd2 p1 yd p2r22 x d

2 , yu=y d p1r22 y d

22 p2 x d

(4.3)

La calibración estéreo de OpenCV (“cv::StereoCalibrate”) entrega los parámetros de distorsión y matrices intrínsecas de ambas cámaras, la rotación y traslación entre las cámaras (pone a la cámara izquierda en el origen), la matriz Esencial y la matriz Fundamental. Todos estos se guardan en archivos de manera que la calibración sólo tenga que realizarse una vez.

4.3 Rectificación

Los algoritmos de correspondencia y reconstrucción se simplifican en la configuración de cámaras paralelas, sin embargo esta configuración es muy difícil de lograr en la práctica, por lo que se sigue un proceso alterno: poner las cámaras en configuración aproximadamente paralela, y rectificar las imágenes.

Para la rectificación se utiliza el algoritmo de Bouguet [Bouguet 2010], el cual usa la rotación y traslación entre el par estéreo de cámaras, e intenta minimizar el cambio que la reproyección produce en cada imagen mientras maximiza el área visible común en las imágenes.

En OpenCV este algoritmo se implementa en la función “cv::StereoRectify”, la cual calcula las homografías para rectificar las imágenes izquierda y derecha, las nuevas matrices de cámara en el espacio rectificado, y la matriz de desproyección {Q} (Ecuación 2.73).

El espacio rectificado las matrices de cámara tienen la forma:

P ' i=[ f 0 c1x 00 f c y 00 0 1 0] , P ' d=[ f 0 c2x f ∗B

0 f c y 00 0 1 0 ] (4.4)

Donde { c1x=c2x } cuando se elige que la disparidad cero represente la distancia en el infinito (CV_CALIB_ZERO_DISPARITY);{f} es la distancia focal; y {B} el desplazamiento horizontal entre las cámaras (baseline).

OpenCV proporciona una función para calcular el mapeo de todos los pixeles de una imagen original a una imagen rectificada, “cv::InitUndistortRectifyMap”, la cual permite que el cálculo para retirar la distorsión y para aplicar las homografías de rectificación se realice sólo una vez. Esta función genera dos arreglos de números reales donde las coordenadas de cada elemento del arreglo son las coordenadas del punto original, y su contenido es aproximadamente una coordenada en la imagen rectificada (Ecuación 4.5).

Visión binocular para robot móvil en exteriores simulados 61

Page 74: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

map x : x , y ∈ℤ2 x '∈ℝmap y : x , y ∈ℤ2 y '∈ℝ

(4.5)

El color de cada pixel de la imagen rectificada se calcula en base a qué tan cerca de él están las coordenadas rectificadas, habiendo varias estrategias para esto, por ejemplo: interpolar, tomar al más cercano, etc. En la Figura 4.6 se muestra una forma de obtener el color, en ese caso usando un promedio ponderado.

Figura 4.6: Rectificación

4.4 Reconstrucción

La reconstrucción se divide en varias tareas:• Desproyección: encontrar los puntos 3D, dados pares apareados de puntos 2D.• Proyección sobre el plano del suelo: los puntos 3D se proyectan en el plano del suelo y

se dividen en tres mapas tipo “vista de pájaro” (imgAbajo, imgEnmedio, imgArriba), de acuerdo a su altura sobre el plano del suelo.

• Selección de los posibles obstáculos más cercanos: los puntos de imgAbajo y de imgEnmedio pueden ser obstáculos, por lo que para cada ángulo se elige al más cercano y se guarda en un vector (distCentroOptico).

• Dilatación: cada posible obstáculo de distCentroOptico se expande de manera que si un ángulo está libre de obstáculos no se produzcan colisiones laterales.

4.4.1 Desproyección

Como se trabaja con imágenes rectificadas se utiliza la triangulación para el caso de cámaras paralelas (Figura 2.27 y Figura 2.28), que puede aplicarse con la matriz de desproyección {Q} (Ecuación 2.73). Sin embargo, debido a que la matriz {Q} tiene muchos ceros, se prefirió realizar la triangulación con las fórmulas de la Ecuación 4.6.

d=uix−udx , w z= f ∗ Bd , w x=uix−c1x ∗ B

d , w y=c y−uiy∗ Bd (4.6)

Donde la disparidad {d} se calcula restando las coordenadas {x} de los puntos apareados;

Capítulo 4 Software 62

Page 75: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

{uix} y {udx} son las coordenadas {x} de los puntos de las imágenes rectificadas izquierda y derecha respectivamente;{f} es el foco de las matrices intrínsecas en el espacio rectificado;{c1x} y {cy} son las coordenadas del centro óptico de la cámara izquierda en el espacio rectificado; y{wx}, {wy} y {wz} son las coordenadas del punto 3D encontrado.

4.4.2 Proyección paralela sobre el plano del suelo

El plano del suelo se calibra usando puntos de ejemplo, los cuales son marcas de un color distintivo al suelo (ver Figura 4.7).

Figura 4.7: Calibración del suelo

El proceso consiste en: • El usuario pone tres marcas en el suelo en configuración de triángulo.• El usuario selecciona las marcas en las imágenes usando el mouse.• El programa segmenta las marcas por color y calcula sus centroides.• El programa triangula los centroides para obtener las coordenadas 3D.• El programa encuentra la ecuación del plano que pasa por esos puntos, la cual es la

ecuación del plano del suelo.

Teniendo la ecuación del plano del suelo se prosigue a encontrar los vectores generadores del plano del suelo {u,v}, los cuales permiten realizar una proyección paralela de los puntos 3D {w} sobre el plano del suelo (ver Figura 4.8).

Visión binocular para robot móvil en exteriores simulados 63

Page 76: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 4.8: Proyección paralela sobre el plano del suelo

La ecuación del plano tiene la forma {A X + B Y + C Z + D = 0}, de la cual se obtiene directamente la normal {n = [ A B C ]T}. Para obtener el vector {u} se utiliza la propiedad de que es ortogonal a la normal, lo que significa que el producto punto entre ambos da cero ({nT

u = 0}), y que está sobre el plano de la imágen ({uz=0}). Estas dos restricciones determinan dos posibles {u}, una que va hacia la derecha y otra que va hacia la izquierda del robot, de las cuales se elige la que va a la derecha. El último vector ({v}) se encuentra fácilmente con un producto cruz ({v=[u]x n}).

Para la proyección también es necesario el origen {p0} del plano del suelo, de manera que las coordenadas del punto 3D {w} estén con referencia a él. Se calcula usando dos restricciones: {p0} está sobre el plano del suelo, y su componente sobre {u} está a {ANCHO_MAPA/2} cm a la izquierda. Esto se aproxima encontrando la intersección del eje {y} con el plano del suelo y desplazandolo a la izquierda sobre el suelo ({-u*ANCHO_MAPA/2}).

Una vez teniendo {p0, u, v, n}, las coordenadas de un punto 3D {w} al proyectarlo de forma paralela sobre el plano del suelo se obtienen como se muestra en la Ecuación 4.7.

w '=w− p0 , pu=uT w' , pv=vT w' , pn=nT w'

p=[ pu pv pn ]T

, p '=[ pu pv ]T (4.7)

Donde {u}, {v} y {n} son los vectores que describen el suelo;{p'} son las coordenadas en una imagen tipo “vista de pájaro”; y {pn} es la altura del punto {w} sobre el suelo.

Estas operaciones también pueden verse como una traslación y rotación:

R=[u v n]T , t=−R∗p0 , p=[ R t ]wp=[ pu pv pn ]

T, p'=[ pu pv ]

T (4.8)

Donde {R} es la rotación definida por los vectores {u}, {v} y {n};{t} es una traslación calculada en base a la rotación {R} y la esquina del plano de proyección {p0};{w} es el punto 3D en coordenadas homogéneas;{p'} son las coordenadas cartesianas del punto en la imagen tipo “vista de pájaro”; y

Capítulo 4 Software 64

Page 77: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

{pn} es la altura del punto {w} sobre el suelo.

En ambos casos (ecuaciones 4.7 y 4.8), la última operación es una proyección paralela, en la cual simplemente se descarta una coordenada (se descarta {pn}).

Para dividir los puntos en sus vistas de pájaro correspondientes se útiliza la altura {pn}: • Si {pn < umbral_negativo} entonces {p'} se grafica en imgAbajo y se considera un

agujero.• Si {pn > umbral_positivo} y {pn < altura_del_robot} entonces {p'} se grafica en

imgEnmedio y se considera un obstáculo.• Si {pn} > altura_del_robot} entonces {p'} se grafica en imgArriba y se ignora en la

navegación.

La altura del robot se midió en 25 cm, de manera que la variable altura_del_robot se estableció en 28 cm para dar 3 cm de tolerancia, y se usó un umbral de 5 cm para absorver los errores en la correspondencia, digitalización y triangulación.

4.4.3 Selección de posibles obstáculos más cercanos

Es posible calcular el ángulo que le corresponde a cada coordenada {xu} de la imagen rectificada usando la matriz de desproyección {Q}. Esto se consigue asignando el valor deseado de la coordenada de imagen {x}, cualquier disparidad y cualquier coordenada de imagen {y}, y encontrando el ángulo que le corresponde a las coordenadas espaciales {xw} y {zw} resultantes. Esto significa que es posible encontrar una función que asocie una coordenada {xu} con un ángulo y viceversa. Las utilizadas en el sistema se muestran en la Ecuación 4.9.

ang u x=−arctan u x−c x

f , ux ang = f ∗tan −ang c x (4.9)

Entonces, para encontrar el obstáculo más cercano para cada ángulo lo que se hace es encontrar el posible obstáculo o agujero más cercano para cada columna de la imágen (coordenada {ux}). Sin embargo, no todos los puntos {w} pueden ser obstáculos, sólo pueden serlo los que estén en imgAbajo (agujeros) e imgEnmedio (obstáculos típicos), por lo que el algoritmo queda como sigue:

Se inicializan todos los elementos del vector {disCentroOptico} en infinitos.Para cada pixel ({ux, uy, d}) con su disparidad:

Se desproyecta y se encuentra su {w}Se proyecta paralelamente en el plano del suelo y se clasifica en {imgAbajo},

{imgArriba} o {imgEnmedio}.Si está en {imgEnmedio} o {imgAbajo} y está mas cerca que el

Visión binocular para robot móvil en exteriores simulados 65

Page 78: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

{distCentroOptico[ux]} anterior, este último se reemplaza.fin_para

Por lo tanto el vector distCentroOptico contiene a las distancias más cercanas a los posibles obstáculos por cada {xu}, o lo que es lo mismo, por cada ángulo.

4.4.4 Dilatación proporcional para esquivar obstáculos

En la sección 4.4.3 se vio como poner en distCentroOptico las máximas distancias en línea de vista para cada ángulo, lo cual no equivale a la máxima distancia que puede recorrer el robot en ese ángulo, ya que como se observa en la Figura 4.9, se pueden producir colisiones con obstáculos a los lados.

Figura 4.9: Ejemplo de colisión debida al ancho del robot

A fin de proporcionar una herramienta de fácil uso para la navegación, en distCentroOptico se pone la máxima distancia que puede recorrer el robot móvil para cada ángulo, o más bien, para cada valor de la coordenada {xu} de la imagen. Esto se consigue dilatando los obstáculos. Para saber cuánto hay que dilatarlos se usan triángulos semejantes (Figura 4.8).

Capítulo 4 Software 66

Obstáculo

Page 79: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 4.10: Cálculo de la dilatación

El algoritmo puede expresarse como sigue:Para cada obstáculo del vector de distancias

{ini = f*(obstáculo.X – anchoDer)/obstáculo.Z}{fin = f*(obstáculo.X + anchoIzq)/obstáculo.Z}Llenar el vector de distancias, desde {ini} hasta {fin}, con el mismo obstáculo.

Fin_para

4.5 Algoritmos de correspondencia

En visión estéreo el problema de la correspondencia consiste en encontrar pares de puntos, uno en la imagen izquierda y otro en la derecha, de manera que correspondan al mismo punto 3D. Es un problema complejo y sobre el cual se sigue trabajando.

Se evaluaron tres algoritmos de correspondencia para ver si satisfacían las necesidades del robot móvil. Los algoritmos evaluados fueron:

• BM (Block Matching): correspondencia local por bloques usado en BinocCorresp, lo proporciona OpenCV [Bradski 2008] en su clase StereoBM y está basado en el algoritmo de Konolige [Konolige 1997]. Utiliza la métrica SAD (suma de diferencias absolutas) para comparar ventanas (o bloques) cuadrados entre la imagen derecha y la izquierda.

• SGBM (Semi Global Block Matching): correspondencia semi-global por bloques usado en la clase BC_SGBM, proporcionado por OpenCV en su clase StereoSGBM. El cual es una versión modificada del algoritmo del algoritmo de Hirschmuller [Hirschmuller2008], y minimiza una función de costo que incluye una parte que depende de la ventana local y una parte que depende de las correspondencias de los vecinos.

Visión binocular para robot móvil en exteriores simulados 67

Page 80: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

• BTM (Birchfield-Tomasi sampling-insensitive intensity local matcher): correspondencia por bloques tipo Birchfield-Tomasi, usado en BC_BTM, proporcionado por OpenVis3D [Ogale 2006] [Ogale 2005].

Se analizaron los siguientes aspectos de los algoritmos:• Rapidez: se refiere al tiempo que le toma procesar un par de imágenes. Se midió en

milisegundos (ms) en la misma computadora típica.• Falsos positivos: es cuando detecta un obstáculo donde no lo hay.• Falsos negativos: es cuando un obstáculo está enfrente pero el algoritmo de

correspondencia no lo detecta.• Precisión: se refiere a con cuanta exactitud se obtiene la disparidad, lo cual se refleja

en la exactitud de las coordenadas de los puntos 3D reconstruidos. Este aspecto se observó cualitativamente en el mapa de disparidades, ya que la navegación requiere poca precisión (del rango de unos centímetros).

Para analizar y calibrar los algoritmos se diseñó un ambiente de pruebas (Figura 4.11) con objetos de interiores (una mesa, una silla y una computadora) y un objeto de exteriores (una roca de 20 cm de ancho por 13 cm de alto). Todas las imágenes fueron a color de 24 bits, RGB, y 320x240 pixeles.

Figura 4.11: Ambiente para calibrar los algoritmos de correspondencia, vista lateral y de pájaro

4.5.1 Algoritmo BM

El algoritmo BM de OpenCV requiere imágenes en escala de gris, por lo que las imágenes de entrada se transformaron a escala de gris después de la rectificación.

Como su nombre lo indica, es un algoritmo por bloques (Figura 2.22), lo que significa que aparea bloques en la imagen izquierda con bloques en la ventana derecha, y se queda con la disparidad que presenta una menor diferencia entre los bloques.

Tiene tres etapas:1. Pre-filtrado: para normalizar el brillo y mejorar la textura.

Capítulo 4 Software 68

Page 81: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

2. Correspondencia usando suma de diferencias absolutas (Ecuación 2.62).3. Pos-filtrado: para eliminar correspondencias dudosas.

Para acelerar su funcionamiento utiliza una métrica de textura, y si la ventana no supera un umbral (es muy plana), la descarta.

Para eliminar las correspondencias dudosas utiliza el concepto de salpicadura (speckle). Para entender este concepto se observa que en la superficie de un objeto la disparidad es continua, pero en los bordes se producen cambios bruscos de disparidad, y es allí donde el algoritmo de correspondencia por bloques suele fallar. Para eliminar estas fallas, este algoritmo pasa una ventana sobre el mapa de disparidades, y en donde la varianza en disparidades sea muy alta (mayor a un umbral), las descarta.

Como características especiales tiene que utiliza resolución subpixel, y aunque no tiene un método específico para detectar oclusiones, las descarta en el proceso para eliminar correspondencias dudosas.

En la Figura 4.12 se observa un ejemplo de correspondencia y reconstrucción usando el algoritmo BM con parámetros predeterminados. Se observan pequeños errores en la correspondencia, los cuales se ven reflejados en la reconstrucción (las vistas de pájaro). También se observa que los objetos lejanos (por ejemplo la computadora) quedan en imgArriba pero no en imgEnmedio, no ha quedado claro el motivo.

Figura 4.12: BM con parámetros predeterminados

En la Figura 4.13 se observa el mismo algoritmo BM, pero ajustando el tamaño de su ventana (bloque). Se observa que al llegar a un tamaño de ventana de 41 pixeles el ruido desaparece.

Visión binocular para robot móvil en exteriores simulados 69

ruidoruidoruidoRuido

Roca Roca Roca

Los puntos negros son ruido

Posición de la Cámara izquierda

Page 82: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 4.13: BM con ventana de 41 pixeles

4.5.2 Algoritmo SGBM

El algoritmo SGBM minimiza la función de costo de la Ecuación 4.10 [Hirschmuller 2008].

E D=∑p

C p , D p∑q∈N p

P1 T [∣Dp−Dq∣=1]∑q∈N p

P 2T [∣D p−Dq∣1 ] (4.10)

Donde {E()} es la función de costo semi-global a minimizar;{D} es la disparidad que se está buscando, de tal forma que se elige la {D} que produzca un menor {E(D)};{C()} es la función de apareo;{p} son los pixeles de la ventana de la imagen de base (generalmente la izquierda);{Dp} son los pixeles de la ventana en la otra imagen (generalmente la derecha);{Np} son los vecinos analizables de {p} (este, sur-este, sur, sur-oeste);{P1} es el parámetro de costo para cuando la disparidad de un vecino es uno; y{P2} es el parámetro de costo para cuando la disparidad de un vecino es mayor a uno.

La función de costo {C} de la Ecuación 4.10 es la métrica de similitud Birchfield-Tomasi [Birchfield 1998], la cual es insensible a las diferencias en sensibilidad de las cámaras, funciona en resolución subpixel y se puede ver en la Ecuación 4.11.

d xi , yi , I L , I R=max {0, I L x i−I max , I min− I L xi}I max=max{I R

− , I R, I R yi }

I min=min {I R− , I R

, I R yi }(4.11)

Donde { d } es la métrica de similitud;{xi} y {yi} son son las coordenadas de los pixeles izquierdo y derecho en comparación;{IL} e {IR} son las imágenes izquierda y derecha respectivamente; y{Imax} e {Imin} son las intensidades máximas y mínimas entre la intensidad de los pixeles derecho, derecho-0.5 y derecho+0.5, tal y como se muestra en la Figura 4.14.

Capítulo 4 Software 70

Roca Roca Roca No hayruido

Page 83: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 4.14: Definiciones para la métrica Birchfield-Tomasi

En la Figura 4.15 se observa una ejecución con el algoritmo SGBM, en la cual son notables las múltiples falsas correspondencias. Este algoritmo es altamente configurable, sin embargo no se encontró una configuración que eliminara el ruido, entre las mejores configuraciones encontradas está la representada en la Figura 4.16, en donde el ruido (falsas correspondencias) en algunas ocasiones desaparece, en otras aparece.

Figura 4.15: SGBM con ventana de 3 pixeles y demás parámetros predeterminados

Figura 4.16: SGBM con ventana=3, P1=6*3*3*3, P2=64*3*3*3, uniquenessRatio=30, speckleWindow=250, speckleRange=32

4.5.3 Algoritmo BTM

Los algoritmos de correspondencia generalmente intentan aparear pares de pixeles, uno de la imagen izquierda con otro de la imagen derecha, sin embargo, debido a las diferencias en perspectiva, es posible que a un pixel de una imagen correspondan varios de la otra. Esta idea

Visión binocular para robot móvil en exteriores simulados 71

Falsas correspondencias

Falsas correspondencias

Falsas correspondencias

RuidoRuidoFalsas

correspondencias

Page 84: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

es analizada e implementada en Openvis3D, en donde se implementa una correspondencia por bloques que utiliza la métrica Birchfield-Tomasi (Ecuación 4.11) y permite correspondencias de uno a varios.

En la Figura 4.17 se muestra el algoritmo BTM con parámetros predeterminados, en donde se observa una gran cantidad de ruido, pero al mismo tiempo un alto nivel de detalle en el mapa de disparidades. Este algoritmo se descartó debido a que el proceso hasta la reconstrucción tomó 5.9 segundos.

Figura 4.17: BTM con parámetros predeterminados

4.5.4 Resumen

Un resumen de los resultados obtenidos se muestra en la Tabla 4.1.

Tabla 4.1: Comparación de algoritmos de correspondencia

Algoritmo Rapidez Falsos positivos Falsos negativos PrecisiónBM 94 ms Desaparecen con un

bloque de 41 pixeles

En obstáculos mucho más pequeños que el robot (por ejemplo: las patas delgadas de las sillas)

Mínima precisión

SGBM 469 ms Son pocos, aparecen y desaparecen, no se pudieron eliminar

En obstáculos mucho más pequeños que el robot (por ejemplo: las patas delgadas de las sillas)

Precisión media

BTM 5922 ms Son muchos, no se intentaron eliminar

No se detectaron Máxima precisión

De las características medidas, la rapidez es sumamente importante, por lo que el algoritmo BTM quedó descartado. En segundo lugar de importancia está el que no tengan falsos negativos ni falsos positivos, pues llevarían a colisiones y a giros innecesarios. Por estas razones se eligió al algoritmo BM.

Capítulo 4 Software 72

Page 85: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

4.6 Odometría

La odometría es el estudio de la posición del robot móvil durante la navegación. Ésta se realiza en dos partes: se estima el movimiento relativo (hacia el frente, lateral y giro) y se actualiza la posición del robot. La primer parte fue estudiada durante la caracterización del robot (Sección 3.4 , página 53), a continuación estudia la segunda parte:

Al inicio al robot móvil se le asignan unas coordenadas iniciales {x,z} y un ángulo inicial {ang}. Después de cada movimiento relativo éstos se actualizan tal y como muestra la Ecuación 4.12 y la Figura 4.18.

x tinc=xtlateral∗coseno ang t−90° frente∗coseno ang t z tinc= ztlateral∗seno ang t−90° frente∗seno ang t

ang tinc=ang tgiro(4.12)

Donde {xt} y {zt} son las coordenadas espaciales del robot en el suelo en el tiempo {t};{angt} es la dirección a la que está apuntando la cámara izquierda del robot;{inc} es el tiempo transcurrido entre la última lectura y la actual; {frente} es el avance hacia el frente del robot, es decir, en dirección de {angt}, durante el tempo {inc};{lateral} es el avance hacia la derecha del robot, es decir, en dirección de {angt – 90°}, durante el tempo {inc}; y{giro} es el ángulo girado por el robot durante el tempo {inc}.

Figura 4.18: Actualización de coordenadas del robot móvil

4.7 Navegación

El algoritmo completo de navegación se implementa como una máquina de estados y puede verse en la Figura 4.19.

Visión binocular para robot móvil en exteriores simulados 73

Page 86: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 4.19: Máquina de estados de Navegador

A continuación una pequeña descripción de los estados:1. BuscaDest: si está en el destino entonces termina. Si está avanzando y hay un

obstáculo entonces frena. Si ninguna de las anteriores se cumple gira hasta apuntar al destino y pasa al estado 2.

2. MirandoDest: si el destino es alcanzable lo alcanza y pasa al estado 1. Si el destino no es alcanzable significa que hay un obstáculo, si está lejos avanza un poco y pasa al estado 1, de lo contrario si está cerca gira para intentar esquivar el obstáculo y pasa al estado 3.

3. Esquiva: si hay un obstáculo cerca significa que el giro anterior giró lo suficiente, así que sigue girando. Si el obstáculo está lejos significa que ya giró lo suficiente, así que avanza hasta esquivar el obstáculo y regresa al estado 1.

Algo importante en el algoritmo de navegación es el umbral antes del cual un obstáculo es considerado cercano. Esto es importante ya que si el obstáculo está muy cerca del robot se sale del ángulo de visión y se produce una colisión. La distancia mínima de seguridad para evitar esto se calculó en 54 cm (Figura 4.20).

Capítulo 4 Software 74

Page 87: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 4.20: Cálculo de la distancia mínima a los obstáculos

Y para evitar que durante los giros el robot se aproxime demasiado a los obstáculos de manera que salgan del ángulo de visión (Figura 4.21), los giros se realizan con el robot móvil retrocediendo.

Un detalle a tener en cuenta es que el algoritmo de correspondencia requiere cámaras sincronizadas, pero como esto no fue posible de lograr con la precisión deseada, se tomaron medidas en el algoritmo de navegación para minimizar el efecto de la falta de sincronización:

• No se procesan imágenes durante los giros, ya que es cuando la falta de sincronía afecta más.

• Cuando el robot está avanzando, si detecta un obstáculo frena. Después de detenerse toma y analiza nuevas imágenes, y si el obstáculo sigue allí entonces lo esquiva, de lo contrario lo considera un error (posiblemente debido a la falta de sincronía o al ruido) y continúa avanzando.

También se implementó una variante más simple de la clase Navegador, cuya única función es avanzar y esquivar obstáculos, sin un objetivo al cual dirigirse (Figura 4.22). Esta última fue la usada en los experimentos en el mundo físico.

Visión binocular para robot móvil en exteriores simulados 75

Figura 4.21: Ejemplo de colisión debida a obstáculos fuera del área de visión

Intentando esquivarobstáculos

colisión

Page 88: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 4.22: Algoritmo para esquivar obstáculos

En el algoritmo de la Figura 4.22 puede observarse que si el robot está girando no procesa los obstáculos, esto es porque debido a la falta de sincronía en las cámaras, cuando el robot gira es cuando la correspondencia es menos confiable. Cuando el robot está avanzando, aunque menos probable, podrían producirse falsas correspondencias por vibraciones, es por eso que el robot se detiene, y no es sino hasta que el robot se ha detenido cuando se toman decisiones sobre la ruta a seguir, pues es cuando se tiene una mayor confiabilidad en las imágenes estéreo.

Capítulo 4 Software 76

No

Procesa par estéreo y odometría

Detenerse

¿está girandoo avanzando o

detenido?

Si

Seguir avanzandoHasta completar

la distancia deseada

¿hay unobstáculo

cerca?

GirandoAvanzando

Detenido

Seguir girando hasta completar

el ángulo deseado Avanzar unadistancia

recomendable

¿hay unobstáculo

cerca?

Girar un Ángulo

recomendable en la misma dirección del

último giro

SiNo

Page 89: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Capítulo 5 Experimentación y resultados

Para la validación se realizaron pruebas independientes de varios módulos del sistema, y al final se probó el sistema completo en un ambiente de exteriores simulados. En este capítulo se presentan las principales pruebas realizadas.

5.1 Calibración

Para la calibración se utilizó el algoritmo de Zhang [Zhang 2000] que ya viene implementado en OpenCV. Se realizó con 14 imágenes estéreo de 240x320 (240 filas y 320 columnas de pixeles), tomadas de un patrón tipo “tablero de ajedrez” de 7x8 cuadros (Figura 4.3), y los resultados fueron las siguientes matrices intrínsecas:

K izq=[267.7 0 162.10 267.7 105.10 0 1 ] , K der=[267.7 0 158.5

0 267.7 112.90 0 1 ] (5.1)

Es importante considerar la coordenada del eje {yu} del tipo de imagen usado se incrementa hacia abajo mientras que el signo del eje {yw} del espacio 3D se incrementa hacia arriba. Esto debería reflejarse en la Ecuación 5.1 en que el signo de {k22}, que debería ser negativo, sin embargo el algoritmo de calibración en OpenCV lo entrega positivo. Las matrices debieron ser como se muestra en la Ecuación 5.2.

K izq=[267.7 0 162.10 −267.7 105.10 0 1 ] , K der=[267.7 0 158.5

0 −267.7 112.90 0 1 ] (5.2)

Una validación de estas matrices es que si la cámara está en el origen y se proyecta un punto justo al frente de la cámara (Ecuación 5.3), éste quede aproximadamente en el centro de la imagen.

s u=K [ I 0]w (5.3)

La Ecuación 5.3 aplicada a las matrices intrínsecas encontradas (Ecuación 5.2) proporcionan puntos en las coordenadas {uizq=[162 105 1]T} para la cámara izquierda y {uder=[158 112 1]T} para la cámara derecha, que son bastante cerca del ideal {[160 120 1]T}, por lo que las matrices se aceptan.

Visión binocular para robot móvil en exteriores simulados 77

Page 90: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

La calibración estéreo de OpenCV proporciona la rotación y traslación entre las cámaras, que en este caso fueron:

R=[ .998 .018 .006−.018 .999 −.0005−.006 −.0006 .999 ] , t=[−11.8

.152

.181 ] (5.4)

Si las cámaras fueran realmente paralelas la rotación sería de cero grados en los tres ejes, lo que correspondería a una matriz de rotación igual a la matriz identidad ({ R= I }), y la traslación correspondería a la separación entre las cámaras, la cual se midió en aproximadamente 11.7 cm. Los valores obtenidos (Ecuación 5.4) se acercan bastante a este ideal, por lo que se aceptan.

5.2 Rectificación

Para la rectificación se utilizó el algoritmo de Bouguet [Bouguet 2010] implementado en OpenCV (“cv::stereoRectify”), el cual calcula las matrices de rectificación y las matrices de cámara en el espacio rectificado. Para la validación se trazaron líneas horizontales con la misma coordenada {y} en ambas imágenes, y se verificó visualmente que éstas fueran líneas epipolares, es decir, que contuvieran a sus respectivos puntos correspondientes. Este experimento se puede ver en la Figura 5.1, en donde se presentan las imagenes izquierda y derecha antes y después de la rectificación. En esa figura los círculos muestran los homógrafos cero, es decir, los puntos que si fueran correspondientes su disparidad sería cero. También se observa que los correpondientes están en la línea epipolar, la cual en las imagenes rectificadas es simplemente una línea horizontal.

Figura 5.1: Prueba de la rectificación

5.3 Triangulación

La triangulación se realizó en el espacio rectificado, por lo que es posible utilizar la matriz de

Capítulo 5 Experimentación y resultados 78

Page 91: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

desproyección {Q}. La función “cv::stereoRectify” entregó la siguiente matriz de desproyección:

Q=[1 0 0 −164.80 1 0 −108.50 0 0 267.80 0 −.0847 0 ] (5.5)

Para conseguir que los ejes de la imagen ({xu} y {yu}) correspondan con los ejes del espacio ({xw} y {yw}) y el eje {zw} se incremente al alejarse del robot, tal y como se representa en la Figura 4.8, y tomando en cuenta que la coordenada de imagen {yu} se incrementa hacia abajo mientras que la coordenada del espacio {yw} se incrementa hacia arriba, se utilizó la siguiente matriz de desproyección:

Q=[1 0 0 −164.80 −1 0 108.50 0 0 267.80 0 .0847 0 ] (5.6)

Para validar la triangulación se realizaron dos experimentos. En el primero se construyó un triángulo en las imágenes izquierda y derecha, se utilizó el algoritmo de triangulación, y se verificó que efectivamente se reconstruyera un triángulo. En este experimento se verificó que las relaciones se mantuvieran, es decir, que si en las imágenes el punto {u1} está a la izquierda de {u2}, al reconstruirlos {w1} esté a la izquierda de {w2}. Los resultados de este experimento pueden verse en la Tabla 5.1.

Tabla 5.1: Reconstrucción de un triángulo virtual

Coordenadas con disparidad {(xu,yu,d)}

(160, 80, 10), (106, 120, 20), (213, 120, 20)

Coordenadas reconstruidas {(xw,yw,zw)}

(-5.8, 33.6, 315.9), (-34.8, -6.8, 157.9), (28.4, -6.8, 157.9)

Validaciones El primer punto está arriba del segundo, se esperaba.El segundo punto esta a la izquierda del tercero, se esperaba.El primer punto esta más lejos que el segundo, se esperaba.

En el segundo experimento se armó un triángulo con tres objetos de color distintivo, uno en cada esquina (Figura 4.7). Para cada esquina en cada imagen se segmentó el objeto por color, se calculó su centroide, y se trianguló, de forma que se obtuvieron las coordenadas de la esquinas del triángulo 3D. Luego se compararon las distancias entre las esquinas del triángulo real con las del triángulo reconstruido, resultando en los valores mostrados en la Tabla 5.2.

Visión binocular para robot móvil en exteriores simulados 79

Page 92: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Tabla 5.2: Reconstrucción de un triángulo real

Distancia real Distancia reconstruida

23.5 cm 22.1 cm22.5 cm 21.9 cm23 cm 22 cm

Como los valores son suficientemente precisos para las necesidades de un robot móvil, la reconstrucción se acepta, y se anota que la reconstrucción tiene un margen de error mayor a 1.4 cm.

5.4 Simulaciones

En la navegación real los obstáculos se obtienen de la reconstrucción, mientras que en la simulación los obstáculos simulados son proyectados directamente en el vector distCentroOptico, por lo demás el proceso es prácticamente el mismo. Esto permite analizar el funcionamiento del algoritmo de navegación rápidamente con una álta confiabilidad de que si la simulación funciona la ejecución real también funcionará.

Se probó el algoritmo de navegación en modo simulación con varias configuraciones de obstáculos. Se observó que es fácil hacer que el algoritmo falle debido a que éste olvida la posición de los objetos una vez que salen de su ángulo de visión. La Figura 5.2 y la Figura 5.3 tienen ejemplos de éxito del algoritmo de navegación, la Figura 5.4 tiene un ejemplo de fracaso.

Figura 5.2: Esquivar por la izquierda y por la derecha

En las figuras de las simulaciones la cámara izquierda se representa por un pequeño círculo, el ancho del robot por una línea larga, la dirección a la que mira la cámara por una pequeña línea, el punto inicial por un círculo grande, el destino por una “X” grande, y los obstáculos puntuales por una cruz pequeña.

Capítulo 5 Experimentación y resultados 80

Page 93: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 5.3: Pasar entre dos y entre tres obstáculos

Figura 5.4: Ejemplo de falla en el algoritmo de navegación

La colisión ilustrada en la Figura 5.4 fue debida a que cuando el robot giró hacia su objetivo después de esquivar al segundo obstáculo, quedó demasiado cerca del tercer obstáculo (de izquierda a derecha), es decir, menos de los 54 cm calculados en la Figura 4.20, por lo que el obstáculo quedó fuera del ángulo de visión del robot.

5.5 Pruebas en el ambiente de exteriores simulados

Se realizaron 16 experimentos para esquivar obstáculos en el mundo real. Los obstáculos (Figura 5.5) fueron: 2 rocas diferentes, 2 plantas diferentes, 2 sillas diferentes, una mesa y 2 paredes diferentes. Se realizaron 2 experimentos para cada obstáculo, uno a 45 cm de distancia y otro a 100 cm, excepto para las paredes, en las que sólo se realizó un experimento a 100 cm de cada pared.

Visión binocular para robot móvil en exteriores simulados 81

Colisión

Page 94: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 5.5: Obstáculos usados en los experimentos

En la Figura 5.6 se observa el par estéreo que observó el robot en el primer y segundo experimentos, donde el obstáculo fue una mesa colocada a 45 cm y a 100 cm. En ambos casos las condiciones de iluminación fueron buenas, no hubieron falsos negativos ni falsos positivos, y el robot esquivó exitosamente a la mesa por la izquierda. En el segundo experimento se observó cómo el robot se acercó hasta estar a aproximadamente a 54 cm de la mesa antes de girar.

a) Izquierda b) Derecha Figura 5.6: Vista estéreo del obstáculo mesa

En la Figura 5.7 se observa el par estéreo del tercer experimento, donde el obstáculo fue denominado “pared 1”, aunque en realidad fueron varias cajas apiladas. En ese experimento las condiciones de iluminación fueron cambiantes debidas la luz del sol y sombras de nubes, por lo cual se produjeron algunos falsos positivos, a pesar de los cuales la pared fue esquivada por la izquierda.

Capítulo 5 Experimentación y resultados 82

Pared que el robot no esquivó

Pared que el robot esquivó

Page 95: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

a) Izquierda b) Derecha Figura 5.7: Vista estéreo del obstáculo pared 1

En la Figura 5.8 se observa el par estéreo del cuarto experimento, en el cual la pared tenía baja textura. Se observó que el robot no reconoció el obstáculo desde su posición inicial a 100 cm de distancia, por lo que avanzó a toda velocidad, sin embargo a aproximadamente 40 cm la correspondencia funcionó y el robot detectó la pared, por lo que el robot frenó. El proceso de frenado no es inmediato debido a la inercia, por lo que el robot avanzó unos centimetros más quedando a aproximadamente 25 cm de la pared, desde donde el algoritmo de correspondencia volvió a fallar haciendo a la pared invisible para el robot, lo que causó que el robot volviera a avanzar y colisionara con la pared. Esto llevó a la conclusión de que a pesar de la baja textura la pared puede reconocerse como obstáculo, sin embargo en algunas condiciones las caracteristicas de las cámaras (resolución y enfoque) y del algoritmo particular de correspondencia se combinan y causan que la correspondencia falle.

a) Izquierda b) Derecha Figura 5.8: Vista estéreo del obstáculo pared 2

En la Figura 5.9 se observan los pares estéreo del quinto al octavo experimentos. El primer par corresponde a una planta relativamente delgada, mientras que el segundo a una planta más frondosa. Para cada par se realizó un experimento a 45 cm y otro a 100 cm, en todos los casos la planta fue esquivada exitosamente, a pesar de los reflejos y sombras. Se concluye que la alta textura de las plantas es ideal para el algoritmo de correspondencia por bloques usado.

Visión binocular para robot móvil en exteriores simulados 83

Page 96: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

a) Izquierda 1 b) Derecha 1 c) Izquierda 2 d) Derecha 2

Figura 5.9: Vista estéreo del obstáculo planta

En la Figura 5.10 se observan los pares estéreo de experimentos 9 a 12. El primer par corresponde a una roca relativamente alta, mientras que el segundo a una roca más ancha. Para cada par se realizó un experimento a 45 cm y otro a 100 cm, en todos los casos la roca fue esquivada exitosamente, a pesar de los reflejos y sombras. Se concluye que la alta textura de las rocas es ideal para el algoritmo de correspondencia usado.

a) Izquierda 1 b) Derecha 1 c) Izquierda 2 d) Derecha 2

Figura 5.10: Vista estéreo del obstáculo roca

En la Figura 5.11 se observan los pares estéreo de los experimentos 13 a 16. El primer par corresponde a una silla de cuatro patas delgadas, mientras que el segundo a una de una pata ancha con ruedas. Para cada par se realizó un experimento a 45 cm y otro a 100 cm. Para el primer par el robot se perfiló para apuntar al espacio entre las patas y pasó exitosamente entre ellas (Figura 5.12), en el primer caso (experimento 13) pasó limpiamente, en el segundo (experimento 14) un cable del robot rozó con la pata trasera de la silla más a la izquierda del robot. La segunda silla fue esquivada sin problemas en ambos casos.

a) Izquierda 1 b) Derecha 1 c) Izquierda 2 d) Derecha 2

Figura 5.11: Vista estéreo del obstáculo silla

Capítulo 5 Experimentación y resultados 84

Pata con la que elrobot rozó

Pata con la que elrobot rozó

Page 97: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Figura 5.12: Experimento en el cual el robot pasa entre las patas de una silla

Se atribuye la falla en el experimento 14 a defectos físicos en el robot y a limitaciones en el algoritmo de correspondencia. El defecto físico del robot se refiere a que sus trayectorias rectas no son totalmente rectas, sino que da curva ligeramente hacia la izquierda. El problema con el algoritmo de correspondencia es que fue calibrado para descartar obstáculos muy pequeños, ya que se consideran falsas correspondencias, y en este caso las patas traseras de las sillas son muy delgadas (tienen menos de 10 pixeles de ancho), por lo que pudieron descartarse.

De los 16 experimentos dos fallaron, uno por colisión y otro por roce, por lo que el factor de éxito fue del 88%. También se midió el tiempo promedio de respuesta del software, el cual fue de 130 ms, esto sin contar el tiempo físico de respuesta del robot debido a la inercia, el cual se estimó en un segundo.

Visión binocular para robot móvil en exteriores simulados 85

Robot girando

Page 98: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Capítulo 6 Conclusiones y trabajo futuro

En este capítulo se presentan las conclusiones finales, así como las aportaciones y trabajos futuros.

6.1 Conclusiones finales

El presente trabajo demostró la viabilidad de usar a la visión estéreo para la detección de obstáculos en ambientes de exteriores simulados. Otros trabajos se centran en la navegación en exteriores estructurados (por ejemplo carreteras) [DeCubber 2009], en el campo abierto [Konolige 2006], y en interiores [Murray 2005].

Para esto se analizó, diseñó e implementó un sistema de visión estéreo para un robot móvil, el cual consistió en el robot móvil, el software de visión y el módulo de navegación.

El robot móvil se construyó usando piezas de un juguete y acrílico. La interfaz por USB con la computadora se realizó usando un microcontrolador.

El sistema de visión se diseñó usando tecnología orientada a objetos, lo que permite utilizar y extender sus clases con relativa facilidad. En el Capítulo 4 se mostraron la organización y funcionamiento de dichas clases.

Se utilizaron dos cámaras montadas en el robot móvil para obtener las imágenes estéreo. A las cámaras se les aplicó un proceso de calibración para obtener sus parámetros intrínsecos y extrínsecos. Con esos parámetros se realizó un proceso de rectificación y se obtuvieron los parámetros intrínsecos y extrínsecos en el espacio rectificado. En su funcionamiento, mediante un algoritmo de correspondencia por bloques se obtiene un mapa de disparidades, del cual, mediante triangulación, se obtiene una nube de puntos 3D, de esta nube se identifican los posibles obstáculos para cada ángulo y se almacenan en un vector de profundidades. El algoritmo de navegación usa su estado interno y el vector de profundidades mencionado para decidir la ruta a seguir.

Los experimentos en el ambiente de exteriores simulados demostraron que el sistema de visión permitió a un robot de poca precisión navegar en tiempo real y de forma segura en un ambiente de exteriores simulados. De esto es posible concluir que el sistema de visión también funcionaría bien en un ambiente de exteriores no-estructurado y desconocido, siempre y cuando los obstáculos tuvieran suficiente textura y fueran suficientemente grandes.

El robot móvil es un modelo muy simple, fácil de utilizar, fácil de construir y con muchas

Capítulo 6 Conclusiones y trabajo futuro 86

Page 99: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

posibilidades de mejora. De la misma forma, todas las librerías utilizadas son de libre distribución y asequibles vía Internet, y las rutinas desarrolladas son simples y extensibles.

6.2 Aportaciones

En el presente trabajo se desarrolló, implementó y utilizó exitosamente el concepto de dilatación proporcional para esquivar obstáculos.

Entre las aportaciones teóricas está el desarrollo de algunos métodos matemáticos alternos basados en la matriz otraproyectiva, en particular la variante en el cálculo de la matriz fundamental (Ecuación 2.58) y la triangulación lineal alterna.

Como producto de ingeniería se obtuvo un sistema de visión, desde el robot móvil hasta la navegación, lo cual proporciona una plataforma funcional completa, basada en computadora personal y en programación orientada a objetos. Dicha plataforma puede utilizarse en proyectos futuros y para probar nuevos algoritmos.

Otras aportaciones son:• La recopilación y comparativa de algunos algoritmos de correspondencia.• El método para realizar la proyección paralela sobre el plano del suelo y así generar los

mapas tipo “vista de pájaro”.• El método para detectar obstáculos y registrarlos en un vector de profundidades con las

posibles direcciones a seguir.• Una colección de videos e imágenes estéreo desde la perspectiva del robot, los cuales

pueden usarse para probar algoritmos de correspondencia y odometría visual. También se obtuvieron videos desde la perspectiva de un observador externo.

• Una explicación detallada de la teoría de cada uno de los algoritmos de procesamiento de imágenes, en particular de visión estéreo. Estas explicaciones pueden servir para el estudio del tema de visión robótica en un curso.

6.3 Trabajo futuro

Por limitaciones técnicas y de tiempo el diseño actual tiene algunos defectos, los cuales pudieran corregirse en trabajos futuros. Los defectos detectados son:

• La interfaz de usuario es muy limitada. Actualmente la interfaz de usuario es mediante una línea de comandos, y si se desean operaciones complejas que no estén listadas es necesario modificar el código. Es deseable una interfaz gráfica que permita iniciar o detener diferentes funcionalidades de forma más amigable.

• El microcontrolador en la tarjeta de interfaz realiza muy poco trabajo. En especial es deseable migrar rutinas de la clase “ControlCarro” al microcontrolador, como ejemplos: la rutina que detiene al robot cuando ha transcurrido el tiempo deseado, y las

Visión binocular para robot móvil en exteriores simulados 87

Page 100: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

rutinas de odometría.• Las cámaras tienen buena calidad, pero no forman un "par estéreo", porque no fue

posible sincronizarlas. Mientras el robot se mueve, la diferencia en tiempo de la captura de las imágenes izquierda y derecha produce una diferencia en disparidad y un error en la triangulación y reconstrucción a partir del par de imágenes. A pesar de esto, la detección de obstáculos funcionó, aunque a veces tardíamente.

También es posible realizar varias investigaciones que den continuidad al presente trabajo, algunas de las cuales se listan a continuación:

• Utilizar un “par estéreo” comercial o un circuito que sincronice las cámaras, y modificar el algoritmo de navegación de manera que el robot ya no tenga que detenerse para tomar imágenes confiables.

• Implementar una odometría visual. Los experimentos demostraron una alta variabilidad en la velocidad del robot al cambiar las condiciones del suelo o la carga de las baterías. Es recomendable una retroalimentación para tener una odometría más precisa, por ejemplo con odometría visual.

• Implementar y evaluar más algoritmos de correspondencia. En el presente trabajo sólo se analizaron algoritmos de correspondencia por bloques, es deseable analizar la funcionalidad de algoritmos de características y de regiones.

• Utilizar el robot en un ambiente de exteriores, por ejemplo para patrullar un invernadero.

• Implementar un módulo de navegación que realice SLAM.

Capítulo 6 Conclusiones y trabajo futuro 88

Page 101: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Referencias

[AN956 2004] Rawin Rojvanit; "Migrating Applications to USB from RS-232 UART with Minimal Impact on PC Software"; Documento técnico de Microchip Technology Inc.; 2004.

[Arkin 1998] R. C. Arkin; "Behavior-Based Robotics"; Intelligent Robotics and Autonomous Agents; The MIT Press; 1998.

[Barnard 1982] Barnard, Stephen T.; Fischler, Martin A.; "Computational Stereo"; Technical Note 261. AI Center, SRI International, 333 Ravenswood Ave., Menlo Park, CA 94025, Mar 1982.

[Beelen 2010] Teunis van Beelen; "RS-232 for Linux and WIN32"; http://www.teuniz.net/RS-232/index.html; consultado en 2010.

[Bertozzi 2000] M. Bertozzi; A. Broggi; A. Fascicoli; "Vision-based intelligent vehicles: State of art and perspectives"; Robotics and Autonomous Systems, vol. 32, pp. 1-16; 2000.

[Birchfield 1998] S. Birchfield; C. Tomasi; "A pixel dissimilarity measure that is insensitive to image sampling"; IEEE Trans. Pattern Analysis and Machine Intelligence, vol. 20, no. 4, pp. 401–406, 1998.

[Bouguet 2010] Jean-Yves Bouguet; "Camera Calibration Toolbox for Matlab"; http://www.vision.caltech.edu/bouguetj/calib_doc/, última consulta: Abril 2010.

[Bradski 2008] Gary Bradski; Adrian Kaehler; "Learning OpenCV"; O’Reilly; ISBN: 978-0-596-51613-0; 2008.

[Brown 2003] Myron Z. Brown; Darius Burschka; Gregory D. Hager; "Advances in Computational Stereo"; IEEE Transactions on pattern analysis and machine intelligence,Vol. 25, No. 8, August 2003. Pp 993-1008.

[Bruce 2003] James Bruce; Manuela Veloso; "Real-Time Randomized Path Planning for robot Navigation"; Lecture Notes in Computer Science, 2003, Volume 2752/2003, 288-295, DOI: 10.1007/978-3-540-45135-8_23.

[Buffa 1992] Michel Buffa; Olivier D. Faugeras; Zhengyou Zhang; "A Complete Navigation System for a Mobile Robot, Using Real-time Stereovision and the Delaunay Triangulation"; MV. '92 IAPR Workshop on Machine Vision Applications; Dec. 7-9, 1992, Tokyo; pp. 191-194.

[Burgard 1999] Wolfram Burgard; Armin Cremers; Dieter Fox; Dirk Hahnel; Gerhard Lakemeyer; Dirk Schulz; Walter Steiner; Sebastian Thrun; "Experiences with an interactive museum tour-guide robot"; Artificial Intelligence, Volume 114, Issues 1-2, pp 3-55; 1999.

[Coughlan 2006] James Coughlan; Roberto Manduchi; Huiying Shen; "Computer vision based

Visión binocular para robot móvil en exteriores simulados 89

Page 102: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

terrain sensors for blind wheelchair users"; Proceedings of 10th International Conference on Computers Helping People with Special Needs (ICCHP ’06), 12-14 July 2006, Linz, Austria.

[DeCubber 2009] Geert De Cubber; Daniela Doroftei; Lazaros Nalpantidis; Georgios Ch. Sirakoulis; Antonios Gasteratos; "Stereo-based Terrain Traversability Analysis for Robot Navigation"; University Campus, Kimmeria, 671 00 Xanthi, Greece; 2009.

[DeSouza 2002] G. N. DeSouza; A. C. Kak; "Vision for Mobile Robot Navigation: A Survey"; IEEE Transactions on Pattern Analysis and Machine Intelligence, vol 24, No. 2, pp. 237-267; 2002.

[DS51297F 2005] Microchip; "MPLAB® C18 C COMPILER LIBRARIES"; Microchip Technology Inc., 2005.

[DS51679A 2007] Microchip; "MCHPFSUSB Firmware User�s Guide"; Documento técnico de Microchip Technology Inc.; 2007.

[Dudek 2006] Gregory Dudek; Philippe Giguere; Junaed Sattar; "Sensor Based Behavior Control for an Autonomous Underwater Vehicle"; In Proceedings of the International Symposium on Experimental Robotics (ISER), Rio de Janeiro, Brazil, July, 2006; pp 312-317.

[Dudek 2007] Gregory Dudek; Philippe Giguere; Chris Prahacs; Shane Saunderson; Junaed Sattar; Luz-Abril Torres-Mendez; McGill University; Michael Jenkin; Andrew German; Andrew Hogue; Arlene Ripsman; Jim Zacher; York University; Evangelos Milios; Hui Liu; Pifu Zhang; Dalhousie University; Martin Buehler; Boston Dynamics; Christina Georgiades; MathWorks; "Aqua: An Amphibious Autonomous Robot"; IEEE Computer Magazine, Volume 40, Number 1, January 2007.

[Foggia 2007] Pasquale Foggia; Jean-Michel Jolion; Alessandro Limongiello; Mario Vento; "A New Approach for Stereo Matching in Autonomous Mobile Robot Applications"; IJCAI 2007; 2103-2108.

[Fuentes 2009] Jorge Fuentes; "Seguimiento y asimiento de un objeto en movimiento por medio de un robot manipulador y visión estéreo"; CENIDET, tesis de maestría; 2009.

[Goldberg 2002] Steven Goldberg; Mark Maimone; Larry Matthies; "Stereo Vision and Rover Navigation Software for Planetary Exploration"; IEEE Aerospace Conference Proceedings; March 2002.

[Golub 1996] Gene H. Golub; Charles F. Van Loan; "Matrix Computations"; The Johns Hopkins University Press; Third Edition; ISBN 0-8018-5414-8; 1996.

[Gómez 2008] Ángel Gómez; Daniel Zamorano; "Visión estereoscópica y estimación de pose para el posicionamiento de un brazo robótico"; CENIDET, tesis de maestría; 2008.

[Gutmann 2008] Jens-Steffen Gutmann; Masaki Fukuchi; Masahiro Fujita; "3D Perception and Environment Map Generation for Humanoid Robot Navigation"; The International Journal of Robotics Research October 2008, vol. 27, no. 10, pp. 1117-1134,

Referencias 90

Page 103: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

http://ijr.sagepub.com/cgi/content/abstract/27/10/1117.[Harris 1998] Harris, C.G.; Stephens, M.; "A combined corner and edge detector"; In: Alvey

Vision Conference. (1998).[Hartley 1994] R.I. Hartley; "Self-calibration from multiple views with a rotating camera";

Proc. 1994 IEEE Int. Conf. Computer Vision and Pattern Recognition, May 1994, pp. 471-478.

[Hartley 1997] Richard Hartley; "In defense of the eight-point algorithm"; PAMI, pp. 580 -- 593, 1997.

[Hartley 1999] Richard I. Hartley; "Theory and practice of projective rectification"; International Journal of Computer Vision, Vol. 35, No. 2. (1 November 1999), pp. 115-127.

[Hartley 2003] Richard Hartley; Andrew Zisserman; "Multiple View Geometry in Computer Vision"; Cambridge University Press 2000, 2003; ISBN 0521 54051 8 hardback; 2003.

[Heikkila 1997] Janne Heikkilä; Olli Silvén; "A Four-step Camera Calibration Procedure with Implicit Image Correction"; Proceedings of Computer Vision and Pattern Recognition, 1997, San Juan, pp. 1106-1112.

[Hernández 2005] Hernández, R.; Jiménez, L.M.; Reinoso, O.; Puerto, R.; Payá, L.; "Estudio e Implementación de Técnicas de Control Reactivo de Robots Móviles utilizando Sensores de Rango (Sonar e Infrarrojos)"; XXVI Jornadas de automática(Alicante 2005); ISBN: 84-689-0730-8; pp 681 - 685.

[Hillman 2005] Peter Hillman; "White Paper: Camera Calibration and Stereo Vision"; http://www.peterhillman.org.uk/downloads/whitepapers/; consultado 2009-11-12.

[Hirschmuller 2008] H. Hirschmuller; "Stereo processing by semiglobal matching and mutual information"; PAMI, 30(2):328–341, February 2008.

[Ivanchenko 2008] Volodymyr Ivanchenko; James Coughlan; William Gerrey; Huiying Shen; "Computer vision-based clear path guidance for blind wheelchair users"; Proceedings of 10th International ACM SIGACCESS Conference on Computers and Accessibility (ASSETS 2008), 12-15 October 2008, Nova Scotia, Canada.

[Jasiobedzki 2007] Piotr Jasiobedzki; Robert Corcoran; Michael Jenkin; Roy Jakola; "From Space Robotics to Deep Sea Mining"; Marine Minerals of the Pacific: Science, Economics and the Environment UMI2007; 2007.

[Jimenez 1995] Luis M. Jiménez; Rafael Aracil; L. F. Peñín; M. Ferre; F. Torres; "Modeladode entornos 3D para planificación de trayectorias de robots mediante visiónestereoscópica y control activo de parámetros ópticos"; XVI Jornadas de Automática, Donostia-San Sebastián 27, 28 y 29 de septiembre 1995.

[Kanatani 2008] K. Kanatani; Y. Sugaya; H. Niitsuma; "Triangulation from two viewsrevisited: Hartley-Sturm vs. optimal correction Export"; In 19th British Machine VisionConference (September 2008), pp. 173-182.

Visión binocular para robot móvil en exteriores simulados 91

Page 104: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

[Konolige 1997] Kurt Konolige; "Small Vision Systems: Hardware and Implementation"; Eighth International Symposium on Robotics Research; 1997.

[Konolige 2006] Kurt Konolige; Motilal Agrawal; Robert C. Bolles; Cregg Cowan; Martin Fischler; Brian Gerkey; "Outdoor Mapping and Navigation using Stereo Vision"; Artificial Intelligence Center, SRI International, Menlo Park, CA 94025. In proc. of Intl. Symp. on Experimental Robotics (ISER). Rio de Janeiro, Brazil; Julio 2006.

[Kosov 2009] S. Kosov; T. Thormahlen; H.-P. Seidel; "Accurate Real-Time Disparity Estimation with Variational Methods"; 5th International Symposium on Visual Computing (ISVC 2009) (accepted); Vegas, USA, November 2009.

[Labayrade 2002] R. Labayrade; D. Aubert; J. P. Tarel; "Real Time Obstacle Detection on Non Flat Road Geometry through V-Disparity Representation"; IEEE Intelligent Vehicles Symposium, Versailles, June 2002.

[Lara 2007] Bruno Lara; Juan M. Rendon; Marcos A. Capistran; "Prediction of Multi-modal Sensory Situatuions, a Forward Model Approach"; Facultad de ciencias UAEM, Cuernavaca, México; CIMAT, Guanajuato, México; 2007.

[LaValle 2010] S. M. LaValle; "Rapidly-exploring Random Trees (RRTs)"; http://msl.cs.uiuc.edu/rrt/, última visita: 09/2010.

[Lesnet 2008] Ian Lesnet; "Make a USB color changing light"; http://www.diylife.com/2008/01/25/make-a-usb-color-changing-light/ , 2008. Última consulta Abril de 2010.

[Li 2004] Liangfu Li; Zuren Feng; Yuanjing Feng; "Accurate Calibration of Stereo Camerasfor Machine Vision"; Journal of Computer Science & Technology Vol. 4 No. 3 October 2004.

[Limongiello 2006] Alessandro Limongiello; "Real-time Video Analysis from a Mobile Platform: Moving Object and Obstacle Detection"; Universita Degli Studi Di Salerno, tesis de doctorado; 2006.

[López 2005] José M. López-Valles, Antonio Fernández-Caballero, Miguel A. Fernández; "Conceptos y Técnicas de Estereovisión por Computador"; Inteligencia Artificial, Revista Iberoamericana de Inteligencia Artificial, Vol. 9, No. 27, 2005, pg 35-62. ISSN: 1137-3601. AEPIA (http://www.aepia.org); 2005.

[Maimone 2007] Mark W. Maimone; P. Chris Leger; Jeffrey J. Biesiadecki; "Overview of the Mars Exploration Rovers' Autonomous Mobility and Vision Capabilities"; ICRA '07 Space Robotics Workshop; 2007.

[Mischler 2007] Antoine Mischler; "3D Reconstruction from Depth and StereoImages for Augmented Reality Applications"; Dept. of Computer Engineering and Microelectronics; Technische Universitat Berlin; Thesis; 2007.

[Moyano 2009] Jonathan E. Moyano; "PIC18F250 y USB Desarrollo de aplicaciones"; http://www.ucontrol.com.ar/forosmf/programacion-en-visual-basic/manual-usb-y-pic18f2550-desarrollo-de-aplicaciones; 2009.

Referencias 92

Page 105: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

[Mozos 2007] Mozos, Óscar Martínez; Gil, Arturo; Ballesta, Monica; Reinoso, Oscar; "Interest Point Detectors for Visual SLAM"; Current Topics in Artificial Intelligence: 12th Conference of the Spanish Association for Artificial Intelligence, CAEPIA 2007, Salamanca, Spain, November 12-16, 2007; Selected Papers book contents; Pages: 170 - 179.

[Murray 2005] Don Murray; Jim Little; "Using real-time stereo vision for mobile robot navigation"; Computer Science Dept. University of British Columbia, Vancouver, BC, Canada, V6T 1Z4; 2005.

[Nalpantidis 2007] L. Nalpantidis; G. Ch. Sirakoulis; A. Gasteratos; "Review of Stereo Matching Algorithms for 3D vision"; 16th International Symposium on Measurement and Control in Robotics (ISMCR 2007), Warsaw, Poland, 21-23 June 2007.

[Nordberg 2008] Klas Nordberg; "Efficient Triangulation Based on 3D Euclidean Optimization"; In: Pattern Recognition, 2008. ICPR 2008. 19th International Conference on; pp 1-4; ISSN: 1051-4651; ISBN: 978-1-4244-2174-9; Publication Date: 8-11 Dec. 2008.

[Ogale 2005] Abhijit Ogale, Y. Aloimonos; "Shape and the stereo correspondence problem"; International Journal of Computer Vision; Vol. 65; No. 3; pp. 147-162; Dec 2005.

[Ogale 2006] Abhijit Ogale, Justin Domke; " OpenVis3D, librería para corresponencia estéreo densa de código abierto en C++"; , http://code.google.com/p/openvis3d/; consultado en julio 2010.

[OpenCV 2010] ; "OpenCV Reference Manual"; http://opencv.willowgarage.com; 2010.[Oram 2001] Daniel Oram; "Rectification for Any Epipolar Geometry"; Proceedings of the

British Machine Vision Conference 2001, BMVC 2001, Manchester, UK, 10-13 September 2001.

[Rojvanit 2004] Rawin Rojvanit; "Emulating RS-232 over USB with PIC18F4550"; Microchip Technology Inc., WebSeminar, 2004.

[Rovira-Más 2007] F. Rovira-Más; S. Han; J. Wei; J. F. Reid; "Autonomous Guidance of a Corn Harvester using Stereo Vision"; Agricultural Engineering International: the CIGR Ejournal. Manuscript ATOE 07 013, Vol IX; July, 2007.

[Scharstein 2002] Daniel Scharstein; Richard Szeliski; "A taxonomy and evaluation of dense two-frame stereo correspondence algorithms"; International Journal of Computer Vision, 47(1/2/3):7-42, April-June 2002. Microsoft Research Technical Report MSR-TR-2001-81, November 2001; http://vision.middlebury.edu/stereo; última consulta Septiembre 2010.

[Szeliski 2002] Richard Szeliski; Daniel Scharstein; "Symmetric Sub-Pixel Stereo Matching"; In Seventh European Conference on Computer Vision (ECCV 2002), volume 2, pages 525–540, Copenhagen, Denmark, May 2002.

[Teixeira 2008] Lucas Teixeira; Waldemar Celes; Marcelo Gattass; "Accelerated Corner-Detector Algorithms"; Proceedings of British Machine Vision Conference (BMVC), Leeds,

Visión binocular para robot móvil en exteriores simulados 93

Page 106: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

September, 2008.[Tola 2010] Engin Tola; Vincent Lepetit; Pascal Fua; "DAISY: An Efficient Dense Descriptor

Applied to Wide-Baseline Stereo"; IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE, VOL. 32, NO. 5, pp. 815-830, MAY 2010.

[Torres 1998] Miguel A. Torres T.; "Reconstrucción confiable de superficies usando rango de disparidad adaptativo"; Pontificia Universidad Católica de Chile; Tesis de maestría; 1998.

[Tsai 1987] Roger Y. Tsai; "A versatile Camera Calibration Technique for High-Accuracy 3D Machine Vision Metrology Using Off-the-shell TV Cameras and Lenses"; IEEE Journal of Robotics and Automation, Vol RA-3, No. 4, August 1987. pp. 323-344.

[Watson 1995] Theodore Watson; "videoInput - a free windows video capture library"; http://muonics.net/school/spring05/videoInput/, ultima consulta en 2010.

[Yang 2009] Qingxiong Yang; Liang Wang; Ruigang Yang; Henrik Stewénius; David Nistér; "Stereo Matching with Color-Weighted Correlation, Hierarchical Belief Propagationand Occlusion Handling"; IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI) VOL. 31, NO. 3, MARCH 2009.

[Zhang 2000] Zhengyou Zhang; "A Flexible New Technique for Camera Calibration"; IEEE Transactions on Pattern Analysis and Machine Intelligence, VOL. 22, NO. 11, pages 1330-1334, NOVEMBER 2000.

Referencias 94

Page 107: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Anexo A: Librerías y herramientas

En esta sección se presentan los detalles técnicos de las librerías y herramientas software utilizadas en el desarrollo de este proyecto.

MinGW y MSYS

Son proyectos de software libre que permiten la utilización de librerías y herramientas GNU (cada una con su propia licencia) en un entorno Windows. Salvo librerías especiales, el código escrito en estos entornos funciona en ambientes Windows y GNU/Linux.

El entorno y los comandos básicos del ambiente GNU lo proporciona el proyecto MSYS (Minimal SYStem), mientras que el compilador el compilador lo proporciona el proyecto MinGW (Minimalist GNU for Windows). El compilador usado en el software es el GCC (GNU Compiler Collection), versión 4.4.3-4.

El GCC se utiliza desde la línea de comandos, sin embargo, existen varios IDEs (Entornos de Desarrollo Integrado) que encapsulan la complejidad de la línea de comandos en un ambiente gráfico amigable al usuario, como ejemplos: CodeBlocks, DevC++, Netbeans. En este proyecto se utilizó Netbeans versión 6.9.

A continuación se proporcionan algunos enlaces para descargar el software mencionado:• MinGW: https://code.google.com/p/qp-gcc/• MSYS http://www.mingw.org/ • Netbeans: http://www.netbeans.org

OpenCV

OpenCV (Open Source Computer Vision Library)[OpenCV 2010] es una librería de más de 500 funciones de visión por computadora en tiempo real para C y C++, originalmente desarrollada por Intel y actualmente con licencia de código abierto BSD. Soporta varias áreas de visión, incluyendo: tratamiento digital de imágenes, visión estéreo y aprendizaje de máquina. Puede encontrarse en el siguiente enlace: http://sourceforge.net/projects/opencvlibrary/.

Esta librería ha tenido algunos altibajos en cuanto a su compatibilidad con compiladores, pues las primeras versiones (hasta la 1.1) podían compilarse bajo Windows y GNU/Linux, con los compiladores de Microsoft Visual C, Borland C++ y el GCC. Este último es el compilador original del proyecto GNU/Linux, e incluye varios lenguajes, entre ellos C y C++, además

Visión binocular para robot móvil en exteriores simulados 95

Page 108: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

GCC puede utilizarse en entornos Windows gracias a los proyectos MSYS y MinGW, los cuales portan varias librerías y herramientas del proyecto GNU al ambiente Windows.

Las versiones 2.0 y 2.1 de OpenCV ofrecieron grandes mejoras y una nueva interfaz para C++, pero se enfocaron únicamente en el compilador MSVC (Microsoft Visual C), de manera que esas versiones no compilan ni pueden utilizarse con otros compiladores. Sin embargo, programadores independientes hicieron adaptaciones para usarlo con otros compiladores, como por ejemplo una versión modificada de OpenCV 2.1 que puede hallarse en http://code.google.com/p/pyopencv/ (hasta diciembre de 2010), la cual está compilada con GCC 4.4.0 DW2 y puede usarse con GCC versión 4.0 en adelante. Esta última fue la usada en este proyecto.

Algo interesante en las nuevas versiones de OpenCV es que no rompieron con las interfaces de las versiones antiguas, es decir, un programa hecho para OpenCV 1.0 generalmente funciona en OpenCV 1.1, 2.0 y 2.1. Aún así, las mejoras de las nuevas versiones hacen muy atractiva la migración tanto en versiones como en sintaxis, por ejemplo: OpenCV 2.0 introdujo una interfaz para C++ (wrappers), la cual facilita la programación al introducir objetos con la capacidad de autodestruirse una vez que dejan de referenciarse, algo similar al recolector de basura de Java.

Actualmente existe la versión OpenCV 2.2, la cual reporta que puede compilarse con los compiladores de Microsoft VS2008 y VS2010, GCC 4.3 en adelante para Windows y GNU/Linux, y Xcode 3.2 en adelante para MacOSX. No se utilizó en este proyecto ya que en el desarrollo aún no había sido liberado.

VideoInput

VideoInput [Watson 1995] es una librería que utiliza DirectX para obtener imágenes de webcams en ambientes Windows. Al momento de escribir esto, la última actualización de Watson fue en 1995, y utiliza un formato de funciones conocido como SJLJ, el cual no es compatible con el formato DW2, de hecho el formato SJLJ es considerado obsoleto y abandonado en los compiladores GCC 4.4.0 en adelante.

Debido a que se en este proyecto se utilizó una versión especial de OpenCV compilada bajo GCC 4.4.0 DW2, fue necesario utilizar una versión de VideoInput compatible, descargada de:http://code.google.com/p/pyopencv/downloads/detail?name=libvideoInput.a

RS-232

Esta librería proporciona funciones para la inicialización del puerto serial y para la transmisión de caracteres a través del mismo. Proporciona código fuente en C y funciona en ambientes

Anexo A: Librerías y herramientas 96

Page 109: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

GNU/Linux y Windows. Se puede descargar en el siguiente link:http://www.teuniz.net/RS-232/index.html.

Firmware MCHPFSUSB

Microchip proporciona este driver para su tarjeta entrenadora basada en microcontroladores PIC, viene con su código fuente para MPLAB C18 y un tutorial que enseña como modificarlo.

Implementa el protocolo CDC, el cual junto con el driver CDC permite emular el puerto serie a través del USB.

En este proyecto se utilizó la versión 1.2, obtenida directamente de Microchip (http://ww1.microchip.com/downloads/en/DeviceDoc/MCHPFSUSB_Setup_v1.2.exe.), la cual fue proporcionada para un modelo basado en el PIC18F4550.

El driver CDC crea un puerto serie virtual (COM ó /dev/ttyS) por el cual un programa de aplicación se puede comunicar a un dispositivo, sin embargo, al enviar o recibir información de este puerto virtual en realidad realiza la comunicación por un puerto USB. Para que el dispositivo USB pueda enlazarse a este puerto virtual debe seguir el protocolo CDC, el cual es una forma de enlazar el dispositivo real USB al puerto virtual serial.

Visión binocular para robot móvil en exteriores simulados 97

Page 110: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

Anexo B: Manual de usuario del software

El programa requiere OpenCV 2.1 instalado en el sistema, lo que significa que sus librerías dinámicas (.dll o .so) deben estar en el PATH del sistema.

El programa funciona en la línea de comandos y tiene el siguiente formato:cvnavega param1 param2

Donde “param1” puede ser:1==Ver cámaras: obtiene y muestra las imágenes de las cámaras.2==Calibrar por método automático: si las imágenes del patrón de calibración

existen reutilizarlas, de lo contrario solicitarlas al usuario. Al final mostrar la rectificación para que el usuario decida si salió bien.

3==Calibrar manualmente: solicitar todas las imágenes al usuario. Al final mostrar la rectificación.

4==Mostrar la rectificación y el mapa de disparidades resultante de la correspondencia.

5==Generar el plano del suelo en base a las dimensiones medidas del robot móvil y correr test de división de planos.

6==Calibrar suelo: Calcula y guarda el plano del suelo usando 3 puntos de un color distintivo sobre el suelo.

8==Reconstrucción de un triángulo virtual. Prueba la reconstrucción con un triangulo virtual con varios métodos, todos deben dar los mismos resultados.

9==Prueba la reconstrucción utilizando las esquinas de una de las imágenes usadas para la calibración.

10==Prueba la reconstrucción usando las esquinas de un patrón de calibración que solicita al usuario.

12==Prueba la reconstrucción de vistas de pájaro. Utiliza el plano del suelo previamente calculado y guardado.

13==Prueba la respuesta del carro (modo texto): envía movimientos de 50cm y giros de 90° al carro para observar su funcionamiento.

14==Simula la navegación. Se prueba la navegación en un ambiente virtual.15==Prueba la navegación (avanza 3 m). Obtiene imágenes del mundo real usando

las cámaras, y prueba el algoritmo de navegación para llegar a un objetivo a tres metros frente del robot.

16==Prueba la navegación y graba video. Intenta llegar a un objetivo a tres metros del robot utilizando el algoritmo de navegación. Graba en video estéreo las imágenes procesadas por el algoritmo de correspondencia, es decir, descarta las tomadas cuando el robot está girando. Estas últimas imágenes presentan emborronados y falta de sincronía, por eso se descartan.

17==Prueba la navegación y toma fotos. Intenta llegar a un objetivo a tres metros del robot utilizando el algoritmo de navegación. Guarda las fotos procesadas

Anexo B: Manual de usuario del software 98

Page 111: cenidet...Resumen En este trabajo se investiga la visión binocular (visión artificial con dos cámaras enfocadas a la misma escena) como una fuente de información en algoritmos

por el algoritmo de correspondencia, es decir, descarta las fotos de cuando el robot está girando.

18==Prueba esquivar obstáculos. No intenta llegar a un objetivo, sólo avanza y, cuando se topa con un obstáculo, lo esquiva.

Y “param2” puede ser:1==Usar correspondencia por bloques (BlockMatch) de OpenCV.2==Usar correspondencia SemiGlobalBlockMatch de OpenCV.3==Usar correspondencia 'Birchfield-Tomasi sampling-insensitive intensity local

matcher' de Openvis3D.

Durante la calibración, si el programa solicita imágenes de un patrón de calibración, el usuario debe:

1. Colocar el patrón de calibración enfrente de las cámaras, de manera que se visible por ambas cámaras.

2. Seleccionar una de las ventanas con las imágenes de las cámaras.3. Presionar la barra espaciadora para tomar la foto.

Entonces el programa tomará la foto, encontrará las esquinas y las intentará agrupar en las dimensiones del “tablero de ajedrez”. Si tiene éxito coloreará las esquinas encontradas y las mostrará al usuario. Si el usuario presiona la tecla <ESC> o no se encuentran todas las esquinas del “tablero de ajedrez” la imagen se descartará y habrá que reiniciar el proceso.

Para probar la rectificación se hace click con el mouse en la imagen rectificada izquierda, esto dibuja una línea horizontal en ambas imágenes sobre la coordenada {y} de donde se hizo click. Estas líneas deben ser epipolares, es decir, deben observarse puntos correspondientes en cada línea. Si esas líneas no son epipolares, se debe volver a realizar la calibración.

Para calibrar el suelo hay que colocar tres objetos no alineados de un color distintivo sobre el suelo, formando un triángulo. Luego se hace click con el mouse en cada uno de los objetos en la imagen izquierda, y en el mismo orden en la derecha.

Para probar el algoritmo de navegación el usuario debe colocar el robot en el ambiente de exteriores simulados y escribir el comando “cvnavega 15 1 ”. Para probar el algoritmo de navegación simplificado que únicamente esquiva obstáculos el comando sería “cvnavega 18 1 ”

Para realizar una simulación, se deben desconectar las cámaras y ejecutar algún comando, entonces el programa automáticamente intentará cargar los videos “izq.avi” y “der.avi”, si los encuentra tomará las imágenes izquierdas de “izq.avi” y las derechas de “der.avi”, por lo demás se ejecutará de la misma manera que cuando el origen de las imágenes eran las cámaras. Si no encuentra esos archivos, cargará los archivos “izq#.jpg” y “der#.jpg”, donde “#” va de 0 a 14 y los utilizará como si provinieran de las cámaras.

Visión binocular para robot móvil en exteriores simulados 99