Pages - Menu

Páginas

lunes, 7 de octubre de 2013

SISTEMA DE REALIDAD AUMENTADA PARA LA EVASIÓN DE OBSTÁCULOS UTILIZANDO EL MÉTODO DE LA TANGENTE PARTE I

Israel Rivera Zárate, Jesús Pimentel Cruz, Patricia Pérez RomeroCIDETEC - IPN

1. 1 Introducción.
La Realidad Aumentada es una técnica mediante la cual los usuarios pueden percibir la realidad superponiendo a los objetos reales modelos virtuales enriquecidos.

El observador puede trabajar y examinar objetos 3D reales mientras recibe información adicional sobre estos objetos o sobre la tarea que se está realizando. De este modo, la Realidad Aumentada permite al usuario permanecer en contacto con su entorno de trabajo, mientras su foco de atención no está en la computadora, sino en el mundo real. El papel que juega la computadora es el de asistir y mejorar las relaciones e interacciones entre las personas y el mundo real.
1.2 Herramienta ARToolkit.
La Realidad Aumentada consiste en un conjunto de dispositivos que añaden información virtual a la información física ya existente. Esta es la principal diferencia con la realidad virtual, puesto que no sustituye la realidad física, sino que sobreimprime los datos informáticos al mundo real.
Este tipo de tecnología ha avanzado en forma constante, brindando a los usuarios una amplia aplicación de esta en diversa soluciones a problemas que se creían difíciles de atacar. Esta técnica de superposición de imágenes sirve como ayuda para la visualización de objetos que simulen uno real, como por ejemplo un auto, este al ser llevado a un ambiente de RA, por medio de unas gafas especiales el propio dueño, verá su auto con una superposición de este mismo y así puede manipular cada parte para observar el proceso de armado de forma rápida, simple y en tiempo real.
Para esta nueva tecnología se tienen un conjunto de librerías y programas poderosos que brindan un mayor soporte al aplicar este tipo de proyecciones en tiempo real, permitiendo al usuario interactuar de forma más simple, haciendo de la RA algo fácil de emplear. Algunas herramientas de (RA) son: DART (Designers Augmented Reality Toolkit), osGAR y ARToolkit.
Una mejor forma de entender este funcionamiento de la superposición Fig. 1.1 es tener el marcador físico y el objeto que se pretende superponer.






Fig. 1. 1 Muestra figura 3d y nuestro marcador físico.


Después al compilar y ejecutar el conjunto de librerías que las herramientas ya mencionadas nos proporcionan se tiene el reconocimiento del objeto físico y la superposición de la imagen Fig. 1.2.



Fig. 1. 2 Unión de marcador y objeto 3d por medio de ARTtoolkit.
ARToolkit es una estructura simple para crear aplicaciones de Realidad Aumentada en tiempo real, mostrando su practicidad, facilidad y portabilidad, debido a que es una aplicación multiplataforma (Windows, Linux, Mac OS X, SGI). Logrando superponer modelos 3D en marcadores reales (basado en el algoritmo de visión por computadora), permite la captura de video contando con una biblioteca estándar de video, soporta múltiples fuentes de entrada (USB, Firewire, tarjeta de captura), soportando múltiples formatos (RGB\YUV420P, YUV), el múltiple seguimiento rápido y eficaz de la cámara además de una rutina de calibración sencilla, soporta gráficos VRML, cuenta una rápida interpretación basada en OpenGL y además de tener una librería gráfica sencilla (basada en GLUT). [16]
ARToolkit utiliza OpenGL para la parte de representación, GLUT para las ventanas o controlador de eventos, bibliotecas de video de hardware dependiente (API) estándar en cada plataforma en nuestro caso Win32 (Fig. 1.3).




Fig. 1. 3 Arquitectura ARToolKit.
ARToolkit consta de cuatro módulos:

1. Módulo AR contiene las principales rutinas de seguimiento del marcador, la calibración y recolección de parámetros.

2. Módulo de video contiene el conjunto de rutinas para la captura de video de los marcos de entrada. Esta es una envoltura alrededor de la plataforma estándar de rutinas de captura de video SDK.

3. Módulo gsub (Fig. 1.4) es una colección de rutinas gráficas basadas en OpenGL y bibliotecas GLUT.

4. Módulo Gsub_lite ver (Fig. 1.5) este remplaza a gsub con rutinas más eficientes de gráficos, independiente de cualquier conjunto de herramientas.



Fig. 1.4 Estructura jerárquica de ARToolKit utilizando gsub.





Fig. 1. 5 Estructura jerárquica de ARToolKit utilizando Gsub_Lite.



Para una explicación más simple (Fig. 1.6) se muestra un diagrama a pasos simple del funcionamiento de Artoolkit:



Fig. 1. 6 Diagrama de pasos.
Artoolkit maneja diversos formatos de imagen entre cada módulo como RGB24, RGB32, YUV, VUY para esto (Fig.1.7) mostrando un diagrama de flujo de video.


