scieee AI-readable full text Open interactive document viewer

Uso de Kinect para el entrenamiento de actividades físicas

Tobes Pérez, Víctor; Fernández Pérez, Raúl

Abstract

Este proyecto tiene como meta el diseño y desarrollo de un entrenador personal de capoeira con la tecnología de captura de movimiento de Kinect. La aplicación utilizará el nombre de VIC (Virtual Instructor of Capoeira). Para entender y abordar de una manera correcta este trabajo, se han revisado los diferentes sistemas y tecnologías que existen para la captura de movimientos. Se han expuesto las ventajas que han llevado a utilizar el dispositivo Kinect y se han mencionado varios estudios de investigación previos con resultados favorables. Además, se ha hecho hincapié en las novedades que aporta este proyecto en el ámbito de los Reactive Virtual Trainers (RVT), ya que ha dado lugar a una diversidad de soluciones para la danza, las artes marciales y el ejercicio físico en general. Este proyecto presenta un sistema de entrenamiento personal de capoeira, un arte marcial brasileño, definido como una mezcla entre los deportes de lucha y la danza. Este entorno está pensado para que el alumno pueda aprender a realizar diferentes movimientos de capoeira sin la necesidad de que esté presente un profesor. El entrenamiento consiste en imitar una serie de movimientos realizados por expertos y que han sido previamente grabados. Además, se puede escoger el nivel del alumno, ya sea principiante, avanzado o experto. Así, el alumno va aprendiendo de forma progresiva. Este sistema de bajo coste e intuitivo lleva a cabo un seguimiento del alumno en cada movimiento. Así, el sistema se podrá adaptar fácilmente para, por ejemplo, la rehabilitación de alguna parte del cuerpo dañada o en la medicina deportiva. Tras el estudio realizado, se observó que el funcionamiento de la aplicación es rápido y ofrece unas correcciones muy precisas de los movimientos ejecutados de forma errónea. Por todo ello, se puede afirmar que este entorno tiene un excelente presente y un futuro muy prometedor.

Full text

