Skip to main content

Kinect Hacking

De éxito comercial a plataforma homebrew.

No ha sido una semana particularmente buena para los hackers, con las críticas al proceso de abrir una plataforma de hardware por sus lazos con la piratería. Sin embargo, la reciente ingeniería inversa aplicada al Kinect de Microsoft demuestra de forma efectiva como el hacking puede liderar la innovación en el homebrew sin que ello tenga ningún impacto en el negocio de la gente que trabaja en la industria del videojuego.

Se hizo ingeniería inversa al hardware de Kinect a los pocos días de su lanzamiento para que funcionase con un PC, con el hacker Hector Martin (miembro del grupo Fail0verflow y por tanto objetivo de la demanda de Sony) revelando que Microsoft no había hecho nada para proteger al hardware de ser utilizado en cualquier otra plataforma que tenga la conexión USB necesaria (un hack para PS3 podría aparecer en cualquier momento, de hecho). Kinect ha sido una plataforma abierta desde el primer día, siendo la creación de unos drivers de interfaz la única tarea que los hackers debían realizar.

Microsoft ha reconocido que tiene planes para llevar Kinect al PC, pero las credenciales para el homebrew de la plataforma recibieron un duro revés cuando los arquitectos tecnológicos de la tecnología base - la compañía israelí PrimeSense - publicaron unos drivers oficiales para Kinect junto con la forma de integrarlo en su propio sistema de middleware, NITE: la llamada iniciativa OpenNI. En este punto cualquiera podría decir que el hacking de Kinect se convertía en algo obsoleto para dejar paso a una nueva plataforma con herramientas públicas programadas por los creadores de la tecnología original.

Esas herramientas, desde luego, proporcionan un gran avance a la comunidad. El software NITE, por ejemplo, interpreta los datos de profundidad de Kinect y permite reconocimiento de esqueleto, entre otras cosas. En pocas semanas, usar Kinect en un PC pasó de ser un hack básico a algo mucho, mucho más completo - las herramientas están ahí para permitir a los desarrolladores homebrew crear sus propias aplicaciones y juegos con "interfaz natural de usuario".

Una de las primeras demos verdaderamente impresionantes que demuestran el potencial de la tecnología fue la demo de videocámara 3D de Oliver Kreylos. En este genial experimento combinó la imagen de la cámara RGB convencional con los datos de profundidad para producir una webcam con profundidad 3D que también puede usarse para medir de forma precisa objetos. La única limitación que podemos ver es que solo había un set de datos de profundidad, con lo cual un objeto que estaba detrás de otro no puede verse, por ejemplo. Pese a que hubo gente que afirmó que no era posible, Kreylos mejoró su hack para que funcionara con dos sensores Kinect y entonces la noción de un espacio virtualizado en 3D casi por completo se convirtió en una realidad.

Las demos de Oliver Kreylos usando un Kinect (izquierda) y dos (derecha) muestra como la cámara y los datos del sensor de profundidad se pueden unir para crear una vista 3D del entorno.

Con el lanzamiento de los drivers oficiales de Kinect y la iniciativa OpenNI no pasó mucho tiempo hasta que los desarrolladores homebrew empezaron a experimentar con las posibilidades de integrar la cámara con los juegos existentes para PC. Para ello se publicó el FAAST (Flexible Action and Articulated Skeleton Toolkit), un conjunto de herramientas de software que permiten a cualquiera con los conocimientos necesarios remapear los datos de esqueleto de Kinect a los tradicionales inputs de teclado y ratón.

Por ahora ya hemos visto varios juegos adaptados con este sistema: Super Mario Bros con funcionalidad Kinect y World of Warcraft con un control basado en una serie de limitados gestos. Demize2010 llevó ese concepto un poco más lejos, combinando Kinect y un Wiimote para permitir que los shooters operen de forma más efectiva.

En todos los hacks que hemos visto hasta ahora la implementación jugable quizás sea lo más flojo. Los juegos se construyen de forma intrínseca alrededor de sus esquemas de control, y la idea de meter con calzador un sistema completamente diferente basado en el seguimiento del cuerpo o en gestos simplemente no funciona. Poco se puede conseguir cuando literalmente se remapean los controles existentes a los datos de Kinect, y los problemas de lag son claramente visibles.

Las demos también ilustran un par de cosas más. Primero, los juegos realmente necesitan crearse de cero para tener en cuenta las capacidades de Kinect - y, por supuesto, sus limitaciones. Segundo, los logros de los desarrolladores de Xbox 360 al conseguir que sus juegos funcionen tan bien es algo que hemos dado por hecho (aunque quizás a veces su código ofrece una gran ayuda).

Las demos de gameplay creadas por los entusiastas no parecen especialmente jugables, pero la combinación de Kinect y el Wiimote en un único sistema de control es una propuesta tentadora.

Sin embargo, la comunidad homebrew ha conseguido logros considerables al experimentar con instrumentos musicales virtuales.

La representación para PC usando Kinect del piano que usaba Tom Hanks en Big obtuvo bastantes aplausos, pero una demo menos conocida muestra un concepto homebrew que realmente podría ser usado en un futuro juego. Esta demo de Air Guitar es algo francamente impresionante.

Los juegos de música y baile tienen una ventaja inherente sobre otros estilos jugables. Como los movimientos que pides replicar se pueden anticipar, el lag puede eliminarse de la ecuación (como en Dance Central, por ejemplo), así que los desarrolladores tienen todo el tiempo del mundo para procesar los movimientos adecuadamente. La única duda es lo sensible y preciso que es Kinect para medir la posición de los dedos según la orientación de las manos del jugador, y corren rumores de que Microsoft podría haber buscado la forma de aumentar la precisión reajustando el flujo de datos USB. Ahora mismo los juegos de Kinect usan un mapa de profundidad a 320x240, pese a que el hardware es capaz de llegar a cuatro veces esa resolución.

Aunque las demos con juegos de PC pueden ser desalentadoras, esta implementación de air guitar muestra grandes opciones para el género musical.

Más allá de las implementaciones jugables, el trabajo de concepto que ha rodeado la publicación de los drivers de Kinect muestra algunos usos muy prácticos de la tecnología, aunque minoritarios. Ya comentamos en su momento, por ejemplo, el gran valor que tenía la cámara para los entusiastas amateur de la robótica.

Conectando una cámara a un robot se puede conseguir una visión remota, pero hay pocos datos reales que se puedan derivar de una imagen básica como esa. Los viejos perros robot AIBO de Sony incorporaban sensores adicionales para evitar que el trasto colisionase con objetos y cayese por las escales. Al añadir una cámara de profundidad como Kinect, los robots pueden detectar objetos a un rango mucho mayor y esquivarlos de forma más natural. Los robots también pueden identificar humanos y reconocer gestos como órdenes, o incluso usar datos de esqueleto para imitar el movimiento del cuerpo.

La combinación de cámaras RGB y de profundidad es francamente útil para la robótica amateur. La percepción de profundidad ayuda a que estos dispositivos esquiven obstáculos.

Más allá de aplicaciones prácticas como esta, también se ha hecho un gran trabajo homebrew para replicar algo parecido a la interfaz de Minority Report, o al menos para manipular objetos con las manos. Hay demos que hacen tracking de los dedos de forma individual, generando un efecto tipo multitouch que eclipsa cualquier cosa vista en Xbox 360 en términos de precisión. ¿Hay realmente algo en este apartado que Microsoft puede aprender de la escena homebrew?