lunes, 25 de febrero de 2008

Augmented Reality Aracnophobia Therapy

Hola a todos de nuevo,

ya adentrándome un poco en el mundo Artoolkit he realizado un trabajo para ponerlo en funcionamiento y hacer algunas pruebas. Primero, para quien le interese haré una breve descripción sobre "qué es Artoolkit" y "cómo se instala" (si ya lo conoce puede saltar este paso).

¿Qué es Artoolkit?
ArToolKit es un conjunto de librerías para C/C++ que sirven para la creación de aplicaciones de realidad aumentada. Para ello proporciona una serie de funciones para la captura de vídeo y para la búsqueda de ciertos patrones, en las imágenes capturadas, mediante técnicas de visión por computador. También proporciona una serie de ejemplos y utilidades de gran ayuda al programador que quiera realizar este tipo de aplicaciones.

Instalación y puesta en marcha de Artoolkit
A continuación se detalla cómo se ha realizado la instalación y puesta en marcha de Artoolkit en su última versión (2.72.1) bajo Windows XP usando el entorno Visual Studio .NET 2003 en C++.

Prerequisitos:
- Entorno de desarrollo: donde se ha usado .NET 2003 pero también es posible usar Microsoft Visual Studio 6
- DSVideoLib-0.0.8b-win32: librería usada para controlar la comunicación con el driver de la cámara.
- GLUT: con el kit estas librerías deberían estar en los siguientes directorios si no existieran ya:
  • glut32.dll en c:\widows\system32
  • glut.dll en C:\widows\system
  • glut.h en (*)\Include\gl\
  • glut32.lib en (*)\Lib\
- DirectX Runtime: librerías de DirectX en su versión 9.0b o posterior
- Entrada de vídeo: en este caso mediante una cámara web (hay que apreciar que para el correcto funcionamiento si se tiene otra fuente de vídeo, como pudiera ser una capturadora de televisión, es necesario deshabilitarla).
- OpenVRML-0.14.3-win32: para trabajar con VRML como será el caso.
*Nota: para nuestro caso (*) se corresponde con la ruta “C:\Archivos de programa\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK”


Instalación:
Para poner en marcha Artoolkit, se recomienda seguir los siguientes pasos, aunque algunos en esta última versión ya vienen configurados dentro del directorio de Artoolkit:

1. Descomprimir ARToolKit.zip en cualquier directorio, siempre y cuando el directorio que contenga todo se llame ARToolKit.
2. Descomprimir DSVideoLib zip dentro {ARToolKit}. Asegurarse de que este directorio se llama "DSVL".
3. Copiar los archivos DSVL.dll y DSVLd.dll desde {ARToolKit}\DSVL\bin dentro de {ARToolKit}\bin.
4. Instalar GLUT DLL dentro de la carpeta de Windows System32, y la librería y cabeceras dentro de las carpetas de la plataforma VS SDK .
5. Ejercutar el script {ARToolKit}\Configure.win32.bat para crear include/AR/config.h.
6. Abrir ARToolKit.sln (VS.NET) o ARToolkit.dsw (VS6).
7. Ejecutar Artoolkit.
8. La libreria de renderizado de VRML y el ejemplo son opcionales pero para nuestro caso necesarios:
9. Descomprimir OpenVRML zip dentro de {ARToolKit}.
10. Copiar js32.dll desde {ARToolKit}\OpenVRML\bin dentro de {ARToolKit}\bin.
11. Habilitar libARvrml y simpleVRML projects en el controlador de configuración del VS.

Caso de estudio
En nuestro caso pretendemos que cuando la cámara detecte determinados patrones, superponga modelos VRML de arácnidos, dando lugar a una realidad aumentada que mezcle el entorno real con estos modelos virtuales añadidos.
Para esto vamos a trabajar sobre el ejemplo “simpleVRML.vcproj” ubicado en “ARToolKit\examples\simpleVRML”.
Para que funcione correctamente en dicho directorio necesitamos tener las carpetas “Data” (que contiene datos de configuración, patronest, etc) y “Wrl” (que contiene los archivos VRML y los datos de configuración de estos). Estos directorios se encuentran {Artoolkit}/bin/.
Una vez hecho esto, iniciamos Visual Studio .Net 2003 y abrimos un nuevo proyecto, donde uscaremos en la siguiente ruta ARToolKit\examples\simpleVRML\ simpleVRML.vcproj
Al ejecutar el proyecto debe aparecer una ventana que nos deja personalizar los parámetros de la cámara y posteriormente la imagen capturada por la cámara. Ahora cuando detecte algún patrón de los configurados mostrará añadirá información a la imagen capturada con la imagen virtual. En el siguiente ejemplo se aprecia cómo en un entorno real introduce una abeja volando cuando detecta el patrón “hiro”, que básicamente consiste en un modelo VRML.

Con todo esto ya sólo faltaría encontrar unos modelos de arañas para nuestro caso de estudio y modificar los archivos de configuración para que los muestre de acuerdo con los patrones que asociemos a cada uno.
Para esto, primero modificamos el en ARToolKit\examples\simpleVRML\Data\ el archivo object_data_vrml con el notepad de la siguiente manera:

