Navegacion autonoma reactiva en pasillos usando el punto de fuga

6

Click here to load reader

description

Articulo presentado en el primer Seminario de Mecatrónica de la UAO en Cali, Colombia

Transcript of Navegacion autonoma reactiva en pasillos usando el punto de fuga

Page 1: Navegacion autonoma reactiva en pasillos usando el punto de fuga

Seminario de Mecatrónica UAO 2010

Abstract— Este artículo presenta una estrategia de navegación para robots en entornos estructurados, específicamente pasillos y corredores, usando visión y procesamiento de imágenes para identificar el punto de fuga, característica propia de la perspectiva paralela. Se ha utilizado una arquitectura basada en comportamientos con el fin de posibilitar la integración de otras tareas y estrategias asociadas a la navegación, como la evasión de obstáculos, fortaleciendo así la modularidad y escalabilidad de la propuesta.

Index Terms— Robótica, visión artificial, perspectiva, punto de fuga, navegación, localización.

I. INTRODUCCIÓN

a tarea de navegación en robótica móvil es un tema bastante explorado, puesto que no es una tarea trivial

para ser resuelta por sistemas autónomos. La navegación involucra una interacción del robot con el entorno, por lo que las labores de control se dificultan ya que no dependen exclusivamente del estado interno del robot (información propioceptiva); es necesario conocer la respuesta del entorno a estas interacciones (información exteroceptiva). Sin embargo para ello será necesario modelar el entorno, que de por sí es complejo y además dinámico, cambiante en el tiempo. Por otro lado, la tarea de navegación involucra también conocer a priori la localización del robot, la cual es otra tarea compleja de resolver. Debido a esto existen diversas estrategias que han sido planteadas para la tarea de navegación. Esquemas basados en el estado interno del robot como la odometría no resultan eficientes y robustos debido a los errores acumulativos de este tipo de sistemas. Sin embargo son métodos sencillos de implementar y además de bajo costo. Se observa por lo tanto un enfoque en el que se utilizan estrategias para mejorar el desempeño de estos sistemas odométricos a partir de información de otras fuentes sensoriales. Esto motiva a usar referencias externas como base para corregir lecturas de los sistemas odométricos. Así, se aprovecha información exteroceptiva para fortalecer la localización basada en información propioceptiva.

L

El uso de visión artificial se ha vuelto frecuente para implementar estas estrategias. En la actualidad es común ver

Artículo enviado el 12 de Abril, 2010.Alejandro M. Pustowka es estudiante de Maestría en la Escuela de

Ingeniería Eléctrica y Electrónica de la Universidad del Valle, Cali, Colombia, y pertenece al grupo de Investigación "Percepción y Sistemas Inteligentes" de la misma universidad (e-mail: [email protected]).

Eduardo F. Caicedo está con la Escuela de Ingeniería Eléctrica y Electrónica de la Universidad del Valle, Cali, Colombia, y es el director del grupo de investigación "Percepción y Sistemas Inteligentes" de la misma universidad (e-mail: [email protected]).

robots dotados de sistemas de visión artificial, debido a la cantidad de información que una cámara puede extraer del entorno, y gracias también al acelerado desarrollo de plataformas hardware para un rápido procesamiento de los datos. Es natural entonces encontrar estrategias basadas en detección de marcas en el terreno, tanto artificiales como naturales, que le permiten al robot tener una referencia con la cual corregir su localización y facilitar las tareas de navegación. Específicamente en entornos estructurados, es posible aprovechar las características inherentes de este tipo de ambientes para identificar marcas naturales. Un ejemplo claro de ello es el punto de fuga, que brevemente se puede definir como el punto en el horizonte infinito hacia donde tienden las líneas paralelas del entorno. Este efecto es una característica de la técnica de perspectiva, que consiste en dotar de sensación de profundidad a imágenes en 2D.

