Esta tarde se ha lanzado el driver + SDK oficial (beta) para el Microsoft Kinect! Había mucha expectación al lanzamiento del SDK… el caso es que no ha sido muy sorprendente que estas librerías sean totalmente distintas a las que se utilizan para desarrollar videojuegos para XBOX 360, y que además su licencia incluya el uso no comercial de las aplicaciones desarrolladas. En definitiva: que es un SDK para experimentar, y muy fácil de usar. Las posibilidades tanto a nivel académico como profesional (aunque sea a nivel experimental) son enormes. Además todo ello viene acompañado con varios ejemplos y documentación (tanto en C++ como C#), descargables en: http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/
Además he podido ver en la documentación que la SDK proteje del «mal uso» que podamos hacer de Kinect, así que es prácticamente imposible estropear el hardware desde nuestro código (ya sea a nivel de motor o lentes). Eso es muy positivo, porque de no existir algunas limitaciones sobre el uso de los sensores, según la documentación sería relativamente sencillo estropear el dispositivo.
Lo que sí me ha sorprendido un poco es que Microsoft Research comente en su documentación que no se haya testado el SDK sobre XNA. Mal asunto! En mi caso he querido hacer una primera prueba, que a estas horas de la noche creo que no es lo mejor del mundo, pero es mi primer hello world 🙂 El ejemplo pinta por pantalla los datos obtenidos por la cámara de profundidad, por la cámara de vídeo, y los puntos de unión del esqueleto detectado (puntos rojos en la captura).
Cosas chulas del SDK:
- Permite acceso «raw» a todos los sensores
- Seguimiento del esqueleto
- Increïbles funcionalidades de audio como reconocimiento de voz, que permiten reconocer el orígen del sonido, e incluso interpretar órdenes
- Documentación completísima, y ejemplos listos para funcionar, como este «minijuego», que es genial: http://research.microsoft.com/apps/video/default.aspx?id=150286
Varias observaciones / datos curiosos tras hacer esta pequeña prueba de XNA + Kinect:
- Las imágenes obtenidas de la cámara de vídeo y de profundidad funcionan a 30fps, con una resolución de 640×480 y 320×240 respectivamente.
- La velocidad de refresco del esqueleto en XNA es horrible, aunque supongo que debo tener algun fallo en el código…
- Los puntos del esqueleto están pintados en la pantalla sobre un vector 2D, no un vector 3D (obviamente el SDK devuelve parámetros tridimensionales).
He adjuntado el Hello World de XNA + Kinect por si álguien quiere jugar un poco con él 🙂