Fig. 1. 7 Diagrama de flujo de datos y formatos que acepta. [17]
1.3 Desarrollo.

En este parte se presentan a detalle el uso de la herramienta, los ejemplos para el recorrido del móvil, además de la visualización de su trayecto, antes se mostraran tres ejemplos: simpleTest, loadMultiple y simpleVRML, donde se encuentran, su ejecución y la parte del programa donde se manda llamar a cada uno, cabe mencionar que estos tres fueron de vital importancia para observar el funcionamiento gráfico de este poderoso software de Realidad Aumentada Artoolkit.
Otro punto importante que se abordara es el uso de los marcadores, la colocación de estos en el área de trabajo, la superposición del móvil y edificios. Se muestra los casos sugeridos para el trayecto, también se observara el modelo del móvil a utilizar y el método que es sugerido para que se realice el trayecto.

1.3.1 simpleTest.
Después de haber instalado exitosamente la herramienta y observar el funcionamiento veremos el primer ejemplo llamado SimpleTest, este se encuentra dentro de Artoolkit en la carpeta Examples/simple, abrimos el código lo compilamos y ejecutamos mostrando la configuración de la cámara como en Fig. 1.8.



Fig. 1.8 Configuración de la cámara.
Se validan los parámetros y si no se muestra enseguida la imagen de la cámara, es necesario ir a la carpeta bin dentro de Artoolkit y buscar SimpleTest.exe y ejecutar, se observara lo siguiente Fig. 1.9.



Fig. 1.9 Funcionamiento real de simpleTest.
Con esta aplicación nos podemos dar una idea general de cómo trabaja nuestra herramienta, además podemos observar, que esta solamente permite trabajar con un solo marcador y una imagen.
En la Fig. 1.10 se detalla la parte del código que permite tomar el archivo de texto que contiene las características del marcador a reconocer.



Fig. 1.10 Archivo que sirve para saber que marcador se esta utilizando.
En la Fig. 1.11 se observa un ciclo que maneja una variable ‘j’ que se inicializa en 0 para la comparación con marker_num(numero de marcadores) y ‘k’ inicializada en -1 sirviendo como bandera para que el bucle continúe o se detenga.





Fig.1.11 Ciclo que muestra la cantidad de marcadores para asignar un gráfico.
En el círculo más grande se observa el ciclo for, que detecta el número de marcadores que se encuentran y en el círculo más chico la función draw que contiene las características principales del marcador para la colocación del gráfico.
1.3.2 load Múltiple.

Para utilizar una amplia variedad de imágenes y marcadores se puede ejecutar loadMultiple que permite tener no solo uno sino dos marcadores ver Fig. 1.12. Con su respectiva imagen.


Fig. 1.12 Ejemplo de loadMultiple.
Este ejemplo se encuentra dentro de bin al igual que el primer ejemplo. Se muestra en la Fig. 1.13 parte del programa que manda llamar el archivo que contiene los marcadores a reconocer además de los gráficos.



Fig. 1.13 Llamado a archivo que contiene los marcadores y gráficos.
1.3.3 simpleVRML.
Este programa es de suma importancia porque permite utilizar archivos con extensión VRML, estas son imágenes enriquecidas ya no solo son esferas o cubos sólidos, sino que son capaces de manejar diversas texturas, formas, colores además de movimiento como se muestra en Fig. 1.14.



Fig. 1.14 Este es un modelo que muestra la imagen en movimiento.
En Fig. 1.15 se detalla gráficamente la parte del código en donde se mandan llamar los objetos VRML para que por medio del reconocimiento sean superpuestos en los marcadores detectados.





Fig. 1.15Llamado al archivo que contiene las figuras VRML.

1.3.4 Escenario gráfico.

A continuación se muestra un diagrama ejemplifico en Fig. 1.16 del modelo con la posible colocación de los marcadores y su respectiva imagen en Realidad Aumentada, este servirá de escenario para la visualización del recorrido y la evasión de los objetos por parte del móvil.



Fig. 1.16 Esquema de nuestro modelo.
Cabe mencionar que para los marcadores se emplearon diseños propios así como algunos que la herramienta facilita. En la Fig. 1.17 se observa la imagen capturada por la cámara, que muestra una distribución de los marcadores sin superposición de imágenes como ejemplo.



Fig. 1.17 Captura de marcadores sin superposición.
Con esta distribución, se manda ejecutar el programa de reconocimiento de los marcadores para la superposición de las imágenes mostrando lo siguiente Fig. 1.18.



Fig.1.18 Captura de marcadores con superposición de imagen.
1.3.5 Marcadores utilizados.

En la Fig. 1.19 se observan el conjunto de marcadores o patts utilizados para el modelado del ambiente gráfico, así como para el móvil.


Fig. 1.19 Marcadores.
1.3.6 Móvil.
En esta parte se observará el móvil empleado en el proyecto, este es un modelo virtual que cuenta con circuitos integrados, cuatro ruedas y ejemplificando un todo terreno. Es importante mencionar que este puede cambiarse por cualquier otro pero para dar más realidad al proyecto se manejo este.



Fig. 1.20 Móvil.
1.3.7 Casos a resolver.

Para este trabajo se tiene un móvil, el cuál haga un recorrido, de tal forma que por medio de ciertas reglas este evada los obstáculos (edificios) y llegue a su destino trazado.
Caso 1 Movimiento en Diagonal.
Para nuestro primer caso tendremos la distribución de los marcadores como se ve en Fig. 1.21 para que el móvil detecte los espacios ocupados y así moverse a los lugares libres de tal forma que su movimiento sea diagonal y llegue este a su destino.

Fig. 1.21 Caso 1 camino en diagonal.
Caso 2. Movimiento en línea recta.
Este segundo es mucho más sencillo ya que la distribución de los marcadores cambiara de tal forma que el móvil solo detectara los obstáculos que se encuentren a su derecha e izquierda para trazar su camino en forma lineal y este logre el objetivo final como en Fig. 1.22.

Fig. 1.22 Caso 2 camino lineal.
Caso 3 sin salida.
En este último el vehículo se encontrara situado en una situación muy compleja ya que no tendrá salida ya que sus caminos serán bloqueados por los marcadores ver Fig. 1.23.

Fig. 1.23 Caso 3 sin salida
1.4 Método de la Tangente

En este apartado se expone el algoritmo basado en el método de la tangente para la evasión de obstáculos. Para el enrutamiento se traza una línea recta del centro del móvil al centro del destino llamada r, se trazan perpendiculares a la línea r cada una dirigida al centro de los obstáculos, a esta se le llamara m1, m2,….mn donde n es el número de obstáculos.

Si le tamaño de línea mi (i=1 hasta n), es mayor el radio del móvil más el radio del objeto, se tendrá P como el camino directo al destino.

Si el tamaño del radio mas el radio del móvil es menor, el móvil chocara con el obstáculo. Después se trazará una recta del centro del obstáculo, que vaya de en la misma dirección de mi pero que su distancia sea igual al radio del móvil más el radio del obstáculo, llamándole a esta línea B. el camino partirá del móvil y terminará en el punto final de la línea B, teniendo en cuenta que el centro del móvil será el punto final de B.
1.4.1 Implementación y visualización.

En este apartado mostramos la interpretación del código empleado para mostrar los resultados en la visualización. Para esto se generaron tres condicionamientos para el recorrido del móvil, se tendrá una matriz de 16 la cual se definirá de la siguiente manera:

int Matriz[16] = { ‘v’, ‘v’, ’v’, ’v’, ’v’, ‘e’, ‘v’, ‘e’};
En donde:
v = lugares vacíos.
e = refiriéndose a los edificios.
Para hacer el recorrido se generaron las condiciones siguientes por medio de estructura if-else:

m = 0;

If (Matriz [m+5] == ‘v’)

printf(“el móvil avanza”);

else If (Matriz[m+7] == ‘v’)

printf(“el móvil avanza”);

else if (Matriz[m+6] == ‘v’)

printf(“el móvil avanza”);

else

printf(“el coche se queda”);



La letra m se ubica en la primera posición ver Fig. 1.24 del arreglo refiriéndose al móvil:




+7
E
+6
V
+5
E

V

M

V

V

V



Fig. 1.24 Muestra gráfica de la comparación.
Se puede observar que el camino de este móvil es en línea vertical, ya que al sumar la posición m+6 encontramos que ese lugar esta vacío y por ende es el siguiente espacio donde colocar nuestro móvil. Al mirar este gráfico notamos que al lado derecho de nuestro esquema contamos con más espacios libres, pero el uno de las soluciones en específico es que el móvil se desplace diagonalmente.
Para la visualización del método se integró al código del ejemplo simpleVRML1 para mostrar con claridad la superposición del móvil y su movimiento en nuestros 3 ejemplos.

Tenemos un ciclo for que es el que permite definir el número de objetos que se tienen declarados en el archivo .object_data_vrml, dentro de este se encuentra un if con dos condiciones aquí mostradas:
if ((gObjectData[i].visible != 0) && (gObjectData[i].vrml_id >= 0))
La primera hace referencia a la detección del marcador y la segunda a la cantidad de los objetos por medio de su id, estas al validarse permiten la detección del marcador y la superposición de la imagen.
La función arglCameraViewRH() dentro de nuestro programa se vuelve una parte esencial, por que es la que permite el avance del móvil, al bloquear el marcador donde se superpone la imagen del móvil esta función quita el objeto virtual, apareciendo en el siguiente lugar vacío y así sucesivamente hasta llegar al destino ver Figuras 1.25 a la 1.27.

Fig. 1.25 Imagen en nuestro primer marcador.

Fig. 1.26 Imagen en nuestro segundo marcador.

No hay comentarios:

Publicar un comentario