10 de agosto de 2012

Cambiar angulo de elevación del kinect

En el anterior ejemplo hacíamos uso de la imagen de profundidad del kinect y explicaba que era necesario inicializar las cámaras que se iban a utilizar. El siguiente ejemplo no hace uso de ninguna de las cámaras del kinect por lo que es posiblemente el código mas sencillo que se podría hacer usando el kinect.

Como en el ejemplo anterior, es necesario agregar la referencia del kinect SDK para poder acceder a las funciones que este nos brinda. El código es el siguiente:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Kinect;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Indicamos que sensor vamos a usar y lo inicializamos
            KinectSensor sensor = KinectSensor.KinectSensors[0];
            sensor.Start();

            while (true) //Ciclo sin fin
            {
                //Imprimimos el angulo actual de elevación
                Console.WriteLine("Angulo actual: " + sensor.ElevationAngle);
                //Solicitamos uno nuevo
                Console.Write("Nuevo angulo: ");
                //Convertimos el numero ingresado por el usuario en entero
                int angulo = Convert.ToInt32(Console.ReadLine());

                // Si el angulo ingresado se encuentra 
                // entre los valores permitidos por el kinect [-27,27]
                // Cambia el angulo de elevacion del kinect por el que fue
                // ingresado. Si el angulo no es valido
                // Muestra un mensaje y no realiza el cambio.
                if (angulo < sensor.MaxElevationAngle && angulo > sensor.MinElevationAngle)
                {
                    Console.WriteLine("Cambiando angulo...");
                    sensor.ElevationAngle = angulo;
                    Console.Clear();
                }
                else 
                {
                    Console.Clear();
                    Console.WriteLine("Angulo no valido, ingrese uno entre -27 y 27");
                }
            }
        }
    }
}

El resultado es una consola que nos indica el valor de inclinación actual del kinect y nos pide un valor nuevo de inclinación. Por las características físicas del kinect este valor de inclinación solo puede estar entre -27 y 27. Ademas debemos tener presente que el valor de inclinación del kinect se mide con respecto a la tierra gracias a su acelerometro interno y no con respecto a su base.



No hay comentarios:

Publicar un comentario