Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Documento: Memoria T R A B A J O F IN D E E S T U D IO S Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino Autor: Héctor Carrasco Berlanga Director: Jaime Gallego Vila Titulación: Máster universitario en ingeniería industrial Convocatoria: Primavera, 2023 Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 1 Resumen Este Trabajo Final de Máster se enfoca en explorar la interacción bidireccional entre entornos de realidad virtual y elementos del mundo real utilizando como base el concepto de los gemelos digitales. Los gemelos digitales son réplicas virtuales de objetos, sistemas o procesos del mundo real que permiten a los usuarios interactuar en un espacio compartido, superando las barreras de ubicación física. Estos se utilizan para realizar simulaciones o análisis de procesos en entornos virtuales, representando objetos físicos en el mundo real. En este proyecto se busca llevar esta interacción un paso más allá. Se pretende que la manipulación realizada en el entorno virtual tenga un impacto directo en elementos reales adaptados para este propósito, y que, a su vez, las acciones realizadas en el mundo real modifiquen el entorno virtual. De esta manera, se logra una correspondencia efectiva entre los dos mundos, mejorando la coexistencia y la integración entre ambos. Para lograr este objetivo, se han diseñado e implementado prototipos basados en Arduino y Unity que ejemplifican esta integración entre mundo virtual y mundo real para trascender las fronteras geográficas y físicas, permitiendo a los usuarios interactuar en un espacio compartido sin importar su ubicación real. El proyecto se estructura en dos módulos principales, cada uno de los cuales representa una etapa en la realización de este objetivo: • Salas Modulables para Realidad Virtual: Se propone el concepto de sala modulable para el uso de la Realidad Virtual donde un suelo físico “elevable”, basado en una matriz de pistones, pueda adaptarse a su gemelo virtual en 3D elevando diferentes regiones del suelo. La viabilidad de estas salas y su prototipado inicial se demuestra en dos apartados: o Implementación virtual de la matriz de pistones: Este módulo se centra en la creación de una matriz de pistones controlables en un entorno de realidad virtual, y su representación física utilizando una matriz LED física. o Implementación del concepto de “suelo elevable” para la creación de salas modulables de VR: Este módulo aborda el diseño conceptual de un sistema de pistones físicos que pueden modificar el entorno físico según las necesidades del usuario en un entorno virtual. • Control de Mano Robótica: Este módulo involucra el control de una mano robótica física a través de una secuencia de movimientos predefinidos. Dichos movimientos son una representación tangible en el mundo real del movimiento que realiza un el gemelo digital, que por extensión es la representación del movimiento del sujeto representado por el gemelo digital. Este proceso destaca la correlación directa entre los sistemas de realidad virtual y sus homólogos físicos. La realización de este Trabajo Final de Máster se ha llevado a cabo mediante la integración de hardware y software, combinando la plataforma Arduino y el motor de desarrollo de juegos y entornos 3D Unity. A través de este enfoque, se busca fomentar la accesibilidad y la replicabilidad del proyecto, permitiendo la reproducción para futuras implementaciones. El objetivo principal de este trabajo es demostrar la viabilidad de la interacción bidireccional RV/RF, proporcionando un marco sólido para la exploración de aplicaciones prácticas con un amplio alcance en diversos sectores como los juegos, la educación, la medicina, la arquitectura y la colaboración en entornos de trabajo compartidos. Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino Abstract This Master's Final Project focuses on exploring the bidirectional interaction between virtual reality environments and elements of the real world, using the concept of digital twins as a basis. Digital twins are virtual replicas of objects, systems, or real-world processes that allow users to interact in a shared space, overcoming physical location barriers. They are used to carry out simulations or process analysis in virtual environments, representing physical objects in the real world. This project seeks to take this interaction a step further. It is intended that the manipulation carried out in the virtual environment has a direct impact on real elements adapted for this purpose, and that, in turn, actions performed in the real world modify the virtual environment. In this way, an effective correspondence between the two worlds is achieved, improving the coexistence and integration between both. To achieve this goal, Arduino and Unity-based prototypes have been designed and implemented that exemplify this integration between the virtual and the real world to transcend geographic and physical borders, allowing users to interact in a shared space regardless of their actual location. The project is structured into two main modules, each of which represents a stage in achieving this goal: • Modular Rooms for Virtual Reality: The concept of a modular room for the use of Virtual Reality is proposed where an "elevatable" physical floor, based on a matrix of pistons, can adapt to its 3D virtual twin by elevating different regions of the floor. The viability of these rooms and their initial prototyping is demonstrated in two sections: o Virtual implementation of the piston matrix: This module focuses on creating a controllable piston matrix in a virtual reality environment, and its physical representation using a physical LED matrix. o Implementation of the "elevatable floor" concept for the creation of modular VR rooms: This module addresses the conceptual design of a system of physical pistons that can modify the physical environment according to the user's needs in a virtual environment. • Robotic Hand Control: This module involves controlling a physical robotic hand through a predefined sequence of movements. These movements are a tangible representation in the real world of the motion carried out by a digital twin, which in turn represents the motion of the subject depicted by the digital twin. This process underscores the direct correlation between virtual reality systems and their physical counterparts. The realization of this Master's Final Project has been carried out through the integration of hardware and software, combining the Arduino platform and the Unity 3D game and environment development engine. Through this approach, the aim is to promote the accessibility and replicability of the project, allowing reproduction for future implementations. The main objective of this work is to demonstrate the viability of the RV/RF bidirectional interaction, providing a solid framework for exploring practical applications with a broad scope in various sectors such as gaming, education, medicine, architecture, and collaboration in shared work environments. Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 3 Sumario RESUMEN ................................................................................................................................................... 1 ABSTRACT ...................................................................................................................................................2 SUMARIO .................................................................................................................................................... 3 ÍNDICE DE FIGURAS ..................................................................................................................................... 5 1. INTRODUCCIÓN....................................................................................................................................... 6 1.1 OBJETO ............................................................................................................................................... 6 1.2 ALCANCE ............................................................................................................................................. 8 1.3 REQUISITOS ......................................................................................................................................... 9 1.4 JUSTIFICACIÓN ...................................................................................................................................... 9 2 ANTECEDENTES Y/O REVISIÓN DEL ESTADO DE LA CUESTIÓN ........................................................... 11 2.1 EVOLUCIÓN DE LA REALIDAD VIRTUAL ..................................................................................................... 11 2.2 APLICACIONES ACTUALES DE LA REALIDAD VIRTUAL .................................................................................... 11 2.3 DESAFÍOS Y LIMITACIONES..................................................................................................................... 11 2.4 TENDENCIAS FUTURAS Y DESARROLLOS .................................................................................................... 12 2.5 LA REALIDAD VIRTUAL Y LA EDUCACIÓN ................................................................................................... 12 2.6 LA REALIDAD VIRTUAL EN EL ÁMBITO LABORAL .......................................................................................... 12 3 METODOLOGÍA ................................................................................................................................. 14 3.1 ADQUISICIÓN DE COMPETENCIAS Y HERRAMIENTAS ................................................................................... 14 3.1.1 Kit de Iniciación a Arduino IDE de ELEGOO ................................................................................ 14 3.1.2 Creación del Juego de la Serpiente con Arduino ........................................................................ 15 3.1.3 Implementación de un Proyecto Ajeno de Conexión Arduino y Unity ........................................ 16 3.1.4 Control de la Matriz LED MAX7219 desde Unity ........................................................................ 17 3.2 DISEÑO E IMPLEMENTACIÓN DEL SISTEMA ................................................................................................ 18 3.2.1 Esquematización del Sistema ..................................................................................................... 18 3.2.2 Lista de materiales ..................................................................................................................... 21 3.2.2.1 Implementación virtual de la matriz de pistones ............................................................................. 21 3.2.2.2 Concepto de Suelo Elevable ............................................................................................................. 22 3.2.2.3 Control de la Mano Robótica ............................................................................................................ 22 3.2.3 Módulo 1: Salas Modulables para Realidad Virtual ................................................................... 22 3.2.3.1 Descripción del Módulo ................................................................................................................... 22 3.2.3.2 Implementación virtual de la matriz de pistones ............................................................................. 23 3.2.3.3 Concepto de Suelo Elevable ............................................................................................................. 25 3.2.3.4 Arquitectura del código de programación ........................................................................................ 27 3.2.4 Módulo 2: Control de la Mano Robótica .................................................................................... 29 3.2.4.1 Descripción del Módulo ................................................................................................................... 29 3.2.4.2 Arquitectura del código de programación ........................................................................................ 31 4 PLANTEAMIENTO Y DECISIÓN SOBRE SOLUCIONES ALTERNATIVAS Y DESAFÍOS ................................ 32 4.1 CAMBIO DE TIPO DE LED EN IMPLEMENTACIÓN VIRTUAL DE LA MATRIZ DE PISTONES ......................................... 32 4.2 PROBLEMÁTICA CON PISTÓN DE CADENA EN CONCEPTO DE SUELO ELEVABLE ................................................... 32 4.3 SELECCIÓN DE VERSIÓN DE MANO EN CONTROL DE LA MANO ROBÓTICA ........................................................ 33 5 MONTAJE DE LA SOLUCIÓN FINAL .................................................................................................... 34 5.1 MÓDULO 1: SALAS MODULABLES PARA REALIDAD VIRTUAL......................................................................... 34 5.1.1 Implementación virtual de la matriz de pistones ....................................................................... 34 5.1.2 Concepto de Suelo Elevable ....................................................................................................... 35 5.2 MÓDULO 2: CONTROL DE LA MANO ROBÓTICA ........................................................................................ 37 6 RESUMEN DEL PRESUPUESTO Y/O ESTUDIO DE VIABILIDAD ECONÓMICA ........................................ 41 Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 7 ANÁLISIS Y VALORACIÓN DE LAS IMPLICACIONES AMBIENTALES Y SOCIALES ................................... 42 8 CONCLUSIONES ................................................................................................................................ 44 9 REFERENCIAS .................................................................................................................................... 46 Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 5 Índice de figuras ILUSTRACIÓN 1 - MATRIZ LED CONTROLADA CON JOYSTICK. ..................................................................... 14 ILUSTRACIÓN 2 - PRUEBAS CON SERVOMOTOR ........................................................................................ 14 ILUSTRACIÓN 3 - JUEGO DE LA SERPIENTE FUNCIONANDO. ...................................................................... 15 ILUSTRACIÓN 4 - PROYECTO DE ERIKA AGOSTINELLI ................................................................................. 16 ILUSTRACIÓN 5 - INTERFAZ DE USUARIO DEL PROYECTO PREVIO MAX7219 .............................................. 17 ILUSTRACIÓN 6 - MAPA CONCEPTUAL DEL SISTEMA IDEAL COMPLETO ..................................................... 19 ILUSTRACIÓN 7 - MAPA CONCEPTUAL DEL MÓDULO 1 .............................................................................. 20 ILUSTRACIÓN 8- MAPA CONCEPTUAL DEL MÓDULO 2 ............................................................................... 21 ILUSTRACIÓN 9 - IMPLEMENTACIÓN FÍSICA EN EL ESTADO PREDISEÑADO “1” .......................................... 23 ILUSTRACIÓN10 - IMPLEMENTACIÓN VIRTUAL EN EL ESTADO PREDISEÑADO "1" .................................... 24 ILUSTRACIÓN 11 - PISTÓN LINEAL MONTADO ........................................................................................... 26 ILUSTRACIÓN 12 - PISTÓN DE CADENA MONTADO .................................................................................... 26 ILUSTRACIÓN 13 - BRAZO ROBÓTICO MONTADO ...................................................................................... 30 ILUSTRACIÓN 14 - MUESTRA DEL SWITCH UNA VEZ SOLDADO .................................................................. 33 ILUSTRACIÓN 15 - MONTAJE DE MATRIZ DE LED SIN CABLEAR LA PROTOBOARD ...................................... 34 ILUSTRACIÓN 16 - PROTOBOARD CABLEADA PARA SALA MODULABLE ..................................................... 35 ILUSTRACIÓN 17 - CREMALLERA DEL PISTÓN LINEAL EN MORDAZA .......................................................... 36 ILUSTRACIÓN 18 - PISTÓN DE CADENA EN PROCESO DE MONTAJE............................................................ 36 ILUSTRACIÓN 20 - LÍNEA DE PESCA DE MANO ROBÓTICA MAL PUESTA ..................................................... 37 ILUSTRACIÓN 21 - FALANGES DESMONTADAS ........................................................................................... 38 ILUSTRACIÓN 22 - INTERIOR DE LA MANO ................................................................................................ 38 ILUSTRACIÓN 23 - MANO CABLEADA ........................................................................................................ 39 ILUSTRACIÓN 24 - BRAZO ROBÓTICO FINALIZADO .................................................................................... 40 Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 1. Introducción 1.1 Objeto El objeto de este Trabajo Final de Máster (TFM) es explorar, desarrollar e implementar un modelo de interacción entre la realidad virtual (RV) y la realidad física (RF) basándonos en el concepto de los gemelos virtuales (IBM, 2023), con el propósito de ampliar las capacidades de las aplicaciones de RV y realidad aumentada (RA) y mejorar la inmersión y la interactividad RV/RF. El concepto de gemelos digitales consiste en la creación de réplicas virtuales precisas de objetos, sistemas o procesos del mundo real en un entorno digital. Estas réplicas, o "gemelos", sirven como representaciones exactas del objeto físico, incorporando datos en tiempo real y características intrínsecas para permitir simulaciones y análisis precisos. Estos gemelos digitales se alimentan de datos recopilados en tiempo real de múltiples fuentes, lo que permite una representación actualizada y precisa de su contraparte física. De este modo, los gemelos digitales facilitan la interacción, el análisis y la optimización en un entorno seguro y controlado antes de implementar cambios en el mundo real. Esto permite anticipar comportamientos, evitar errores y tomar decisiones informadas. Este concepto resulta muy valioso en una variedad de campos, como la industria manufacturera, la ingeniería, la medicina y la planificación urbana, entre otros. Este proyecto se fundamenta en la creación de un entorno físico real preparado para ser modificado de acuerdo con la configuración de su gemelo virtual, desarrollado en 3D para tal fin, de manera que eventos que sucedan en la RV modifiquen la RF y viceversa. La utilidad directa de esta interacción que se quiere explorar en este trabajo aparece en la posibilidad de que se interactúe con los elementos de la realidad virtual con una sensación de contacto real, pues el entorno físico adaptado al modelo 3D posibilitará poder tocar e interactuar con elementos simples de RV como pudieran ser paredes, mesas o sillas. Para demostrar esta configuración avanzada de gemelo virtual, en el marco del presente trabajo se proponen dos implementaciones detalladas a continuación: • Sala modulable para realidad virtual: Se propone el concepto de sala modulable para el uso de la Realidad Virtual donde un suelo físico “elevable”, basado en una matriz de pistones, pueda adaptarse a su gemelo virtual en 3D elevando diferentes módulos que conforman el suelo. La viabilidad de estas salas se analiza a partir de su prototipado realizado con la plataforma Arduino (Arduino, 2023) y gestionado mediante programación en C++ y C# para Unity (Unity Technologies, 2023). Esta matriz permite la configuración dinámica del espacio físico, elevando o bajando los pistones para crear diferentes configuraciones espaciales. Una de las aplicaciones destacables de esta tecnología es su potencial para facilitar la interacción remota. Imagine a dos individuos en ubicaciones geográficamente distantes, cada uno en su propia sala modulable. A través de sus gafas de RV, ambos podrían compartir el mismo entorno virtual, interactuando con los mismos objetos virtuales y, por extensión, con los mismos objetos físicos gracias a la modulación de la sala. • Control de Mano Robótica: Este módulo implica el control de una mano robótica física a través de una secuencia de movimientos predefinidos. Estos movimientos son una representación tangible en el mundo real del movimiento realizado por su gemelo digital. Es una representación directa del movimiento del sujeto que el gemelo digital está replicando. Este proceso resalta la correlación directa entre los sistemas de realidad virtual y sus homólogos físicos. La mano robótica está construida a partir del modelo Open Source de InMoov (Langevin, 2012), pudiendo ser programada utilizando el mismo entorno Arduino + Unity. Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 7 La realización de este proyecto ha requerido la utilización de placas Arduino Mega 2560, elementos de conexionado y impresión de piezas 3D de InMoov (Langevin, 2012). Así mismo, ha sido necesario realizar un proceso de aprendizaje completo para comprender y manejar de manera efectiva las tecnologías y lenguajes de programación que sirven como base para el desarrollo de la propuesta. Esto incluye el estudio exhaustivo de Arduino, familiarizándose con su hardware y el lenguaje de programación C++ necesario para su uso eficiente, así como adquirir habilidades de programación en C# para Unity. La preparación para este TFM involucró lecciones prácticas y proyectos que proporcionaron una comprensión más profunda de estas tecnologías y su potencial. Este TFM es un esfuerzo por explorar y demostrar cómo la integración de los mundos virtual y físico puede conducir a innovaciones en diversas áreas, desde el entretenimiento y los videojuegos hasta la medicina y las reuniones a distancia. A través de este trabajo, que ha significado un profundo proceso de aprendizaje y superación personal, esperamos proporcionar una base sólida para futuras investigaciones y desarrollos en este apasionante campo emergente. Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 1.2 Alcance Este proyecto tiene como objetivo desarrollar e implementar una tecnología innovadora que integre Realidad Virtual (RV) y Realidad Física (RF), proporcionando una experiencia más inmersiva y tangible. Este proyecto se basa en el concepto de gemelos virtuales, y busca ampliar este concepto para permitir una adaptación en tiempo real de la RF según los cambios realizados en su contraparte virtual. Para demostrar las posibilidades de esta integración, se propone la creación de dos módulos principales, cada uno de los cualesaborda una faceta distinta de la integración entre RV y RF. A pesar de la amplitud del tema, el alcance del proyecto está definido por estos dos módulos y se centrará en los siguientes aspectos: 1. Salas Modulables para Realidad Virtual: El objetivo es desarrollar un suelo físico "elevable" que pueda ser manipulado en tiempo real para reflejar los cambios en su gemelo virtual. Este módulo incluye: 1.1 Implementación virtual de la matriz de pistones: Centrándose en la creación de una matriz de pistones controlables en un entorno de realidad virtual y su representación física usando una matriz LED física. 1.2 Implementación del concepto de "suelo elevable" para la creación de salas modulables de RV: Aborda el diseño conceptual de un sistema de pistones físicos que pueden modificar el entorno físico según las necesidades del usuario en un entorno virtual. 2. Control de Mano Robótica: Este módulo aborda el control de una mano robótica física a través de una secuencia de movimientos predefinidos, los cuales representan las acciones de un gemelo digital en un entorno virtual. Por último, aunque el proyecto tiene un alcance definido, también es adaptable y puede ser ampliado en el futuro para incluir nuevas funcionalidades o aplicaciones. Por ejemplo, aunque el módulo de control de la mano robótica se centrará inicialmente en el control de una sola mano robótica, el sistema podría ser ampliado en el futuro para controlar un robot completo, o incluso varios robots a la vez. De la misma manera, el sistema de Salas Modulables para Realidad Virtual podría ser implementado en un prototipo completo en miniatura y posteriormente escalado a una implementación real, abriendo una amplia gama de aplicaciones en diversos campos, desde el entretenimiento hasta la medicina o la industria. Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 9 1.3 Requisitos Para cumplir con los objetivos del proyecto, se han identificado una serie de requisitos básicos que la solución final debe satisfacer. Estos requisitos abordan aspectos técnicos y funcionales, así como consideraciones de seguridad y usabilidad. Compatibilidad y conectividad: La solución final debe ser compatible con los sistemas operativos y hardware de realidad virtual existentes. Además, debe ser capaz de conectarse de forma segura y fiable con los actuadores y sistemas físicos que se utilizarán en los módulos. Interactividad: La interfaz de usuario de la solución final debe ser intuitiva y fácil de usar. Los usuarios deben ser capaces de interactuar con el entorno virtual y los objetos físicos de una manera natural y sin esfuerzo. Tiempo real: La solución final debe ser capaz de procesar las interacciones del usuario y reflejarlas en el entorno físico en tiempo real, sin retrasos perceptibles. Seguridad: La solución final debe ser segura. Esto incluye tanto la seguridad de los datos del usuario como la seguridad física de los usuarios y de cualquier otra persona presente en el entorno físico. Los sistemas de actuación física deben ser seguros y predecibles en su funcionamiento. Escalabilidad: La solución debe ser escalable, lo que significa que debe ser capaz de manejar un mayor número de usuarios o una mayor complejidad en las interacciones sin sufrir una disminución en el rendimiento o la calidad de la experiencia. Robustez: La solución final debe ser robusta y resistente a los fallos. Esto significa que debe ser capaz de manejar situaciones inesperadas, como interrupciones en la conectividad o fallos en el hardware, sin causar interrupciones en la experiencia del usuario. Flexibilidad: La solución final debe ser flexible y adaptable, permitiendo la incorporación de nuevas características y funcionalidades en el futuro. Estos requisitos proporcionan una base sólida para el desarrollo del proyecto y garantizarán que la solución final cumpla con las expectativas y necesidades de los usuarios. Sin embargo, también representan un conjunto de restricciones que deberán tenerse en cuenta durante el diseño y la implementación del proyecto. Cada decisión que se tome durante el desarrollo del proyecto deberá equilibrar estas consideraciones para asegurar que la solución final sea tanto funcional como viable. 1.4 Justificación La Realidad Virtual (RV) ha experimentado un crecimiento significativo y una innovación emocionante, impulsada por los avances en la tecnología y las aplicaciones cada vez más diversas. Si bien inicialmente se popularizó en la industria del entretenimiento, la RV se ha expandido a una multitud de sectores, demostrando su potencial para mejorar y optimizar numerosas operaciones. Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino El propósito principal de este estudio es explorar y desarrollar un modelo de interacción entre la realidad virtual (RV) y la realidad física (RF), un campo emergente pero que tiene el potencial de cambiar la forma en que interactuamos con los entornos virtuales. A través de este estudio, se busca ampliar las posibilidades de las aplicaciones de la RV y la Realidad Aumentada (RA), llevando la inmersión y la interactividad a un nivel superior. Además, este estudio también sirve para resaltar el valor y la importancia del aprendizaje continuo y la adaptabilidad en un mundo cada vez más dominado por la tecnología. Para llevar a cabo este proyecto, fue necesario adquirir nuevos conocimientos y habilidades en áreas como el uso del Arduino, la programación en C++ y C# para Arduino IDE y Unity respectivamente, y la implementación de la interacción entre la RV y la RF. Esta experiencia de aprendizaje es un testimonio del proceso de adaptación constante que se requiere en la era digital y es un componente esencial del desarrollo de este proyecto. Este estudio no sólo servirá como una demostración de las posibilidades de interacción entre la RV y la realidad física, sino que también proporcionará una visión práctica del proceso de implementación de dicha interacción. Aunque este proyecto puede estar en sus etapas iniciales y la tecnología subyacente aún puede estar en desarrollo, los hallazgos de este estudio podrían inspirar y orientar investigaciones futuras en esta dirección. Finalmente, este estudio será útil no solo para académicos y profesionales interesados en la RV, sino también para empresas y organizaciones que buscan incorporar esta tecnología en sus operaciones. Aunque la implementación exacta puede variar dependiendo de las necesidades específicas de cada organización, este estudio proporciona un ejemplo concreto de cómo la interacción entre la RV y la RF puede ser factible y valiosa. Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 11 2 Antecedentes y/o revisión del estado de la cuestión La realidad virtual es un tema fascinante que ha capturado la imaginación de investigadores, tecnólogos y entusiastas por igual. A lo largo de las últimas décadas, la RV ha evolucionado desde ser un concepto futurista hasta convertirse en una tecnología accesible y práctica que está transformando una serie de industrias y disciplinas. En este capítulo, revisaremos el estado actual de la RV y cómo se está utilizando para mejorar y enriquecer nuestras vidas y experiencias. 2.1 Evolución de la Realidad Virtual El concepto de realidad virtual tiene sus raíces en la ficción y la teoría científica, pero la tecnología práctica que conocemos hoy en día comenzó a desarrollarse a mediados del siglo XX. Las primeras iteraciones de la RV eran dispositivos voluminosos y costosos, utilizadosprincipalmente para entrenamiento militar y aeroespacial. En los años 80 y 90, la RV comenzó a penetrar en el mercado de consumo, pero la falta de potencia de procesamiento y las limitaciones de la tecnología de visualización impedían que estas experiencias fueran verdaderamente inmersivas. Sin embargo, el avance en la tecnología de computación y visualización ha permitido un desarrollo significativo en el campo de la RV. Hoy en día, los dispositivos de RV son más pequeños, más potentes y asequibles que nunca, lo que permite experiencias de RV altamente inmersivas y realistas. 2.2 Aplicaciones actuales de la Realidad Virtual La realidad virtual (RV) no sólo está encontrando uso en el entretenimiento y la educación, sino que también se está utilizando cada vez más en el ámbito laboral. Las empresas de una amplia gama de industrias están explorando cómo pueden utilizar la RV para mejorar su eficiencia, productividad y seguridad. En primer lugar, la RV se está utilizando para la formación y educación de los empleados. La formación en este campo puede ser particularmente valiosa en profesiones donde los errores pueden tener graves consecuencias, como la medicina, la construcción, o la industria aeroespacial. Por ejemplo, los cirujanos pueden practicar procedimientos en un entorno virtual antes de realizarlos en un paciente real, mientras que los trabajadores de la construcción pueden aprender a operar maquinaria pesada en un entorno seguro y controlado. Además, la RV también está siendo utilizada para la colaboración y la comunicación en el lugar de trabajo. Por ejemplo, las empresas con equipos distribuidos en diferentes ubicaciones pueden utilizar la RV para realizar reuniones virtuales, lo que puede ahorrar tiempo y dinero en viajes. Asimismo, los diseñadores y arquitectos pueden utilizar la RV para visualizar y discutir los proyectos en tres dimensiones, lo que puede mejorar la comprensión y la toma de decisiones. Por último, la RV también está encontrando uso en el diseño de productos y la simulación. Los ingenieros pueden utilizar la RV para visualizar y probar diseños de productos antes de que se produzcan físicamente, lo que puede ahorrar tiempo y dinero en el desarrollo de productos. 2.3 Desafíos y Limitaciones A pesar de los avances significativos en la tecnología de RV, todavía existen varios desafíos y limitaciones que deben superarse. Uno de los desafíos más significativos es la creación de interacciones físicas realistas en entornos virtuales. Aunque la tecnología de seguimiento de movimiento y los controladores hápticos han mejorado la capacidad de interactuar con los entornos virtuales, todavía hay una desconexión significativa entre las acciones del usuario en el mundo virtual y las respuestas físicas que experimentan. Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino Otro desafío es la necesidad de hardware potente y especializado para ejecutar aplicaciones de RV. Esto puede hacer que la RV sea prohibitiva para muchos usuarios y limitar su adopción generalizada. Además, existen desafíos en términos de seguridad y privacidad. La RV puede recopilar una gran cantidad de datos sobre los usuarios, incluyendo sus movimientos, interacciones y reacciones. Esto plantea cuestiones sobre cómo se recopilan, almacenan y utilizan estos datos, y cómo se protege la privacidad de los usuarios en entornos virtuales. 2.4 Tendencias futuras y desarrollos A pesar de los desafíos actuales, la RV está avanzando a un ritmo rápido y se espera que tenga un impacto significativo en una serie de sectores en el futuro cercano. La realidad virtual inalámbrica, que en el pasado era una aspiración, hoy se ha convertido en la norma. Los dispositivos de RV que una vez requerían conexiones físicas a una computadora o consola de juegos para su funcionamiento, ahora son en su mayoría completamente independientes y portátiles, gracias a los avances en la tecnología inalámbrica y la computación móvil. Una tendencia actual es la integración de la RV con otras tecnologías emergentes, como la inteligencia artificial y el Internet de las cosas. Este tipo de integración permite experiencias de RV más interactivas y personalizadas, y amplía el espectro de aplicaciones de la RV. En términos de desarrollo, una de las áreas más emocionantes es la mejora de la interacción física en la RV. Este enfoque se manifiesta en el desarrollo de tecnologías hápticas avanzadas, que permiten a los usuarios "sentir" objetos y entornos virtuales, al interactuar con objetos físicos modulables en la sala. Asimismo, se están mejorando las tecnologías de seguimiento de movimiento para permitir una interacción con el mundo virtual de una manera más natural y realista. Estos avances, que están empujando los límites de lo que es posible en la RV, son una prueba del potencial de esta tecnología para transformar nuestra interacción con el mundo digital. 2.5 La Realidad Virtual y la Educación En el campo de la educación, la realidad virtual ofrece un potencial significativo para mejorar y enriquecer la enseñanza y el aprendizaje. La RV puede ofrecer a los estudiantes la oportunidad de explorar entornos y situaciones que serían difíciles o imposibles de experimentar en el aula tradicional. Por ejemplo, los estudiantes pueden explorar el sistema solar, caminar por la antigua Roma, o incluso visualizar y manipular complejas estructuras moleculares. Además, la RV puede facilitar el aprendizaje activo y experiencial, lo que puede mejorar la comprensión y retención de los estudiantes. También puede ofrecer oportunidades para la enseñanza personalizada y adaptativa, donde las experiencias de aprendizaje pueden adaptarse a las necesidades y habilidades individuales de cada estudiante. Sin embargo, la implementación efectiva de la RV en la educación plantea una serie de desafíos. Estos incluyen el coste de la tecnología, la necesidad de desarrollar contenido de aprendizaje adecuado para la RV, y la necesidad de formación y apoyo para los educadores. 2.6 La Realidad Virtual en el ámbito laboral El ámbito laboral está experimentando un cambio importante con la adopción de tecnologías emergentes como la realidad virtual, dónde está demostrando ser una herramienta valiosa para mejorar la eficiencia, aumentar la seguridad y proporcionar nuevas oportunidades para la colaboración en el lugar de trabajo. Un área en la que la RV está teniendo un impacto significativo es en la formación y el desarrollo de los empleados. La capacidad de la RV para crear experiencias inmersivas y realistas puede Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 13 proporcionar a los empleados oportunidades de aprendizaje que van más allá de lo que es posible con los métodos de formación tradicionales. Por ejemplo, los empleados pueden aprender a manejar maquinaria peligrosa o a responder a situaciones de emergencia en un entorno controlado y seguro antes de enfrentarse a estas situaciones en la vida real. La RV también está cambiando la forma en que los equipos colaboran y comunican. Las reuniones virtuales pueden permitir a los equipos distribuidos trabajar juntos como si estuvieran en la misma sala, lo que puede mejorar la comunicación y la toma de decisiones. Además, la RV puede permitir a los trabajadores visualizar y manipular modelos y diseños en tres dimensiones, lo que puede mejorar la comprensión y facilitar la colaboración en proyectos complejos. Además, la RV está siendo utilizada para mejorar la seguridad en el lugar de trabajo. Por ejemplo, puede ser utilizada para simular situaciones peligrosas y entrenar a los trabajadores sobre cómo responder, sin poner en riesgo su seguridad.Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 3 Metodología 3.1 Adquisición de Competencias y Herramientas 3.1.1 Kit de Iniciación a Arduino IDE de ELEGOO Mi primer paso en este proyecto fue familiarizarme con Arduino IDE a través del uso de un kit de iniciación de ELEGOO (ELEGOO, 2023). Este paquete de herramientas me proporcionó un amplio abanico de experiencias prácticas con 33 lecciones distintas, abarcando desde la instalación del entorno de desarrollo integrado (IDE) hasta el control de motores paso a paso con un codificador. En este proceso, aprendí a programar en C/C++, el lenguaje de programación nativo de Arduino, que se utiliza para escribir sketches o programas que se cargan en las placas Arduino. Este recorrido educativo me permitió adquirir competencias esenciales y abordar una variedad de módulos y sensores. Completé todas las lecciones, las cuales me proporcionaron una sólida base en la utilización de Arduino y sus diversas aplicaciones. Las lecciones incluían temas como la activación de un zumbador, el uso de sensores de inclinación, la interpretación de entradas digitales, y mucho más. En la siguiente ilustración se pueden apreciar las pruebas realizadas para monitorizar el movimiento del Joystick mediante luces LED y representado en la matriz LED MAX7219. Ilustración 1 - Matriz LED controlada con Joystick. De todas estas lecciones, dos se destacaron como particularmente relevantes para la ejecución de este proyecto. La lección sobre el uso de servomotores (Lección 9) resultó esencial para entender cómo controlar componentes mecánicos con precisión. Por otro lado, la lección sobre el módulo de matriz de puntos LED MAX7219 (Lección 15) me proporcionó una valiosa comprensión de cómo trabajar con interfaces visuales LED. Ambas lecciones se convirtieron en una parte fundamental de mi base de conocimientos para desarrollar los sistemas interactivos de este proyecto. Ilustración 2 - Pruebas con servomotor Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 15 3.1.2 Creación del Juego de la Serpiente con Arduino El Juego de la Serpiente, también conocido como Snake, es un proyecto que tomé para consolidar mis conocimientos adquiridos en la programación en C++. Este juego, aparentemente simple pero sorprendentemente desafiante, se adaptó a una configuración de Arduino para hacerlo interactivo y atractivo. La complejidad del juego no radica en su concepto, sino en cómo puede poner a prueba y fortalecer mis habilidades de programación en C++, especialmente en términos de manejo de matrices y control de periféricos. Para este proyecto, usé un Joystick para controlar la dirección de la serpiente y un módulo de matriz LED MAX7219 para mostrar el juego. El joystick proporciona una entrada fácil de usar para los usuarios, y el MAX7219 ofrece una excelente manera de visualizar el estado del juego. Este enfoque no solo permitió un juego divertido y entretenido, sino que también destacó los desafíos únicos asociados con la programación de hardware y la optimización del rendimiento. Dentro del código que desarrollé para este proyecto, pude abordar una serie de conceptos de programación fundamentales y avanzados, incluyendo la gestión de la memoria, el uso eficiente de estructuras de datos y el control de hardware a través de la programación que más adelante utilizaría para el desarrollo la programación de salas modulables para la realidad virtual. Este pequeño proyecto previo proporcionó una valiosa experiencia práctica y una sólida comprensión de cómo los principios de la programación en C++ se pueden aplicar de manera efectiva en la realidad. El código relacionado con este trabajo previo se encuentra en los anexos de esta memoria, es importante mencionar que este proyecto previo sirvió como una excelente forma de explorar y poner en práctica mis habilidades de programación. Además, la satisfacción de ver el juego funcionar con éxito en un sistema de hardware real fue un hito importante en mi viaje de aprendizaje. Ilustración 3 - Juego de la serpiente funcionando. Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 3.1.3 Implementación de un Proyecto Ajeno de Conexión Arduino y Unity Este proyecto de Erika Agostinelli (Agostinelli, 2020) me ofreció la oportunidad de explorar y comprender la interacción entre Unity y Arduino, dos plataformas con funcionalidades muy distintas pero que pueden integrarse para llevar a cabo proyectos interesantes y novedosos. Concretamente, este proyecto consistía en un semáforo simulado en Unity, que estaba sincronizado con un semáforo de hardware construido con Arduino. Este modelo, aunque sencillo, proporciona una visión clara y práctica de cómo se puede establecer la comunicación entre estas dos plataformas. Para implementar el proyecto, utilicé los scripts proporcionados por Agostinelli (Agostinelli, 2020). Los scripts de Unity enviaban señales a través del puerto serial a Arduino, dependiendo de la interacción del usuario con las esferas de colores en la aplicación Unity. En respuesta, el código en Arduino recibía estas señales y encendía el LED correspondiente en el hardware. Aunque no desarrollé los códigos por mí mismo, la implementación y el análisis de estos scripts proporcionaron una comprensión sólida de cómo Unity y Arduino pueden interactuar y comunicarse entre sí. Fue un valioso aprendizaje práctico que amplió mis conocimientos y competencias para para poder afrontar futuros proyectos donde se requiera una integración similar entre software y hardware. Ilustración 4 - Proyecto de Erika Agostinelli Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 17 3.1.4 Control de la Matriz LED MAX7219 desde Unity Para profundizar mi comprensión de la interacción entre Unity y Arduino, decidí embarcarme en un proyecto personal. Esta iniciativa implicaba la creación de una matriz de esferas en Unity que, cuando se activaban con un clic, alteraban el estado correspondiente de un LED en una matriz LED MAX7219 conectada a Arduino. Este proyecto me permitió aplicar y consolidar los conocimientos adquiridos en el trabajo previo con el proyecto de Erika Agostinelli (Agostinelli, 2020). El desarrollo del proyecto se centró en dos aspectos clave. En primer lugar, se creó una matriz de esferas en Unity utilizando un script en C#. Este script generaba automáticamente 64 esferas en la escena, las cuales podían activarse con un clic para cambiar de color entre blanco y rojo. En segundo lugar, se estableció una comunicación efectiva con Arduino para controlar la matriz de LED en función de las acciones realizadas en Unity. En el lado del hardware, el código de Arduino se diseñó para manejar la matriz LED MAX7219. Se configuró de tal forma que se mantiene un seguimiento del estado de cada LED de la matriz. Cuando se recibe un comando desde Unity a través del puerto serie, se identifica el LED correspondiente en la matriz y se cambia su estado. Esto se logra mediante la implementación de una función de conmutación que alterna el estado del LED especificado. Este proyecto representó un reto gratificante que permitió una aplicación práctica y tangible de la interacción entre el software de Unity y el hardware de Arduino. El código de programación se encuentra en los Anexos del presente proyecto. Ilustración 5 - Interfaz de usuario del proyecto previo MAX7219 Estudio sobre la interacción entre entornosde realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 3.2 Diseño e implementación del Sistema En esta sección del proyecto, nos sumergiremos en el diseño e implementación del sistema propuesto, poniendo en práctica todo lo aprendido hasta ahora. Nos centraremos en dos módulos fundamentales que ejemplifican la integración de la Realidad Virtual y la Realidad Física. Por un lado, llevaremos a cabo la creación de una sala modulable representada en una matriz LED, y por otro, nos adentraremos en el control de una mano robótica que ejecutará una serie de movimientos predefinidos. Ambos componentes servirán para ilustrar las posibilidades de esta interacción, demostrando cómo se puede influir en el mundo físico a través de la realidad virtual y cómo se puede representar esta interacción en un gemelo digital. La Sala Modulable para Realidad Virtual es un espacio único que existe simultáneamente tanto en la realidad como en su contraparte digital en el entorno de Realidad Virtual. Este espacio interactivo consta de dos componentes fundamentales que se reflejan mutuamente en ambos dominios: la configuración física y su representación virtual. En la realidad física, este espacio se simplifica y representa mediante una matriz LED. Esta matriz no es más que una abstracción de la configuración real, que para fines de este proyecto, nos permite demostrar de manera más eficiente y económica las posibilidades de la sala modulable. Esta matriz LED es el equivalente simplificado de lo que podría ser una matriz de pistones real en un proyecto a mayor escala. En la demostración, también se proporcionará una breve muestra de dos posibles configuraciones de pistones que podrían ser utilizadas para construir la matriz de pistones real. Estas configuraciones son solo ejemplos de lo que se podría lograr con una matriz de pistones física, permitiendo una representación más completa y precisa del espacio en la realidad virtual. La sala modulable permite la adaptación y personalización de la realidad virtual y la física a las necesidades del usuario, es decir, cualquier cambio producido en un mundo se visualiza en su homólogo real o virtual, proporcionando una interactividad y capacidad de inmersión que va más allá de los entornos de Realidad Virtual convencionales. Por la parte de la representación del usuario, el componente del brazo robótico simula una serie de movimientos predefinidos que representan las acciones del gemelo digital del usuario en el espacio virtual. Este brazo robótico es una extensión física que refleja las interacciones del usuario en la Realidad Virtual, proporcionando una retroalimentación tangible y una inmersión más profunda. Aunque la mano robótica sigue una serie de movimientos preestablecidos en esta demostración, en teoría podría reaccionar a los movimientos en tiempo real del usuario en la Realidad Virtual. 3.2.1 Esquematización del Sistema Este mapa conceptual es una representación esquemática de un sistema integrado de Realidad Virtual (RV) y Realidad Física (RF), que funcionaría de manera ideal. En el centro, encontramos el Sistema RV/RF Integrado, el núcleo que vincula ambas realidades. En el plano de la Realidad Física, tenemos a un Sujeto Real y a un Robot en una Sala Distante, que está diseñada para ser modulable (Sala Modulable RF). Por otro lado, en el dominio de la Realidad Virtual, tenemos a disposición un conjunto de Gemelos Digitales que reproducen tanto el entorno como al sujeto. Así, contamos con un Gemelo Digital del Sujeto, que replica las acciones de su contraparte real, y un Gemelo Digital de la Sala, que refleja los cambios en la sala física, conformando así la Sala Modulable RV. El concepto de 'Gemelo Digital' abarca la representación virtual de cualquier objeto o ente real, permitiendo una correspondencia directa entre los elementos de la Realidad Física y la Realidad Virtual. Este sistema propone un entorno unificado donde la RV y la RF interactúan y se transforman mutuamente, proporcionando una experiencia de inmersión y adaptabilidad. Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 19 Ilustración 6 - Mapa conceptual del sistema ideal completo Para materializar el sistema integrado de Realidad Virtual (RV) y Realidad Física (RF), se ha propuesto dividir el proyecto en dos módulos. El primer módulo consiste en demostrar la funcionalidad de una Sala Modulable mediante su control de su gemelo virtual, capaz de adaptarse y reflejar los cambios en un entorno virtual y viceversa. El segundo módulo presenta el concepto de un Gemelo Digital y su contraparte robótica en una ubicación distante, ejemplificando la potencialidad de la interacción entre las realidades física y virtual en contextos geográficamente distintos. Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino Ilustración 7 - Mapa conceptual del módulo 1 El esquema del primer módulo ilustra la bidireccionalidad del sistema a través del sistema RV / RF Integrado. En la realidad virtual, se utiliza una interfaz de usuario para modificar la sala modulable de ambas realidades. Paralelamente, desde la realidad física, se puede cambiar el estado de la sala modulable mediante el uso de un mando y un sensor de infrarrojos, transformando así también la configuración de la sala modulable de las dos realidades. Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 21 Ilustración 8- Mapa conceptual del módulo 2 El anterior esquema representa el segundo módulo del proyecto, representando la interacción del gemelo digital y su correspondiente mano robótica en la realidad física. La secuencia de movimientos programada simboliza las acciones del gemelo digital. Estos movimientos se reproducen en la realidad física a través de una mano robótica, demostrando así la viabilidad de los sistemas de realidad virtual o gemelos digitales y sus homólogos físicos. 3.2.2 Lista de materiales Como en todo proyecto, es esencial realizar un inventario de los materiales requeridos. Este proceso garantiza que disponemos de todos los recursos técnicos necesarios para el desarrollo adecuado de cada módulo, la sala modulable y el control de la mano robótica. 3.2.2.1 Implementación virtual de la matriz de pistones Para la implementación del del sistema integrado de RV / RF simbolizando la sala modulable con una matriz LED se han utilizado los siguientes materiales: • Arduino Mega 2560 (podría haberse utilizado Arduino UNO) • Protoboard ELEGOO • Receptor IR • Mando a distancia IR • Potenciómetro • MB-V2 Fuente de alimentación para Protoboard, salida de 3,3-5V y 700mA máximo • Matriz LED AZDelivery 8x8 LED RGB, tipo de LED WS2812B • Cables macho-macho y hembra-macho para conexionado Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 3.2.2.2 Concepto de Suelo Elevable Para la representación conceptual del suelo elevable se han utilizado los siguientes materiales: • Arduino Mega 2560 (podría haberse utilizado Arduino UNO) • Protoboard ELEGOO • Cables macho-macho y hembra-macho para conexionado • Servomotor SG90 de 9g • Motor de engranajes GA12-N20 DC 3V (30RPM) • Impresión 3D de las piezas del pistón de cadena (Gzumwalt, 2021) • Impresión 3D de las piezas del pistón lineal (PotentPrintables, 2018) 3.2.2.3 Control de la Mano Robótica Para la realización del segundo módulo se ha necesitado del siguiente material: • Arduino Mega 2560(podría haberse utilizado Arduino UNO) • Protoboard ELEGOO • MB-V2 Fuente de alimentación para Protoboard, salida de 3,3-5V y 700mA máximo • Cables macho-macho para conexionado • Impresión 3D de las piezas de la mano robótica (Langevin, 2012) • 25x tornillos de cabeza avellanada M3 x 16mm • 5x tornillos de cabeza avellanada M3 x 4mm • 1x tornillo de cabeza avellanada M3 x 12mm • 15x tuercas M3 • 5x tornillos de cabeza plana M1.5 x 4mm • 5x muelles de 3/16" x 1-3/4 • 6x servomotores DSSERVO-3225MG de 180 grados • 1x línea de pesca trenzada de 0.8mm 200LB, 3 metros • 1x tubos de teflón ID1.5MM X OD2.5MM, 3 metros 3.2.3 Módulo 1: Salas Modulables para Realidad Virtual 3.2.3.1 Descripción del Módulo El primer módulo constituye una innovación en la manera en que concebimos la interacción entre los espacios físicos y las experiencias inmersivas de la Realidad Virtual (RV). La esencia de este módulo reside en su ambición de modelar el entorno físico de acuerdo con los parámetros y acciones que suceden en la RV y viceversa. El concepto de una sala modulable puede ser interpretado como un espacio físico que puede ser modelado dinámicamente para igualar su contraparte en un ambiente de RV. Esto puede permitir una inmersión sin precedentes en la RV, ya que los usuarios pueden experimentar cambios físicos en su entorno inmediato que se correlacionan directamente con los cambios que están haciendo en la RV y en la RF. El principio que guía este módulo es la creación de un gemelo digital del espacio físico y la posibilidad de que este gemelo digital pueda modificar su entorno físico de acuerdo con la interacción del usuario en la RV, y de la misma manera, el entorno virtual pueda ser modificado de acuerdo con los cambios producidos en la RF. Por lo tanto, el propósito es hacer que la realidad física sea tan adaptable como su contraparte virtual, permitiendo un flujo dinámico de interacción entre ambos. La principio fundamental detrás de las Salas Modulables es que pueden ser modificadas en tiempo real para imitar cualquier ambiente creado en RV, proporcionando así una verdadera inmersión para los usuarios, más allá de la visualización en una pantalla. La apariencia física, la disposición del Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 23 espacio e incluso la topografía del suelo en las salas modulables pueden ser controladas mediante la interacción en la RV. Para demostrar la viabilidad de este concepto, este módulo se divide en dos demostraciones esenciales, implementación virtual de la matriz de pistones y concepto de suelo elevable. 3.2.3.2 Implementación virtual de la matriz de pistones La implementación virtual de la matriz de pistones representa la materialización del concepto de las Salas Modulables para Realidad Virtual. Esta implementación, que se ha logrado tanto en un entorno físico como en uno virtual, sirve como demostración de la bidireccionalidad de este sistema entre el gemelo virtual de una sala real y su homóloga virtual. La construcción en RF y RV se ha desarrollado de la siguiente manera: • La implementación física del módulo se centra en una matriz LED RGB de 8x8, del tipo WS2812B. Esta matriz LED, es controlada por una placa Arduino Mega 2560 y es capaz de emitir una amplia gama de colores, lo que permite una representación visual necesaria para el proyecto. La elección de la placa Arduino Mega 2560, en lugar de una placa Arduino UNO, se debe a la posibilidad de conectar los 2 módulos del proyecto a la vez en Arduino sin sobrecargarlo. La matriz LED requiere una cantidad de energía que el Arduino no puede suministrar por sí solo. Para superar esta limitación, se ha utilizado una fuente de alimentación externa para protoboard, la MB-V2, que es capaz de proporcionar una salida de 3.3-5V y hasta 700mA. Esta fuente de alimentación se conecta a la protoboard, que también alberga un potenciómetro para regular la intensidad del LED y el receptor de infrarrojos (IR) conectados a la placa Arduino. La implementación física del módulo se complementa con un mando a distancia IR que permite el control manual de la matriz LED. Este mando a distancia se utiliza para seleccionar y ejecutar varios estados predefinidos de la matriz, ofreciendo una interacción rápida y sencilla con el sistema. Ilustración 9 - Implementación física en el estado prediseñado “1” Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino • Para la implementación virtual se ha desarrollado un modelo correspondiente de la matriz de pistones en Unity, un motor de desarrollo de videojuegos 3D. Al igual que la matriz de LED física, la representación virtual también consta de una matriz 8x8, aunque en este caso los "LED" son prismas que pueden variar en altura y color. Cada prisma representa un "pistón" en el sistema, y su altura y color reflejan el estado del pistón correspondiente en la matriz LED física. Además, se ha añadido un menú de 10 botones numerados del 0 al 9 que servirá para manejar estados prediseñados de la matriz de la misma manera que podrá hacerse desde la RF con los botones del mando a distancia. Ilustración 10 - Implementación Virtual en el estado prediseñado "1" El funcionamiento para poder modificar el estado de la matriz de pistones en RF y RV se ha diseñado de la siguiente manera: • En la implementación virtual, al seleccionar un prisma y hacer clic en él, este pasa al siguiente estado, elevándose y cambiando de color para reflejar su nuevo estado. Los colores cambian gradualmente de blanco a rojo, siendo blanco el más bajo y rojo el más alto. En el caso de que el prisma ya esté en su estado más alto (representado por el color rojo), este regresará al estado más bajo (representado por el color blanco), permitiendo un ciclo de operación continuo. El cambio en el estado del prisma seleccionado se refleja de inmediato en el LED correspondiente en la matriz física. De manera similar, al seleccionar un número en el menú de botones, se carga una configuración predefinida para toda la matriz, con cada prisma (y, por tanto, cada LED correspondiente) cambiando a un estado específico definido por esa configuración. Esto proporciona un medio rápido y fácil para cambiar a una serie de estados predefinidos, y sirve como una demostración poderosa de la versatilidad y la capacidad de respuesta del sistema. Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 25 • En la implementación física, el funcionamiento es similar al del menú de la RV, pero adaptado a las características del mando a distancia IR. Al presionar un botón específico en el mando a distancia, la matriz LED cambia a una configuración predefinida. Cada botón del mando a distancia está vinculado a una configuración específica, lo que permite un cambio rápido y sencillo entre una variedad de estados prediseñados. La intensidad de los LED se controla a través de un potenciómetro conectado a la placa Arduino, ofreciendo un control adicional sobre la visualización. Los cambios realizados se reflejan inmediatamente en la representación virtual, manteniendo la coherencia y la correspondencia entre ambos entornos. Una de las principales fortalezas de esta implementación es la estrecha correspondencia entre los estados físicos y virtuales de la matriz. Esto permite una demostración eficaz de cómo los cambios en la realidad física pueden reflejarse en tiempo real en un entorno virtual, y viceversa, lo que es fundamental para el concepto de las Salas Modulables para Realidad Virtual. La implementación del módulotambién hace un uso inteligente del código de programación para manejar el flujo de información entre los dos entornos. Aunque el flujo de información es bidireccional, en lugar de simplemente enviar una señal de cambio de estado de un entorno al otro, el sistema está diseñado para enviar la configuración de estado completa de la matriz cada vez que se realiza un cambio. Esto no solo busca sincronizar ambos entornos, sino que pretende representar de manera más precisa el flujo bidireccional de información que se produciría en un escenario de gemelos virtuales. Es decir, si un cambio se produce en un mundo, no sólo se envía una orden a la contraparte para cambiar a un estado determinado, sino que se transfiere la configuración entera de la matriz reflejando el cambio, permitiendo así una correspondencia más fidedigna entre ambos mundos. 3.2.3.3 Concepto de Suelo Elevable En el marco del proyecto, uno de los conceptos centrales es la creación de un suelo modulable que permita la simulación física de terrenos en un espacio de realidad virtual. Para lograr esto, se propone la creación de una matriz formada por una serie de pistones controlados individualmente, capaces de alterar su altura para replicar las variaciones de un terreno virtual. En este sentido, en la sección 3.2.3.3 se abordan dos propuestas de diseño para estos pistones. La primera propuesta de diseño es un pistón lineal simple, que se basa en la acción de un servomotor SG90 para producir el movimiento vertical. Se escogió un diseño de @PotentPrintables de Ali (PotentPrintables, 2018) Este tipo de pistón tiene la ventaja de ser sencillo y directo en su funcionamiento, permitiendo un control preciso y fácil de implementar a nivel de programación. Sin embargo, su capacidad para soportar cargas pesadas puede ser limitada, lo que podría ser un desafío al considerar su aplicación en una matriz de 64 pistones lineales en una escala mayor que debiera soportar el peso de una persona. Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino Ilustración 11 - Pistón lineal montado La segunda propuesta de diseño es un pistón basado en un sistema de engranajes de cadena, que es impulsado por un motor de engranajes GA12-N20 DC 3V de 30RPM. Este diseño promete una mayor capacidad de carga gracias al uso de engranajes, pero su implementación y control pueden ser más complejos que el pistón lineal. Los engranajes de cadena requieren un mayor cuidado en su montaje y mantenimiento, y el control de su altura puede no ser tan directo como en el pistón lineal. Ilustración 12 - Pistón de cadena montado Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 27 Ambas propuestas de diseño de pistones fueron probadas mediante programas sencillos de Arduino, demostrando su funcionalidad y proporcionando una idea del tipo de movimiento que podrían proporcionar en una sala modulable física. Por supuesto, cabe recalcar que las propuestas presentadas en este apartado representan conceptualmente lo que podrían ser los pistones de una sala modulable. En realidad, estos modelos de pistones, servomotor SG90 y el motor de engranajes GA12-N20 son versiones a escala y funcionan como demostraciones a nivel de prototipo. En una implementación real, estos pistones deberían ser de una escala mucho mayor, y probablemente requerirían componentes más robustos y de alto rendimiento para soportar el peso y el uso continuado en una sala de realidad virtual. También se deberían tener en cuenta factores adicionales, como la seguridad del usuario, la estabilidad de los pistones, y la capacidad para soportar movimientos rápidos y constantes cambios de carga. 3.2.3.4 Arquitectura del código de programación La arquitectura del código de programación es un aspecto fundamental de este proyecto, dado que facilita la interacción entre los entornos de realidad física y virtual. Es importante destacar que esta sección no tiene como objetivo proporcionar un análisis línea por línea del código, sino que se centra en explicar su arquitectura general y cómo las diferentes partes del código interactúan para permitir las funciones del módulo. Para aquellos interesados en los detalles técnicos más precisos, el código completo está disponible en los anexos del documento. Los scripts de Unity, programados en C#, constituyen el núcleo de la lógica de interacción y control en la aplicación. Estos scripts abarcan varias responsabilidades y funcionalidades, incluyendo el manejo de eventos de usuario, la gestión del estado de la matriz LED virtual, la comunicación con el hardware de Arduino y la interacción con la interfaz de usuario. A continuación, desglosaremos cada script individualmente para entender mejor su propósito y cómo interactúan entre sí para crear una experiencia de usuario coherente y funcional: 1. UIGeneral.cs: Este script es el encargado de inicializar la interfaz de usuario. Distribuye el script ControlBotones.cs a cada botón en la interfaz, asignándole a la variable "NumeroBoton" del script el número correspondiente al botón. Esto se hace mediante un bucle, que recorre todos los botones del menú. De esta forma, cada botón queda correctamente configurado con su número correspondiente y con el script necesario para interactuar con el resto de la aplicación. 2. ControlBotones.cs: Este script contiene los diferentes estados predefinidos de la matriz LED. Cuando un botón es presionado, dependiendo del número asignado a la variable "NumeroBoton", este script envía el estado predefinido de la matriz al script ComunicacionArduino.cs y a todos los scripts ControlPistones.cs asignados a cada prisma. De esta forma, tanto el Arduino como la representación virtual de la matriz en Unity reciben la información necesaria para cambiar su estado al estado predefinido correspondiente al botón presionado. 3. MatrizPistones.cs: Este script es responsable de crear los "pistones" (prismas) en la matriz LED en Unity. Los prismas no son objetos preexistentes en el escenario de Unity, sino que son creados dinámicamente por este script, lo que permite personalizar parámetros como la distancia entre prismas o su grosor. Al crearse, a cada prisma se le asigna el script ControlPistones.cs y se les otorga un valor a las variables xPosicion y zPosicion que representan su ubicación en la matriz. Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 4. ControlPistones.cs: Este script es fundamental para el comportamiento individual de cada "pistón" en la matriz LED. Al iniciarse la aplicación, se asigna a cada pistón con las variables xPosicion y zPosicion predefinidas por MatrizPistones.cs. El script permite cambiar el estado del pistón (altura y color) cuando un usuario interactúa directamente con él. También recibe información del script ComunicacionArduino.cs cuando hay cambios en el estado de los LED debido a datos recibidos desde el Arduino, permitiendo que la matriz virtual en Unity refleje fielmente el estado de la matriz física en el hardware. 5. ComunicacionArduino.cs: Este script es el encargado de manejar la comunicación entre la aplicación Unity y el hardware Arduino a través del puerto serie. Cuando se inicia la aplicación, verifica que la conexión sea correcta para prevenir errores y, en caso de que no lo sea, informa al usuario. Al hacer click en un prisma, envía al Arduino un mensaje con las coordenadas del prisma y su nuevo estado. Al pulsar un botón del menú que cambia todo el estado de la matriz, envía una cadena de texto que el Arduino reconoce como un cambio total de estadoen la matriz LED. Recíprocamente, cuando el Arduino recibe un cambio de estado desde el receptor IR (mando a distancia), envía esta información a Unity codificada también como una cadena de texto. ComunicacionArduino.cs recibe esta cadena de texto, la interpreta como una nueva configuración de matriz y envía esta nueva información a todos los pistones (a su script ControlPistones.cs correspondiente). De esta forma, el script asegura que la representación virtual de la matriz en Unity esté siempre sincronizada con la matriz física en el Arduino. Para resumirlo un poco más y facilitar la comprensión, UIGeneral.cs se encarga de la interfaz de usuario y la inicialización de los botones, ControlBotones.cs maneja la lógica específica de cada botón y contiene los estados predefinidos de la matriz, MatrizPistones.cs se encarga de la creación y configuración de los prismas en Unity, ControlPistones.cs gestiona las interacciones individuales con cada prisma y actualiza su estado basándose en la información recibida, y finalmente, ComunicacionArduino.cs es el nexo de unión con el hardware Arduino, manejando todas las comunicaciones entrantes y salientes a través del puerto serie y asegurando el sincronismo entre RV y RF. En conjunto, estos cinco scripts de Unity forman un sistema interconectado que maneja tanto la interfaz de usuario como la interacción con el hardware Arduino. La distribución de tareas entre los scripts permite mantener una separación clara de responsabilidades, lo que facilita la comprensión del sistema y la corrección de posibles errores. Ahora nos adentraremos en el código Arduino que controla el hardware y recibe/envía información al software Unity. Este código está diseñado para recibir las instrucciones de Unity a través del puerto serie, interpretarlas y manipular los componentes físicos (en este caso, los LED, potenciómetro y receptor IR) en respuesta. Del mismo modo, también es capaz de enviar información a Unity, por ejemplo, cuando el usuario interactúa con el mando a distancia, permitiendo de esta manera que se actualice la representación virtual de la matriz en Unity. A continuación, desglosaremos y explicaremos los aspectos más relevantes de este código Arduino: 1. Inclusión de bibliotecas, inicialización de constantes y asignación de PINs: Aquí es donde se prepara el entorno de trabajo del código de Arduino. Se importan las bibliotecas necesarias para controlar los periféricos, se establecen las constantes que se utilizarán en el código, y se asignan los PINs de los periféricos a las variables correspondientes. 2. Matrices prediseñadas: Se declaran las matrices que representan los distintos estados prediseñados de la matriz de LED. Cada matriz es de 8x8 y los números van de 0 a 4, representando los diferentes estados de los LED. 3. Función setup(): Se inicializa el puerto Serial para la comunicación con Unity, se ajusta el brillo de la matriz LED y se inicia el receptor de infrarrojos. Finalmente, se llama a la Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino 29 función IniciarLeds(), la cual se encarga de poner todos los LED en blanco al inicio del programa. 4. Función IniciarLeds(): Esta función se utiliza para inicializar el estado de la matriz LED, poniendo todos los LED en blanco. Se llama a esta función solo una vez, durante el setup. 5. Función loop(): Esta es la función principal que se ejecuta continuamente en Arduino. o En primer lugar, se lee el valor del potenciómetro a través de la entrada analógica y se evalúa si ha habido un cambio significativo en su valor. En caso afirmativo, se ajusta la intensidad de la matriz LED. o Después, se comprueba si hay datos disponibles en el puerto Serial. Si los hay, se lee el mensaje y se determina su longitud. Si el mensaje es de 3 caracteres, se interpreta como un clic en un prisma en Unity y se actualiza la matriz EstadosLed en la posición correspondiente con el nuevo estado. Si el mensaje es de 71 caracteres, se interpreta como una actualización completa de la matriz y se actualizan todos los estados en EstadosLed en consecuencia. En ambos casos, se establece la variable EntradaDatos a true para indicar que hay nuevos datos. o Luego, se procesan las señales del receptor de infrarrojos. Según el botón pulsado en el mando a distancia, se actualiza la matriz EstadosLed con una de las matrices prediseñadas y se establece EntradaDatos a true. Además, se codifica el nuevo estado de la matriz en una cadena de 71 caracteres y se envía a través del puerto Serial a Unity. o Finalmente, si EntradaDatos es true, se entra en un bucle anidado que actualiza los colores de la matriz LED física según los estados en la matriz EstadosLed. Una vez que se ha actualizado la matriz, se establece EntradaDatos a false para evitar sobrescribir la matriz LED continuamente, lo cual podría causar un parpadeo visible y bloquear el programa. 3.2.4 Módulo 2: Control de la Mano Robótica 3.2.4.1 Descripción del Módulo La mano robótica utilizada en este proyecto es una representación física de un gemelo digital, es decir, es la versión física de un avatar controlado por un usuario en un entorno de realidad virtual. En la configuración ideal, un usuario interactuaría con su entorno virtual a través de su avatar digital y todas sus acciones serían replicadas fielmente por un robot en el mundo físico. El módulo 2 del proyecto, "Control de la Mano Robótica", es una representación física de la actividad en un entorno virtual. Esta representación toma la forma de una mano robótica que se mueve de acuerdo con una serie de acciones predefinidas. Cabe mencionar que en este proyecto se decidió programar estos movimientos en lugar de replicar las acciones del usuario en tiempo real, una decisión motivada por los objetivos y el enfoque de este trabajo. Para entender esta elección, es importante recordar la conexión con el módulo 1, "Salas Modulables para Realidad Virtual". En este primer módulo, se demostró la interacción entre el gemelo virtual y la realidad física, estableciendo una conexión bidireccional entre estos dos mundos. Tras haber abordado esta interacción en el módulo 1, el propósito del módulo 2 es destacar la viabilidad de crear un gemelo físico que imite las acciones del usuario en el espacio virtual. A nivel más técnico, la mano robótica es controlada por servomotores, que permiten una amplia gama de movimientos articulados. Cada dedo de la mano robótica puede moverse independientemente, lo que permite una gama de gestos y posiciones de la mano. Para este Estudio sobre la interacción entre entornos de realidad virtual y elementos reales: aplicación práctica utilizando microcontrolador Arduino proyecto, los movimientos de la mano han sido programados para representar una serie de gestos y acciones típicos, como agarrar un objeto o girar la muñeca. La mano robótica utilizada en este proyecto se ha construido a partir del modelo OpenSource de InMoov, que es un proyecto global de robótica de código abierto que permite a cualquiera construir su propio robot personal utilizando una impresora 3D y algunos componentes electrónicos. En nuestro caso, todas las piezas de la mano robótica se han impreso en PETG, un material robusto y flexible que ofrece una excelente durabilidad y resistencia. En el sitio web de InMoov, es posible descargar todos los componentes necesarios para construir el robot completo, que incluye mucho más que solo la mano. Sin embargo, para los propósitos de este proyecto, nos hemos centrado únicamente en la mano y parte del antebrazo. Aunque el modelo completo incluye características como una cabeza móvil, caja torácica, brazos o piernas, estas partes no son necesarias para la demostración que se está realizando
Compartir