El pasado mes de septiembre, tras cinco intensos años, acabé la carrera de Ingeniería Informática. Como es normal en las ingenierías, tuve que hacer el Proyecto Fin de Carrera (PFC). Tras cambiar dos veces de proyecto (primero un desarrollo para Second Life, que nunca me terminó de convencer, y posteriormente otro de red social), acabé realizando bajo la supervisión de mi director de proyecto David Contreras uno centrado en el Wiimote de Nintendo. Para mí, mucho más motivador e interesante.
Inicialmente me familiaricé con las librerías de desarrollo de Wiimote para C# (podéis ver tutoriales que escribí en Ohmybug.com #1, #2, y #3) y estuve estudiando los famosos desarrollos de Johnny Chung Lee, que si bien son impresionantes (y mucho más en su momento), no tenían una aplicación práctica directa. El objetivo principal de mi proyecto era crear una serie de aplicaciones que sacasen partido a las ideas de Johnny y que tuviesen una función más “real”, y por lo tanto más orientada al usuario final.
Tras crear varias aplicaciones de prueba para familiarizarme con las librerías, creé otras con más “sustancia” y una aplicación más directa. Y como he venido aquí a hablar de mi libro mis aplicaciones, pues os las cuento con algo más de detalle:
Funcionamiento general
Una de las ideas más originales que tuvo Johnny fue la de cambiar el punto de vista del propio Wiimote. El mando fue concebido para ser utilizado en mano y gracias a los acelerómetros y la cámara de infrarrojos, captar los movimientos de la mano del usuario. Dicha cámara capta la posición de varios leds de infrarrojos situados en la barra que se suministra con la consola y que hay que situar encima o debajo de la pantalla de televisión. Lo que hizo Johnny en algunos de sus experimentos fue darle la vuelta a ese esquema, y que fuera el mando el que permaneciese estático encima o debajo de la pantalla, mientras que el usuario se responsabilizara de emitir luz infrarroja.
Para emitir dicha luz infrarroja, puede usarse un lápiz dotado de un led infrarrojo, o un guante con la misma función. En ambos casos existe la posibilidad de encender y apagar la luz mediante un pulsador, para que el Wiimote “nos vea” sólo cuando nos interese.

