Diseño e implementación de un sistema para el análisis del ...

23 sept. 2013 - 29. 2.15. Interfaz de usuario para la Reconstrucción Tridimensional. ..... 89. C.28.Acople de los archiv
14MB Größe 12 Downloads 133 Ansichten
UNIVERSIDAD POLITÉCNICA SALESIANA SEDE CUENCA

CARRERA DE INGENIERÍA ELECTRÓNICA

Tesis previa a la obtención del Título de: Ingeniero Electrónico

“DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA PARA EL ANÁLISIS DEL MOVIMIENTO HUMANO USANDO SENSORES KINECT”

AUTORES: Chuya Sumba Jorge Patricio María del Cisne Cuenca Soto Kleyner Manuel Delgado Guaraca

Director: Ing. Patricio Fernando Urgilés Ortiz

Cuenca - Ecuador 2013

DECLARATORIA DE RESPONSABILIDAD

Los conceptos desarrollados, análisis realizados y las conclusiones del presente trabajo, son de exclusiva responsabilidad de los autores. Se autoriza el uso total o parcial de esta tesis a la Universidad Politécnica Salesiana con nes académicos.

Cuenca, 23 Septiembre de 2013.

Jorge Chuya

María del Cisne Cuenca

i

Kleyner Delgado

Ing. Fernando Urgilés, Director de Tesis.

CERTIFICO

Que la presente tesis ha sido desarrollada bajo todos los reglamentos estipulados por la Universidad Politécnica Salesiana y ha cumplido con todos los requerimientos para su aprobación.

Atentamente

Ing. Fernando Urgilés DIRECTOR DE TESIS

ii

JUSTIFICACIÓN

iii

El análisis del movimiento humano forma parte del estudio de la biomecánica y en la actualidad plantea retos interesantes, que si bien presentan cierto grado de dicultad, las implicaciones que sus resultados ofrecen en distintas áreas son de gran utilidad. La información que genera el análisis de movimiento puede ser clasicada dentro del conjunto de señales biométricas que pueden ser medidas sin la necesidad de usar métodos invasivos y que ofrecen información cualitativa y cuantitativa del sujeto de análisis. Esta información se puede utilizar para diversos nes que van desde la detección y análisis de anomalías físicas, aprendizaje y mejoramiento del rendimiento físico en deportistas, hasta el reconocimiento de individuos que representan cierto grado de peligrosidad en la comunidad, ya sea en lugares públicos como aeropuertos, terminales o bancos, entre otros. Sin embargo, las herramientas comunes usadas para el análisis de movimiento suelen tener, en un laboratorio especializado, un alto valor económico; esto diculta e inclusive imposibilita el análisis académico/cientíco por parte de diversas instituciones interesadas en realizar estudios sobre el análisis de movimiento. En la actualidad, el país no cuenta con muchos Centros Especializados en el Análisis de Movimiento; dado su alto costo de implementación y uso, así como su difícil acceso para la realización de estudios. Estos centros según su tipo se clasican en: básicos, de gama media y gama alta. En función del tipo de centro sus costos varían considerablemente, así como la precisión y los métodos de análisis.

Por lo general, se usan cámaras de video de alta denición, cámaras optoelectrónicas,

marcadores y software especializados. Las tendencias en la investigación actual referente al análisis de movimiento, se enfocan en el desarrollo de herramientas de bajo costo pero con las mismas funcionalidades, incluso eliminando del protocolo estándar algunos procesos tradicionales, tales como el uso de marcadores. Por lo tanto, el presente proyecto de tesis propone la implementación de un sistema enfocado al análisis del movimiento humano, contando con el aval y nanciamiento del Grupo de Investigación en Ingeniería Biomédica (GIIB) de la Universidad Politécnica Salesiana, formando parte del proyecto:  Diseño de una herramienta para la adquisición de datos del movimiento del cuerpo humano .

iv

OBJETIVOS

v

Objetivo General: •

Diseñar e implementar un sistema para el análisis del movimiento humano usando sensores Kinect.

Objetivos Especícos: •

Investigar los modelos biomecánicos, cinemáticos y las tecnologías desarrolladas enfocadas al análisis de movimientos.



Programar los algoritmos para la implementación del sistema diseñado, basados en los lenguajes de programación para los controladores del sensor Kinect.



Adquirir los datos generados por los sensores Kinect necesarios para el sistema.



Procesar los datos entregados por los sensores Kinect mediante técnicas de procesamiento digital de señales y modelos estocásticos.



Realizar pruebas del sistema de análisis de movimiento.



Analizar los resultados obtenidos del  Sistema de análisis del movimiento humano .

vi

La perfección es una pulida colección de errores. -Mario Benedetti-

vii

AGRADECIMIENTOS

Una virtud de las personas es reconocer y agradecer el aporte de otras para llegar a tener éxito en la vida. Por esto damos gracias en primer lugar a nuestras familias por ser los pilares fundamentales en nuestras vidas, ser el apoyo incondicional en este período de estudio y enseñarnos a luchar para conseguir nuestras metas y objetivos. A nuestros amigos quienes de una u otra forma han colaborado para la culminación de esta tesis. A nuestro director Ing. Fernando Urgilés por ser nuestro guía, colaborador y amigo, y a todos los integrantes del Grupo de Investigación en Ingeniería Biomédica por toda la ayuda brindada durante el desarrollo de este proyecto.

Gracias a todos... Mayer, Jorge y Kleyner

viii

RESUMEN

ix

El sistema de análisis de movimiento (SAM) es un proyecto de investigación que se desarrolló e implementó en el Grupo de Investigación en Ingeniería Biomédica (GIIB) de la Universidad Politécnica Salesiana. El proyecto está formado por tres etapas: captura de movimiento, reconstrucción y animación tridimensional. Este sistema se basa en la tecnología de cámaras de profundidad que ofrece el dispositivo Kinect. Para el diseño e implementación se considera principalmente las características técnicas que presenta el dispositivo: los ángulos de incidencia (vertical  horizontal), las distancias de reconocimiento (mínima  máxima), la velocidad de procesamiento del dispositivo y los ángulos de elevación del motor. En el ambiente de trabajo se debe considerar factores externos tales como: la cantidad de luz natural, supercies (reectantes y absorbentes) e inmuebles que pueden generar falsos positivos en el proceso de adquirir el esqueleto del usuario. La etapa de captura de movimiento consta de un arreglo de dos dispositivos (Kinect 0  Kinect 1), este arreglo captura los movimientos mediante 20 puntos que representan las articulaciones que forman el esqueleto del usuario. Para realizar un mejor análisis, al esqueleto se lo ha dividido en 7 secciones.

Este análisis se lo realiza de dos formas:

todo el cuerpo o por secciones.

Existen

tres niveles que determinan los parámetros de suavizado durante la adquisición de datos, estos datos se almacenan en un archivos .txt para su posterior análisis. Para determinar la precisión de las trayectorias adquiridas se utiliza los siguientes datos estadísticos: media, mediana y desviación estándar. También se emplea un ajuste polinomial de los datos de cada eje para igualar su número de muestras, con esto calcula la correlación y el p-value para determinar la similitud y la probabilidad estadística de los mismos. La etapa de reconstrucción tridimensional utiliza dos dispositivos (Kinect 2 - Kinect 3) y la librería Kinect Fusion del software Kinect for Windows SDK 1.7 de Microsoft. La altura del usuario es fundamental para los cálculos, porque el ángulo de incidencia no cubre por completo al usuario. Por esta razón, la reconstrucción se la realiza en dos etapas (superior e inferior), para obtener una reconstrucción total se necesita adquirir los datos del usuario tanto frontal como posterior. Estos datos se guardan en archivos .OBJ para realizar el proceso de modelado y animación tridimensional en la plataforma Blender. Para que el modelo tridimensional imite los movimientos que realiza el usuario, se emplea una comunicación OSC. Donde, la interfaz principal adquiere los datos del usuario y los envía a la plataforma de Blender.

x

Índice general 1. Introducción 1.1. Análisis Biomecánico . . . . . . . . . . . . . . . . . . . . 1.1.1. Modelo Biomecánico . . . . . . . . . . . . . . . . 1.2. Análisis de Movimiento . . . . . . . . . . . . . . . . . . . 1.2.1. Segmentación del Cuerpo Humano . . . . . . . . 1.2.2. Técnicas de Análisis Biomecánico y Cinemático . 1.2.2.1. Sistemas de Grabación de Video . . . . 1.2.2.2. Sistemas Fotográficos de Captura . . . . 1.2.2.3. Sistemas Computarizados . . . . . . . . 1.2.3. Captura de Movimiento . . . . . . . . . . . . . . 1.3. Dispositivo Kinect XBOX-360 . . . . . . . . . . . . . . . 1.3.1. Componentes . . . . . . . . . . . . . . . . . . . 1.3.2. Especificaciones Técnicas . . . . . . . . . . . . . 1.3.3. Controladores y Plataformas . . . . . . . . . . . . 1.3.3.1. OpenKinect: Libfreenect Controladores . 1.3.3.2. OpenNI/NITE . . . . . . . . . . . . . . 1.3.3.3. Microsoft Kinect SDK . . . . . . . . . . 1.4. Consideraciones . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

8 8 9 10 10 12 12 12 12 13 13 13 14 15 15 15 16 16

2. Diseño e Implementación del Sistema 2.1. Espacio Físico . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1. Etapa 1: Captura de Movimiento . . . . . . . . . . . 2.1.2. Etapa 2: Reconstrucción Tridimensional . . . . . . . 2.1.2.1. Cálculos . . . . . . . . . . . . . . . . . . 2.2. Adquisición de Datos . . . . . . . . . . . . . . . . . . . . . 2.2.1. Captura de Movimiento . . . . . . . . . . . . . . . 2.2.1.1. Cámara . . . . . . . . . . . . . . . . . . . 2.2.1.2. Cámara de Profundidad . . . . . . . . . . 2.2.1.3. Esqueletización . . . . . . . . . . . . . . 2.2.2. Reconstrucción Tridimensional . . . . . . . . . . . 2.2.2.1. Kinect Fusion . . . . . . . . . . . . . . . 2.2.2.2. Modelo de Reconstrucción Tridimensional 2.2.3. Modelado y Animación Tridimensional . . . . . . . 2.2.3.1. Blender Bloop Station . . . . . . . . . . 2.2.3.2. Cuaterniones y Rotaciones . . . . . . . . 2.3. Validación del Sistema . . . . . . . . . . . . . . . . . . . . 2.3.1. Iluminancia . . . . . . . . . . . . . . . . . . . . . . 2.3.2. Histogramas . . . . . . . . . . . . . . . . . . . . . 2.3.3. Entropía . . . . . . . . . . . . . . . . . . . . . . . . 2.3.4. Rangos de Estabilidad . . . . . . . . . . . . . . . . 2.3.4.1. Captura de Movimiento . . . . . . . . . . 2.3.4.2. Reconstrucción . . . . . . . . . . . . . . 2.4. Consideraciones . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

17 17 17 19 20 21 22 23 24 25 29 30 30 31 32 33 34 34 35 37 39 39 40 40

1

ÍNDICE GENERAL

ÍNDICE GENERAL

3. Análisis de Captura de Movimiento 3.1. Precisión . . . . . . . . . . . . . . 3.1.1. Espacial . . . . . . . . . . . 3.1.2. Angular . . . . . . . . . . . 3.2. Captura de Trayectorias . . . . . . . 3.2.1. Análisis de la Cadera Centro 3.2.2. Validación de Estadística . . 3.3. Consideraciones . . . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

41 41 41 42 43 43 49 50

4. Análisis del Modelado y Animación Tridimensional 4.1. Generación del Modelo Tridimensional . . . . . 4.2. Animación Tridimensional . . . . . . . . . . . . 4.2.1. Construcción del Esqueleto . . . . . . . 4.2.1.1. Método Rigging . . . . . . . . 4.2.1.2. Identificación de Huesos . . . . 4.2.2. Método Skinning Model . . . . . . . . . 4.2.3. Método Weights Painted Mode . . . . . . 4.2.4. Animación . . . . . . . . . . . . . . . . 4.3. Comunicación OSC . . . . . . . . . . . . . . . . 4.4. Almacenamiento Archivos BVH . . . . . . . . . 4.5. Consideraciones . . . . . . . . . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

51 51 52 52 52 53 53 54 55 56 56 58

5. Resultados y Aplicaciones 5.1. Protocolo de Experimentación . . . . . . . 5.1.1. Captura de Movimiento . . . . . . 5.1.2. Reconstrucción Tridimensional . . 5.2. Resultados Obtenidos . . . . . . . . . . . . 5.2.1. Captura de Movimiento . . . . . . 5.2.2. Reconstrucción . . . . . . . . . . . 5.3. Aplicaciones del SAM . . . . . . . . . . . 5.3.1. Motion Capture (BVH) . . . . . . . 5.3.1.1. Animación . . . . . . . 5.3.1.2. Juegos . . . . . . . . . . 5.3.2. Patrones Biométricos . . . . . . . . 5.3.2.1. Rehabilitación . . . . . . 5.3.2.2. Biomecánica Ocupacional 5.3.3. Robótica . . . . . . . . . . . . . . 5.3.3.1. Brazo Robótico: . . . . . 5.3.3.2. Robot Bípedo: . . . . . . 5.3.4. Seguridad de Sistemas Industriales .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

59 59 59 60 60 60 61 61 61 61 62 62 62 62 62 62 63 63

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

6. Conclusiones y Recomendaciones

64

A. Anexo A A.1. Iluminancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2. Histogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66 66 67

B. Anexo B B.1. Precisión . . . . . . . . . . . B.2. Captura de Trayectorias . . . . B.2.1. Cadera Centro . . . . B.2.1.1. Hombres . . B.2.1.2. Mujeres . . B.2.2. Tabla de Valores T-test

69 69 72 72 72 76 80

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

2

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

ÍNDICE GENERAL

ÍNDICE GENERAL

C. Anexo C C.1. MANUAL . . . . . . . . . . . . . . . . . . . . . . . . . . . C.1.1. Guía de instalación . . . . . . . . . . . . . . . . . . C.1.1.1. Controladores . . . . . . . . . . . . . . . C.1.1.2. Software para el desarrollo de aplicaciones C.1.1.3. Plataforma de animación digital . . . . . . C.1.2. Guía de Usuario . . . . . . . . . . . . . . . . . . . C.1.2.1. Avatar 3D (Segunda Interfaz) . . . . . . . C.1.2.2. Plataforma Blender . . . . . . . . . . . . C.1.2.3. Comunicación OSC ( Kinect - Blender ) .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

81 81 81 81 81 81 82 87 89 94

D. Presupuesto SAM

96

E. Protocolo del Sistema de Análisis de Movimiento (SAM)

97

F. Lista de Usuarios

99

Bibliografía

100

3

Índice de figuras 1.1. 1.2. 1.3. 1.4. 1.5. 1.6. 1.7. 1.8.

División de los planos anatómicos [1]. . . . . . . . . . . Estructura de un modelo biomecánico [2]. . . . . . . . . Segmentos del cuerpo hurmano [3]. . . . . . . . . . . . Segmentación del cuerpo humano [3]. . . . . . . . . . . Movimiento del centro de masa del cuerpo [3]. . . . . . Vista superior de la trayectoria del centro de masa [3]. . . Componentes del sensor Kinect [4]. . . . . . . . . . . . Vista interior de los componentes del sensor Kinect. [5].

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

8 9 10 11 11 12 13 14

2.1. Etapa 1. Perspectiva del espacio físico para la captura de movimientos del SAM. . . . 2.2. Etapa 1. Vista superior del espacio físico para la captura de movimiento. . . . . . . . . 2.3. Etapa 1. Vista lateral del espacio físico para la captura de movimiento. . . . . . . . . . 2.4. Etapa 2. Espacio físico para la reconstrucción tridimensional del usuario. . . . . . . . . 2.5. Etapa 2. Vista superior para la reconstrucción tridimensional del usuario. . . . . . . . . 2.6. Etapa 2. Vista lateral para la reconstrucción tridimensional del usuario. . . . . . . . . . 2.7. Diagrama de bloques general del Sistema de Análisis de Movimiento. . . . . . . . . . 2.8. Diagrama de bloques general de la interfaz principal del sistema. . . . . . . . . . . . . 2.9. Interfaz principal de la aplicación del Sistema de Análisis de Movimiento. . . . . . . . 2.10. Diagrama de bloques general para el control de la cámara del dispositivo. . . . . . . . 2.11. Diagrama de bloques general para la cámara de profundidad del dispositivo. . . . . . . 2.12. Diagrama de bloques general para la esqueletización y captura de movimiento. . . . . 2.13. (a) Segmentación del usuario, (b) ángulos entre las articulaciones. . . . . . . . . . . . 2.14. Diagrama de bloques general para la Reconstrucción Tridimensional del sujeto. . . . . 2.15. Interfaz de usuario para la Reconstrucción Tridimensional. . . . . . . . . . . . . . . . 2.16. Diagrama de bloques general para la Transmisión OSC. . . . . . . . . . . . . . . . . . 2.17. Diagrama de bloques general para la Transmisión OSC. . . . . . . . . . . . . . . . . . 2.18. Niveles de Iluminancia Artificial en la Zona de Trabajo . . . . . . . . . . . . . . . . . 2.19. Niveles de Iluminancia Natural en la Zona de Trabajo. . . . . . . . . . . . . . . . . . 2.20. Imágenes de profundidad en el ambiente de trabajo sin usuario. . . . . . . . . . . . . . 2.21. Distribución promedio de la distancia absoluta de los objetos en el ambiente sin usuario. 2.22. Imágenes de profundidad en el ambiente de trabajo con usuario. . . . . . . . . . . . . 2.23. Distribución promedio de la distancia absoluta de los objetos en el ambiente con usuario. 2.24. Distribución de datos de distancia absoluta kdk del cuadro A.4 (Kinect 0). . . . . . . . 2.25. Distribución de datos de distancia absoluta kdk del cuadroA.4 (Kinect 1). . . . . . . . 2.26. Valores de la entropía para el ambiente de trabajo sin usuario Kinect 0 y Kinect 1. . . . 2.27. Valores de la entropía para el ambiente de trabajo con usuario (Kinect 0 y Kinect 1). . . 2.28. Vista superior de los rangos de reconocimiento para el Kinect 1. . . . . . . . . . . . .

17 18 18 19 19 20 21 22 23 23 24 25 26 29 29 31 32 34 34 35 35 36 36 37 37 38 38 39

3.1. Precisión ( %) de la posición de las articulaciones para el nivel Medio del segmento HAT. 3.2. Precisión ( %) de la posición de las articulaciones para el nivel Medio del Aparato Locomotor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3. Precisión ( %) de los ángulos entre las articulaciones para el nivel Medio. . . . . . . . 3.4. Capturas de movimiento del grupo usuario 1 hombres, en cada uno de los modos . . . . 3.5. Capturas de movimiento del grupo mujeres: usuario 2, en cada uno de los modos . . . . 3.6. Capturas de movimiento del grupo hombres: usuario 2, para el modo medio desde el Kinect 0 y Kinect 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

4

42 42 45 46 47

ÍNDICE DE FIGURAS

ÍNDICE DE FIGURAS

3.7. Capturas de movimiento del grupo hombres: usuario 2, para el modo medio desde el Kinect 0 y Kinect 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8. Desplazamiento, velocidades y aceleraciones estimadas por los Kinect 0 y Kinect 1 del usuario 2 hombres (a) y mujeres (b). . . . . . . . . . . . . . . . . . . . . . . . . . . .

48 49

4.1. Acople de las cuatro partes del modelo tridimensional generado por el SAM. . . . . . 4.2. Modelo tridimensional procesado con las herramientas Sculpt Mode de Blender 2.68 del sujeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3. Identificación de los huesos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4. Método “Skinning Model”. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5. Proceso Armature Deform usado en Blender para corregir los errores de acople del modelo tridimensional con el esqueleto. . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6. Método Weights Painted Mode usado para el acople del modelo tridimensional con el esqueleto del sujeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7. Animación final. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.8. Jerarquía de los huesos en los archivos BVH. . . . . . . . . . . . . . . . . . . . . . . 4.9. Datos de movimiento que se almacenan en los archivos BVH. . . . . . . . . . . . . .

51

5.1. Reconstrucciones de Usuarios Mujeres. . . . . . . . . . . . . . . . . . . . . . . . . . 5.2. Reconstrucciones de Usuarios Hombres. . . . . . . . . . . . . . . . . . . . . . . . . 5.3. Brazo Robótico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

61 61 62

A.1. Tendencia de los valores promedio de iluminancia en la zona de trabajo con luz artificial [lux] durante distintas etapas del día. . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2. Tendencia de los valores promedio de iluminancia en la zona de trabajo con luz natural [lux] durante distintas etapas del día. . . . . . . . . . . . . . . . . . . . . . . . . . . .

52 53 53 54 54 55 57 57

66 67

B.1. Valores porcentuales de precisión ( %) de la posición [x, y, z] de las articulaciones en el arreglo de Captura de Movimiento para los parámetros de suavizados en Bajo del segmento HAT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2. Valores porcentuales de precisión ( %) de la posición [x, y, z] de las articulaciones en el arreglo de Captura de Movimiento para los parámetros de suavizados en Bajo del segmento Aparato Locomotor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.3. Valores porcentuales de precisión ( %) de la posición [x, y, z] de las articulaciones en el arreglo de Captura de Movimiento para los parámetros de suavizados en Alto del segmento HAT y el Aparato Locomotor. . . . . . . . . . . . . . . . . . . . . . . . . . B.4. Valores porcentuales de precisión ( %) de los ángulos entre las articulaciones estimados por el arreglo de Captura de Movimiento para los parámetros de suavizados en Bajo. . B.5. Valores porcentuales de precisión ( %) de los ángulos entre las articulaciones estimados por el arreglo de Captura de Movimiento para los parámetros de suavizados en Alto. . B.6. Capturas de movimiento del grupo usuario 2 hombres, en cada uno de los modos . . . . B.7. Capturas de movimiento del grupo usuario 3 hombres, en cada uno de los modos . . . . B.8. Capturas de movimiento del grupo usuario 4 hombres, en cada uno de los modos . . . . B.9. Capturas de movimiento del grupo usuario 5 hombres, en cada uno de los modos . . . . B.10. Capturas de movimiento del grupo mujeres: usuario 1, en cada uno de los modos . . . . B.11. Capturas de movimiento del grupo mujeres: usuario 3, en cada uno de los modos . . . . B.12. Capturas de movimiento del grupo mujeres: usuario 4, en cada uno de los modos . . . . B.13. Capturas de movimiento del grupo mujeres: usuario 5, en cada uno de los modos . . . .

71 72 73 74 75 76 77 78 79

C.1. Add-on Bloop . . . . C.2. Add-on Nui . . . . . C.3. Menús principales . . C.4. Menús principales . . C.5. Formato RGB . . . . C.6. Menú Archivo . . . . C.7. Menú herramientas . C.8. Esqueletización . . . C.9. Submenú de Captura C.10. Submenú parámetros

82 82 82 83 83 83 83 84 84 84

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

5

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

69

70

70 71

ÍNDICE DE FIGURAS

ÍNDICE DE FIGURAS