El trabajo descrito en este artículo consiste en la navegación autónoma de un robot móvil diferencial a través de pasillos, guiado exclusivamente por el punto de fuga encontrado en la imagen proveída por una cámara a bordo del robot. Se utiliza odometría para la tarea de localización y una arquitectura de control reactiva, basada en el paradigma de comportamientos. El punto de fuga se utiliza como referencia en la tarea de navegación. El artículo se encuentra organizado de la siguiente manera: En antecedentes se resumen los trabajos realizados en la misma área. La sección tres presenta el método utilizado para hallar el punto de fuga mediante técnicas de procesamiento de imágenes. La sección cuatro define la técnica de navegación utilizada a partir del punto de fuga encontrado. La sección cinco describe la plataforma de experimentación utilizada para validar la estrategia, y las pruebas y experimentos realizados se muestran en la sección siguiente. El artículo finaliza con las secciones siete y ocho, donde se tratan las observaciones y conclusiones del trabajo realizado, y se define el trabajo futuro.

II.ANTECEDENTES

La utilización del punto de fuga no es una estrategia nueva para las tareas de navegación de un robot móvil. Existen diversos trabajos en la literatura que presentan esta estrategia para la navegación en entornos estructurados [1][7], así como navegación a partir de marcas naturales en el terreno [2][3].

Los enfoques comúnmente utilizados encuentran el punto de fuga aprovechando los altos contrastes de la escena. Es posible identificar entonces líneas en el entorno, para lo cual es necesario en primer lugar aplicar un algoritmo de detección de bordes. Esta tarea se realiza por lo general usando el filtro Canny, tal y como se muestra en [1]. Sin

1

Alejandro M. Pustowka*, Eduardo F. Caicedo

Navegación autónoma reactiva en pasillos usando el punto de fuga

Page 2: Navegacion autonoma reactiva en pasillos usando el punto de fuga

Seminario de Mecatrónica UAO 2010

embargo existen otras técnicas, como en [2], en donde se utiliza un algoritmo de análisis de texturas para establecer la orientación de las mismas y posteriormente, mediante un sistema de votación, elegir el punto de fuga a partir de los cruces de orientaciones. Se puede entonces evidenciar que los algoritmos comúnmente se ejecutan en dos etapas. La primera etapa permite extraer ciertas características del terreno que permitan inferir la perspectiva de la escena. Posteriormente se calculan los cruces o densidades de estas características, asumiendo que el punto de fuga se encuentra en la zona de mayor concentración de estos puntos. En [1] la segunda etapa (identificación del punto de fuga) se calcula de manera iterativa, encontrando el promedio de los puntos de cruce y posteriormente evaluando para cada punto que tan alejado está del promedio. Si este valor sobrepasa un límite, el punto es descartado y el promedio es calculado nuevamente. Este proceso se repite hasta alcanzar una convergencia de distancias mínimas aceptable. En [4] y [5] se aplica RANSAC para hallar el punto de fuga, el cual es un método iterativo que permite obtener los parámetros de un modelo matemático a partir de datos que contienen valores atípicos (denominados outliers) [10]. Por otro lado, la transformada de Hough puede aplicarse iterativamente para hallar puntos de cruce, tal y como se muestra en [6]. Sin embargo esta técnica se debe utilizar con cuidado, ya que la transformada de Hough es un algoritmo que puede consumir más recursos que las técnicas iterativas anteriormente presentadas.

III. CÁLCULO DEL PUNTO DE FUGA

El punto de fuga es una característica propia de la técnica conocida como perspectiva, que consiste en la representación gráfica que otorga la sensación de profundidad a imágenes 2D. Específicamente la denominada Perspectiva frontal o paralela es la que resulta de interés en este trabajo, debido a que define un único punto de fuga en la imagen, al cual confluyen todas las líneas paralelas en dirección al horizonte. La fig. 1 ilustra este efecto. La perspectiva está presente en imágenes tomadas de una cámara, debido a que éstas son una fiel representación en 2D de una escena 3D. Por lo tanto, en entornos estructurados es posible utilizar el fenómeno de perspectiva en donde estén presentes formas regulares de objetos.

Fig. 1. Punto de fuga en perspectiva frontal [9]

