miércoles, 16 de julio de 2008

Obteniendo la posicion mediante marcas

Buenas,

tras probar el caso anterior, en la negación sin marcas se observa que la odometria comente ciertos errores de medición.

Ahora, se plantea un caso de estudio, donde el robot va navegando normalmente y cuando se encuentra una marca calcula su posición en el mapa con respecto la posición global de la marca en el mapa. Aparte, cada vez que detecta una marca muestra la información por pantalla y añade una entrada en un log con la siguiente información:

-Fecha y hora en que se ha encontrado la marca
-Posición del robot en el mapa que se estima mediante el odómetro y el giroscopio.
-Posición del robot en el mapa que estima mediante la información que le aporta la marca.

Con esto, aparte de poder depurar de forma visual en tiempo de ejecución, se proporciona un log que se puede consultar a posteriori para hacer comparaciones. En la siguiente figura se puede observar lo comentado anteriormente.



Para la prueba se ha situado la marca a un metro del robot y el error aproximado según se observa en las entradas del log es de unos 30-50 milímetros como máximo Lo cual parece un resultado positivo para trabajar en futuros modos de funcionamiento que usen esta información para tomar determinadas decisiones.

Como comentario, cabe anotar que se ha sustituido el uso de jpegLib por OpenCV [1], ya que tiene una mayor funcionalidad y en nuestro caso nos permitirá operaciones como:
-Añadir información al frame(como texto o formas básicas)
-Realizar diferentes transformaciones (lo que se ha usado para realizarle un flip vertical a la imagen, pues la capturadora la proporciona invertida)
-Guardar un frame en diferentes formas (aparte del jpeg).
-Mostrar la imagen en una ventana de forma sencilla.

[1] http://sourceforge.net/projects/opencvlibrary/

2 comentarios:

BiG_FooT dijo...

Mmmm Tiene muy buena pinta.

Mi compañero y yo tambien estamos mirando que podemos hacer con realidad aumentada para el proximo año.

Pero lo de combinarlo con un robot es ya cojonudo... Mucho nivel!!!

La programacion del robot tambien la llevas tu o simplemente tu recoges datos de las marcas y se los pasas a su unidad para que el decida como moverse?

Hasta luego!!

PD:Sorry por los acentos, cosas de este puto pc!!

Alberto Corrales Garcia dijo...

Buenas y bienvenidos al mundo de la realidad aumentada ;-).

Pues la programación del robot también la manejo. El problema a tratar consiste en que el robot en entornos reales tiene errores de odometria que van acumulando(vamos, que le dices que avance 3 metros pero avanza 2.5, y con los giros igual). Si este error se va acumulando la navegación se hace imposible porque piensa que está en una posición en la que no esta.

Por esto, en mi proyecto sitúo ciertas marcas en el entorno y cuando el robot las ve decide si le aportan información útil y se recalibra (en función de la medida acumulada del odómetro y el giroscopio o la distancia a la que detecta la marca). Hasta aquí lo he probado y las aportaciones son bastante positivas.

Por otro lado también tengo en mente realizar una estrategia donde trabaje sin mapa y las marcas en sí definan una ruta. El robot sólo debería ir buscándolas y siguiéndolas en orden.

Aparte de la robótica, la RA se puede aplicar a muchisimos campos. Si manejas el tema de gráficos da mucho juego, por ejemplo, un vídeo juego con realidad aumentada.

Mira los vídeos que hay en youtube a ver si te inspira alguno.

Saludos y suerte en vuestro proyecto.

P.D. A ver si os hacéis un blog y podemos seguir la evolución ;D