A Mobile Augmented Reality Framework Based on Reusable Components R. I. Barraza, O. O. Vergara, Senior Member, IEEE, and V. G. Cruz Abstract— In recent years, Augmented Reality (AR) has experienced a great growth in the interest of researchers and general public. Commercial applications such as AR browsers, games, and marketing campaigns are gradually becoming more available; however, the need for a flexible authoring solution still remains. The aim of this paper is to present a novel framework to create marker based augmented reality applications for mobile devices. The framework is composed of five main subsystems: a) presentation: with a game engine as the core component, b) tracking: which performs all the computer vision algorithms, c) interaction: composed of a custom visual editor which processes all the inputs to the framework, d) world model: used to store and provide access to the digital representation of the world, and e) context: used to provide status information of the entire system. All the subsystems were used to provide for users a comprehensive way to develop and share prefabricated objects that allow reusability across applications. A particular case, of an interactive “pARabola plotting” application, is presented to demonstrate the efficiency of the framework. The application was tested in four mobile devices running Android OS. The experimental results demonstrate the ability of the framework to create usable mobile AR applications, observing better visual and interaction results on the higher quality mobile devices. Keywords— Augmented reality, Framework, Reusable components, Mobile devices, Android operating system. L I. INTRODUCCIÓN A REALIDAD AUMENTADA (RA) es un campo de estudio dentro de la Realidad Virtual (RV) que puede ser vista como una de las posibilidades de representación que existen entre el mundo real y un mundo completamente virtual. El paradigma de interacción humano-computadora es una parte fundamental de la RA. Es por eso que la RA permite complementar la realidad con objetos virtuales, de tal manera que para el usuario, dichos objetos parecen coexistir en el mismo tiempo y espacio que los objetos en el mundo real [13]. Para poder realizar un sistema de RA se necesitan al menos cuatro elementos: 1) un dispositivo que capture las imágenes del mundo real, el cual típicamente es una cámara, 2) un dispositivo en el que se puedan proyectar de manera conjunta las imágenes del mundo real y los modelos virtuales, el cual puede ser una pantalla de una computadora o de un dispositivo móvil, 3) un elemento que permita interpretar la información que se obtiene del mundo real, reconocer los objetos de interés, estimar la pose para superponer los objetos virtuales y realizar el algoritmo de seguimiento, el cual es una unidad R. Barraza, Universidad Autónoma de Ciudad Juárez, Ciudad Juárez, Chihuahua, México, al110471@alumnos.uacj O. Vergara, Universidad Autónoma de Ciudad Juárez, Ciudad Juárez, Chihuahua, México, overgara@uacj V. Cruz, Universidad Autónoma de Ciudad Juárez, Ciudad Juárez, Chihuahua, México, vianey.cruz@uacj.mx central de procesamiento, y 4) un objeto que permita activar la RA, aquí se distingue entre los sistemas que utilizan marcadores (objetos enmarcados con un borde) y los que no (el lugar donde se suporpone la información puede ser cualquier objeto dentro de la escena). La tecnología detrás de la RA, que permite enriquecer la percepción de nuestra realidad, ha existido desde hace más de dos décadas. Sin embargo, las primeras implementaciones estaban limitadas por pesados y costosos sistemas de procesamiento llamados Head Mounted Displays (HMD por sus siglas en inglés), lo que implicaba que, en muchas ocasiones, la movilidad del usuario fuera reducida debido a la configuración general del sistema [4]. Con el desarrollo tecnológico de dispositivos móviles, como teléfonos inteligentes y tabletas digitales equipados con cámaras de video, se abrió la puerta a una nueva era de aplicaciones de RA. Las pantallas de dichos dispositivos, pueden ser utilizadas como ventanas hacia el mundo real aumentándolo con objetos e información virtual relevante, lográndose así un enfoque más natural, sencillo y económico. La llegada de los dispositivos móviles, trajo consigo la capacidad de la comunicación inalámbrica, no sólo en la forma de tecnologías de radio de largo alcance, sino también en estándares de comunicación de corto alcance como Bluetooth y Wireless Local Area Network (WLAN por sus siglas en inglés). Dichos esquemas permiten a los dispositivos interconectarse y compartir información sobre seguimiento, interacción y contexto, para crear escenas distribuidas y ambientes colaborativos [5-6]. Cuando se habla de aplicaciones de RA móvil (RAM), esencialmente se está tratando con sistemas en tiempo real, con tiempos de respuesta en el orden de los milisegundos [7]. Por lo que, el añadir una capa de red a la RAM, implica lidiar con los posibles problemas de interoperabilidad, latencia y ancho de banda, mismos que tienen que ser considerados sin perder de vista la limitante del tiempo de procesamiento, que de inicio, ya se ve afectado por la complejidad de los algoritmos de visión por computadora. La RAM permite crear atractivos espacios multimedia compartidos, lo que proporciona, formas de mejorar las experiencias de los usuarios en una amplia gama de campos de investigación [8]. Esto hace de la RAM una de las áreas más interesantes de la RA. Sin embargo, para lograr integrar de manera más efectiva la RAM en la vida cotidiana, es necesario contar con un framework potente, configurable, extensible y económico. Anteriormente, ya se han presentado en la literatura algunos trabajos para atender a dicha necesidad, sin embargo, algunos inconvenientes como las técnicas de integración, el soporte multiusuario, y los métodos de evaluación han entorpecido su diseminación dentro de las comunidades de desarrollo. El objetivo principal del presente artículo es mostrar el diseño de un framework extensible, flexible y sencillo, basado en componentes reutilizables, para el desarrollo de aplicaciones de RAM. Adicionalmente, se presenta una aplicación desarrollada a partir del framework que posteriormente pudiera ser reutilizada como un objeto prefabricado por usuarios con menor conocimiento técnico a través de un editor What You See Is What You Get (WYSIWYG por sus siglas en inglés). El resto del artículo se encuentra organizado de la siguiente manera. En la Sección II, se presenta un resumen de los frameworks de RA existentes en la literatura. La Sección III, define los materiales y métodos utilizados para el desarrollo del framework. En la Sección IV, se presenta la aplicación interactiva pARabola, así como los resultados obtenidos en pruebas con diferentes dispositivos. Finalmente, las conclusiones obtenidas se muestran en la Sección V. II. TRABAJOS RELACIONADOS El interés por la creación de frameworks de apoyo para el desarrollo de aplicaciones de RA ha existido casi desde la aparición del campo de investigación mismo. La evolución comenzó desde las primeras librerías de código abierto como ARToolKit [9], ARTag [10] y ArUco [11], proyectos de código cerrado como Studierstube Tracker [12] y Studierstube ES [13] hasta llegar a paquetes de software comercial como Vuforia, Layar, Metaio y Junaio, por mencionar algunos. Gracias a dichos proyectos, una variedad de campos han sido permeados por la tecnología de RA, principalmente en la forma de sistemas personales de información, aplicaciones médicas, entretenimiento y educación; aún así, la mayor parte de las aplicaciones sigue sin contar con una aceptación general. Para comprender el porqué de la necesidad de un framework sencillo, extensible y flexible para el desarrollo de aplicaciones de RAM, a continuación se presentan algunas características de las investigaciones relacionadas. Hasta el día de hoy, resulta difícil señalar un proyecto que haya logrado lo que el framework de RA Studierstube [13]. El cual fue diseñado en 1996 y utilizado por más de una década en la creación de numerosas herramientas para la enseñanza de distintos tópicos y para promover la investigación de la RA. Sin embargo, a pesar de ser un framework robusto, de código abierto y que permite a múltiples usuarios trabajar de manera simultánea, también presenta algunos inconvenientes: la curva de aprendizaje es elevada, por lo que resulta difícil utilizarlo para la creación rápida de prototipos, su mantenimiento requiere extensa experiencia en el área, no cuenta con una interfaz gráfica de usuario para la gestión de escenas, y actualmente no cuenta con soporte, lo cual hace que la tarea de integración de nuevas tecnologías sea complicada. En el proyecto presentado en 2005 por [14] se generó un conjunto de herramientas que permitían que tecnólogos, diseñadores y estudiantes pudieran crear prototipos de RA de manera rápida. Los autores detectaron que incluso cuando la tecnología necesaria para la creación de aplicaciones de RA se encontraba disponible para Director (su plataforma de desarrollo), el proceso de desarrollo seguía siendo complicado. El tiempo necesario desde la concepción de la idea, la codificación y la obtención del producto final, era demasiado largo y muchas veces no se obtenía el resultado esperado. Por lo que, se dispusieron a crear Designers Augmented Reality Toolkit (DART), un sistema basado en Director que incorpora los conceptos de Xtras (plug-ins nativos escritos en C++ para proporcionar servicios como la captura de vídeo, seguimiento y registro de marcador de referencia) y comportamientos (fragmentos de código LINGO) utilizados como elementos básicos para el desarrollo de la aplicación de RA. DART tiene algunos inconvenientes, tales como el costo de las licencias, un gestor de escenas basado en líneas de tiempo y la falta de soporte móvil nativo. En el 2006 Miroslav y Petrovski desarrollaron la plataforma Collaborative Mobile Augmented Reality (CMAR) [15], que consiste en cuatro módulos: 1) seguimiento y renderizado, 2) administración de escena distribuida, 3) manejador de eventos y 4) comunicación Bluetooth. La plataforma expone un conjunto de funciones para el desarrollo de RAM de manera sencilla. Como parte de la investigación, presentaron un prototipo que permite a múltiples usuarios compartir una escena común con nueve objetos manipulables por los participantes. A pesar de enfocarse al ahora casi extinto sistema operativo Symbian, CMAR fue un paso importante en la dirección correcta para llevar a la RA al ambiente colaborativo móvil. El framework ComposAR aparece en el año 2008 [16] como un intento para poner al alcance la creación de contenido de RA a un grupo más extenso de desarrolladores. Fue construido sobre ARToolKit for Open Scene Graph (osgART), utiliza el lenguaje de programación Python y permite la creación de herramientas externas para ser utilizadas dentro del ambiente de edición. Una característica particular de ComposAR es que fue diseñado con el propósito exclusivo de apoyar la creación de contenido de RA a través de la programación visual, interpretación de fragmentos de código Python y un modo de prueba en tiempo de ejecución, que permite ocultarle al usuario desarrollador, los complejos conceptos relacionados con la RA. Uno de los frameworks de más reciente creación (2012) es ARTiFiCe [8], que hace uso de un motor de juegos y puede utilizarse para el desarrollo de aplicaciones colaborativas de realidad virtual y aumentada. Se propuso una estructura de software que puede adaptarse fácilmente a la introducción de nuevas tecnologías y dispositivos. De esta forma ARTiFiCe puede ser configurado para ambientes totalmente envolventes al emplear una combinación de HMD y mandos de control con seis grados de libertad (Microsoft Kinect), ambientes semienvolventes, estaciones de escritorio y entornos móviles. Como se puede observar, existen distintos proyectos que han surgido con el fin de desarrollar frameworks para la creación de aplicaciones de RAM, todos ellos con sus ventajas y desventajas asociadas. Sin embargo, aún existen muchos retos por superar y demasiados nichos de oportunidad. III. FRAMEWORK BASADO EN COMPONENTES REUSABLES De acuerdo con el estudio realizado por [17], a pesar de la variedad y la notoria diferencia que existe entre las aplicaciones, la mayoría de los sistemas de RA comparten una estructura arquitectónica básica en común. Por lo que, existen subsistemas y componentes fundamentales que pueden encontrarse en la mayoría de las aplicaciones de RA. Esto obedece a que todos los sistemas de RA son interactivos y su funcionalidad central es la misma: rastrear la posición del marcador, mezclar objetos virtuales con escenas reales y procesar y reaccionar contextualmente a los cambios e interacción del usuario. Después de la revisión de la literatura y de la evaluación de diferentes opciones, se propone como base del framework para realizar aplicaciones de RAM con marcadores, el diagrama de bloques que se muestra en la Fig. 1a. Además, con el fin de crear un framework extensible, fácil de usar y basado en técnicas de visión por computadora, se eligieron los componentes y plataformas de desarrollo que se muestran en la Fig. 1b como las herramientas particulares para cada uno de los subsistemas de la Fig. 1a. a) b) Figura 1. Framework propuesto. a) Subsistemas a desarrollar, y b) componentes y plataformas para el desarrollo de RAM con marcadores. A. Subsistema de Presentación Es el encargado de desplegar la escena compuesta al usuario, incluye los elementos del mundo real, así como los elementos virtuales que permitirán aumentarlo. En el núcleo del framework, se encuentra Unity3D [18], un poderoso motor de juegos 3D que proporciona la capacidad de renderizado, modelos de transformación, iluminación y sombreado, efectos especiales, un motor de simulación física y un detector de colisiones. Unity3D, también ofrece la posibilidad de extender su funcionalidad a través de programación directa del editor o a través de extensiones de desarrolladores independientes. Además, permite exportar el desarrollo final a una amplia gama de plataformas que incluyen Windows, Mac OS, iOS, Android, Xbox 360, PS3 y Wii. A pesar de que Unity3D es un motor de juegos que no ofrece soporte incorporado para el desarrollo de aplicaciones de RA, su capacidad para el manejo de escenas, extensibilidad, flexibilidad y su amplia comunidad de desarrollo, lo han convertido en la plataforma preferida para muchos desarrolladores, así como un excelente recurso para utilizarse en el subsistema de presentación. Además, la facilidad de integrar extensiones de desarrollo independiente permite tomar ventaja de toda su funcionalidad inherente. Todo elemento dentro de una escena de Unity3D, deriva de la clase base GameObject, la cual actúa como un contenedor jerárquico para otros objetos denominados Components, mismos que son los responsables de la funcionalidad real del sistema. Debido a que todo elemento deriva de GameObject, ciertas propiedades y métodos comunes son heredados, tal es el caso del rendererizador, el animador, el detector de colisiones, el transformador, etc. También, es posible adjuntar nuevas clases que permiten controlar la apariencia visual y el comportamiento de los elementos dentro de la escena. Se puede utilizar el editor de código y el lenguaje de programación C# para desarrollar clases personalizadas que expongan métodos y propiedades que permitan a un objeto responder a la interacción del usuario a través del subsistema de interacción. La desventaja de utilizar Unity3D es que no contiene un ambiente integrado para crear modelos 3D complejos, por lo que es necesario hacer uso de herramientas externas para su posterior importación. B. Subsistema de Seguimiento Es un componente clave en cualquier aplicación de RA, es responsable de la detección de marcadores, procesamiento, filtrado y estimación de pose. Dicha información se transmite al componente de renderizado, dentro del subsistema de presentación, encargado de añadir los elementos virtuales correspondientes y combinar la escena final que será vista por el usuario. Con el fin de mantener la ilusión de que el mundo real y el virtual coexisten como uno solo, las afectaciones y fluctuaciones inducidas por la librería de seguimiento deben mantenerse al mínimo sin sacrificar el tiempo de respuesta. Aunque algunas librerías de RA basadas en visión por computadora existentes realizan la detección robusta y seguimiento en tiempo real de los marcadores, también presentan limitantes tales como costo, soporte de plataforma e implementación compleja. Dichos inconvenientes se solucionaron mediante el uso del SDK Vuforia [19], una librería estable, bien documentada y creada por Qualcomm (líder de la industria de las telecomunicaciones inalámbricas). Vuforia puede incorporarse a Unity3D en forma de extensión, por lo que el código C/C++ de la biblioteca responsable de la detección de marcadores y el seguimiento puede ser llamado desde la clase de C# TrackableBehaviour, derivada de la clase base MonoBehaviour. Esto facilita la comunicación y transmisión de la información de estimación de la pose a los componentes de gestión de escena y renderizado con el objetivo de actualizar los valores del nodo de transformación. C. Subsistema de Interacción Se encarga de recolectar y procesar cualquier acción de entrada ejercida por el usuario. A lo largo de los años se han desarrollado diferentes interfaces de interacción para RA, cada una con sus propias ventajas y limitantes. Tomando en cuenta la clasificación presentada en [20], donde se define la forma en que el usuario puede interactuar con las aplicaciones de RAM, se implementó un enfoque basado en una interfaz gráfica de usuario táctil. La principal ventaja, es que no se requiere ningún hardware extra, aparte del propio dispositivo móvil, y que la mayoría de los usuarios de teléfonos inteligentes se sienten cómodos con este tipo de interfaz. El proceso de estimación de la pose, está a cargo de la clase TrackableBehaviour de Vuforia, el resultado es posteriormente transmitido al resto de los componentes para modificar los valores de transformación del objeto y renderizado. Con el fin de poder responder a las entradas del usuario, se creó una clase personalizada de interacción la cual es asociada al objeto principal (cámara de RA), para asegurar que la interfaz gráfica de usuario este siempre visible y lista para transmitir información al subsistema de presentación cuando se detecte la interacción del usuario con el dispositivo. Al registrarse un contacto con la pantalla, se desencadenan una serie de eventos para evaluar si algún elemento de la interfaz gráfica ha sido tocado. Después, se verifica la presencia de un marcador válido en la escena, se valida cualquier cambio en las propiedades expuestas y finalmente, si fuera necesario, se invoca el método correspondiente para actualizar el objeto con la nueva información. D. Subsistema de Modelo del Mundo La idea principal es almacenar y proporcionar acceso a una representación digital del mundo real, esto incluye los patrones de los marcadores de referencia, los datos sobre puntos de interés, los modelos tridimensionales utilizados, entre otros. Dentro del framework el subsistema de modelo del mundo no es un componente independiente, sino una amalgama entre las clases de la librería de seguimiento, que reconocen cuáles son los patrones a buscar y cómo interpretarlos, y el editor de escena, mismo que actúa como contenedor jerárquico para todos los componentes de la escena virtual listos para ser utilizados por cualquier otro subsistema dentro del bucle principal de la aplicación. E. Subsistema de Contexto Es responsable de almacenar y proporcionar información contextual relevante a todo el framework; puede tratarse de datos estáticos o datos generados en tiempo real conforme se ejecuta la aplicación. A pesar de que es posible incluir información acerca del seguimiento de los marcadores, generalmente dicha tarea se delega al subsistema de seguimiento. Al igual que en el subsistema de interacción, para implementar este componente se utilizan clases personalizadas y asociadas a objetos vacíos dentro de Unity3D y el patrón de pizarra (donde todos los objetos pueden escribir y leer la información que necesiten). Del mismo modo, se puede emplear un patrón donde los objetos pueden comunicarse directamente entre ellos para el intercambio de datos. La Fig. 2 muestra una vista simplificada de las clases utilizadas en cada subsistema del framework para el desarrollo de la aplicación experimental que será descrita en la Sección IV. concepto de la ecuación de segundo grado y la forma en que se comporta su gráfica cuando sus coeficientes cambian. La elección de la aplicación, surge después de la aplicación de encuestas con diferentes profesores de diferentes asignaturas en la Universidad Autónoma de Ciudad Juárez, en Ciudad Juárez, Chihuahua, México. Como resultado de las encuestas, se observó, que en las materias de matemáticas, el tema de ecuaciones cuadráticas es particularmente difícil de enseñar. Esto se debe a que el profesor debe redibujar las gráficas en el pizarrón al cambiar algún parámetro de la ecuación. Figura 2. Diagrama simplificado de subsistemas y clases del framework. A pesar de que pARabola no es una aplicación particularmente compleja, sirve para el propósito de exponer los beneficios del framework propuesto. El primer reto, fue encontrar la manera de graficar ecuaciones en 2D y 3D dentro de Unity3D, ya que este no proporciona controles predefinidos para hacerlo. Después de investigar sobre las mallas procedurales para trazado de trayectorias, controles de interfaz gráfica de usuario personalizados y emisores de partículas, se optó por este último, debido a que proporciona un mayor control y una implementación más limpia. Aunque el propósito real de los sistemas de emisión de partículas dentro del motor de juego es otro, su flexibilidad permite controlar el comportamiento aleatorio como se muestra en la Fig. 3. IV. DESARROLLO DE LA APLICACIÓN PARABOLA Como parte de la propuesta del framework, se desarrolló una aplicación de RAM sencilla pero práctica e ilustrativa. Se tomó como base el patrón Modelo Vista-Controlador y se creó la aplicación interactiva llamada pARabola (con la "A" y "R" en mayúsculas para referirse a "Augmented Reality") que permite graficar la parábola definida por una ecuación cuadrática. La aplicación está enfocada a que los estudiantes de ingeniería puedan utilizarla para comprender mejor el Figura 3. Emisor de partículas aleatorias. Las partículas emitidas por el generador, pueden ser organizadas de tal forma que sigan un camino descrito por una función matemática tal como si fuera un componente de graficación, así como se puede observar en la Fig. 4. Figura 4. Emisor de partículas posicionadas estáticamente de acuerdo a una función cuadrática. Después de la primera iteración, el sistema emisor es capaz de posicionar las partículas individuales en coordenadas predefinidas. Para que el sistema pueda responder a la interacción del usuario (por ejemplo, a los cambios de coeficientes) fue necesario crear los controles de la interfaz gráfica de usuario del subsistema de interacción, así como las clases en el subsistema de contexto. Como resultado, se anexaron a la aplicación 2 parámetros que regulan la resolución y escala de la gráfica (deslizadores superior e inferior izquierdo en la Fig. 5) y 3 coeficientes que representan las constantes a, b y c en la ecuación de la parábola (los tres deslizadores ubicados en la parte superior derecha de la Fig. 5). Con el sistema de partículas ya funcional, se creó un objeto prefabricado para encapsular su funcionalidad. En la segunda iteración, con el emisor de partículas modificado y el objeto prefabricado creado, se introduce el componente de RA en la mezcla, para ello se utilizó la extensión Vuforia para Unity3D. Un nuevo proyecto fue creado y con él una escena vacía, después, se añadió un objeto de tipo ARCamera al contenedor jerárquico y se anexaron las clases responsables de la inicialización, captura y transmisión de cuadros de imagen al componente de seguimiento y finalización. Antes de delegar la imagen al subsistema de seguimiento, Vuforia convierte cada cuadro capturado por la cámara a un formato adecuado para el renderizado con OpenGL ES y las operaciones de seguimiento. El subsistema de seguimiento contiene los algoritmos de visión por computadora que permiten detectar y rastrear objetos del mundo real en los cuadros capturados por la cámara. Como resultado, el componente de seguimiento almacena la información resultante en un objeto de estado (parte del subsistema de contexto) mismo que es utilizado por el componente de presentación para garantizar un renderizado y posicionamiento correcto del objeto 3D. Cabe mencionar que el ciclo de seguimiento-actualización se ejecutará para cada cuadro de video procesado. El componente de tipo FrameMarker mostrado en la Fig. 6, fue utilizado para asociar el objeto prefabricado creado con el emisor de partículas. De tal forma que, cuando el marcador es detectado en la escena, el emisor de partículas modificado (con los correspondientes valores de las constantes a, b y c) sea posicionado sobre él. En esencia este proceso construye el subsistema del modelo del mundo de la aplicación. Figura 6. Marcador utilizado en la aplicación pARabola. Figura 5. Aplicación pARabola ejecutándose dentro del ambiente de Unity3D. El último componente necesario para concluir la aplicación es el subsistema de interacción. El cual había sido, en parte, previamente implementado, mediante el uso de clases desarrolladas en C# las cuales acompañan al objeto prefabricado. De la misma forma, se crearon las clases necesarias para dibujar y administrar los controles de la interfaz gráfica de usuario. Así, el ciclo de seguimiento, interacción y actualización finalmente se completó. Por cada cuadro en el que el componente ARCamera esté activo en la aplicación, se llamará al código correspondiente en la interfaz de usuario para evaluar si alguno de los deslizadores ha sido seleccionado y/o se ha cambiado su valor, de ser así, se enviará un mensaje al interior del objeto prefabricado para reposicionar las partículas del emisor acorde al cambio sugerido por el usuario. El subsistema de seguimiento analizará entonces, el contenido del estado del objeto y actualizará la información para que el componente de presentación actualice la escena y refleje tanto los cambios en la pose del modelo 3D, así como cualquier modificación que éste último haya sufrido. Después del proceso anterior, la aplicación esta lista para ser empaquetada en el formato valido (apk para Android) para su instalación en cualquier dispositivo con el sistema operativo Android 2.2 o superior y que tenga al menos un procesador ARMv6 + VFP. A. Discusión de Resultados La versión final de la aplicación pARabola fue probada en los 4 dispositivos enlistados en la Tabla I. A pesar de que no hubo necesidad de realizar modificaciones especiales para lograr la ejecución en ninguno de los dispositivos, la diferencia visual fue evidente en los modelos con especificaciones técnicas superiores. Un vídeo que demuestra el uso de la aplicación ejecutándose en un teléfono HTC One S se encuentra disponible en la red (http://youtu.be/eS7DvvymNFE). La aplicación se ejecutó correctamente y en ningún momento se percibió demora en el tiempo de respuesta en ninguno de los dispositivos. Por lo que, se realizaron pruebas para evaluar el rendimiento en cada extremo del espectro de hardware. El Galaxy Mini S5570 con un solo núcleo de procesamiento y una velocidad de reloj de 600 MHz tardó 16.2 segundos para cargar la aplicación, mientras que el Galaxy SII así como la Tab2 lograron hacerlo en 5.6 segundos, esto debido a que comparten especificaciones técnicas similares, mientras que el HTC One S con dos núcleos a 1.5 GHz fue capaz de hacerlo en sólo 4.8 segundos. Una vez que la aplicación había sido cargada y el ciclo de seguimiento, interacción y actualización comenzó, se realizó un monitoreo constante del parámetro de rendimiento Frames Per Second (FPS por sus siglas en inglés). Sin ningún marcador a la vista, el S5570 mantuvo una velocidad de entre 28-31 FPS, nuevamente el SII y la Tab2 mostraron un comportamiento similar al mantenerse entre 29-32 FPS. Finalmente, el HCT One S logró una velocidad casi constante de 31-32 FPS. Aunque no se encontró ninguna diferencia significativa entre los dispositivos desde el momento en que la aplicación identifica el marcador en la escena y el emisor de partículas aparece por primera vez, se observó un pequeño decremento en los FPS del S5570 cuando el usuario interactúa con los controles de la interfaz gráfica. De manera similar se produjo un decremento de los FPS y se percibió la dificultad del S5570 para identificar y seguir al marcador cuando el dispositivo fue sometido a movimientos deliberadamente bruscos. Los modelos de gama más alta realizaron un mejor trabajo de seguimiento del marcador en movimiento y se mantuvieron en el rango de 29-30 FPS. Después de probar la versión final de la aplicación en las cuatro configuraciones de hardware disponibles, fue evidente que cuanto más limitado es el hardware, menor es el rendimiento de las aplicaciones. Por lo que se concluye que, las especificaciones técnicas como, el número de núcleos de procesamiento, la velocidad de reloj de los mismos, la memoria disponible, la cámara e inclusive el tamaño y resolución de la pantalla, juegan un papel significativo en la experiencia final del usuario. Adicionalmente, tomando como base uno de los dispositivos con mejor desempeño en las pruebas de carga y ejecución (HTC One S), se realizó una serie de ensayos para identificar el comportamiento del sistema de detección y seguimiento bajo distintas condiciones de iluminación ambiental, distancia entre el marcador y dispositivo, y el ángulo de incidencia. El tamaño de los marcadores utilizados para las pruebas fue de 5.5cm x 5.5cm, manteniendo un margen blanco alrededor del borde negro de al menos el doble de grosor de este último. La Tabla II muestra la media aritmética de los resultados obtenidos después de ejecutar 10 veces las pruebas. Como se puede observar en la cuarta columna de la Tabla II, la detección del marcador se ve afectada de manera negativa en ambientes con temperatura de luz cálida, mientras que se obtiene un mejor resultado bajo condiciones de luz blanca o de día. El ángulo mínimo requerido para la detección, está directamente relacionado con la visibilidad del borde de color negro del marcador; en cuanto se obtiene una vista completa de este, es posible realizar la detección. Debido a que el reconocimiento del marcador se da con base al patrón binario codificado alrededor del borde interno, tanto la distancia de detección mínima como la máxima, tuvieron mejores resultados bajo condiciones de luz que permiten un mayor contraste. Sin embargo, el tamaño del marcador y la calidad del lente del dispositivo son factores complementarios con los que también es posible mejorar el rendimiento. Aunado al desarrollo y la demostración de la aplicación, se realizó un estudio con un grupo de estudiantes de ingeniería de la Universidad Autónoma de Ciudad Juárez con el fin de obtener una primera aproximación y evaluación del uso de la tecnología de RAM en las aulas. Para obtener los datos se desarrolló una encuesta para conocer la percepción de los estudiantes con respecto a la aplicación pARabola. Con base a los resultados obtenidos a través de la aplicación del cuestionario y los comentarios conseguidos mediante la técnica de pensar en voz alta, se observa una respuesta positiva por parte de los estudiantes hacia el uso de la tecnología como herramienta complementaria de enseñanzaaprendizaje en el aula. V. CONCLUSIONES En el presente artículo se mostró un framework para el desarrollo de aplicaciones de realidad aumentada móvil. El framework se basa en un modelo genérico de referencia de arquitectura de RA, un patrón probado de desarrollo de software y un motor de juego como eje central, con los que se pueden crear aplicaciones atractivas mucho más rápido de una manera sencilla. Uno de los problemas más comunes de los sistemas para el desarrollo de contenido de RA, es el equilibrio entre la facilidad de desarrollo y la funcionalidad de la aplicación final. En otras palabras, algunas características importantes son sacrificadas en favor de una interfaz de desarrollo más amigable y viceversa los frameworks más robustos requieren de un mayor conocimiento técnico y de una habilidad de programación mayor por parte del diseñador. TABLA I. CARACTERÍSTICAS TÉCNICAS DE LOS DISPOSITIVOS DE PRUEBA. Compañía Modelo Versión de Android CPU RAM (MiB) Cámara (MP) Pantalla (Px) Samsung Galaxy Mini S5570 v2.2 (Froyo) 600 MHz ARMv6 384 3.15 240 x 320 Samsung Galaxy S II v2.2.3 (Gingerbread) Doble núcleo 1.2 GHz Cortex-A9 1024 8 480 x 800 HTC One S v4.0 (Ice Cream Sandwich) Doble núcleo 1.5GHz Krait 1024 8 540 x 960 Samsung Tab 2 10.1 P5110 v4.0.3 (Ice Cream Sandwich) Doble núcleo 1 GHz Cortex-A9 1024 3.15 800 x 1280 TABLA II. RESULTADOS DE LAS PRUEBAS DE DETECCIÓN Y SEGUIMIENTO. Fuente de Luz Distancia Min Detección (cm) Distancia Max Detección (cm) Ángulo Min Detección (grados) 4 focos Sylvania CLF 13W 2,700K 13.6 166 47 4 focos Sylvania CLF 13W 6,500K 12.3 182 43 Luz natural 12.1 187 41 Aprovechando la naturaleza altamente programable del editor de Unity3D, el modelo de encapsulamiento, el editor de programación visual y el intérprete de código, se proporciona la flexibilidad y escalabilidad necesaria para la creación de aplicaciones tanto por diseñadores experimentados como por novatos y entusiastas. El objetivo principal es presentar el framework como un proyecto de código abierto, a disposición de la comunidad en general con la esperanza de que sea adoptado de una forma más amplia y continúe su desarrollo a través de contribuciones de terceros. Aún queda trabajo por realizar, como incluir un subsistema de red que permita a múltiples dispositivos descubrirse y conectarse entre sí de manera intuitiva para compartir información e interactuar con los elementos de la escena, para así crear un ambiente colaborativo más natural y atractivo para los usuarios. Lograr esto, implica resolver una serie de problemas como el desarrollo de un mecanismo de bloqueo de objetos para asegurar que sólo un usuario pueda controlar un objeto a la vez, implementar un algoritmo de deducción estimada e interpolación de pose y finalmente crear objetos prefabricados de conducta para controlar el comportamiento de otros objetos y facilitar el desarrollo visual de contenido de RA móvil. AGRADECIMIENTOS Los autores desean agradecer al Consejo Nacional de Ciencia y Tecnología CONACyT por el apoyo ofrecido a Ramón Barraza para sus estudios de Doctorado. Un reconocimiento especial para Jasper Flick por su guía sobre los emisores de partículas Shuriken. REFERENCIAS [1] R. Azuma, “A survey of augmented reality,” Presence: Teleoperators and Virtual Environments, vol. 6, no. 4, pp. 355-385, August 1997. [2] O. Demuynck and J. M. Menendez, “Magic cards: A new augmentedreality approach,” IEEE Computer Graphics and Applications, vol. 33, no. 1, pp. 12-19, January-February 2013. [3] M. Mine, J. van Baar, A. Grundhofer, D. Rose and B. Yang, “Projection-based augmented reality in disney theme parks,” Computer, vol. 45, no. 7, pp. 32-40, July 2012. [4] M. Gervautz and D. Schmalstieg, “Anywhere interfaces using handheld augmented reality,” Computer, vol. 45, no. 7, pp. 26-31, July 2012. [5] A. Morrison, A. Mullonib, S. Lemmeläc, A. Oulasvirtad, G. Jacuccid, P. Peltonene, D. Schmalstieg and H. Regenbrechtf, “Collaborative use of mobile augmented reality with paper maps,” Computers & Graphics, vol. 35, no. 4, pp. 789-799, August 2011. [6] X. Wang, P. Love, M. Kim and W. Wang, “Mutual awareness in collaborative design: An augmented reality integrated telepresence system,” Computers in Industry, vol. 65, no. 2, pp. 314-324, February 2014. [7] T. Siu and V. Herskovic, “Mobile augmented reality and contextawareness for firefighters,” IEEE Latin America Transactions, vol. 12, no. 1, pp. 42-47, January 2014. [8] A. Mossel, C. Schönauer, G. Gerstweiler and H. Kaufmann, “Artificeaugmented reality framework for distributed collaboration,” The International Journal of Virtual Reality, vol. 11, no. 3, pp. 1-7, 2012. [9] H. Kato and M. Billinghurst, “Marker tracking and HMD calibration for a video-based augmented reality conferencing system,” 2nd IEEE and ACM International Workshop on Augmented Reality (IWAR), San Francisco, California, USA, pp. 85-94, October 1999. [10] M. Fiala, “ARTag, a fiducial marker system using digital techniques,” IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR), San Diego, California, USA, vol. 2, pp. 590-596, June 2005. [11] R. Muñoz-Salinas, “ArUco: A minimal library for augmented reality applications based on OpenCV,” Technical Report, University of Córdoba, Spain, 2012. [12] D. Schmalstieg and D. Wagner, “Mobile phones as a platform for augmented reality,” IEEE Virtual Reality (VR) Conference, Reno, Nevada, USA, pp. 1-2, March 2008. [13] D. Schmalstieg, A. Fuhrmann, G. Hesina, Z. Szalavári, L. M. Encarnaçao, M. Gervautz and W. Purgathofer, “The studierstube augmented reality project,” Presence: Teleoperators and Virtual Environments, vol. 11, no. 1, pp. 33-54, February 2002. [14] B. MacIntyre, M. Gandy, S. Dow and J. D. Bolter, “DART: A toolkit for rapid design exploration of augmented reality experiences,” 17th annual ACM Symposium on User Interface Software and Technology (UIST), Santa Fe, New Mexico, USA, pp. 197-206, October 2005. [15] A. Miroslav and A. Petrovski, “Interactive collaborative augmented reality using a distributed scene graph on mobile phones,” Ms.C. Thesis, Linkoping University, Sweden, June 2006. [16] S. Hartmut, J. Looser and M. Billinghurst, “ComposAR: An intuitive tool for authoring AR applications,” 7th IEEE/ACM International Symposium on Mixed and Augmented Reality (ISMAR), Cambridge, United Kingdom, pp. 177-178, September 2008. [17] A. MacWilliams, T. Reicher, G. Klinker and B. Bruegge, “Design patterns for augmented reality systems,” International Workshop Exploring the Design and Engineering of Mixed Reality Systems (MIXER), Funchal, Madeira Island, pp. 1-8, January 2004. [18] Unity, “Unity - Game Engine,” Unity, [Online]. Available: http://www.unity3d.com. [Accessed 5 08 2013]. [19] Qualcomm, “Augmented Reality (Vuforia) - Mobile Technologies Qualcomm Developer Network,” QDevNet, [Online]. Available: https://developer.qualcomm.com/mobile-development/mobiletechnologies/augmented-reality. [Accessed 15 08 2013]. [20] E. Ortman and K. Swedlund, “Guidelines for user interactions in mobile augmented reality,” Ms.C. Thesis, Umeå University, Sweden, November 2012. Ramón Barraza was born in Ciudad Juárez, Chihuahua, México on August 31, 1981. He received the B. S. degree in computer science from Instituto Tecnológico de Ciudad Juárez in 2003, and the M. Sc. degree in computer science from Instituto Tecnológico de Hermosillo, in 2009. Currently, Ramón Barraza is a Ph.D. student on engineering sciences at Universidad Autónoma de Ciudad Juárez. Additionally, he serves as a professor at Instituto Tecnológico de Ciudad Juárez. His current research interest includes software engineering, augmented reality and mobile computing. Osslan Vergara was born in Cuernavaca, Morelos, México on july 3, 1977. He earned the B.S. degree in computer engineering from the Instituto Tecnológico de Zacatepec, México, in 2000; the M. Sc. in computer science at the Center of Research and Technological Development (CENIDET) in 2003; and the Ph.D. degree in computer science from CENIDET in 2006. He currently serves as a professor at the Autonomous University of Ciudad Juárez, Chihuahua, México. He is a senior member of the IEEE Computer Society since 2012. His fields of interest includes pattern recognition, digital image processing, augmented reality and mechatronics. Vianey Cruz was born in Cárdenas, Tabasco, México, on September 14, 1978. She earned the B.S. degree in computer engineering from the Instituto Tecnológico de Cerro Azul, México, in 2000; the M.Sc. degree in computer science at the Center of Research and Technological Development (CENIDET) in 2004; and the Ph.D. degree in computer science from CENIDET in 2010. She currently serves as a professor at the Autonomous University of Ciudad Juarez, Chihuahua, México. She is a member of the IEEE Computer Society. Her fields of interest include neuro symbolic hybrid systems, digital image processing, knowledge representation, artificial neural networks and augmented reality.