C.11. Valores de los Smooth Parameters . . . . . . . . . . . . . C.12. Submenú Blender . . . . . . . . . . . . . . . . . . . . . . C.13. Menú de profundidad . . . . . . . . . . . . . . . . . . . . C.14. Datos de Profundidad Color y Usuario . . . . . . . . . . . C.15. Submenú de propiedades . . . . . . . . . . . . . . . . . . C.16. Imagen con Colores Invertidos y Escala De Grises . . . . . C.17. Kinect Info . . . . . . . . . . . . . . . . . . . . . . . . . C.18. Histogramas . . . . . . . . . . . . . . . . . . . . . . . . . C.19. Trayectorias . . . . . . . . . . . . . . . . . . . . . . . . . C.20. Selección de los segmentos . . . . . . . . . . . . . . . . C.21. Captura de imágenes . . . . . . . . . . . . . . . . . . . . C.22. Interfaz Reconstrucción 3D . . . . . . . . . . . . . . . . . C.23. Control motor y rangos de reconocimiento. . . . . . . . . C.24. Menú Opciones de la Interfaz Reconstrucción 3D . . . . . C.25. Archivos de reconstrucción . . . . . . . . . . . . . . . . . C.26. Importar archivos . . . . . . . . . . . . . . . . . . . . . . C.27. Importación de los archivos .obj a Blender . . . . . . . . . C.28. Acople de los archivos mediante la herramienta Join Mesh C.29. Herramientas de Sculpt Mode . . . . . . . . . . . . . . . C.30. Cambiar el color de la textura . . . . . . . . . . . . . . . . C.31. Método Individual para ingresar el esqueleto . . . . . . . . C.32. Método Rigging . . . . . . . . . . . . . . . . . . . . . . . C.33. Identificación Huesos . . . . . . . . . . . . . . . . . . . . C.34. Método With Automatic Weights . . . . . . . . . . . . . . C.35. Método Skinnig Model . . . . . . . . . . . . . . . . . . . C.36. Método Weight Paint Mode . . . . . . . . . . . . . . . . . C.37. Utilización del método Weight Paint en cada segmento . . C.38. Menús principales. . . . . . . . . . . . . . . . . . . . . . C.39. Kinect Blender . . . . . . . . . . . . . . . . . . . . . . .

6

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

84 85 85 85 86 86 86 86 87 87 87 87 88 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95

Índice de cuadros 1.1. Segmentos del modelo la figura 1.2 [2]. . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Características del dispositivo Kinect [6], [4], [7]. . . . . . . . . . . . . . . . . . . . . 1.3. Características de los controladores OpenNI y Microsoft SDK [4], [7]. . . . . . . . . .

9 14 15

2.1. 2.2. 2.3. 2.4.

24 26 27

Tabla de la resolución de los formatos de las imágenes disponibles en el sistema. . . . Tabla para los valores de los parámetros de suavizado preestablecidos para el SAM. . . Pertenencia de la captura de posición y ángulos entre las articulaciones del cuerpo. . . Rangos de estabilidad y reconocimiento de los usuarios para los sensores Kinect 0 y Kinect 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5. Distancias usadas para la reconstrucción de varios usuarios. . . . . . . . . . . . . . . . 3.1. Estaturas de la población de hombres y mujeres, extracto del cuadro 2.5 (Chaffin et al., 2006)[8]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Estatura (en metros) y edades de los voluntarios para las pruebas del SAM. . . . . . . 3.3. Correlación R entre los ejes [x, y] del modo Medio y Bajo del Kinect 0 y Kinect 1. . . . 3.4. Correlación R entre los datos del Kinect 0 y Kinect 1. . . . . . . . . . . . . . . . . . . 3.5. Estadística de los valores en metros [m] del Kinect 0 y Kinect 1 de la Cadera Centro en modo Medio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6. Valores de desplazamiento, velocidad y aceleración en las intersecciones de las curvas del Kinect 0 y Kinect 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7. Análisis del t-test entre las muestras en el modo Medio del Kinect 0 y Kinect 1 para el grupo hombres y mujeres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1. Asignación del ID de los huesos del esqueleto en Blender. . . . . . . . . . . . . . . . A.1. Valores promedio de iluminancia en la zona de trabajo con luz artificial [lux] durante distintas etapas del día. Las unidades de las distancias están en [m]. . . . . . . . . . . . A.2. Valores promedio de iluminancia en la zona de trabajo con luz natural [lux] durante distintas etapas del día. Las unidades de las distancias están en [m]. . . . . . . . . . . . . . A.3. Medición de la distancia absoluta (sin unidades) con referencia al Kinect 0 & 1 del ambiente de trabajo sin usuario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.4. Medición de la distancia absoluta (sin unidades) con referencia al Kinect 0 & 1 en el ambiente de trabajo con usuario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.1. Valores porcentuales de precisión ( %) de los ángulos entre las articulaciones estimados por el arreglo de Captura de Movimiento. . . . . . . . . . . . . . . . . . . . . . . . . B.2. Valores porcentuales de precisión ( %) de los ángulos entre las articulaciones estimados por el arreglo de Captura de Movimiento. . . . . . . . . . . . . . . . . . . . . . . . . B.3. Análisis del t-test entre las muestras en el modo Medio del Kinect 0 y Kinect 1 para el grupo hombres y mujeres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39 40

43 43 44 44 47 48 50 56

66 67 67 68

69 71 80

D.1. Presupuesto del proyecto SAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.2. Cierre de Proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

96 96

E.1. Datos del Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

97

F.1. Lista de Usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

99

7

Capítulo 1

Introducción El estudio de movimiento del cuerpo humano permite analizar las características propias de cada individuo, para en función de los resultados, diagnosticar patologías que puedan ser tratadas por especialistas. De igual forma, las mismas técnicas pueden ser usadas para desarrollar aplicaciones enfocadas a juegos de realidad aumentada, interacción en tiempo real, entre otros. Los métodos para el análisis de movimiento han evolucionado rápidamente perfeccionándolos y creando nuevos métodos más precisos y eficientes.

1.1.

Análisis Biomecánico

La biomecánica es la aplicación de métodos y técnicas de la ciencia mecánica, que sirve para el análisis y comprensión de los sistemas biológicos ya que analiza las propiedades mecánicas de los tejidos, sistemas y el movimiento de los organismos vivos, y tiene como finalidad tratar con la descripción técnica y anatómica de los movimientos que se utilizan en la medicina. Para este análisis el cuerpo se divide en segmentos, figura 1.1. [9]. La descripción del movimiento anatómico humano explica el movimiento entre los huesos y el rango de cada articulación en tres planos del cuerpo.

Figura 1.1: División de los planos anatómicos [1].

Plano frontal o coronal, que divide el cuerpo en partes anterior y posterior. Plano transversal que divide el cuerpo en partes superior e inferior. Plano sagital o lateral que divide el cuerpo en partes derecha e izquierda. 8

CAPÍTULO 1. INTRODUCCIÓN

1.1.1.

Modelo Biomecánico

El cuerpo humano puede ser modelado como un conjunto de segmentos rígidos, los cuales varían dependiendo de la intención del análisis. Por ejemplo, si estamos interesados en el estudio de la marcha podemos elegir una configuración de referencia como se muestra en la figura 1.2, [2]; los nombres de cada segmento del modelo se encuentran en la cuadro 1.1.

Figura 1.2: Estructura de un modelo biomecánico [2].



SEGMENTOS

R

Sistema de referencia inercial

9

Parte superior del brazo derecho

1

Pelvis (parte inferior del cuerpo)

10

Antebrazo derecho

2

Cintura (parte medio del cuerpo)

11

Mano derecha

3

Tórax (parte superior del cuerpo)

12

Muslo derecho

4

Parte superior del brazo izquierdo

13

Pierna derecha

5

Antebrazo izquierdo

14

Pie derecho

6

Mano izquierda

15

Muslo izquierdo

7

Cuello

16

Pierna izquierdo

8

Cabeza

17

Pie izquierdo

Cuadro 1.1: Segmentos del modelo la figura 1.2 [2].

Los segmentos que participan en la movilidad se agrupan en cuatro segmentos de las extremidades inferiores y son [3]: Cintura: Transmite la fuerza que se ejerce sobre ella y la adaptación de la pelvis, que se inclina o se balancea en respuesta al apoyo unilateral, ya que la locomoción afecta alternativamente ambos miembros inferiores. Cadera y muslo: Proporcionan al miembro inferior la posibilidad de desplazamiento en las tres direcciones del espacio, siendo siempre el muslo el segmento más móvil.

9

CAPÍTULO 1. INTRODUCCIÓN La rodilla y pierna: Aseguran la solidez del movimiento en la locomoción vertical, proporcionan también estabilidad en la sucesión de las fases de apoyo y suspensión durante el desplazamiento y el salto. Las diferentes partes del pie: Tienen como función la adaptación al suelo en las diferentes formas de locomoción.

1.2.

Análisis de Movimiento

La kinesiología es la ciencia que analiza el movimiento humano para mejorar la eficiencia y la reducción del riesgo de lesiones. Para analizar el movimiento se usa el método cualitativo y cuantitativo. El análisis cuantitativo consiste en la medición de las variables biomecánicas y por lo general requiere de un computador para realizar los cálculos numéricos. El análisis cualitativo consiste en la “observación sistemática y el criterio introspectivo de la calidad del movimiento humano con el fin de mejorar el rendimiento” (Knudson y Morrison, 2007) [10]. Estos análisis ayudan a prevenir lesiones ya que proporcionan información sobre las propiedades mecánicas de los tejidos y las cargas mecánicas durante el movimiento1 . Los estudios biomecánicos proporcionan datos importantes para encontrar o confirmar una anomalía dentro de la medicina deportiva y estudios de investigación médica.

1.2.1.

Segmentación del Cuerpo Humano

Para entender el análisis de movimiento es necesario estudiar al cuerpo como un conjunto de segmentos unidos entre sí. El concepto de Perry (1992) [11], sugiere que hay que considerar el segmento de carga y los segmentos del aparato locomotor. En el segmento de carga se localiza la cabeza, los brazos y el tronco. Al conjunto de estos segmentos se denomina segmento HAT 2 . Los segmentos del aparato locomotor incluyen: la pelvis y extremidades inferiores (pie, pierna y muslo), estos segmentos se articulan en el tobillo, rodilla, cadera y la unión lumbosacra como se muestra en la figura 1.3 [3].

Figura 1.3: Segmentos del cuerpo hurmano [3].

El segmento HAT tiene como objetivo que el movimiento que se efectúe en línea recta hacia la dirección prevista, y este puede ser definido por un centro de masa. 1 Con

está información se puede diseñar terapias preventivas o de rehabilitación específicas para cada paciente [10]. el conjunto formado por la cabeza, brazos y torso en inglés HAT: head, arms, torso.

2 Representa

10

CAPÍTULO 1. INTRODUCCIÓN Los sistemas clínicos comúnmente usados dividen al cuerpo en siete o trece segmentos, los cuales están definidos por un sistema de coordenadas cartesianas que relacionan la anatomía ósea de cada segmento, como se observa en la figura 1.4. El modelo actual de siete segmentos tiene: dos pies (1, 2), dos piernas (3, 4), dos muslos (5, 6), y el segmento HAT (7). Con la evolución de las computadoras y la tecnología disponible, actualmente se ha elaborado un nuevo modelo en donde el cuerpo es divide en trece segmentos figura 1.4, en este modelo la parte superior consta de seis partes adicionales al modelo anterior. Las partes que se incorporan son: la cadera (11), el tronco (12), brazo (9, 10) y antebrazo (7, 8), y cabeza (13) [3].

Figura 1.4: Segmentación del cuerpo humano [3].

Durante el análisis, cada uno de los segmentos del aparato locomotor tiene su propio centro de masa fijo. El centro de masa puede cambiar significativamente por la oscilación de los brazos, tronco, flexión y el movimiento de la cabeza. Para tener la máxima eficiencia durante el movimiento, el centro de masa del segmento HAT debe moverse en una sola dirección hacia adelante, sin embargo esto no es físicamente posible, por lo que el objetivo es reducir al mínimo la oscilación horizontal y vertical del segmento. El modo de andar más eficiente requiere que el centro de masa esté fuera del plano de movimiento, figura 1.5.

Figura 1.5: Movimiento del centro de masa del cuerpo [3].

11

CAPÍTULO 1. INTRODUCCIÓN En la figura 1.6 se puede observar que el movimiento del centro de masa es un camino que dibuja una trayectoria sinusoidal durante el periodo del desplazamiento.

Figura 1.6: Vista superior de la trayectoria del centro de masa [3].

1.2.2.

Técnicas de Análisis Biomecánico y Cinemático

El caminar es un patrón de movimiento. El diagnóstico de las dificultades de una persona depende de una descripción precisa de las acciones que ocurren en cada articulación, por tal motivo la ciencia ha desarrollado varias técnicas para el análisis de movimiento. Estas técnicas han evolucionado con el tiempo proporcionado grandes avances: datos gráficos y numéricos, aspectos cinéticos y cinemáticos del movimiento, acción muscular o consumo de energía (tanto en sujetos sanos como en enfermos)3 que tienen múltiples aplicaciones en estudios biomecánicos, en neurología, rehabilitación, fabricación de calzado o en el campo deportivo [11]. 1.2.2.1.

Sistemas de Grabación de Video

Las cámaras ofrecen un control remoto de los datos de registro y examen de movimiento de todo el cuerpo. Actualmente la tecnología registra el movimiento del sujeto para el análisis observacional o para cuantificar los datos, también puede ser utilizada como la base para un sistema de análisis cinemático de la misma manera que la fotografía ha sido utilizada; esto tiene ventajas considerables en términos de coste, comodidad y rapidez. El número de cámaras utilizadas determinan la exactitud de la grabación del movimiento. Para realizar el seguimiento adecuadamente del cuerpo y las extremidades a través del espacio se necesita de un mínimo de dos cámaras, de lo contrario se subestiman los movimientos sagitales cuando la alineación articular es oblicua al plano de la película de grabación [11]. A pesar de que puede no ser tan precisa debido a la resolución más pobre, se puede automatizar el proceso de digitalización por medio de un DSP (Procesamiento Digital de Señales por sus siglas en inglés) utilizando marcadores en la piel como puntos de referencia lo cual significa una ventaja considerable [1]. 1.2.2.2.

Sistemas Fotográficos de Captura

Este método se realiza con imágenes y consiste en fotografiar al sujeto ya sea caminando o realizando una actividad. Una vez que las fotos son procesadas, se identifican los puntos de referencia y las medidas de las coordenadas bidimensionales para luego digitalizar la imagen. El operador mueve el cursor a los puntos adecuados de la imagen y transfiere las coordenadas a una software especializado. Este método tiene como ventajas el bajo costo de los equipos y la posibilidad de alta precisión, mientras como contraparte el tiempo para procesar las fotografías es considerable [1]. 1.2.2.3.

Sistemas Computarizados

En esta técnica se fijan marcadores reflectantes a las extremidades del sujeto ya sea cerca de los centros de los conjuntos o fijados a los segmentos de cada extremidad para identificar sus posiciones y orientaciones. Los sistemas difieren en cómo localizar el centro de gravedad o centro geométrico de cada marcador de la imagen adquirida, pero se calcula generalmente utilizando los bordes de los puntos brillantes en el campo de visión. Debido a que un gran número de bordes se utilizan para calcular la posición del centro de gravedad, su posición puede ser determinada con mayor precisión en la resolución horizontal y vertical de la imagen [1]. 3 Se

considera sujetos sanos a aquellos cuyos patrones de caminata son normales en función de los parámetros de [3].

12

CAPÍTULO 1. INTRODUCCIÓN

1.2.3.

Captura de Movimiento

Es el proceso que traduce movimientos reales a representaciones digitales, esto se logra mediante el seguimiento de un conjunto de puntos importantes en una escena por un tiempo determinado. El objetivo principal es “el seguimiento en tiempo real de un número ilimitado de puntos de interés, sin limitación de espacio, a la más alta frecuencia posible con el menor margen de error” (Parent et al., 2009) [12]. Se define un conjunto de puntos principales en la persona, estos se ubican en las áreas de mayor información de sus movimientos. Dichos puntos hacen referencia a las partes rígidas de la persona como las diferentes articulaciones que posee el cuerpo humano. Con el avance de la tecnología en el área computacional se ha mejorado la técnica. Estos sistemas se valen de algoritmos que mediante el análisis de la entrada de datos entregado por las cámaras, son capaces de identificar figuras humanas para la realización del seguimiento. En la actualidad existen dispositivos empleados para juegos los cuales capturan los movimientos de los usuarios usando las técnicas antes mencionadas. En función de los costos y la fiabilidad de los datos obtenidos, es factible su uso en el estudio del movimiento humano.

1.3.

Dispositivo Kinect XBOX-360

El dispositivo Kinect (o también conocido como sensor Kinect) es un cubo rectangular de aproximadamente 0.23m de largo que se conecta a una base hexagonal unida por medio de un eje de articulación rotular [6], [4]. El sensor soporta una cámara RGB (Red, Blue, Green), un conjunto de micrófonos, un sensor de profundidad capaz de capturar el movimiento tridimensional de un cuerpo humano y tiene la capacidad de reconocer la voz y el rostro. El Kinect simultáneamente procesa la información del hardware y software [13].

1.3.1.

Componentes

En la figuras 1.7 y 1.8 se muestran los componentes del sensor desde la perspectiva de uso del usuario y desde su interior respectivamente [14], [15]:

Figura 1.7: Componentes del sensor Kinect [4].

Cámara RGB: entrada de 3 canales con capacidad de resolución de hasta 1280x960 en la captura de la imágenes de color. Emisor IR4 y sensor de profundidad IR: el emisor IR emite rayos infrarrojos y el sensor de profundidad IR lee los rayos que se reflectan hacia al sensor. Los rayos reflectados son transformados en información de la distancia entre el sensor y el objeto. Ésto hace posible la adquisición de la imagen de profundidad. Arreglo de micrófonos: contiene cuatro micrófonos que capturan la información de audio. Gracias a la disposición de los micrófonos es posible grabar y determinar la dirección de la fuente de audio. 4 La

radiación infrarroja es una onda electromagnética y térmica invisible e inofensiva al ojo humano.

13

CAPÍTULO 1. INTRODUCCIÓN Motor: permite tener una inclinación que oscila entre los ±27º adicionales al ángulo de visión vertical de la cámara. Acelerómetro: posee un rango de 2G en los tres ejes espaciales, donde G es la fuerza de gravitación. LED. Adicional a estos componentes que están integrados al dispositivo, se tiene un USB Hub por medio del cual el Kinect es conectado a la computadora5 .

Figura 1.8: Vista interior de los componentes del sensor Kinect. [5].

1.3.2.

Especificaciones Técnicas

Las principales características se muestran en la tabla 1.26 : Kinect XBOX-360 1

Sensores de profundidad

Cámara: 640x840 CMOS, 16 bits, 30 fps. Infrarrojo: resolución 0.01m eje Z; ~ 0.003m ejes X e Y.

2

Cámara RGB

VGA 640x480, 32 bits, 30 fps.

3

Micrófonos

Rango: ±50º.. Cancelación ruido: 20dB. Resolución: 24 bits PCM (Pulse Code Modulation). Frecuencia: 16 kHz.

4

Motor

Ángulo inclinación:±27º.

5

Acelerómetro

2G/4G/8G para un rango de 2G con una precisión de ±1º.

6

Rango de profundidad

Min. : 0.8m a 1.2m. Max.: 3.5m a 4m.

7

Ángulo de visión

Horizontal: 57º . Vertical: 43º.

Cuadro 1.2: Características del dispositivo Kinect [6], [4], [7].

5 Para más información visitar la página web: http://www.microsoft.com/en-us/kinectforwindows y http://msdn. microsoft.com/en-us/library/jj131023.aspx. 6 El

rango mínimo en el Kinect para Windows disminuye entre 0.4m a 0.8m, el máximo se mantiene [6].

14

CAPÍTULO 1. INTRODUCCIÓN

1.3.3.

Controladores y Plataformas

Ventajas

CARACTERÍSTICAS DE LOS CONTROLADORES DEL DISPOSITIVO KINECT SDK MICROSOFT

SDK OPENNI/NITE

Soporte para audio.

Uso libre y comercial.

Incluye las manos, pies y clavícula.

Adquiere datos de las manos para seguimiento y reconocimiento de gestos.

Seguimiento de cuerpo completo.

Seguimiento de cuerpo entero.

No necesita postura de calibración.

Puede calibrar la profundidad y el color de la imagen.

Soporte para el motor de inclinación.

Cálculo de la rotación de las articulaciones.

Mejor tratamiento de articulaciones no visibles.

Plataforma múltiple: Windows XP, Vista, 7, Linux y MacOSX

Soporta múltiples sensores.

Soporte incorporado para grabación y repro-

Instalación simple.

ducción.

Gran cantidad de información disponible. Sistema de reconocimiento de gestos.

Desventajas

La versión 1.7 permite correr el Kinect SDK sobre máquinas virtuales. Licencia única para uso no comercial.

Instalación complicada.

Mayor consumo de recursos computacionales.

Sin soporte para audio y motor de inclinación.

Solamente para Windows 7 & 8(x86 y x64).

Necesita de una postura de calibración.

Sin soporte incorporado para grabación y reproducción.

Articulación no visibles no son estimadas.

Sin soporte para transmitir los datos sin procesar del sensor infrarrojo.

Compatible con varios sensores, aunque la configuración y enumeración es complicada.

Cuadro 1.3: Características de los controladores OpenNI y Microsoft SDK [4], [7].

Los controladores para el sensor Kinect están disponibles para el usuario en distintas modalidades de licencia, siendo los principales: OpenKinect, OpenNI y el oficial Kinect Windows SDK. Estos controladores funcionan en MacOSX10.7, Windows 7 y Ubuntu 11.10 [13], [16]. 1.3.3.1.

OpenKinect: Libfreenect Controladores

Estas librerías se encuentran bajo licencia de uso libre y están soportadas por la comunidad de software libre. Los controladores desarrollados permiten acceder a las cámaras obteniendo imágenes RGB y de profundidad, también se puede acceder al control del motor, acelerómetro y el led. 1.3.3.2.

OpenNI/NITE

Desarrollado por PrimeSense7 , este entorno permite acceder a los datos de profundidad, a las imágenes RGB de la cámara, al audio del arreglo de micrófonos. OpenNI se maneja bajo licencias de código libre y comerciales. NITE es el entorno de trabajo que permite acceder directamente a la esqueletización del usuario para el reconocimiento de posturas y gestos. Tiene licencia comercial. 7 Prime Sense es la empresa israelí que desarrolló el microprocesador capaz de adquir las imágenes en 3D y que trabajó en conjunto con Microsoft en el desarrollo del sensor Kinect [16].

15

CAPÍTULO 1. INTRODUCCIÓN 1.3.3.3.

Microsoft Kinect SDK

Este entorno de desarrollo es el oficial lanzado por Microsoft. Permite acceder al motor, al arreglo de micrófonos para grabar audio, a la cámara RGB y a los datos de profundidad de las imágenes; además da seguimiento hasta dos usuarios y reconoce a seis en un área aproximada de 10m2 . A diferencia de las anteriores el desarrollo de aplicaciones en este entorno está sujeto a las licencias de uso libre de Microsoft y sus políticas comerciales. En el cuadro 1.3, se muestra una comparación entre los controladores que más prestaciones ofrecen OpenNI y Microsoft SDK.

1.4.

Consideraciones

Los datos obtenidos por el sensor Kinect y procesados por el controlador oficial permiten establecer analogías y similitudes entre los métodos empleados para el análisis del movimiento humano. Ciertas características como la esqueletización y la reconstrucción tridimensional, se asemejan a la segmentación de las articulaciones del cuerpo y a ciertos modelos biomecánicos empleados por estudios clínicos de patologías relacionadas con el movimiento humano.

16

Capítulo 2

Diseño e Implementación del Sistema Para el diseño del Sistema de Análisis de Movimiento (SAM) es necesario considerar las limitaciones técnicas: distancia máxima de reconocimiento, resolución de los datos de profundidad , precisión de los datos del seguimiento y la velocidad de procesamiento computacional del sensor Kinect y su controlador1 . El espacio físico está sujeto a variables externas como la cantidad de luz natural que incide en el ambiente de trabajo, superficies reflectantes y absorbentes que afectan el retorno de los haces de luz emitidos por el emisor de infrarrojos e inmuebles que pueden generar falsos positivos en la esqueletización del usuario.

2.1.

Espacio Físico

El SAM consta de 4 dispositivos Kinect, que están dividido en dos arreglos independientes entre sí, y en función de los objetivos del análisis pueden ser redistribuidos acorde a las especificaciones aquí desarrolladas y validadas. El sistema está dividido en dos etapas de adquisición de datos: captura de movimiento y reconstrucción tridimensional.

2.1.1.

Etapa 1: Captura de Movimiento

La etapa de Captura de Movimiento está formada por dos Kinect ubicados a los extremos del área de trabajo cuyas vistas frontales están sobre el mismo eje y altura, figura 2.1.

Figura 2.1: Etapa 1. Perspectiva del espacio físico para la captura de movimientos del SAM.