#the number of patterns to be recognized
3

#pattern 1
VRML Wrl/spider1.dat

Data/patt.kanji

80.0
0.0 0.0

#pattern 2
VRML
Wrl/spider2.dat

Data/patt.hiro
80.0
0.0 0.0

#pattern 3

VRML Wrl/spider3.dat

Data/patt.sample1
80.0
0.0 0.0

Y también habría que modificar los archivos .dat con el archivo .wrl que carga y las transformaciones que le realizará. Por ejemplo para el ejemplo 1 (spider1.dat) sería:

spider1.wrl 0.0 0.0 50.0
# Translation
0.0 0.0 0.0 0.0
# Rotation
5 5 5
# Scale

En total se han realizado tres casos, una araña estática (para ponerla en la pared o una mano), otra con movimiento de translación (para que se mueva por el suelo) y otra que cuelga de un hilo y sube o baja (para ponerla en una pared).

Resultados:

Para los tres casos desarrollados estos son los resultados visuales:
Para el ejemplo 1 (araña estática):

Para el ejemplo 2 (araña en movimiento)

Como puede observarse en este ejemplo se ha creado un polígono que oculta el patrón, este método podría ser usado para ocultar las marcas con la textura de la zona donde se pone la
marca, así incrementaría la sensación de realidad.
Para el Ejemplo 3 (que sube y baja sobre su hilo):
Observaciones:
Todo este desarrollo podría aplicar en cámara web sobre la cabeza del usuario que realice las funciones descritas de realidad aumentada y un visiocasco de realidad virtual para incrementar la sensación de realidad que percibe el usuario. Algo parecido a como se muestra en la figura siguiente.


Y de momento esto es todo, espero que os haya gustado e incluso os pueda ser de utilidad.

saludos,
Alberto.

8 comentarios:

Jon B dijo...

Hola Alberto, quería preguntarte, si tienes los archivos fuentes de estos ejemplos; Estoy en un proyecto en la facultad y la propuesta que quiero presentar tiene que ver con la realidad aumentada. El problema es que estoy lidiando poco a poco con VS y no soy programador (estudio diseño multimedia). He intentado recrear lo que aquí explicas, pero aún sin suerte (errores en en el build). Por ahora trabajo con vs6, no se si quizás sea ese el problema. Desde ya, muchísimas gracias, dejo mi correo por cualquier cosa.
bj.lotus@gmail.com

Jonatan

Unknown dijo...

Buenas Alberto.Estoy pensando en realizar mi PFC sobre alguna aplicacion con AR. No he programado nunca en .net y te querria pedir el codigo fuente que has usado en tu PFC para tenerlo como referencia. Ademas si me puedes indicar algun manual de .net que sepas que me pueda ser util te lo agredeceria mucho.
Mi correo es mariomulajordan@gmail.com

Gracias de antemano.

Mario Mula

Unknown dijo...

hola Alberto, estoy realizando m trabajo final con realidad aumentada.
ya logre trabajar con artoolkit y mostrar mis primeras imagenes en formato vrml.
Es un tema muy emocionante.
Mi pregunta es con que tendria que trabajar para mostrar información(texto) en lugar de una imagen, por favor si alguna vez lo hiciste espero tu respuesta.
correo:mmarielap_15@hotmail.com

Unknown dijo...

Muchas gracias Alberto por contestarme, voy a probar con los consejos que me diste
mariela-jujuy-Argentina

Anónimo dijo...

Hola Alberto!! Estoy metida en un proyecto de realidad aumentada.
Mi pregunta es bastante similar a la de Mariela. Con que debería trabajar para insertar información o imagenes q no esten en formato .vrml?
Muchas gracias de antemano :)

Alberto Corrales Garcia dijo...

Hola maria te remito aqui la respuesta que contesté a mariela, por si pudiera ser de utilidad para alguien más.

-----------------------------------
Hola Mariela,

me alegro de que te parezca emocionante el tema de la realidad aumentada, pues yo comparto ese agrado por esta temática. En cuanto al asunto de mostrar texto, tienes varias opciones. Para mi caso concreto usaba ARToolKitPlus+OpenCV para mostrar la imagen por pantalla y si se quiere mostrar texto solo tienes que hacer una llamada a una función muy facilita de OpenCV. Si no te quieres salir mucho de cómo lo hace artoolkit, te recomiendo que mires los ejemplos que trae, pues en alguno de ellos muestra texto en la ventana de la imagen para mostrar las coordenadas. Me imagino que esto lo hará con llamadas a funciones de OpenGL y seguro que no tiene que ser muy difícil.

1 Saludo y suerte con tu trabajo,

-----------------------------------

El framework de Artoolkit lo puedes consultar en http://www.hitl.washington.edu/artoolkit/documentation/devframework.htm.

Espero que te sea de utilidad,

1Saludo.

Anónimo dijo...

Muchas gracias Alberto! :)

Anónimo dijo...

Hola Alberto,

Has comentado que se puede cambiar la entrada. Es decir, que venga de otra camara o de un fichero (.avi por ejemplo).

¿Como lo cargarias desde un fichero .avi, por ejemplo?

Muchas gracias por adelantado, Fer.