La definición del punto de fuga da ciertos lineamientos para definir el método de búsqueda a partir de procesamiento de imágenes. Es necesario extraer las líneas de la imagen, hallar sus puntos de cruce, para finalmente encontrar el punto de mayor concentración de cruces, donde estará localizado el punto de fuga.

El método aquí planteado consta de las siguientes etapas:

1. Adquisición de la imagen.2. Detección de bordes.3. Extracción de líneas.4. Selección de líneas válidas.5. Identificación de puntos de cruce.6. Identificación del punto de fuga

A continuación se describen brevemente estas etapas.

A. Adquisición de la imagen

Esta etapa es completamente dependiente de la implementación hardware que se tenga del sistema. En la sección cinco se describen los recursos utilizados en este proyecto y se plantea el proceso definido para obtener la imagen en formato digital JPEG. La frecuencia de adquisición tiene gran influencia en el desempeño de esta estrategia de navegación, por lo que una pobre tasa de cuadros por segundo implicará fluctuaciones en la trayectoria del robot.

B. Detección de Bordes

Los bordes corresponden a las componentes de alta frecuencia de la imagen. Se ha utilizado el filtro Canny para implementar la detección de bordes. Este filtro actúa sobre imágenes en escala de grises, por lo que es necesario realizar una transformación del espacio de color de la imagen de la anterior etapa. El filtro de Canny utiliza tres parámetros que definen el comportamiento del algoritmo [12]. Dos de los parámetros se definen heurísticamente, el límite inferior y superior. El tercero, que consiste en la ventana de la convolución gaussiana, se establece en 3 (ventana de 3x3) con el fin de limitar la carga computacional del algoritmo. El filtro entrega una imagen binarizada, señalando los bordes identificados.

C. Extracción de líneas

Sobre la imagen binaria de la anterior etapa se aplica un algoritmo de extracción de características para identificar las líneas presentes. Se ha utilizado la transformada de Hough [12], que identifica líneas en la imagen y las modela a partir de dos parámetros (ρ y θ) que permiten calcular la ecuación de la recta con respecto al origen, como se muestra en la fig. 2. Esta etapa retorna un arreglo de parámetros que modelan las rectas existentes en la imagen.

2

Page 3: Navegacion autonoma reactiva en pasillos usando el punto de fuga

Seminario de Mecatrónica UAO 2010

Fig. 2. Modelo de línea obtenido por la transformada de Hough

D. Selección de líneas válidas

Una vez identificado las líneas en el algoritmo, se procede a clasificarlas, para eliminar aquellas que no aporten a la definición del punto de fuga de la imagen. Para ello, se han descartado líneas horizontales y verticales, puesto que en términos generales son las que menos aportan a la identificación de perspectiva. Este procedimiento se ha realizado comparando el ángulo de la línea con respecto al eje x de la imagen, que corresponde al ancho de la misma. En (1) y (2) se puede observar la clasificación realizada, en donde θli representa el ángulo de la línea i-ésima del arreglo de líneas identificadas. Se observa que para la clasificación se utiliza un rango de ángulos, definido por un límite m. Este límite también es seleccionado por heurística.

0 °ml i90 °−m (1)

−90°mli0°−m (2)

Esta etapa retorna un arreglo conteniendo únicamente las líneas consideradas válidas.

E. Identificación de puntos de cruce

Con las líneas válidas se procede a encontrar los puntos de cruce entre líneas. Es necesario realizar una preselección de los puntos de cruce. Sólo serán válidos los cruces de líneas cuyas diferencias en ángulo sean mayores a un límite predeterminado, denominado p. De esta manera se corrige el efecto de puntos de cruce generados por múltiples líneas que aparecen para un solo borde detectado. (3) ilustra la evaluación realizada a la diferencia de los ángulos de las líneas i-ésima y k-ésima.

∣li−l k∣p (3)

Asimismo, los cruces producidos por fuera de los rangos de la imagen son descartados. Esto implica que solamente se considerarán los puntos de fuga que se encuentren en la imagen, no fuera de ella. Esta etapa entrega entonces un arreglo con las coordenadas de los puntos de cruce válidos.

F. Identificación del punto de fuga

En esta etapa se probaron diferentes estrategias, partiendo

desde un simple promedio aritmético de la posición de los cruces, hasta la estrategia que mejor resultados entregó, que consistió en una función de costo a partir de la distancia entre cruces. El promedio aritmético de posición de cruces fue inmediatamente descartado como una estrategia válida, ya que presenta muchos errores cuando aparecen líneas que no cruzan por el punto de fuga. Por lo tanto, se aplicó una segunda estrategia, que consistió en un promedio iterativo junto con un índice de fidelidad del promedio. El índice aumenta por cada cruce que entra a formar parte del promedio, si este cruce se encuentra en la vecindad del promedio. Por el contrario, el índice disminuye por cada cruce que se encuentre por fuera de la vecindad del promedio. En caso de que el índice alcance un valor muy bajo, el promedio se inicializa nuevamente con el siguiente cruce. Este método se basa en que la mayor densidad de cruces se encuentra en la vecindad del punto de fuga. Se asume también que existen suficientes cruces, de tal manera que se presente convergencia. Este método entregó mejores resultados que el promedio aritmético simple, sin embargo no era suficientemente preciso y robusto. El tercer y último método otorgó los mejores resultados. Se utilizó una función de costo, asociada a la distancia de un punto en la imagen con respecto a todos los puntos de cruce. El punto de fuga deberá estar localizado en el punto en donde existe la menor distancia a los puntos de cruce; esto asumiendo nuevamente que la mayor densidad de puntos de cruce se encuentra en la vecindad del punto de fuga. Ya que verificar todos los puntos de la imagen resulta computacionalmente costoso (en una imagen de 640x480 esto equivale a 307.200 x número de cruces), se asume que el punto de fuga se encuentra en alguno de los puntos de cruce encontrados. Por lo tanto, resta encontrar el punto de cruce cuya función de costo sea menor.

Cada punto de cruce es una dupla x-y como lo muestra (4).

C i=x i , y i (4)

La función de costo asociada al punto de cruce Ci se calcula de acuerdo a (5). Es necesario calcular la distancia entre puntos, según (6).

f C i=∑

k=1

n

dist C i ,C k (5)

dist P1, P2=x P1−x P22 y P1− y P2

2 (6)

En la función de costo (5) n representa el número total de cruces que existen en la imagen. El punto Ci cuya función de costo asociada sea la menor será el seleccionado como el punto de fuga Cvp, tal como lo muestra (7).

C vp=C i ,min f C i (7)

Si el punto de fuga no es correctamente detectado (por ejemplo en el caso en que no se hayan detectado líneas o cruces en la imagen) el algoritmo devolverá la posición (-1,-1), un punto por fuera de las coordenadas de la imagen, y

3

Page 4: Navegacion autonoma reactiva en pasillos usando el punto de fuga

Seminario de Mecatrónica UAO 2010

esta medida no será tomada en cuenta en las técnicas de navegación descritas posteriormente.

Adicionalmente a calcular el punto de fuga, se han establecido unas métricas para estimar la fidelidad de la medida del punto de fuga. Para ello se ha utilizado una función de costo q, modelada según (8).

qvp=k 1⋅nk2 z (8)

Donde n es el número total de cruces que existen en la imagen, y z el número de cruces que se presentan en la vecindad del punto de fuga que se calcula según (9) y (10).

z=∑k=1

n

V Ck (9)

V C k ={1, si dist C i ,C k Dmax

0, si dist C i ,C k Dmax} (10)

Dmax en (1) representa una constante establecida por el usuario.

La fig. 3 ilustra gráficamente las etapas del algoritmo previamente descrito.

(a) (b)

(c) (d)

(e) (f)Fig. 3. Cálculo del punto de fuga, donde (a) es la imagen original, (b) es la imagen luego de aplicar un filtro Canny para extracción de bordes, (c) es la imagen luego de aplicar transformada Hough para hallar líneas en la imagen, (d) resulta luego que se han filtrado las líneas horizontales y verticales y se han calculado los cruces e intersecciones de líneas, (e) es un acercamiento a

