giovedì 29 marzo 2012

Kinect: Gestiamo l’elevation angle del dispositivo

I cambiamenti apportati nell’SDK del Kinect rilasciata a febbraio scorso riguardano anche la gestione della modalità con cui si controlla l’angolo di elevazione del dispositivo.

Anche in questo caso, il punto di ingresso della gestione del dispositivo è l’istanza della KinectSensor che si ottiene come già abbiamo più volte visto nei precedenti articoli:

  1. If KinectSensor.KinectSensors.Any() Then
  2.     Sensor = KinectSensor.KinectSensors(0)
  3.     If Sensor.Status = KinectStatus.Connected Then
  4.         Try
  5.             Sensor.Start()
  6.         Catch ex As Exception
  7.  
  8.         End Try
  9.     End If
  10. End If

Possiamo osservare che, per quanto riguarda la mera gestione dell’alzo, non è necessario abilitare alcuno stream, ma generalmente daremo all’utente un’anteprima di ciò che è inquadrato per permettergli di capire se l’alzo impostato è quello corretto.

  1. If KinectSensor.KinectSensors.Any() Then
  2.     Sensor = KinectSensor.KinectSensors(0)
  3.     If Sensor.Status = KinectStatus.Connected Then
  4.         AddHandler Sensor.ColorFrameReady, AddressOf ColorFrameReadyHandler
  5.         Sensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30)
  6.         Try
  7.             Sensor.Start()
  8.         Catch ex As Exception
  9.  
  10.         End Try
  11.     End If
  12. End If

La classe KinectSensor mette a disposizione tre proprietà che ci permettono di gestire il tutto:

image

La proprietà ElevationAngle, di tipo Integer, contiene l’angolo (in gradi) corrente del dispositivo e, nel momento in cui la impostiamo con un valore valido (vedremo in seguito quali sono), viene eseguito il brandeggiamento verticale del Kinect dall’attuale valore dell’angolo a quello impostato.

ElevationAngle è una proprietà di istanza, quindi deve essere utilizzata su un’istanza valida della classe KinectSensor.

La proprietà MaxElevationAngle, di tipo Integer, contiene il massimo valore dell’angolo verticale (in gradi, verso l’alto) raggiungibile dal dispositivo.

La proprietà MaxElevationAngle è, anch’essa una proprietà di istanza, il che, potenzialmente significa che, in futuro potremmo avere dispositivi connessi al nostro PC con differenti angoli di azimuth.

La proprietà MinElevationAngle, di tipo Integer, contiene il minimo valore dell’angolo verticale (in gradi, verso l’alto) raggiungibile dal dispositivo.

L’angolo 0 è l’angolo che posiziona il Kinect orizzontalmente.

Attualmente i valori degli angoli ammessi sono tra -27° e +27°.

La soluzione allegata propone un semplice client per gestire l’azimuth del Kinect.

 

Nessun commento: