Fusión de imágenes de cámara y datos de distancia sobre robot móvil
43
0
0
Texto completo
(2) Fusión de Imágenes de Cámara y Datos de Distancia sobre Robot Móvil por. Juan Cam ilo Gamboa Higuera. Proyecto de Grado presentado a la Universidad de los Andes en cumplimiento del requisito de grado para el Título de Ingeniero de Sistemas y Computación. Profesor Asesor: Fernando De la Rosa, Ph.D.. Universidad de los Andes Departamento de Ingeniería de Sistemas y Computación Bogotá, D.C., Colombia Junio de 2009. ©Juan Camilo Gamboa Higuera, 2009.
(3) DECLARACION DEL AUTOR Por la presente, declaro que soy el autor único de este trabajo de proyecto de grado. Esta es una copia fiel del documento, incluyendo revisiones finales, tal como fue aceptado por el asesor. Entiendo que mi trabajo de tesis puede ser divulgado y publicado por medios electrónicos y físicos por parte de la Universidad de los Andes.. iii.
(4) Re sume n Siguiendo el trabajo hecho en años anteriores dentro del grupo IMAGINE en la Universidad de los Andes sobre la plataforma de robótica móvil experimental, se propone un marco de trabajo para la generación de escaneos 3D de una escena a partir de la proyección de puntos 3D de láser sobre imágenes tomadas por una cámara, ambos sensores montados sobre un robot móvil. Este documento presenta el diseño, implementación y pruebas de una plataforma de generación de imágenes con profundidad. Dicha plataforma se diseñó sobre un robot móvil P3-DX con un láser Hokuyo URG y una cámara web. El propósito de la plataforma es la recolección de datos de profundidad 2D correlacionados con una imagen 2D del ambiente, lo que permitirá entrenar sistemas de visión artificial y construir ambientes 3D texturizados.. iv.
(5) Agrade cimie ntos La realización de este trabajo de grado fue posible gracias a la asesoría y seguimiento del proyecto del Profesor Fernando De la Rosa, quién igualmente procuro que se tuviera acceso a un espacio Laboratorio COLIVRI del grupo IMAGINE dedicado a la experimentación en robótica móvil. Igualmente, se agradece a los profesores e integrantes del grupo IMAGINE quienes me acogieron como parte del equipo y, además de la compañía y de las ideas valiosas que brindaron para la realización de este y otros proyectos, fue de gran agrado conocer: Fernando, Julián, Mahe, Daniel, Pablo, Tiberio, Marcela, Camilo C., Andrés P, Andrés M., Juan Diego, Darwin, William, Juan Camilo I., Henry, Alfredo, Ricardo, Silvia y todos los demás que he olvidado mencionar pero seguramente recuerdo. También agradezco a mis papás, Horacio y Rosa María, a mis hermanos, Diego y Andrés, y a mis amigos: Silvia, Diana, Gonz, Los Annovas, Mañe, Jimmy, Oscar y todos lo demás. Fueron las personas que me mantuvieron tranquilo y cuerdo en los momentos que creía que esto iba a ninguna parte e hicieron que este último semestre en la Univ ersidad fuera mucho más amable.. v.
(6) Tabla de Contenidos DECLARACION DEL AUTOR ............................................................................................... iii Resumen.................................................................................................................................. iv Agradecimientos ....................................................................................................................... v Tabla de Contenidos................................................................................................................. vi Lista de Figuras....................................................................................................................... vii Capítulo 1 Introducción ............................................................................................................. 1 Capítulo 2 Marco T eórico.......................................................................................................... 3 2.1 Calibración y generación de modelo de sensor láser............................................................ 3 2.2 Calibración y generación de modelo de cámara.................................................................. 4 2.3 Adquisición datos láser..................................................................................................... 7 2.4 Transformadas Geométricas.............................................................................................. 7 Capítulo 3 Descrip ción del diseño propuesto ............................................................................... 9 3.1 Plataforma de Datos y T ransformadas Geométricas ............................................................ 9 3.2 Descripción del software desarrollado ............................................................................. 13 3.2.1 Calibración de cámara.............................................................................................. 14 3.2.2 Recolección de datos................................................................................................ 15 3.2.3 Visualización........................................................................................................... 18 Capítulo 4 Pruebas .................................................................................................................. 21 4.1 Pruebas de Escaneo........................................................................................................ 21 4.2 Ajustes adicionales a Calibración del Robot ..................................................................... 23 Capítulo 5 Resultados.............................................................................................................. 25 5.1 Problemas encontrados................................................................................................... 29 Capítulo 6 Conclusiones y T rabajo Futuro................................................................................. 32 6.1 Trabajos futuros............................................................................................................. 32 Bibliografía............................................................................................................................. 34 Apéndice A Software y manual ................................................................................................ 35. vi.
(7) Lista de Figuras Figura 1. Calibración de láser ................................................................................................... 3 Figura 2. Modelo de cám ara de agujero de alfiler....................................................................... 4 Figura 3. Ejemplo del patrón de calibración de cám ara............................................................... 6 Figura 4. Plataforma de toma de datos....................................................................................... 9 Figura 5. Descripción de recolección de datos.......................................................................... 10 Figura 6. Sistem a de recolección de datos visto lateralm ente ..................................................... 10 Figura 7. Sistem a de recolección de datos visto desde arriba ..................................................... 11 Figura 8. Módulos de Software ................................................................................................ 14 Figura 9. Detecció n de esquinas del patrón de calibración en OpenCV ...................................... 15 Figura 10. Diagrama de clases recolección de dato s ................................................................. 16 Figura 11. Ejem plo de form ato de archivo de texto para escaneos sencillos................................ 17 Figura 12. Ejem plo de captura de im agen correspondiente al escaneo de la Figura 11................ 18 Figura 13. Form atos de 180ScanCartesian y 180ScanSpherical................................................. 18 Figura 14. Visualización datos láser sin filtrar (Izquierda). Visualización datos láser filtrados (Centro). Visualización datos láser proyectados sobre im agen de la cámara (Derecha)............... 19 Figura 15. Ejem plo del form ato de fusedData.txt....................................................................... 20 Figura 16. Prueba de escaneo láser horizontal.......................................................................... 21 Figura 17. Prueba de escaneo láser vertical ............................................................................. 21 Figura 18. Escenarios de pruebas para m últiples escaneos verticales......................................... 22 Figura 19. Escaneo horizontal sencillo y proyección en imagen ................................................. 22 Figura 20. Escaneo vertical sencillo y proyección en imagen ..................................................... 22 Figura 21. Secuencia de escaneo 3D del robot (prim ero de 0° a -45° y luego de -45° a +45°) (variación del plano vertical de datos láser).............................................................................. 23 Figura 22. Obstáculos de prueba vertical (izq.) y horizontal (der.) ............................................. 24 Figura 23. Ejem plo de determ inación de posición de esquina de referencia del obstáculo............ 24 Figura 24. Prueba de escaneos sencillos a distintas distancias. Arriba: escaneos verticales. Abajo: escaneos horizontales. ............................................................................................................. 26 Figura 25. Escaneo vertical sencillo sobre otro escenario.......................................................... 26 Figura 26. Im agen tom ada por la cámara sobre el robot con la cámara frente a la escena (ángulo azimut 0 grados)...................................................................................................................... 27 vii.
(8) Figura 27. Nube de puntos (filtrados) del escenario escaneado: Escaneo 180 grados .................. 27 Figura 28. Proyección de puntos sobre imagen: Escaneo 180 grados ......................................... 27 Figura 29. Nube de puntos (filtrados) del escenario escaneado: Escaneo 90 grados.................... 28 Figura 30. Proyección de puntos sobre imagen: Escaneo 90 grados........................................... 28 Figura 31. Pruebas con escenario en forma de "U" ................................................................... 28 Figura 32. Visualización en Java3D......................................................................................... 29 Figura 33. Efecto del cambio de la distancia focal sobre la magnificación y tamaño de objetos en la imagen.................................................................................................................................... 30. viii.
(9) Capítulo 1 Introducción Uno de los problemas a resolver en robótica móvil se trata de hacer que los robots “ vean” de una manera similar a los humanos. La idea detrás de este problema es encontrar maneras en las que un robot pueda extraer información para navegación y toma de decisiones a partir de imágenes. La informació n extraída de dichas imágenes puede ser bordes de objetos, fronteras de oclusión, contexto geométrico, presencia de objetos e información 3D [4, 5, 6, 8]. El problema de extraer informació n 3D es uno de los más trabajados, pues este se refiere precisamente a la imitación de la percepción de profundidad y perspectiva de los humanos. Inspirado en varios trabajos exitosos [3, 4, 5, 7] sobre inteligencia artificial y visión artificial, este proyecto pretende generar un sistema de recolección de mediciones de profundidad proyectadas sobre un plano de imagen, útil para aplicaciones de visión en robots. Ejemplos de aplicaciones de dicho sistema son la generación de modelos 3D aproximados de objetos o ambientes [3], utilización de los datos recolectados para entrenar sistemas autónomos que dependan solamente de imágenes monoculares [4], el entrenamiento de sistemas que puedan determinar fronteras de oclusión [5] o el seguimiento de objetivos mediante un robot que pueda mantenerse a una distancia fija de éstos [2], entre otras. Otra aplicación interesante es la generación de modelos 3D reconstruidos de un ambiente, para posterior localización de un robot a partir de dichos modelos [6]. La principal motivación del proyecto es el desarrollo del área de robótica dentro del grupo IMAGINE, mediante la inclusión de nuevas herramientas que enriquezcan el conjunto de aplicaciones que pueda desarrollar este grupo. Se busca el desarrollo de un escáner láser 3D a partir de un escáner láser 2D sobre una plataforma de experimentación de robótica móvil, el cual permita proyectar información de rango recolectada del láser 2D sobre pixeles en im ágenes 2D tomadas por una cámara, ambos sensores embarcados sobre el robot. De esta manera se tiene un sistema de recolección de datos que podría utilizado en las aplicaciones mencionadas anteriormente. En este documento se presenta el diseño, los aspectos principales de implementación y los resultados experim entales de una posible solución al problema de obtención de imágenes de profundidad 3D, basada en la fusión de datos de distancia de un sensor láser 2D e imágenes 2D usando sensores de bajo costo. Este documento se encuentra organizado de la siguiente manera. En el Capítulo 2 se encuentra el marco teórico, que incluye una descripción de los modelos y suposiciones sobre las cuales se basa 1.
(10) 2 este trabajo. En el Capítulo 3 se presenta una descripción del diseño propuesto para un sistema de escaneo 3D. En el Capítulo 4 se presenta el esquema de pruebas utilizado para validar el diseño. En el Capítulo 5 se muestra el resultado de las pruebas y los problemas encontrados durante las pruebas. Finalmente, en el Capítulo 6 se enumeran las conclusiones de este proyecto y el posible trabajo futuro.. 2.
(11) 3. Capítulo 2 Marco Te órico La generación de imágenes de profundidad requiere que se resuelvan tres problemas: (1) calibración del sensor láser y cámara, (2) generación de modelos geométricos del sensor láser y cámara, y (3) encontrar las transformaciones geométricas que permitan tener imágenes de profundidad a partir de los datos obtenidos por el láser (profundidad) y la cámara (imagen). A continuación se presentan los aspectos teóricos necesarios para entender estas problemáticas y las soluciones respectivas.. 2.1 Calibración y generación de modelo de sensor láser Para obtener mediciones de un sensor láser con alta precisión y certidumbre, primero debe hacerse una caracterización de éste. Dicha caracterización se debe hacer posicionando el láser a distancias conocidas, y medidas por otros medios, de un obstáculo para realizar mediciones y verificar que las mediciones entregadas por el láser corresponden a las distancias correctas (Fig. 1).. Figura 1. Calibración de láser Utilizando el método propuesto en [1] se puede realizar dicha calibración, con lo cual se obtiene el error de las mediciones y su varianza. En este trabajo se supone que el modelo especificado en la hoja de datos del fabricante del láser (Hokuyo) y posteriormente verificado en [1] es suficiente para el desarrollo de la plataforma.. 3.
(12) 4. 2.2 Calibración y generación de modelo de cámara Debido a que los lentes de las cámaras no son totalmente parabólicos y normalmente no están dispuestos de una manera totalmente paralela al sensor CCD, es muy probable que se tengan distorsiones radial y tangencial no deseadas. Por estas distorsiones surge la necesidad de obtener un modelo de la cámara que permita corregirlas. Adicionalmente, en las aplicaciones de visión artificial, es útil tener el modelo de cámara que describa la proyección de puntos en el mundo 3D a puntos sobre un plano de proyección de la cámara y luego a píxeles sobre la imagen producida por la cámara. De hecho, éste es uno de los puntos más importantes para la realización de este trabajo: la obtención de un modelo de cámara adecuado permitir á la proyección de mediciones láser sobre píxeles de la imagen tomada por el robot. En la Fig. 2 se ilustra dicho modelo.. Figura 2. Modelo de cámara de agujero de alfiler. El modelo de proyección en el que se basa este proyecto es un modelo lineal, llamado modelo de cám ara de agujero de alfiler. Este modelo asume que todos los rayos de luz que se proyectan sobre el plano de imagen convergen en un punto infinitesimal, llamado el centro de proyección. El plano imagen se encuentra a la distancia focal f. Las ecuaciones geométricas que permiten definir el punto. 4.
(13) 5 imagen (suponiendo el centro focal en el origen) a partir de un punto en la escena y la distancia focal son:. Estas ecuaciones se pueden escribir de manera matricial como. 0 0 0 0. 0 0 0 0 1 0. 1. Donde s es un factor de escalamiento distinto a 0, el cual no se puede obtener del procedimiento de calibración. De esta manera se obtiene una proyección de puntos sobre el plano de imagen de la cámara. Ahora, para convertir a coordenadas en el espacio de píxeles, donde el origen se encuentra en la esquina superior izquierda de la imagen, se utilizan las siguientes ecuaciones,. Esta transformación tiene en cuenta que los pixeles en un sensor CCD de una cámara no son perfectamente cuadrados y que el plano de imagen es sólo una región del plano de proyección de la cámara, delimitado por el campo de visión del lente. En el mundo real esto no ocurre, pues los lentes introducen cierta desviación sobre los rayos de luz que hace que no todos los rayos se crucen en un mismo punto. Si bien este no es un modelo exacto, es lo suficientemente aproximado para la aplicación de este proyecto y otros de visión artificial, como se puede ver en [7], [9] y [11]. El procedimiento utilizado para calibración está basado en el método de Zhang [9] para encontrar el modelo de proyección de la cámara (parámetros intrínsecos) y el método de Brown [10] para encontrar el modelo de distorsiones. Este procedimiento se encuentra programado en las librerías de 5.
(14) 6 OpenCV [11] y consiste en tomar varias imágenes de un patrón de calibración, como se muestra en la Fig. 3.. Figura 3. Ejemplo del patrón de calib ración de cám ara. De la calibración se obtiene el modelo de proyección, o parámetros intrínsecos de la cámara, el cual se muestra en la siguiente ecuación. 0 1. 0 0. 0. 1. ⁄ ⁄ 1. Con este primer conjunto de ecuaciones, se convierten coordenadas coordenadas. de la imagen de la cámara. Los parámetros. y. del mundo 3D a. son las distancias focales en X y. Y (son distintas pues no son realmente distancias focales, sino distancias focales ajustadas para incluir las diferencias de ancho y largo de los pixeles). Los parámetros. y. corresponden a. coordenadas que representan el centro de proyección en el espacio de imagen. El valor de. es un. factor de escalamiento para ajustar los puntos al plano de imagen. La matriz de parámetros intrínsecos y el factor s son el resultado de la calibración. De la calibración también se obtienen los parámetros de distorsión que permiten corregir las coordenadas de proyección de la imagen. La corrección se presenta en las siguientes ecuacio nes: 1 1. 6.
(15) 7 2 2. 2 2. Los parámetros Los parámetros. representan un modelo aproximado por series de T aylor a la distorsión radial. corresponden a la inclinación del plano de proyección con respecto al lente. (distorsión tangencial). En ambos casos, es la distancia del píxel. al centro de proyección.. 2.3 Adquisición datos láser Para realizar la toma de datos con el sensor láser existen dos opciones: utilizar una plataforma mecánica que permita cambiar la elevación del láser o posicionar el sensor láser de manera que el rango de éste sea paralelo al eje vertical (adquisición en un plano) y rotarlo para obtener un escaneo en tres dimensiones (cada rotación define un plano de adquisición diferente). En este proyecto, la aproximación utilizada es la segunda, donde se toman datos de rango de láser en coordenadas esféricas, definidas por las siguientes ecuaciones. ó. á. · cos. · sin. ó. ó. á. · sin. · sin. ó. ó. á. · cos. ó. Donde azimut es el ángulo con respecto al eje vertical del robot, elevación es el ángulo con respecto al eje horizontal lateral del robot y m edición es la distancia medida desde el láser al punto detectado. Las coordenadas obtenidas Xláser, Yláser y Z láser se definen en el sistema de referencia del robot en la posición inicial.. 2.4 Transformadas Geométricas Las transformaciones geométricas necesarias para realizar la proyección correcta de puntos son la transformación de puntos del láser al marco de referencia del robot y la transformación de puntos en el marco de referencia del robot al marco de referencia de la cámara. El detalle de estas transformadas se explica en el próximo capítulo. Estas transformadas se encuentran en coordenadas homogéneas y corresponden a matrices 4×4 de la forma,. 7.
(16) 8 0. 0 0. 1. donde R es una matriz de rotación y escalamiento de 3×3 y T es una matriz de translación de 3×1. Estas mediciones no son libres de error, razón por la cual se deben introducir correcciones como las mencionadas en [3].. 8.
(17) 9. Capítulo 3 De scripción del dise ño propuesto 3.1 Plataforma de Datos y Transformadas Geométricas De manera similar a los trabajos descritos en [3] y [8] y al sistema de recolección de datos utilizado en [4] y [9], se propone montar un escáner láser 2D de manera vertical, sobre un robot móvil P3-DX como se muestra en la Fig. 4. Figura 4. Plataforma de toma de datos. Como se muestra en la Fig. 5, posicionar el sensor “ de lado” permite tomar datos sobre planos verticales y para hacer un escaneo sobre todo el plano de imagen se modifica el plano de escaneo mediante una rotación del robot. Esto nos permite obtener mediciones de láser en coordenadas esféricas medidas desde el origen del marco de referencia del láser. Se debe tener en cuenta que como el láser no se encuentra en el centro de rotación del robot, se debe hacer una conversión de coordenadas de láser a coordenadas del robot.. 9.
(18) 10. Figura 5. Descripción de recolección de datos. T eniendo mediciones del centro del robot, del origen del marco de referencia de la cámara y del origen del marco de referencia del láser, se pueden construir las matrices de transformadas geométricas que describan cada sistema y poder realizar las transformadas respectivas. Un bosquejo de cómo se encuentran dispuestos el láser y la cámara, junto con las orientaciones de los marcos de referencia se puede ver en las Figuras 6 y 7.. Figura 6. Sistem a de recolección de datos visto lateralm ente. 10.
(19) 11. Figura 7. Sistem a de recolección de datos visto desde arriba. A partir de las dimensiones del robot, láser y cámara y sus posiciones relativas dentro del robot, generar las matrices homogéneas de transformaciones geométricas es como sigue. Se utiliza un sistema de coordenadas en mm donde el origen está definido por la posición inicial del robot. Las coordenadas se expresan como (X, Y, Z) y las orientaciones como (Rx, Ry, Rz) con respecto al sistema de coordenadas inicial del robot. Entonces, la posición inicial 3D del robot se toma como (0,0,0) y los ángulos de Euler, XYZ fijos, como (0,0,0). El origen del sistema de coordenadas del láser se encuentra en (∆. ,∆. ,. ,∆. ,. ) y sus ángulos son (-90,0,0).. ,. La secuencia de transformadas geométricas a aplicar usando la composición es: ∆. ,∆. ,. ,∆. ,. 90. ,. La matriz homogénea resultante de aplicar la secuencia correspondiente es: 1 0 0 0. 1 Finalmente (∆. ,. para ,∆. la. cámara, ,. 0 0 1 0. 0 ∆ 1 ∆ 0 ∆ 0. , , ,. 1. el origen con ,∆. respecto. 1 al. robot. se. encuentra. en. ) y los ángulos de Euler, XYZ fijos, son. ,. (-90,0,-90). La secuencia de transformadas geométricas a aplicar usando la composición es:. 11.
(20) 12 ∆. ,. ,∆. ,∆. ,. 90. ,. 90. Se de be tener en cuenta que se quieren convertir puntos medidos desde el robot a puntos en el sistema de referencia de la cámara cuando se toma la foto para el escaneo. Es decir, la posición relativa de la “cámara” con respecto al robot cambia. Es por esto que cuando se habla del sistema de coordenadas del robot, se está haciendo referencia al sistema de coordenadas cuyos origen y vectores unitarios están definidos por la posición inicial y la orientación inicial del robot. Para facilitar las pruebas, en este proyecto se asume que la cámara captura una imagen cuando el robot está en la posición inicial y luego se realiza el escaneo. La matriz homogénea resultante de aplicar la secuencia correspondiente es: 0 0 1 0. 1. 1 0 0 0. 0 ∆ 1 ∆ 0 ∆ 0. , ,. 1. ,. 1. A partir de las matrices anteriores se puede definir la secuencia de transformación entre el sistema de referencia del láser y el sistema de referencia de la cámara como:. donde. y. son las matrices definidas anteriormente. La matriz. homogénea resultante es:. 1. 0 0 1 0. 0 1 0 0. 1 ∆ 0 ∆ 0 ∆ 0. Á. ,. Á. ,. Á. ,. 1. 1. Ahora, se debe tener en cuenta que en las matrices anteriores se asumió que los ejes del láser y la cámara se encuentran perfectamente alineados con los ejes del robot, lo cual no es totalmente cierto. Al posicionar la cámara y el láser sobre el robot existen desviaciones introducidas por quien realiza la instalación. Indudablemente estas desviaciones deben ser introducidas en el modelo para poder 12.
(21) 13 obtener una mejor aproximación en la proyección de puntos del láser sobre la imagen. Esto se puede hacer definiendo los ángulos de las desviaciones entre la cám ara y el láse r como ,. y. y. multiplicando la anterior matriz por las matrices de rotación con respecto a cada eje global. La secuencia de transformadas quedaría,. α. β. γ. Para los casos en que el robot se desplaza, se debe cambiar el punto de referencia de acuerdo al desplazamiento del robot. Cuando esto ocurre, se deben convertir los puntos de láser al robot y del robot al origen (posición inicial del robot). Esto se hace mediante la transformada. 0. 1. Donde. 0 0. 1 0 0 0. 1. 0 0 1 0. 0 ∆ 1 ∆ 0 ∆ 0. , ,. 1. ,. 1. es la matriz de 3x3 que representa la rotación del robot con respecto a los ejes de. coordenadas del mundo y. es la posición del robot correspondiente al momento en que se. tomaron datos del láser. Esta transformada sirve para hacer reconstrucciones incrementales del espacio 3D durante varios escaneos desde distintas posiciones/orientaciones del robot.. 3.2 Descripción del software desarrollado Para la realización de este proyecto, se desarrollando e implementaron tres módulos de software: Calibración de cámara, Recolección de datos y Visualización de datos. Los tres módulos fueron desarrollados en Visual C++. En la Fig. 8 se muestra el flujo de información entre los elementos hardware del sistema y los módulos software.. 13.
(22) 14. Calibración Cámara. Fusión y Visualización Recolección de Datos Láser - Imagen. Figura 8. Módulos de Software. La principal razón para diseñar el sistema de esta manera es brindar la posibilidad de reemplazar cualquier módulo con una mejor implementación, o mejorar la implementación actual, sin necesidad de modificar todo el proyecto.. 3.2.1 Calibración de cám ara El módulo de calibración de cámara se hizo basado en un ejemplo del libro Learning OpenCV (Capítulo 11) [11]. Este módulo es una aplicación de consola que realiza la calibración en dos etapas. La primera etapa es la de captura compuesta de los siguientes pasos: •. capturar una imagen a la vez desde una cámara conectada al computador (cvQueryFrame( capture )). •. generar. una. copia. en. escala. de. grises. de. la. imagen. (cvCvtColor(image, gray_image, CV_BGR2GRAY)) •. encontrar. las. esquinas. del. la. c uadrícula. (cvFindChessboardCorners(image,. del. patrón. board_sz,. de. calibración corners,. &corner_count, CV_CALIB_CB_ADAPTIVE_THRESH|CV_CALIB_CB_FILTER_QUA 14.
(23) 15 DS)) •. guardar en estructuras de datos las posiciones 2D de los puntos sobre la imagen, y las posiciones. 3D. estimadas. de. dichos. puntos. (en. coordenadas. en píxeles).. ( for( int i=step, j=0; j<board_n; ++i,++j ){ CV_MAT_ELEM(*image_points, float,i,0) = corners[j].x; CV_MAT_ELEM(*image_points, float,i,1) = corners[j].y; CV_MAT_ELEM(*object_points,float,i,0) = j/board_w; CV_MAT_ELEM(*object_points,float,i,1) = j%board_w; CV_MAT_ELEM(*object_points,float,i,2) = 0.0f;}). La implementación de este módulo se encuentra en el Anexo mencionado en el Apendice A. En la Fig. 9, se muestra una imagen con los puntos detectados correctamente. La calibración requiere que se tomen al menos 20 imágenes de cuadrículas de 6 x 7 [11], para poder tener suficientes datos para resolver numéricamente los sistemas de ecuaciones que resuelven el problema de calibración.. Figura 9. Detección de esquinas del patrón de calibración en OpenCV. La segunda etapa es la generación de los modelos de proyecció n y de distorsión a partir de los puntos detectados y de una estimación del error introducido por la distorsión. En esta etapa es donde se aplican los métodos de Zhang y Brown. De esta etapa se obtienen dos archivos XML: Intrinsics.xml y Distortion.xml. Estos dos archivos contienen representaciones de matrices que pueden ser cargadas con el método cvLoad() de OpenCV y que corresponden a los modelos de agujero de alfiler y de distorsión de la cámara.. 3.2.2 Recolección de datos El sistema de recolecció n de datos consiste de tres clases de utilidad, sobre la librería ARIA de MobileRobots y la librería OpenCV. Estas clases son: 15.
(24) 16 •. la clase Main, encargada de la instanciación de conexiones al robot, el láser y la cámara;. •. la clase Cam eraHandler, encargada de realizar capturas de la cámara Web; y. •. la clase LáserHandler que se encarga de la obtención de datos del láser y de enviar comandos al robot.. Un diagrama de clases mostrando la estructura de éste módulo se muestra en la Figura 10.. Figura 10. Diagrama de cla ses recolección de datos En la recolección de datos, las mediciones del láser sobre un plano vertical son entregadas en coordenadas polares (distancia, elevación) medidas desde el centro del robot. Esto se hace pues la informació n que se tiene durante los escaneos son las distancias medidas por el láser y los ángulos de medición del robot (azimut – rotación del plano vertical) y del láser. En el módulo de recolección de datos se tienen implementadas las siguientes características: •. teleop: T ele-operación del robot. •. scanOnce: Escaneos sencillos (indiferente de si es horizontal o vertical). •. scanTest: Prueba de escaneos sencillos. Esta rutina hace que el robot realice un escaneo sencillo y se mueva hacia adelante 30 cm hasta que se encuentre a menos de 20 cm de un obstáculo.. •. scanSideways180: Escaneos 3D de -90 grados a +90 grados con incremento de un grado (alrededor del eje vertical del robot). 16.
(25) 17 •. scanSideways: Escaneo sencillo de prueba que entrega archivos en el formato de scanSideways180.. Cada escaneo entrega archivos de datos de láser e imágenes capturadas al momento del escaneo. Los escaneos sencillos entregan archivos .map que pueden ser visualizados con la aplicación Mapper3Basic de MobileRobots. Estos archivos tienen nombre láser<i>_<nombreláser>.m ap, donde i es el número de capturas realizadas hasta el momento. La imagen capturada se guarda con nombre captura<i>.jpg. En las Figuras 11 y 12 se muestra un ejemplo de estos archivos. Por otro lado el escaneo 3D entrega dos archivos de texto: uno con puntos en coordenadas rectangulares (180ScanCartesian.map) y otro con coordenadas esféricas (180ScanSpherical.map). La imagen en este caso queda guardada como captura180.jpg. Cada línea del archivo 180ScanCartesian.map tiene el formato: <Coordenada X> <Coordenada Y> <Coordenada Z>. Cada línea del archivo 180ScanSpherical tiene el formato: <Azimut> <Elevacion> <Distancia>. Figura 11. Ejem plo de form ato de archivo de texto para escaneos sencillos. 17.
(26) 18. Figura 12. Ejem plo de captura de im agen correspondiente al escaneo de la Figura 11. Figura 13. Formatos de 180ScanCartesian y 180ScanSpherical 3.2.3 Visualización En el último módulo, se utilizan los modelos de cámara y distorsión obtenidos durante la calibración y los datos de láser y cámara recolectados con el robot. La visualización se realiza sobre OpenCV (proyección de puntos) y sobre Java3D (fusión de datos de color con datos de 18.
(27) 19 profundidad), utilizando las transformadas mencionadas en la sección anterior. Este módulo de visualización también se utiliza para realizar pruebas sobre escaneos sencillos y verificar que los resultados de calibración sean correctos. Las pruebas que se pue den verificar sobre este módulo son explicadas en el siguiente capítulo. La idea básica detrás de las pruebas es tomar datos desde distintos puntos a una geometría conocida de prueba y encontrar el error por la diferencia entre el lugar donde debería proyectarse un punto y el lugar donde efectivamente se proyecto el punto, en el espacio de imagen. La visualización de escaneos 3D se muestra en tres ventanas: visualización de escaneo sin filtrar (800x600), visualización de escaneo filtrado (800x600) y visualización de escaneo proyectado (resolución de la cámara, este caso de 320x200). Un ejemplo de la visualización se muestra en la Fig. 14. Los escaneos filt rados no contienen las mediciones mayores a 4 metros, pues el rango máximo del láser es de 4096 milímetros y para los ángulos en que no hay detecciones el sensor entrega una lectura de 4096. El escaneo proyectado es la proyección de los puntos del láser sobre los pixeles de la imagen tomada por la cámara.. Figura 14. Visualización datos láser sin filtrar (Izquierda). Visualización datos láser filtrados (Centro). Visualización datos láser proyectados sobre im agen de la cámara (Derecha).. Este módulo de visualización también genera un archivo en el que se entrega la información de posición espacial de una detección del láser y el color RGB correspondiente sobre la imagen de la cámara. El formato de cada línea de dicho archivo es como sigue: <Coordenada X> <Coordenada Y> <Coordenada Z> <Rojo> <Verde> <Azul> y se muestra en la Fig. 15.. 19.
(28) 20. Figura 15. Ejem plo del form ato de fusedData.txt El archivo fusedData.txt puede ser utilizado para visualizar los datos recolectados en un ambiente 3D. En este proyecto se creó una demostración sobre Java3D que utiliza dicho archivo.. 20.
(29) 21. Capítulo 4 Pruebas Para consultar como se realizan las pruebas de calibración, revisar la referencia [11]. En el capítulo 11 de dicha referencia, se explica claramente el procedimiento a seguir para calibrar la cámara. En este capítulo se muestra cómo se pueden validar los resultados obtenidos al seguir el procedimiento de calibración.. 4.1 Pruebas de Escaneo Inicialmente, para probar que los datos de calibración hayan resultado correctos se hacen dos pruebas de escaneos sencillos: una prueba de escaneo horizontal y otra de escaneo vertical. El montaje para cada una de estas pruebas se muestra en las Figuras 16 y 17, respectivamente.. Figura 16. Prueba de escaneo láser horizontal. Figura 17. Prueba de escaneo láser vertical 21.
(30) 22 Para realizar las pruebas de escaneo en dos y tres dimensiones se preparó un escenario con cajas (Fig. 18).. Figura 18. Escenarios de pruebas para m últiples escaneos verticales. Las pruebas realizadas en escaneos sencillos (horizontal y vertical) consistieron en medir la diferencia en píxeles entre los puntos (mediciones láser) proyectados correspondientes a bordes reconocibles y la ubicación de dichos bordes en la imagen, como se muestra en las figuras 19 y 20.. Figura 19. Escaneo horizontal sencillo y proyección en im agen. Figura 20. Escaneo vertical sencillo y proyecció n en imagen Las pruebas para múltiples escaneos verticales se realizaron haciendo girar el robot 0.5° y guardando los datos en un archivo para luego visualizarlos. Las pruebas se hicieron haciendo girar el robot en [−90°, 90°] y en [−45°, 45°] (Fig. 21). 22.
(31) 23. Figura 21. Secuencia de escaneo 3D del robot (prim ero de 0° a -45° y lu ego de -45° a +45°) (variación del plano vertical de datos láser). 4.2 Ajustes adicionales a Calibración del Robot Cada vez que se instale una nueva cámara se vuelve necesario repetir el procedimiento de calibración, pues un modelo suficientemente aproximado a la cámara utilizada es vital para el funcionamiento correcto de un sistema de escaneo y generación de imágenes con profundidad. T al como se presentó en el marco teórico, existe un factor de escalamiento presente en la calibración. Este factor, por ahora, nos obliga a realizar un ajuste manual de las coordenadas proyectadas para que concuerden correctamente con puntos sobre una imagen. Para esto, se diseño un plan de pruebas que se puede ejecutar desde el software de recolección de datos y verificar con el módulo de visualización. El procedimiento de pruebas se explica a continuación. Se realiza una prueba de escaneos horizontales y verticales sencillos a distintas distancias de un obstáculo con dos caras planas ortogonales como se muestra en la Figura 22. Luego, sabiendo que las caras son ortogonales, se puede determinar aproximadamente la posición de la esquina del obstáculo (el punto donde se encuentran las dos caras). Esta estimación se hace calculando las rectas de cada cara mediante una regresión lineal. Dicha regresión lineal entrega dos ecuaciones de recta. donde. es la pendiente de la recta y. es el corte de la recta con el eje Y del robot. De. las ecuaciones se puede obtener la posición de la esquina haciendo .. y resolviendo el sistema de ecuacio nes para 23. ó.
(32) 24. Figura 22. Obstáculos de prueba vertical (izq.) y horizontal (der.). Con la posición de la esquina, se puede proyectar dicha posición sobre la imagen y determinar el error absoluto entre el pixel donde se encuentra la esquina y el pixel donde se proyecta el punto estimado. En la Fig. 23 se ilustra la estimación del punto de “ esquina” de referencia de un obstáculo con caras ortogonales. Para realizar esta prueba, se puede utilizar la rutina del robot scanTest enumerada en la sección 3.2.2 del capítulo 3 De esta manera, se tienen varios escaneos sencillos con una distancia cada vez menor al obstáculo y así se tienen varios datos para calcular el error promedio absoluto entre posiciones medidas y posiciones calculadas sobre el espacio de im agen.. Figura 23. Ejemplo de determ inación de posición de esquina de referencia del obstáculo. 24.
(33) 25. Capítulo 5 Re sultados Para las pruebas se utilizó una cámara Genius WEBMate E-messenger 112. También se realizaron pruebas con una cámara Genius VideoCAM Messenger pero los resultados mostrados acá corresponden sólo a la primera cámara. Se realizó el procedimiento de calibración, capturando 50 imágenes de un tablero con una cuadrícula de 8x9, en distintas posiciones y orientaciones frente a la cámara. Este procedimiento de calibración se realizó tres veces para verificar su repetitividad. De este procedimiento se obtuvo la siguiente matriz de parámetros intrínsecos 516.831 29883 0 0. 0 515 .515 .2920532 0. 176 .443 89343 144 .617 98859 1. y los siguientes coeficientes de distorsión. k1 = -1.27731333e-003 k2 = 2.71613402e-007 p1= -1.0 3366247e-003 p2 = -1.59975234e-003. De las pruebas de escaneo sencillo, horizontal y vertical, se obtuvieron los siguientes resultados 1,421 % 1,736 % donde el porcentaje de error se mide con respecto a la distancia del pixel de referencia al pixel (0,0) de la imagen. El error promedio u corresponde al error promedio de posición de un píxel en la coordenada horizontal. De manera similar se define el error promedio v, como el error promedio de las posiciones de los pixeles en la coordenada vertical. En cuanto al error absoluto se obtuvo el siguiente resultado.. Error Prom edio = 7,34 pixeles. El error promedio se define como la distancia geométrica, medida en pixeles, entre el punto 25.
(34) 26 donde debería encontrarse la proyección de una detección del láser y el punto donde realmente se proyecta. Un ejemplo de la prueba de escaneo vertical sencillo a distintas distancias se muestra en la Fig. 24. También se muestra un ejemplo de la prueba para escaneos horizontales.. Figura 24. Prueba de escaneos sencillos a distintas distancias. Arriba: escaneos verticales. Abajo: escaneos horizontales.. En la Fig. 25 se muestra una prueba sobre un escenario distinto. Cabe aclarar que aunque se realizó un proceso de calibración de la cámara, se debió introducir un valor empírico al factor de escalamiento s mencionado en el capítulo 2. A partir de estas pruebas de calibración también se determinaron, empíricamente, los ángulos aproximados de desviación de la cámara con respecto al láser. Estos ángulos fueron. 4.5°,. 0.0° y. 1.0°.. Las Figuras 26, 27 y 28 muestran resultados para un escaneo de 180° de una primera escena experimental. El escaneo, en este caso, toma un tiempo de 3 minutos.. Figura 25. Escaneo vertical sencillo sobre otro escenario. 26.
(35) 27 Se puede notar que existen “ huecos” en el barrido tanto en sentido vertical como horizontal. Algunos huecos horizontales se deben a que el robot no se mueve precisamente en los pasos de 0.5° establecidos, debido a imprecisiones de odometría. Adicionalmente, hay puntos en los que el láser no detecta un obstáculo debido a la inclinación de éste. Finalmente, algunos de estos huecos pueden deberse a que las mediciones del láser tienen precisión subpíxel y al hacer el mapeo a una imagen 2D se pierde dicha precisión.. Figura 26. Im agen tom ada por la cámara sobre el robot con la cámara frente a la escena (ángulo azimut 0 grados).. Figura 27. Nube de puntos (filtrados) del escenario escaneado: Escaneo 180 grados. Figura 28. Proyección de puntos sobre im agen: Escaneo 180 grados Las figuras 29 y 30 muestran resultados para un escaneo de 90° de una segunda escena experimental. En este caso el escaneo toma un tiempo de 1,5 minutos. 27.
(36) 28. Figura 29. Nube de puntos (filtrados) del escenario escaneado: Escaneo 90 grados. Figura 30. Proyección de puntos sobre imagen: Escaneo 90 grados. Un escenario de pruebas para validación de calibración y fusión de datos de profundidad con datos de como se muestra en la Fig. 31.. Figura 31. Pruebas con escenario en forma de "U". Para este escenario, se utilizaron los datos de rango y color fusionados para generar el modelo de nube de puntos mostrado en la Fig. 32.. 28.
(37) 29. Figura 32. Visualización en Java3D. 5.1 Problemas encontrados Uno de los primeros problemas encontrados durante la realización de este proyecto fue que se comenzó trabajando con la cámara Canon VC-C50i. Está cámara tiene la opción de autoenfoque, la cual es muy útil para ciertas tareas de procesamiento de imágenes. El problema con esta característica es que el autoenfoque cambia los parámetros intrínsecos de la cámara, razón por la cual la calibración no da resultados repetibles. Al cambiar el enfoque de una cámara, se cambia automáticamente el campo de visión (field of view ó fov por sus siglas en inglés). Esto hace que se cambie la magnificación de la cámara y, por lo tanto, no se pueda tener una función de proyección constante pues el tamaño de los objetos en la imagen cambiará siempre que se cambie el enfoque. En la Fig. 33 se ilustra este concepto.. 29.
(38) 30. Figura 33. Efecto del cambio de la distancia focal sobre la magnificación y tamaño de objetos en la im agen1 . Otro gran problema es el de localización del robot. La generación de imágenes de profundidad tiene un error más o menos considerable (de nuevo, que se corrige a mano con el factor de escalamiento mencionado en el capítulo 2) debido a un error incremental dado por el deslizamiento del robot y la localización por odometría. En un trabajo futuro se debe atacar este problema con técnicas de localización probabilística o instalando un giroscopio que permita corregir la localización. T ambién existe un problema con el método utilizado para determinar las posiciones y orientaciones de la cámara y el láser sobre el robot. Esto se está haciendo midiendo con cinta métrica y estimando los ángulos de desviaciones mediante ensayo y error. Debe utilizarse otro método, automático, que pueda brindar una mayor precisión. Para la cámara puede utilizarse un patrón de calibración, posicionado de tal manera que se sepa exactamente la posición y orientación del patrón con respecto al robot, de esta manera, al tomar una fotografía del patrón de calibración se puede determinar la posición y orientación de la cámara de una manera inversa a lo que se hace en el procedimiento de calibración (en la calibración se determina la posición y orientación del patrón en el espacio de referencia de la cámara). Por últim o, un problema detectado es la conexión a través de la red con el robot. Dado que no hay una interfaz serial directa para conectarse al mismo tiempo con el robot y el láser desde el 1. Tomado de http://en.wikipedia.com/Focal_length el día 25 de mayo de 2009. 30.
(39) 31 computador, la conexión con estos debe hacerse a través de la red; mientras que la cámara si debe estar conectada directamente al computador. Al estar conectado al robot a través de la red, es probable que por el tráfico los paquetes de datos enviados desde el computador se demoren, en llegar al robot, un tiempo mayor al que el software, tanto la API de ARIA como el implementado en este proyecto, tiene definido como un tiempo de tim eout. Cuando esto ocurre, el robot y el computador no se encuentran sincronizados y puede verse desde la consola de la aplicación que, aunque se envían comandos desde el computador, el robot no responde a los comandos.. 31.
(40) 32. Capítulo 6 Conclusione s y Trabajo Futuro Este trabajo presenta el diseño, implementación y pruebas experimentales de una plataforma experimental de generación de imágenes con profundidad usando un robot móvil P3DX, un sensor láser Hokuyo URG de bajo costo y una cámara Web de bajo costo. Se demuestra la funcionalidad de dicho diseño para realizar proyección de detecciones de láser a una imagen tomada por un robot, de manera automática.. Este proyecto sirve como un primer paso para aplicaciones de reconstrucción 3D utilizando la plataforma de robots del laboratorio COLIVRI, pues se hace una aproximación general al problema y se enuncian los sub-problemas que se deben resolver, dando una solución inicial a estos. Es importante destacar la relevancia de la experimentación como método de validación de las soluciones propuestas; en este proyecto se enuncian algunos experimentos en el Capítulo 4. Uno de los problemas de la aproximación de este trabajo es la localización del robot por odometría. Esto introduce errores que se van acumulando a medida que el robot se desplaza o gira, por lo cual hay que utilizar estrategias que permitan una localización del robot más precisa. En este proyecto no se alcanzó a resolver el problema de determinar la posición del láser y la cámara de manera automática. Esto introduce errores cuando existen perturbaciones que afectan las posiciones, además que las posiciones fueron medidas con cinta métrica lo cual introduce un error por la incertidumbre de la cinta y por factores humanos.. 6.1 Trabajos futuros Como trabajo futuro se debería realizar compensació n por movimiento en las mediciones tomadas en cada barrido. También debe considerarse la posibilidad de montar el sensor láser en una plataforma rotacional que brinde mayor precisión, en cuyo caso los algoritmos desarrollados en este trabajo serían de utilidad. T ambién sería interesante ver la reconstrucción incremental del todo el escenario incluyendo translación del robot, de manera similar al trabajo realizado en [1] pero en tres dimensiones. Basado en estas ideas se pueden realizar muchas aplicaciones, algunas de las cuales se proponen en este trabajo. Existen dos aplicaciones propuestas: generación de una imagen 3D con textura y navegación de un robot dependiente solamente de imágenes monoculares. La primera aplicació n consistiría en 32.
(41) 33 situar el robot en un ambiente desconocido y, mediante un recorrido de exploración similar a los hechos en [2], [3] y [5], se obtenga una nube de puntos a partir de la cual se pueda generar un modelo 3D aproximado del ambiente y con las imágenes obtenidas por video, se pueda texturizar dicho modelo. Esta reconstrucción del modelo puede hacerse incremental, añadiendo y eliminando puntos al modelo de acuerdo a los nuevos escaneos que se hagan. La segunda aplicación consiste en hacer una toma de datos, donde se puedan etiquetar regiones en la imagen con estimados de profundidad a partir de las mediciones. Cada una de estas regiones en la imagen tendría un vector de características asociado dependiente de características de los pixeles en la región, relaciones entre pixeles vecinos dentro la región y de relaciones entre regiones vecinas. Las características de los pixeles estarían relacionadas con ciertas pistas monoculares extraíbles de la imagen. Las relaciones entre regiones se pueden determinar de acuerdo a gradientes en la imagen, fronteras de oclusión y conectividad de las regiones. En [4], [5] y [7] se presentan distintos vectores de características definidos para aplicaciones de detección de profundidad en imágenes monoculares. Una vez se tiene una biblioteca de datos considerable, se procede a definir un sistema que pueda dar el estado de una variable no observable y (en este caso la profundidad) a partir de un conjunto de variables observables xi (el vector de características mencionado en el párrafo anterior); lo cual, en otras palabras, es un sistema discrimin ativo. Dicho sistema se podrá “ entrenar” con los datos medidos de profundidad para que, con imágenes nuevas, este pueda estimar imágenes de profundidad de una escena y tomar decisiones. En las referencias mencionadas anteriormente se presentan modelos que estiman la profundidad basados en Campos Aleatorios de Markov. y. Campos Aleatorios Condicionales (MRF y CRF, respectivamente, por sus siglas en inglés) y en los sitios web de los autores se da acceso libre al código que los implementan. Igualmente podría implementarse un modelo más sencillo utilizando otras técnicas cuyas implementaciones también se encuentran difundidas de manera libre como Boosting y Árboles de Decisión. Por último, este trabajo está lejos de estar completo, pero puede ser un gran inicio para otros proyectos. Los problemas fundamentales que hace falta resolver para completar este proyecto son: la determinación de la posición del robot de una manera más precisa a odometría, la realización del escaneo de manera continua (actualmente el robot gira y frena en cada medición) y la determinación de las posiciones y orientaciones de la cámara y del láser sobre el robot de manera automática.. 33.
(42) Bibliografía [1] F. Vides Cerón, J. Sosa-Dias Pérez. Integración de un sensor láser a la plataforma robótica Mobilerobots – proyecto de grado- Bogotá, Uniandes, 2008. [2] A. Morales Pinzón. Detección y seguimiento de visitante con robot móvil –proyecto de grado-. Bogotá, Uniandes, 2008. [3] A.W. Zhang, S.X. Hu, Y.L Chen, H.Y. Liu, F. Yang, J Liu. Fast Continuous 360 Degree Color 3D Láser Scanner. International Society for Photogramm etry and Remote Sensing, 2008. [4] J. Michels, A. Saxena, A. Y. Ng. High speed obstacle avoidance using monocular vision and reinforcem ent learning. 22nd International Conference on Machine Learning (ICML), 2005. [5] A. D. Hoiem, A. Efros, M. Herbert. Geom etric context from a single image. International Conference on Computer Vision (ICCV), 2005. [6] Gomes-Mota, J., Ribeiro, M. I. A Multi-Layer Mobile Robot Localization Solution using a Láser Scanner on Reconstructed 3D Models. Instituto Superior T écnico/Instituto de Sistemas e Robótica, Lisboa, Portugal, 1998. [7] W. Jiang, J. Lu. Panoram ic 3D Reconstruction by Fusin g Color Intensity and Láser Range Data. Proceedings of the 2006 IEEE International Conference on Robotics and Biomimetics, 2006. [8] A. Saxena, M. Sun, and A. Y. Ng. Learning 3-d scene structure from a single still im age. ICCV Workshop on 3D Representation for Recognition (3dRR-07), 2007. [9] Z. Zhang. A flexible new technique for camera calibration. IEEE Transactions on Pattern Analysis and Machine Intelligence, 22(11):1330-1334, 2000 [10]. D. C. Brown. Close-range camera calibration. Photogrammetric Engineering, 37(8):855–. 866, 1971. [11]. G. Bradski and A. Kaehler, Learning OpenCV: Computer Vision with the OpenCV Library,. 1st ed. O'Reilly Media, Inc., October 2008.. 34.
(43) 35. Apéndice A Software y manual En el CD anexo a este documento se encuentra: •. Los ejecutables de los proyectos “ Calibration”, “Scanner” y “ Visualization”. •. El ejecutable de Java para el visualizador en Java 3D.. •. Un manual para la utilización de los programas generados por este proyecto. •. Los archivos de pruebas e imágenes que se generaron durante la realización de este proyecto.. •. Un documento en Word con el inventario de los archivos mencionados en el punto anterior. 35.
(44)
Documento similar