Reto SDK de Kinect: Desarrolla con Kinect

Imprescindible

Descargar el SDK de Kinect para Windows y tener alguna versión de Visual Studio 2010. Te puedes bajar la versión gratuita de Visual Studio 2010 Express o de la Ultimate Trial.

Para programar con el SDK utilizaremos la herramienta de desarrollo Visual Studio 2010 y Windows 7. Para ver más información sobre requerimientos previos y qué se puede hacer con la SDK de Kinect visita el post referente al SDK de Kinect en nuestro blog de MSDN.

Estamos atentos a tus comentarios en el twitter de @esmsdn y en el hashtag #retosmsdn.

Antes de empezar…

Antes de desarrollar aplicaciones con Kinect vamos a explicar un poco qué es Kinect. Kinect es un dispositivo creado para jugar a los videojuegos de Xbox360 sin necesidad de ningún mando o controlador. Nos da la posibilidad de poder interactuar con nuestro propio cuerpo en el videojuego.

El sensor Kinect posee 2 cámaras de profundidad por infrarrojos y una cámara RGB. Con los datos de profundidad se realiza un seguimiento esquemático de nuestro cuerpo (Skeletal Tracking) para poder llevarlo al juego. También tiene una serie de micrófonos para diferenciar el sonido del juego y ambiental del de nuestra voz y una base motorizada para cambiar el ángulo de visión.

Junto con el sensor de Kinect debemos tener un cable USB con fuente de alimentación para conectarlo a la corriente y al ordenador.

imageimage

Primeros pasos

Una vez tenemos el sensor Kinect y un ordenador con Windows 7 y Visual Studio 2010 podemos proceder a descargarnos el SDK de Kinect para Windows eligiendo la versión de 32-bit o 64-bit.

Cuando esté descargado hay que tener en cuenta antes de instalar que no debemos tener instalado ningún otro driver de Kinect, el sensor no debe estar conectado ni Visual Studio abierto. Si esto se cumple podemos proceder a la instalación del SDK ejecutando el archivo descargado.

image

Después de pasar la pantalla de inicio de la instalación, donde nos informan que se va a instalar el “SDK de Kinect para Windows Beta”, nos aparece un mensaje avisándonos que ciertos ejemplos que vienen con el SDK necesitan el último directX SDK. Seguiremos los pasos del asistente para instalar correctamente el SDK.

Ya tenemos el SDK, ahora vamos a enseñar el proceso para conectar el sensor Kinect al ordenador.

Cogemos la fuente de alimentación y la conectamos a la corriente.

El siguiente paso es conectar el otro extremo del cable (con el LED en verde) de la fuente de alimentación al sensor por medio del cable USB

Por último conectamos el cable USB que sale de la fuente de alimentación a un puerto USB libre del ordenador.

Si está conectado correctamente tiene que parpadear el LED verde del sensor.image

image

Cuando lo conectemos nos aparece en pantalla un mensaje informándonos de que se está instalando un driver de un dispositivo nuevo.

image

Si hacemos clic podemos ver más información sobre el proceso. Se muestra el estado de la instalación de los driver para utilizar el dispositivo, el control de audio, la cámara y el control del array de los micrófonos.Cuando se acaba de instalar los diferentes drivers ya estamos listos para usar el sensor.

imageimage

Si vamos a “Panel de control-> Sonido y hardware-> Administrador de dispositivos” nos aparece el sensor instalado:

image

Para asegurarnos que funciona nos dirigimos a “C:\Program Files\Microsoft Research KinectSDK” o la ruta que hayamos elegido para la instalación del SDK y ejecutamos el programa Skeletal Viewer o Shape Game que son 2 programas de ejemplo que se instalan con el SDK.

image  image

                              Shape Game                              Skeletal Viewer

Shape Game es un juego en el que el propósito es golpear las figuras que caen. También tiene reconocimiento de voz (en inglés) pudiendo dar órdenes sobre el tipo de figuras que caen, tamaño, color, velocidad…

Con el Skeletal Viewer podemos ver el funcionamiento de los 2 tipos de cámaras que tiene el sensor, profundidad a la izquierda y RGB a la derecha, y del Skeletal Tracking en el centro.

Preparar el proyecto

Ya toca ponerse manos a la obra. Vamos a crear un proyecto para iniciarnos en la programación con el SDK de Kinect para Windows y que servirá como proyecto base para tus aplicaciones.

