Páginas

jueves, 3 de mayo de 2012

[Emb Comb Lab] Juego con Stars Wars The Force Trainer

Para la competencia del iPad tuvimos que desarrollar un juego utilizando este dispositivo. Para ello habia que hackear el MindReader y despues interfacear el mismo al Arduino.

Este es el tutorial hecho por el compañero Saul para lograr dicho objetivo:

LINK: Como hacer un hack a un dispositivo EEG con Arduino

Preparación


Primero que nada hay que instalar la IDE de Arduino, aqui un minitutorial hecho por mi

LINK: Programando con Arduino

Después hay que instalar la librería Brain, los pasos son sencillos:
  • 1. Descargar la libreria de aquí: Arduino Brain Library
  • 2. Descomprimimos y la agregamos a la carpeta libraries en la carpeta de Arduino, en mi caso el path es:


    Y ya dentro:


Esto nos permitirá exportar la libreria y utilizar el ejemplo BrainSerialOut que viene en la IDE de Arduino, lo encontramos así:


Así se ve el sketch, si se fijan en la función loop comente la línea Serial.println(brain.readErrors()); , esto es para que no nos regrese ninguna otra información que no sean los datos que nos interesan del MindReader.


Ahora simplemente lo compilamos y lo subimos a nuestro Arduino conectado al MindReader, con el botón UPLOAD

Yo usé Python para el juego, entonces, para escuchar los datos enviados por Arduino debemos instalar pySerial, los pasos son ultra sencillos:

El juego


El juego lo llame Magic Warriors!.


El objetivo del juego es sencillo, se trata de algo parecido a hacer Genkidamas. Según tu nivel de concentración es la cantidad de energía que se agrega a la Genkidama, asi pues, de todos los datos que me da el MindReader solo me quedo con dos que son atención y meditación; dichos valores se suman y se saca un promedio, el promedio es la energía que se agrega cada segundo a la Genkidama. Básicamente son sumas, del valor anterior mas el nuevo valor durante un tiempo determinado que son 5 segundos.

Por el lado de la CPU, es una simple sumatoria que se realiza mediante números random, que, según la dificultad, son obtenidos dentro de determinado rango. Entre mayor es el nivel el rango es más ajustad y se mueve hacia valores más altos.

El ganador se selecciona comparando quién acumulo la mayor cantidad de energía, una comparación entre tu sumatoria final y la del CPU.


Código relevante



El juego fue desarrollado utilizando pygame, la temática es simple, y como ven el cálculo que realiza es super sencillo, entonces, veamos algunas partes relevantes del código desarrollado.

Escuchando al Arduino



Jugador y Enemigo



La Batalla!!



Lo demas ya son funciones propias de python para interconectar clases, enviar variables y bueno, los métodos obligados de PyGame para la asignación de teclas y demás. Por ultimo, les dejo las librerías que utilice por si a alguien le interesa.



Espero que les guste, lo que falta es obviamente lo gráfico en en 6 horas fue imposible de terminar, adicional quise agregar algo de interactividad con OpenCV, NADA DE TECLAS!!, quería hacer que el juego se controlara con movimientos en la webcam, hacer un movimiento con el brazo para avanzar entre pantallas y levantar los brazos como si realmente estuvieras haciendo la Genkidama para recargar energía, pero bueno, eso era mas complejo, y ademas quería imprimir los valores del EEG en todo momento pero igual, por falta de tiempo no pude instalar las dependencias y demás.

Sin embargo, me divertí mucho haciéndolo y deseo terminarlo un día de estos, comprar mi EEG y todo el rollo porque realmente estuvo genial.

Bueno, esa fue mi idea en la competencia, espero les haya gustado :)

1 comentario: