2. Estado del arte
2.6. Herramientas de reconocimiento de gestos con dispositivos móviles
En esta sección se analizan los frameworks, bibliotecas o herramientas que dan soporte al reconocimiento de gestos. Para cada una de ellas, se brinda una pequeña descripción de su funcionamiento y se mencionan sus falencias más notorias.
2.6.1. Nuidroid
Nuidroid es un middleware para reconocimiento de gestos 3D desarrollado por 3DiVi, que permite realizar aplicaciones controladas por movimiento al estilo de Kinect para ARM/Android y otras plataformas embebidas. Particularmente ha sido probado con la consola de video juegos OUYA11 y el Nexus 7 de Google.
Posee distintos módulos con los que provee reconocimiento de rostro y captura del cuerpo. El reconocimiento de rostro involucra la orientación de la cabeza, el reconocimiento de género, edad, emociones, entre otras cosas. Dichas características son soportadas a través de una cámara RGB tradicional. La captura del cuerpo consiste en la captura y segmentación completa del cuerpo de una persona, traduciéndolo a un formato de esqueleto similar a la Kinect. La obtención del esqueleto es lograda mediante un sensor de profundidad que combinado a la cámara logran la captura del cuerpo humano.
11 https://www.ouya.tv/
26 El funcionamiento de estos módulos tiene dos grandes dependencias, el hardware adicional y los requerimientos del dispositivo que procese la información. En primer lugar, la utilización de este middleware implica la incorporación de la cámara/sensor de profundidad. Es decir se requiere tener conectado algún dispositivo tales como ASUS Xtion PRO o la misma Kinect. Además, tiene grandes restricciones de performance12, reduciendo la variedad de dispositivos que realmente pueden utilizar al middleware.
2.6.2. Android Gesture Recognition Tool
El trabajo realizado en [7], presenta un conjunto de herramientas para la clasificación automática de gestos. Permite grabar gestos de movimientos de las manos, aprovechando los acelerómetros de smartphones con Android. Una herramienta de aprendizaje de gestos hace posible la creación de conjuntos de entrenamiento de gestos. Estos conjuntos de gestos de entrenamiento contienen grabaciones del acelerómetro, con mediciones que describen gestos, y cada una se etiqueta de manera que indica a qué clase de gesto pertenece.
El servicio de reconocimiento de gestos puede reconocer nuevos gestos realizados y proporcionar el resultado del reconocimiento a las aplicaciones de Android que se suscriben a este servicio. El resultado contiene la etiqueta y la distancia al gesto entrenado más similar. Cuanto menor sea la distancia mayor será la similitud. El servicio soporta diferentes conjuntos de entrenamiento que permiten personalizar los gestos grabados o definir conjuntos de entrenamiento de gesto específicos para aplicaciones particulares. Para el reconocimiento de gestos el servicio utiliza el algoritmo Dynamic Time Warping, que se ha ampliado para clasificar señales multidimensionales.
27 Figura 2-16: Aplicación de entrenamiento de gestos de Takg Framework, pantalla principal (izq) y menú
de edición de gestos (der)
El otro componente es la aplicación de entrenamiento de gestos, que proporciona una manera sencilla de crear conjuntos de entrenamiento de gestos, gestionarlos y probar el reconocimiento de gestos con ellos. Al iniciar la aplicación, se verá una pantalla tal como se muestra en la parte derecha de la Figura 2-16. Desde esa sencilla interfaz, se puede acceder a la mayor parte de la funcionalidad, tal como la definición de conjuntos de entrenamiento, iniciar el entrenamiento, detenerlo, entre otras cosas. En la parte derecha de la Figura 2-16, se ve otra pantalla de la aplicación, donde se pueden editar los gestos ya definidos.
Sin embargo, el conjunto de herramientas es limitado en algunos aspectos como extensibilidad, configuración y cobertura de sensores. La herramienta provee una interfaz AIDL13, mediante la que acceder al servicio de reconocimiento que reside conjuntamente con la aplicación de entrenamiento. Al tratarse de un producto empaquetado, genera imposibilidad de incorporar comportamiento personalizado, ampliar su funcionalidad, etc. A la hora de realizar el entrenamiento desde la aplicación, no brinda la posibilidad de variar la forma de capturar los gestos, o de enviar parámetros para la misma causa, y el algoritmo utilizado para entrenar/reconocer gestos es fijo. Además, únicamente aprovecha la información que genera el acelerómetro de los smartphones. Si bien es el sensor de movimiento más común y con el que la gran
28 mayoría de los dispositivos cuentan, falta una estrategia para aprovechar los restantes sensores cuando estén presentes en el dispositivo en cuestión.
2.6.3. BitGym Motion SDK
Es una herramienta de desarrollo que captura la posición e inclinación de uno o dos jugadores delante de la cámara de un dispositivo móvil. El caso de uso estándar es que el jugador coloque el dispositivo móvil en posición vertical y luego retroceda hasta 4-10 metros de distancia. El SDK de BitGym utiliza la cámara frontal del dispositivo para rastrear el pecho del jugador, devolviendo la posición (x, y, z) y la inclinación del torso de los jugadores.
El SDK está disponible para utilizar en aplicaciones Android, iOS y Unity, y las aplicaciones desarrolladas deben subscribirse a eventos de actualización de posiciones provistos por el SDK, que se producen cuando un jugador se mueve. Una vez recibida la información de posición e inclinación, cada aplicación debe decidir cómo interpretarla. Dicho comportamiento puede apreciarse en la Figura 2-17, donde una usuario de una tablet utiliza un juego desarrollado con el soporte de Motion SDK y salta para darle movimiento al personaje del mismo.
Figura 2-17: Usuario de una tablet utilizando un juego construido con Motion SDK
Consecuentemente, gran parte de la lógica de reconocimiento de gestos recae en cada desarrollador particular, al que solo le llegan medidas en crudo y no así información de más alto nivel sobre los gestos realizados. Por lo tanto es responsable de realizar el reconocimiento de los gestos que le interesen para su aplicación. Además, únicamente
29 puede utilizarse la cámara frontal y solamente entrega información asociada a procesamiento de imágenes de la cámara, no así de los sensores de movimiento.
2.6.4. Resumen
En esta sección se han mostrado algunas herramientas que dan soporte al reconocimiento de gestos. De estas herramientas, se analizan las principales características de interés: múltiples enfoques de captura, extensión de enfoques de captura, variedad de algoritmos y conocimientos requeridos. La característica múltiples enfoques de captura, se focaliza en la posibilidad de utilizar la herramienta para reconocer gestos en distintas circunstancias con distintos mecanismos para capturar datos. De manera relacionada, la extensión de enfoques de captura, es la posibilidad qe brinda la herramienta de incorporar enfoques adicionales a la herramienta en cuestión. Por otro lado, la variedad de algoritmos, mide cuántos algoritmos para reconocer gestos provee la herramienta. En último lugar, los conocimientos requeridos, son los conocimientos que un desarrollador requiere para utilizar la herramienta para reconocer gestos. Múltiples enfoques de captura Extensión de enfoques de captura Variedad de algoritmos Conocimientos requeridos
Nuidroid NO NO Ninguno Altos
Android Gesture Recognition Tool
NO NO Solo uno Bajos
BitGym Motion SDK
NO NO Ninguno Altos
Tabla 2-4: Resumen comparativo entre herramientas para dar soporte al reconocimiento de gestos.
La Tabla 2-4, resume las características que se han estudiado de cada herramienta. Como puede verse, ninguna de las herramientas da soporte para múltiples enfoques de captura. Menos aún, es posible incorporar en dichas herramientas algún enfoque adicional. Esto ocurre, porque se trata de herramientas orientadas a resolver la problemática para un enfoque en particular. Además, solo Android Gesture Recognition Tool provee algún algoritmo de reconocimiento de gestos. De manera complementaria al algoritmo, también brinda facilidades para que un desarrollador pueda efectuar el reconocimiento de gestos e incluirlo en sus aplicaciones sin necesidad de conocer en
30 detalle cómo es el proceso necesario para realizarlo. En cambio, las restantes herramientas facilitan el acceso a los datos que el enfoque de captura provee, pero cada desarrollador debe saber cómo utilizarlos para realizar el reconocimiento de gestos con esos datos.