los cruces, en donde se pueden ver éstos en color verde, y el punto de fuga calculado en color azul. (f) es la imagen final en donde se encuentra localizado el punto de fuga del pasillo.

IV. NAVEGACIÓN REACTIVA A PARTIR DEL PUNTO DE FUGA

La arquitectura de control utilizada para lograr la navegación del robot está basada en comportamientos reactivos. La estrategia a seguir para lograr navegación autónoma usando el punto de fuga ha sido la de mantener éste en el punto medio del ancho de la imagen. Se han establecido dos enfoques para el control. El primero de ellos es reactivo puro, en el cual se definen dos comportamientos para el robot, forward (ir adelante) que genera un vector de movimiento en la dirección de orientación del robot, y un comportamiento que utiliza la localización del punto de fuga, denominado VPmaintain, que genera un vector de movimiento en la dirección que permita mantener el punto de fuga en el punto medio del ancho de la imagen. Este enfoque no utiliza la odometría del robot para tareas de localización. El robot se guía exclusivamente por el punto de fuga.

El segundo enfoque es más robusto en cuanto a que uno de los comportamientos (VPmap) realiza un mapeo del punto de fuga en el plano coordenado del robot, siempre a una distancia fija con respecto a la posición del robot. Este punto se utiliza entonces como atractor, y se emplea el comportamiento GoToPoint (ir a punto) para la navegación. Ya que constantemente este punto se esta actualizando, conforme se detecte el punto de fuga, el robot no alcanzará este punto hasta que deje de ser efectivamente detectado.

Las pilas de comportamiento para los dos enfoques previamente descritos se pueden observar en la fig. 4.

(a)

(b)

Fig. 4. Pila de comportamientos de los dos enfoques. (a) reactivo puro, (b) reactivo con localización por odometría y mapeo del punto de fuga.

La implementación de los dos comportamientos concernientes con el punto de fuga, VPmap y VPmaintain se explican a continuación. A partir del punto de fuga encontrado (11) , se calcula la distancia de su coordenada x con respecto al centro de la imagen, y se divide por la distancia en pixeles al centro de la imagen, como se muestra en (12). La coordenada y no es tomada en consideración. De esta manera se obtiene un vector de 0 a 1, donde 1 representa la máxima distancia a la que puede estar el robot con respecto del punto de fuga. Este vector es el utilizado por el

4

Page 5: Navegacion autonoma reactiva en pasillos usando el punto de fuga

Seminario de Mecatrónica UAO 2010

comportamiento VPMaintain para generar las acciones motoras necesarias para mantener el punto de fuga en el centro de la imagen.

C vp=u , v (11)

r=

w2−u

w2

=1−2uw

(12)

El vector generado a partir del valor de r se puede observar en la fig. 5 (primer vector en la tabla).

Para el comportamiento VPmap son necesarios unos pasos adicionales. A partir de la posición del robot con respecto de su punto de referencia (obtenida por odometría) se mapea el punto de fuga a una distancia predefinida. Conforme el algoritmo de visión detecte el punto de fuga, este punto será actualizado en el mapa y se irá moviendo, manteniendo siempre una distancia fija con respecto a la posición del robot. En el momento que el punto de fuga deje de ser detectado, el robot llegará al último lugar donde fue mapeado el punto de fuga. La fig. 5 y 6 ilustran esta situación.

Fig. 5. Localización del punto meta a partir del punto de fuga detectado

Fig. 6. Vector de dirección calculado a partir del punto de fuga

V. PLATAFORMA DE EXPERIMENTACIÓN

Para las tareas de experimentación se usó la plataforma robótica NXBot de la Escuela de Ingeniería Eléctrica y Electrónica de la Universidad del Valle. El robot cuenta con un Sistema Operativo Linux y ejecuta el servidor Player de interfaces robóticas [8]. El cliente de control se encuentra

escrito en Java usando la librería Javaclient2 [11] y se ejecuta desde un computador remoto mediante Wifi, ya que la plataforma robótica cuenta con esta interfaz de comunicación. Además el robot posee una cámara web Logitech Quickcam Pro 9000 conectada a través del puerto USB, la cual tiene capacidad para codificar imágenes en JPEG, acelerando la tasa de cuadros por segundo (hasta 25 cuadros por segundo). Las imágenes capturadas son enviadas al computador usando streaming HTTP, a una tasa de 20 cuadros por segundo. La fig. 7 ilustra el robot utilizado.

