Universitat Oberta de Catalunya

PaintXYZ, pintando la realidad mediante mundos virtuales

Asignatura: Usabilidad y interfaces.

Nombre del estudiante: Ivan Martí Nieto

Consultor y profesor: Judit Casacuberta Bagó / Enric Mor Pera

Introducción

El futuro de la sociedad en su transición tecnológica y digital

A veces es inevitable que la tecnología acabe formando parte de nuestras vidas, a causa de las modas, la facilidad que aportan para realizar nuestras tareas o que nos permitan estar conectados  en cualquier lugar a las redes sociales que tanto deseamos compartir.

Los avances tecnológicos forman parte del paso del tiempo. Evolucionan progresivamente, llegando a niveles exponenciales y no nos damos cuenta de los grandes cambios que provocan, porque se inmiscuyen en nuestras vidas lentamente, hasta que forman parte ya de nuestros quehaceres.

Si mirásemos 10 años atrás y comparásemos, veríamos el gran salto tecnológico y el cambio social que ha habido en la actualidad. Yo suelo hacerlo y me sorprendo constantemente de cómo hemos adaptado con tanta naturalidad el mundo digital a cualquier aparato analógico del pasado.

A partir del nacimiento del smartphone y de cómo ha influido en nuestra sociedad, me he ido haciendo preguntas a lo largo de estos años ¿Hacia dónde nos va a llevar esta evolución tecnológica? ¿Cómo va a influenciar en nuestra sociedad? ¿Cual va a ser la próxima tecnología que lo revolucione todo? Hasta hace poco, muchos avances se movían de forma paralela, pero en un momento en concreto en un periodo inexacto, se han empezado a unir para dejar claras algunas respuestas.

La realidad virtual, la realidad aumentada, los coches autónomos, el internet de las cosas y un etcétera de nuevas evoluciones que están dando que hablar estos días en todos los medios de telecomunicación, están estrechamente unidos. Cuando una avanza, lo hace el resto: nuevos algoritmos de visión de computadora, sensores de posicionamiento más precisos, conexiones de internet más rápidas, todas están asociadas y destinadas a evolucionar a un ritmo similar.

Por ello he querido centrar mi proyecto de final de grado sobre todos estos avances. Desde la financiación de Oculus Rift por la herramienta Kickstarter y las Project Glass de Google, me di cuenta que algo estaba cambiando. La aceptación social y el apoyo que estaban dando grandes empresas como Sony, HTC, Google, Microsoft, Samsung y LG sobre la realidad virtual, aumentada y los coches autónomos, era el pistoletazo de salida hacia un nuevo futuro social digital.

Siempre he sido una persona a la que le encanta seguir el paso de las nuevas tecnologías, me encanta trabajar y leer sobre estos avances. A veces me paso horas y horas leyendo, hurgando sobre códigos de programación y gracias a herramientas de electrónica como Arduino, me ha brindado la oportunidad de practicar y hacer aquello que me gusta. Por ello, quería contribuir con mi pequeño granito de arena sobre el futuro que nos depara.

Etapas y retos

PaintXYZ, o como integrar los mundos digitales sobre la realidad

¿Qué es PaintXYZ?

PaintXYZ permite crear un entorno virtual en una localización e interactuar con este entorno para generar objetos tridimensionales superpuestos en un entorno real, haciendo uso de un Smartphone, un Cardboard, un pincel físico creado con Arduino y sensores de detección de posicionamiento. El sistema se comunica haciendo uso de una conexión Bluetooth, permitiendo una precisión de hasta 100 puntos por segundo.

En la geolocalización del sistema, muestra un listado de “box” creados por usuarios en un mapa además de la localización actual. Si seleccionamos un box de la lista, el sistema nos guiará para llegar a la localización mediante diferentes indicadores. Una vez llegada a la localización, la aplicación nos avisará que ya podemos abrir el “box” y proceder a su visualización.

¿Cuáles son los componentes y capacidades del prototipo?

El prototipo está compuesto de dos herramientas de interacción:

  • El pincel físico
  • La visualización y computación

El pincel físico está compuesto principalmente por un Arduino UNO, bluetooth, un sensor GY-80 de 10 DOF y una batería de 2700 maH. La forma es parecida a un mando de Wii, compuesta por 5 botones con los que interactuar. El sensor GY-80 es un sensor IMU que se compone de acelerómetro, giroscopio, magnetómetro y barómetro permitiendo trabajar sobre 10 ejes de precisión. Con este sensor he aplicado lo que se llama sensor fusión, combinando los resultados de los sensores para obtener una precisión cercana al milímetro.

El sistema de visualización y computación se compone de una Cardboard y un smartphone, en mi caso un Xperia z3 y un LG G2, que han sido los móviles de prueba y ambos han dado un buen rendimiento y estabilidad.

Para la interacción, desarrollé una aplicación Android y un firmware para Arduino. La aplicación estaba programada mediante Processing combinada con Android SDK, mientras que el firmware es para Arduino, programado en C/C++.

