Proyecto Elo 329: Oculus Rift-Manejo de sensores

1. Descripción del problema

Oculus Rift es un dispositivo que tiene diversas aplicaciones en desarrollo de software. Uno de los aspectos mas básicos e importantes, es el correcto manejo de los sensores del dispositivo, lo cual si se domina correctamente, abre la posibilidad de crear múltiples aplicaciones que requieran un dispositivo de este tipo. Es por este motivo que el objetivo de este proyecto es lograr leer los valores de los sensores de movimiento del Oculus rift, para posteriormente mostrar su funcionamiento mediante una interfaz grafica y así por lo tanto lograr una base de desarrollo para futuras aplicaciones.

2. Análisis del problema

Para empezar el desarrollo del programa, se debe considerar que Oculus Rift trabaja con librerías hechas en C++. Además dado que se quiere mostrar en una interfaz gráfica los valores de los sensores, se debe utilizar un software de desarrollo que incorpore alguna herramienta de creaciones de interfaces gráficas. Por ello los elementos utilizados para el desarrollo de este proyecto fueron:

Estos interactuan de la siguiente manera formando el sistema:
Sensores
Figura 1:Ejes de movimiento del Oculus Rift

2.1 Casos de usos

A continuación se muestran casos de usos. Dado que la funcionalidades del programa son limitadas, los siguientes casos de usos son la mayoria de los casos que podrían ocurrir al ejecutar el programa.

Caso de uso 1
Caso de uso 1: Oculus no conectado

caso uso 2
Caso de uso 2: Oculus conectado y funcionando

3. Arquitectura de la solución

Al crear la solución del programa, el diagrama UML con las clases es la siguiente:

UML1
Figura 2:Diagrama de clases UML

Las clases resultantes poseen los siguientes atributos y métodos: En el caso de las clases clkled y clock se indica una sola clase de las 3 que se implementaron en cada caso, ya que sus características son idénticas entre ellas y solo varía el dato que recibe y muestra cada una.

UML2
Figura 3:Diagrama secuencia casos de usos

En este diagrama se explica de qué forma se conectan las clases y que sentido secuencial tienen éstas. Las flechas indica el sentido de los datos y hasta donde llegan éstos. Finalmente se representan en la clase que crea la interfaz gráfica.

4. Implementación de la solución

En primer lugar se crea una clase que permite obtener los datos de los sensores del Oculus, los cuales son representados en grados, para lograr simular el movimiento en la interfaz gráfica compuesta por los “relojes”.
Se crea una clase “variables” que junta todos los datos y permite su manipulación, cambiar de formato y exportar dichos datos a otras clases.
Las clases “clock” y “clkled” permiten ver gráficamente los valores entregados por los sensores. La primera representa el movimiento del Oculus, indicado con el “puntero del reloj” y la segunda, muestra los valores en grados que permiten simular el movimiento en las clases “clock”.
Finalmente se crea una interfaz gráfica general que junta los elementos anteriores y muestra todo en una ventana.
Como observación, se destaca que la interfaz es creada con la plataforma QTCreator, que facilita trabajar de esta forma en el lenguaje C++.

Así por lo tanto la implementación completa se puede ver y descargar desde el siguiente enlace: Proyecto Oculus

5. Pruebas

Algunas de las primeras dificultades que se presentaron al desarrollar el proyecto, fue la implementación de las librerías en el código, dado que el manual del SDK no es muy especifico en como agregar todas las librerías necesarias para poder inicializar y en consecuencia leer los sensores. Por ello se utilizo bastante tiempo en investigar que comandos eran necesarios agregar en la etapa de compilación. Estos comandos de compilación se pueden ver en el el archivo gui1.pro en el directorio: Proyecto_Oculus_Rift/proyecto_gui1/gui1/
Así por lo tanto en la siguiente imágen se muestra el resultado al ejecutar el programa, estando el Oculus Rift conectado y funcionando.

Prueba

Figura 4:Resultados obtenidos
Integrantes: