"Kinect technologies permit us dream with the future"  [ESPAÑOL]  [ENGLISH]

Initialize KinectSensor – Inicializando el sensor Kinect.


Posted on enero 25th, by Marcal Montserrat in C#, Investigación y Desarrollo [I+D+I], Kinect, Programación. No Comments

La semana pasada explicamos cómo iniciar un proyecto en Visual Studio para poder empezar a programar para Kinect. En el siguiente post empezaremos a trabajar con el sensor y os enseñaremos que funciones son necesarias para la inicialización de Kinect.

La inicialización del sensor es un proceso que no se puede realizar hasta que se obtiene el valor de sensor conectado.  Para hacer esta comprobación utilizaremos una propiedad llamada Kinect. Por otro lado, monitorizaremos el estado del sensor (conectado, desconectado) con un método llamado KinectSensors_StatusChanged. Veamos el código:

[sourcecode language="csharp"]
#region propiedades

private KinectSensor _Kinect;

public KinectSensor Kinect
{
get { return this._Kinect; }
set
{
if (this._Kinect != value)
{
if (this._Kinect != null)
{
//Aqui UNinicializamos el senor.
this._Kinect = null;
}
if (value != null && value.Status == KinectStatus.Connected)
{
this._Kinect = value;
//Ahora inicializamos el senor.
}
}
}
}
#endregion propiedades

#region metodos
private void KinectSensors_StatusChanged(object sender, StatusChangedEventArgs e)
{
switch (e.Status)
{
case KinectStatus.Connected:
if (this.Kinect == null)
{
this.Kinect = e.Sensor;
}
break;
case KinectStatus.Disconnected:
if (this.Kinect == e.Sensor)
{
this.Kinect = null;
this.Kinect = KinectSensor.KinectSensors.FirstOrDefault(x => x.Status == KinectStatus.Connected);
if (this.Kinect == null)
{
//Aqui avisaremos que el sensor ha estado deconectado.
Console.WriteLine("El sensor ha sido desconectado");
}
}
break;
}
}
#endregion metodos
[/sourcecode]

Para inicializar o UNinicizliar el sensor utilizaremos las siguientes funciones:

[csharp]
private void InitializeKinectSensor(KinectSensor sensor)
{
if (sensor != null)
{
//arrancamos el sensor
sensor.Start();
}
}

private void UninitializeKinectSensor(KinectSensor sensor)
{
if (sensor != null)
{
//aqui paramos el sensor
sensor.Stop();
}
}
[/csharp]

Estas dos funciones debemos llamarlas dentro de la propiedad Kinect para que en función del estado del sensor se lance una u otra. El código debería quedar de este modo:

[csharp]
public KinectSensor Kinect
{
get { return this._Kinect; }
set
{
if (this._Kinect != value)
{
if (this._Kinect != null)
{
UninitializeKinectSensor(this._Kinect);
this._Kinect = null;
}
if (value != null && value.Status == KinectStatus.Connected)
{
this._Kinect = value;
InitializeKinectSensor(this._Kinect);
}
}
}
}
[/csharp]

Para ver que el sensor se inicializa sólo debemos hacer una modificación más. En el constructor introduciremos dos líneas más:

[csharp]
KinectSensor.KinectSensors.StatusChanged += KinectSensors_StatusChanged;
this.Kinect = KinectSensor.KinectSensors.FirstOrDefault(x => x.Status == KinectStatus.Connected);
[/csharp]

La primera sentencia comprueba el estado del sensor durante la ejecución del programa y la segunda hace referencia a la propiedad que a su vez llama a la función InitializeKinectSensor que arranca el sensor.

Si lo probáis observareis que en el sensor se enciende el haz de infrarrojos.

Con el sensor inicializado ya podríamos empezar a recibir los diferentes Streams de datos que Kinect recoge y poder trabajar con ellos.





Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



Últimos POST »

En Kinect for Developers trabajamos para tener actualizado nuestro Blog, con las últimas noticias y novedades sobre Kinect.
También vamos publicando información y detalles sobre todas las aplicaciones y proyectos que desarrollamos desde Kinect for Developers.

» Recomendamos visitar asiduamente nuestro Blog para estar a la última sobre Kinect.

Características Kinect 2

Dicen que lo bueno se hace esperar. Somos “pocos”los que hemos podido hacernos con un ejemplar del nuevo sensor de Microsoft, el Kinect for...

Kinect for Windows SDK 1.8

El 17 de septiembre salió a la luz la versión 1.8 del SDK para Kinect. Posiblemente este post debería haberse hecho entonces pero la...