El resultado y características finales del prototipo son las siguientes:

  • Interacción en tiempo real
  • Precisión de hasta 100 puntos/segundo
  • Optimizado para funcionar a 60 fps
  • Código adaptativo para estabilidad de rendimiento
  • Resolución de imagen sobre cámara de vídeo de 720p
  • Conexión Bluetooth entre pincel y Smartphone
  • Capacidad de interactuar entre RA y RV
Imagen del pincel físico y la Cardboard con el smartphone Sony Xperia z3
Imagen del pincel físico y la Cardboard con el smartphone Sony Xperia z3.

EL PROYECTO

Realizar el Grado Multimedia me ha ayudado a introducirme con mucha facilidad en el proyecto. Recuerdo cuando empecé el primer año, no era capaz ni de hacer una transparencia de una imagen y acabé diseñando modelados 3D, realizando prácticas sobre Arduino y Processing.

Cuando empecé este proyecto, quería hacerlo debidamente. Estructuré los cuatro meses que tenia para entregarlo en tres grandes partes:

  • Diseño y prototipado
  • Desarrollo
  • Control de proyecto

Diseño y prototipado

Durante mes y medio, me dediqué a analizar y estudiar la realización del prototipo usable. No tenía mucha idea de cómo funcionaban los sensores, ni como se debía programar para ellos y tuve que hacer una larga investigación de los sensores que habían actualmente en el mercado y cual me iba a ser útil.

En la imagen podemos ver Arduino UNO en la parte superior, el sensor GY-80 en la parte inferior izquierda y otro sensor MP6050 en la parte inferior derecha.
En la imagen podemos ver Arduino UNO en la parte superior, el sensor GY-80 en la parte inferior izquierda y otro sensor MP6050 en la parte inferior derecha.

Otro tema importante a tratar, era sobre la usabilidad y la construcción de la interfaz. Tenía que realizar un estudio de interacción rápida para que no se rompiera la sensación de tiempo real, mediante la construcción de wireframes y test de laboratorio de usabilidad, sobre prototipos tempranos.

El pincel físico era otra parte que se debía diseñar. Mediante herramientas de modelado 3D Max, Maya y Blender, realicé varios modelados en tamaño/proporciones reales para crear desde cero la estructura y usarlo para los test de laboratorio de usabilidad y ergonomía.

Diferentes modelados 3D del pincel físico, realizado con Maya 2017.
Diferentes modelados 3D del pincel físico, realizado con Maya 2017.

Desarrollo

Durante otro mes y medio, me enfoqué en la programación y la construcción de la parte electrónica. Fue un periodo bastante intenso, en la que luchaba constantemente entre la estabilidad de imágenes por segundo y la inserción de nuevas posibilidades. La optimización iba en paralelo en cada línea de código.

Para hacernos una idea del trabajo que realiza la aplicación, esta debe dibujar cada elemento en pantalla a 60 fps. Las líneas se componen de X puntos, y teniendo en cuenta que tenemos una precisión de 100 puntos por segundo, en unos minutos podemos llegar a tener millones de puntos, que la aplicación ha de dibujar en 0,03 segundos, todo sobre la potencia de un smartphone.

Sincronización de datos en la comunicación de Arduino y APP Android PaintXYZ.
Sincronización de datos en la comunicación de Arduino y APP Android PaintXYZ.

Control de proyecto

En el transcurso del proyecto, ha habido un control constante sobre el avance de este, donde se ha analizado los percances alcanzados y como han afectado estos al prototipo final. Este tipo de controles sirven para tener en cuenta en proyectos futuros y como solucionar o evitar estos percances antes de que vuelvan a suceder.

Riesgos y viabilidad

Una de las grandes dificultades encontradas durante el desarrollo, se trababa de la sincronización de datos bluetooth y el tratamiento de la imagen. Debido a que estamos dibujando en pantalla a una velocidad de imágenes por segundo que podría no ser estable, tenía que realizar un código adaptativo para que no se produjeran cortes de datos, debido a las diferencias en la lectura de pantalla y bluetooth.

Los síntomas de corte de datos, se reproducen como una mala interpretación produciendo cortes de imagen i posicionamiento erróneo en momentos puntuales. Sacrificando mínimamente el rendimiento global, se puede solucionar estos problemas, mediante el uso de control de lectura de variables.

En la imagen podemos observar el error de sincronización de datos. La String de datos numéricos se corta, produciendo errores en la parte visual.
En la imagen podemos observar el error de sincronización de datos. La String de datos numéricos se corta, produciendo errores en la parte visual.

¿Qué puede ofrecer PaintXYZ?

Entonces ¿qué es lo que puede ofrecer PaintXYZ para contribuir en este cambio social y los avances tecnológicos?

Mi idea era crear las herramientas necesarias para desarrollar una nueva forma de expresión virtual, intentando juntar la realidad con los mundos digitales, un proyecto que me parecía muy interesante y que me podría dar el toque de investigación que estaba buscando, pero si tuviera que definir qué es exactamente mi aplicación y que puede ofrecer, debería decir que:

  • Es el nacimiento de una nueva forma de publicidad virtual. Realizar catálogos 3D, creación de eventos comerciales o carteles publicitarios virtuales.
  • Es el nacimiento de una nueva forma de expresión cultural. Crear un graffiti virtual, crear declaraciones de amor, crear esculturas o pinturas virtuales.
  • Es una nueva forma de expresión personal, tal como lo son las redes sociales. Crear un álbum de fotos virtual, expresar las opiniones o conversaciones virtuales.

¿Cuál es su futuro?

Es evidente que el primer problema del prototipo es que es poco portable. Esto se debe al uso de Arduino UNO como parte central del pincel físico y una batería de gran capacidad. Al tratase de un prototipo, quería tener una gran cantidad de horas de uso y la capacidad de modificar las conexiones con facilidad. Eso no significa que si llegara a ser un proyecto de orientación comercial, no pudiera llegar a serlo. El prototipo se puede llegar a reducir hasta en un 85 % de su tamaño real, substituyendo Arduino UNO por Arduino mini o similares, y modificando la batería de gran tamaño por una más acondicionada a este tipo de dispositivos, quedando en las dimensiones cubicas de un mando para abrir la puerta de un garaje o un llavero.

El coste total del prototipo no supera los 30 €:

  • Arduino mini = 2 €
  • Sensor IMU = 2,5 €
  • Bluetooth = 4 €
  • Batería = 7 €
  • Resto de componentes = 10 €

Esto en base a precios de Amazon y eBay, pero si pasara a una producción industrial, seguramente el precio se podría reducir a la mitad.

Conclusión

PaintXYZ supone un reto, una meta a la que llegar y una forma de autosuperación y autoaprendizaje.

La idea principal del proyecto era ver hasta dónde podían llegar las nuevas tecnologías y de qué forma se podían aplicar. Trabajé mucho en la concepción de la idea, de tal forma que no se quedara en un simple reto personal, sino llegar a ofrecer una aplicación interactiva multimedia que fuera atractiva e interesante, adaptada a la actualidad de las nuevas tecnologías.

En un principio tenía cierta incertidumbre, ya que me enfrenaba a un proyecto de total desconocimiento. No sabía si podría realizar todas las partes o incluso llegar a las bases propuestas, ya que únicamente tenía la concepción de la idea y la forma de cómo llevarla a cabo.

En la finalización del desarrollo de PaintXYZ, puedo decir que ha sido una experiencia increíble y muy dificultosa, satisfecho de los resultados y del aprendizaje obtenido. Ahora entiendo cómo funcionan los sistemas de posicionamiento, qué problemas se están teniendo para obtener un posicionamiento absoluto, cuáles son los sensores de posicionamiento que tienen los móviles actuales, como puedo optimizar y mejorar la experiencia, como puedo realizar aplicaciones Android con Processing y un largo etc.

PaintXYZ es una aplicación multimedia de interacción en tiempo real y geolocalización, en la que se utiliza la realidad virtual y la realidad aumentada para crear objetos tridimensionales a partir de un pincel físico dentro de unos “box” que el usuario crea en una ubicación global.

Documentación

Herramientas

Processing: es un sencillo lenguaje de programación basado en Java el cual hace el uso de un entorno de desarrollo de código abierto, creado para la producción de proyectos multimedia.

Arduino: es la combinación de una plataforma de desarrollo libre y hardware microcontrolador de bajo coste, que nos permite realizar con facilidad proyectos de electrónica de diferentes índoles.

Autodesk Maya 2017: software privativo orientado a animación y modelado 3D. Autodesk ofrece versiones gratuitas para estudiante, aunque se pueden encontrar alternativas abiertas como Blender.

Enlaces de interés

Repositorio del proyecto [CAT]

Xataka. Las cinco tecnologías de moda que se debaten entre cambiar el mundo y quedarse en humo [ES]

Xataka. ¿Dibujar en realidad virtual? el animador de Disney Glen Keane se atreve con ello [ES]

GitHub. Processing-Android  [EN]

Android developers. Guías de la API  [EN]

Xataka: El MIT mejora 1.000 veces la calidad de escaneo 3D gràcias a la polarización de la luz  [ES]

WEREABLE. Explained: How does VR actually work? [EN]

Acerca del autor

Graduado Multimedia, Técnico superior en administrador de sistemas informáticas (ASI) y Técnico superior en desarrollo de aplicaciones informáticas (DAI). Actualmente trabaja como freelance en la programación y diseño para web y móviles, aunque también ha estado trabajando como administrador de sistemas en el Consell Comarcal de Reus y programador en Avellana Digital.

Un comentario

Deja un comentario

Deja un comentario