Todas las aplicaciones que podéis ver a continuación comparten este funcionamiento. En su proceso de creación quise darle un uso más práctico a estas ideas. Y como es más fácil entender todo esto en movimiento, os pongo unos vídeos:
WiiAirBoard
De las tres aplicaciones que muestro, ésta es la más sencilla pero a la vez muy vistosa. Se trata de realizar trazados en el aire y trasladarlos a un programa de dibujo (como el Paint de Windows), de forma que de la sensación de estar “pintado en el aire”, por decirlo de alguna manera. Basta con mantener pulsado el botón del guante o boli para dibujar (se enciende la luz infrarroja) o soltarlo para no hacerlo.
WiiGestures
La segunda aplicación también ha sido pensada para utilizar como capa intermedia entre el Wiimote y aplicaciones convencionales. Lo que hace es detectar un total de ocho posibles gestos (horizontales, verticales y diagonales) y realizar una acción en base a ello. La acción es mapeable a teclas del teclado, es decir, si hacemos, por ejemplo, un gesto horizontal hacia la izquierda con la mano (y la luz infrarroja activada) se simulará que se ha pulsado la tecla de la flecha izquierda (o la que hayamos configurado).
En el siguiente vídeo se puede ver como avanzo y retrocedo a través de una serie de imágenes con números utilizando el visor de Windows. Lo cierto es que en este ejemplo demuestro poco las posibilidades de la aplicación, ya que sólo utilizo dos de los ocho gestos disponibles, pero creo que al menos explica bien la idea de WiiGestures.
Un uso bastante útil y que utilicé en mi defensa del proyecto fue pasar las diapositivas de Powerpoint haciendo movimientos hacia la derecha (avanzar) y hacia la izquierda (retroceder).
WiiHome
Por último una aplicación que sí dispone de un interfaz gráfico propio (los otros tienen únicamente una ventana de configuración). WiiHome está pensado para controlar la casa mediante dispositivos domóticos. Ejemplos: encender y apagar una luz, la televisión, activar o desactivar una alarma, etc. Para ello he diseñado un interfaz con botones grandes y que permite recorrer virtualmente la casa a través de un mapa para elegir habitación, y una serie de fotos con las que poder ver las distintas perspectivas de cada una de ellas. En una de estas perspectivas es posible tocar uno o varios elementos para activarlo. Por ejemplo, podemos “tocar” (que he implementado como apagar y encender la luz del guante rápidamente dos veces -- una especie de doble clic -- utilizando el pulsador) una lámpara y se encenderá, quedando reflejado su estado en la propia perspectiva. Si la volvemos a tocar, se apagará. Además, disponemos de un mapa para elegir habitación, y unas flechas para elegir la perspectiva.
Podéis entender mejor cómo funciona en el siguiente vídeo:
Para manejar las lámparas he utilizado controladores y actuadores con el protocolo de domótica X10. Donde creo que esta aplicación tiene más sentido y utilidad es en tener el control de la casa en entornos poco amigables con el teclado y ratón como puede ser la tele del salón, donde no se suelen poder manejar de forma cómoda estos dispositivos.
Pancho Opcionweb
17/05/2009 a las 19:43
Impresionante!!! y cuando presentas el proyecto? Ya nos dirás que tal fue. Un saludo, nos leemos.
fbeeper
17/05/2009 a las 22:06
Interesante apuesta, felicidades
En el WiiHome utilizas un esquema diseñado especificamente para tu casa? tiene pinta de ser complicado de llevar eso a sitios distintos, no? Tener que dar todos los detalles de la casa, los planos y tal… cuentanos como lo haces!
fbeeper
gamezer0
18/05/2009 a las 8:37
@Pancho
Pero si ya está presentado!!
Fue el pasado septiembre
@fbeeper
Hombre pues sí, lleva tiempo recrear la casa para que tenga esa interactividad. Hay que hacer fotos, editarlas, crear planos… vamos que no se hace en 5 minutos. Lo suyo sería crear un programa específico para esas tareas y que te genere tu propio WiiHome de forma más sencilla, pero bueno creo que solo eso para que quedase bien ya sería un proyecto completo
=)
18/05/2009 a las 12:17
Qué proyecto más chulo!!! y qué bien redactado!
jajaja
xelerad
28/05/2009 a las 9:44
Buenas, gamezer0.
De primeras, felicitarte por esta entrada y por el proyecto, muy personal, interesante y con una utilidad real y realizable, sobre todo me encanta el WiiHome, aunque los otros dos son también la leche.
Hace ya bastante tiempo que ballener0 me instó a hablar contigo por este tu PFC, ya que yo estaba buscando una manera efectiva de utilizar los instrumentos del Guitar Hero World Tour de la Wii como controladores midi, en especial la batería. Hasta el momento, el método que he utilizado es un tanto precario y no da el mejor resultado posible: conectar el mando via Bluetooth con el pc (sólo lo he conseguido bien con drivers BlueSoleil y en WinXP, en vista no terminaba de ir) y capturar los eventos del WiiMote con un programilla de scripts, GlovePIE, que tiene incluida la opción de traducirlo a mensajes midi.
El problema de este método es que el propio GlovePIE no es capaz de escanear los eventos suficientemente rápido como para pillar todos los golpes de la batería (independientemente de la rapidez con la que toques, pierde un golpe de cada X). Por tanto quería preguntarte si sabes de algunas librerías (buenas y gratuitas a poder ser) para trabajar con midi. Lo malo es que yo nunca he programado en C#, así que de planteármelo debería dejarlo para verano como proyecto personal aparte. Pero claro, prefiero primero preguntar.
Probablemente, de encontrar una manera buena de hacer esto, empezaría a intentar hacer perrerías, tanto con el wiimote como guitarra/batería, pues los sensores de movimiento darían mucho juego, sobre todo como controladores contínuos (desde un sencillísimo disparo de samples hasta modificar frecuencia de corte de filtros de un sintetizador, o incluso usarlo a modo de “pitch wheel” bizarra).
Si quieres contestarme por mail, creo que lo debes tener por ahí de algún correo de WTB o sino pregunta a ballener0.
¡Un saludo, tío!
salvador azuara
06/06/2009 a las 2:02
hola antes que nada te felizito por tus proyectos quisiera que me ayudaras para poder precentar unas diapositivas en power pint como le ago para retroceder con el wii ayudame porfavor ya que estoy haciendo una pizarra de vajo coste me urge mi correo es latortugacyber@hotmail.com