(a) (b)Fig. 7. Robot NXBot de la Universidad del Valle

Finalmente el algoritmo de visión usado para localizar el punto de fuga utiliza las librerías cURL para capturar la imagen enviada a través de streaming HTTP, y OpenCV para el respectivo procesamiento de imágenes. Esta interfaz se encuentra escrita en C/C++, por lo que fue necesaria una comunicación a través de sockets para compartir información entre la interfaz de procesamiento de imágenes y la librería de control del robot, escrita en Java. Para las etapas de simulación se utilizó el simulador Stage que hace parte de la suite Player/Stage [8].

VI. PRUEBAS REALIZADAS

Las pruebas fueron realizadas en los pasillos de la Escuela de Ingeniería Eléctrica y Electrónica de la Universidad del Valle. Los valores ajustados para el algoritmo de detección fueron los siguientes:

• Límites del filtro Canny: 50 (min) y 100 (máx). • Factor m de selección de líneas: 10°. • Factor p para identificación de puntos de cruce: 18°.• Distancia fija del punto de fuga con respecto a la

posición del robot: 2 metros.• Cuadros por segundo en la etapa de adquisición: 5.• Tamaño de la imagen: 640x480.• Zona muerta para el control de posición: +- 10°

Se hicieron varias pruebas en tres pasillos y a diferentes horas, sin realizar modificación alguna en el entorno. Para probar el primer enfoque, que era reactivo puro, fue necesario colocar el robot de tal manera que el punto de fuga apareciera en la imagen. Esto con el fin de que el robot percibiera desde el inicio el punto de fuga y fuera capaz de realizar las acciones de control necesarias para la tarea de navegación. Para el otro enfoque no es necesario localizar el robot de tal manera que identifique inicialmente el punto de fuga, pero si es necesario que el primer punto atractor

5

Page 6: Navegacion autonoma reactiva en pasillos usando el punto de fuga

Seminario de Mecatrónica UAO 2010

definido para el comportamiento GoToPoint se encuentre localizado en el área del pasillo. Se han graficado los datos de la posición del punto de fuga con respecto al centro de la imagen para calcular el error de posición. La fig. 8 ilustra estos resultados. Se ha colocado un único ejemplo ya que los resultados de los dos métodos son similares, siempre y cuando se cumplan con las restricciones anteriormente planteadas. Se observa que, una vez el robot se ha orientado con respecto al punto de referencia, mantiene esta orientación con una desviación estándar aproximada de 35 px., y es capaz de recuperarse frente a disturbios externos (fig. 8). La zona muerta en la gráfica define las orientaciones en las que el control de posición no actúa. Se ha inducido un disturbio, que no es más que una fuerza externa aplicada sobre el robot, obligándolo a seguir otra trayectoria. Se observa que el control de orientación permite que el robot vuelva a su punto de referencia.

Fig. 8. Error de posición con respecto al centro de la imagen

VII. OBSERVACIONES Y CONCLUSIONES

Los dos enfoques, VPMaintain/Forward y VPMap/GotoPoint funcionaron correctamente. El robot fue capaz de navegar a través de los pasillos probados. Sin embargo el segundo enfoque (mapeo del punto de fuga y localización por odometría) fue mucho más robusto que el primero, debido a que éste no es afectado por las situaciones en las que el punto de fuga no es detectado, ya que recuerda el último punto detectado, mapeado en su plano coordenado.

El algoritmo de detección por su parte demostró suficiente robustez, ya que luego de afinados los parámetros, no fue necesario modificarlos más, aún cuando se utilizara el sistema en otro pasillo, o se trabajara con poca luz. Además, el sistema es robusto frente al cambio dinámico en la imagen, debida a objetos en movimiento en el campo de vista. Las pruebas fueron realizadas en jornada estudiantil, por lo que hubo circulación de personal. Esto no afectó al algoritmo, como se puede observar en las gráficas de la anterior sección.

La velocidad de procesamiento del algoritmo, así como la capacidad de respuesta del control están intimamente ligados con la tasa de cuadros por segundo en la etapa de adquisición, el tamaño de la imagen procesada y la zona muerta definida para la variable de orientación del robot. Una mayor tasa de cuadros por segundo y una imagen de menor resolución tienen un impacto positivo en la duración del algoritmo. Una zona muerta mayor genera mayores oscilaciones en el control de orientación.

Los errores presentados son mínimos siempre y cuando los objetos dinámicos detectados en el campo visual se muevan

lejos del robot. Cuando estos objetos ocupan gran parte del campo visual de la cámara (oclusión del campo visual), el algoritmo fracasará después de un determinado tiempo, al ser incapaz de detectar las líneas necesarias para detectar el punto de fuga.

Gracias a la arquitectura utilizada, es posible añadir nuevos comportamientos para que el robot realice otras tareas, como por ejemplo evasión de obstáculos, entre otras.

VIII.TRABAJO FUTURO

Los resultados satisfactorios de este trabajo permiten pensar en una fusión de este método con la información de un mapa a priori del lugar. De esta manera, es posible corregir la odometría, al poder definir referencias en el mapa y contrastar con las posiciones facilitadas por el sistema odométrico. Aún más, es posible utilizar la localización del punto de fuga para estimar las variaciones de orientación del robot, también con el fin de corregir la odometría, ya que ésta presenta los errores más elevados en la variable de orientación. Por otro lado, en este las pruebas hasta el momento realizadas no se ha utilizado aún la medida de fidelidad de detección del punto de fuga, lo cual puede fortalecer el algoritmo.

AGRADECIMIENTOS

Alejandro M. Pustowka agradece a la Universidad del Valle y a Colciencias (Departamento Administrativo de Ciencia, Tecnología e Innovación) por la beca No. p-2008-0930 otorgada a través del programa "Jóvenes Investigadores".

REFERENCIAS

[1] Bayramoglu Enis, Andersen Nils Axel, Poulsen Niels Kjølstad, Andersen Jens Christian, Ravn Ole , "Mobile Robot Navigation in a Corridor Using Visual Odometry", Prooceedings of the 14th International Conference on Advanced Robotics, 2009.

[2] Rasmussen Christopher, "RoadCompass: following rural roads with vision + ladar using vanishing point tracking", Autonomous Robots, 2008.

[3] Rasmussen Christopher, "Texture-based vanishing point voting for road shape estimation", Darpa grand Challenge, 2004.

[4] Se Stephen, "Zebra-crossing Detection for the Partially Sighted", Computer Vision and Pattern recognition, 2000.

[5] Se Stephen, Brady M., "Vision-based detection of staircases", Fourth Asian Conference on Computer Vision ACCV 2000, 2000.

[6] Tuytelaars Tinne, Proesmans Marc, Van Gool Luc, Mi Esat, "The Cascaded Hough Transform", In Proceedings of ICIP, 1998.

[7] Kasprzak Wlodzimierz, Niemann Heinrich, Wetzel Dirk, "Adaptative road Parameter estimation in monocular image sequences", Proceedings of the conference on British machine vision, 1994.

[8] Collett Toby H. J., MacDonald Bruce A., Gerkey Brian, "Player 2.0: Toward a Practical Robot Programming Framework", Proc. of the Australasian Conf. on Robotics and Automation (ACRA), 2005

[9] "Descripción gráfica del punto de fuga en perspectiva paralela " [online] http://www.kalipedia.com/kalipediamedia/ingenieria/media/200708/22/tecnologia/20070822klpingtcn_173.Ges.SCO.png

[10] "RANSAC: Random Sample Consensus" [online] http://en.wikipedia.org/wiki/RANSAC

[11] "Javaclient for Player/Stage" [online] http://java-player.sourceforge.net/[12] Shapiro, L. and Stockman, G., "Computer Vision", Prentice Hall, pp.

326-338, 2001.

6