Documentos de Académico
Documentos de Profesional
Documentos de Cultura
AGRADECIMIENTOS
Durante el desarrollo de este trabajo de fin de carrera son varias las personas a las
que les debo mi ms sincero y profundo agradecimiento.
A mi familia y mis queridos padres que sin su ejemplo, su esfuerzo y sacrificio no
hubiera podido alcanzar este primer objetivo. Siempre han estado a mi lado
apoyndome, dndome nimo y aconsejndome a lo largo de mis estudios y
especialmente en los momentos ms difciles de la carrera.
A mi tutor que con su inestimable ayuda, dedicacin, disponibilidad, sabidura, gua y
profesionalismo ha permitido que este trabajo tome forma, madure y sea mejor con sus
correcciones y sugerencias.
A mis compaeros de carrera y amigos por su colaboracin, su amistad y su apoyo
incondicional durante este largo recorrido acadmico.
A todos, muchsimas gracias!
ndice
1.
2.
3.
RESUMEN ............................................................................................................... 1
1.1.
Espaol............................................................................................................... 2
1.2.
Ingls. ................................................................................................................. 4
INTRODUCCIN Y OBJETIVOS.......................................................................... 6
2.1.
2.2.
2.3.
2.4.
2.5.
3.1.1.
3.1.2.
3.1.3.
3.1.4.
3.2.
3.2.1.
3.3.
4.
3.3.1.
3.3.2.
Eleccin. ................................................................................................... 23
DESARROLLO ...................................................................................................... 24
4.1.
4.1.1.
4.1.2.
Requisitos avanzados................................................................................ 25
4.2.
4.2.1.
4.2.2.
4.3.
4.3.1.
4.3.2.
El esqueleto. ............................................................................................. 34
Pgina I
4.4.
4.4.1.
4.5.
4.5.2.
El Algoritmo. ............................................................................................ 39
4.6.2.
El buffer. ................................................................................................... 40
4.6.3.
4.6.4.
El escuchador. ........................................................................................... 42
4.6.5.
El comparador........................................................................................... 43
4.7.1.
4.7.2.
4.7.3.
4.7.4.
Pruebas. ............................................................................................................ 53
5.1.1.
5.1.2.
5.1.3.
5.1.4.
5.2.
Resultados. ....................................................................................................... 54
CONCLUSIONES .................................................................................................. 55
6.1.
7.
El reconocimiento. ........................................................................................... 39
4.6.1.
4.7.
6.
4.5.1.
4.6.
5.
Conclusin. ...................................................................................................... 56
7.1.1.
7.1.2.
7.2.
7.2.1.
7.2.2.
7.2.3.
Pgina II
8.
7.2.4.
7.2.5.
7.2.6.
BIBLIOGRAFA .................................................................................................... 65
8.1.
A.
Bibliografa ...................................................................................................... 66
ANEXO .................................................................................................................. 68
A.1. Manual de usuario. ........................................................................................... 69
A.1.1.
A.1.2.
A.1.3.
A.1.4.
A.2.2
A.3.2.
Compatibilidad. ........................................................................................ 78
Pgina III
ndice de figuras
Figura 1: El dispositivo Leap Motion [2]. ........................................................................ 2
Figura 2: Visualizacin de las manos en 3 dimensiones [4]. ........................................... 2
Figure 3: The Leap Motion device [2]. ............................................................................ 4
Figure 4: Visualization of the hands in 3 dimensions [4]. ................................................ 4
Figura 5: El juego desarrollado durante el prcticum....................................................... 7
Figura 6: Probando Google Earth mediante el Leap Motion............................................ 8
Figura 7: Realizando el gesto hacia la derecha................................................................. 8
Figura 8: El dispositivo Leap Motion detectando el movimiento con diferente altura. ... 9
Figura 9: Esquema del funcionamiento para lanzar eventos. ........................................... 9
Figura 10: Formato de los datos para el LeapTrainer.js. ................................................ 14
Figura 11: Grabando el movimiento 'Derecha' con el LeapTrainer [9]. ......................... 15
Figura 12: Reconocimiento del gesto "izquierda" con el LeapTrainer. ......................... 15
Figura 13: Ejemplo de configuracin. ............................................................................ 16
Figura 14: Uso del ratn con el dedo mediante AirKey. ................................................ 16
Figura 15: Probando la reproduccin en 3D de un movimiento..................................... 17
Figura 16: Datos que se obtienen del Leap Motion con aka.leapmotion [14]. ............... 18
Figura 17: Sistema de coordenadas del Leap Motion [15]. ............................................ 19
Figura 18: Las secuencias A y B. ................................................................................... 20
Figura 19: Secuencia A................................................................................................... 20
Figura 20: Secuencia B. .................................................................................................. 20
Figura 21: Ejemplo al aplicar el algoritmo DTW [17]. .................................................. 21
Figura 22: Ejemplo para el clculo de las diferencias con el algoritmo DTW. .............. 21
Figura 23: Visualizacin de la comparacin mediante NDtw. ....................................... 22
Pgina IV
Pgina V
Pgina VI
Pgina VII
1.
Resumen
RESUMEN
Pgina 1
1.1. Espaol.
Leap Motion [1] es un pequeo dispositivo que se coloca frente al monitor, conectado
mediante un cable USB al ordenador, capaz de capturar los movimientos de nuestras
manos y dedos con alta precisin, adems de algunos objetos como pinceles o
bolgrafos.
En la siguiente figura se puede ver el dispositivo Leap Motion.
Resumen
Pgina 2
Grabar un movimiento: en el que recojo los datos que nos ofrece el Leap
Motion, los proceso y los guardo en un formato especfico.
Reconocer un gesto: en el que comparo en cada momento el gesto que se est
realizando con los gestos grabados mediante un algoritmo que detectara si son
similares o no.
Este es un resumen bsico del prototipo, sin embargo debemos tener en cuenta una serie
de requisitos y parmetros para hacerlo ms eficiente y personalizable dependiendo de
las necesidades del usuario. Todos estos aspectos se explicaran en detalle en los
siguientes apartados.
Una de las finalidades de este prototipo es su futura integracin al proyecto que realice
durante mi prcticum, que consiste en un juego educativo para nios con necesidades
educativas especiales, en el que se usan diferentes dispositivos de interaccin. Por ahora
se pueden usar en dicho juego 3 dispositivos, siendo: la Kinect, la pantalla tctil y el
teclado.
Este trabajo se realiz en el grupo de investigacin CETTICO, situado en el bloque 1 de
la Facultad de Informtica (Ahora denominada Escuela Tcnica Superior de Ingenieros
Informticos) de la Universidad Politcnica de Madrid, supervisado por el profesor
ngel Lucas Gonzlez Martnez.
Resumen
Pgina 3
1.2. Ingls.
Leap Motion [1] is a small device we place in front of the display unit, connected to a
USB cable to the computer. It is able to capture the motion of our hands and fingers
with high accuracy, as well as some objects such as pens and brushes.
In the image below we can see the device Leap Motion.
This device includes two monochrome cameras and three infrared LEDs [3], allowing
us to interact with the computer in a simple and intuitive way using our hands.
The official website provides us the required tools to create applications that use this
device, making it easier to develop and opening endless possibilities.
Resumen
Pgina 4
Recording a motion: in which I collect the data offered by the Leap Motion,
process it and keep it in a specific format.
Recognizing a gesture: in which I compare each time the gesture being made
with the gestures recorded using an algorithm to detect whether they are similar
or not.
This is a basic summary of the prototype, but we need to take into consideration a
number of requirements and parameters to make it more efficient and customizable
depending on the user's needs. All these aspects are explained in detail in the following
sections.
One of these purposes is its integration to the project that I made during my practicum
the previous semester, which consists of an educational game for children with special
needs, where different interaction devices are being used. So far, three devices can be
used in this game: the Kinect, the touchscreen and the keyboard.
This work was done in the CETTICO research group, located in the block 1 of La
Facultad de Informtica (now called Escuela Tcnica Superior de Ingenieros
Informticos) at the Universidad Politcnica de Madrid, supervised by Professor
ngel Lucas Gonzlez Martnez.
Resumen
Pgina 5
2.
INTRODUCCIN Y OBJETIVOS
Introduccin y objetivos
Pgina 6
La idea fue aadir el nuevo dispositivo que sali al mercado en 2013, llamado Leap
Motion, con el que interactuamos con el ordenador mediante gestos en el aire usando
nuestras manos y dedos.
De este modo, podramos evaluar las caractersticas y capacidades de este dispositivo
innovador, as como su usabilidad.
Introduccin y objetivos
Pgina 7
Si una persona tiene una aplicacin para pc, y le quiere aadir la interaccin mediante el
Leap Motion, solo tendr que crear los gestos necesarios para controlar su aplicacin e
integrarlos. Por ejemplo, si la aplicacin se controla mediante 6 teclas, entonces se
tendrn que crear 6 gestos. Al hacer un gesto, se ejecutara la accin de su tecla
Introduccin y objetivos
Pgina 8
La aplicacin del usuario almacenar los datos de los movimientos que usa, para que al
realizar un movimiento compare con los gestos almacenados. Si se reconoce el gesto, se
lanza un evento que captura la aplicacin, y dependiendo del gesto, se realiza una
accin u otra. En la siguiente figura se explica el procedimiento que se realiza:
Introduccin y objetivos
Pgina 9
2.3. Objetivos
encontrados.
problemas
Una de las dificultades del proyecto fue la escaza informacin que existe del dispositivo
dado que su salida al mercado sigue siendo reciente. Adems, implemente el prototipo
con un lenguaje de programacin (C#) que nunca haba usado.
Para afrontar dichos retos, tuve que documentarme sobre la API (Application
Programming Interface) del Leap Motion y analizar las posibilidades que ofrece para
crear y desarrollar programas usando dicho dispositivo.
Cuando aprend a manejar la API, el objetivo principal fue disear e implementar un
prototipo en el que se puedan grabar gestos. A cada gesto se le tendra que poder definir
un nombre y un identificador. Adems, al reproducir un gesto grabado se tiene que
reconocer.
Los gestos se guardaran en un archivo XML, y el programa tendra que facilitar al
usuario modificarlos, aadir nuevos movimientos, o eliminarlos. Adems, al crear un
gesto, este tendra que ser parametrizable.
Esta primera fase consiste en documentarse sobre el Leap Motion para poder analizar su
alcance y el uso que se le podra dar. Con ello se podr definir los requisitos del
prototipo y sus funcionalidades mnimas.
El objetivo de esta tarea es instalar y probar el entorno de desarrollo, para luego ejecutar
ejemplos bsicos. Esto nos es til para comprobar que el compilador y el entorno de
ejecucin estn funcionando correctamente.
Introduccin y objetivos
Pgina 10
En esta tarea se definirn los gestos y movimientos que grabaremos para su uso en el
juego educativo desarrollado durante mi prcticum.
Esta fase se realiz a lo largo del semestre, y consiste en redactar varios documentos,
tales como: los informes semanales, los informes de reunin, el plan de trabajo, el
estado de la cuestin, la memoria de seguimiento, la memoria final y la presentacin.
Introduccin y objetivos
Pgina 11
Resumen:
Introduccin y objetivos:
Donde describo la razn por la que se realiz dicho proyecto, una descripcin del
trabajo realizado, los objetivos, las dificultades, las fases del desarrollo y la estructura
del documento.
En donde expongo el anlisis de los prototipos, libreras y programas que usan Leap
Motion y que puedan cumplir con alguno de nuestros requisitos, adems del algoritmo
que usaremos.
Desarrollo:
En esta parte empiezo a hablar primero de los requisitos del prototipo, y hago un
anlisis del sistema en el cual describo las diferentes partes del proyecto. Despus,
explico en detalle cada parte de su funcionamiento.
Pruebas y resultados:
En dicho apartado realizo diferentes pruebas con el prototipo y analizo los resultados
obtenidos.
Conclusiones:
Aqu describo las posibles futuras tareas que se podran realizar para la mejora y
continuidad del prototipo.
Bibliografa:
En este apartado se citan las diferentes fuentes que he usado para la elaboracin de este
proyecto.
Anexo:
Introduccin y objetivos
Pgina 12
3.
Pgina 13
{"name":"LEFT","pose":false,"data":[[{"x":0.4237907482090507,"y":0.02386414212986051,"z":0.12794371620034917,"stroke":1},
{"x":0.36582764056,"y":-0.00547780113,"z":0.06679630414,"stroke":1},
{"x":0.47232095409,"y":0.012939048550,"z":-0.0088868112,"stroke":1},
{"x":0.38230017519,"y":0.023041871250,"z":-0.0074585412,"stroke":1},
{"x":0.38014714589,"y":0.023046184250,"z":-0.008774542,"stroke":1}..
Figura 10: Formato de los datos para el LeapTrainer.js.
Pgina 14
Pgina 15
Pgina 16
Pgina 17
El nmero de dedos.
El nmero de manos.
Las coordenadas X Y e Z de cada mano.
Las coordenadas X Y e Z de cada dedo.
La velocidad entre cada frame.
Los ngulos de cada miembro.
Dichos datos se pueden ver en tiempo real mediante el programa aka.leapmotion [13]:
Figura 16: Datos que se obtienen del Leap Motion con aka.leapmotion [14].
Se pueden usar una variedad de lenguajes, como C++, C#, Java, JavaScript, Objective-C
y Python. En el caso de empezar desde cero, usaramos C# para que sea fcilmente
compatible con el proyecto hecho durante mi prcticum.
Para la creacin de un gesto, se podra recoger todo los datos de la mano y guardarlos en
algn fichero, sea XML, CSV, JSON u otro.
Pgina 18
Pgina 19
Pgina 20
secuencia
A=(2,3,5,7,10,6,3)
10 6
la
secuencia
Figura 22: Ejemplo para el clculo de las diferencias con el algoritmo DTW.
Pgina 21
NDtw: El algoritmo.
NDtw.Visualization.Wpf: Visualizacin grafica de los resultados.
Esta implementacin es fcil de usar, ya que solo se tiene que llamar al mtodo y
pasarle las 2 secuencias que queremos comparar. Adems nos permite modificar
diferentes parmetros al inicializarlo para hacerlo ms eficiente.
Pgina 22
LeapTrainer
AirKey
JestPlay
Lenguaje
JavaScript
JavaScript
Desde
cero
C# (+1)
Grabacin
SI (+1)
NO
SI (+1)
SI (+1)
Reconocedor SI (+1)
Usable
Puede (+1)
Solo gestos
NO
predeterminados
NO
Puede (+1)
Suma
3/4
0/4
2/4
SI (+1)
3/4
3.3.2. Eleccin.
Para la implementacin de mi proyecto, decid empezarlo desde cero, creando una
estructura para guardar los datos, ya que una conversin de JavaScript a C# sera muy
costosa.
Para la comparacin de gestos usare la implementacin NDtw del algoritmo DTW.
Pgina 23
4.
Desarrollo
DESARROLLO
Pgina 24
El usuario tendr que poder grabar un movimiento con su mano (o sus dos manos). Para
ello tendr que recoger los datos del gesto, procesarlos y guardarlos en un formato
especfico.
Al crear un nuevo gesto, el usuario podr asignarle un nombre y un identificador (que
tendr que ser nico).
Reconocer un gesto:
Al crear un gesto, el usuario podr definir si la velocidad importa o no. Si el gesto tiene
un significado diferente al ser lento o rpido, el usuario podr seleccionar en que eje se
tiene en cuenta la velocidad.
Cuando se grabe un gesto teniendo en cuenta la velocidad, se usara un rango que podr
definir el usuario para reconocer los gestos. Por ejemplo: El gesto llamado Izquierda
ser vlido si la velocidad est comprendida entre los valores A y B milmetros por
segundo.
Desarrollo
Pgina 25
Los sensores que dispone el Leap Motion nos permiten saber con precisin la posicin
de la mano (o manos) en los 3 ejes X Y Z.
El usuario podr elegir los ejes en los que el movimiento tenga que variar, ya que por
ejemplo:
Si se quiere grabar un movimiento diagonal de la mano desde la esquina inferior
izquierda hasta la esquina superior derecha como lo muestra la siguiente figura:
Desarrollo
Pgina 26
Desarrollo
Pgina 27
Al grabar un gesto, el usuario podra aadir dicho gesto a un archivo con una lista de
gestos ya grabados, o crear un nuevo archivo con dicho gesto.
El usuario podr cargar el archivo al reconocedor para probar si se reconocen bien, y si
queda insatisfecho, poder borrar algn gesto de la lista.
Interfaz grfica:
Crear una interfaz grfica del prototipo para facilitar al usuario crear, personalizar,
modificar y reconocer gestos.
El usuario tendr que ser capaz de modificar los valores por defecto que se usan, como
por ejemplo: el coste de reconocimiento, el frame de inicio y fin para el clculo de la
velocidad media, el nmero de frames que tiene el gesto, entre otros.
Desarrollo
Pgina 28
El nmero de manos.
El nmero de dedos de cada mano.
La posicin en X Y Z de cada palma.
La posicin en X Y Z de cada dedo.
ngulo de la mano.
Velocidad de la palma.
Desarrollo
Pgina 29
Figura 30: Algunos datos de los frames que obtenemos al mover la mano.
La informacin que obtenemos del Leap Motion se puede guardar en una estructura de
datos, para posteriormente ser utilizada.
Desarrollo
Pgina 30
La estructura de un gesto.
Para empezar, tuve que crear la estructura que tendr un gesto con los datos que
necesitaremos para diferenciarlos. Esto nos servir para guardar los movimientos y
posteriormente poder compararlos.
Los gestos se guardaran en un archivo separado para facilitar su exportacin. (Ver
Anexo A.2)
El gestor de gestos.
Para que el usuario no tenga que modificar los archivos que contienen los gestos, cree
un gestor de gestos que permite aadir o eliminar un gesto del documento. Esto
facilitara su gestin.
La grabacin de gestos.
Tambin hablare de los datos que guardo al recibir los frames del Leap Motion, y la
forma en la que lo hago.
El reconocedor.
Una de las partes ms importante del proyecto, donde tengo que comparar en tiempo
real el movimiento que se est realizando con los gestos grabados para determinar si son
similares o no.
Desarrollo
Pgina 31
Nombre:
Nombre del gesto grabado.
Identificador:
Identificador nico, formado por 5 dgitos, que nos permitir diferenciar
los diferentes gestos.
Dispositivo:
Para saber de qu dispositivo son los datos. Por ahora puede tener el
valor Kinect o Leap. El valor por defecto es Leap.
Participa velocidad:
Por ahora solo se permite contemplar la velocidad en un eje determinado,
por lo que los valores que puede tener son X, Y, Z o NO. Si se
quiere tener en cuenta la velocidad, se introduce el eje en el que se quiere
considerar, sino se introduce NO.
Velocidad mnima:
La velocidad mnima que tiene que tener el gesto para ser reconocido. (Si
se tiene en cuenta la velocidad)
Velocidad mxima:
La velocidad mxima que tiene que tener el gesto para ser reconocido.
(Si se tiene en cuenta la velocidad)
Participa X:
De tipo booleano, define si el movimiento es variable en el eje X. Si el
valor es falso, se reconocer el gesto si el movimiento no vara en el eje
X.
Desarrollo
Pgina 32
Participa Y:
Igual que el atributo anterior, solo que esta vez en el eje Y.
Participa Z:
Igual que el atributo anterior, solo que esta vez en el eje Z.
Lista de esqueletos:
Una lista de esqueletos que define el movimiento, siendo cada esqueleto
la informacin de un instante. Si el gesto est constituido por 35 frames,
el gesto tendr 35 esqueletos.
Cada esqueleto tiene una lista de joints (articulaciones):
Lista de joint:
El joint define la articulacin, que puede ser la mano derecha,
izquierda, o algn dedo. Cada joint tiene un nombre y una
posicin.
Para saber si el joint est involucrado en el gesto, tenemos la
variable booleana involucrado.
Desarrollo
Pgina 33
4.3.2. El esqueleto.
La lista de esqueletos define el movimiento, y en cada esqueleto tenemos la informacin
de las diferentes articulaciones que capta el Leap Motion en un determinado instante de
tiempo.
Cada esqueleto contiene una lista de joints.
4.3.2.1.
El joint.
El joint est formado por el nombre de la articulacin, un atributo que define si est
involucrado en el movimiento, y su posicin en el eje X Y Z.
Por ahora se han definido doce articulaciones, siendo:
La mano derecha.
La mano izquierda
Los 5 dedos de la mano derecha.
Los 5 dedos de la mano izquierda.
Uno de los problemas encontrados ha sido que no se podran diferenciar los diferentes
dedos de la mano, por lo que se decidi no guardarlos de momento. Sin embargo, el 28
de mayo sali una nueva actualizacin del SDK que nos ofreca dicha informacin. (Ver
Futuras lneas de desarrollo.)
Desarrollo
Pgina 34
Una de las funciones principales del gestor es cargar los gestos almacenados en algn
XML para que luego puedan ser reconocidos.
Para empezar se verifica si el documento XML sigue las reglas del esquema y
asegurarnos de que es vlido. Luego procesamos sus datos para crear los objetos
Gesto para facilitar la comparacin de gestos.
4.4.1.2.
Guardar un gesto.
Eliminar un gesto.
Desarrollo
Pgina 35
Se pueden crear diferentes documentos con listas de gestos, por lo que al crear un gesto,
este ltimo se puede aadir a un archivo que contiene ya uno o varios gestos, o crear un
nuevo documento con el gesto grabado.
4.5.1.2.
El gesto tiene una serie de propiedades que se le tienen que asignar, como el nombre y
el identificador nico para diferenciarlos.
Tambin se tendr la opcin de tener en cuenta la velocidad en algn eje, pero para ello
se establecer una velocidad mnima y una velocidad mxima para su reconocimiento,
que sern calculados mediante la velocidad media del gesto grabado. Si se vuelve a
reproducir el movimiento con una velocidad entre el valor mnimo y mximo, se
reconocer.
Adems, se podrn definir los ejes en los que el movimiento varia, como lo explicamos
en el apartado 4.1.2.
Desarrollo
Pgina 36
Tambin podr modificar algunos parmetros que estn por defecto, como:
4.5.2.2.
Lanzamiento de la grabacin.
Cuando el usuario lanza la grabacin, se activa el escuchador del Leap Motion para la
recepcin de datos.
Para cada frame que llega:
1. Se guarda la posicin de la mano (o manos) en el eje X Y Z.
2. Se guarda la velocidad del frame.
3. Si el nmero de frame es igual que el nmero de frames a grabar, pasamos al
siguiente apartado. Sino volvemos al paso 1.
4.5.2.3.
Para calcular la velocidad media, se suma la velocidad de cada frame y se divide por el
nmero de frames grabados.
El problema principal es que al hacer un gesto, la aceleracin al principio y al final del
movimiento es muy baja, e influyen mucho sobre el resultado.
Para ello se decidi calcular la velocidad media a partir de un cierto frame hasta otro.
Por defecto el frame inicial es igual a 15 y el frame final a 45.
Desarrollo
Pgina 37
Al ser muy complicado reproducir un gesto con la misma velocidad, usaremos un rango
para que el gesto solo pueda ser reconocido si su velocidad media est entre la
velocidad mnima y la velocidad mxima del movimiento.
Los valores por defecto para crear el rango son 50 y -50. Por lo que para calcularlo se
suman dichos valores a la velocidad media del gesto grabado. Por lo tanto al grabar un
gesto con una velocidad de 700 milmetros por segundo, el gesto ser reconocible si su
velocidad oscila entre 650 y 750 mm por segundo.
Teniendo todos los datos necesarios, se pasa a grabar el gesto mediante la funcin del
gestor.
4.5.2.5.
Resumen.
Desarrollo
Pgina 38
4.6. El reconocimiento.
Una de las partes ms complejas del proyecto es el reconocedor, ya que se tiene que ir
comparando el gesto que se est realizando en tiempo real con los diferentes
movimientos cargados.
4.6.1. El Algoritmo.
Como he dicho anteriormente (Ver apartado 3.2), usaremos el algoritmo DTW, para
comparar los diferentes gestos, y ms precisamente la implementacin NDtw [18].
Dicho algoritmo recibe como parmetros 2 secuencias de nmeros que analizara para
determinar el grado de similitud.
A continuacin, explicare un ejemplo para entender cmo podramos usar dicho
algoritmo con los datos del Leap Motion:
Tenemos guardado el movimiento de una mano, lo que significa que tenemos una lista
de posiciones en el eje X Y Z que lo definen. Dichos datos estn guardados en el
esqueleto.
Figura 35: Ejemplo simple de los datos que podramos tener de la mano.
Se puede ver que en la figura anterior, en el primer instante la mano est situada en la
posicin X=-50, Y=11 y Z=15.
Para saber si dicho movimiento es similar a otro, se pasaran como argumentos al
algoritmo las diferentes secuencias de los ejes X Y Z de los dos gestos respectivamente.
Dicho algoritmo nos devuelve un resultado, siendo el coste de similitud. Cuanto ms
bajo sea dicho valor, ms similares son los 2 gestos.
Se compararan las secuencias del eje X del gesto 1 con el gesto 2, las secuencias del eje
Y, y las secuencias del eje Z. Si los tres costes que obtenemos son bajos, significa que
los 2 gestos son similares, pero si algn coste es elevado, son diferentes.
Desarrollo
Pgina 39
4.6.2. El buffer.
Cuando se lanzara el reconocedor, se tendr que ir comparando los gestos realizados
con los gestos cargados en tiempo real. Como no podemos saber con exactitud en qu
momento se empieza a realizar un gesto, usaremos un buffer para guardar los datos que
nos llegan del Leap Motion, y que compararemos con los movimientos guardados.
El buffer estar constituido por la informacin de los frames, que son:
Cuando se haga un gesto para ser reconocido, se irn recogiendo los frames que
devuelve el Leap Motion para guardarlos en el buffer. Mediante este ltimo, ya
podemos conseguir las secuencias que usaremos para el algoritmo.
El tamao por defecto del buffer es igual a 35, pero el usuario podr definir otro si lo
desea. Cuando se llena, se usar la regla FIFO (First In First Out), por lo que
borraremos el dato ms antiguo, siendo el de la posicin 0. Al eliminar dicha posicin,
se mueven los datos para dejar espacio en la ltima posicin.
Desarrollo
Pgina 40
El escuchador:
El escuchador es la parte que recibe los datos del Leap Motion y que los introduce en el
buffer. Despus de aadir el nuevo dato al buffer, el escuchador se encargar de
clonarlo e introducirlo a la cola de buffers. Dicha cola se usa para no sobrescribir los
datos del buffer, y de este modo, no perder informacin.
El comparador:
Desarrollo
Pgina 41
4.6.4. El escuchador.
Al lanzar el reconocimiento, se crea el escuchador que tiene como rol principal recibir
los datos del Leap Motion e introducirlos en el buffer.
Para empezar, crea el buffer que tendr un tamao por defecto igual a 35, pero que
puede ser modificador por el usuario. Despus, crea un proceso ligero en el que se
ejecutara el comparador, pasndole como parmetros los gestos cargados y el coste de
reconocimiento (Por defecto 1200, pero tambin modificable).
Al recibir un frame del Leap Motion, el escuchador:
1.
2.
3.
4.
En este proceso existen 2 secciones crticas. Esto significa que hay una posibilidad en el
que un dato pueda ser sobrescrito, y de esta forma perder informacin.
La primera est en el que el escuchador pueda recibir ms frames de los que procesa. Si
esta situacin ocurre, se podran aadir varios frames al buffer al mismo tiempo, y por
lo tanto sobrescribirlo. Para ello se cre un semforo en el que solo un recurso puede
entrar a la seccin crtica del paso 1 y 2.
La segunda seccin crtica se sita en el momento en el que se aade el buffer clonado a
la cola, ya que al mismo tiempo el comparador puede estar accediendo a la ella. Estas
dos partes se controlan mediante un semforo para no estar utilizando la cola de buffers
a la vez.
Cuando se para el reconocimiento, se destruye el proceso ligero Comparador y se
elimina el escuchador.
Desarrollo
Pgina 42
4.6.5. El comparador.
El comparador sigue una serie de pasos para analizar el gesto realizado con los gestos
cagados anteriormente:
4.6.5.1.
Cuando el comparador recibe el evento del escuchador para avisarle de que hay un
nuevo buffer en la cola, este extrae el buffer ms antiguo (FIFO).
Esta operacin est controlada mediante un semforo que no permite a varios recursos
acceder a la cola.
4.6.5.2.
A continuacin el comparador prepara los datos del buffer obtenido, sacando de l las
secuencias que se compararn con las de los gestos cargados anteriormente, de las
cuales hay:
Una secuencia por cada eje con las posiciones de la mano derecha.
Una secuencia por cada eje con las posiciones de la mano izquierda.
Una secuencia por cada eje con su velocidad.
Aunque solo contemplamos la velocidad en un solo eje, tenemos que guardar las 3
diferentes secuencias del gesto realizado ya que se pueden tener diferentes movimientos
cargados que dependen de la velocidad en ejes distintos.
Con los datos del buffer listos, se empieza a comparar con la lista de gestos grabados.
4.6.5.3.
Desarrollo
Pgina 43
Verifica la velocidad.
Si en algn eje el movimiento tiene que ser constante, se verifica que los valores de
dicha secuencia no varan mucho. Para ello se busca el valor mayor y menor de dicha
secuencia para calcular su diferencia.
Si la diferencia es mayor a lo permitido, por defecto 60, el gesto realizado no cumple las
condiciones. Dicho lmite puede ser modificado por el usuario.
4.6.5.6.
Se reconoce el gesto.
Si todas las condiciones anteriores se cumplen, el gesto realizado es igual que el gesto
cargado.
Los siguientes buffers que se analizaran tendrn algunos datos del buffer reconocido,
por lo que para no reconocer el mismo gesto varias veces, se descartan todos los buffers
que llegan con algn dato similar al reconocido.
Desarrollo
Pgina 44
Para no hacerlo complejo, decid poner los botones que realizan las diferentes funciones
del prototipo en la pantalla principal, que son:
Grabar un gesto.
Reconocer los gestos que se hacen.
Cargar los gestos.
Desarrollo
Pgina 45
En dicha ventana se introduce los datos necesarios para la creacin del gesto, que son: el
nombre del gesto, un identificador de 5 dgitos, el eje en el que se quiere tener en cuenta
la velocidad (si no se quiere considerar, se selecciona NO) y los ejes en los que
participa el movimiento.
Este nuevo gesto puede guardarse en un documento XML ya existente (por lo tanto con
uno o varios gestos), o crear un nuevo XML para dicho gesto.
Cuando se selecciona una de las dos opciones, se activan sus campos relativos, y al
seleccionar una carpeta, la ruta aparece debajo del botn para seleccionarlo.
Desarrollo
Pgina 46
Desarrollo
Pgina 47
Desarrollo
Pgina 48
Desarrollo
Pgina 49
Para que el usuario sepa si el Leap Motion est detectando sus manos, puede verlo en
Estado detecta manos:
Desarrollo
Pgina 50
Desarrollo
Pgina 51
5.
PRUEBAS Y RESULTADOS
Pruebas y resultados
Pgina 52
5.1. Pruebas.
Para analizar el prototipo, se hicieron una secuencia de pruebas. Se redact una lista de
tareas que realizaran una serie de personas para probar el funcionamiento del prototipo.
Antes de empezar la realizacin de las pruebas, es necesario explicar a los usuarios las
distintas funcionalidades y objetivos del prototipo.
Pruebas y resultados
Pgina 53
5.2. Resultados.
Al realizar las pruebas con los usuarios, pude observar diferentes situaciones, de las
cuales las ms importantes:
Para saber que eje participaba en el movimiento, se les tuvo que explicar
detalladamente las diferencias que existan al seleccionar un eje.
En la segunda prueba, los usuarios no saban cmo acceder a los datos del gesto,
dado que es necesario hacer doble clic en el nombre del gesto. Para ello se
podra aadir un apartado de ayuda.
El haber integrado una interfaz grfica al prototipo ayudo a que su manejo sea
bastante fcil e intuitivo, siendo el periodo de aprendizaje corto.
Pruebas y resultados
Pgina 54
6.
Conclusiones
CONCLUSIONES
Pgina 55
6.1. Conclusin.
Con el desarrollo de este proyecto he podido descubrir un nuevo dispositivo llamado
Leap Motion. Este ltimo facilita la interaccin entre persona y ordenador mediante
gestos intuitivos que se realizan en el aire con nuestras manos, ofreciendo infinitas
posibilidades al usuario.
A lo largo del semestre he ido aprendiendo como desarrollar programas que usan dicho
dispositivo, y consegu realizar las tareas propuestas y cumplir con los objetivos
planteados.
El prototipo implementado ofrece a los desarrolladores la posibilidad de integrar el
dispositivo Leap Motion en cualquier aplicacin mediante la creacin de gestos que
posteriormente sern reconocidos.
Mediante las diferentes pruebas realizadas pude observar que el prototipo es intuitivo,
funciona correctamente y cuenta con las validaciones suficientes para evitar errores por
parte de los usuarios.
A pesar de que el dispositivo est al alcance de todos por su bajo precio en el mercado,
todava no ha recibido el suficiente apoyo por parte de los desarrolladores, y por lo tanto
a da de hoy ofrece pocas aplicaciones.
Sin embargo, creo que este dispositivo innovador tiene muchas posibilidades de
desarrollo y un futuro prometedor. Adems, cabe destacar que ya existen ordenadores
[20] en el mercado que integran dicha tecnologa.
Conclusiones
Pgina 56
7. FUTURAS
DESARROLLO
LINEAS
DE
Pgina 57
Figura 56: Ejemplo de la integracin del visualizador en la ventana para crear gestos.
Otra mejora importante en este tema, es grabar un video de dicho movimiento en tres
dimensiones, para que el usuario sepa exactamente que gesto se grab. Adems, se
podra reproducir el video del gesto al cargarlo.
Pgina 58
Tambin se podra aadir una funcionalidad para pasar un gesto de un documento XML
a otro, y as facilitar importar y exportar gestos.
Pgina 59
Sin embargo, con la versin 2, obtenemos los datos precisos del gesto, y con los
diferentes huesos que forman el dedo.
Pgina 60
Pgina 61
Con la versin 2, el Leap Motion intenta estimar la posicin de cada miembro para no
perder informacin.
Pgina 62
Pgina 63
Pero no siempre podemos afirmar que el dedo que est ms a la derecha sea el meique
y que el que est ms a la izquierda sea el pulgar, ya que la mano podra estar al revs.
Como consecuencia de este problema, al grabar un gesto con el prototipo, no guardamos
los datos de cada dedo (Aunque en el esquema lo definimos, lo dejamos vaco.).
Sin embargo ahora no se tendra ninguna dificultad en grabarlos con la versin 2 del
SDK, ya que el Leap Motion nos ofrece detalladamente la informacin de cada dedo,
independientemente de la posicin de la mano.
Pgina 64
8.
Bibliografa
BIBLIOGRAFA
Pgina 65
8.1. Bibliografa
[1]
[2]
[3]
[4]
Insidehardware,
29
Mayo
2014.
[En
lnea].
Available:
http://www.insidehardware.it/news/148-corporate-news/3808-leap-motionannuncia-la-public-develper-beta-del-suo-sdk-2-0#.U42GCih7N-Y.
[5]
[6]
AppBrain,
20
Mayo
2014.
[En
http://www.appbrain.com/stats/number-of-android-apps.
[7]
[8]
[9]
lnea].
[En
lnea].
lnea].
Available:
Available:
Available:
Available:
Available:
Bibliografa
2013.
[En
lnea].
Available:
Pgina 66
Enero
2013.
[En
lnea].
Available:
Available:
[20] Amazon, [En lnea]. Available: http://www.amazon.es/HP-ENVY-17-j165esLeap-Motion/dp/B00GMZSC48. [ltimo acceso: 27 Marzo 2014].
[21] Motion Control, Leap Motion, 28 Mayo 2014. [En lnea]. Available:
https://developer.leapmotion.com/.
[22] D. H. Michael Buckwald, LeapMotion, Motion Control, [En lnea]. Available:
https://www.leapmotion.com/. [ltimo acceso: 17 Abril 2014].
Bibliografa
Pgina 67
A. ANEXO
Anexo
Pgina 68
En ese momento aparece una nueva ventana para la creacin del gesto, en la que
introducimos un nombre para el gesto y un identificador de 5 dgitos. Adems
seleccionamos el eje en el que se quiere tener en cuenta la velocidad, y los ejes en el que
vara el movimiento.
Anexo
Pgina 69
Aadiremos este nuevo gesto a un documento XML ya existente, por lo que hacemos
clic en Aadir gesto a XML y seleccionamos el documento.
En la siguiente figura podemos ver los datos que introducimos para crear el gesto
ArribaDer.
Anexo
Pgina 70
Podemos darle al botn Abrir 3D para poder visualizar nuestra mano, y asegurarnos de
que todos los miembros sean visibles.
Cuando el contador pasa a ser 0, se empiezan a guardar los datos del movimiento.
Anexo
Pgina 71
Anexo
Pgina 72
Anexo
Pgina 73
Al realizar algn gesto de la lista que hemos cargado, se reconoce y aparece un mensaje
en la esquina inferior derecha.
Anexo
Pgina 74
Anexo
Pgina 75
Anexo
Pgina 76
A.2.2
Anexo
Pgina 77
A.3. El visualizador.
A.3.1. Cdigo fuente.
Se puede obtener el cdigo abierto en el siguiente enlace:
https://codepen.io/leapmotion/pen/yjndm
A.3.2. Compatibilidad.
Uno de los problemas del visualizador es que depende del navegador, y por lo tanto si
no es compatible con el navegador por defecto del usuario, no se podr visualizar la o
las manos.
Anexo
Navegador
Compatibilidad
Mozilla
Firefox
SI
Google
Chrome
SI
Internet
Explorer
NO
Pgina 78