Para los que nos gusta un poco la programación estos dispositivos son muy interesantes, por lo que vamos a hacer un pequeño programa que nos permita leer datos de un leapMotion, vamos a empezar con un pequeño Hola Mundo.
Imagen de leapmotion.com |
LeadMotion es un gadget muy interesante para trabajar con realidad aumentada, prácticamente consiste en detectar los movimientos de las manos, bueno un video vale mas que mil palabras por lo que lo dejo.
Interesante la verdad con lo que se puede hacer, pero vamos a entrar en materia, lo primero que haremos es configurar el entorno de desarrollo en mi caso utilizaremos una distribución de ubuntu, java 1.8 y el SDK de leapmotion en su versión 2.2.2 que la puedes descargar en la pagina de desarrolladores oficial.
Descomprimiremos la carpeta en una ubicación cualquiera, y posteriormente instalaremos el software que viene en ella, que como es una extensión de deb con el mismo centro de software lo puedes instalar.
Abriremos nuestro proyecto de netbeans en este caso usaremos un tipo de movimiento o gesto que detecta el leadmotion que sera movimientos circulares, y la intensión es hacer un contador que al dar movimientos circulares un contador aumente si es que va en sentido a las manecillas del reloj, de lo contrario disminuiría.
Imagen de la pagina de desarrolladores de leapmotion |
Lo primero vamos a hacer es crear un proyecto nuevo de Netbeans, y agregar a las librerias el sdk, a ir a la carpeta del LeapSDK -> Lib, buscaremos el archivo LeapJava.Jar y lo agregamos al proyecto.
Crearemos un listener que nos ayudara a estar escuchando los eventos
package example; import com.leapmotion.leap.*; /** * Clase de escucha para los movimientos * @author luis */ public class ListenerLeapMotion extends Listener { /** * Metodo que detecta cuando el leapmotion esta conectado * @param controller */ @Override public void onConnect(Controller controller) { System.out.println("Connected"); } /** * Metodo que detecta los eventos en el leapmotion * @param controller */ @Override public void onFrame(Controller controller) { ///Obtenemos el fram que captura Frame frame = controller.frame(); //habilitamos el gesto de los movimientos circulares controller.enableGesture(Gesture.Type.TYPE_CIRCLE); //configuracion para mejor deteccion controller.config().setFloat("Gesture.Circle.MinRadius", 10.0f); controller.config().setFloat("Gesture.Circle.MinArc", .5f); controller.config().save(); //sacamos una lista de los eventos que se presenten GestureList lista = frame.gestures(); //verificamos que haya pasado algo if (!lista.isEmpty()) { //recorremos entre los eventos que ocurrieron for (Gesture gesture : lista) { switch (gesture.type()) { //Si el evento fue movimientos circulares case TYPE_CIRCLE: //instancia de un objeto para el movimiento CircleGesture circle = new CircleGesture(gesture); //a partir de un posicionamiento verificamos a que sentido esta el movimiento if(circle.pointable().direction().angleTo(circle.normal())<= Math.PI/2) { //si se da en sentido del reloj (limite 255) if(LeapMotion.intensidad<255) LeapMotion.intensidad++; //aumenta el contador } else { if(LeapMotion.intensidad>0) LeapMotion.intensidad--; //disminuye el contador } System.out.println(LeapMotion.intensidad); //imprimo el contador break; } } } } }
Despues vamos a crear un archivo Main agregando el listener
package example; import com.leapmotion.leap.*; import java.io.IOException; /** * * @author luis */ public class LeapMotion { //variable estatica que almacena el valor segun los movimientos public static int intensidad = 0; public static void main(String... a) { //instanciamos de nuestra clase de escucha ListenerLeapMotion listener = new ListenerLeapMotion(); //instanciamos la clase para control de los datos Controller controller = new Controller(); //añadimos el escucha para que tome los eventos controller.addListener(listener); System.out.println("Presiona algo para salir"); try { //detemos el programa hasta que presionemos algo System.in.read(); } catch (IOException e) { System.out.println("Ocurrio un error"); } //Se remueve el listener controller.removeListener(listener); } }
Para que pueda ser ejecutado hay que ir a la carpeta de LeapMotionSDK/lib/x64(en mi caso) y copiar la ruta para agregarla como argumento en la ejecución como se ve en la pantalla siguiente:
Despues veras en la consola los valores que van aumentando según tu movimiento de la mano.
No hay comentarios:
Publicar un comentario