Abriremos Visual Studio 2010 y nos crearemos un proyecto WPF (Windows Presentation Foundation).Le damos un nombre y aceptamos.

image

Cuando finalice el proceso de creación y preparación de la solución se abrirá el panel de diseño con la ventana principal (MainWindows.xaml) de la aplicación y el explorador de proyectos a la derecha. Desplegaremos el nodo de MainWindow.xaml para acceder al fichero MainWindow.xaml.cs (el code-behind de la ventana) para empezar a programa en él.

image

Para poder programar con el SDK de Kinect deberemos agregar una referencia a nuestro proyecto. Presionamos con el botón derecho del ratón encima de “References” elegimos “añadir referencia”. Nos aparecerá un cuadro de diálogo en el que seleccionaremos la referencia al SDK “Microsoft.Research.Kinect” y aceptamos. Después de aceptar veremos como se ha agregado una nueva referencia a nuestro proyecto que corresponde al SDK.

image    image    image

Con la referencia agregada añadiremos el espacio de nombres a junto con los demás usings de nuestro fichero para poder utilizar las clases y métodos del SDK.

using Microsoft.Research.Kinect.Nui;

Dentro del constructor (método MainWindow()) de nuestra ventana añadiremos el evento Loaded, donde pondremos el código para inicializar el sensor, y el evento Closed para finalizar el uso. Esto nos creará, presionando la tecla “Tab”, los 2 métodos (MainWindow_Loaded y MainWindow_Closed) que capturarán los eventos creados y se ejecutará el código que pongamos en ellos cuando estos eventos se produzcan.

public MainWindow()

{

InitializeComponent();

Loaded += new RoutedEventHandler(MainWindow_Loaded);

Closed += new EventHandler(MainWindow_Closed);

}

Crearemos un atributo de la clase Runtime, clase que hace referencia al sensor Kinect y que instanciaremos e inicializaremos más adelante.

Runtime kinect;

Dentro del método MainWindow_Loaded creamos la instancia para controlar el sensor e inicializaremos el sensor con las opciones que queremos usar. Tenemos 4 opciones para especificar el uso de la cámara RGB, de la de profundidad y del Skeletal Tracking.

La cámara de profundidad se puede usar con la opción de sólo profundidad o profundidad con índice de jugador. Si ponemos la segunda opción los datos de la cámara de profundidad contendrán también un índice para saber si los datos corresponden a un jugador u otro o a ninguno. Como ejemplo vamos a inicializar con 3 opciones. Color, profundidad con índice de jugador y Skeletal Tracking.

void MainWindow_Loaded(object sender, RoutedEventArgs e)

{

kinect = new Runtime();

kinect.Initialize(RuntimeOptions.UseColor | RuntimeOptions.UseDepthAndPlayerIndex | RuntimeOptions.UseSkeletalTracking);

}

Por último en el método MainWindow_Closed finalizaremos el uso del sensor. Cuando se cierre la aplicación ya no lo estaremos usando.

void MainWindow_Closed(object sender, EventArgs e)

{

kinect.Uninitialize();

}

Con esto ya tenemos la estructura de nuestro proyecto preparada para empezar a utilizar las funcionalidades que nos ofrece el SDK en nuestra aplicación.

Tu turno… ¡el Reto! – Kinect arriba y Kinect abajo

Con el SDK aparte de poder utilizar las cámaras y el Skeletal Tracking podemos cambiar el ángulo de visión de las cámaras gracias al motor que tiene el sensor. Como reto te propongo crear una interfaz para poder manejar este motor y puedas subir y bajar el sensor.

Pista: NuiCamera

Recursos: Post sobre Kinect en el blog de MSDN, documentación sobre el SDK de Kinect y centro de desarrollo de WPF

Solución: https://msdn.microsoft.com/es-es/windows/hh433427

Participa: twitter de @esmsdn o hashtag #retosmsdn.

¡A Kinectear!

José Perona – @JVPerona - Developer Evangelist Jr.

 

Ver el segundo Reto SDK de KinectUsar las cámaras del sensor

Ver el tercer Reto SDK de Kinect: Detectar posturas con Skeletal tracking

Ver el cuarto Reto SDK de Kinect: Reconocer gestos con Skeletan tracking