1 En función del controlador, la precisión de los datos pueden variar. Para el sistema se ha escogido el controlador Kinect SDK 1.7 de Microsoft.

17

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA En esta etapa se usan las características del Skeleton Tracking que dan acceso a los datos X, Y , y Z para cada posición en el espacio de las articulaciones. Los valores máximos en metros de cada posición articular del esqueleto en los ejes espaciales son: X = [−2.2, 2.2], Y = [−1.6, 1.6] y Z = [0, 4]. Los ángulos de visión vertical y horizontal que se usan para determinar las dimensiones máximas de la área de trabajo2 de 43º y 57º respectivamente [14], [6]. En la figura 2.2 se muestra el área iluminada donde los datos del Kinect son estables. La plataforma o zona de trabajo tiene 2.0m de largo y 1.1m de ancho y se encuentra dentro de la zona en verde de la figura 2.2. La zona de 0.2m desde los bordes de la plataforma hacia el centro tiene inestabilidad para los datos de las articulaciones de las extremidades inferiores. Las siguientes zonas implican la perdida total de datos de las extremidades inferiores y la cabeza conservando cierta estabilidad en el centro y puntos circundantes. Los puntos ciegos de los dispositivos oscilan entre los 1.2m y 0.4m en función de la altura del usuario.

Figura 2.2: Etapa 1. Vista superior del espacio físico para la captura de movimiento.

Desde la posición Kinect 0 y Kinect 1 se considera el origen [0, −0.8, 0]para los valores adquiridos independientemente. Los valores adquiridos Y son compensados con 0.8m ya que el Kinect independientemente de su altura interpreta que sus coordenadas son [0, 0, 0] metros en X, Y y Z.[14]. Estos valores, usados para la esqueletización y extracción de las posiciones de las articulaciones, son complementarios.

Figura 2.3: Etapa 1. Vista lateral del espacio físico para la captura de movimiento.

La altura de los dispositivos con respecto al piso es de 0.8m a un ángulo de inclinación del motor de 0º, ver figura 2.3. Los infrarrojos incidentes en el piso son absorbidos por la plataforma que esta hecha de un material negro no reflectante, esta característica disminuye el ruido que afecta a la reconstrucción. 2 Los

ángulos de visión del Kinect se utilizan para establecer las zonas de estabilidad horizontales principalmente para la adquisición de trayectorias

18

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA

2.1.2.

Etapa 2: Reconstrucción Tridimensional

La etapa de Reconstrucción Tridimensional esta formada por un arreglo de dos dispositivos etiquetados como Kinect 2 y Kinect 3 cuyos planos frontales son paralelos y su altura es la misma con respecto al piso. Para esta etapa se consideran los ángulos de elevación del motor que oscilan entre −27º y 27º y el ángulo de visión vertical de43º [6]. La ubicación de esta etapa se encuentra a la mitad del espacio físico de la primera, figura 2.4.

Figura 2.4: Etapa 2. Espacio físico para la reconstrucción tridimensional del usuario.

La distancia a la que se encuentra cada Kinect con respecto al otro varía en función de la altura de la persona. La distancia mínima es 1.1m que corresponde al ancho de la plataforma de trabajo, y la máxima es 1.9m, figura 2.5.

Figura 2.5: Etapa 2. Vista superior para la reconstrucción tridimensional del usuario.

El rango de visión vertical impide la reconstrucción completa del usuario. Por tal motivo, la reconstrucción se realiza en dos fases: parte superior y parte inferior. Para el desarrollo de este proceso, es necesario conocer la estatura aproximada del usuario para realizar los cálculos que nos permite encontrar la distancia óptima para la reconstrucción, como se observa en la figura 2.6. 19

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA 2.1.2.1.

Cálculos

Para calcular la altura óptima del sensor con respecto al piso d y la distancia del mismo con respecto al usuario b, se necesita conocer la altura del usuario h más una distancia adicional de 0.1m3 . Sin esta constante, el modelo se genera solamente hasta los tobillos. Para encontrar una función que relacione la distancia y altura de los sensores con respecto a la estatura del usuario se analiza el esquema de la figura 2.6.

Figura 2.6: Etapa 2. Vista lateral para la reconstrucción tridimensional del usuario.

Así tenemos que la altura d y la distancia b en función de la estatura h corresponden a las ecuaciones4 2.1 y 2.2, donde c = 0.1 y φ = ±21.5º: 1 (h + c) 2   1 h+c b(h) = 4 tan(φ ) d(h) =

(2.1) (2.2)

El ángulo de elevación del servo motor para cada fase de reconstrucción es de θs para la superior y θi para la inferior, figura 2.6. Sea Θ el ángulo de elevación general del servo motor, entonces:   b Θ = arctan ∓φ (2.3) d reemplazando la ecuación 2.1 y 2.2 en 2.3 se tiene que: Θ = arctan (2 tan φ ) ∓ φ

(2.4)

al reemplazar el valor de φ en la ecuación 2.4 tenemos que Θ = ±16.73º ≈ ±17º, donde el valor positivo corresponde a θs y el negativo a θi . Al validar (sección 2.3) los resultados se ha descubierto que a los valores del ángulo de elevación se suman un rango de ∓5º para el ángulo φ positivo y negativo respectivamente5 .

3 Esta

distancia es un ajuste de la altura del usuario para obtener una reconstrucción completa. ángulo φ corresponde a la mitad del ángulo de visión vertical del dispositivo Kinect. 5 Esta variación guarda relación con la estatura del sujeto a ser reconstruido y la distancia de este con respecto a los sensores.

4 El

20

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA

2.2.

Adquisición de Datos

El diseño de la arquitectura del software para la adquisición de datos del SAM se divide en tres bloques principales que representan los procesos inherentes al manejo y uso de la información proporcionada por los dispositivos Kinect y las interfaces con las que el usuario interactúa en el sistema.

Figura 2.7: Diagrama de bloques general del Sistema de Análisis de Movimiento.

Captura de Movimiento: proporciona la información necesaria para calibrar y ajustar el sistema al medio, su función principal es adquirir y almacenar los datos de posición y ángulos de las articulaciones del sujeto de análisis, también transmite estos datos a Blender6 para la animación del modelo tridimensional del usuario. Reconstrucción: permite adquirir las capturas tridimensionales de los usuarios generando archivos Object (OBJ) o STereoLithography (STL) (son formatos de archivos que permiten definir geometrías en tres dimensiones) que luego son usados para el modelado en Blender 2.6x. Modelado y Animación Tridimensional: el bloque hace referencia a la animación y modelado tridimensional de las capturas de los usuarios desde las Captura de Movimiento y Reconstrucción a Blender. Para la animación se usa la comunicación OSC (Open Sound Control) que transmite la información en el espacio del sujeto [17]. Estos procesos tienen una jerarquía de funcionalidad independiente para fines específicos. Los procesos Captura de Movimiento y Reconstrucción 3D son mutuamente excluyentes7 y su interacción es bidireccional, mientras que Modelado y Animación Tridimensional recibe los datos de los dos procesos anteriores unidireccionalmente. Las características del hardware y software usados para el desarrollo del SAM están dentro de las recomendaciones mínimas propuestas por la página oficial de Kinect for Windows8 . Hardware:

• CPU: ◦ ◦ ◦ ◦

Procesador: Intel(R) Core(TM) i7-2600K CPU @ 3.40 GHz Memoria RAM: 16.0 GB Tarjeta de video: NVIDIA GeForce GT360 [NoDB] Sistema Operativo: Windows 7 Profesional x64-bit

• Kinect para Xbox360 y accesorios. Software: 6 http://www.blender.org

7 Tanto Captura de Movimiento como Reconstrucción 3D no funcionan juntos en la misma sesión por limitaciones de hardware y restricciones de protocolo. 8 http://www.microsoft.com/en-us/kinectforwindows/purchase/sensor_setup.aspx.

21

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA • Microsoft Visual Studio 2012 Express9 • Microsoft.NET Framework 4.5 • El Kinect for Windows SDK 1.7 (x86 o x64)10 • Ejemplos de aplicaciones en C# para Kinect for Windows: ◦ Kinect for Windows Developer Toolkit v1.7.011 ◦ DirectX Software Development Kit, June 2010 o versiones anteriores12 ◦ Ejemplos proporcionados por los libros de A. Jana y J. Web & J. Ashley13 • Blender 2.68

2.2.1.

Captura de Movimiento

La interfaz del proceso de Captura de Movimiento es también la interfaz principal del sistema y ofrece al usuario información sobre el estado de los dispositivos conectados. Al iniciar el programa principal por defecto se enciende el primer dispositivo conectado a los puertos USB del computador.

Figura 2.8: Diagrama de bloques general de la interfaz principal del sistema.

En la figura 2.8 se muestra la jerarquía de funcionamiento de la variables iniciadas. El nivel (b) muestra la región del constructor que ejecutan las variables que encienden al dispositivo conectado. Por defecto se inicia los datos del proceso Color Stream, nivel (c). En (c) se muestra las clases que determinan el estatus del hardware del dispositivo. Kinect Info entrega información acerca de la identidad del dispositivo y la dirección del puerto USB al que está conectado, estatus de conexión, Data Stream y el ángulo de elevación inicial del motor. Estos datos se muestran en Visualizar en el proceso (e). Las clases de Control Motor y Control General permiten manipular el ángulo de elevación del motor y encender o detener el dispositivo respectivamente, proceso (d). Los procesos de (e) facilitan al usuario acceder a los datos del Depth Stream y Skeleton Stream. En la figura 2.9 se muestra la interfaz principal de la aplicación que el usuario manipula para hacer uso de las características del SAM. La interfaz tiene un diseño simple e intuitivo que busca un rápido aprendizaje y acople de los usuarios a las herramientas y propiedades propuestas que engloban las necesidades principales de un sistema de análisis de movimiento. 9 http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-products

10 http://www.microsoft.com/en-us/kinectforwindows

11 http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx 12 http://www.microsoft.com/en-us/download/details.aspx?id=6812

13 Estos ejemplos están disponibles en: http://www.packtpub.com/support y http://www.apress.com/sourcecode respectivamente.

22

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA

Figura 2.9: Interfaz principal de la aplicación del Sistema de Análisis de Movimiento.

2.2.1.1.

Cámara

La cámara del Kinect tiene distintas resoluciones y formatos. Los formatos disponibles para las imágenes a color están codificadas como RGB, YUV o Bayer. Se puede usar una resolución a la vez [4], [14]; nivel (b) , (c) y (d) de la figura 2.10. Las resoluciones disponibles para cada formato son mostrados en el cuadro 2.114 .

Figura 2.10: Diagrama de bloques general para el control de la cámara del dispositivo.

El modo infrarrojo usa los datos de Infrared Stream que permite mejorar la calibración de la cámara observando el patrón de radiación infrarroja (IR) emitida por el sensor, con esta característica se 14 Para mas información visitar la página web: http://msdn.microsoft.com/en-us/library/jj131027.aspx para el formato de color y http://msdn.microsoft.com/en-us/library/jj663793.aspx para el formato infrarrojo.

23

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA establece la interferencia entre cada dispositivo. Hay que considerar que el censado del IR determina la profundidad a la que se encuentran sujetos y que cualquier interferencia puede provocar falsos positivos al momento capturar el movimiento. La opción de resolución del infrarrojo se muestra en el cuadro 2.1. Formato Color/Infrarrojo RGB YUV Bayer Infrarrojo

Resolución RgbResolution640x480Fps30 RgbResolution1280x960Fps12 YuvResolution640x480Fps15 RawYuvResolution640x480Fps15 RawBayerResolution1280x960Fps12 RawBayerResolution640x480Fps30 InfraredResolution640x480Fps30

Cuadro 2.1: Tabla de la resolución de los formatos de las imágenes disponibles en el sistema.

Adicionalmente se puede trabajar con imágenes de Color Invertido y Escala de Grises: nivel (d), estás características son útiles para métodos de fotografía mencionados en el capítulo 1 sección 1.2.2. Todas la imágenes pueden ser guardas en los distintos formatos y resoluciones, nivel (e). 2.2.1.2.

Cámara de Profundidad

La cámara de profundidad provee imágenes donde sus píxeles contienen la distancia de los objetos cercanos al plano de la cámara. Los datos de profundidad y de los usuarios segmentados en las imágenes están en milímetros15 , nivel (b) de la figura 2.11. La resolución de la cámara de profundidad por defecto es de 640x480.

Figura 2.11: Diagrama de bloques general para la cámara de profundidad del dispositivo.

En el nivel (c) se extrae la información de la imagen de profundidad en Información Imagen que contiene la información acerca de la distancia mínima y máxima que el Kinect puede censar, de los píxeles de las imágenes y la resolución de la imagen. Los Histogramas, como se indica en [14], muestran los objetos cercanos en una distribución de datos donde el pico más alto indica al objeto más cercano respecto a la cámara. Esta información es útil para determinar como el sujeto y los objetos del ambiente influyen en el sistema. Los histogramas se muestran en el nivel (e). En el nivel (d) se muestra los diferentes procesamientos de las imágenes de profundidad. Por defecto se tiene la imagen de profundidad en Escala de Grises, además se puede elegir entre Usuario Pixel que es una imagen binaria de blanco y negro que solo muestra al sujeto segmentado y el Color Map que asigna una matriz de color en función de la distancia del usurario u objeto a la cámara IR del dispositivo. Las imágenes generadas se pueden guardar para su posterior análisis, nivel (e). 15 Para

más información visitar la página web: http://msdn.microsoft.com/en-us/library/jj131028.aspx

24

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA 2.2.1.3.

Esqueletización

La esqueletización permite obtener la posición en el espacio de cada articulación del usuario así como seguir sus movimientos dentro del área de reconocimiento del dispositivo. En función de las capturas se pueden determinar trayectorias y ángulos de desplazamiento, velocidades y aceleraciones, ciclos de marcha, etc., según sea el enfoque del estudio realizado [18], [19]. Los valores adquiridos están sujetos al margen de error característico del sistema dado que éste usa estimaciones de la posición real de cada articulación, [20], [21]. En la figura 2.12 se muestra el diagrama de bloques general del proceso para capturar el movimiento de la personas. En el nivel (b) se activa SkeletonStream que por defecto carga los valores de los parámetros de suavizado para la visualización del esqueleto, cuadro 2.2.

Figura 2.12: Diagrama de bloques general para la esqueletización y captura de movimiento.

Los parámetros de suavizado permiten obtener una mejor resolución de los datos del esqueleto aumentando el consumo de los recursos de procesamiento del hardware. Por defecto se han establecido tres niveles de suavizado que pueden ser seleccionados previo el inicio de las capturas, nivel (c). Estos son16 : Bajo: se tiene pequeño suavizado con un mínimo retardo. Se filtran pequeños picos de información. Es útil para el reconocimiento de gestos en juegos. Medio: se obtiene una variación más significativa en el suavizado con un mayor retardo y filtrado de picos. Es bueno para sistemas que necesitan un buen suavizado y pocos saltos, sin embargo es poco recomendable para el reconocimiento de gestos. Alto: el suavizado es grande con un retardo igualmente mayor. Existe un gran filtrado de picos. Es ideal para sistemas donde un gran suavizado sea lo buscado. En desventaja se tiene un gran retardo y un lento reconocimiento de gestos. Los parámetros se activan por medio del método SkeletonStream.Enable (TransformSmoothParameters); sus valores se muestran en el cuadro 2.217 . más información visitar la página web: http://msdn.microsoft.com/en-us/library/jj131024.aspx pesar de las especificaciones que establecen el rango para el parámetro Smoothing de [0.0, 1.0], en la práctica este valor arroja un mensaje de excepción del tipo System.ArgumentOutOfRangeException que impide la compilación de la aplicación por lo que el valor recomendado tiene que ser < 1.0. 16 Para

17 A

25

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA Smoothing

Correction

Prediction

JitterRadius

MaxDeviationRadius

Rango Predeterminado

[0.0, 1.0] 0.5

[0.0, 1.0] 0.5

>= 0 0.5

>= 0 0.05

>= 0 0.04

Bajo Medio Alto

0.5 0.5 0.7

0.5 0.1 0.3

0.5 0.5 1.0

0.05 0.1 1.0

0.04 0.1 1.0

Cuadro 2.2: Tabla para los valores de los parámetros de suavizado preestablecidos para el SAM.

Establecidos los parámetros de suavizado se determinan los parámetros de la esqueletización: Sentado y Completo, nivel (d) de la figura 2.12. A continuación se estable las principales diferencias y similitudes de funcionamiento entre los dos modos de captura de movimiento [6], [4] y [14]18 : El modo Sentado captura la posición estimada o inferida de las diez articulaciones superiores del esqueleto (hombros, codos, muñeca, manos y cabeza) mientras que el modo Completo da seguimiento a las veinte articulaciones totales. En modo Completo el usuario debe pararse frente al dispositivo para ser reconocido en cambio en el modo Sentado se debe realizar algún movimiento para iniciar el seguimiento, puede reconocer usuarios en posición erguida. El modo Completo no es recomendado para capturar usuarios sentados. Se puede alternar entre los modos rápidamente reiniciando la esqueletización. La identificación del esqueleto del usuario se reasigna nuevamente. Se puede usar un solo modo con un mismo Kinect. Con diferentes Kinect se puede usar distintos modos. Ambos modos pueden dar seguimiento a dos usuarios de seis reconocidos por el sistema. El modo Sentado consume más recursos de procesamiento que el Completo. Para la adquisición de las trayectorias, el esqueleto se divide en siete secciones que corresponden al segmento HAT: Cabeza, Torso y Brazos Derecho e Izquierdo, y al Aparato Locomotor: Cadera, Pierna Derecha e Izquierda, figura 2.13.

Figura 2.13: (a) Segmentación del usuario, (b) ángulos entre las articulaciones.

18 Para

más información visitar la página web: http://msdn.microsoft.com/en-us/library/hh973077.aspx

26

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA Segmentación Sujeto Posición Articulaciones

Segmento

Hombro

Hombro

Brazo Derecho

Hombro Centro Hombro Derecho

Centro Hombro Derecho Codo Derecho

Hombro Izquierdo Muñeca Derecha

Mano Derecha

Centro (HCR) Hombro Centro (SCR) Hombro Derecho

Centro (HCL) Hombro Centro (SCL) Codo Derecho

Muñeca Derecha

Brazo Izquierdo

Hombro Izquierdo

Codo Izquierdo

Muñeca Izquierda

Mano Izquierda

Hombro Izquierdo

Codo Izquierdo

Muñeca Izquierda

Pie Derecho Pie Izquierdo

HAT

Cabeza Torso

Cadera Locomotor

Ángulos Articulaciones

Hombro

Pierna Derecha Pierna Izquierda

Cabeza

Centro

Cadera

Cadera

Cadera

Centro

Centro

Centro

Centro Cadera Derecha Cadera Izquierda

Derecha Rodilla Derecha Rodilla Izquierda

Izquierda Tobillo Derecho Tobillo Izquierdo

Derecho Cadera Derecha Cadera Izquierda

Izquierdo Rodilla Derecha Rodilla Izquierda

Inferior Tobillo Derecho Tobillo Izquierdo

Cuadro 2.3: Pertenencia de la captura de posición y ángulos entre las articulaciones del cuerpo.

Las articulaciones que forman parte de los segmentos pertenecen a la serie Joint del esqueleto generado con los datos de SkeletonStream [4], [14] y [21], tabla 2.319 . En el nivel (e), el algoritmo 2.1 muestra el método básico para adquirir la posición de cada articulación.