Uso de Kinect para el entrenamiento de actividades físicas Trabajo de Fin de Grado Víctor Tobes Pérez Raúl Fernández Pérez Departamento de Ingeniería del Software e Inteligencia Artificial Facultad de Informática Universidad Complutense de Madrid Junio 2017 Documento maquetado con T EXiS v.1.0+. Uso de Kinect para el entrenamiento de actividades físicas Trabajo de Fin de Grado Ingeniería del Software e Inteligencia Artificial Dirigido por los Doctores Pablo Gervás Gómez-Navarro, Gonzalo Méndez Pozo Departamento de Ingeniería del Software e Inteligencia Artificial Facultad de Informática Universidad Complutense de Madrid Junio 2017 Dedicatoria A nuestras familias por darnos todo y apoyarnos para conseguir lo que nos propongamos A la novia de Raúl, Ana, por su apoyo y siempre alentarlo a ser mejor A todos nuestros amigos que nos han acompañado y ayudado todo este tiempo A todos ellos les dedicamos este trabajo porque sin ellos no habría sido posible v Agradecimientos Quisiéramos agradecer a Gonzalo Méndez Pozo y a Pablo Gervás GomezNavarro, los Directores de este Trabajo, todo el apoyo que nos han proporcionado para realizarlo. Marco Antonio Gomez-Martin, Pedro Pablo Gomez-Martin por la plantilla TeXiS de Latex. También nos gustaría agradecer a los miembros de nuestra familia, a nuestros padres y amigos que nos han mostrado su apoyo y ánimos durante la creación de este trabajo. A mi amiga de la infancia Ana Galindo Lobato por su dedicación, gracias por ayudarme a llegar tan lejos, sin ti no lo hubiera conseguido. Esto va también por vosotros frescos(SOF), mis grandes hermanos. También quería agradecérselo a esa persona que me hace la vida mas fácil cada día, a mi novia Ana. De nuevo a mis padres, que gracias a ellos, he tenido la oportunidad de llegar a presentar este proyecto Por último, quisiéramos agradecer a la Associação Brasileira de Apoio e Desenvolvimento da Arte-Capoeira(ABADÁ-Capoeira), a la Asociación Cultural Deportiva Rio 1, al instructor Gato2y al graduado Windows3por enseñarnos, ayudarnos y ofrecerse para las grabaciones necesarias de este proyecto. 1https://www.asociacionrio.com/ 2http://www.abadacapoeiragato.com/ 3http://dsa-research.org/jlvazquez/ vii Resumen Este proyecto tiene como meta el diseño y desarrollo de un entrenador personal de capoeira con la tecnología de captura de movimiento de Kinect. La aplicación utilizará el nombre de VIC (Virtual Instructor of Capoeira). Para entender y abordar de una manera correcta este trabajo, se han revisado los diferentes sistemas y tecnologías que existen para la captura de movimientos. Se han expuesto las ventajas que han llevado a utilizar el dispositivo Kinect y se han mencionado varios estudios de investigación previos con resultados favorables. Además, se ha hecho hincapié en las novedades que aporta este proyecto en el ámbito de los Reactive Virtual Trainers (RVT), ya que ha dado lugar a una diversidad de soluciones para la danza, las artes marciales y el ejercicio físico en general. Este proyecto presenta un sistema de entrenamiento personal de capoeira, un arte marcial brasileño, definido como una mezcla entre los deportes de lucha y la danza. Este entorno está pensado para que el alumno pueda aprender a realizar diferentes movimientos de capoeira sin la necesidad de que esté presente un profesor. El entrenamiento consiste en imitar una serie de movimientos realizados por expertos y que han sido previamente grabados. Además, se puede escoger el nivel del alumno, ya sea principiante, avanzado o experto. Así, el alumno va aprendiendo de forma progresiva. Este sistema de bajo coste e intuitivo lleva a cabo un seguimiento del alumno en cada movimiento. Así, el sistema se podrá adaptar fácilmente para, por ejemplo, la rehabilitación de alguna parte del cuerpo dañada o en la medicina deportiva. Tras el estudio realizado, se observó que el funcionamiento de la aplicación es rápido y ofrece unas correcciones muy precisas de los movimientos ejecutados de forma errónea. Por todo ello, se puede afirmar que este entorno tiene un excelente presente y un futuro muy prometedor. Palabras clave: Kinect, capoeira, captura movimiento, Mocap, Reactive Virtual Trainer, RVT, Unity 3D, entrenador personal, comparación y corrección de movimientos. ix Índice de figuras 2.1. El caballo en movimiento de Muybridge . . . . . . . . . . . . 10 2.2. El perro generado por ordenador: Mozy . . . . . . . . . . . . 11 2.3. Sistema de captura de movimiento mecánico . . . . . . . . . . 14 2.4. Sistema de captura de movimiento electromagnético . . . . . 15 2.5. Sistema de captura de movimiento óptico con indicadores activos 16 2.6. Sistema de captura de movimiento óptico con indicadores pasivos................................ 16 2.7. Gafa ETG-2w usada para la captura de movimiento ocular . . 18 2.8. Dispositivos de Nintendo Wii . . . . . . . . . . . . . . . . . . 19 2.9. Dispositivos de Sony PlayStation . . . . . . . . . . . . . . . . 20 2.10. Dispositivo Kinect v2 . . . . . . . . . . . . . . . . . . . . . . . 21 3.1. LogoUnity ............................ 28 3.2. Apariencia de editor Unity . . . . . . . . . . . . . . . . . . . . 29 3.3. Aspecto del humano estándar de MakeHuman . . . . . . . . . 31 3.4. Humano básico de Fuse Character Creator . . . . . . . . . . . 32 3.5. Avatar utilizando el servicio online con animaciones de Mixamo 33 3.6. Herramienta verificadora de Kinect .............. 35 3.7. Adaptador de Kinect para Windows . . . . . . . . . . . . . . 36 4.1. Cubeman con la lista de todos los Joints . . . . . . . . . . . . 40 4.2. Patrón de Singleton . . . . . . . . . . . . . . . . . . . . . . . 41 4.3. Fichero de texto con los datos del BodyData . . . . . . . . . . 42 4.4. Escena con los dos cubeman . . . . . . . . . . . . . . . . . . . 43 4.5. Grafo de comparación de movimiento . . . . . . . . . . . . . . 45 4.6. Avatar inicial de MakeHuman . . . . . . . . . . . . . . . . . . 46 4.7. Avatar con 137 huesos . . . . . . . . . . . . . . . . . . . . . . 47 4.8. Avatar inicial con ropa . . . . . . . . . . . . . . . . . . . . . . 47 4.9. Auto-Rig de Mixamo . . . . . . . . . . . . . . . . . . . . . . . 48 4.10. Diagrama de estados de animator . . . . . . . . . . . . . . . . 49 4.11. Animación de victoria . . . . . . . . . . . . . . . . . . . . . . 50 xvii xviii Índice de figuras 4.12. Análisis de movimiento . . . . . . . . . . . . . . . . . . . . . . 52 4.13. Escenario del gimnasio para el alumno . . . . . . . . . . . . . 53 4.14. Escenario de la isla para el profesor y los animadores . . . . . 54 4.15. Realizando las grabaciones de movimiento . . . . . . . . . . . 56 4.16. Diagrama que ilustra la lógica del sistema . . . . . . . . . . . 57 4.17. Interfaz menu inicio . . . . . . . . . . . . . . . . . . . . . . . 58 4.18. Interfaz menu principal . . . . . . . . . . . . . . . . . . . . . . 59 4.19. Interfaz de ayuda . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.20. Interfaz de créditos . . . . . . . . . . . . . . . . . . . . . . . . 60 4.21. Interfaz para seleccionar el tipo de usuario . . . . . . . . . . . 61 4.22. Escena del profesor . . . . . . . . . . . . . . . . . . . . . . . . 62 4.23. Escena del alumno . . . . . . . . . . . . . . . . . . . . . . . . 63 Capítulo 1 Introducción En la actualidad los sistemas de captura de movimiento se han convertido en una herramienta imprescindible en la industria del cine y de los videojuegos, ya que facilitan mucho la labor de los animadores y desarrolladores a la hora de crear personajes. Con esta tecnología se generan unos movimientos más realistas y precisos en menos tiempo, con un coste total inferior a los sistemas antiguos. Estos sistemas pueden ser particularmente útiles no solo en los dos ámbitos anteriormente mencionados, sino también para la realización de diagnósticos médicos, estudio de prototipos de máquinas, análisis de los atletas en la medicina deportiva, recuperación de las capacidades motrices de gente discapacitada, etc. Todo ello se puede realizar con una herramienta mocap de uso doméstico a bajo coste y sin la necesidad de utilizar trajes especiales, como es el caso de Kinect. Los Reactive Virtual Trainers (RVT) son una tecnología que se viene utilizando desde hace algunos años para la danza, las artes marciales y los ejercicios físicos en general. Teniendo en cuenta esta funcionalidad, se decidió unir la práctica del arte marcial afro-brasileño, conocido como capoeira, con el sistema de captura de movimientos de Kinect, dando lugar al desarrollo de un entrenador personal en dicho deporte. Todo ello ha sido posible gracias a la disposición de varios profesionales de la escuela Abadá-Capoeira que nos han permitido grabarles para el presente proyecto. Una de las características fundamentales de la capoeira, como de muchas otras artes marciales, es la realización de manera repetida de un mismo movimiento para ir mejorando paulatinamente su ejecución, tanto en su trayectoria como en su velocidad o fuerza. Sin embargo, especialmente en el caso de los principiantes, resulta complejo apreciar si existe mejora sin la supervisión constante de un entrenador, lo cual no resulta posible en la ma1 2Capítulo 1. Introducción yor parte de las ocasiones. De este modo, la aplicación desarrollada sobre un entrenador personal solventaría esta carencia. Con el objetivo de realizar un entrenador personal de una forma precisa y exhaustiva, primero se realizaron varias visitas a la Asociación Cultural Deportiva Rio, donde se reúnen los expertos en capoeira, para determinar qué movimientos serían capturados de una forma óptima por Kinect. Posteriormente se realizaron diversas grabaciones de los movimientos escogidos para incorporar las diferentes técnicas de capoeira al entrenador virtual. Los estudios realizados sobre los RVT determinan que los usuarios ponen más atención en el objeto que se mueve en pantalla, la música, los colores, los movimientos, etc, que con un entrenador personal cotidiano. Por ello, en los entrenamientos realizados con tecnología RVT se ha observado una evolución mayor, ya que existe más competitividad por realizar los movimientos con una técnica más adecuada. Otra ventaja destacable sobre el uso de Kinect con un entrenador personal es poder utilizar esta tecnología en cualquier sitio, ya sea en el hogar, una residencia o un hospital para realizar algún tipo de rehabilitación, entre otros. Por lo tanto, se posibilita su uso a todo tipo de públicos, sin la necesidad de tener que desplazarse hasta el lugar donde habitualmente se realiza la actividad. Con el fin de conseguir un entorno más realista y dinámico, se desarrollaron diferentes avatares con una apariencia bastante humana. Además, se elaboraron dos escenarios diferentes, ambientados cada uno de ellos según su propósito. El primero de ellos escenifica un entorno de entrenamiento, como es el caso de un gimnasio. El segundo, está orientado hacia el profesor y los animadores, representando una playa brasileña. Con todo ello, se logró crear una aplicación con la que el usuario sentía estar en un entorno más real. 1.1. Objetivos del trabajo Los sistemas RVT desarrollados mediante mocap se centran esencialmente en la representación realista de cómo ayudar a los usuarios a formarse y perfeccionar distintas técnicas. Para ello, se basan en la comparación entre el movimiento realizado por ellos mismos y movimientos grabados previamente por un experto. Siguiendo estas pautas, se determinaron unos objetivos que cumplir en este Trabajo de Fin de Grado (TFG): Identificar las limitaciones que presenta el dispositivo Kinect para lograr una captura de movimientos de capoeria de una forma correcta. Implementar y diseñar una aplicación, con la ayuda de un motor de juego, que simule un entrenador virtual para que realice las correcciones de los movimientos de los usuarios. 1.2. Plan de Trabajo 3 Realizar un análisis de los movimientos de capoeira capturados con Kinect y lograr así, clasificar cuáles han sido los movimientos mejor registrados para el entrenamiento. 1.2. Plan de Trabajo Este proyecto se ha elaborado en tres fases: especificación, implementación y documentación del proyecto. En la primera fase se establecieron cuales fueron los objetivos y el alcance del TFG, siendo necesario organizar fechas para concretar reuniones con los tutores y determinar, así, el seguimiento del desarrollo del proyecto. Posteriormente, en la segunda fase, se ponen en práctica las especificaciones planteadas en la fase anterior. Esta fase se divide a su vez en tres pasos: el primero fue la elección del entorno a utilizar, de modo que se adecue a la tecnología de Kinect y se ajuste a nuestra forma de trabajo; el segundo paso consistió en crear la aplicación con su entorno 3D, añadiendo la lógica comparativa del movimiento e incorporando diferentes avatares; y, en el último paso, una vez acabada la aplicación, se realizaron las grabaciones con gente experta en capoeira, analizando y ajustando sus movimientos para incorporarlos al entrenador virtual. Finalmente, en la fase de documentación, se recopiló toda la información y contenido necesario para la elaboración del Trabajo de Fin de Grado. Esta fase se ejecuta paralelamente a la fase de implementación. A continuación se muestra una lista con las tareas de cada fase y sus fechas estimadas. Especificación del proyecto •Definición del proyecto : 2015 - julio 2016. •Plateamiento de los objetivos : diciembre 2016 - enero 2016. •Reuniones semanales con los tutores : diciembre 2016 - junio 2017 Implementación del proyecto •Elección del entorno de desarrollo : diciembre 2016. •Creación del entrenador virtual : febrero 2017 - mayo 2017 •Diseño de avatares : abril 2017 •Creación de escenarios 3D : mayo 2017 •Grabación con gente experta : mayo 2017 Documentación del proyecto •Documentación para el proyecto : abril 2017 - junio 2017 •Realización de la memoria : mayo 2017 - junio 2017 4Capítulo 1. Introducción 1.3. Estructura de la memoria Este trabajo se estructura en seis capítulos definidos de la siguiente manera: En el capítulo uno se describe la introducción al proyecto, los objetivos principales y el plan del trabajo. En el capítulo dos se describe los entrenadores virtuales, la historia de la captura de movimiento y los diferentes métodos de captura de movimiento que existen. El capítulo tres engloba las tecnologías utilizas, tanto hardware como software, y se justifica la toma de decisión de los entornos utilizados. En el capítulo cuatro se describe todo el desarrollo del proyecto explicando en diferentes secciones el estudio previo y las implementaciones necesarias para la creación del entrenador virtual de capoeira. Además, se explica la transición de escenas en la aplicación. En el capítulo cinco se presenta las discusiones, la conclusión obtenida del proyecto y las propuestas de cara al futuro. En el capítulo seis se describe la distribución del trabajo por parte de los integrantes del grupo. Capítulo 1 Introduction Nowadays, motion capture systems have become an essential tool in the film and video game industry, since they make it easier for the animators and developers to create characters. With this technology, more realistic and precise movements are generated in less time, being the total cost lower than that of the old systems. These systems can be particularly useful, not only in the two previously mentioned fields, but also in medical diagnosis, study of prototypes of machines, analysis of athletes in sports medicine, recovery of motor skills by disable people, etc. All this can be done with a household mocap tool, at a low price, without the need of using special suits, as in the case of Kinect. The Reactive Virtual Trainers (RVT) is a technology that has been used for some years for dancing, martial arts and physical activity in general. Considering this functionality, we decided to bring together the practice of the African-Brazilian martial art, known as capoeira¸ and the Kinect motion capture system, in this way developing a personal trainer for this sport. All this has been possible due to the willingness of professionals at the AbadáCapoeira school, who let us record them for the present project. One of the main characteristics of capoeira, as in many other martial arts, is that a given movement needs to be done repeatedly in order to improve progressively both its trajectory or speed and strength. However, particularly in the case of new learners, it is difficult to observe if they improve without the constant supervision of a trainer, which it is almost always impossible. Therefore, the developed application of a personal trainer would make up for this lack. With the purpose of developing a personal trainer accurately and thoroughly, firstly, we made some visits to the Asociación Cultural Deportiva Rio (Sports Cultural Association Rio), where capoeira experts gather, to determine which movements would be optimally captured by Kinect. Later, the chosen movements were recorded several times so as to include the different capoeira techniques to the virtual trainer. 5 6Capítulo 1. Introduction Research on RVT shows that users working with a screen focus more on moving objects, music, colours, movements, etc. than they do when working with a trainer in a gym. Therefore, greater progression has been observed in training done with RVT technology, since there is a higher competitiveness to make movements with a more precise technique. Another important advantage of Kinect with a personal trainer is that this technology can be used anywhere, such as at home, a residence or a hospital to do rehabilitation, among others. Consequently, it is accessible to every type of public, without the need of moving to the place where the activity usually takes place. In order to reproduce a more realistic and dynamic environment, different avatars were developed with a fairly human appearance. Furthermore, two different settings were created, each of them adapted according to their purpose. The first one consists of a training atmosphere, as a gym. The second one focuses on the teacher and the animators, representing a Brazilian beach. In this way, we managed to create an application which allows the user to feel that they are in a more realistic environment. 1.1. Work Objectives RVT systems developed through mocap mainly focus on the realistic representation of how to help users to train and perfect the techniques. With this purpose, they are based on the comparison between the movements made by themselves and those previously recorded by an expert. Following these guidelines, some aims were set to be achieved in this Final Project (FP): To identify the limits of the device Kinect to correctly achieve a motion capture of capoeira. To implement and design an application, with the help of a game engine, that simulates a virtual trainer to correct the users movements. To do an analysis of capoeira movements captured with Kinect and, thus, classify those which were best registered for the training. 1.2. Project/Work Plan This project has been made in three phases: specification, implementation and documentation. The first stage was devoted to establish the objectives and the extent of the FP, being necessary to organise the dates to meet the tutors and so determine the following of the project. Later, in the second stage, the specifications set in the previous phase are put into practice. This stage is then divided into three steps: the first 1.3. Memory Structure 7 one was choosing the environment to be used so as it adjusted to Kinect technology and to our way of working; the second step consisted on creating the application with its 3D environment, adding the comparison logic of movement and incorporating different avatars; and, in the last step, one the application was finished, the recordings of experts in capoeira were made, analysing and adjusting their movements to add them to the virtual trainer. Finally, in the documentation phase, all the necessary information and content was gathered to develop the Final Project. This phase took place simultaneously with the implementation. Below is a list of the tasks of each phase and their estimated dates. Specification of the project •Project Definition: 2015 - July 2016. •Goal Setting: December 2016 - January 2016. •Weekly meetings with tutors: December 2016 - June 2017. Implementation of the project. •Choice of development environment: December 2016. •Creation of the virtual trainer: February 2017 - May 2017. •Avatars design: april 2017. •Creating 3D Scenarios: May 2017. •Recording with expert people: May 2017. Project documentation. •Documentation for the project: April 2017 - June 2017. •Realization of memory: May 2017 - June 2017. 1.3. Memory Structure This project is structured in six chapters defined as follows: In chapter one, described the introduction to the project, the main objectives and the work plan. In chapter two, virtual trainers and the history and different methods of motion capture are described. Chapter three encompasses the technologies used, both hardware and software, and the decision taken for the chosen environment is justified. 14 Capítulo 2. Estado del arte Figura 2.3: Sistema de captura de movimiento mecánico 2.3.2. Captura de movimiento electromagnética Los sistemas de captura de movimiento electromagnética (véase Figura 2.4), están formados por sensores creados por tres espirales ortogonales que miden el flujo magnético, determinando tanto la posición como la orientación del sensor. Un transmisor genera un campo electromagnético de baja frecuencia que los receptores detectan y transmiten a la unidad electrónica de control, donde se filtra y amplifica. A continuación, los datos se envían a un ordenador central, donde se deduce la orientación y posición de todos los sensores del escenario. Un sistema magnético estándar consta de 18 sensores, una unidad de control electrónica y un software para el procesamiento. En cambio, un sistema de última generación puede tener hasta 90 sensores capaces de capturar hasta 144 muestras por segundo, teniendo un coste medio (en torno a 4.000 y 11.000 e). Existen dos tipos de rastreadores electromagnéticos: Flock of Birds de Ascension Technology Corporation: usa pulsos magnéticos cuadrados. Patriot de Polhemus: usa campos magnéticos sinusoidales. Ambos sistemas tienen el inconveniente de producir interferencias con materiales metálicos debido a su conductividad, ya que se crean campos magnéticos que interfieren con el campo magnético del emisor. De ese modo, se trata de un sistema difícil de transportar a diferentes escenarios. El proceso de captura no es en tiempo real, aunque se aproxima bastante, pese a que tiene un número de capturas por segundo demasiado bajo. Como punto a favor, es mas fácil procesar los datos que en otros sistemas mocap, ya que los datos obtenidos están en relación con la posición del actor. 2.3. Métodos de captura de movimiento 15 Figura 2.4: Sistema de captura de movimiento electromagnético 2.3.3. Captura de movimiento óptica Los sistemas ópticos emplean los datos recogidos por sensores de imagen para obtener la posición de un elemento en el espacio, utilizando indicadores (en inglés markers) pegados al cuerpo del actor, aunque los sistemas modernos permiten recoger los datos rastreando la superficie de forma dinámica. Estos sistemas permiten la grabación en tiempo real, ya que utilizan un ordenador que recibe la entrada de una o mas cámaras digitales CCD (Charge-coupled device) sincronizadas produciendo proyecciones simultáneas. Habitualmente se utilizan entorno a 4 o 32 cámaras, siempre y cuando no se añadan de forma innecesarias, ya que complicarían el procesamiento de la información. Las cámaras utilizadas en este tipo de sistemas tienen una velocidad de captura de entre 30 y 1.000 fotogramas por segundo. Estos sistemas se deben calibrar mediante el rastreo de un objeto visible, de modo que se calcule la posición de cada cámara respecto de ese punto, en el caso de que una cámara se mueva, será necesario recalibrar el sistema. Existen varios clases de sensores para este tipo de captura de movimiento: 2.3.3.1. Indicadores activos Este sistema está compuesto por leds que emiten su propia luz determinando la posición del actor, de esta manera se consigue aumentar la distancia a la que se puede desplazar el artista (véase Figura 2.5). La posición de los marcadores se determina iluminando uno o varios indicadores, de manera sincrónica a las cámaras en cada instante de tiempo, a una frecuencia de muestreo muy alta. De modo que los indicadores deben estar sincronizados con todas la cámaras para realizar una sola captura en cada iluminación. 16 Capítulo 2. Estado del arte Figura 2.5: Sistema de captura de movimiento óptico con indicadores activos 2.3.3.2. Indicadores pasivos Estos indicadores véase Figura 2.6), se tratan de bolas de goma recubiertas de un material reflectante que se adhieren al traje del actor en puntos estratégicos. De esta forma, la luz que reflejan se origina cerca de las cámaras, siendo recogida por estas. Figura 2.6: Sistema de captura de movimiento óptico con indicadores pasivos Este tipo de sistemas pueden capturar un gran número de marcadores a una frecuencia de muestreo de hasta 2000 fotogramas por segundo. Se suelen utilizar principalmente para el registro de movimiento facial. El precio de estos marcadores oscila entre 17.000 y 75.000 e. 2.3. Métodos de captura de movimiento 17 2.3.3.3. Indicadores activos modulados en el tiempo Utilizando luz estroboscópica, se mejora el sistema respecto a los indicadores activos estándar, y mediante la iluminación de manera grupal se determina la identidad de cada marcador a través de la frecuencia de destello. De esta manera, se consiguen frecuencias de captura mayores, con el inconveniente de aumentar la carga del sistema. Este tipo de marcadores permiten observar el resultado en tiempo real, ya que cada indincador es único, eliminando el problema del intercambio de marcadores. Además, este sistema permite su utilización bajo la luz directa del sol, sin que se produzcan interferencias. Existen sistemas de captura de movimiento compuestos por ocho cámaras de 12 megapixeles capaces de capturar hasta 480 fotogramas por segundo. Con un precio inferior a los 38.000 e. 2.3.3.4. Indicadores semipasivos imperceptibles A diferencia de los sistemas anteriores, en este caso, son los propios indicadores emisores de luz led los que detectan su propia posición y orientación. Se trata de marcadores que determinan la incidencia de iluminación, con un número ilimitado de etiquetas fotosensibles. Permitiendo colocarse en la ropa u otros objetos, además de trabajar bajo la luz solar. Considerando que no se utilizan cámaras de alta frecuencia , se reduce de forma considerable el tráfico de datos. Por lo tanto, son ideales para la captura de movimientos en tiempo real. 2.3.3.5. Sin marcadores Se trata de un sistema en el que no se requiere el uso de trajes especiales para el seguimiento de los movimientos de los actores. Se utilizan algoritmos que permiten identificar la silueta humana mediante el análisis de imágenes, identificando sus formas y descomponiendolas en segmentos para realizar el seguimiento de sus movimientos. Estos sistemas tienen la dificultad de capturar movimientos sutiles, como los realizados con los dedos o la cara. 2.3.4. Captura de movimiento mediante fibra óptica Inicialmente, este medio de transmisión se empleó para el desarrollo de unos guantes capaces de capturar el movimiento de los dedos, pero en la actualidad, se han creado trajes idóneos para captar cualquier parte del cuerpo. Con el objetivo de registrar los movimientos, se fijan sensores de fibra óptica flexibles, consiguiendo atenuar la luz transmitida, y así, medir las rotaciones de las articulaciones. Estos sensores no son capaces de medir la posición del actor en el escenario, sino que el sistema calcula la posición de las extremidades capturadas. 18 Capítulo 2. Estado del arte 2.3.5. Captura de movimiento mediante ultrasonidos Este sistema utiliza emisores que generan pulsos ultrasónicos (imperceptible por el ser humano) capturados por uno o varios receptores (a modo de radar), permitiendo averiguar la posición del emisor en el escenario, incluso en algunos casos, su orientación. El inconveniente de esta tecnología se debe a que los emisores son demasiado voluminosos, siendo incapaces de capturar movimientos bruscos de una forma correcta. Aunque en comparación con otros sistema de captura de movimiento, el precio supone una gran ventaja, teniendo un coste de 2500 e. 2.3.6. Captura de movimiento mediante sistemas inerciales Con el objetivo de capturar el movimiento, los sistemas inerciales emplean sensores, como giroscopios y acelerómetros, con el propósito de obtener información sobre la velocidad angular y la aceleración del sensor. La información obtenida de los sensores se transmite a un ordenador, donde se puede observar el movimiento capturado sobre una figura ya animada. Este tipo de sistemas no utiliza mecanismos externos como cámaras; y como en el caso de los sistemas ópticos, cuantos más sensores se utilicen, más real será el movimiento capturado, teniendo unos grandes rangos de captura. El sistema de Nintendo (Wiimote) utiliza esta técnica, no obstante, para la captura de movimientos se utilizan trajes especiales con otros sensores mas precisos, con un precio que varía entre 22.000 y 71.000 e. 2.3.7. Captura de movimiento ocular Estos sistemas utilizan la combinación del seguimiento de los ojos con el de la cabeza, obtiniendo unas líneas exactas de la vista, mientras que el usuario es capaz de moverse libremente. De este modo, permite a los atletas, pacientes y otros usuarios desempeñar sus tareas de una forma correcta, sin ningún tipo de impedimento. Figura 2.7: Gafa ETG-2w usada para la captura de movimiento ocular 2.4. Métodos de captura de movimiento en los videojuegos 19 Como ejemplo de investigación en esta tecnología, la empresa SMI (Senso Motoric Instruments)2ha desarrollado una gafa (véase Figura 2.7) que permite el seguimiento de los ojos y combinado con la cámara, detecta el punto exacto donde está detenienda la mirada. Soportando el acceso de datos en tiempo real y el control de usuario a través de una conexión inalámbrica. 2.4. Métodos de captura de movimiento en los videojuegos En la actualidad, gracias a la necesidad de crear unos personajes con gestos y movimientos mas realistas, el sector de los videojuegos ha conseguido que la captura de movimiento se convierta en una herramienta esencial, ya que permite una mayor inmersión en los videojuegos. Llegando a ser interpretados en la mayoría de juegos deportivos, por jugadores profesionales. En consecuencia, las principales empresas de videojuegos como Nintendo, Sony y Microsoft, han desarrollado los siguientes sistemas capaces de capturar movimientos. 2.4.1. Nintendo, Wii Remote En el año 2006, Nintendo lanzó Wii (Nintendo-Wii, 2006), perteneciente a la séptima generación de videoconsolas, sucesora directa de Nintendo GameCube y compitió con la Xbox 360 de Microsoft y la PlayStation 3 de Sony. La compañia Nintendo afirmó que Wii (véase Figura 2.8a) estaba destinada a un abanico de consumidores mas amplico a diferencia de sus rivales. (a) Wii Remote (b) Barra sensor Figura 2.8: Dispositivos de Nintendo Wii La característica más distintiva de la consola, es el mando inalámbrico Wii Remote. Se trata de un dispositivo inalambrico, capaz de detectar la aceleración en un plano tridimensional mediante la utilización de un acelerome2https://www.smivision.com/eye-tracking/product/eye-tracking-glasses/ 20 Capítulo 2. Estado del arte tro ofrece la posibilidad de apuntar y señalar, determinando los movimientos en un plano tridimensional mediante la utilización de un acelerometro. Además cuenta con un sensor óptico, lo que permite determinar el lugar donde el mando Wii Remote está apuntando. A diferencia de un mando a distancia tradicional, este sistema detecta la luz led que emite la barra de sensores de la consola (véase Figura 2.8b). Tiene un tamaño aproximado de 20 cm de longitud y cuanta con diez leds infrarrojos, cinco en cada extremo de la barra. Para un correcto funcionamiento, no es necesario señalar directamente a la barra sensor, pero en caso contrario, perturbaría la capacidad de detección debido al limitado ángulo de visión. La barra sensor emite desde cada uno de los extremos, unos puntos de luz que permite al Wii Remote ser localizado. A partir de estas dos distancias, el procesador de la videoconsola Wii determina la distancia entre el Wiimote y la barra de sensores utilizando la triangulación. Los movimientos realizados con Wii Remote, permiten al jugador imitar las acciones reales de juego, como mover una espada, lanzar una bola de fuego, disparar una pistola, etc; en lugar de pulsar solo los botones. 2.4.2. Sony, PlayStation Move Como consecuencia de los buenos resultados obtenidos por Nintendo, Sony sacó al mercado en 2010, PlayStation Move (PlayStation-Move, 2010), un sistema de control de movimientos mediante marcadores activos, compatible con las videoconsolas PS3 y PS4 (véase Figura 2.9a). Este sistema incorpora un giroscopio, ya que ningúna tecnología de captura de movimientos mediante marcadores, puede determinar si se han producido giros sin realizar una triangulación. (a) PlayStation Move (b) PlayStation Eye Figura 2.9: Dispositivos de Sony PlayStation Estas videoconsolas utilizan una camara denominada PlayStation Eye (PlayStation-Eye, 2013) que detecta el color que toma la esfera del dispositivo PlayStation Move, determinando de este modo su posición. Esta camara 2.4. Métodos de captura de movimiento en los videojuegos 21 dispone de dos lente, una de ellas realiza la función de camara web y la otra activa la captura de movimientos. (véase Figura 2.9b) El principal inconveniente de este sistema, es la luz y los colores de fondo. Ya que, se vuelve inútil teniendo una luz de fondo del mismo color que el dispositivo PlayStation Move, perdiendo por completo la posición de los marcadores. En la actualidad, es el sistema con menor estabilidad en la captura de movimientos en los videojuegos. 2.4.3. Microsoft, Kinect Por otra parte, en 2010 Microsoft desarrolló Kinect(para Xbox-One, 2010) para Xbox 360, en sus inicios conocido como Project Natal (véase Figura fig:kinectv2). Después de unos años, Microsoft ofreció la posibilidad de conectar Kinect por medio de ordenadores o tabletas, con el sistema operativo Windows 8 o superior, mediante un adaptador (Kinect-Adapter, 2014) con una conexión usb 3.0. El dispositivo Kinect es un periférico para videojuegos que prescinde de mandos gracias a un sensor de detección de movimientos. Este sistema reconoce el rostro, la voz, los movimientos y gestos de los jugadores, mediante una cámara conectada a la videoconsola, el ordenador o tablet. Se trata de una barra horizontal conectada a una plataforma diseñada para mantenerse en una posición horizontal. En su interior contiene un hardware compuesto por una cámara RGB, un sensor de profundidad, el proyector de luz infrarroja, un micrófono bidireccional, un firmware y un procesador que utiliza algoritmos para procesar las imágenes tridimensionales. De forma conjunta capturan el movimiento, además de ofrecer un reconocimiento facial y de voz. Figura 2.10: Dispositivo Kinect v2 22 Capítulo 2. Estado del arte En 2013, Microsoft anunció su próxima consola Xbox One y el nuevo sensor de Kinect que incluía mejoras sustanciales respecto a la versión anterior. A continuación se destacan las más significativas a nivel de desarrollo. (Microsoft, 2014a) Mayor campo de visión y un seguimiento mejorado del cuerpo •Con un campo de visión de 70oen horizontal y 60oen vertical. La versión inicial disponía de 57oy 43orespectivamente. •Esta nueva versión, permite detectar hasta seis jugadores de forma simultanea con 25 articulaciones por persona dentro de un mismo campo de visión. La versión anterior solo podía detectar dos jugadores y 20 articulaciones. •Como desventaja, destacar la carencia de motor de inclinación en esta nueva versión de Kinect. Mayor resolución con mas detalle •Cámara a color capaz de realizar vídeos con una resolución Full HD de 1920 x 1080 ppp. La versión inicial disponía de 640 x 480 ppp. •Detecta de una manera más precisa el entorno. •Capacidad de diferenciar la orientación del cuerpo incluyendo sus manos y dedos. •El face tracking tiene mucho más detalle, permitiendo captar los gestos de la cara. •Mayor calidad de imagen. Mejora el rango de profundidad del sensor Se incrementa el rango de actuación, pasando de 0,5 a 4,5 metros. Aumento de la velocidad en el puerto USB 3.0 La velocidad de la comunicación con el ordenador se transmite mas rápido, disminuyendo la latencia del sensor, pasando de 90 ms a 60 ms. Mejora en la captación de sonidos Esta nueva versión de Kinect incluye una gran mejora en cuanto al reconocimiento de voz. De modo que eliminando los ruidos de ambiente, permite captar instrucciones sonoras con mayor detalle. 2.5. Trabajo relacionado 23 Captación de movimientos a oscuras Nuevas funciones de infrarrojos (IR), capaces de reconocer y captar los movimientos aunque la sala este a oscuras. Genera una vista independiente de la iluminación Kinect tiene dos funcionalidades principales, generar un mapa 3D de la imagen que capta la cámara y realizar un reconocimiento humano en movimiento a partir de diferentes segmentos del cuerpo, además de un esquema en escala de grises del rostro. El periférico, transmite una luz infrarroja a través del escenario, lo que permite conocer el tiempo que tarda la luz en ser reflejada por los objetos. El sistema actúa como un sonar, determinando el tiempo que tarda en reflejarse la luz, se establece la distancia a la que se encuentran los objetos en tiempo real. Como base para el estudio de la captura de movimientos y las tecnologías disponibles en este ámbito, se han realizado diferentes consultas a los siguientes proyectos: (Alemán Soler, 2014) (Menéndez Mendoza y Rodríguez Marante, 2015) (MEJÍAS, 2014) 2.5. Trabajo relacionado Para la realización de este proyecto se han revisado trabajos anteriores en el área de los Reactive Virtual Trainers. En este apartado se describirán los análisis de esos proyectos, y de este modo, poder aclarar y enfocar el desarrollo de este trabajo. 2.5.1. Captura de movimiento en la danza Uno de los campos en donde la captura de movimiento aparece es en la danza, y un claro ejemplo es (Kyan et al., 2015). En este artículo se describe una forma de evaluar y visualizar en tiempo real, los movimientos de la danza de ballet. Para desempeñar esa tarea utilizan como recurso la tecnología de captura de movimiento kinect, y gracias a ella, registran los movimientos de bailarines profesionales, de modo que , sean una base para las comparaciones de movimientos. Estos, a su vez , son representados como un espacio de posturas en forma de trayectorias de gestos. La evaluación de la coreografía empezará cuando detecte al bailarín aficionado y con el fin de proporcionar una puntuación para cada coreografía, se compara la posición alineada y velocidad del bailarín aficionado con las correspondientes del bailarín profesional. 30 Capítulo 3. Tecnologías empleadas La ejecución de pruebas del juego, se realiza por medio del Play mode, situado en el sexto panel. Esta funcionalidad permite poner en funcionamiento el juego, pararlo y detener su ejecución, siendo esto, fundamental para comprobar y depurar un juego (Unity-Technologies, 2017c). Una vez estudiado el editor de Unity, se toma la decisión de que lenguaje de programación utilizar. Unity soporta dos lenguajes: C#: lenguaje estándar similar a C++ y Java. UnityScript : lenguaje basado en JavaScript propio de Unity. Se optó por la decisión de utilizar C#, ya que se acomoda mejor a la aplicación, puesto que no está orientada a web, y además, ofrece unas mejores características que UnityScript. Para controlar los eventos de un objeto o los eventos de las entradas de los usuario, Unity utiliza scripts. De forma básica, los scripts tienen implementado un método Start para inicializar las variables del objeto y un método Update, encargado de actualizar los parámetros a partir del tratamiento de eventos. Se utilizó Visual Studio 2015 (Microsoft-Visual-Studio, 2017) para la depuración de scripts, ya que proporciona una visualización de las variables utilizadas en tiempo de ejecución, y además, da la posibilidad de ejecutar el script paso a paso. Otro factor clave fue, que con este entorno de programación se tenía experiencia previa de uso. El otro programa utilizado para la depuración de scripts en Unity fue MonoDevelop, ya que proporciona un entorno de desarrollo libre y gratuito, diseñado primordialmente para C#. 3.1.2. MakeHuman La aplicación MakeHuman sirve para crear modelos humanos que pueden ser utilizados en diferentes plataformas 3D, como animaciones, videojuegos, etc. Promueve el arte digital y artistas digitales, proporcionando una herramienta de alta calidad, liberada al dominio público con la licencia CCO, mientras que la base de datos y el código se publicaron mediante una licencia AGPL3. MakeHuman utiliza un humano estándar y mediante varios deslizadores o scrolls, se podrán alterar los parámetros de la estatura, anchura, sexo, edad, etc. (véase Figura 3.3) En un principio, se pensó utilizar esta aplicación para el modelado de los personajes, debido a su intuitiva interfaz y la facilidad de exportación en formato fbx, el cual utiliza Unity. Pero tras investigar posibles alternativas, se encontró la aplicación Fuse Character Creator, la cual posibilitaba el desarrollo de los personajes con mayor calidad. De forma simultanea, se podría realizar la configuración de los personajes para su posterior animación. 3.1. Software empleado 31 Figura 3.3: Aspecto del humano estándar de MakeHuman 3.1.3. Fuse Character Creator Se trata de una aplicación desarrollada por Mixamo, la cual permite crear personajes 3D únicos mediante una intuitiva interfaz, separando el avatar en diferentes partes, como son la cabeza, el torso, las piernas y los brazos (véase Figura 3.4). Posteriormente a la selección de las diferentes partes del cuerpo ya predefinidas por el sistema, se puede editar cada una de las partes del personaje, ya sean los rasgos de la cara, el tamaño de los brazos, la longitud de las piernas, etc. Al seleccionar la parte del cuerpo que se quiere modificar, simplemente será necesario pinchar y realizar un scrool o deslizamiento hacia la izquierda o derecha para aumentar su tamaño. Por otro lado, para seleccionar el punto exacto donde se ubicarán las diferentes parte del cuerpo como por ejemplo el ombligo, los ojos, las rodillas, etc, se realizará un scrool o desplazamiento hacía arriba o abajo. Al terminar de modelar el personaje, se pasará a la sección de vestuario. Donde existen prendas predefinidas, como camisas, pantalones, zapatos, etc. Al terminar de vestir al avatar, esta aplicación posee la peculiaridad de poder subir al servidor de Mixamo el modelado realizado. Pudiendo completar la configuración de los huesos (rigger), con la posibilidad de crear varios esqueletos para un mismo personaje y además incluir las animación deseadas. 32 Capítulo 3. Tecnologías empleadas Figura 3.4: Humano básico de Fuse Character Creator Para la utilización de esta aplicación es necesario el uso del servidor Steam1, ya que se trata de una plataforma de distribución digital, comunicaciones y servicios multijugador, donde está alojado Fuse Character Creator. 3.1.4. Mixamo 3D Animation Online Services Mixamo2es una compañía tecnológica encargada del desarrollo y venta de servicios para la animación de personajes 3D. Proporcionando un servicio online, que permite buscar entre una amplia gama de movimientos, que van desde el combate, pasando por deportes, hasta poder tocar un instrumento. Los productos y características de Mixamo son compatibles con todos los paquetes de software 3D, pudiendo realizar una exportación, eligiendo entre varias aplicaciones 3D como: Unity3d, UDK, 3ds Max, Maya, zBrush, Houdini, Motionbuilder entre otros. Una de las características más sorprendentes de Mixamo, es el AutoRigger. Ya que ahorras horas de trabajo modelando el personaje y con este sistema, el proceso sucede en cuestión de minutos. Todo lo que se necesita hacer es subir al servidor de Mixamo el personaje 3D (soporta .fbx, .bvh, .zip, obj), seleccionar el numero de huesos que mejor se adapte al esqueleto del personaje (véase Figura 4.9) y esperar que termine el proceso de rigger. 1http://store.steampowered.com/?l=spanish 2https://www.mixamo.com/ 3.2. Hardware empleado 33 Tras completar la fase de modelado, Mixamo ofrece la posibilidad de animar al personaje con movimientos, que permiten, no sólo aplicar cualquier animación, sino también personalizarlas, ya que se pueden modificar en tiempo real con el personaje, obteniendo el resultado deseado. (véase Figura 3.5) Por último, descargarlos en cualquier formato que se necesite (.fbx, .bvh, .dae) y fácilmente se podrá combinar de nuevo en las escenas 3D. Estas animaciones utilizan una base matemática, lo que facilita su uso para los diferentes personajes que se deseen animar. Tradicionalmente era extremadamente lento, costoso y complicado, lograr modelar personajes 3D con resultados de alta calidad. En cambio mediante esta técnica, Mixamo intenta reducir los tiempos de desarrollo, pudiendo obtener unas animaciones de calidad, sin la necesidad de contar con altos recursos. Figura 3.5: Avatar utilizando el servicio online con animaciones de Mixamo 3.2. Hardware empleado El hardware principal usado en este proyecto es el dispositivo de captura de movimiento Kinect versión 2 (para Xbox-One, 2010) y el adaptador de Kinect, capaz de conectar el sensor al ordenador con el sistema operativo Windows (Kinect-Adapter, 2014). Sin embargo, el desarrollo del proyecto se llevó a cabo en ordenadores portátiles personales, teniendo que utilizar uno de ellos como enlace con Kinect, debido a la limitación de uso que tiene el dispositivo en un solo sistema operativo, como es Windows. 34 Capítulo 3. Tecnologías empleadas 3.2.1. Kinect versión 2 Se trata de un periférico que permite a los usuarios interactuar con la aplicación, de modo que gracias a sus sensores, no tiene la necesidad de utilizar algún tipo de mando inalámbrico. Este dispositivo se documenta en la sección 2.4.3 del proyecto. Pasados unos años tras la salida de Kinect, en 2014 Microsoft liberó el controlador Software Development Kit (SDK) para entornos Windows de forma gratuita, con el objetivo de sacarle un mayor rendimiento a esta tecnología. De modo que, facilitó su uso en múltiples aplicaciones, como en el caso de la captura de movimientos. Por lo tanto, para el uso de Kinect en un equipo o tablet con un sistema operativo Windows (Microsoft, 2014b), se deberán cumplir unos requisitos mínimos hardware y software: Procesador de 64 bits (x64). Doble núcleo físico de 3,1 GHz. Controlador USB 3.0 (versión 2.2.1610.17001 o superior) Adaptador de Kinect para conectar el sensor al sistema operativo Windows. 4 GB de RAM. Tarjeta gráfica que admita DirectX 11. Windows 8 u 8.1, Windows Embedded 8 o Windows 10. Microsoft aporta una herramienta3para verificar que el PC o la tablet cumplen con los requisitos de compatibilidad, y para comprobar el sistema en busca de cualquier problema conocido. Además, asegurándose de estar utilizando el controlador mas reciente para la GPU. (véase Figura 3.6) Para el correcto funcionamiento de Kinect, será necesario instalar varios softwares añadidos: SDK (versión 11)4 Speech Platform Runtime (versión 11)5 DirectX Software Development Kit6 3http://go.microsoft.com/fwlink/p/ ?LinkID=513889 4https://www.microsoft.com/en-us/download/details.aspx?id=44561 5https://www.microsoft.com/en-us/download/details.aspx?id=27225 6https://www.microsoft.com/en-us/download/details.aspx?id=6812 3.2. Hardware empleado 35 Figura 3.6: Herramienta verificadora de Kinect Debido a los problemas ocasionados con algunos equipos utilizados, se deberá comprobar previamente que el adaptador host USB 3.0 es compatible con Kinect, ya que no todas las versiones del controlador proporcionan el ancho de banda del USB requerido por el sensor. Se deberá tener en cuenta, que se puede necesitar probar diferentes ranuras PCI-e para encontrar un controlador que se adapte a las necesidades del dispositivo Kinect. 3.2.2. Adaptador de Kinect para Windows Conecta el sensor Kinect para Xbox One al ordenador o tableta mediante el adaptador Kinect para Windows (véase Figura 3.7) y de ese modo, poder desarrollar soluciones personalizadas para diferentes aplicaciones. 3.2.3. Equipo para el uso de Kinect Este equipo no posee una características muy especiales, mas allá de utilizar el sistema operativo Windows. De modo que será el PC utilizado para conectar Kinect, obteniendo un correcto funcionamiento. 36 Capítulo 3. Tecnologías empleadas Figura 3.7: Adaptador de Kinect para Windows Teniendo las siguientes especificaciones técnicas: Procesador: Intel R Core i5-4210U (1.7 GHz) Memoria RAM: 8GB DDR3L SODIMM PC3-12800 1600Mhz Disco duro: 500GB (5400 rpm S-ATA) Display: 15.6"LED Full HD (1920x1080) Controlador gráfico: Nvidia GeForce 820M 2GB DDR3 Conexiones: 1 USB 3.0 (versión 2.2.1610.17001) , 2 x USB 2.0, 1 HDMI Capítulo 4 Desarrollo Del Proyecto Una vez elegida la tecnología y las plataformas que se van a utilizar, se empieza a preparar el desarrollo del proyecto. En este capitulo se explicará que librerías y paquete de Unity se necesitan para tener una buena conexión con Kinect y, además, que información obtenida del sensor de movimiento podemos aprovechar para el proyecto. Después de esta aclaración, se expondrá como grabar y reproducir los movimientos del usuario captado, analizando los datos ofrecidos por el sensor de Kinect. En la siguiente sección se especificará el proceso realizado para la comparación de los movimientos capturados, de modo que, el usuario obtendrá una respuesta concisa. Para ofrecer una aplicación dinámica y que el usuario reciba un feedback gestual, se ilustra como se diseña e implementan avatares con animaciones en Unity. De forma sucesiva, se describe el diseño de los escenarios 3D para ubicar a los avatares principales y secundarios de la aplicación. De este modo se han diseñado dos escenarios, uno para el entrenamiento del usuario y otro para reproducir el movimiento a realizar. En el apartado posterior, se describe una manera de acabar la comparación del movimiento de forma más completa. Ofreciendo así, un análisis de cada parte del cuerpo describiendo el modo de corregir el movimiento. Posteriormente se elaboran una serie de escenas en Unity que servirán de interfaz para la aplicación. En las diferentes escenas se encuentran la de inicio, el menú principal, ayuda, créditos, etc, y para cada una de ellas, se ha creado un entorno diferenciado según las necesidades dadas. Y por último, una vez acabada la funcionalidad de la aplicación, se realizan la grabaciones de los movimientos con los profesionales de la escuela Abadá-Capoeira. Elaborando así, una batería de pruebas para seleccionar y ajustar el movimiento más preciso. 37 38 Capítulo 4. Desarrollo Del Proyecto 4.1. Paquetes para Unity El primer paquete que se prueba es el que nos ofrece Microsoft1, que es un paquete destinado principalmente para UnityPro.2Al añadir este primer paquete al proyecto se empieza a manifestar una serie de errores de scripts, y esto es debido a la incongruencia de versiones de Unity. El proyecto se desarrolla en Unity Personal, que es una versión gratuita de Unity , mientras que el paquete que ofrece Microsoft esta especificado para Unity Pro. Aun así, se corrigen errores de comandos y llamadas a funciones obsoletas para ver si se puede aprovechar este paquete. En una primera instancia se ejecuta la escena que viene como ejemplo en el paquete de Unity, observando un comportamiento de funcionamiento intermitente, es decir, cuando nos colocamos enfrente de la cámara de Kinect a veces mostraba un esqueleto verde que emulaba la persona captada y otras veces dejaba de funcionar sin saber el error producido. Debatiendo e intentando comprender si estos errores se producían por conexión de Kinect o por funcionamiento incorrecto de la librería que nos ofrecía Microsoft, se opto por la opción de descartar este paquete para evitar futuras incompatibilidades y frustraciones. Después de descartar el paquete que nos ofrecía Microsoft se decidió buscar en el Assets Store de Unity. Encontramos el paquete Kinect v2 Examples with MS-SDK3que se eligió por su valoración positiva y también por la escasez de paquetes relacionados con Kinect v2. Este paquete tiene todo lo necesario para reconocer la conectividad de Kinect y para poder utilizar los datos obtenidos del sensor. En una primera toma, la librería nos ofrece una serie de ejemplos básicos para poder comprender mejor el funcionamiento de Kinect. A su vez, es necesaria la instalación de Kinect SDK 2.0 porque trae incorporados los drivers inprescindibles para la detección de la Kinect v2. Los ejemplos que tiene implementado el paquete de Kinect v2 Examples with MS-SDK son variados: AvatarsDemo, simulador que muestra un avatar en tercera persona que correspondería a la persona captada y se puede controlar sobre el escenario 3D. BackgroundRemovalDemo, son ejemplos que cambian el fondo que se encuentra detrás del usuario captado. ColliderDemo, una serie de ejemplos para ver el funcionamiento de colisiones del usuario captado con los objetos que aparecen en la escena. 1https://developer.microsoft.com/es-es/windows/kinect/tools 2Unity profesional de pago con mas funcionalidad que Unity personal. 3https://www.assetstore.unity3d.com/en/#!/content/18708 4.1. Paquetes para Unity 39 FaceTrackingDemo, este ejemplo reconoce la dirección de tu cabeza para girar la cámara de la imagen para simular la vista humana. FittingRoomDemo, este ejemplo te da la opción de ponerte ropa encima de tu imagen real captada. GesturesDemo, serie de ejemplos de funcionamiento de los gestos de Kinect. InteractionDemo, este ejemplo muestra como el usuario puede girar,rotar y agrandar un objeto con el movimiento de sus manos. KinectDataServer, implementa un servidor de datos para guardar información como gestos de Kinect. MovieSequenceDemo, este ejemplo mostrará como reproducir un conjunto de frames de película con el cuerpo del usuario. MultiSceneDemo, este ejemplo concatenará diferentes escenas de Unity basadas en las componentes de este paquete. OverlayDemo, son tres ejemplos que muestras como interactuar con los objetos de la escena, para ello, se basa en el movimientos de los brazos y manos para hacer que los objetos se mueven, roten y se desplazen. PhysicsDemo, muestra una simulación de físicas que capta el movimiento del brazo para lanzar una pelota virtual. RecorderDemo, ejemplo que muestra como grabar y reproducir un movimiento captado por Kinect. SpeechRecognitionDemo, ejemplo que sirve para realizar acciones por comandos por voz, aunque se producen errores cuando se probó este ejemplo. VariousDemos, implementa dos ejemplos, como pintar en el aire moviendo los brazos y el otro dibuja bolas verdes que se colocan en tus articulaciones simulado un esqueleto. VisualizerDemo, este ejemplo convierte la escena, según lo ve el sensor, en una malla y la superpone sobre la imagen de la cámara. Una vez explicado los ejemplos, elegimos cual de ellos podríamos utilizar para aprovechar su funcionalidad y tener un apoyo base para el desarrollo del proyecto. Los ejemplos seleccionados serían el AvatarsDemo, GestureDemo y RecorderDemo. Más adelante se explica con mas detalle que se utiliza de estos ejemplos. 46 Capítulo 4. Desarrollo Del Proyecto Figura 4.6: Avatar inicial de MakeHuman llamada MarvelousDesigner la cual se emplea para desarrollar prendas de vestir. El problema surgía cuando se intentaba importar el avatar creado con MakeHuman, ya que no eran compatibles los formatos de las dos aplicaciones y por lo tanto se descartó seguir por esa vía. En el camino se observó que existía una compañía llamada Mixamo que ofrecía una aplicación para el desarrollo de avatares y a su vez, un entorno dedicado a la animación de los personajes creados. Por este motivo, se tomó la decisión de cambiar a Fuse Character Creator de Mixamo como aplicación para el desarrollo de los personajes, ya que se amoldaba perfectamente a las necesidades de este proyecto. 4.4.2. Implementación de los avatares y animaciones A fin de realizar un entorno mas realista, se crearon tres avatares diferentes, cada uno con una estética propia. A la hora de elaborar el vestuario de los personajes, se observó la ropa que utilizan los integrantes de la escuela Abadá-Capoeira para tener un modelo a seguir. Se trata de un pantalón largo y una camiseta de tirantes en color blanco con el logo de la escuela. Con el propósito de crear una ropa muy similar a la utilizada por la escuela Abadá-Capoeira, se usaron prendas prediseñadas en la aplicación Fuse Character Creator como los pantalones, camisetas y el top que utilizarían los avatares del sistema con los retoques apropiados para darle ese color blanco característico. Los dos avatares principales, como son el alumno y el profesor se desa- 4.4. Creación de avatares y animaciones 47 Figura 4.7: Avatar con 137 huesos Figura 4.8: Avatar inicial con ropa 48 Capítulo 4. Desarrollo Del Proyecto rrollaron con la misma vestimenta que utiliza la escuela Abadá-Capoeira, en cambio los dos avatares que se emplean para dar un mayor dinamismo a la aplicación utilizan el mismo pantalón largo, mientras que el avatar masculino no utilizará prenda superior y el avatar femenino vestirá un top en color blanco. Tras completar la estética de los personajes, Fuse Character Creator de Mixamo ofrece la posibilidad de configurar los huesos de los avatares para posteriormente utilizar las animaciones que suministra Mixamo. Para ello será necesario subir a los servidores de Mixamo dichos personajes y cuando se complete el proceso, la aplicación redirigirá su actividad al navegador web. Como ocurría con MakeHuman,Mixamo ofrece la posibilidad de crear varios esqueletos para un mismo personaje, en este caso se presentan cuatro casos con 25, 41 (ver Figura 4.9), 49 y 65 huesos respectivamente. Figura 4.9: Auto-Rig de Mixamo Una vez comprendida la generación de avatares. El avatar elegido que mejor se adapta a Kinect es el que contiene 41 huesos, ya que demuestra una movilidad más semejante al cubeman inicial. Con el propósito de utilizar las animaciones que suministra Mixamo se observó el ejemplo AvataresDemo, el cual utiliza un script AvatarController que realiza una conexión entre los joints y los huesos incorporados en el avatar. Posteriormente para que los avatares no se queden en una posición estática, se incorporaron las animaciones de la ginga, victoria y derrota, obteniendo así, un feedback más ilustrado de la comparación del movimiento. 4.5. Análisis de los movimientos del Usuario 49 Para incorporar las animaciones al avatar, se crea el componente Animator Controller de Unity, encargado de añadir y gestionar animaciones. Este componente contiene una máquina de estados capaz de coordinar la animación que se ejecuta en cada momento. El estado inicial será la ginga y se realizará una transición a la animación de victoria o derrota, que dependerá en todo caso, de la comparación del movimiento por parte del usuario con el del profesor. Una vez determinado el estado, este volverá a la animación de ginga para continuar con el siguiente movimiento (ver Figura 4.10). Figura 4.10: Diagrama de estados de animator Se constató que existía un conflicto entre el Animator Controller y el AvatarController dando lugar a un lucha por quien tiene el control del avatar. Por ello, se implementó un script que desactiva el componente Animator Controller cuando el sensor de Kinect detecta al usuario y se vuelve a activar cuando el usuario se sale de la escena. 4.5. Análisis de los movimientos del Usuario Una parte importante de este proyecto consiste en dar una corrección del movimiento, el cual, el usuario esta imitando en tiempo real. En esta sección se explicará como se implementó este análisis. 50 Capítulo 4. Desarrollo Del Proyecto Figura 4.11: Animación de victoria 4.5.1. Investigación base Para este apartado se observó el desarrollo de la comparación de movimiento implementada anteriormente. Esa sección respondía al usuario dándole un feedback inmediato si había realizado el movimiento correctamente o incorrecta, sin embargo , no le detallaba que partes del cuerpo había colocado de manera errónea. El planteamiento del análisis comienza reproduciendo el movimiento del avatar del usuario junto al avatar de la grabación, deteniéndose ,si llegara el caso, en el frame donde el usuario cometió el error. En ese instante cambiará los huesos del avatar controlado por el usuario a un color rojo, en consecuencia de una colocación incorrecta del hueso. Adicionalmente mostrará un panel con un texto describiendo las correcciones que se deben aplicar. Esta información se compondrá de la parte del cuerpo que se está analizando , añadiendo consecutivamente, la dirección, la profundidad y la altura que servirán de pautas para que el usuario corrija su posición. 4.5.2. Implementación del análisis de los movimientos Una vez planteada las especificaciones del análisis se empieza con su implementación. Primero se creó un script llamado Registrar_movimientos, el cual, guarda toda la información del movimiento hasta donde el usuario comete el error. Esta información contiene el estado9donde se produce la 9Corresponde al frame que se esta comparando. 4.6. Creación de los escenarios 3D 51 equivocación y los datos de los Joints pertenecientes a los avatares. Posteriormente se necesitó hacer una modificación funcional en el gesto Move de KinectGesture, para conseguir de esta manera, rellenar esa información en cada comparación. Esta modificación consiste en enviar la información del estado y los joints de los avatares al Registrar_movimientos, una vez superada la comparación de ese frame. Gracias a esta lógica, se quedará registrado la traza del movimiento hasta que el usuario se equivoque. A partir de este momento, para poder mostrar la información recogida, se implementó una funcionalidad nueva en el script Registrar_movimientos. Esta característica consiste en desplazar los avatares a primera escena, modificando los materiales para que se vean transparentes ,y crear así, un esqueleto verde parecido a los cubeman del principio. Estos avatares simulan el movimiento hasta el frame donde se equivocó el usuario, y en este último estado, realiza una comprobación de cada Joint para cambiar el hueso, si ha fallado, de color de verde a rojo. A la vez, se va generando un string con una corrección de posicionamiento compuesto por cuatro partes. Para la primera pieza se creó un diccionario que, basándose en el número del Joint, devuelve en palabras la parte del cuerpo correspondiente. En la implementación de este diccionario se han agrupado Joints dispares, ya que siendo diferentes forman una misma parte del cuerpo, como por ejemplo las manos que la forman tres Joints. La segunda pieza del string está formada por la elección de la dirección, y esta se comprueba, realizando la diferencia de la coordenadas X del Joint del usuario con la del Joint de la grabación. Si la diferencia es positiva la dirección será hacia la derecha, en caso contrario será hacia la izquierda. Seguidamente para la tercera pieza del string, se realiza la diferencia con la coordenada Z definiendo así la profundidad. Si la diferencia es positiva la profundidad será hacia atrás , en caso contrario hacia delante. Y para la cuarta pieza del string, se efectúa la distinción con la coordenada Y, definiendo así la altura. Si la diferencia es positiva la altura será definida de forma descendente, en caso contrario ascendente. Esta lista de correcciones, se mostrará en un panel una vez completada evitando los strings repetidos, a su vez, se añaden colores a cada una de las piezas del string, ofreciendo de esta manera un texto menos plano y mas legible (ver Figura 4.12) 4.6. Creación de los escenarios 3D Con el objetivo de conseguir un ambiente más realista y dinámico, se elaboraron dos escenarios diferentes, ambientados cada uno de ellos según su propósito. El primero de ellos escenifica un entorno para el alumno donde realizará el entrenamiento, como es el caso de un gimnasio. El segundo, está orientado hacia el profesor y los animadores, representando una playa Brasileña. 52 Capítulo 4. Desarrollo Del Proyecto Figura 4.12: Análisis de movimiento 4.6.1. Escenario del gimnasio La creación del escenario del gimnasio (véase Figura 4.13) se diseñó a partir de diferentes componentes, distribuidos en distintos paquetes y obtenidos en el Asset Store de Unity. En el diseño del suelo se creó un Gameobject de tipo panel y se le incrustó un material, dispuesto por el paquete Yughues Free Wooden Floor Materials10, para simular un suelo de madera. En la construcción de las paredes del escenario, se crearon tres paneles, colocándolos de forma vertical formando un cubo abierto, y además se añadió a todos los paneles, un material del paquete 18 High Resolution Wall Textures11 que se asemejan a una textura tipo piedra. Se colocaron unos bancos y un casillero para dar una sensación de sala de entrenamiento, estos objetos son modelos del paquete Locker Room Props12. Para no dar una impresión de una habitación cerrada se añadieron dos ventanas y un ventilador , estos objetos vienen implementados en el paquete Props for the Classroom13. A su vez, se observó que en el mismo paquete venía implementado un objeto con la forma de una pizarra, de modo que para agregar una huella educativa, se añadió este elemento a la escena. 10https://www.assetstore.unity3d.com/en/#!/content/13213 11https://www.assetstore.unity3d.com/en/#!/content/12567 12https://www.assetstore.unity3d.com/en/#!/content/3355 13https://www.assetstore.unity3d.com/en/#!/content/5977 4.6. Creación de los escenarios 3D 53 Figura 4.13: Escenario del gimnasio para el alumno 4.6.2. Escenario de la isla Para la creación de este escenario, y con la misión de realizar un entorno ambientado en las playas brasileñas, se realizó una investigación previa sobre los paquetes existentes que cumplían estas características. Se descartaron varias opciones de pago, ya que algunos no cumplían con las particularidades buscadas y otros tenían un coste demasiado elevado. Por lo tanto, tras esta decisión, se optó por usar el paquete gratuito Island Assets14 obtenido en el Asset Store de Unity, de modo que junto al profesor y los animadores, este escenario simulase la sensación de estar en una playa brasileña. Posteriormente, se hicieron una serie de modificaciones para que el paquete Island Assets tuviera un aspecto acorde con el proyecto a desarrollar. Lo primero que se hizo, fue quitar el componente Treasure chest(cofre) ya que desentonaba demasiado con la temática del entorno deseado. En segundo lugar, se desactivó el componente Dock(Embarcadero) puesto que no sería necesaria su utilización debido a la falta de barcos navegando. Por último, el paquete de Unity venía predefinido con tres palmeras, dando una sensación de isla desierta. De modo que, se añadieron como componente del terreno, más de una decena de palmeras en tamaños aleatorios, intentando dar un efecto de isla habitada (véase Figura 4.14). Con todo ello, el paquete Island Assets de Unity ha servido como escenario para simular una playa brasileña. 14https://www.assetstore.unity3d.com/en/#!/content/56989 54 Capítulo 4. Desarrollo Del Proyecto Figura 4.14: Escenario de la isla para el profesor y los animadores 4.7. Grabacion de movimientos con gente experta En esta etapa del proyecto, se visitó la Asociación Cultural Deportiva Rio15, donde se reúnen los practicantes expertos en capoeira, para realizar una serie de grabaciones y pruebas. 4.7.1. Movimientos grabados Este proceso consistía en grabar una batería de movimientos de capoeira (Capoeira, 2007) y a continuación, seleccionar los captados correctamente por Kinect. Para facilitar la grabación al profesor de capoeira, se optó por capturar varias repeticiones del mismo movimiento en la misma grabación. De este modo, y con la supervisión del profesor, se registraron 20 técnicas de capoeira: Ginga, es la técnica fundamental de la capoeira, consiste en realizar un movimiento constante que prepara al usuario para acciones como evadir, fintar o atacar, así como conservar el impulso. La forma general de la ginga es un continuo paso triangular, retrocediendo un pie y luego con el otro en diagonal mientras se mantiene las piernas separadas. Para este movimiento se realizaron tres grabaciones diferentes porque es un movimiento que puede tener diversas variantes. Aú, movimiento que consiste en dar una voltereta lateral. Armada, técnica en donde el usuario gira sobre si mismo en vertical golpeando con el talón al oponente. 15https://www.asociacionrio.com/ 4.7. Grabacion de movimientos con gente experta 55 Queixada, movimiento que consiste en dar un paso quedándose de costado al oponente y se realiza una patada con un movimiento circular. Bênção, técnica que que se ejecuta con una patada frontal básica, realizada contra el abdomen o el pecho del oponente. Chapa-Pisào, movimiento similar al Bênção pero se realiza con la planta del pie y paralelo al suelo. Gancho, técnica que consiste en levantar la pierna en un diagonal hasta una posición alta, para después contraer la rodilla y golpear con el talón en dirección descendente. Martelo, movimiento de patada que tiene como objetivo golpear con el empeine en la sien del oponente. Meia Lua de Compasso, técnica que consiste en apoyar una mano en el suelo mientras se gira 180oy se lanza la pierna opuesta en un movimiento circular y ascendente, para golpear con el talón en la cabeza del oponente. Meia Lua de Frente, movimiento que realiza una patada frontal de fuera a dentro Ponteira, movimiento que consiste en estirar la pierna hacia el oponente y golpearlo con la punta del pie. Joelhada, movimiento que se realiza alzando la rodilla hacia delante con la intención de golpear. Galopante, técnica que realiza un golpe con la mano abierta parecido a una bofetada. Telefone, técnica que sirve para golpear con las dos manos en los tímpanos del oponente. Despreço, movimiento que consiste en dar una bofeta pero con la parte externa de la mano. Skada, movimiento que consisten en lanzar golpes consecutivos hacia delante con la mano abierta. Esquiva de frente, es un técnica para esquivar un ataque elevado y consiste en desplazar el cuerpo hacia abajo. Negativa, es una posición defensiva utilizado para esquivar o para desplazarse por el suelo. 62 Capítulo 4. Desarrollo Del Proyecto Figura 4.22: Escena del profesor movimientos capturados a instructores de la escuela Abadá-Capoeira.16 4.8.7. Escena del Alumno Si el usuario es un alumno, se entrará en la escena principal del proyecto, donde se desarrolla toda la funcionalidad del entrenamiento virtual. En el interior de la escena, se muestra la misma interfaz que en el caso del profesor, con la diferencia de que este no podrá grabar movimientos para su posterior análisis. Considerando que al comenzar a formarse en un arte marcial, se desconocen los nombres de los movimientos que se desean poner en práctica, se le ofrece al alumno la posibilidad de visualizar previamente los movimientos antes de empezar a practicar, de modo que, podrá seleccionar más fácilmente el que desea. Para iniciar el entrenamiento acorde a su experiencia, el alumno tendrá que seleccionar el nivel que le corresponda, ya sea principiante, aprendiz o avanzado. Tras elegir el nivel, se pasará a la selección del movimiento que se quiere aprender o practicar, de este modo, el alumno podrá comenzar a entrenar acorde a su nivel. Posteriormente a la selección del movimiento, el alumno deberá iniciar la comparación mediante el botón correspondiente. Al pulsar sobre el botón, el alumno deberá adoptar una pose inicial correspondiente al movimiento seleccionado previamente. Hasta que el alumno no tome esa misma pose, el sistema estará esperando la calibración. En el instante en que la pose del 16http://www.abadacapoeira.com.br/ 4.8. Transición de las escenas 63 Figura 4.23: Escena del alumno alumno sea la misma que la del entrenador virtual, el sistema estará calibrado y empezará una cuenta atrás de tres segundos, tras la cual, se empezará a reproducir el movimiento seleccionado. En el momento en que el entrenador virtual inicie una reproducción de un movimiento, el alumno deberá imitarlo lo más fielmente posible. Mientras se realizan las transiciones, el sistema comparará las posición de los 25 joints que componen el esqueleto del entrenador virtual, con las posiciones de los 25 joints correspondientes al alumno capturado por Kinect. Tras finalizar el movimiento, el asistente mostrará una animación de éxito en el caso de que el movimiento se haya realizado de forma correcta (véase Figura 4.11), o una animación de fracaso, en el caso de que se produzca algún error en la ejecución del movimiento. Posteriormente, se presenta un esqueleto en el que se muestran de color rojo las partes del cuerpo cuya colocación debe ser corregida, y en color verde las que se han utilizado de manera correcta (ver Figura 4.12). A demás, se visualizará una serie de indicaciones en forma de texto, para que el alumno pueda corregir la posición errónea de una forma mas efectiva (ej. Mueve el brazo izquierdo hacia la derecha y adelante, acompañado de un movimiento descendente). 64 Capítulo 4. Desarrollo Del Proyecto 4.9. Conclusiones del desarrollo del proyecto A lo largo de este capitulo, se han logrado explicar los estudios y las implementaciones necesarias para este proyecto. La primera decisión fue elegir el paquete para Unity Kinect v2 Examples with MS-SDK, siendo este, un pilar importante para la compresión y entendiemiento del funcionamiento de Kinect. Los datos obtenidos del sensor de Kinect, son extraídos para interpretarlos y mostrarlos a través de los cubeman. Gracias a ello, se consiguieron guardar y catalogar los movimientos del cubeman para realizar comparaciones. El funcionamiento de los gestos que reconoce Kinect, fue una inspiración para la implementación de la comparación de movimientos. Posteriormente, se diseñaron avatares con el programa Fuse Character Creator (véase Figura 3.4), para sustituir a los cubeman y dar una apariencia más realista a la aplicación. Con el objetivo de dar un toque más dinámico, se añadieron a los avatares unas animaciones de movimientos de capoeira (véase Figura 3.5), de modo que, se reproduzcan cuando no se detecte al usuario. Adicionalmente, para el feeback de la comparación del movimiento, se añadieron también dos animaciones de victoria y derrota (véase Figura 4.11). Con el objetivo de conseguir un ambiente más realista y dinámico, se elaboraron dos escenarios diferentes. El primero, simula un gimnasio dando la sensación al usuario de que está entrenando (véase Figura 4.13). El segundo escenario, simula una isla tropical típica donde los expertos de capoeira practican (véase Figura 4.14). Además, en el segundo escenario se mostrarán los movimiento que el usuario deberá realizar. Con el objetivo de completar la comparación de los movimientos, se logró implementar un proceso que realiza un análisis de cada parte del cuerpo. De esta manera, se contrasta con el movimiento a realizar y se mostrarán las correcciones oportunas que el usuario debe ejecutar (véase Figura 4.12). Y por último, se consiguieron grabar movimientos de gente experta en capoeira (véase Figura 4.15), con el fin de catalogarlos y prepararlos para incorporarlos al proyecto. Capítulo 5 Discusión, Conclusiones y Trabajo futuro 5.1. Discusión Como se mencionó en la introducción, uno de los objetivos al desarrollar este sistema era que pudiese funcionar con tecnología de uso doméstico, lo cual restringe notablemente el abanico de posibilidades a considerar. La configuración elegida para el sistema utiliza una única cámara para la captación del movimiento del usuario, proporcionada por Kinect. Esto limita la capacidad del sistema de percibir los movimientos más complejos, como aquellos casos en que hay rotación del torso, lo cual puede generar confusiones entre distintos miembros del avatar que tengan simetría axial (tras el giro, el sistema confunde un brazo con otro, y piensa que el usuario sigue de frente cuando en realidad está de espaldas). Lo mismo sucede a la hora de analizar la profundidad de algunos de los movimientos realizados. Se espera en el futuro poder ampliar este trabajo con la utilización de mayor número de cámaras. Por otro lado, en algunos de los trabajos estudiados (e.g. Keerthy (2012); Kyan et al. (2015)) se utilizan técnicas más sofisticadas para analizar los movimientos de los usuarios que las usadas en este trabajo. Si bien tales técnicas pueden ser útiles en niveles de aprendizaje avanzados, cuando se trata de principiantes en capoeira, no existen grandes diferencias respecto a técnicas más sencillas. Esto es así porque los movimientos de un aprendiz son más simples y, por tanto, la comparación con el entrenador también lo es. Por ello, un método más sencillo de comparación de movimientos se traduce en dos claras ventajas: primero, es menos complejo y más rápido de calcular; y, segundo, el resultado de la comparación es más fácilmente traducible a texto para proporcionar al aprendiz explicaciones útiles acerca de cómo mejorar la realización de las técnicas. 65 66 Capítulo 5. Discusión, Conclusiones y Trabajo futuro 5.2. Conclusiones A lo largo del presente trabajo se ha descrito el proceso por el cual se ha desarrollado un entrenador virtual de capoeira a partir de la grabación previa de los movimientos de un experto realizada con el dispositivo Kinect. Por otro lado, el usuario, haciendo uso del mismo dispositivo, hará una captura de sus movimientos que servirán para su posterior comparación con el entrenador virtual. Una vez comparados, se ofrece la explicación oportuna para conseguir realizar correctamente los movimientos que fueron ejecutados de manera errónea. En este proceso se debe enfatizar la capacidad del dispositivo Kinect para capturar los movimientos de forma correcta, un hecho relevante si además tenemos en cuenta su bajo precio de mercado. Hay que destacar los beneficios que puede conllevar utilizar un entrenador virtual, que engloba, desde la comodidad de trabajar desde casa, hasta tener un feedback dedicado, personal e inmediato. Del mismo modo, se trata de un sistema de entrenamiento mediante juego, lo cual potencia el aprendizaje y la motivación, como se aprecia en la escena de alumno, en la que se debe de realizar el movimiento correctamente. Permite establecer la dificultad deseada para comparar los movimientos, lo cual hace que se pueda adaptar a las necesidades y capacidades de los distintos alumnos. Se trata de un entorno intuitivo tanto para el profesor como para el alumno, pudiéndose complementar con la sección de ayuda que ofrece la aplicación. Además, su uso doméstico a bajo coste posibilita un mayor alcance entre el público. Aunque aún no se ha realizado una evaluación extensa con usuarios novatos y expertos en capoeira, sí se han llevado a cabo pruebas preliminares para comprobar el correcto funcionamiento de la aplicación y la fiabilidad de los comentarios para corregir sus defectos. Dichas pruebas se han realizado con una pequeña muestra de usuarios de distintos niveles y los resultados preliminares muestran que, al nivel al que se han realizado las pruebas y con movimientos no excesivamente complejos de cuerpo entero, el funcionamiento de la aplicación es rápido y los resultados de los análisis y las explicaciones de los errores se acercan bastante a la realidad. 5.3. Trabajo futuro 67 5.3. Trabajo futuro Este proyecto tiene potencial en el campo de entrenamiento de actividades físicas, ya que comparando el movimiento del usuario con el de un experto se ofrece un feedback visual. De este modo, el usuario podrá corregir su técnica en caso de que cometa algún tipo de error. Una funcionalidad que se puede implementar en un futuro sería la gestión de más usuarios y el registro de la progresión. Cuando el usuario acceda con su cuenta, se mostrará el porcentaje con el avance conseguido de cada movimiento. Otra futura ampliación trata de añadir más funcionalidad al experto que graba los movimientos. Con ello, tendrá la posibilidad de manejar y modificar los movimientos grabados de una forma sencilla. Por otro lado, se plantea la necesidad de incluir métodos más sofisticados para el análisis de los movimientos, similares a los usados en Keerthy (2012); Kyan et al. (2015) para permitir un análisis más fino de los movimientos que proporcione resultados de mayor utilidad para practicantes avanzados de capoeira. Este procedimiento de análisis de movimiento se puede aplicar también en el ámbito de la medicina para realizar diferente tipos de rehabilitación. En este caso serviría para comunicarle a un paciente que tenga, por ejemplo, una lesión en un brazo si el movimiento que realiza para su rehabilitación lo está ejecutando de forma correcta o incorrecta. Otro factor para mejorar la captura de movimiento sería añadir otra Kinect para lograr reconocer los movimientos que impliquen giros. Una solución similar se plantea en Gao et al. (2015) donde utilizan dos Kinect para solucionar este problema, aunque esta opción aleja la solución de su uso doméstico. Finalmente, también se contempla el análisis de los movimientos de más de un usuario de manera simultánea. De esta manera, se podrían reproducir situaciones similares al trabajo por parejas que tiene lugar en una roda de capoeira, donde se ponen en práctica técnicas de combate cuerpo a cuerpo. Capítulo 5 Discussion, Conclusions and Future Work 5.1. Discussion As mentioned in the introduction, one of the aims of developing this system was that it could work with household technology, which severely limits the range of possibilities to be considered. The chosen settings for the system use only one camera provided by Kinect to capture the user’s movement. This restricts the system capacity of noticing the most complex movements, such as those in which there is torso rotation, which may generate confusion among different members of the avatar who have axial symmetry (after the turn, the systems confuses one arm with the other and thinks that the user is still in front of it when they are actually with their back towards it). It happens similarly when analysing the depth of some movements. Hopefully, this project might be broaden in the future by using a greater number of cameras. On the other hand, in some of the studied projects (e.g. Keerthy (2012); Kyan et al. (2015)) the users’ movements are analysed with more sofisticated techniques than those used in the present project. Although those techniques can be useful at higher levels of learning, when dealing with beginners in capoeira, there are not big differences with more simple techniques. This is because an apprentice’s movements are more basic and, consequently, the comparison with the trainer is more basic too. Therefore, a more simple method of comparison of movements means two clear advantages: firstly, calculating it is less complex and quicker; and, secondly, the result of the comparison is easier to be translated into text in order to provide the apprentice with useful explanations on how to improve the techniques. 69 70 Capítulo 5. Discussion, Conclusions and Future Work 5.2. Conclusions The current project has described the development of a virtual capoeira trainer from the previous recording of an expert’s movement done with the device Kinect. On the other hand, the user, with the same mentioned device, will make a motion capture which will be used to be compared with that of the virtual trainer. Once both versions are compared, an adequate explanation is offered so as to correctly make those movements that were made inaccurately. Throughout this process, it must be emphasized the capacity of the device Kinect to capture the movements correctly, a relevant fact if, besides, we consider its low market price. Possible benefits of using a virtual trainer must be highlighted, ranging from the comfort of working at home to obtaining a detailed, personal and immediate feedback. Likewise, it is a training system based on playing, which fosters learning and motivation, as can be observed in the student’s scene, where the movement must be made correctly. It allows setting the difficulty of the movement comparison, which makes it possible to adapt it to the different students0needs and capacities. It is an intuitive environment, both for the teacher and the student, which can be complemented with the help section offered by the application. Moreover, its household use at a low price makes it accessible to a broader public. A detailed evaluation with learners and capoeira experts has not been made yet. Nonetheless, preliminary tests have actually been done to check the correct functioning of the application as well as the reliability of the comments made in order to correct its mistakes. These tests have been developed with a small group of users of different levels and the initial results show that, considering the level at which they have been done and with not too complex whole body movements, the application functioning is quick and the results of the mistakes analysis and explanations are fairly close to reality. 5.3. Future Work 71 5.3. Future Work This project has potential in the field of sports training, since a visual feedback is offered when comparing the user’s movement with that of the expert. In this way, the user will be able to correct their technique if they make some mistake. A possible functionality to implement in the future would be the management of different users and the register of their progression. When the user logs in their account, the percentage of the improvement achieved in each movement will be shown. Another future extension would be adding more functionality to the expert who is recording the movements. This feature will allow them to easily manage and modify the recorded movements. Apart from this, for the movements analysis, we suggest the need of including more sophisticated methods similar to those used in Keerthy (2012); Kyan et al. (2015) to carry out a more accurate analysis of the movements that gives more useful results to advanced capoeira learners. This procedure of movement analysis can be also applied to the medicine field to do different types of physical therapy. In that case, it would be useful to tell a patient with, for example, an arm injury if the movement they are doing in the rehabilitation is being correct or not. Another factor to improve motion capture would be adding another Kinect so as to recognize movements that involve turning. A similar solution is proposed in Gao et al. (2015) where two Kinect are used to solve this problem, although this option distances from its household use. Finally, analysing the movements of more than one user simultaneously is also considered. In this way, it would be possible to reproduce similar situations to the pair work done in a capoeira roda, where techniques of body to body fight are implemented. Desarrollo de un Entrenador Virtual de Capoeira V´ıctor Tobes1, Ra´ul Fern´andez1, Gonzalo M´endez1,2, and Pablo Gerv´as1,2 1Facultad de Inform´atica, Universidad Complutense de Madrid 2Instituto de Tecnolog´ıa del Conocimiento, Universidad Complutense de Madrid {raulfe03,vtobes,gmendez,pgervas}@ucm.es Resumen La investigaci´on en Reactive Virtual Trainers (RVT) basados en el uso de MS Kinect ha dado lugar a una diversidad de soluciones para la danza, las artes marciales y el ejercicio f´ısico en general. Este art´ıculo presenta un prototipo de sistema para el entrenamiento de capoeira, un arte marcial brasile˜no a caballo entre los deportes de lucha y la danza. Este entorno est´a pensado para ser utilizado por el alumno para que pueda aprender a realizar diferentes movimientos de capoeira sin la necesidad de que est´e presente un profesor. El entrenamiento consiste en imitar una serie de movimientos, los cuales han sido previamente capturados por varios expertos en el arte marcial. El entrenamiento virtual se desarrolla acorde al nivel que posea el alumno, ya sea principiante, aprendiz o avanzado. De este modo, el alumno va aprendiendo a realizar los movimientos de forma progresiva. 1. Introducci´on La aparici´on de hardware relativamente asequible para la captura de movimiento en los ´ultimos a˜nos ha dado lugar a un crecimiento del n´umero de soluciones para el entrenamiento virtual de ejercicios f´ısicos. Estas soluciones combinan la captura de movimiento con la representaci´on en entornos 3D para permitir al usuario realizar movimientos f´ısicos, verlos representados en pantalla, y recibir realimentaci´on sobre ellos. Estos sistemas se denominan Reactive Virtual Trainers (RVT). La capoeira es un arte marcial afro-brasile˜no que combina facetas de danza, m´usica y acrobacias, as´ı como expresi´on corporal [1]. Fue desarrollado en Brasil por descendientes africanos con influencias ind´ıgenas, probablemente a principios del siglo XVI. Es conocido por sus r´apidos y complejos movimientos, que utilizan distinas partes del cuepro (brazos, piernas, codos, rodillas, cabeza...) para ejecutar maniobras de gran agilidad en forma de patadas, fintas y derribos, entre otros. La capoeira como estilo de lucha incorpora movimientos bajos y barridos, mientras que en el ´ambito deportivo se hace m´as ´enfasis en las acrobacias y las demostraciones ritualizadas de habilidad. Se practica con m´usica tradicional de berimbau. Una de las caracter´ısticas fundamentales de la capoeira, como de muchas otras artes marciales, consiste en la realizaci´on de manera repetida de un mismo movimiento para ir mejorando paulatinamente su ejecuci´on, tanto en su trayectoria como en su velocidad o su fuerza. Sin embargo, especialmente en el caso de los principiantes, resulta complejo apreciar si existe mejora sin la supervisi´on constante de un entrenador, lo cual no resulta posible en la mayor parte de las ocasiones. Por este motivo, se ha planteado el desarrollo de un entrenador de capoeira, inicialmente en un nivel b´asico, que, mediante la utilizaci´on de tecnolog´ıas que ya son de uso dom´estico (como son un ordenador personal y Kinect), supervise el proceso de entrenamiento de una persona que se inicie en el aprendizaje de la capoeira. 2. Trabajo Relacionado Para la realizaci´on de este trabajo se han revisado trabajos anteriores en el ´area de los Reactive Virtual Trainers y representaci´on de personajes animados en entornos 3D. 2.1. Reactive Virtual Trainers Los Reactive Virtual Trainers (RVT) es una tecnolog´ıa que se viene utilizando desde hace algunos a˜nos para la danza, las artes marciales y los ejercicios f´ısicos en general y la rehabilitaci´on en particular. Los sistemas de representaci´on digital de danza existentes se han centrado esencialmente en la representaci´on realista de la danza, y hay poco trabajo sobre maneras de presentar realimentaci´on al alumno cuando son utilizados para ense˜nanza [5]. El sistema [5] utiliza Kinect para registrar los movimientos de un bailar´ın de ballet y representa el movimiento como un espacio de posturas en forma de trayectorias de gestos. Un sistema de reconocimiento permite comparar el movimiento del alumno con los registrados para el profesor. Con respecto a las artes marciales el trabajo de [4] es un maestro virtual de Kung Fu que ayuda a los usuarios a aprender y perfeccionar distintas t´ecnicas bas´andose en la comparaci´on entre el movimiento realizado por el usuario y movimientos pregrabados realizados por el maestro. Este sistema utiliza para comparar las dos versiones del movimiento un algoritmo de Dinamic Time Warping basado en la distancia eucl´ıdea. Para el caso de ejercicios de educaci´on f´ısica y rehabilitaci´on se ha trabajado m´as en el desarrollo de m´etodos de realimentaci´on. En [14] se plantean soluciones espec´ıficas basadas en aprendizaje m´aquina para clasificar los movimientos del alumno (en el contexto de ejercicios de educaci´on f´ısica) en correctos o incorrectos. The OnlineGym [12] presenta un mundo virtual dirigido a usuarios de edad avanzada con necesidades espec´ıficas de ejercicio, en el que los usuarios pueden participar mediante el uso de un sistema de captura de movimiento. El trabajo de [13] modela de manera m´as elaborada a un entrenador, proporcionando no s´olo realimentaci´on sobre la correcci´on de los ejercicios sino tambi´en proponiendo secuencias adecuadas de ejercicios y ayudando a motivar al alumno. 2.2. Representaci´on y Animaci´on 3D El software principal utilizado en este proyecto es Unity 5.5 [16], ya que se trata de un motor para el desarrollo de videojuegos muy vers´atil. Con el fin de elaborar, compilar y depurar el proyecto se ha utilizado Visual Studio 2015 [8] y MonoDevelop [11] ya que mantienen una sola base de c´odigo para todas las plataformas. Respecto a la creaci´on de los personajes, previamente se utiliz´o la aplicaci´on MakeHuman [6], pero se observ´o que Fuse Character Creator de Mixamo [9] ofrec´ıa una creaci´on de modelos humanos mas est´eticos. En cuanto a las animaciones, se hizo uso de Mixamo 3D Animation Online Services [10], ya que es una compa˜n´ıa tecnol´ogica encargada del desarrollo y venta de servicios para la animaci´on de personajes 3D. A trav´es de Marvelous Designer [7] se prob´o la confecci´on de la ropa que utilizar´ıan los avatares, pero se opto por utilizar los dise˜nos predefinidos de Fuse Character Creator de Mixamo debido a la alta calidad de las texturas. Blender [3] se utiliz´o para modelar y renderizar el logo de la escuela Abad´a-Capoeira en las camisetas de los personajes. 3. Un Entrenador Virtual de Capoeira El entrenador virtual de capoeira desarrollado puede utilizarse en modo profesor (para grabar las secuencias de referencia de cada ejercicio) o en modo alumno (para entrenar secuencias concretas asesorado por el sistema). En este apartado se presenta la funcionalidad b´asica del entrenador de capoeira en ambos modos, el mecanismo de comparaci´on de los movimientos realizados por el alumno frente a los del profesor y el proceso de grabaci´on de movimientos. Para una descripci´on m´as extensa del sistema puede consultarse la informaci´on proporcionada en [15]. 3.1. Funcionalidad B´asica del Alumno Si el usuario es un alumno, se entrar´a en la escena principal del proyecto, donde se desarrolla toda la funcionalidad del entrenamiento virtual. En el interior de la escena se muestra la misma interfaz que en el caso del profesor, con la diferencia de que este no podr´a grabar movimientos para su posterior an´alisis. Considerando que al comenzar a formarse en un arte marcial se desconocen los nombres de los movimientos que se desean poner en pr´actica, se le ofrece al alumno la posibilidad de visualizar previamente los movimientos antes de empezar la pr´actica para poder seleccionar m´as f´acilmente el que desea. Para iniciar el entrenamiento acorde a su experiencia, el alumno tendr´a que seleccionar el nivel que le corresponda, ya sea principiante, aprendiz o avanzado. Para iniciar la pr´actica de un movimiento, el alumno deber´a adoptar una pose inicial correspondiente al movimiento seleccionado previamente. Hasta que el alumno no tome esa misma pose, el sistema estar´a esperando la calibraci´on. En el instante en que la pose del alumno sea la misma que la del entrenador virtual, el sistema estar´a calibrado y empezar´a una cuenta atr´as de tres segundos, tras la cual se empezar´a a reproducir el movimiento seleccionado. Figura 1: Animaci´on de movimiento realizado En el momento en que el entrenador virtual inicie una reproducci´on de un movimiento, el alumno deber´a imitarlo lo m´as fielmente posible. Mientras se realizan las transiciones, el sistema comparar´a las posici´on de los 25 joints que componen el esqueleto del entrenador virtual, con las posiciones de los 25 joints correspondientes al alumno capturado por Kinect. Tras finalizar el movimiento, el asistente mostrar´a una animaci´on de ´exito en el caso de que el movimiento se haya realizado de forma correcta (ver Figura 1), o una animaci´on de fracaso en el caso de que se produzca alg´un error en la ejecuci´on del movimiento. Posteriormente, se presenta un esqueleto en el que se muestran de color rojo las partes del cuerpo cuya colocaci´on debe ser corregida, y en color verde las que se han utilizado de manera correcta (ver Figura 6). A dem´as, se visualizar´a una serie de indicaciones en forma de texto para que el alumno pueda corregir la posici´on err´onea de una forma mas efectiva (ej. Gira el brazo izquierdo hacia atr´as). 3.2. Funcionalidad B´asica del Profesor Cuando el usuario inicia el sistema como profesor, puede acceder a la funcionalidad de grabaci´on de nuevos movimientos. Al comenzar a realizar la captura es necesario introducir el nombre deseado para el nuevo movimiento y colocarse a unos tres metros de Kinect para ser capturado correctamente. A partir de ese momento, el sistema graba los movimientos realizados por el usuario y los guarda en ficheros de texto para poder utilizarlos tanto para mostr´arselos a los alumnos como para compararlos con los movimientos de estos cuando se encuentren practicando. Con el fin de de obtener una mayor inmersi´on en la aplicaci´on, se utiliza el modo espejo como efecto para reproducir los movimientos captados. Figura 2: Representaci´on utilizada para el avatar del usuario El profesor tambi´en puede utilizar la funcionalidad del alumno, ya que ser´a necesario revisar y reproducir el correcto funcionamiento de los nuevos movimientos capturados con Kinect. Inicialmente, la aplicaci´on incluye ocho movimientos capturados a instructores de la escuela Abad´a-Capoeira.3 3.3. Avatares, Animaciones y Escenarios Se han desarrollado los diferentes avatares con una fisionom´ıa humana para dar una sensaci´on m´as agradable a los cubeman4que representan a los usuarios y de este modo se proporciona una perspectiva m´as amena al mismo. A fin de realizar un entorno m´as realista se crearon cuatro avatares diferentes, cada uno con una fisionom´ıa propia. A la hora de elaborar el vestuario de los personajes, se cre´o una ropa muy similar a la utilizada por la escuela Abad´a-Capoeira: se usaron prendas predise˜nadas en la aplicaci´on Fuse Character Creator como los pantalones, camisetas y el top que utilizar´ıan los avatares del sistema con los retoques apropiados para darle ese color blanco caracter´ıstico. Los dos avatares principales, como son el alumno y el profesor, se desarrollaron con la misma vestimenta que utilizaba la escuela Abad´a-Capoeira. En cambio, los dos avatares que se emplean para dar un mayor dinamismo a la aplicaci´on utilizan el mismo pantal´on largo, mientras que el avatar masculino no utilizar´a prenda superior y el avatar femenino viste un top en color blanco. 3http://www.abadacapoeira.com.br/ 4Esqueleto verde que emula el movimiento de la persona captada. Figura 3: Ilustraci´on de los cubeman Tras completar la est´etica de los personajes, Fuse Character Creator de Mixamo ofrece la posibilidad de configurar los huesos de los avatares para posteriormente utilizar las animaciones que suministra Mixamo. El avatar elegido que mejor se adapta a Kinect es el que contiene 41 huesos, ya que demuestra una movilidad m´as semejante al cubeman inicial. El conjunto de huesos en cuesti´on aparece representado en la Figura 2. La representaci´on del movimiento del usuario se muestra mediante un cubeman, que simula todo el movimiento que realiza el usuario. Los datos del cubeman (ver Figura 3) est´an definidos con 25 GameObjects llamados Joints, que hacen una representaci´on de las articulaciones del cuerpo humano. Estos Joints se representan en Unity con unas coordenadas (X,Y,Z) y una rotaci´on. Toda la informaci´on del movimiento se obtiene a partir del sensor de Kinect. La informaci´on generada en cada frame por cada cubeman es clasificada y guardada en un fichero de texto para su futura utilizaci´on, como el seguimiento del progreso del alumno a lo largo del tiempo. A su vez, se ha creado una funcionalidad para poder reproducir un movimiento grabado a la vez que muestra al usuario captado en tiempo real. Para incorporar las animaciones al avatar, se crea el componente Animator Controller de Unity, encargado de a˜nadir y gestionar animaciones. Este componente contiene una m´aquina de estados capaz de coordinar que animaci´on se ejecuta en cada momento. El estado inicial ser´a la ginga, y se realizar´a una transici´on a la animaci´on de victoria o derrota que depender´a de la comparaci´on del movimiento del usuario con el del profesor. Una vez determinado el estado, este volver´a a la animaci´on de ginga para continuar con el siguiente movimiento. Para el desarrollo de los escenarios, se han creado dos ambientes diferentes: uno escenificando un entorno de entrenamiento como es el caso de un gimnasio para la visualizaci´on del alumno (Figura 4a) y otro m´as orientado al profesor y los animadores, como se trata de una playa Brasile˜na (Figura 4b). (a) Alumno (b) Profesor y animadores Figura 4: Escenarios 3.4. Comparaci´on de los Movimientos del Usuario y del Profesor La comparaci´on del movimiento se realiza mediante el reconocimiento de un gesto de Kinect. La funcionalidad del gesto se ha implementado utilizando estados y progresi´on, permaneciendo en el primer estado hasta que identifique una posici´on especifica. Para completar el gesto se tendr´a un tiempo determinado para llegar a la progresi´on final del movimiento. En el caso de que ese tiempo se termine, el gesto se cancelar´a haciendo que fracase la comparaci´on. El gesto fue nombrado como Move y esta formado por dos estados (ver Figura 5). El estado inicial se encarga de calibrar la posici´on inicial y el siguiente estado se define como el estado por defecto, encargado de la comparaci´on de la lista de los movimientos. La comparaci´on consiste en igualar las coordenadas X e Y de los Joints con un margen de error modificable por el usuario, y si cumple este requisito, pasar´a al siguiente estado. Permanecer en el estado por defecto tiene un tiempo l´ımite, que ser´a el tiempo del movimiento m´as dos segundos de espera. En ese tiempo el usuario deber´a superar todos los estados para que el movimiento se considere como realizado correctamente. A su vez, para realizar el an´alisis se guarda toda la informaci´on del movimiento en el estado por defecto del gesto, hasta donde el usuario falle el movimiento. Cuando la comparaci´on termina se podr´a activar el an´alisis, haciendo que los avatares se desplacen a primera escena y modific´andolos para que se vean transparentes. De este modo se crear´a un esqueleto verde parecido a los cubeman que representan a los usuarios. Los avatares simular´an el movimiento hasta el frame donde se equivoc´o el usuario y se realizar´a una comprobaci´on de cada Joint para cambiar el hueso de color de verde a rojo (Figura 6) para mostrar los fallos. A la vez, se va generando una cadena de texto con una correcci´on de posicionamiento compuesto por tres partes. La primera es la parte del cuerpo que estamos corrigiendo. La segunda parte esta formada por la elecci´on de la direcci´on, la cual se comprueba realizando la diferencia de la coordenadas X del Joint del usuario, con la del Joint de la grabaci´on. Si la diferencia es positiva ser´a hacia la derecha y en el caso de ser negativa ser´a hacia la izquierda. Para la tercera parte se realiza la diferencia con la coordenada Y, definiendo as´ı la Figura 5: Diagrama del gesto Move altura. Si la diferencia es positiva la altura sera hacia abajo, en caso contrario ser´a hacia arriba. 3.5. Grabaci´on de Movimientos con Expertos En esta etapa del proyecto se visit´o la Asociaci´on Cultural Deportiva Rio5, donde se re´unen los practicantes expertos en capoeira, para realizar una serie de grabaciones y pruebas. Este proceso consist´ıa en grabar una bater´ıa de movimientos de capoeira para seleccionar los captados correctamente por Kinect. Para facilitar la grabaci´on al profesor de capoeira, se opt´o por capturar varias repeticiones del mismo movimiento en la misma grabaci´on. De este modo, y con la supervisi´on del profesor, se tuvieron que seleccionar los movimientos que mejor se asemejaban al real, recortando el intervalo de frames m´as adecuado para incluirlo en la aplicaci´on. 5https://www.asociacionrio.com/ Figura 6: Feedback del an´alisis De los 20 movimientos grabados, 8 fueron factibles para su uso, mientras que el resto, al incluir giros, presentaron problemas en la grabaci´on. Esto se debe a que Kinect s´olo posee una c´amara frontal, de modo que al rotar alrededor del eje vertical se acaba perdiendo la referencia de cu´ales son las extremidades izquierda y derecha. Como resultado, al darse la vuelta, la captura vuelve a mostrar al usuario de frente, pero con los brazos y las piernas cruzadas. 4. Discusi´on Como se mencion´o en la introducci´on, uno de los objetivos al desarrollar este sistema era que pudiese funcionar con tecnolog´ıa de uso dom´estico, lo cual restringe notablemente el abanico de posibilidades a considerar. La configuraci´on elegida para el sistema utiliza una ´unica c´amara para la captaci´on del movimiento del usuario, proporcionada por Kinect. Esto limita mucho la capacidad del sistema de percibir los movimientos en toda su complejidad, sobre todo en aquellos casos en que hay rotaci´on del torso, lo cual puede generar confusiones entre distintos miembros del avatar que tengan simetr´ıa axial (tras el giro el sistema Figura 7: Aspecto final de la aplicaci´on confunde un brazo con otro, y piensa que el usuario sigue de frente cuando en realidad est´a de espaldas). Lo mismo sucede a la hora de analizar la profundidad de algunos de los movimientos realizados. Se espera en el futuro poder ampliar este trabajo con la utilizaci´on de mayor n´umero de c´amaras. Por otro lado, algunos de los trabajos estudiados (e.g. [4,5]) utilizan t´ecnicas m´as sofisticadas para analizar los movimientos de los usuarios que las usadas en este trabajo. Si bien esto puede ser ´util en niveles de aprendizaje avanzados, con principiantes en la pr´actica de la capoeira las diferencias con los movimientos realizados por el profesor son poco sutiles, con lo que un m´etodo m´as sencillo de comparaci´on de movimientos resulta, por un lado, menos complejo y m´as r´apido de calcular, y por otro, el resultado de la comparaci´on resulta m´as f´acilmente traducible a texto para proporcionar al aprendiz explicaciones ´utiles acerca de c´omo mejorar la realizaci´on de las t´ecnicas. El trabajo realizado se enmarca en el contexto del proyecto IDiLyCo: Inclusi´on Digital, Lenguaje y Comunicaci´on (TIN2015-66655-R), en el que se espera poder dar aplicaci´on a las tecnolog´ıas b´asicas desarrolladas para construir herramientas para la asistencia a personas con necesidades especiales. 5. Conclusiones y Trabajo Futuro A lo largo del presente art´ıculo se ha descrito el desarrollo de un entrenador virtual de capoeira basado en la captura de los movimientos del usuario a trav´es de Kinect y en su comparaci´on con los movimientos grabados previamente de un profesor de capoeira, con la consiguiente explicaci´on de c´omo conseguir realizar correctamente los movimientos ejecutados de manera err´onea. Aunque a´un no se ha realizado una evaluaci´on extensa con practicantes novatos y expertos de capoeira, s´ı se han realizado pruebas preliminares para comprobar que la aplicaci´on funciona correctamente y que los comentarios proporcionados para corregir los errores son adecuados. Estas pruebas se han realizado con