Algoritmo 2.1 Método usado para la captura de la posición de la cabeza del usuario. El lenguaje de programación usado es CSharp (C#). void sensor_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { Skeleton[] skeletons = null; using (SkeletonFrame frame = e.OpenSkeletonFrame()) { if (frame == null) return; skeletons = new Skeleton[frame.SkeletonArrayLength]; frame.CopySkeletonDataTo(skeletons); this.viewModel.IsSkeletonStreamEnabled = this.sensor.SkeletonStream.IsEnabled; } var x = skeleton.Joints[JointType.Head].Position.X, var y = skeleton.Joints[JointType.Head].Position.Y, var z = skeleton.Joints[JointType.Head].Position.Z; }

Con la posición se puede calcular la distancia entre cada articulación [22]. Para este cálculo se tiene que P = (p1 , p2 , . . . , pn ), Q = (q1 , q2 , . . . , qn ) y R = (r1 , r2 , . . . , rn ) son las posiciones en el espacio euclidiano Rn donde n es un número entero no negativo R+ de las articulaciones del esqueleto del usuario, por lo que d (P, Q) se muestra en la ecuación 2.5. s n

d (P, Q) =k PQ k=

∑ (pi − qi )2 ;

n = 1, 2, 3, . . .

(2.5)

i=1

19 Si se escoge el modo Sentado se debe considerar que los datos del torso los valores de la articulación Centro no son adquiridos.

27

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA Para el cálculo de los ángulos entre dos articulaciones se consideran tres puntos en Rn y se usa la siguiente fórmula con el producto punto [23], [24], [25]: n

∑ (pi − qi ) (qi − ri ) PQ · QR i=1 r cos (θ ) = =rn ; n k PQ kk QR k 2 2 ∑ (pi − qi ) ∑ (qi − ri ) i=1

n = 1, 2, 3, . . .

(2.6)

i=1

donde el método implementado en C# usa el arc cos de la ecuación 2.6 para obtener el valor de θ en grados20 .

Algoritmo 2.2 Método para el cálculo de la distancia entre dos articulaciones del esqueleto en el espacio Rn . El lenguaje de programación usado es CSharp (C#) [14]. private float GetJointDistance(Joint firstJoint, Joint secondJoint) { float distanceX = firstJoint.Position.X - secondJoint.Position.X; float distanceY = firstJoint.Position.Y - secondJoint.Position.Y; float distanceZ = firstJoint.Position.Z - secondJoint.Position.Z; return (float)Math.Sqrt(Math.Pow(distanceX, 2) + Math.Pow(distanceY, 2) + Math.Pow(distanceZ, 2)); }

Los valores de la distancia d (P, Q) y el ángulo θ no son constantes, aún si el usuario está estático, esto debido al método de estimación de la posición y a factores ambientales[20]. Las variaciones pueden disminuir o aumentar en función de los parámetros de suavizado del nivel (c) figura 2.12. El siguiente nivel (e) realiza la Transmisión Open Sound Control (OSC)21 para la animación del modelo tridimensional en Blender, el código implementado en C# se muestra en el algoritmo 2.3. Aquí también se realiza el guardado de la información recopilada en archivos formato Texto.

Algoritmo 2.3 Método implementado en Captura de Movimiento para la adquisición la posición del usuario para la Transmisión OSC hacia Blender . El lenguaje de programación usado es CSharp (C#). using (SkeletonFrame frame = e.OpenSkeletonFrame()) { if (cbxblender.IsChecked==true) { int i = 1; foreach (Skeleton skeleton in skeletons) { if (skeleton.TrackingState == SkeletonTrackingState.Tracked) { client.sendSkeletonData(skeleton, i); this.DrawSkeleton(skeleton); i++; } } } }

20 Para que θ se muestre en grados es necesario convertir de radianes a grados los valores entregados por defecto por la clase Math de C#.. 21 Open Sound Control es un protocolo que permite comunicar instrumentos de música, computadoras y otros dispositivos multimedia y fue pensado para compartir información musical en tiempo real sobre una red [26]. Para más información visitar la página web: http://opensoundcontrol.org.

28

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA

2.2.2.

Reconstrucción Tridimensional

El proceso de Reconstrucción Tridimensional es independiente de la Captura de Movimiento y para iniciarlo se debe presionar el botón Avatar3D de la figura 2.9, por lo que Sensor Kinect del nivel (b), el Kinect Info del nivel (c), Control General y Control Motor del nivel (d) y Visualizar del nivel (e) son los mismos métodos usados para la Captura de Movimiento con la particularidad de que en vez de un solo Kinect ahora se usan dos.

Figura 2.14: Diagrama de bloques general para la Reconstrucción Tridimensional del sujeto.

En la figura 2.15 se muestra la interfaz de usuario del proceso durante la reconstrucción tridimensional de la parte superior de una de los voluntarios para la validación del SAM, aquí se observa los ángulos de inclinación de los motores (pueden ser manipulados independientemente), los rangos de reconocimiento del área de reconstrucción y el estatus del proceso, la información de los sensores y las opciones de formatos disponibles para el guardado. Para guardar hay que pausar el proceso.

Figura 2.15: Interfaz de usuario para la Reconstrucción Tridimensional.

29

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA 2.2.2.1.

Kinect Fusion

Para generar un modelo tridimensional, el sistema usa la librería Kinect Fusion del Kinect SDK 1.7. Esta librería permite realizar el escaneo de objetos y crear modelos tridimensionales en tiempo real usando el sensor Kinect. Para obtener una reconstrucción de calidad, la posición de los Kinect deben estar acorde a la mostrada en la figura 2.4, nivel (b) y (d) de la figura 2.14 [27]22 . Las características del Kinect Fusion son: Rastreo: utiliza sólo los datos de profundidad del sensor. Se basa en la variación de la profundidad en cada fotograma para determinar las diferentes posiciones de los objetos en la escena. Volumen de Reconstrucción: se compone de pequeños cubos en el espacio, que se denominan vóxeles23 . El valor de la variable VoxelsPerMeter determina el tamaño que un vóxel representa a escala real. La combinación de vóxeles en los ejes X, Y y Z por metro permite especificar un volumen con diferentes tamaños y resoluciones. Kinect Fusion reconstruye el modelo mediante la integración de los datos de profundidad, la reconstrucción se realiza desde múltiples vistas. El área de reconstrucción se determina empleando el control de rangos de reconocimiento propios de la librería. Para cambiar la localización y orientación de una escena es necesario desplazar el sensor de tal manera que se fusionen los datos de profundidad con la posición de la persona u objeto y así poder realizar la reconstrucción del volumen. A continuación se describen las etapas de reconstrucción del modelo tridimensional: Primera Etapa: en esta etapa se realiza la conversión de la matriz de datos de profundidad sin procesar, los cuales se convierten en dos tipos de datos: depthFloatBuffer (datos de profundidad en coma flotante) y PointCloudBuffer (conjunto de puntos en un espacio tridimensional). Segunda Etapa: se calcula la posición y orientación de la cámara mediante algoritmos de alineación iterativos[28]. Existen dos algoritmos: • NuiFusionAlignPointClouds: se utiliza para alinear la nube de puntos24 calculados a partir de la reconstrucción con la nueva nube de puntos entrante generada con los datos de profundidad del Kinect. • AlignDepthToReconstruction: proporciona mayor precisión en el seguimiento de la cámara al trabajar con un volumen de reconstrucción. Sin embargo, esto puede ser menos robusto para reconocer los objetos que se mueven en una escena. Tercera Etapa: en esta última etapa se integran los datos de profundidad del sensor en una sola representación de volumen que corresponde al espacio que se encuentra al frente del dispositivo. Esta integración se hace de forma continua, identificando también cambios dinámicos en la escena. 2.2.2.2.

Modelo de Reconstrucción Tridimensional

La reconstrucción del usuario se realiza en dos fases: superior e inferior. Durante este proceso, el Kinect 2 adquiere los datos de la parte frontal y el Kinect 3 de la parte posterior del usuario, como se muestra en la figura 2.6. Estos datos se guarda en archivos con formato OBJ o STL, nivel (e) de la figura 2.14. Los cuatro archivos se importan en la plataforma Blender, la cual se emplea para realizar modelados tridimensionales. En esta plataforma se realiza el acople de las cuatro partes que forman el modelo de reconstrucción tridimensional del sujeto. El modelo acoplado tiene pérdida de datos por los puntos ciegos que no son iluminados por la nube de puntos y por lo general se encuentran en las partes laterales. Para rellenar estos espacios se usan las herramientas de rellenado y suavizado de Blender explicadas en el capítulo 4. más información visitar la página web: http://msdn.microsoft.com/en-us/library/dn188670.aspx. vóxel (del inglés volumetric píxel) es la unidad cúbica que compone un objeto tridimensional. 24 Una nube de puntos es un conjunto de puntos de datos en un sistema de coordenadas tridimensional que con frecuencia están destinadas a representar la superficie externa de un objeto [29]. 22 Para 23 El

30

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA

2.2.3.

Modelado y Animación Tridimensional

El proceso de Modelado y Animación Tridimensional recibe los datos de posición e identificación de las articulaciones del usuario. En la figura 2.16 se muestra la jerarquía de funcionamiento del proceso donde el servidor OSC, nivel (b), se encuentra dentro del programa principal de Captura de Movimiento recibiendo los datos del algoritmo 2.3. El método del proceso esta implementado en el algoritmo 2.4.

Figura 2.16: Diagrama de bloques general para la Transmisión OSC.

Algoritmo 2.4 Método implementado en Captura de Movimiento para la transmisión de los datos desde el servidor OSC hacia Blender. El lenguaje de programación usado es CSharp (C#). class OscSender { private static readonly TransportType TransportType = TransportType.Udp; private static readonly IPAddress MulticastAddress = IPAddress.Parse("127.0.0.1"); private static readonly int Port = 7110; private static readonly IPEndPoint Destination = new IPEndPoint(MulticastAddress, Port); private static readonly string AliveMethod = "/osctest/alive"; private static volatile bool sSendMessages; private static OscBundle sBundle; private static OscMessage sMessage; private static OscClient sOscClient; public void sendSkeletonData(Skeleton skeleton_data, int i) { IPEndPoint sourceEndPoint = new IPEndPoint(IPAddress.Loopback, Port); sBundle = new OscBundle(sourceEndPoint); sMessage = new OscMessage(sourceEndPoint, "/skeleton", sOscClient); foreach (Joint joint in skeleton_data.Joints) { OscMessage oscMessage = new OscMessage(sourceEndPoint, "/skeleton", sOscClient); oscMessage.Append(joint.JointType .ToString()); oscMessage.Append(i.ToString()); oscMessage.Append(joint.Position.X.ToString()); oscMessage.Append(joint.Position.Y.ToString()); oscMessage.Append(joint.Position.Z.ToString()); oscMessage.Send(Destination); } } }

31

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA El envío de la información al cliente OSC es mediante el protocolo User Datagram Protocol (UDP) con una dirección IP 127.0.0.1 y puerto de enlace 7110 con un método OSC Alive OSCtest. El cliente OSC se encuentra implementado en el script Natural User Interfaz (NUI) y el script Bloop lee los datos generados por el NUI para realizar la animación, éstos están desarrollados en Python25 . Ambos se activan como add-ons para Blender, nivel (c) y (d). El esqueleto del modelo en tridimensional y los movimientos realizados por el usuario se almacenan en archivos Biovision Hierarchy (BVH), nivel (e) [30]. BVH es un formato de archivo tridimensional que guarda los datos jerárquicos que representan los huesos del esqueleto, junto con el posicionamiento de cada una de sus partes en cada fotograma de la animación [31]. Este formato consta de dos partes, la primera sección detalla la jerarquía y pose inicial del esqueleto y la segunda sección de movimiento describe los datos del canal para cada muestra. 2.2.3.1.

Blender Bloop Station

Bloop es un add-on para Blender que permite al usuario animar personajes tridimensionales en tiempo real y combina captura de movimientos, títeres digitales26 y comandos de voz que controlan la configuración del sistema. El resultado es una forma de interacción que no interrumpe el flujo de trabajo de los usuarios y es ampliamente utilizado en las industrias de juegos, cine y televisión. En la figura 2.17 se observa la interfaz entre Captura de Movimiento y Blender con el add-on NUI y Bloop activados.[30].

Figura 2.17: Diagrama de bloques general para la Transmisión OSC.

Bloop se desarrolló con la versión descontinuada Kinect for Windows SDK Beta 2.0 por lo que sus líneas de código son incompatibles con la versión oficial Kinect for Windows SDK 1.7. En la versión oficial se introdujeron grandes cambios en la API (Application Programming Interface). Para cambiar la sintaxis del código de Bloop a la versión oficial es necesario considerar las siguientes diferencias entre la versión Beta y la oficial SDK 1.7 del controlador Kinect for Windows: Los espacios entre los nombres de las clases cambian de Microsoft.Research.Kinect.Nui a Microsoft.Kinect. El objeto que controla el flujo de datos cambia del tipo Runtime al objeto de tipo KinectSensor y permite grabar una matriz estática que contiene los datos de todos los sensores Kinect conectados al PC. 25 Phyton

es un software libre que posee estructura de datos de alto nivel y un enfoque simple pero eficaz a la programación orientada a objetos. Para más información visitar la página web: http://www.python.org 26 Para más información acerca de las animaciones en Blender visitar la página web: http://wiki.blender.org/index.

php/Doc:2.6/Manual/Your_First_Animation/2.Animating_the_Gingerbread_Man

32

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA KinectSensor permite la lectura del flujo de datos de la cámara, profundidad y del esqueleto. En la versión Beta este proceso no se puede observar. Por ejemplo, en la versión oficial se usa el objeto ImageFrame en vez del PlanarImage y crea una matriz de bytes para la generación de imágenes en sus distintos formatos y resoluciones. El suavizado de datos (Transform Smooth Parameters) es menos complejo en la versión Beta que en la oficial. Estos parámetros en la versión SDK 1.7 son habilitados durante el flujo de datos. Para la transmisión de datos a las articulaciones se tiene en cuenta los siguientes aspectos27 : Jerarquía: se establece una jerarquía de huesos en función de las articulaciones definidas por el sistema de seguimiento del esqueleto. Especificación: los huesos son especificados en relación a los huesos principales o “padres” y las articulaciones circundantes. Rotación: proporciona la cantidad de rotación en el espacio tridimensional y la dirección del hueso a partir de la matriz ósea. El eje cartesiano de referencia del objeto en el espacio es el hueso padre. Orientación Absoluta del Jugador: la rotación del centro de la cadera proporciona la orientación absoluta del usuario en las coordenadas espaciales de la cámara. 2.2.3.2.

Cuaterniones y Rotaciones

Las rotaciones son importantes para la animación virtual y la robótica ya que permite determinar los ángulos entre uniones o articulaciones, la orientación de los cuerpo y los parámetros de las cámaras bidimensionales o tridimensionales[32]. En general se considera que los cuaterniones son la mejor representación de la rotación tridimensional. Un cuaternión es una forma alternativa de representar rotaciones en cualquier eje y tienen ventajas sobre otros métodos, por ejemplo la rotación de ángulos de Euler28 tiene problemas de Gimbal Lock29 . Matemáticamente un cuaternión q es una extensión de los números complejos expresados como: i2 = j2 = k2 = ijk = −1. La rotación usando cuaterniones está definida como la suma de un escalar y el vector q = (q1 , q2 , q3 ) expresada en la ecuación 2.7 [33], [34]: q = q0 + q = q0 + q1 i + q2 j + q3 k

(2.7)

La representación con vectores unitarios de la rotación se define en la ecuación 2.8. El ángulo θ está en radianes alrededor del eje definido por el vector u = [ux , uy , uz ]: q = q0 + q = cos

θ θ + u sin 2 2

(2.8)

A continuación se muestran algunas características que favorecen el uso de los cuaterniones para la adquisición de las rotaciones y desplazamientos en la animación del modelo tridimensional implementado por medio de scripts programados en Python que funcionan como add-ons en Blender: La representación de una rotación es más compacta en un cuaternión (4 números) que en una matriz ortogonal (9 números). Es más sencillo de interpretar para el desarrollo de video juegos. Permite hacer rotaciones suaves. Robusto a errores de redondeo durante la concatenación de rotaciones. Las rotaciones se realizan mediante la multiplicación de cuaterniones. No hay Gimbal Lock. más información visitar la página web: http://msdn.microsoft.com/en-us/library/hh973073.aspx este método, para cada eje hay un valor que especifica la rotación alrededor de él, se tienen tres variables [x, y, z] en el espacio R3 donde la rotación se expresa como R = Rx (γ) Ry (β ) Rz (α). 29 Gimbal Lock es la pérdida de un grado de libertad que ocurre cuando dos de los tres ejes necesarios para las rotaciones tridimensionales son llevados a la misma dirección. 27 Para

28 En

33

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA

2.3.

Validación del Sistema

2.3.1.

Iluminancia

Dadas las condiciones del ambiente del SAM en las que no se tiene un control directo sobre el grado de incidencia de la luz natural se consideró definir un rango de horas laborables en el día en las que se pueda obtener los mejores resultados sin temor a interferencias en la captura de datos. Para definir la distribución de la luz ambiente en la zona de trabajo se procedió a medir la iluminancia [lux] desde el Kinect 0 como punto inicial [0m] hasta el Kinect 1 como extremo final [5.5m] a una altura de 0.8m con respecto al suelo y corresponde a la altura a la los dispositivos censan los datos. Se definen dos condiciones ambientales: con luz artificial (luminaria fluorecente) y con luz natural (ausencia de luz artificial)30 , los datos adquiridos se muestran en los cuadros A.1 y A.2 del anexo A respectivamente. En base a la experimentación se concluye que el rango horario para realizar la captura de movimientos es desde las 16:00 hasta las 20:00 horas, con preferencia hacia las horas con ausencia de luz solar. Esto concuerda con las recomendaciones dadas por parte del fabricante de que la luz natural afecta al desempeño de los sensores Kinect ya que en la práctica los haces luz solar que se reflejan sobre superficies lizas, ya sean espejos o ventanas, generan falsos positivos o que provocan inestabilidad al determinar la posición de las articulaciones del esqueleto. El rango horario se cumple sin importar si las capturas se realizan con luz artificial ya que esta no contiene todas las frecuencias de luz que afectan al sensor como si lo hace la luz solar. El en la figura 2.18 y 2.19 se muestran la iluminancia a lo largo de la zona de trabajo con iluminación artificial y natural respectivamente.

Figura 2.18: Niveles de Iluminancia Artificial en la Zona de Trabajo

Figura 2.19: Niveles de Iluminancia Natural en la Zona de Trabajo.

30 Los datos de luz natural se vieron afectados por la luz artificial emitida desde laboratorios adyacentes pero sus valores en la práctica no son significativos.

34

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA

2.3.2.

Histogramas

Mediante el análisis de la distribución de los datos de profundidad en la zona de trabajo se puede determinar la forma en que los objetos influyen en las capturas. La interfaz principal del usuario provee de la herramienta Histogramas para observar en tiempo real como es esta interacción de los sensores con el ambiente. En la figura 2.20 se muestran las imágenes de profundidad generadas por los sensores Kinect 0 y Kinect 1 y en la figura 2.21 se muestra la distribución de los histogramas de la Distancias Absolutas a la que se encuentran los objetos con respecto al sensor IR del Kinect, el método usado para la adquisición de estos valores se describe en [14]. d Para el cálculo de la distancia absoluta se tiene que kdk = m´ax(d) , donde d es la distancia de los objetos con respecto al sensor y m´ax (d) es el valor máximo de la distancia d en esa iteración del código usado para la adquisición de estos datos. En el cuadro A.3 se muestran los datos adquiridos para Kinect 0 y Kinect 1 en la disposición mostrada en la figura2.2 donde se observa que los valores de la mediana y la media, el primer y tercer cuartil se asemejan entre sí indicando que el método es robusto. Los valores de la desviación estándar son altos debido a los valores atípicos presentes en los datos adquiridos. En promedio la media y la desviación estándar para el Kinect 0 y Kinect 1 son µk0 = 84,µk1 = 129, y σk0 = 20, σk1 = 22 respectivamente.

Figura 2.20: Imágenes de profundidad en el ambiente de trabajo sin usuario.

Figura 2.21: Distribución promedio de la distancia absoluta de los objetos en el ambiente sin usuario.

La distribución de los datos en el ambiente de trabajo se ven alteradas con la presencia del usuario llevándola hacia la izquierda de la distribución mostrada en la figura 2.21, las barras con mayor acumulación de datos representan al usuario, el resto de mucha menor magnitud a los objetos cercanos al sensor Kinect. Al igual que los datos anteriores la distribución se ve afectada por los valores atípicos 35

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA del sistema. Para realizar el análisis de la distribución se escogió al azar cinco voluntarios que permanecieron estáticos en el centro de la zona de trabajo. Los valores promedio de la media y la desviación estándar para el Kinect 0 y Kinect 1 son µk0 = 33, µk1 = 29 y σk0 = 8, σk1 = 8 respectivamente y se muestran en las distribuciones de la figura 2.23.

Figura 2.22: Imágenes de profundidad en el ambiente de trabajo con usuario.

Figura 2.23: Distribución promedio de la distancia absoluta de los objetos en el ambiente con usuario.

En las figuras 2.24 y 2.25 se muestran los boxplot del cuadro A.4 donde se aprecian los valores mínimos y máximos, el primer y tercer cuartil, la mediana o valor central y los valores atípicos de los datos adquiridos. Aquí se observa que la distribución por lo general está desplazada e inclinada hacia la izquierda para todos los usuario para cada uno de los sensores, lo que corresponde con la distribución promedio mostrados en los histogramas de la figura 2.23. Los valores atípicos si bien repercuten en el cálculo de la media y la desviación estándar, no implican que la interpretación de los histogramas como indicadores de la distribución de la distancia de los objetos y el usuario en el ambiente de trabajo sea errónea. Nuestro análisis se basa fundamentalmente en el estudio de valores estadísticos robustos como son la mediana y los cuartiles de cada boxplot de los usuarios participantes en el experimento. Hay que considerar que si bien los histogramas mostrados aquí no guardan mucha similitud en referencia a los dados por el sistema en tiempo real, los patrones de la figura 2.23 son válidos. El análisis de datos acumulados para encontrar el patrón de los histogramas corresponde a la adquisición de n = 110000 muestras adquiridas para cada uno de los cinco experimentos para los cinco usuarios.

36

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA

Figura 2.24: Distribución de datos de distancia absoluta kdk del cuadro A.4 (Kinect 0).

Figura 2.25: Distribución de datos de distancia absoluta kdk del cuadroA.4 (Kinect 1).

2.3.3.

Entropía

Para determinar el patrón de incidencia de los infrarrojos sobre el ambiente de trabajo con y sin usuario se usa el análisis de la entropía de las imágenes infrarrojas31 adquiridas en el nivel (c) del proceso Color Stream mostrado en la figura 2.10. La entropía es la medida de la aleatoriedad de una señal transmitida, es decir determina la incertidumbre que lleva su información. Se mide en bits y define la cantidad de información contenida en la fuente de transmisión a partir de la información particular de cada salida. Si todas las salidas tiene la misma probabilidad, la entropía será máxima. La ecuación 2.9 muestra el cálculo para la entropía E [35]: E = − ∑ pi log (pi )

(2.9)

donde pi contiene los datos del histograma de la imagen infrarroja. Al calcular la entropía del ambiente de trabajo obtenemos el nivel de aleatoriedad de las rayos infrarrojos los cuales nos indican las zonas reflectantes y absorbentes del sistema. En la figura 2.26 se 31 Las

imágenes infrarrojas por defecto se crean en escala de grises.

37

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA muestra que la mayor concentración de bits se da en los emisores de los infrarrojos de los sensores y en la parte central de la plataforma de la zona de trabajo. La imágenes fueron adquiridas dentro del rango horario con presencia de luz natural, esto se puede observar en la imagen generada por el Kinect 1 en la esquina superior donde hay una gran acumulación de datos cercanos al máximo de bits de la escala de medición.

Figura 2.26: Valores de la entropía para el ambiente de trabajo sin usuario Kinect 0 y Kinect 1.

La entropía con usuario se muestra en la figura 2.27, y se observa que la acumulación de datos generados por el patrón IR se concentran principalmente en el usuario. Esto implica que los datos adquiridos para la esqueletización y por ende la captura de movimiento son confiables, ya que la ausencia de superficies reflectantes evita los falsos positivos. Hay que observar que los datos de la cabeza que entrega el Kinect 1 se ven afectados por el cabello negro de los usuarios32 como se aprecia en la acumulación de bits de la figura 2.27 que ronda desde los 0 hasta los 0.5 bits, esta información nos ayuda a determinar los parámetros de suavizado y así poder reducir la inestabilidad de las coordenadas de la posición. La vestimenta que se recomienda (y que fue usada para la obtención de las imágenes IR) para los usuarios deben ser ajustadas al cuerpo y de materiales no absorbentes, ya que mejoran considerablemente la resolución de la captura de movimiento y la reconstrucción tridimensional.

Figura 2.27: Valores de la entropía para el ambiente de trabajo con usuario (Kinect 0 y Kinect 1).

32 No todos los tipos de cabello son iguales, por ejemplo los usuarios con cabello claro muestran un menor rango pérdida de información.

38

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA

2.3.4.

Rangos de Estabilidad

2.3.4.1.

Captura de Movimiento

Los valores de distancias mostradas en el cuadro 2.4 y observadas en la figura 2.28, representan los rangos de estabilidad para la captura de movimiento donde las variables analizadas son: la distancia u del Kinect con respecto a la plataforma donde los valores presentan inestabilidad en las extremidades inferiores y la cabeza, y u1 implica la pérdida total de los valores de las posiciones de las articulaciones; la distancia v representa la distancia de máxima de estabilidad y que corresponde al largo de la plataforma de la zona de trabajo; y el valor de distancia w que es el rango de neutral dentro y fuera de la plataforma. Estas variables cambian en función de la estatura del sujeto33 . Las medidas del largo de la zona trabajo del SAM es de 5.6m y el ancho de 2.6m.

Figura 2.28: Vista superior de los rangos de reconocimiento para el Kinect 1.

Kinect 0

Dispositivo

Usuario 1 2 3 4 5

Kinect 1

Media DE IC 95 %

Media DE IC 95 %

1 2 3 4 5

Rangos de Estabilidad y Reconocimiento Estatura u[m] v[m] w[m] 1.51 1.80 1.80 0.40 1.54 1.80 1.80 0.40 1.70 1.80 1.80 0.40 1.72 2.20 1.40 0.40 1.73 2.40 1.40 0.40 2.00 1.64 0.40 0.28 0.22 0.00 [2.25, 1.75] [1.83, 1.45] − − − 1.51 1.80 1.80 0.40 1.54 1.80 1.80 0.40 1.70 1.80 1.80 0.40 1.72 2.15 1.45 0.40 1.73 2.15 1.45 0.40 1.94 1.66 0.40 0.19 0.19 0.00 [2.11, 1.77] [1.83, 1.49] − − −

u1 [m] 1.30 0.90 1.15 1.50 1.50 1.27 0.25 [1.49, 1.05] 1.00 1.00 1.15 1.35 1.35 1.17 0.18 [1.32, 1.02]

Cuadro 2.4: Rangos de estabilidad y reconocimiento de los usuarios para los sensores Kinect 0 y Kinect 1.

33 Los rangos de estatura guardan relación a la distribución mostrada en [8] para ciudadanos estadounidenses, ya que en el país no investigaciones ni bases de datos confiables para usarlas como fuente de referencia, sin embargo se estimó un estatura promedio para ambos sexos que se ajuste a la referencia.

39

CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DEL SISTEMA 2.3.4.2.

Reconstrucción

Para realizar la reconstrucción del modelo en tridimensional, es necesario determinar la altura del sensor con respecto al piso y la distancia entre el sujeto. Para agilitar la reconstrucción se propone el siguiente protocolo: Calcular la distancia mínima de reconocimiento, por defecto se establecen los valores de calibración del Kinect Fusion entre 0.35 para el mínimo y 1.0 a 1.5 para el máximo. Calcular la altura de los sensores en función de la estatura del usuario usando la ecuación 2.1. Calcular la distancia entre el sensor y el usuario usando la ecuación 2.2 y aplicar simetría para los dos sensores Kinect. Determinar los ángulos de inclinación del sensor para reconstruir la parte superior y la inferior del sujeto, por cálculos se establecen que los estándar del ángulo de elevación Θ es de ±17º. Para casos atípicos, donde no se reconstruyen completamente las extremidades inferiores (pies), se propone la adicionar un ángulo de compensación φ que oscila entre los ∓5º. En el cuadro 2.5 se muestran las distancias necesarias para la reconstrucción completa de varios voluntarios con un ángulo de elevación Θ = ±17º. Esto es compatible con el esquema de la figura 2.634 . Distancias Reconstrucción Tridimensional Usuario 1 2 3 4 5 6 7 8

h[m] 1.42 1.51 1.52 1.55 1.60 1.65 1.70 1.72

d[m] 0.76 0.81 0.81 0.83 0.85 0.88 0.90 0.91

d 2 [m]

0.38 0.40 0.41 0.41 0.43 0.44 0.45 0.46

b[m] 0.96 1.02 1.02 1.05 1.07 1.11 1.14 1.15

Cuadro 2.5: Distancias usadas para la reconstrucción de varios usuarios.

2.4.

Consideraciones

Para poder obtener un sistema robusto para la Captura de Movimiento y Reconstrucción Tridimensional se consideraron las recomendaciones del fabricante y la información bibliográfica disponible de los sensores y su programación en C#. La metodología seguida se enfoca en el diseño de la zona de trabajo acoplándonos a al ambiente de trabajo disponible, por lo que en la arquitectura del software se incluyen herramientas, que si bien no influyen en la captura de movimiento, nos permiten validar el sistema para cualquier ambiente y así determinar si es viable o no implementar el sistema. La arquitectura del software está orientada hacia una continua actualización y mejora del sistema de adquisición de datos de tal forma que no se vean afectados los procesos (Captura de Movimiento, Reconstrucción Tridimensional y Modelado y Animación Tridimensional) mostrados en la figura 2.7. Los métodos y clases del código están divididos y clasificados para facilitar la compatibilidad entre las nuevas versiones del controlador o una mejora de la interfaz de usuario. Para la validación del SAM se consideran variables que influyen directamente en la interacción de los sensores con el ambiente y los sujetos/usuarios en el arreglo propuesto e implementando. Para cualquier alteración de la disposición de los sensores, los valores mostrados pueden variar y no corresponder a los mostrados en este trabajo, sin embargo se puede afirmar que el protocolo propuesto es válido y fácil de reproducir. 34 El cuadro 2.5 muestra los valores calculados para la reconstrucción de los voluntarios ordenados según su estatura ascendentemente, siendo los valores repetidos obviados por no ser importantes para lo que se quiere demostrar en esta sección del capítulo.

40

Capítulo 3

Análisis de Captura de Movimiento 3.1.

Precisión

Para calcular la precisión del sistema al momento de estimar los valores de los ángulos entre las articulaciones y su posición espacial, bajo las condiciones ambientales de trabajo y el arreglo de sensores establecido, se mide la variación promedio de valores adquiridos durante un tiempo t cualquiera (para el experimento es de aproximadamente 30s) en un rango de oscilación definido por los parámetros de suavizado indicados en la tabla 2.2 del capítulo 2. El usuario permanece estático durante las mediciones. En los cuadros B.1 y B.2 del anexo B se observan las mediciones de la media, mediana y la desviación estándar para cada uno de los modos: Bajo, Medio y Alto. En base a la información estadística y las observaciones durante las experimentaciones, se establece que el parámetro que mejor resolución y estabilidad ofrece es el Medio1 .

3.1.1.

Espacial

En las figuras 3.1 y 3.2 se observan el grado de precisión para cada articulación en el espacio para el segmento HAT y el Aparato Locomotor, respectivamente. La diferencia en la precisión entre los dispositivos en el arreglo corresponde a la perspectiva que se tiene del sujeto, el Kinect 0 captura la postura frontal mientras que el Kinect 1 la posterior2 . Las posiciones de la Cabeza, el Centro, las Muñecas y las Manos presentan valores menores a la media general. En el caso de la Cabeza el cabello de los usuarios influye en la estimación, y para las Muñecas y las Manos el error es característico del controlador [20].

Figura 3.1: Precisión ( %) de la posición de las articulaciones para el nivel Medio del segmento HAT.

1 El parámetro Alto ofrece ventajas relativamente mejores en relación al Medio, pero hay que considerar el coste computacional que su utilización implica. 2 La recomendación es realizar la captura de movimiento en una postura frontal con respecto al sensor.

41

CAPÍTULO 3. ANÁLISIS DE CAPTURA DE MOVIMIENTO La variabilidad de la posición del Centro se debe a las características de la población de muestra tomada para el cálculo. Las articulaciones del Aparato Locomotor son estables para el Kinect 0, mientras que para el Kinect 1 la precisión varía conforme se va descendiendo hacia los pies. La media para el segmento HAT del Kinect 0 y Kinect 1 es µHAT K0 = 97.02 y µHAT K1 = 97.11 y la desviación estándar σHAT K0 = 3.795 y σHAT K1 = 3.467. Para el Aparato Locomotor se tiene que la media es µAL0 = 99.49 y µAL1 = 97.24 y la desviación estándar σALK0 = 0.3875 y σALK1 = 3.16.

Figura 3.2: Precisión ( %) de la posición de las articulaciones para el nivel Medio del Aparato Locomotor.

3.1.2.

Angular

El cálculo de los ángulos está en función de la posición espacial entre las articulaciones que forman el ángulo, por lo que cualquier perturbación afecta directamente en su valor. La tendencia mostrada en la figura 3.3 corresponde a la obtenida con la captura solo de la posición, existiendo variación entre las articulaciones de las Muñecas para el Kinect 0 y los Tobillos para el Kinect 1.

Figura 3.3: Precisión ( %) de los ángulos entre las articulaciones para el nivel Medio.

En la tabla B.2 del anexo B se muestran los datos estadísticos para la precisión de los ángulos de cada uno los parámetros usados por el SAM. La media para valores angulares es µK0 = 98.62 y µK1 = 98.53 y la desviación estándar σK0 = 2.216 y σK1 = 3.018 tanto para el Kinect 0 y Kinect 1 respectivamente. 42

CAPÍTULO 3. ANÁLISIS DE CAPTURA DE MOVIMIENTO

3.2.

Captura de Trayectorias

3.2.1.

Análisis de la Cadera Centro

Una de las aplicaciones a las que se puede orientar el SAM es el análisis de trayectorias de las personas. El análisis cinemático del sujeto de estudio se centra en la posición de la Cadera Centro del esqueleto capturado por los Kinect 0 y Kinect 1. Esta posición se encuentra entre la intersección de los planos usados como referencia, figura 1.1 del capítulo 1. Al tener una posición tridimensional se pueden visualizar los planos Transversal (XZ), Sagital o Lateral (Y Z) y Frontal (Y X) desde una perspectiva Anterior (Kinect 0) y Posterior (Kinect 1) así como su desplazamiento en el espacio en tres dimensiones. En el cuadro 3.2 se muestra la muestra de usuarios voluntarios para el análisis, la mayoría de sujetos están entre el primer quintil y la mediana de la distribución poblacional de referencia [8]3 .

Estatura

Medidas Antropomórficas (en metros) Hombres Mujeres 5% 50 % 95 % 5% 50 % 95 % 1.649 1.759 1.869 1.518 1.618 1.724

Cuadro 3.1: Estaturas de la población de hombres y mujeres, extracto del cuadro 2.5 (Chaffin et al., 2006)[8].

Edad Estatura

Estaturas (en metros) y Edad de los Sujetos del Estudio Hombres Mujeres 1 2 3 4 5 1 2 3 4 24 25 24 24 22 12 23 22 24 1.65 1.65 1.70 1.70 1.72 1.42 1.51 1.52 1.55

5 24 1.60

Cuadro 3.2: Estatura (en metros) y edades de los voluntarios para las pruebas del SAM.

A continuación se establecen el protocolo seguido y recomendado para la captura de la trayectoria: Se debe calibrar la altura y la incidencia de los rayos IR de los sensores en función de las condiciones del ambiente trabajo. El sujeto debe usar ropa ceñida al cuerpo y de materiales no absorbentes. Se eligen los parámetros de captura y se espera a que el sistema reconozca la posición estática del usuario, para poder iniciar con la adquisión. Los datos de posición espacial y la variación angular se guardan automáticamente en la carpeta desde donde se ejecuta el programa principal del SAM. Para el análisis de resultados, los archivos texto se exportan a programas especializados. Para las pruebas se pidió a los sujetos que se ubiquen a 1.8m de distancia del Kinect 1 con vista frontal hacia el Kinect 0, luego se les indicó que se desplacen directamente hacia el Kinect 0 y viceversa cronometrándose el tiempo de caminata sobre la plataforma. Los algoritmos de análisis de los resultados para los tres modos se implementaron en Octave/Matlab. En el cuadro 3.3 se muestra la correlación entre los valores de los ejes [x, y] para cada sujeto, el análisis se centra en los modos Bajo y Medio ya que la resolución y el coste computacional son mejores en relación al modo Alto. Los valores de los ejes xb y xm son valores del mismo evento independientes entre sí. Para el cálculo de la correlación, primero se obtienen los coeficientes de un polinomio de cuarto grado que se ajuste a las curvas de los ejes, ecuación 3.1 [36], esto es útil para disminuir el error provocado por el sesgo en la discretización de los datos, luego se mide la correlación entre los 3 No existen datos confiables acerca de la estatura en el país, pero inferimos en base a la observación y datos empíricos que los sujetos masculinos y femeninos están dentro de la media nacional.

43

CAPÍTULO 3. ANÁLISIS DE CAPTURA DE MOVIMIENTO polinomios de ajuste de los ejes correspondientes para cada modo Bajo y Medio del Kinect 0 y Kinect 1. Con la correlación se puede inducir el grado de precisión de los datos, cuando es cercana a 1 o −1 indica un alto grado de acierto con una proporcionalidad directa o inversamente proporcional, mientras que una cercana a 0 indica una débil o nula relación [36]4 . f (x) = p1 xn + p2 xn−1 + . . . + pn x + pn+1

(3.1)

donde n = 4, para los datos de nuestro sistema.

Correlación Entre los Valores del Modo Bajo y Medio Hombres Kinect 0

Mujeres Kinect 0 Kinect 1

Kinect 1

Modo

Bajo # 1

Medio

2 3 4 5

Ejes

xb

yb

xb

yb

xb

yb

xb

yb

xm ym xm ym xm ym xm ym xm ym

0.45 − 0.96 − 0.39 − 0.91 − 0.91 −

− 0.98 − 0.92 − 0.90 − −0.81 − 1

0.56 − 0.96 − 0.54 − 0.98 − −0.52 −

− 0.89 − 0.92 − 0.98 − 0.87 − 0.09

0.91 − 0.96 − 0.39 − 0.91 − 0.45 −

− −0.81 − 0.92 − 0.89 − 0.99 − 0.98

0.98 − 0.96 − 0.53 − 0.52 − 0.56 −

− 0.87 − 0.92 − 0.98 − 0.09 − 0.89

Cuadro 3.3: Correlación R entre los ejes [x, y] del modo Medio y Bajo del Kinect 0 y Kinect 1.

# 1

Kinect 0

2

3

4

5

Correlación R entre el Kinect 0 y Kinect 1 modo Medio Kinect 1 Hombres Mujeres xm ym zm xm ym xm ym zm xm ym zm xm ym zm xm ym zm xm ym zm

−0.27 − − −0.77 − − −0.69 − − 0.84 − − −0.98 − −

− 0.73 − − −0.86 − − 0.93 − − 0.23 − − 0.85 −

− − −0.88 − − −0.94 − − −0.92 − − −0.99 − − −1

−0.53 − − −0.32 − − −0.74 − − −0.92 − − −0.28 − −

− 0.93 − − −0.84 − − 0.69 − − 0.01 − − 0.83 −

zm − − −0.88 − − −0.93 − − −0.91 − − −0.92 − − −0.93

Cuadro 3.4: Correlación R entre los datos del Kinect 0 y Kinect 1.

4 El valor de la correlación no necesariamente indica que las cuervas sean iguales, pero sirve como un fuerte indicador del comportamiento de las mismas.

44

CAPÍTULO 3. ANÁLISIS DE CAPTURA DE MOVIMIENTO Las correlaciones para el modo Medio muestran que los datos de la cadera centro corresponden a un mismo patrón de movimiento. Hay que considerar que el desface y el efecto espejo afectan los resultados por lo que se recomienda trabajar con valores absolutos en los ejes x e y para visualizarlos en las gráficas, los valores de correlación no se ven afectados. El eje z siempre es positivo e inversamente proporcional en relación directa entre los dispositivos, cuadro 3.4. La correlación de zm en general es negativa y cercana a 1, los valores de posición en este eje disminuyen para el Kinect 0 y aumentan para Kinect 1 linealmente.

Figura 3.4: Capturas de movimiento del grupo usuario 1 hombres, en cada uno de los modos .

45

CAPÍTULO 3. ANÁLISIS DE CAPTURA DE MOVIMIENTO

En las figuras 3.4 y 3.5 se muestran las trayectorias capturadas en los planos del modelo cinemático para los usuarios 1 y 2 del grupo de hombres y mujeres respectivamente. En las curvas se observan las formas sinusoidales del desplazamiento tanto para el plano transversal como para el lateral. En el plano frontal las curvas generadas son producto de la oscilación de los ejes y sirven para definir los rangos de los mismos [37]. Las curvas mostradas corresponden a los modos Bajo, Medio y Alto.

Figura 3.5: Capturas de movimiento del grupo mujeres: usuario 2, en cada uno de los modos .

46

CAPÍTULO 3. ANÁLISIS DE CAPTURA DE MOVIMIENTO

El desfase de las curvas se explica por la variación de la caminata de la persona al momento de repetir los proceso para los distintos modos, sin embargo el patrón se mantiene. El modo Bajo y Medio tienen un comportamiento similar con una buena resolución. En Alto se tiene el mismo patrón y comportamiento que las anteriores pero su resolución disminuye ya que el número de muestra es menor y espaciadas. Los límites de los ejes x e y tienen un sesgo que está en función de las probabilidades correspondientes a la exactitud del sistema. Las capturas de los demás usuarios se muestran en el anexo B.2.1. El cuadro 3.5 muestra los valores mínimos, máximos y la media de los planos de cinemáticos del usuario 1 y 2 del grupo de hombres y mujeres respectivamente, capturados en el modo Medio. Estos valores indican los límites de la oscilación en cada plano para los datos de la cadera centro. Las perspectivas de los sensores en el ambiente de trabajo afectan sesgando la información, provocando un desplazamiento en los ejes verticales de los valores del Kinect 0.

H Usuario 1

Datos Estadísticos del Modo Medio

Transversal Lateral

M Usuario 2

Frontal Transversal Lateral Frontal

Mínimo

Mediana

Máximo

Media

Desviación Estándar

Kinect 0 Kinect 1 Kinect 0 Kinect 1 Kinect 0 Kinect 1

0.083 0.001 0.111 0.001 0.111 0.001

0.119 0.038 0.150 0.017 0.150 0.017

0.23 0.16 0.153 0.048 0.153 0.048

0.145 0.064 0.143 0.020 0.143 0.020

0.037 0.049 0.012 0.012 0.012 0.012

Kinect 0 Kinect 1 Kinect 0 Kinect 1 Kinect 0 Kinect 1

0.001 0.001 0.000 0.000 0.000 0.000

0.022 0.033 0.026 0.016 0.026 0.016

0.069 0.127 0.041 0.042 0.041 0.042

0.028 0.051 0.021 0.018 0.021 0.018

0.019 0.043 0.010 0.011 0.010 0.011

Cuadro 3.5: Estadística de los valores en metros [m] del Kinect 0 y Kinect 1 de la Cadera Centro en modo Medio.

Figura 3.6: Capturas de movimiento del grupo hombres: usuario 2, para el modo medio desde el Kinect 0 y Kinect 1.

47

CAPÍTULO 3. ANÁLISIS DE CAPTURA DE MOVIMIENTO

Para el Usuario 1 Hombres, la media µmk0 = 0.026 y µmk1 = 0.016 nos dan un sesgo en el eje vertical del plano Frontal de 0.01m para el Kinect 0 con una desviación estándar media de µ¯ mk0k1 = 0.012. El sesgo medio para los planos Transversal y Lateral es de 0.102m. Para el Usuario 2 Mujeres, la media µmk0 = 0.021 y µmk1 = 0.018 nos dan un sesgo en el eje vertical del plano Frontal de 0.081m para el Kinect 0 con una desviación estándar media de µ¯ mk0k1 = 0.0105. El sesgo medio para los planos Transversal y Lateral es de 0.0295m.

Figura 3.7: Capturas de movimiento del grupo hombres: usuario 2, para el modo medio desde el Kinect 0 y Kinect 1.

Con los datos del desplazamiento, mediante el uso de métodos numéricos se pueden calcular su primera derivada que representa la curva de velocidad y la segunda derivada que es la aceleración del sujeto en una escala de tiempo, cuadro 3.6. Se calcula los coeficientes del polinomio de cuarto orden que se ajusta de curva para el desplazamiento en el eje z en función del tiempo. El tiempo se extrae de los valores cronometrados y se genera un vector del mismo tamaño que las muestras adquiridas. Cinemática: Desplazamiento [m], Velocidad [m/s] y Aceleración [m/s2 ] Kinect 1 → Kinect 0 # zk1→k0 tk1→k0 vk1→k0 tk1→k0 ak1→k0 tk1→k0 Hombres 2 3.127 1.594 2.126 1.461 1.776 1.926 Mujeres 2 3.016 1.52 2.919 1.28 2.661 1.76 Cuadro 3.6: Valores de desplazamiento, velocidad y aceleración en las intersecciones de las curvas del Kinect 0 y Kinect 1.

Los polinomios del desplazamiento para el usuario 2 hombres se muestra en la ecuación 3.2 y 3.3 y para el usuario 2 mujeres en las ecuaciones 3.4 y 3.5, en el mismo sentido de dirección de movimiento: desde el Kinect 1 al Kinect 0. Ecuación de desplazamiento para el usuario 2 hombres: 48

CAPÍTULO 3. ANÁLISIS DE CAPTURA DE MOVIMIENTO zk0 (t) = 0.3132t 4 − 1.566t 3 + 1.9122t 2 − 0.7114t + 3.7082

(3.2)

zk (t) = 0.0125t 4 − 0.0997t 3 − 0.2641t 2 + 0.6129t + 1.8029

(3.3)

Ecuación de desplazamiento del usuario 2 mujeres: dK0 = 0.2535x4 − 1.1723x3 + 1.1894x2 − 0.3791x + 3.6497

(3.4)

dK1 = −0.3538x4 + 1.4435x3 − 1.7733x2 + 1.474x + 1.7372

(3.5)

La figura 3.8 muestran el comportamiento de las curvas de desplazamiento, velocidad y aceleración para los dos sensores observando la relación de proporcionalidad inversa de los mismos. Los valores puntos de intersección que se muestran en el cuadro3.6 representan el valor medio de cada uno de los cálculos. Estos datos concuerdan con los expuestos por [11] donde la velocidad media de desplazamiento de una persona oscila entre los [1.5, 3.0][m/s] desde la caminata hasta el trote lento.

Figura 3.8: Desplazamiento, velocidades y aceleraciones estimadas por los Kinect 0 y Kinect 1 del usuario 2 hombres (a) y mujeres (b).

3.2.2.

Validación de Estadística

Para el análisis estadístico se parte de la hipótesis de que las medias x¯mk0 = x¯mk1 . Mediante el cálculo del t-test para dos variables independientes se determina la validez de nuestra hipótesis nula para un nivel de confianza de α = 0.05. En el cuadro 3.7 se muestra el cálculo del valor del p, el intervalo de confianza, el valor t − test, los grados de libertad de la distribución t y s que es el valor de la desviación estándar entre las variables independientes, ecuación 3.7. Las variables sk0 y sk1 son desviaciones estándar, y n1 y n2 el tamaño de las muestras de los ejes del SAM tanto para el Kinect 0 como el Kinect 1 en el modo medio. La ecuación 3.6 y 3.7 sirven para la validación el análisis de la hipótesis nula [36]. x¯mk0 − x¯mk1 t − test = r s2k0 n0

s s=

+

(3.6)

s2k1 n1

(n0 − 1) s2k0 + (n1 − 1) s2k1 n0 − n1 − 2

(3.7)

El valor de cambia entre h = [1, 0]. Cuando h = 1 la hipótesis inicial es nula, y h = 0 la hipótesis se válida. La desviación estándar s media para los ejes indica la variación del intervalo de confianza. Dado que el intervalo no contiene 0 se refuerza la idea de que la probabilidad de que las medias san iguales no sean producto de variaciones aleatorias que afecten la fiabilidad de los resultados.

49

CAPÍTULO 3. ANÁLISIS DE CAPTURA DE MOVIMIENTO

MujeresHombres

# 1

2

T-test para los Datos Entregados por el Kinect 0 y Kinect 1 h p CI t − test d f xmk0 | xmk1 ymk0 | ymk1 zmk0 | zmk1 xmk0 | xmk1 ymk0 | ymk1 zmk0 | zmk1

1 1 1 1 1 1

4.23x10−60 1.13x10−306 3.8x10−15 −1.29x10−5 1.01x10−33 3.34x10−5

[0.074, 0.091] [0.155, 0.161] [0.364, 0.594] [0.017, −0.044] [0.038, −0.030] [0.215, −0.586]

19.36 107.19 8.17 4.50 −15.35 4.965

419 419 419 167 167 167

s 0.043 0.015 0.587 0.042 0.014 0.582

Cuadro 3.7: Análisis del t-test entre las muestras en el modo Medio del Kinect 0 y Kinect 1 para el grupo hombres y mujeres.

Para nuestro análisis la hipótesis de que nuestros valores se encuentran en el 5 % de coincidencia se refuta. Lo que nos indica que hay una fuerte probabilidad de que nuestros valores coincidan en el intervalo del 95 % de la distribución normal. Por ende los ejes de las coordenadas de los Kinect 0 y Kinect 1 son válidos para analizar los patrones de la trayectoria del movimiento de la cadera. El cuadro B.3 del anexo B.2.2 muestra los resultados del t-test para todos los sujetos analizados con el SAM.

3.3.

Consideraciones

Al analizar los datos entregados por los sensores en el arreglo propuesto en el SAM se debe considerar que la información es una aproximación basada en probabilidades y que está sujeta a condiciones ambientales, indumentaria de los sujetos y calibración de los dispositivos. En este capítulo se ha determinado las características de la información que presentan el sistema para casos específicos de análisis como es el de la trayectoria humana en la caminata normal tanto para hombres como para mujeres, sin embargo el análisis se puede extender a cualquier aplicación en la que se necesite usar las coordenadas rectangulares de la posición de una de las articulaciones que presenta el sistema. Los métodos estadísticos como la correlación y el t-test validan la confiabilidad del sistema al usar los sensores como retroalimentación de la información adquirida.

50

Capítulo 4

Análisis del Modelado y Animación Tridimensional Las tecnologías de captura de movimiento se utilizan para la rehabilitación de lesiones, los cuales permiten ejercitar las extremidades sin tener algún dispositivo conectado y por medio de la realidad aumentada se crean interfaces que convierten al paciente en actor principal mediante la combinación de varios movimientos dentro del entorno virtual. Además, permiten el desarrollo de mejores simulaciones empleadas en producciones cinematográficas, aumentando las expectativas en las investigaciones orientadas hacia la mejora de las técnicas de animación. Las áreas de interés que se enfocan en estas tecnologías son: diseño digital y cine, juegos, medicina, deportes y seguridad en la industria [38].

4.1.

Generación del Modelo Tridimensional

La reconstrucción del usuario se realiza en dos fases: superior e inferior. Durante este proceso, el Kinect 2 adquiere los datos de la parte frontal, y el Kinect 3 de la parte posterior, la interfaz principal que manipula el usuario se muestra en la figura 2.15 del capítulo 2 en la sección 2.2.2 correspondiente a la Reconstrucción Tridimensional, estos datos se almacenan en cuatro archivos OBJ que brindan mejor resolución que los archivos STL. Estos archivos se importan a Blender 2.6x para realizar el modelado tridimensional donde se acoplan de las cuatro que forman el modelo del sujeto y se unen usando la herramienta Join Mesh, figura 4.1.

Figura 4.1: Acople de las cuatro partes del modelo tridimensional generado por el SAM.

51

CAPÍTULO 4. ANÁLISIS DEL MODELADO Y ANIMACIÓN TRIDIMENSIONAL El modelo acoplado presenta pérdidas de datos (espacios vacíos) en las partes laterales, para rellenar estos espacios se utiliza la herramienta Grab.

Figura 4.2: Modelo tridimensional procesado con las herramientas Sculpt Mode de Blender 2.68 del sujeto.

Existen datos que no pertenecen al modelo tridimensional y para eliminar estos datos se emplea la herramienta Snake Hook; antes de obtener el modelo final se realiza un suavizado a su estructura por medio de la herramienta Smooth, que se encuentra en el menú Object de Blender. El modelo final se muestra en la figura 4.2.

4.2.

Animación Tridimensional

La animación tridimensional requiere del esqueleto1 para que el modelo realice movimientos de dos formas: El primero consiste en el almacenamiento de las diferentes poses del modelo en distintos intervalos de tiempo. El segundo recibe los datos del Skeleton Stream que adquiere del sensor Kinect para generar movimientos rotacionales y desplazamientos en el modelo tridimensional.

4.2.1.

Construcción del Esqueleto

El esqueleto está formado por un conjunto de huesos que permiten el movimiento del modelo tridimensional. Las partes que lo constituyen son: Cabeza: es la articulación donde inicia el hueso. Cola: es la parte final del hueso. Existen dos métodos para la colocación de los huesos, en el primero cada hueso se incorpora individualmente, mientras que en el segundo se agrega un esqueleto completo; este método se denomina Rigging. 4.2.1.1.

Método Rigging

Rigging consiste en incorporar al esqueleto completo. Existen dos métodos, el primero requiere de la activación del add-on Rigify, y el segundo se importa un esqueleto de la base de datos de Blender usadas en la animación tridimensional. Al emplear la segunda opción se obtiene el esqueleto que se muestra en la figura 4.3. 1 En

Blender al esqueleto del usuario estimado por el SAM se le llama armadura.

52

CAPÍTULO 4. ANÁLISIS DEL MODELADO Y ANIMACIÓN TRIDIMENSIONAL 4.2.1.2.

Identificación de Huesos

Para identificar los huesos que forman el esqueleto se les asigna un nombre a cada uno. El esqueleto es simétrico, por lo que las configuraciones que se realizan son iguales para la parte izquierda y derecha. En la asignación de nombres se emplean las terminaciones .I y .D para simplificar el proceso de generación de movimientos. Por ejemplo, para mover los brazos se necesita realizar la configuración general brazo, al cual se agrega las terminaciones brazo.I y brazo.D, por lo que el proceso es rápido. Para visualizar los nombres en el método Rigging se activa la opción Names en el menú Armature.

Figura 4.3: Identificación de los huesos.

4.2.2.

Método Skinning Model

Skinning Model consiste en relacionar al esqueleto con el modelo tridimensional, figura 4.4, es decir se asigna vértices a los huesos de tal forma que los primeros obedezcan al movimiento de los segundos. Esto genera una deformación proporcional tanto en el esqueleto como en el modelo.

Figura 4.4: Método “Skinning Model”.

53

CAPÍTULO 4. ANÁLISIS DEL MODELADO Y ANIMACIÓN TRIDIMENSIONAL Para realizar este proceso se utiliza la opción With Automatic Weigthts del menú Armature Deform de Blender que genera grupos de vértex2 los cuales pertenecen a cada uno de los huesos. La asignación automática de los grupos de vértices se realiza de acuerdo a la cercanía que existen entre los vértices y los huesos, por lo que en general es necesario realizar modificaciones manuales ya que en un inicio se presentan errores, figura 4.5.

Figura 4.5: Proceso Armature Deform usado en Blender para corregir los errores de acople del modelo tridimensional con el esqueleto.

4.2.3.

Método Weights Painted Mode

Weights Painted Mode consiste en relacionar el hueso con la malla del modelo. Se lo utiliza para la creación de vértices o grupo de vértices y su funcionamiento se basa en el código de colores de ponderación3 que van de un rango de cero a uno: el cero se representa con el color azul, y el uno con el color rojo. Este método es empleado para suavizar el movimiento de las articulaciones seleccionadas usando el proceso por código de colores de ponderación. Al seleccionar un hueso, el grupo de vértex adquiere un color rojo que permite un mayor rango de movimiento y los que tienen color azul no participan en el movimiento. Los vértices relacionados con el movimiento adquieren una mezcla de colores. Este proceso se repite para cada uno de los huesos, como se observa en la figura 4.6.

Figura 4.6: Método Weights Painted Mode usado para el acople del modelo tridimensional con el esqueleto del sujeto.

2 Vertex

es una estructura de datos que describe un punto en el espacio bidimensional o tridimensional. código de colores de ponderación se explica en detalle en la página: http://wiki.blender.org/index.php/Doc: 2.6/Manual/Modeling/Meshes/Vertex_Groups/Weight_Paint. 3 El

54

CAPÍTULO 4. ANÁLISIS DEL MODELADO Y ANIMACIÓN TRIDIMENSIONAL

4.2.4.

Animación

Al terminar de aplicar los métodos Rigging, Skinning Model y Weigths Painted Mode, se puede empezar a manipular el modelo tridimensional como si fuera un títere, en función del movimiento de los huesos. Para realizar correctamente animaciones, es necesario tener en cuenta lo siguiente: Posición Inicial: esta posición es la de mayor utilidad para realizar animaciones por medio de la grabación de secuencias de poses. Se puede volver a colocar el esqueleto en la posición inicial al presionar Alt+R para quitar la rotación de los huesos, y Alt+G para quitar la traslación. De forma alternativa, el botón Rest Position (Posición de Descanso) del menú de Datos de Objeto, puede ser usado para mostrar temporalmente la posición original. Cinemática Inversa (Inverse Kinematic (IK)): la cinemática inversa se usa para modificar la posición de los huesos de un esqueleto con el fin de lograr una postura deseada. Este método consiste en definir primero la posición del último hueso de una cadena llamado efector final, y todos los huesos restantes de la cadena asumen una posición automática, lo cual es el resultado del cálculo que realiza el IK Solver4 . Esto permite posicionar con facilidad y precisión las manos y los pies al crear las animaciones. Cinemática Directa (Forward Kinematic (FK)): en el modo Pose se asigna la jerarquía principal a un hueso haciendo que el resto sigan el movimiento del mismo. Todos los huesos subsecuentes de la cadena no pueden ser tomados y movidos, solo se los puede rotar, este procedimiento es llamado Cinemática Directa. Usando la FK es posible hacer que el modelo tridimensional se mueva se definiendo las cuatro posturas diferentes que permiten formar las distintas fases de un paso. En la figura 4.7 se puede observar este efecto.

Figura 4.7: Animación final.

4 El IK Solver mantiene la cadena sin huecos, es decir encuentra matemáticamente la posición de todos los huesos de la cadena.

55

CAPÍTULO 4. ANÁLISIS DEL MODELADO Y ANIMACIÓN TRIDIMENSIONAL

4.3.

Comunicación OSC

La comunicación OSC emplean dos add-ons: NUI y Bloop. El primero pertenece a la categoría Animation y el segundo a Development. Estos add-ons están disponibles en la página web del proyecto The Blender Loop Station (Bloop)5 . Para establecer la comunicación mediante estos add-ons se requiere abrir el script “startup” de Bloop. Este script permite seleccionar las articulaciones que se desea mover. Al activar Bloop se empieza a recibir los datos del Skeleton Stream que proviene de la interfaz principal, figura 2.9 del capítulo 2, esta activación debe realizarse tanto en la interfaz como en el menú de Bloop en Blender. En el cuadro 4.1 se muestra el ID de los huesos que forman el esqueleto, las articulaciones que intervienen en la generación del movimiento de cada hueso y el segmento al que pertenecen. Es necesario indicar que en el movimiento de cada hueso siempre actúan dos articulaciones.

ID Huesos Cabeza Cuello Tórax Centro Hombro.I Antebrazo.I Brazo.I Mano.I Hombro.D Antebrazo.D Brazo.D Mano.D Muslo.I Pierna.I Pie.I Muslo.D Pierna.D Pie.D

Esqueleto del Sujeto en Blender Articulaciones para Generar Movimiento Cabeza & Cuello Cabeza & Cuello Cuello & Torso Torso & Cadera centro Cuello & Hombro.I Hombro.I & Codo.I Codo.I & Muñeca.I Muñeca.I & Mano.I Cuello & Hombro.D Hombro.D & Codo.D Codo.D & Muñeca.D Muñeca.D & Mano.D Cadera.I & rodilla.I Rodilla.I & Tobillo.I Tobillo.I & Pie.I Cadera.I & rodilla.D Rodilla.I & Tobillo.D Tobillo.I & Pie.D

Segmentos Cuerpo Superior

Brazo Izquierdo

Brazo Derecho

Pierna Izquierda

Pierna Derecha

Cuadro 4.1: Asignación del ID de los huesos del esqueleto en Blender.

Además, se tiene la opción de grabar todos los movimientos que realiza el sujeto con Start Recording. Antes de iniciar la captura de movimientos se determina el tiempo de grabación e ingresa este valor en el menú Timeline, en este menú se encuentran los controles de reproducción de los movimientos que se guardan.

4.4.

Almacenamiento Archivos BVH

Blender permite almacenar la jerarquía del esqueleto y los datos de movimiento mediante de la generación de archivos BVH, estos son útiles para el análisis de movimiento rotacional. A continuación se explica la estructura de estos archivos. Jerarquía y Pose Inicial del Esqueleto: aquí se encuentra la información de la jerarquía del esqueleto y su estructura que describe los huesos y los segmentos del cuerpo. Está formada por tres elementos: • Offset: muestra las coordenadas [x, y, z] iniciales. 5 The

Blender Loop Station (Bloop) disponible en la página web: http://dm.tzi.de/bloop/

56

CAPÍTULO 4. ANÁLISIS DEL MODELADO Y ANIMACIÓN TRIDIMENSIONAL • Channels: es el número y nombre de las variables que modifican la posición y rotación del hueso. • Joint: indica las derivaciones o huesos hijos a los que está unido. Además, indica el valor de las variables de rotación de los huesos que se miden siempre con respecto al hueso padre. En la figura 4.8 se muestra la jerarquía que presentan los huesos del esqueleto que se utiliza para el desarrollo de este proyecto.

Figura 4.8: Jerarquía de los huesos en los archivos BVH.

Datos de Movimiento: en esta parte, se guardan los movimientos que realiza el usuario. Los datos que se almacenan son: desplazamientos y rotaciones en los tres ejes [x, y, z]. También se almacenan el número de frames (fps)6 y la velocidad de reproducción. En la figura 4.9 se muestra las formas de onda que representan las rotaciones sobre los tres ángulos de la pierna derecha de una persona durante una caminata normal7 .

Figura 4.9: Datos de movimiento que se almacenan en los archivos BVH.

6 Frame: es el número de muestras que se toman por segundo. En este proyecto la velocidad de grabación es por lo general de 5 fps. 7 Fuente para descargar archivos BVH, página web: http://accad.osu.edu/research/mocap/mocap_data.htm

57

CAPÍTULO 4. ANÁLISIS DEL MODELADO Y ANIMACIÓN TRIDIMENSIONAL

4.5.

Consideraciones

Para obtener el modelo tridimensional que tenga los rangos característicos similares a los del sujeto es necesario considerar tres factores que influyen en la calidad de este modelo: la distancia existente entre los dispositivos y el sujeto, y el uso de una plataforma reflectante. Para reducir la existencia de información ajena al usuario en la reconstrucción tridimensional se usa la calibración de los rangos de reconocimiento. El arreglo de dispositivos permite adquirir los datos frontal y posterior del usuario con una cantidad mínima de pérdidas, al contrario de los laterales que tienen una alta pérdida de información porque se adquieren de forma indirecta. Con el uso de las herramientas de Blender, aquí propuestas, se procesan los datos de la reconstrucción del sujeto, aquí se acopla el modelo con el esqueleto y se anima con los datos generados en la comunicación OSC entre el Kinect y Bloop. El movimiento de la animación se guarda en archivos BVH permitiendo exportar y reproducir las capturas para su posterior análisis.

58

Capítulo 5

Resultados y Aplicaciones 5.1.

Protocolo de Experimentación

Para la experimentación del SAM se presentaron 10 sujetos voluntarios cuya población se divide en 5 hombres y 5 mujeres. Las estaturas de los sujetos se muestran en el cuadro 3.2 del capítulo 3 y se encuentran entre el primer quintil y la mediana del cuadro 3.1 del mismo capítulo. A continuación se detallan los factores que se consideraron para las etapas de captura de movimiento y reconstrucción tridimensional respectivamente.

5.1.1.

Captura de Movimiento

Para la definición del espacio físico se establecen dos parámetros de funcionamiento: • El número de dispositivos con los que se va a realizar el análisis. Se lo puede realizar con un sólo dispositivo o con dos trabajando simultáneamente. La ubicación de los dispositivos se observan en la figura 2.1 del capítulo 2. • La posición del usuario en la zona de trabajo. Para obtener mejores resultados el usuario se debe colocar en el centro de la zona de trabajo y usar ropa ceñida no reflectante ni absorbente. Antes de iniciar el proceso de captura de movimiento,se definen los modos de suavizado para los datos adquiridos. La selección de uno u otro nivel depende de la aplicación que se quiera realizar, las características de cada nivel se explican en la sección 2.2.1.3. Estos niveles son: • Bajo. • Medio. • Alto. Para la captura de movimiento del usuario se tienen dos opciones: • Modo Sentado • Modo Completo. Con los parámetros de funcionamiento definidos, se procede a realizar la captura de posturas y gestos. Se tiene dos formas de capturar los movimientos del usuario: • Captura de movimiento por secciones. • Captura de todas las articulaciones simultáneamente. La de captura de movimiento se almacenan en archivos Texto para su posterior análisis, estos poseen la información del desplazamiento en los tres ejes [x, y, z] y la rotación θ de cada una de las articulaciones del usuario. Este análisis se realiza empleando los scripts de suavizado, visualización y análisis de estadístico de las curvas implementado en Octave, Matlab y Gnuplot.

59

CAPÍTULO 5. RESULTADOS Y APLICACIONES

5.1.2.

Reconstrucción Tridimensional

Todo el proceso inicia con la medición de la altura de la persona ya esta determina las distancias del sujeto con respecto a los sensores. El usuario debe utilizar ropa ajustada para mejores resultados. Las distancias del Kinect hacen referencia a la ubicación que debe tener el dispositivo con respecto al piso y al usuario. Para el cálculo de estas distancias se emplean las fórmulas explicadas en el capítulo 2. En este punto se calculan los ángulos de elevación necesarios para cubrir las partes superior e inferior del sujeto. En la práctica se observó que por lo general para la parte superior se tiene un ángulo de elevación de 12º y −22º para la parte inferior. En el cálculo se tiene un valor de ±17°, por lo que la precisión de esta medida es de ∓5°. El usuario debe ubicarse en el centro de la plataforma y del arreglo de dispositivo 2 y 3. La postura del usuario debe ser erguida, con las manos y las piernas ligeramente separados, como se muestra en la figura. El tiempo de reconstrucción es un factor determinante para la calidad de la reconstrucción tridimensional. El tiempo promedio para obtener una optima reconstrucción es de 45s. Se tiene la opción de congelar temporalmente los archivos en la interfaz principal. Esto permite que el usuario pueda moverse mientras se guardan los archivos OBJ. Al tener los datos de la reconstrucción del usuario guardados, se procede a realizar el modelado y la animación de la reconstrucción tridimensional, este paso se desarrolla en un tiempo aproximado de una hora.

5.2.

Resultados Obtenidos

5.2.1.

Captura de Movimiento

El análisis de la precisión se determinan calculando la media, mediana y desviación estándar. Este análisis se realiza por separado para los segmentos HAT y Aparato Locomotor de cada dispositivo Kinect. En el segmento HAT se observa que en promedio, los valores de la media µHAT = 97.02 y de la desviación estándar σHAT = 3.795 del nivel Alto indican mayor precisión en la adquisición de los datos. Mientras que, en el Aparato Locomotor µAL = 99.49,σAL = 0.3875 los datos que pertenecen al modo Medio los de mejor precisión. Por medio de la experimentación, se han identificado los parámetros adicionales que se deben considerar, estos son: los costos computacionales y las alteraciones que se presentan en los datos. Al observar los resultados, se ha determinado que el modo Medio es el que presenta mejores prestaciones para gran parte de las aplicaciones que se relacionan con la captura de movimiento. La precisión es diferente para cada dispositivo, porque esta depende de la perspectiva a la que se encuentra el usuario, el margen de error característico de los controladores y las estimaciones incorrectas que se generan por el cabello. Por esta razón, como el Kinect 0 adquiere los datos de la postura frontal del usuario, presenta una cantidad mínima de estimaciones incorrectas y un margen de error reducido, por lo que muestra mejor resolución y estabilidad en el análisis. Por otra parte, el Kinect 1 presenta una gran cantidad de estimaciones incorrectas en la cabeza, muñecas, manos, tobillos y pies. Esto sucede por la interferencia del cabello y los errores de precisión en las extremidades al recibir los datos de la parte posterior del usuario. El cálculo de la correlación nos permite definir el porcentaje de similitud entre las capturas de los modos de un mismo Kinect y de dos distintos. El valor de p-value permite calcular la probabilidad estadística de la validez de los resultados de las capturas entre los sensores dentro de la distribución normal.

60

CAPÍTULO 5. RESULTADOS Y APLICACIONES

5.2.2.

Reconstrucción

Las pruebas realizadas durante la importación y acople de los archivos de la reconstrucción, no se aproxima al modelo original debido a las pérdidas de datos que existen los lados. Las herramientas del menú Sculpt Mode de Blender, permiten corregir la pérdida de datos rellenando las fisuras que existen en los lados para obtener un modelo exacto al usuario. Para una reconstrucción correcta se requiere que los datos importados almacenen solo la información del usuario ya que los objetos ajenos generan archivos pesados. Esto interfiere en el proceso de acople de las partes el usuario y del movimiento. En las figuras 5.1 y 5.2 se encuentran las reconstrucciones de los 10 usuarios a los que se realizó las pruebas.

Figura 5.1: Reconstrucciones de Usuarios Mujeres.

Figura 5.2: Reconstrucciones de Usuarios Hombres.

En la animación del modelo tridimensional se aplica el método del Weights Painted Mode que permite seleccionar las articulaciones otorgándoles un valor de acuerdo al código de colores de ponderación, los vértices se mueven de acuerdo a este código. Con Bloop es posible interactuar con el dispositivo Kinect mediante la comunicación OSC para que el modelo tridimensional se mueva de forma automática. Finalmente estos datos se guardan en archivos BVH para un posterior análisis.

5.3.

Aplicaciones del SAM

En la actualidad la tecnología del sensor Kinect se usa para el desarrollo de aplicaciones en diferentes campos que involucran el movimiento del cuerpo. El reconocimiento de patrones del cuerpo es inmediato, estos son almacenados en una base de datos para realizar cualquier análisis. Estas aplicaciones se las desarrolla en las plataformas de C-Sharp (C#) ó C++, además se han creado librerías que permiten la comunicación con Matlab y LabVIEW. A continuación se detalla los campos de aplicación:.

5.3.1.

Motion Capture (BVH)

5.3.1.1.

Animación

Se emplea en cine, televisión, entre otros. Con el sistema SAM, en la etapa de movimiento se pueden importar y animar modelos ya generado de personas, animales, personajes de ciencia ficción e incluso cosas1 . 1 Estas

animaciones, se utiliza con mayor frecuencias en el cine.

61

CAPÍTULO 5. RESULTADOS Y APLICACIONES 5.3.1.2.

Juegos

son aplicaciones que se han desarrollan en el entorno Microsoft XNA y sirven para el desarrollo de juegos en línea, además permite cargar modelos en bidimesionales y tridimensionales de una manera muy simple. Mediante los sistemas de análisis de movimiento, los creadores buscan mejorar las capacidades de los jugadores de una forma divertida. En la actualidad estos juegos han mejorado al incorporar la tecnología de Realidad Aumentada2 donde el jugador se sienta parte del entorno de juego, figura [39].

5.3.2.

Patrones Biométricos

5.3.2.1.

Rehabilitación

La idea central de la rehabilitación basada en realidad virtual es utilizar dispositivos de detección para capturar y evaluar cuantitativamente los movimientos de los pacientes en tratamiento con un seguimiento más preciso. Además, mediante la integración de la tecnología realidad virtual con los videojuegos, el objetivo es que los pacientes estén más motivados a participar en estas actividades físicas[40]. 5.3.2.2.

Biomecánica Ocupacional

En la actualidad se desarrollaran aplicaciones donde se almacenan los datos de los obreros llevando un registro de su trabajo de una forma automática. Esto permite observar, corregir esta postura y garantizar el bienestar del personal de trabajo, lo que representa una ventaja en el ámbito económico para la empresa porque es más barato implementar un sistema que ayude a prevenir lesiones a causa del trabajo que tener que indemnizar a un obrero por lesiones graves con un tratamiento costoso.

5.3.3.

Robótica

5.3.3.1.

Brazo Robótico:

Esta aplicación propone un nuevo esquema para la resolución de problemas del movimiento en tiempo real entre un brazo humano y un manipulador de robot, guardando y ejecutando las trayectorias que realiza el brazo humano, figura 5.3. Este sistema está teniendo gran auge en el desarrollo industrial, debido a que existen tareas que no pueden ser desarrolladas por su complejidad en un robot industrial. Mediante este sistema se busca ejecutar las acciones en conjunto con mayor eficacia y velocidad.

Figura 5.3: Brazo Robótico.

2 Realidad Aumentada: es la visión directa o indirecta de un entorno físico del mundo real, cuyos elementos se combinan con elementos virtuales para la creación de una realidad mixta en tiempo real.

62

CAPÍTULO 5. RESULTADOS Y APLICACIONES 5.3.3.2.

Robot Bípedo:

El cuerpo humano tiene ventajas cuando se utilizan los robots en entornos diseñados para los seres humanos, lo que facilita la comunicación multimodal con el ser humano y el aprendizaje de imitación. El RoboSapien es capaz de imitar casi por completo los movimientos de un ser humano, es controlado por un operador humano que presiona botones en un mando a distancia. Para eliminar este mando y hacerlo más eficiente, se guardan los movimientos, se los procesa y envía al robot, estos a su vez serán receptados e interpretados por el RoboSapien. El protocolo de transmisión permite aumentar o disminuir la precisión; el tiempo de ejecución puede ser o no en tiempo real.

5.3.4.

Seguridad de Sistemas Industriales

En la industria es necesario que existan sistemas de control, enfocados a la interacción humanorobot. Este sistema consiste en controlar el área de trabajo del robot, para permitir una interacción humano-robot eficaz. Una avanzada funcionalidad de un controlador de seguridad sería para detectar la presencia de los seres humanos al entrar en la célula robotizada y estimar su intención, mediante la visión cognitiva para detectar y seguir a los seres humanos, con el fin de generar una reacción eficaz de los robots. Una característica clave de la celda o célula robótica innovadora, es la eliminación de las barreras de seguridad que en el escenario industrial tradicional proporcionan una separación rígida entre las áreas ocupadas por los robots y los ocupados por los seres humanos, permitiendo que estas dos áreas formen una misma. Para la estimación de la intención del ser humano, se lo realiza por medio de la predicción de trayectorias, donde el humano seguirá ciertas trayectorias durante un intervalo de tiempo. Usando esta información, el sistema de control del robot puede estar al tanto de la situación actual y seleccionar el modo de interacción correcta tan pronto como la intención haya sido identificada con fiabilidad, aumentando la posibilidad de las acciones de seguridad concebidas [41].

63

Capítulo 6

Conclusiones y Recomendaciones A continuación se describen los resultados obtenidos. Para el desarrollo de este proyecto se seleccionó el modelo biomecánico de 7 segmentos que consta de dos elementos: segmento HAT y Aparato Locomotor. El modelo cinemático se basa en el estudio de los movimientos que realiza el cuerpo, para este análisis se emplearon los datos de los desplazamientos realizados sobre los planos: sagital, transversal y frontal. Además, se analiza las trayectorias descritas sobre cada uno de los ejes [x, y, z]. Los planos anatómicos también se utilizan en la etapa de reconstrucción, empleando el plano frontal y transversal para dividir el cuerpo del usuario en las siguientes partes: superior e inferior, anterior y posterior. Para la adquisición de datos se usan los dispositivos Kinect ya que sus características técnicas facilitan la captura del movimiento mediante el reconocimiento de posturas y la reconstrucción tridimensional para el modelo biomecánico. El diseño de la arquitectura del software para la adquisición de datos del Sistema de Análisis de Movimiento (SAM) se dividió en tres bloques principales que representan los procesos inherentes al manejo y uso de la información proporcionada por los dispositivos Kinect. Estos bloques son: Captura de Movimiento, Reconstrucción y Modelado y Animación Tridimensional. Los lenguajes de programación usados para el desarrollo del sistema son: C Sharp (C#) y Python. Para la captura de movimiento se necesita un ambiente controlado para adquirir los datos con una buena precisión y resolución. Los parámetros medidos son: la cantidad de luz incidente, el ruido provocado por las superficies reflectantes, inmuebles y objetos que se encuentren en la zona de trabajo. Para determinar las condiciones ideales de la zona de trabajo, se realizaron los análisis de Iluminancia, Histogramas y Entropía. El análisis de la Iluminancia, con luz natural y artificial, se utilizó para determinar el rango de horas laborables en las que el SAM adquiere la información con una gran probabilidad de acierto. Los Histogramas se usaron para calcular la interferencia de los objetos por medio de la visualización de la distribución de los datos de profundidad, y la Entropía se utilizó para el análisis de la incidencia del patrón de rayos infrarrojos sobre el ambiente y el sujeto. Los datos entregados por los sensores se almacenan en formatos Texto, OBJ y BVH. Para la Validación del Sistema se verificó que el ambiente no influya negativamente en la adquisición de la información. En la etapa de Análisis de Captura de Movimiento, se obtienen las trayectorias espaciales en metros y los ángulos entre las articulaciones en grados, estos valores se almacenan en archivos Texto. Para procesar la información se implementaron scripts en Matlab, Octave y Gnuplot para realizar el filtrado, suavizado y la visualización de las trayectorias en los planos cinemáticos. Para determinar la estabilidad y exactitud de los datos se calcula la media, mediana y la desviación estándar, para el grado de similitud y proporcionalidad se calcula la correlación de los ejes con respecto a la configuración de los parámetros en los tres modos del sistema en relación a los datos entre los sensores para distintos los sujetos de estudio. Los parámetros del modo Medio son los que mejores resultados ofrecen en función de la precisión y el rendimiento del SAM. En la etapa de Análisis del Modelado y Animación Tridimensional, las geometrías que forman el modelo tridimensional del sujeto se almacenan en archivos OBJ y el proceso de modelado consiste en rellenar fisuras, filtrar elementos, suavizar la textura y acoplar las cuatro partes que forman el modelo, y para la animación se usaron scripts programados en lenguaje Phyton para establecer la comunicación entre la interfaz principal y la plataforma Blender. La secuencia de movimiento del usuario se guardan

64

CAPÍTULO 6. CONCLUSIONES Y RECOMENDACIONES en archivos BVH, estos archivos son usados para análisis posteriores ya conservan la jerarquía del esqueleto y el intervalo de tiempo. Al analizar los resultados de la captura de movimiento se determinó que el dispositivo Kinect 0 entrega datos con mayor precisión, mejor rango de estimación, resolución y estabilidad, esto se debe a que la captura es de la postura frontal del sujeto. La cantidad de estimaciones incorrectas son menores a las del Kinect 1 ya que éste captura la postura posterior, y por ende independientemente del análisis que se desee realizar se debe tener en cuenta que la precisión de los datos de los sensores se ven afectadas por el plano de captura del sujeto. Las articulaciones en las que la posición presenta menor grado con confianza son la cabeza causadas por el cabello y en el final de las extremidades superiores e inferiores: manos y pies. Para tener una buena calidad en la reconstrucción el parámetro principal es la altura, con esta medida se realizan los cálculos para encontrar el valor del ángulo de elevación, necesario para reconstruir por completo al sujeto, este valor tiene un margen de calibración de ∓5º de ajuste en el ángulo del dispositivo. También, con la altura se calcula la distancia del usuario respecto al arreglo de los sensores. A menor distancia la reconstrucción es mejor pero se pierden datos, por lo que se realizó la reconstrucción en dos etapas: superior e inferior. Se considera que mientras mayor sea el tiempo, mejor es la reconstrucción. La postura del sujeto debe permanecer estática. Para eliminar los objetos ajenos a la reconstrucción se calibra el rango de reconocimiento del Kinect Fusion. Para la animación tridimensional se diseñó la interfaz principal orientada para facilitar la comunicación OSC con Blender. Mediante los add-ons Bloop y Nui se adquieren los movimientos capturados por el Kinect y los envían a Blender para que este interprete e imite estos movimientos de rotación calculados usando cuaterniones.

65

Apéndice A

Anexo A A.1.

Iluminancia

Iluminación Artificial Hora

Distancia 0.00

0.50

1.00

1.50

2.00

2.50

3.00

3.50

4.00

4.50

5.00

5.50

9 : 00 − 11 : 00

769.5

764.9

603.4

748.7

811.3

681.9

617.1

573.6

558.0

457.5

437.1

309.9

11 : 00 − 13 : 00

1098.4

843.7

728.7

735.2

770.0

690.1

634.0

612.8

589.5

568.0

453.5

342.1

14 : 00 − 16 : 00

678.1

701.1

641.8

688.0

694.9

713.0

581.3

579.6

576.2

546.8

447.0

323.7

16 : 00 − 18 : 00

651.9

607.0

627.4

654.7

679.1

627.4

617.0

597.0

576.0

556.4

449.5

323.5

18 : 00 − 20 : 00

517.8

558.2

560.3

612.1

633.8

598.5

551.6

562.2

553.1

517.3

409.0

291.1

Cuadro A.1: Valores promedio de iluminancia en la zona de trabajo con luz artificial [lux] durante distintas etapas del día. Las unidades de las distancias están en [m].

Figura A.1: Tendencia de los valores promedio de iluminancia en la zona de trabajo con luz artificial [lux] durante distintas etapas del día.

66

APÉNDICE A. ANEXO A Iluminación Natural Hora

Distancia 0.00

0.50

1.00

1.50

2.00

2.50

3.00

3.50

4.00

4.50

5.00

5.50

9 : 00 − 11 : 00

285.0

302.6

268.9

172.3

164.2

150.9

136.1

117.2

78.41

61.96

68.56

39.53

11 : 00 − 13 : 00

377.3

296.4

212.7

168.1

148.4

145.9

124.3

93.90

72.47

56.18

47.18

39.73

14 : 00 − 16 : 00

189.8

259.8

111.3

93.01

89.29

92.29

77.18

61.50

44.31

33.90

27.80

27.26

16 : 00 − 18 : 00

50.09

40.90

34.03

32.30

30.46

28.05

24.69

21.06

14.66

11.19

9.84

7.75

18 : 00 − 20 : 00

8.95

9.62

10.36

20.31

11.62

11.20

9.32

16.77

4.61

3.13

3.20

2.08

Cuadro A.2: Valores promedio de iluminancia en la zona de trabajo con luz natural [lux] durante distintas etapas del día. Las unidades de las distancias están en [m].

Figura A.2: Tendencia de los valores promedio de iluminancia en la zona de trabajo con luz natural [lux] durante distintas etapas del día.

A.2.

Histogramas Zona de Trabajo Sin Usuario Primer Tercer Mediana Cuartil Cuartil

Variable

Número Variable

Mínimo

Kinect 0

1 2 3 4 5

0.10 0.09 0.09 0.10 0.09

61.54 63.20 64.88 63.93 63.97

81.93 81.82 83.71 82.41 83.64

Kinect 1

1 2 3 4 5

0.17 0.16 0.15 0.16 0.16

127.85 108.66 104.50 107.88 112.05

156.67 136.00 132.32 134.66 137.69

Máximo

Media

Desviación Estándar

105.20 105.52 109.49 106.24 108.08

199 199 199 199 199

83.64 83.17 85.49 84.30 85.36

43.00 42.88 42.69 42.64 43.18

172.61 158.71 156.03 158.18 159.92

199 199 199 199 199

141.33 126.98 123.45 126.22 128.55

49.00 47.89 48.88 47.71 47.85

Cuadro A.3: Medición de la distancia absoluta (sin unidades) con referencia al Kinect 0 & 1 del ambiente de trabajo sin usuario.

67

APÉNDICE A. ANEXO A Zona de Trabajo Con Usuario Primer Tercer Mediana Cuartil Cuartil

Variable

Usuario

Mínimo

Kinect 0

1 2 3 4 5

0.10 0.08 0.13 0.19 0.21

20.39 13.52 24.50 23.90 23.73

26.93 18.65 31.62 30.98 30.51

Kinect 1

1 2 3 4 5

0.12 0.03 0.11 0.12 0.07

20.07 12.52 18.33 15.71 15.99

28.69 15.99 22.56 21.56 20.43

Máximo

Media

Desviación Estándar

41.60 34.48 45.91 45.31 42.6

165.74 156.26 162.1 165.54 186.87

32.37 25.36 36.43 35.69 34.86

16.47 16.55 16.73 16.99 15.80

49.68 28.32 39.42 39.15 34.61

159.28 198.61 175.99 153.84 158.45

35.93 22.82 29.89 28.22 27.18

19.95 15.77 17.09 17.04 16.48

Cuadro A.4: Medición de la distancia absoluta (sin unidades) con referencia al Kinect 0 & 1 en el ambiente de trabajo con usuario.

68

Apéndice B

Anexo B B.1.

Precisión Precisión Espacial

HAT

Kinect 1 Kinect 0

Variable

Parámetros Bajo

Medio Alto Bajo Medio Alto

Media

Mediana

91.32 97.02 97.42

97.61 98.95 98.15

91.33 97.11 97.92

96.55 98.67 99.24

Aparato Locomotor Desviación

Desviación

Media

Mediana

17.25 3.795 2.427

99.2 99.49 99.37

99.37 99.63 99.48

0.8918 0.3875 0.499

16.89 3.467 2.563

98.54 97.24 98.69

98.99 98.59 99.51

1.526 3.16 1.956

Estándar

Estándar

Cuadro B.1: Valores porcentuales de precisión ( %) de los ángulos entre las articulaciones estimados por el arreglo de Captura de Movimiento.

Figura B.1: Valores porcentuales de precisión ( %) de la posición [x, y, z] de las articulaciones en el arreglo de Captura de Movimiento para los parámetros de suavizados en Bajo del segmento HAT.

69

APÉNDICE B. ANEXO B

Figura B.2: Valores porcentuales de precisión ( %) de la posición [x, y, z] de las articulaciones en el arreglo de Captura de Movimiento para los parámetros de suavizados en Bajo del segmento Aparato Locomotor.

Figura B.3: Valores porcentuales de precisión ( %) de la posición [x, y, z] de las articulaciones en el arreglo de Captura de Movimiento para los parámetros de suavizados en Alto del segmento HAT y el Aparato Locomotor.

70

APÉNDICE B. ANEXO B Precisión Angular Parámetros

Media

Mediana

Kinect 1 Kinect 0

Desviación

Variable

Bajo

97.18 98.62 98.72

99.33 99.64 99.67

5.945 2.216 2.825

99.19 98.53 98.36

99.49 99.75 99.38

0.898 3.018 2.241

Medio Alto Bajo Medio Alto

Estándar

Cuadro B.2: Valores porcentuales de precisión ( %) de los ángulos entre las articulaciones estimados por el arreglo de Captura de Movimiento.

Figura B.4: Valores porcentuales de precisión ( %) de los ángulos entre las articulaciones estimados por el arreglo de Captura de Movimiento para los parámetros de suavizados en Bajo.

Figura B.5: Valores porcentuales de precisión ( %) de los ángulos entre las articulaciones estimados por el arreglo de Captura de Movimiento para los parámetros de suavizados en Alto.

71

APÉNDICE B. ANEXO B

B.2.

Captura de Trayectorias

B.2.1.

Cadera Centro

B.2.1.1.

Hombres

Usuario 2

Figura B.6: Capturas de movimiento del grupo usuario 2 hombres, en cada uno de los modos .

72

APÉNDICE B. ANEXO B Usuario 3

Figura B.7: Capturas de movimiento del grupo usuario 3 hombres, en cada uno de los modos .

73

APÉNDICE B. ANEXO B Usuario 4

Figura B.8: Capturas de movimiento del grupo usuario 4 hombres, en cada uno de los modos .

74

APÉNDICE B. ANEXO B Usuario 5

Figura B.9: Capturas de movimiento del grupo usuario 5 hombres, en cada uno de los modos .

75

APÉNDICE B. ANEXO B B.2.1.2.

Mujeres

Usuario 1

Figura B.10: Capturas de movimiento del grupo mujeres: usuario 1, en cada uno de los modos .

76

APÉNDICE B. ANEXO B Usuario 3

Figura B.11: Capturas de movimiento del grupo mujeres: usuario 3, en cada uno de los modos .

77

APÉNDICE B. ANEXO B Usuario 4

Figura B.12: Capturas de movimiento del grupo mujeres: usuario 4, en cada uno de los modos .

78

APÉNDICE B. ANEXO B Usuario 5

Figura B.13: Capturas de movimiento del grupo mujeres: usuario 5, en cada uno de los modos .

79

APÉNDICE B. ANEXO B

B.2.2.

Tabla de Valores T-test T-test de las valores del Kinect 0 y Kinect 1 h p CI t − test

# 1

Hombres

2

3

4

5

xmk0 | xmk1 ymk0 | ymk1 zmk0 | zmk1 xmk0 | xmk1 ymk0 | ymk1 zmk0 | zmk1 xmk0 | xmk1 ymk0 | ymk1 zmk0 | zmk1 xmk0 | xmk1 ymk0 | ymk1 zmk0 | zmk1 xmk0 | xmk1 ymk0 | ymk1 zmk0 | zmk1

# 1

Mujeres

2

3

4

5

xmk0 | xmk1 ymk0 | ymk1 zmk0 | zmk1 xmk0 | xmk1 ymk0 | ymk1 zmk0 | zmk1 xmk0 | xmk1 ymk0 | ymk1 zmk0 | zmk1 xmk0 | xmk1 ymk0 | ymk1 zmk0 | zmk1 xmk0 | xmk1 ymk0 | ymk1 zmk0 | zmk1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

4.23x10−60 1.13x10−306 3.8x10−15 0.006 4.12x10−6 1.39x10−4 8.85x10−69 0 2.16x10−12 5.15x10−73 6.07x10−103 4.24x10−8 2.58x10−32 6.05x10−250 0.009

[0.074, 0.091] [0.155, 0.161] [0.364, 0.594] [−0.006, −0.032] [−0.011, −0.004] [−0.160, −0.491] [−0.074, −0.091] [−0.149, −0.155] [−0.312, −0.549] [0.170, 0.201] [0.052, 0.059] [0.285, 0.593] [0.019, 0.260] [0.108, 0.115] [0.035, 0.245]

19.36 107.19 8.17 2.77 −4.72 3.88 −19.55 99.16 7.15 24.12 32.89 5.62 12.7 65.43 2.62

df

σ

419 419 419 220 220 220 731 731 731 309 309 309 509 509 509

0.043 0.015 0.587 0.049 0.011 0.601 0.042 0.015 0.6 0.059 0.013 0.594 0.02 0.019 0.6

h

p

CI

t − test

df

σ

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

−1.65x10−4 0 9.68x10−20 −1.29x10−5 1.01x10−33 3.34xX10−5 8.89x10−59 0.033 5.54x10−10 1.94x10−62 4.23x10−320 5.95x10−15 1.31x10−187 3.93x10−245 4.13x10−8

[−0.024, −0.019] [0.094, −0.099] [0.300, −0.461] [0.017, −0.044] [0.038, −0.030] [0.215, −0.586] [−0.0810, −0.065] [−0.0037, −0.002] [0.347, 0.661] [0.055, 0.067] [0.094, 0.099] [0.311, 0.513] [0.089, 0.097] [0.079, 0.084] [0.209, 0.436]

−18.34 90.69 9.30 4.50 −15.35 4.965 −17.95 −2.14 6.3 19.01 84.75 8.03 50.81 70.97 5.58

945 945 945 167 167 167 648 648 648 556 556 556 446 446 446

0.016 0.015 0.57 0.042 0.014 0.58e2 0.03 0.0068 0.6 0.036 0.013 0.572 0.019 0.012 0.584

Cuadro B.3: Análisis del t-test entre las muestras en el modo Medio del Kinect 0 y Kinect 1 para el grupo hombres y mujeres.

80

Apéndice C

Anexo C C.1.

MANUAL

C.1.1.

Guía de instalación

El proyecto SAM requiere de controladores, software para el desarrollo de aplicaciones y una plataforma de animación digital. C.1.1.1.

Controladores

El dispositivo Kinect necesita un controlador para su funcionamiento, este controlador es el Kinect for windows SDK1.7 y se encuentra disponible en : http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads. aspx En esta página también se encuentra el Kinect for Windows Develop Toolkit, entre sus herramientas se encuentra la librería Kinect Fusión que utilizada para la reconstrucción tridimensional. C.1.1.2.

Software para el desarrollo de aplicaciones

La interfaz principal del SAM es desarrolla en Microsoft Visual Studio Express 2012 con la versión .NET Framework 4 Cliente Profile. Esta software esta disponible en la página :

http://www.microsoft.com/visualstudio/esn/products/ visual-studio-express-for-windows-desktop C.1.1.3.

Plataforma de animación digital

Se utiliza la plataforma de Blender 2.68 para el modelado y animación tridimensional, esta plataforma está disponible en la siguiente página: http://download.blender.org/release/ La comunicación entre la interfaz principal y Blender, utiliza los add-ons Bloop y Nui. Estos scripts están disponibles en la siguiente página: http://dm.tzi.de/bloop/ Instalación de los add-ons: 1. Pegar las carpetas Bloop y Nui en la dirección: C\archivos de programa\ Blender Foundation\Blender 2.68\script\addon. 2. Abrir Blender, en el menú File seleccionar User Preference. 3. En la ventana que se muestra en la figura A.0.1, en la categoría Animation es necesario activar Bloop. 4. Para activar el script Nui, se repite el mismo proceso en la categoría Devopment, como se muestra en la figura A.0.2.

81

APÉNDICE C. ANEXO C 5. Guardar y cerrar User Preference .

Figura C.1: Add-on Bloop

Figura C.2: Add-on Nui

C.1.2.

Guía de Usuario

La interfaz principal del sistema de análisis de movimiento consta de tres menús principales como se muestra en la figura A.0.3.

Figura C.3: Menús principales

En esta interfaz al inicio se puede observar: Frame Rate (figura A.0.4.): se visualiza el número de datos que se procesan por segundo. Formato (figura A.0.4.): Despliega una lista donde están diversos formatos para la resolución de la imagen RGB (figura A.0.5.), la selección de esta lista depende de la calidad que el usuario necesite de la imagen, sin olvidar que a mayor resolución menor es la adquisición de datos por segundo.

82

APÉNDICE C. ANEXO C

Figura C.4: Menús principales

Figura C.5: Formato RGB

Menú Archivo: Se despliega un submenú (figura A.0.6), que tienen la funcionalidad de ejecutar y detener el sensor Kinect, guardar y salir de todo el programa

Figura C.6: Menú Archivo

Menú Herramientas: Cuando se selecciona herramientas aparece un submenú denominado esqueletización y profundidad. (figura A.0.7).

Figura C.7: Menú herramientas

Esqueletización.- Este hace que al jugador se le adhiera un esqueleto de color rojo (figura A.0.8). En la esqueletización hay otros submenús como se muestra en la (figura A.0.7).

83

APÉNDICE C. ANEXO C

Figura C.8: Esqueletización

Submenú Captura.- Mediante este submenú (figura A.0.9) se puede elegir la captura del esqueleto en modo Defecto (captura los puntos de todo el cuerpo) o Sentado (capturar los puntos del segmento HAT). En detener se finaliza el proceso de esqueletización.

Figura C.9: Submenú de Captura

Submenú Parámetros.- En este submenú se encuentra los tres niveles (figura A.0.10) de suavizado, que se utiliza para adquirir los datos de la esqueletización. Estos son: Low (Default), Medium y High.

Figura C.10: Submenú parámetros

Los valores de los Smooth Parameters que corresponden a cada nivel de suavizado, se los visualiza en la parte inferior de la figura A.0.11 .

Figura C.11: Valores de los Smooth Parameters

Submenú Blender.- Sirve para transmitir los datos del esqueleto a la plataforma de Blender (figura A.0.12), para que el modelo tridimensional imite los movimientos del usuario en la animación. 84

APÉNDICE C. ANEXO C

Figura C.12: Submenú Blender

Profundidad.- Este submenú se activa cuando se selecciona el check box Profundidad que se encuentra en la parte inferior derecha de la interfaz (figura A.0.13) . Este submenú está compuesto por las opciones: Color y Usuario

Figura C.13: Menú de profundidad

Submenú Usuario.- Al activar esta opción, elimina a los objetos que se encuentra alrededor y solo captura al usuario o jugador, como se muestra en la parte derecha de la (figura A.0.14). Submenú Color .- Al activar esta opción, se asignan una variedad de colores de acuerdo a la distancia a la que se encuentren los objetos con respecto al dispositivo, parte izquierda (figura A.0.14).

Figura C.14: Datos de Profundidad Color y Usuario

Menú Propiedades.- Este menú (figura A.0.15) tiene tres opciones las cuales permiten invertir la imagen, cambiar a Escala de Grises y capturar imágenes (RGB o profundidad) de forma automática con intervalos de 33ms.

85

APÉNDICE C. ANEXO C

Figura C.15: Submenú de propiedades

Figura C.16: Imagen con Colores Invertidos y Escala De Grises

Las siguientes pestañas a describir se encuentran en la parte inferior de la interfaz principal. Kinect info.- Permite visualizar todos los parámetros de identificación del sensor Kinect (figura A.0.17), además tiene un control para la calibración de la elevación del dispositivo.

Figura C.17: Kinect Info

Histogramas.- Al seleccionar el check box Profundidad, también se activa en la parte inferior la pestaña profundidad. Aquí se pueden observar los histogramas de las imágenes de profundidad, los datos de profundidad de cada píxel y los rangos máximos y mínimos de reconocimiento. (figura A.0.18)

Figura C.18: Histogramas

Trayectorias.- Al activar la opción esqueletización se activa la pestaña trayectorias, donde se puede seleccionar los diferentes grupos de articulaciones (figura A.0.20) que conforman el cuerpo humano, para su respectivo análisis. Los datos que se almacenan son: el ángulo que forman las articulaciones seleccionadas, además de la posición (x, y, z) y las longitudes de las mismas. 86

APÉNDICE C. ANEXO C

Figura C.19: Trayectorias

Figura C.20: Selección de los segmentos

Capturas.- Al activar esta pestaña se puede capturar las imágenes (RGB o profundidad) de forma manual (figura A.0.21). Estas imágenes se almacenan en la dirección que se muestra en la parte superior derecha de la interfaz.

Figura C.21: Captura de imágenes

C.1.2.1.

Avatar 3D (Segunda Interfaz)

Avatar.- En la parte inferior de la interfaz principal, se encuentra el botón Avatar 3D. Este permite visualizar una nueva pantalla con el nombre de Reconstrucción 3D que posee un menú Archivo, donde se despliegan los siguientes submenús: Reiniciar 3D esto sirve para actualizar los datos de la reconstrucción. Guardar, que permite almacenar los archivos de la reconstrucción (existen dos formatos) figura A.0.22 y Salir que cierra el programa de la reconstrucción 3D.

Figura C.22: Interfaz Reconstrucción 3D

87

APÉNDICE C. ANEXO C

Controles: En la parte inferior (figura A.0.23) se encuentra el menú Control Motor, aquí se coloca el valor del los ángulos de elevación para la reconstrucción, este valor modifica la elevación de los dos Kinect de forma simultánea. También, se puede controlar la elevación requeridos de cada dispositivo Kinect por separado, esto se realiza por medio de los sliders. Rangos de Reconocimiento: Estos rangos están preestablecidos (min: 0.35m y max:1.5m) y se los visualiza en los “Texbox”. Fps: Muestra la velocidad con la que se procesan los datos de profundidad.

Figura C.23: Control motor y rangos de reconocimiento.

El menú Opciones que contiene la información de los dispositivos conectados, el Estatus de cada dispositivo, opciones de almacenamiento y el botón que reinicia la reconstrucción tridimensional. Opciones.- Aquí se selecciona el formato (.OBJ o .STL) para almacenar los datos de la reconstrucción. Estatus.- Permite Iniciar o Pausar la reconstrucción que realiza cada dispositivo. La opción de Pausar se utiliza para almacenar los archivos.. Kinect Info.- Contiene la información de los dispositivos Device 1 y 2 Reiniciar.- Refresca los datos de profundidad que se utilizan para la reconstrucción.

Figura C.24: Menú Opciones de la Interfaz Reconstrucción 3D

En la (figura A.0.25) se muestran los archivos reconstruidos de las partes: frontal y posterior del usuario.

Figura C.25: Archivos de reconstrucción

88

APÉNDICE C. ANEXO C C.1.2.2.

Plataforma Blender

Blender se utiliza para el modelo y animación tridimensional, para esto se procede de la siguiente manera: Se abre la plataforma Blender, se direcciona al menú File, de las opciones que se despliegan se selecciona import y luego se elige Wavefront (.obj), figura A.0.26.

Figura C.26: Importar archivos

El proceso anterior se repite hasta incorporar a Blender los 4 archivos .OBJ que se almacenarón desde la interfaz Reconstrucción 3D Al importar los datos de la reconstrucción se generan 4 archivos (Mesh) en la plataforma de Blender, figura A.0.27.

Figura C.27: Importación de los archivos .obj a Blender

A continuación se procede con el modelado tridimensional, para ésto se utilizan las siguientes herramientas: Join Mesh.- es una herramienta que se utiliza para acoplar las partes que conforman el modelo, para hacer el uso de esta herramienta se debe estar en Object Mode como se muestra en la figura A.0.28, en la parte inferior de Blender. Para realizar este proceso, primero es necesario seleccionar los cuatro archivos, luego se ingresa el comando (Ctrl + J), lo que hace que estos archivos se conviertan en uno. Se requiere indicar que los archivos deben alinearse previamente para que coincidan correctamente. También, esta herramienta se la encuentra en la parte izquierda de la interfaz en el menú Object como se muestra en la figura A.0.28.

89

APÉNDICE C. ANEXO C

Figura C.28: Acople de los archivos mediante la herramienta Join Mesh

Sculpt Mode.- Esta opción se encuentra en la parte inferior de la plataforma de Blender como se muestra en la figura A.0.29. Al seleccionar este modo el cursor cambia de forma (circunferencia de color rojo). Se adiciona en la parte derecha un panel donde se encuentra herramientas para esculpir el modelo tridimensional. Snake Hook.- Esta herramienta se encuentra en el panel Sculpt Mode, sirve para retirar objetos reconstruidos que no pertenecen al usuario. Para esto se hace clic con el botón izquierdo sobre el objeto que se desea retirar y arrastrar hasta que se adicione con el modelo. Grab.- Esta herramienta permite rellenar las fisuras (pérdidas de datos) que se encuentran en los lados laterales del modelo. Consiste en alargar el Mesh (malla) hasta cubrir los espacios vacíos. Para evitar dañar el modelo es necesario cambiar el rango de incidencia y restringir el movimiento (por ejemplo que sólo se modifique el eje z) de esta herramienta. Pinch.- Sirve también para retirar objetos que no pertenecen al modelo, pero esto se lo utiliza cuando estos objetos tienen mayor área.

Figura C.29: Herramientas de Sculpt Mode

Textura.- Permite cambiar el color de la textura del modelo, para ello se realiza lo siguiente: 1. Cambiar de Sculpt Mode a Object Mode como se muestra con el circulo naranja en la figura A.0.30 2. Seleccionar el modelo con clic derecho. 3. Después en la parte izquierda seleccionar en el menú Display en Shading seleccionar Matcap. En caso de no encontrar este menú presionar “N”.

90

APÉNDICE C. ANEXO C 4. Finalmente hacer clic en la circunferencia de color plomo (figura A.0.30), y se visualizará un panel con diferentes colores

Figura C.30: Cambiar el color de la textura

Con el modelo tridimensional listo, se procede a realizar la animación del mismo, esto se hace de la siguiente forma: Esqueleto.- El primer paso consiste en agregar un esqueleto (armature), existen tres formas de agregarlo, éstos son: Método Individual: 1. En la parte superior seleccionar el menú Add, luego elegir Armature y por último Single Bone (Figura A.0.31). 2. Seleccionar el final del hueso, cambiar de Object Mode a Edit mode 3. Al presionar la tecla “E”, se agregará un nuevo hueso. 4. Repetir este procedimiento hasta formar todo el esqueleto.

Figura C.31: Método Individual para ingresar el esqueleto

Método Rigging.- Para hacer uso de este método se requiere instalar un Add-on. 1. En el menú File, seleccionar User Preferences y luego Add-ons. 2. En la parte derecha de la nueva ventana, seleccionar la categoría Rigging para activar el Add-on Rigify, guardar y cerrar. 3. En la ventana principal seleccionar el menú File, luego elegir Armature y por último Human (Meta Rig). 91

APÉNDICE C. ANEXO C 4. Finalmente se puede observar un esqueleto completo con el que se puede trabajar (Figura A.0.32 ).

Figura C.32: Método Rigging

Método Importación.- Se realiza mediante archivos BVH. 1. En el menú principal seleccionar el menú File, luego Import y por último Motion Capture (.BVH) 2. Indicar la dirección del archivo y abrirlo. 3. El archivo que se abre contiene un esqueleto completo y una animación. Para utilizar este esqueleto es necesario eliminar la animación, copiar e importar el esqueleto a otro archivo. Identificación de los huesos: 1. En la parte del panel, seleccionar Armature como se indica con el circulo de color naranja (Figura A.0.33). 2. En el menú Display seleccionar la opción Names.

Figura C.33: Identificación Huesos

Acople del modelo con el esqueleto: 1. En Object Mode seleccionar el cuerpo del modelo, después con Shift seleccionar el esqueleto (Armature). Se puede observar que el cuerpo es de color oscuro y el esqueleto (Armature) es de color claro. (Figura A.0.34) 92

APÉNDICE C. ANEXO C 2. Al pulsar Ctrl P en la pantalla de Blender se visualizará un menú, elegir With Automatic Weights. Al realizar esto, se agrega automáticamente el Modifier “ Armature” y se crean varios Vertex Group (Grupos de vértices) que se asigna a cada uno de los huesos del esqueleto .

Figura C.34: Método With Automatic Weights

Método Skinnig Model.- Este método se utiliza para corregir los errores que se producen en la asignación de los grupos de vértex. 1. Seleccionar el modelo y cambiar Edit Mode. 2. En la parte superior del panel seleccionar Data como indica la circunferencia de color celeste. Se podrá visualizar el grupo de vertex que relacionan al esqueleto con el modelo. 3. En el menú Vertex Groups se puede seleccionar cada sección del cuerpo. Si hay errores se puede remover con el botón (Remove) y se vuelve asignar cada grupo con el botón Assign, para verificar si la asignación es correcta se usan los botones Select y Deselect, figura A.0.35.

Figura C.35: Método Skinnig Model

Método Weights Painted Mode : Este método se utiliza para suavizar el movimiento de cada una de las articulaciones. 1. Ingresar al mode Weigth Paint como se muestra en la Figura A.0.36 con el circulo de color celeste. 2. Con la asignación automática de los grupos de vértex, estos grupos se pintan de color rojo. Para suavizar el movimiento, los extremos de cada hueso se deben presentar un color amarillo y en la parte externa un color verde. Se puede cambiar el tamaño del pincel en la parte izquierda denominada Brush en la opción de Radius. Para ello se pulsa “F”, se arrastra el ratón para aumentar o reducir esto es de una forma rápida. 93

APÉNDICE C. ANEXO C 3. El peso (weight) va de acuerdo al código de colores de ponderación, por ejemplo en las uniones (articulaciones) de los segmentos van de un color amarillo (weigh = 0.8) o verde (weight = 0.6) según la movilidad figura A.0.36. 4. Este proceso se realiza para cada uno de los huesos como se muestra en la figura A.0.37.

Figura C.36: Método Weight Paint Mode

Figura C.37: Utilización del método Weight Paint en cada segmento

C.1.2.3.

Comunicación OSC ( Kinect - Blender )

Esta comunicación permite enviar los datos “Skleton Stream” que adquiere el dispositivo Kinect hacia Blender, permitiendo que el modelo tridimensional imite los movimientos del usuario en tiempo real. Para establecer esta comunicación, es necesario realizar lo siguiente: 1. En Blender se instala los add-ons Bloop y Nui. 2. En la ventana principal de Blender, por medio del Text Editor se abre el script startup.py (figura A.0.39). Se especifica si se desea mover todo el cuerpo o un determinado segmento. En este script es necesario presionar el botón Run Script para guardar las configuraciones realizadas. 3. Es necesario presionar el botón “Star Bloop” en el menú de Bloop de la interfaz principal de Blender, figura A.0.40. 4. En la interfaz principal del proyecto SAM, se selecciona transmitir en el submenú Blender que pertenece al menú Herramientas, figura A.0.7 . 5. Para guardar la sesión de movimiento, es necesario presionar el botón Recording (figura A.0.40). 6. Por último, para realizar un análisis posterior, la sesión de movimiento de almacena en archivos .BVH esto se realiza desde el menú File de la interfaz principal de Blender. 94

APÉNDICE C. ANEXO C

Figura C.38: Menús principales.

Figura C.39: Kinect Blender

95

Apéndice D

Presupuesto SAM ITEM 1 2 3 4 5 6 7 8 9

DESCRIPCIÓN Sensor Kinect Trípodes PC de escritorio Plataforma Televisión Led LCD 42” Extensiones USB Cable HDMI Sueldo Investigadores Gastos Varios

CANT. 4 4 2 2 1 2 1 3 -

COSTO UNIT. ($) 196.5 57 1650 7 1069 27.5 12 500 380.32 Total

COSTO TOTAL (IVA INCLUIDO) ($) 880.32 255.36 3696 15.68 1197.28 61.6 13.44 1500 380.32 $8000.00

Cuadro D.1: Presupuesto del proyecto SAM

El presupuesto establecido del anteproyecto del SAM fue de $11104.09. Presupuesto real del SAM $8000, por lo tanto se tiene un saldo de $3104. Presupuesto de Costos Estimado Gastos Establecidos Saldo

$11104.04 $8000.00 $3104.00

(a) Cuentas del Presupuesto Establecido

Presupuesto Financiado Gastos Reales Saldo

$8000.00 $8000.00 $0.00

(b) Cuentas del Presupuesto Real

Cuadro D.2: Cierre de Proyecto

96

Apéndice E

Protocolo del Sistema de Análisis de Movimiento (SAM) DESCRIPCIÓN DEL PROPÓSITO DE ESTUDIO: DATOS PERSONALES NOMBRES: EDAD: ESTADO CIVIL: PROFESIÓN: TELÉFONO: DIRECCIÓN:

SEXO: ESTATURA: PESO: # DE USUARIO:

Cuadro E.1: Datos del Usuario

Se me ha solicitado participar como voluntario(a) en un estudio de investigación que se está desarrollando en la Universidad Politécnica Salesiana, en el Grupo de Investigación de Ingeniería Biomédica (GIIB), cuyo título es: “SISTEMA DE ANÁLISIS DE MOVIMIENTO (SAM)” desarrollado por los estudiantes: Jorge Chuya, María del Cisne Cuenca y Kleyner Delgado. Bajo la dirección del Ing. Fernando Urgilés. El proyecto consiste en dos etapas: Captura de movimiento: Adquiere los datos del usuario por medio del dispositivo formando un esqueleto a través de 20 puntos que representa las articulaciones del usuario. Reconstrucción tridimensional: Consiste en crear un modelo tridimensional del usuario. Parámetros como el desarrollo del estudio, sus alcances y mi intervención en el mismo, han sido expuestos de forma comprensible, de tal manera que pueda tomar una libre decisión con conocimiento sobre mi participación en dicho proyecto. Mi participación en este estudio es completamente voluntaria.

PROCEDIMIENTOS: Antes de iniciar el usuario deberá estar con ropa ajustada y no reflectante. 1. El usuario debe llenar su registro 2. El usuario se colocará en la señalización ubicada en la plataforma de trabajo, para realizar la reconstrucción en una posición erguida, permaneciendo inmóvil aproximadamente un minuto. 3. Para la captura de movimiento, el usuario realizará lo siguiente: Se desplazará en la zona de trabajo simultáneamente en tres ocasiones, este procedimiento se realizará con luz y sin luz artificial. El usuario se colocará en el centro de la plataforma, donde está ubicada una silla, el usuario se levantara de la silla por dos ocasiones la una con vista frontal y la otra vista posterior. 97

APÉNDICE E. PROTOCOLO DEL SISTEMA DE ANÁLISIS DE MOVIMIENTO (SAM) El último procedimiento consiste en una secuencia de movimientos con el brazo derecho, esta secuencia será la siguiente: Levantar la mano a nivel del hombro en posición horizontal, desplazarla hacia adelante en la misma altura, subir el brazo y finalmente baja el brazo por tres veces consecutivas. Todo el procedimiento se realizara en el laboratorio GIIB, el mismo tendrá una duración aproximadamente de una hora.

RESULTADOS GENERADOS POR ESTE ESTUDIO: Yo no deseo recibir ningún resultado generado por este estudio. Declaro que los autores de este trabajo me han informado sobre su intención de divulgar los resultados obtenidos con fines puramente académicos, manteniendo la reserva de mi identidad y datos personales.

RIESGOS: Este sistema no es invasivo, por lo que no presenta ningún riesgo para las personas.

CONFIDENCIALIDAD: Los datos identificables durante la investigación se tendrán en un área de acceso restringido, además se guardarán en un lugar seguro y los datos electrónicos se almacenarán en un computador protegido mediante una clave. Únicamente los tesistas harán uso de dicha información.

PARTICIPACIÓN VOLUNTARIA: He leído la “Declaración de Derechos de los Sujetos en Experimentación” y se me ha dado una copia de la misma y de este formulario de consentimiento para que la conserve. La participación en este estudio es voluntaria. Puedo rehusarme a responder a cualquier pregunta o discontinuar mi participación en cualquier momento. A través de mi firma doy mi consentimiento para participar en esta investigación, que las fotografías, archivos de reconstrucción y videos sean utilizados solamente como fines académicos, aceptando todo los acuerdos estipulados anteriormente.

AUTORIZACIÓN: Nombre de la persona:

______________________________________

Fecha:

______________________________________

Número de cédula:

______________________________________

_______________________________________ Firma En caso de ser menor de edad, sus representantes firmarán el documento:

_______________________________________

__________________________________

Firma del Padre

Firma de la Madre

98

Apéndice F

Lista de Usuarios # Usuario

Nombres y Apellidos

Firma del Usuario o Representantes

1

Victor Hugo Flores Morales

2

Gabriela Estefania Quiñonez Arpi

3

Fabián Dario Pacheco Pérez

4

Lissette Mariela Chacha Rodriguez

5

Gonzalo Manuel Contreras Morocho

6

Lauro Santiago Tacuri Delgado

7

Jorge Luis Padilla Guarnizo

8

Angie Sthefany Romero Pardo

9

Erika Paola Poveda Sánchez

10

Mariela Jimbo Jerez

Cuadro F.1: Lista de Usuarios

99

Bibliografía [1] M. Whittle, Gait Analysis: An Introduction, ser. Butterworth Heinemann. Heinemann, 2007. [2] R. Huston, Principles of Biomechanics, ser. Dekker Mechanical Engineering. 2008.

ButterworthTaylor & Francis,

[3] F. Miller and E. Browne, Cerebral Palsy. Springer Science+Business Media, Incorporated, 2005. [4] A. Jana, Kinect for Windows SDK Programming Guide, ser. Community experience distilled. Packt Publishing, Limited, 2012. [5] R. Miles, Learn the Kinect API, ser. Microsoft Press Series.

Microsoft Press, 2012.

[6] Kinect for Windows Human Interface Guidelines v1.7.0, Microsoft Corporation, Julio 2013. [Online]. Available: http://msdn.microsoft.com/en-us/library/jj663791.aspx [7] J. Kramer, M. Parker, D. C, N. Burrus, and F. Echtler, Hacking the Kinect, ser. Apressus Series. Apress, 2012. [8] D. Chaffin, G. Andersson, and B. Martin, Occupational Biomechanics. [9] J. Pons, Wearable Robots: Biomechatronic Exoskeletons.

Wiley, 2006.

Wiley, 2008.

[10] D. Knudson, Fundamentals of Biomechanics, ser. SpringerLink: Springer e-Books. Science+Business Media, LLC, 2007. [11] J. Perry, Gait Analysis: Normal and Pathological Function.

Springer

Slack Incorporated, 1992.

[12] R. Parent, D. Ebert, D. Gould, M. Gross, C. Kazmier, C. Lumsden, R. Keiser, A. Menache, M. Müller, F. Musgrave et al., Computer Animation Complete: All-in-One: Learn Motion Capture, Characteristic, Point-Based, and Maya Winning Techniques. Elsevier Science, 2009. [13] J. Jean, Kinect Hacks, ser. Hacks series.

Oreilly & Associates Incorporated, 2012.

[14] J. Webb and J. Ashley, Beginning Kinect Programming with the Microsoft Kinect SDK, ser. Apressus Series. Apress, 2012. [15] D. Catuhe, Programming with the Kinect for Windows Software Development Kit, ser. Developer reference. Microsoft Press, 2012. [16] E. Melgar and C. Diez, Arduino and Kinect Projects: Design, Build, Blow Their Minds, ser. Apressus Series. Apress, 2012. [17] R. Hess, Blender Foundations: The Essential Guide to Learning Blender 2.6, ser. Focal Press. Elsevier, 2010. [18] N. V. Boulgouris, D. Hatzinakos, and K. N. Plataniotis, “Gait recognition: A challenging signal processing technology for biometric identification,” Signal Processing Magazine, IEEE, vol. 22, no. 6, pp. 78–90, Nov. 2005. [19] N. S. Pollard, J. K. Hodgins, M. Riley, and C. G. Atkeson, “Adapting human motion for the control of a humanoid robot.” in ICRA. IEEE, 2002, pp. 1390–1397.

100

BIBLIOGRAFÍA [20] J. Shotton, A. Fitzgibbon, M. Cook, T. Sharp, M. Finocchio, R. Moore, A. Kipman, and A. Blake, “Real-time human pose recognition in parts from single depth images,” in Proceedings of the 2011 IEEE Conference on Computer Vision and Pattern Recognition, ser. CVPR ’11. Washington, DC, USA: IEEE Computer Society, 2011, pp. 1297–1304. [21] J. Taylor, J. Shotton, T. Sharp, and A. W. Fitzgibbon, “The vitruvian manifold: Inferring dense correspondences for one-shot human pose estimation.” in CVPR. IEEE, 2012, pp. 103–110. [22] J. L. Kelley, General Topology, ser. Graduate Texts in Mathematics.

Springer, 1975.

[23] K. Tang, Mathematical Methods for Engineers and Scientists 3: Fourier Analysis, Partial Differential Equations and Variational Methods, ser. Mathematical Methods for Engineers and Scientists. Springer, 2007. [24] R. Larson and D. Falvo, Precalculus, ser. Precalculus Series. [25] G. Thomas, Cálculo: Varias Variables, ser. Cálculo.

Brooks/Cole, 2010.

Pearson Educación, 2006.

[26] M. Wright and A. Freed, “Open sound control: A new protocol for communicating with sound synthesizers,” in International Computer Music Conference. Thessaloniki, Hellas: International Computer Music Association, 1997, pp. 101–104. [27] S. Izadi, D. Kim, O. Hilliges, D. Molyneaux, R. Newcombe, P. Kohli, J. Shotton, S. Hodges, D. Freeman, A. Davison, and A. Fitzgibbon, “KinectFusion: Real-time 3D Reconstruction and Interaction Using a Moving Depth Camera,” in Proceedings of the 24th Annual ACM Symposium on User Interface Software and Technology, ser. UIST ’11. New York, NY, USA: ACM, 2011, pp. 559–568. [28] A. Segal, D. Hähnel, and S. Thrun, “Generalized-icp,” in Robotics: Science and Systems’09, 2009, pp. –1–1. [29] S. Patra, B. Bhowmick, S. Banerjee, and P. Kalra, “High resolution point cloud generation from kinect and hd cameras using graph cut,” in VISAPP (2)’12, 2012, pp. 311–316. [30] B. Walther-Franks, F. Biermann, N. Steenbergen, and R. Malaka, “The animation loop station: Near real-time animation production.” in ICEC, ser. Lecture Notes in Computer Science, M. Herrlich, R. Malaka, and M. Masuch, Eds., vol. 7522. Springer, 2012, pp. 469–472. [31] S. Ali, Z. Mingquan, W. Zhongke, A. Razzaq, M. Hamada, and H. Ahmed, “Comprehensive use of hip joint in gender identification using 3dimension data,” TELKOMNIKA Indonesian Journal of Electrical Engineering, vol. 11, no. 6, pp. 2933–2941, 2013. [32] E. B. Dam, M. Koch, and M. Lillholm, Quaternions, Interpolation and Animation. Institut, Københavns Universitet, 1998.

Datalogisk

[33] A. Hanson, Visualizing Quaternions, ser. The Morgan Kaufmann Series in Interactive 3D Technology. Elsevier Science, 2006. [34] J. Vince, Rotation Transforms for Computer Graphics.

Springer, 2011.

[35] R. Gonzalez, Digital Image Processing Using Matlab.

Tata McGraw Hill Education, 2010.

[36] M. King and N. Mody, Numerical and Statistical Methods for Bioengineering: Applications in MATLAB, ser. Cambridge Texts in Biomedical Engineering. Cambridge University Press, 2010. [37] D. P. Ferris, M. Louie, and C. T. Farley, “Running in the real world: Adjusting leg stiffness for different surfaces,” in IN PROC. R. SOC. LOND, 1998, pp. 989–993. [38] A. Menache, Understanding Motion Capture for Computer Animation and Video Games. Morgan Kaufmann, 2000. [39] C.-Y. Chang, B. Lange, M. Zhang, S. Koenig, P. Requejo, N. Somboon, A. A. Sawchuk, and A. A. Rizzo, “Towards pervasive physical rehabilitation using microsoft kinect,” in PervasiveHealth, 2012, pp. 159–162.

101

BIBLIOGRAFÍA [40] A. P. Bo, M. Hayashibe, and P. Poignet, “Joint angle estimation in rehabilitation with inertial sensors and its integration with kinect,” in Engineering in Medicine and Biology Society,EMBC, 2011 Annual International Conference of the IEEE. IEEE, Aug. 2011, pp. 3479–3483. [41] P. R. H. A. H. B. E. D. Luca Bascetta, Gianni Ferretti and E. D. Lello, “Towards safe human-robot interaction in robotic cells: An approach based on visual tracking and intention estimation,” in In Proceedings of IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2011), September 2011. [42] M. Andersen, T. Jensen, P. Lisouski, A. Mortensen, M. Hansen, T. Gregersen, and P. Ahrendt, “Kinect depth sensor evaluation for computer vision applications,” Department of Engineering, Aarhus University. Denmark, Tech. Rep., 2012. [43] R. Grootjans, XNA 3.0 Game Programming Recipes: A Problem-Solution Approach. CA, USA: Apress, 2009.

Berkely,

[44] S. Kean, J. Hall, and P. Perry, Meet the Kinect: An Introduction to Programming Natural User Interfaces, ser. Apressus Series. Apress, 2011. [45] H. Rouvière, A. Delmas, and V. Delmas, Anatomía Humana: Descriptiva, Topográfica y Funcional, ser. Anatomía humana: descriptiva, topográfica y funcional. Masson, 2005. [46] A. Villa and F. Urgiles, “Creation of the biomedical engineering research group giib-ups at the salesian polytechnic university,” in Andean Region International Conference (ANDESCON), 2012 VI, 2012, pp. 185–187.

102