“api estÁndar para manejo de movimiento en el cuerpo …

85
“API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO HUMANO (SINCRONIZACIÓN, ALMACENAMIENTO Y REUTILIZACIÓN)” APASANDES JUAN CAMILO PINZÓN CORTES TRABAJO DE GRADO Asesores de Tesis: Fernando de la Rosa, Jose Tiberio Hernandez Departamento de Ingenieria de Sistemas y Computación UNIVERSIDAD DE LOS ANDES INGENIERÍA DE SISTEMAS Y COMPUTACIÓN BOGOTA 2002 ISC-2003-1-42

Upload: others

Post on 10-Jul-2022

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

“API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO HUMANO(SINCRONIZACIÓN, ALMACENAMIENTO Y REUTILIZACIÓN)”

APASANDES

JUAN CAMILO PINZÓN CORTES

TRABAJO DE GRADO

Asesores de Tesis:Fernando de la Rosa,

Jose Tiberio HernandezDepartamento de Ingenieria de Sistemas y Computación

UNIVERSIDAD DE LOS ANDESINGENIERÍA DE SISTEMAS Y COMPUTACIÓN

BOGOTA2002

ISC-2003-1-42

Page 2: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ii

CONTENIDO

Introducción ................................................................................................................... 1

1. Estado del Arte y Trabajos Relacionados .................................................................. 3

1.1 Sistemas de Captura de Movimiento............................................................ 3

1.2 Tipos de Placas de Fuerza ............................................................................ 5

1.3 Formatos Disponibles para Almacenamiento de Movimiento..................... 7

2. Problema a Resolver .................................................................................................. 11

3. Marco Teórico............................................................................................................ 16

3.1 Archivos ....................................................................................................... 16

3.1.1 Notación Matemática .................................................................... 16

3.1.2 Nombres de los Elementos............................................................ 16

3.1.3 Manejo de Tiempos....................................................................... 17

3.1.4 Unidades........................................................................................ 17

3.1.5 Esqueleto de los Personajes .......................................................... 17

3.1.6 Datos ............................................................................................. 18

3.2 Detalle de los Formatos................................................................................ 19

3.2.1 C3D................................................................................................ 19

3.2.2 Archivo .3d, Sistema APAS .......................................................... 22

3.2.3 Archivo .Ana, Sistema APAS ....................................................... 27

3.3 Placas............................................................................................................ 33

3.3.1 Cálculos de Placas AMTI y BERTEC .......................................... 33

Page 3: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

iii

3.3.2 Cálculos de Placas Kistler............................................................. 37

4. Propuesta .................................................................................................................... 39

4.1 Requerimientos............................................................................................. 39

4.1.1 Plataforma Tecnológica ................................................................ 39

4.1.2 Requerimientos Funcionales ......................................................... 41

4.1.3 Requerimiento No Funcionales..................................................... 42

4.2 Consideraciones de la Aplicación ................................................................ 43

4.2.1 Propiedades del Mundo............................................................................. 43

4.2.2 Conversiones de Diferentes Estándares de Movimiento............... 43

5. Diseño de Clases ........................................................................................................ 44

5.1 Explicación del Funcionamiento.................................................................. 44

6. Análisis de Resultados ............................................................................................... 47

Conclusiones .................................................................................................................. 51

Trabajo Futuros .............................................................................................................. 52

Anexo 1 .......................................................................................................................... 53

Bibliografía 69

Page 4: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

iv

LISTADO DE ILUSTRACIONES

Número Página

Ilustración 1. Tabla de comparación de errores de diferentes sistemas de captura........ 5

Ilustración 2. Modelo y ubicacion de una placa en el mundo del laboratorio. .............. 6

Ilustración 3. Diagrama de composición del laboratorio. .............................................. 11

Ilustración 4. Foto del laboratorio GAIT, niño con marcadores reflectivos. ................. 12

Ilustración 5. Arquitectura general del proyecto............................................................ 13

Ilustración 6. Definición formato C3D .......................................................................... 19

Ilustración 7. Detalle de la estructura del encabezado C3D........................................... 20

Ilustración 8. Detalle de la estructura de un grupo de C3D en bytes. ............................ 21

Ilustración 9. Tipos comunes de parametros en C3D con sus tamaños maximos.......... 21

Ilustración 10. Tabla de composición de un parametro en C3D por bytes. ................... 22

Ilustración 11. Conformación del bloque de encabezado de un archivo .3d.................. 23

Ilustración 12. Conformación del bloque Sygma de un archivo .3d, error por punto.... 24

Ilustración 13. Conformación del bloque de datos en bruto de un archivo .3d.............. 26

Ilustración 14. Conformación del bloque de datos filtrados de un archivo .3d ............. 27

Ilustración 15. Conformación del bloque de descripción del ambiente de

un archivo .ana........................................................................................ 29

Ilustración 16. Conformación del bloque de descripción extendida del ambiente de un

archivo .ana............................................................................................. 31

Ilustración 17. Conformación del bloque de datos de un archivo .ana .......................... 32

Page 5: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

v

Ilustración 18. Placa tipo BERTEC con sus elementos. ................................................ 33

Ilustración 19. Resultados que se quieren obtener a partir de los datos de BERTEC.... 34

Ilustración 20.Descripción de los componentes y resultantes de una placa Kistler....... 37

Ilustración 21. Canales de placas Kistler ....................................................................... 37

Ilustración 22. Parametros a partir de los datos brutos de una placa Kistler ................. 38

Ilustración 23. Ejes del mundo de la aplicación............................................................. 43

Ilustración 24. Diagrama de clases de la aplicación ...................................................... 46

Ilustración 25. Inicio de la aplicación APASAndes....................................................... 47

Ilustración 26. Dialogo para carga de archivos.............................................................. 48

Ilustración 27. Carga de archivo C3D con información sincronizada y lista................. 49

Ilustración 28. Utilización de datos extraidos aun archivo plano en Excel ................... 50

Page 6: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

INTRODUCCIÓN

El área de movimiento humano en realidad virtual es un campo en el cual todavía hay

mucho por explorar y trabajar, siendo pocas las compañías y universidades envueltas en

este tipo de investigaciones. Está tesis forma parte de un proyecto del grupo de

Computación Gráfica, en conjunto con el Laboratorio de Análisis de Movimiento Humano

del Instituto Roosevelt, para aplicaciones médicas y deportivas. El proyecto a avanzado a

partir de varias tesis de magíster y pregrado, que intentan resolver los problemas que se

observan en el laboratorio, para que finalmente el conjunto de estas constituya una

completa solución al análisis médico llamado GAIT.

El proyecto del laboratorio, consta de 4 puntos fundamentales. La captura de movimiento

en humanos a través de vídeo, con el uso de marcadores reflectivos. El diseño del modelo

de base de datos y visualización de información como puntos tridimensionales e

información análoga (como lo son los datos capturados por las placas de fuerza o el sistema

de mimeografía). El análisis de datos de resultados según los modelos de exámenes de tipo

GAIT, y un trabajo sobre el análisis médico de extremidades superiores.

Esta tesis tiene como objetivo resolver el modelo de datos del sistema y dar las

herramientas necesarias para la visualización en tres dimensiones de la captura de datos.

Como idea fundamental se pretende que el modelo sea lo mas compatible con otros

sistemas de captura de movimiento como APAS[10] y Vicon[11], conocidos por tener

Page 7: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

2

excelentes resultados en el área. La compatibilidad se llevará a cabo por medio de la

construcción de módulos que se añaden al sistema para leer y generar archivos de la

plataforma que se le indique.

El trabajo puede ser de gran ayuda en otros campos como animación y simulación. Su

enfoque en la compatibilidad con diversos sistemas, facilita la interpretación de datos,

logrando migrar el movimiento capturado a otros sistemas, como programas de animación

haciendo mas asequible este tipo de tecnología a usuarios regulares.

En este documento se encuentra la información referente a terminología, transformaciones

geométricas, características de un sistema de captura de movimiento, diseño del modelo de

datos y teoría sobre el como traducir la información de una plataforma a otra. El documento

se encuentra organizado de la siguiente manera:

El capítulo 1, resume los trabajos relacionados con la tesis, analizando sus problemas y

ventajas.

El capítulo 2, especifica en detalle el problema a resolver, sus variables y su estructura.

El capítulo 3, presenta todo el marco teórico: la notación matemática, la explicación de la

terminología y el funcionamiento de la tecnología utilizada (especificaciones de archivos,

placas de fuerza y los sistemas de captura con los que se quiere ser compatible).

Page 8: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

3

El capítulo 4, corresponde a la propuesta para solucionar el problema. Requerimientos

funcionales y no funcionales de la aplicación, así como otros detalles que incluyen la

plataforma tecnológica a utilizar y algunas consideraciones importantes del desarrollo.

El capítulo 5, trata todo lo referente al diseño de la aplicación y su funcionamiento interno.

El capítulo 6, se refiere al análisis de los resultados obtenidos, al funcionamiento de la

aplicación y aclaraciones referentes a las limitaciones.

Para finalizar se encuentran las conclusiones y el trabajo por realizar. Se incluye un anexo

con la especificación detallada de las clases del aplicativo.

Page 9: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

4

ESTADO DEL ARTE Y TRABAJOS RELACIONADOS

La tecnología de captura de movimiento comienza alrededor de 1.976, con los ingenieros e

investigadores fundadores de la compañía Vicon. Al comienzo esta tecnología se concentro

en la utilización de trackers magnéticos, los cuales generaron problemas debido a que no

permitía el movimiento libre del paciente. Con el tiempo los sistemas se volvieron más

ligeros y se vio la opción de trabajar con video abriendo nuevos campos de investigación,

ya que el paciente se podía mover libremente y había la posibilidad de que los sistemas se

volvieran portables. Actualmente el principal impulsor de esta tecnología es la industria

cinematográfica, con el boom de la películas en 3D.

1.1. SISTEMAS DE CAPTURA DE MOVIMIENTO

1.1.1. APAS

El trabajo realizado por Ariel Dynamics[10], es bastante bueno considerando la diferencia

de precios con los sistemas de las demás compañías, aunque tiene varios problemas.

El sistema de APAS consiste en un laboratorio de bajo presupuesto, con 5 cámaras

digitales, de 30 a 50 cuadros por segundo, un set de placas de fuerza y computadores

personales, los cuales se encargan de concentrar la información para procesarla y generar

los resultados. Este procedimiento se hace a partir de la interpolación de puntos reflectivos

que se visualizan en cada video. Los puntos reflectivos se ven en los videos como puntos

Page 10: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

5

blancos intensos, por tanto se espera tener laboratorios donde todo sea de un color diferente

al blanco. Como resultado del examen se obtienen, un reporte de marcha completo según el

estándar (GAIT) y una simulación del esqueleto en marcha, con la posibilidad de hacer

seguimiento de las curvas de movimiento de cada punto.

El primer problema es la sincronización de los datos análogos con los de 3D que se realiza

por medio de un parámetro referente al porcentaje del tiempo transcurrido desde el inicio de

la secuencia de video y el comienzo de la captura de los datos análogos, en relación con la

duración total del video. Lo que lleva a tener un margen de error que aunque pequeño es

suficientemente considerable para causar problemas en el análisis, dado que generalmente

las frecuencias de captura de los datos análogos son muy altas (1000Hz) con respecto a las

de video (30f/s).

Por otro lado se encuentran los errores que comete el sistema en la captura de los puntos,

son demasiados y hay que corregirlos de manera manual lo que hace al examen

dispendioso, además esta sujeto al criterio del usuario. Ejemplo: cada examen de 5

segundos de duración tiene aproximadamente 250 cuadros cada uno con 16 marcadores y

para que el programa no cometa errores es necesario que a cada marcador lo visualicen al

menos 3 cámaras. El usuario por tanto debe revisar cuadro por cuadro todos los exámenes.

Finalmente el sistema no es compatible con el estándar del Instituto Nacional de Medicina

de E.U. (NIH) haciendolo incompatible con la mayoría del software existente. Su

Page 11: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

6

funcionalidad se limita a los exámenes GAIT. No esta muy desarrollado la parte de análisis

deportivos.

1.1.2. Vicon (sistema 370)

Este es el sistema más completo y más antiguo que existe para la captura de movimiento, y

el más costoso, alrededor de 250.000 dólares. Es bastante rápido y preciso. Compatible con

el estándar de C3D haciendolo muy versátil. Cuenta con módulos adicionales para el

análisis de deportistas, cinemática inversa y comparación de exámenes[11].

1.1.3. MotionAnalysis

Es la competencia más cercana al sistema Vicon, con excelentes resultados en el área de

captura de movimiento para películas y robots. Tiene muchos módulos para análisis de

deportes y medicina orthoestética. Realiza exámenes muy completos y es compatible con el

estándar C3D, Excel y Word, exporta los reportes a estas plataformas. Es muy bueno para

la captura simultánea de muchos objetos en movimiento, ha capturado movimiento hasta de

17 personas.

Tablas de resultados de las pruebas realizadas en la quinta conferencia de captura de

movimiento. Extraído del paper de la conferencia.[6]

Page 12: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

7

Test consistente en calcular la distancia de dos puntos a un distancia de 50 cm:

Measured Rank RMS Rank Max Rank Total

[cm] Score Error cm Score Error cm Score Error

Ariel 49.882 2 0.246 1 0.961 1 1.207

Motion 49.796 1 0.059 5 0.183 4 0.242

Peak 49.942 4 0.091 2 0.259 2 0.35

Qualisys 49.906 3 0.08 3 0.198 3 0.278

Vicon 49.952 5 0.062 4 0.183 4 0.245Ilustración 1. Tabla de comparación de errores de diferentes sistemas de captura.

1.2. TIPOS DE PLACAS DE FUERZA

Las placas de fuerza colocadas en la pista del laboratorio son pieza clave para los

exámenes. Varias empresas han desarrollado diferentes placas que retornan diferentes tipos

de datos debido a la variedad de sensores, pero por medio de conversiones matematicas se

pueden obtener los mismos resultados con todas las placas.

Ilustración 2. Modelo y ubicación de una placa en el mundo del laboratorio.

Page 13: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

8

1.2.1. BERTEC

Estas placas son desarrolladas por Bertec Corporation y retornan: los 3 componentes de la

fuerza en XYZ y los 3 componentes del momento en XYZ; datos suficientes para calcular a

partir del centro de la placa la ubicación del vector de fuerza. Vienen con una matriz de

calibración de acuerdo con el modelo.

1.2.2. AMTI

Son similares a las de tipo BERTEC solo que son fabricadas por otra compañía y

tecnología diferente. La teoría del cálculo de los datos es completamente igual.

Las fuerzas y momentos son tomados por medidores de esfuerzo colocados en celdas cerca

de las 4 esquinas de la plataforma. Estos a su vez forman 6 puentes Wheatstone teniendo 4

brazos activos con 8 o más medidores por puente[3].

1.2.3. KISTLER

Es un tipo de placas que retorna las componentes de las fuerzas respecto a cada esquina de

la placa de la siguiente manera: Fx(1,2), Fx(3,4), Fy(1,4), Fy(2,3), Fz(1), Fz(2), Fz(3),

Fz(4) donde el número corresponde a la esquina de la placa[4].

Page 14: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

9

1.2.4. FUERZAS, UBICACIÓN

Este tipo especial de placas, bastante dificil de encontrar es uno de los más sencillos de

procesar, porque retorna directamente la fuerza en componentes XYZ y su ubicación

respecto a la placa en sí[5].

1.3. FORMATOS DE MOVIMIENTO DISPONIBLES ACTUALMENTE

Muy pocos formatos se especializan en tratar el problema del almacenamiento del

movimiento del cuerpo humano con detalle, la mayoria utiliza estructuras para almacenar

movientos en bruto de cualquier objeto, algunos tomando en cuenta jerarquias para el

movimiento. No son muchos los formatos que se encuentran en el mercado, cada uno es de

documentación limitada y de empresas diferentes. La ventaja es que la mayoría de los

archivos vienen en formato ASCII por tanto su lectura es fácil de implementar con un

parser[1].

1.3.1 Biovision BVH

Es uno de los formatos mas utilizados en la captura para animación en películas. Fue

diseñado por la compañía Biovision y es una extensión de BVA, que la comentare más

adelante[1].

El archivo esta formado por dos partes: el esqueleto con la jerarquía del avatar y los datos

de movimiento. La parte del esqueleto tiene dos problemas, primero, no se tienen las

propiedades del segmento, se asumen sus longitudes al saber la posición del siguiente hijo

Page 15: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

10

con respecto al padre, lo cual lleva generalmente a problemas con el último hijo de la

jerarquía como el pie, del cual no se sabe nada y por tanto hay que darle propiedades al

criterio de cada usuario final. El segundo es la limitación en la definición del esqueleto el

cual solo llega hasta el tobillo o la muñeca.

En la parte del movimiento se limita a las condiciones básicas , el número de cuadros

almacenados, el valor de cada ángulo para cada articulación y el tiempo entre cuadro y

cuadro.

1.3.2 Biovision BVA

Este archivo a diferencia de BVH no tiene la jerarquía del esqueleto. Por cada articulación

o punto que se quiera almacenar, se le coloca un nombre, el número de cuadros capturados,

el tiempo entre cada uno, su posición XYZ, su rotación y la escala a la cual esta cada

segmento. Este tipo de archivo tiene la ventaja de no estar restringido al esqueleto que

brinda BVH, pero la desventaja de no ser estándar y su reutilización puede ser complicada

si no se sabe la correspondencia de los nombres al modelo del avatar[1].

1.3.3 Motion Analysis’ HTR (Hierarchical Translation Rotation)

Fue creado tiempo después del BVH como una alternativa , con más parámetros

importantes que dan la posibilidad de utilizar cinemática inversa. La jerarquía del esqueleto

es abierta y se define de acuerdo a la complejidad que necesite el usuario. Al principio del

archivo se definen varias propiedades importantes como el número de segmentos del

Page 16: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

11

esqueleto a definir, el número de cuadros capturados, la rata de cuadros por segundo, el

orden de rotación de los ejes, las unidades que se manejan, el eje de gravedad y el eje que

definirá la longitud del segmento[1].

El esqueleto se define mediante una lista Hijo-Padre así:

Cabeza Global

Cuello Cabeza

etc.…

Luego se definen la rotación y posición inicial de cada nodo con el largo del hueso.

Finalmente por cada nodo se da la información de movimiento por cada cuadro (rotación-

posición) y la posibilidad de modificar la escala de la longitud del hueso con respecto a la

inicial.

1.3.4 Acclaim ASF/AMC (Acclaim Skeleton File/ Acclaim Motion Capture)

Acclaim la compañía de juegos decidió desarrollar dos archivos, uno contiene la

información del esqueleto del avatar y otro le asocia movimiento. En el primer archivo se

definen los nodos al gusto del usuario final, los cuales tienen propiedades como dirección,

largo del eje, los grados de libertad y los límites de los grados de libertad, esto es muy

importante ya que consideran las limitaciones de las articulaciones, pero resulta ser poco

funcional debido a la gran variación de este parámetro por persona. Al final del archivo al

igual que en HTR se define la jerarquía del esqueleto[1]. En el archivo de movimiento por

Page 17: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

12

cada cuadro se coloca el nombre del nodo y su posición lo cual hace el archivo voluminoso

y poco eficiente. No contiene ningún tipo de información como la rata de cuadros por

segundo, ni el número de cuadros.

1.3.5 LambSoft Magnetic format – BRD

Como se espera poder capturar movimiento en el laboratorio de trackers magnéticos, este es

el archivo tradicional de captura para trackers como Flock of Birds en particular. No

contiene mayor información, carece de jerarquía. Por cada marcador se encuentra: el

número de la muestra, el número del tracker, la posición XYZ y quaternion (en que se

almacenan los ángulos y la escala). El último parámetro es un timestamp del momento de

toma de la muestra[1].

1.3.6 Adaptive Optics AOA

Es un archivo simple que almacena por cada frame de captura de video la posición de los

marcadores. No tiene mayor importancia[1].

1.3.7 National Institute of Health C3D

Este formato es utilizado por la mayoría de las compañías que capturan movimiento a

través de video, almacena toda la información a partir de imágenes. Muchas de sus

características están enfocadas principalmente al manejo del video, para mantener la

relación entre la visualización de las imágenes y el análisis de los datos[1].

Page 18: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

13

Como guarda información aleatoria de acuerdo a cuantos marcadores se manejen en la

captura de datos, no tiene jerarquía. Cada marcador se almacena en lo que en este formato

se conoce como parámetro. Tiene nombre, descripción, dimensiones (número de

dimensiones 1D….7D de acuerdo a la cantidad de cámaras y unidades) e información en

bruto. Los parámetros también sirven para almacenar otro tipo de información relativa al

análisis de movimiento, como fuerzas, impulsos, velocidad, etc., por eso es ideal para la

captura “sencilla”. Este modelo por la carencia de un esqueleto, presenta algunos problemas

al quererle añadir otros elementos como la compresión muscular. El hecho de no contar con

un estándar de nombres para los nodos, puede hacer que la información se vuelva confusa

al no saber exactamente, a que articulación corresponde cada nodo. Pero tiene algo

importante, especifica el número de frames para realizar la interpolación.

Por otro lado hay muchísimo desarrollo entorno a este estándar, especialmente con

herramientas que lo llevan a texto plano, al análisis de datos y visualización de datos.

1.3.8 Motion Analysis TRC

Realiza lo mismo que HTR pero sin jerarquía, se almacenan datos importantes para la

captura de video, ya que provee el cuadro en que comienza la captura y en el que termina.

Solo trae la ubicación de cada uno de los marcadores en cada cuadro. No aporta nuevos

elementos[1].

Page 19: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

14

PROBLEMA A RESOLVER Y PROPUESTA DE SOLUCIÓN

El sistema actual con que cuenta el Laboratorio de Marcha del Instituto Roosevelt, lleva a

cabo todo el proceso del examen tipo GAIT en un tiempo considerable, debido a la cantidad

de procesos manuales. Los errores de automatización en la captura de movimiento y

sincronización de datos deben ser corregidos también en forma manual. Adicionalmente, el

procesamiento de datos se realiza en una sola máquina subutilizando el resto de las

existentes dentro del laboratorio. Por otro lado, el sistema no es compatible con las demás

plataformas de captura de movimiento y por eso no se pueden utilizar otras fuentes de datos

para realizar comparaciones.

Page 20: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

15

Ilustración 3. Diagrama de composición del laboratorio de marcha.

Existe un trabajo sobre la captura de movimiento realizado en el laboratorio, pero los

resultados son largas listas de puntos 3D sin ningún modelo de datos y sin integración con

el resto del sistema básico como lo son los datos que proveen las placas de fuerza.

El sistema cuenta con los siguientes módulos: captura de movimiento, visualización y

sincronización, y finalmente el de análisis médico GAIT.

Page 21: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

16

Ilustración 4. Foto del laboratorio GAIT, niño con marcadores reflectivos.

Para un proyecto íntegro se realizó un bosquejo general de la arquitectura del sistema como

se muestra en la figura 3. Se encuentra el módulo de captura de datos, en el que se incluye

la información de los marcadores, las placas de fuerza, la actividad muscular, etc., el

módulo de análisis clínico, que a partir de los datos sincronizados genera los análisis

médicos de acuerdo a los estándares y un módulo de puente que recibe datos de entrada

como fuerzas, puntos 3d, y formatos de archivos de otras plataformas, los datos de salida

son los mismos organizados en una estructura ya sincronizada para poder utilizar la

herramienta de visualización en 3D, y las de análisis clínico. Finalmente como opción

adicional de este módulo se genera una salida en forma de archivos para grabar en otros

formatos.

Page 22: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

17

Ilustración 5. Arquitectura general del proyecto.

Análisis clínico

ModeloBiomecánico

ModeloOseo

(abierto)

Traductor(formatos)

.3d,otrosformatos

FuerzasElectromimiografiaMedidas

antropometricas

Otrosdatos

Archivos

Modelo de datosModelo de datos

Page 23: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

18

A partir de este modelo preliminar, la tesis se dedica a la obtención, sincronización y

migración de los datos dentro del modelo, atacando tres problemas fundamentales del

laboratorio:

1- La sincronización de las diferentes fuentes de datos obtenidos.

2- La integración de datos de diferentes fuentes para almacenarlos y manejarlos

centralizados.

3- La integración con otras plataformas ya existentes, a través de la importación y

exportación de archivos.

Como se puede observar todas las partes del modelo están ampliamente relacionadas, por

tal motivo se desarrolló en paralelo con la tesis de Nelson Ramón cuyo objetivo fue el

análisis clínico GAIT[2], para generar un modelo consistente que cumpla con las

necesidades del laboratorio y su futura expansión.

A medida que las partes sean implementadas se dejará un API documentado para su futura

utilización y conexión con otros módulos y aplicaciones.

Page 24: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

19

Explicación de los módulos y modelos:

Módulo de Captura: incluye todos los procesos de captura de fuerzas, movimiento,

mimeografia, etc.; entrega la información al módulo de sincronización y la lleva sin

procesar en términos de XYZ, magnitudes y tiempo. En la tesis se asume que el

problema de captura ya esta resuelto.

Módulo de Sincronización: recibe todo tipo de información como posición, fuerza, etc.,

con diferentes métodos de toma de tiempo encargandose de resolver el problema y

realizar la correspondencia del movimiento con la fuerza, para luego almacenarla en el

modelo de datos.

Módulo Traductor: este módulo se encarga de la importación y exportación de archivos,

relativos a otras aplicaciones o estándares de movimiento humano, con el objetivo de

hacer más compatible el sistema y tener la posibilidad de intercambiar información

con otras plataformas.

Modelo Biomecánico (cálculos clínicos): este modelo realiza los cálculos y

correspondencias de datos. Extrae la información concerniente al médico, como

gráficas, comparaciones, etc. El modelo de datos propuesto se integra a este, para que

Page 25: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

20

pueda leer e interpretar del repositorio. El modelo fue desarrollado por Nelson

Ramón[13].

Modelo Óseo: este modelo es propuesto para el manejo de jerarquía del esqueleto, la

visualización 3D, y la integración de los músculos importantes en el estudio de marcha

con la visualización.

Page 26: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

21

MARCO TEÓRICO

El estudio de captura de movimiento tiene elementos comunes y predominantes en todos

los sistemas. Se manejan notaciones matemáticas similares brindando la posibilidad de

reinterpretar los datos para otros sistemas, sucediendo lo mismo con la nomenclatura de los

puntos articulares. Por eso es fundamental en este desarrollo tener en cuenta elementos que

brinden flexibilidad y compatibilidad a los desarrollos del laboratorio.

3.1 ARCHIVOS

3.1.1. Notación matemática.

Hay varias posibilidades de capturar datos y representarlos como matrices de rotación,

quaterniones o ángulos de Euler en un archivo. Para todas estas representaciones existe la

posibilidad de convertirlas de unas en otras, por medio de transformaciones matemáticas,

que se pueden encontrar en cualquier libro de cálculo o computación gráfica.

3.1.2. Nombres de los elementos

La mayoría de archivos de captura utilizan nombres de elementos muy parecidos, pero no

se puede suponer que sean iguales. De hecho en muchos casos la jerarquía entre elementos

no es la misma por lo tanto hay que tener claro cuales son los posibles equivalentes de un

archivo a otro.

Page 27: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

22

Hay de todas maneras muchos archivos que no manejan nombres de las partes del cuerpo,

para conservar la flexibilidad del programa. Pero esta característica se convierte en un

inconveniente ya que si no se sabe la correspondencia entre los puntos capturados y las

articulaciones resulta imposible reutilizarlos con facilidad.

3.1.3. Manejo de tiempos

Hay dos formas de almacenar el tiempo en un archivo de este tipo, especificando la rata de

capturas por segundo o bien el intervalo de tiempo entre cada captura.

Si el movimiento fue capturado por video o por tracking magnético, los tiempos están

sujetos a los siguientes factores, primero, al número de cuadros por segundo a que se

captura el video (entre 30 y 60 fps) y segundo, al ancho de banda del sistema de tracking

magnético (variar mucho). Adicionalmente en un sistema de tracking magnético, cada

sensor puede tener una rata diferente de captura lo que hace importante que se especifique

la de cada punto.

3.1.4. Unidades.

Algunos archivos proveen las unidades de translación o de giro y aunque se pueden ignorar

para la mayoría de los casos, son importantes en la interpretación de algunas

implementaciones. Se pueden especificar datos como metros o pies, radianes o grados.

Page 28: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

23

3.1.5. Esqueletos de los personajes.

El esqueleto de los personajes por lo general se define con una metodología similar en

todos los casos; se aplica en la mayoría de sistemas de animación. El esqueleto de un

personaje es tradicionalmente definido por una jerarquía de segmentos, cada uno con un

padre y un hijo si aplica, donde el movimiento del nodo hijo es dependiente del nodo padre.

Un ejemplo de esto H-Anim[9].

3.1.6. Datos.

3.1.6.1. Posicionales.

Este tipo de datos se obtiene tradicionalmente de captura por medio óptico o sonoro, y

provee únicamente datos de tipo posicional y no rotacional. La captura por medio óptico se

divide en dos categorías, la del cuerpo y la facial. La primera realizada con un arreglo de 6

a 12 cámaras y la segunda con una sola cámara. Ambas utilizan marcadores para capturar el

movimiento, dependiendo del tipo unos son más precisos que otros.

3.1.6.2. Magnéticos

Por otro lado los datos magnéticos son obtenidos por trackers, consistentes en receptores

con una gran ventaja, pueden calcular posición y rotación con respecto al marco de

referencia, lo define un sensor magnético principal. La información que proviene de este

tipo de captura no tiene jerarquía alguna, todo depende de cómo el usuario haya colocado

los sensores ya que cada uno es independiente.

Page 29: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

24

3.1.6.3. Análogos

Son aquellos datos que provienen de fuentes análogas como placas de fuerza, sistemas de

medición EMG y aquellos que se quieran añadir para los análisis. Los datos son

almacenados de forma plana, es decir no tienen una estructura específica. Se almacenan en

canales conformando una lista de datos que luego es interpretada de acuerdo a la definición

del contenido de cada canal. Los canales tienen datos adicionales para su respectiva

interpretación.

3.2. Detalle de formatos

3.2.1. C3D (National Institute of Health)

El formato fue pensado exclusivamente para el uso médico y para la integración de los

posibles datos en los exámenes GAIT[5]. Por defecto considera puntos 3D y placas de

fuerza, sus definiciones detalladas se requieren para todas las aplicaciones que lean de este

formato. La gran versatilidad se encuentra en poder almacenar nuevos tipos de datos, como

los EMG o incluso otros, que manejen eventos durante el examen, como disparadores,

medidas antropométricas, etc. Los datos nuevos pueden tener hasta 7 dimensiones[4].

Fue diseñado para ser multiplataforma, especificando el tipo de procesador con el que fue

creado.(Intel, SGI, DEC).

Page 30: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

25

El formato esta constituido de la siguiente manera:

Ilustración 6. Definición formato C3D

La primera parte es una copia de datos primordiales del archivo pero se puede obviar y

leerlos directamente de la sección de parámetros (lo más importante del archivo). Allí se

definen todos los tipos de datos que tendrá con sus especificaciones como escala, offset del

archivo, etc. Si se leen directamente los datos en el encabezado sin saber la procedencia del

archivo, puede llevar a errores debido a que en éste no se especifica la plataforma con la

cual fue creado. Por eso se recomienda leer directamente de la sección de parámetros.

Sección de parámetros

Esta sección tiene un encabezado que nos indica el tipo de máquina en que se generó el

archivo y la longitud en bloques de esta sección que contiene datos fundamentales para

comenzar a leer el archivo. El detalle del encabezado es el siguiente:

Byte Longitud Descripción1 Ox00 hex Flag indicador de comienzo de sección2 Ox00 hex Flag indicador de comienzo de sección3 1 Número de bloques de esta sección4 1 83 + tipo de procesador

1(Intel), 2 (DEC), 3(SGI, Java)Ilustración 7. Detalle de la estructura del encabezado C3D.

Page 31: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

26

Para definir estos archivos se propuso una estructura muy simple. Se definen grupos y

parámetros, cada parámetro pertenece a un grupo, pero no a varios. Pueden haber varios

parámetros con el mismo nombre pero en diferente grupo. Los grupos generalmente son el

tipo de datos, pueden ser puntos(POINT), EMG, datos análogos(ANALOG), o placas de

fuerza(FORCE_PLATAFORM), éstos son los más comunes.

Cada grupo se define con los siguientes datos: el identificador numérico que va de 0 a 127

(siempre es negativo), el nombre y la descripción. El grupo en un archivo esta conformado

de la siguiente manera:

Byte Longitud Descripción1 1 Número de caracteres del nombre del grupo puede ser de 1 a

127(N)2 1 Identificación numérica (-1 a –127)3 N Nombre del grupo3+n 2 Número entero, que representa el offset en bytes al siguiente

grupo3+n+2 1 Número de caracteres de la descripción3+n+3 M Descripción

Ilustración 8. Detalle de la estructura de un grupo de C3D en bytes.

Los parámetros van desde la descripción hasta el número de datos almacenados en el

archivo. Estos se añaden de acuerdo a lo que requiera utilizar la aplicación. De todas

maneras hay ciertos parámetros fundamentales que no pueden faltar en ningún archivo.

Como son los que aparecen en la siguiente lista:

Page 32: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

27

Ilustración 9. Tipos comunes de parámetros en C3D con sus tamaños máximos.[4]

Hay otra serie de parámetros que se convirtieron en estándar, ya que las aplicaciones más

comunes los manejan.

Page 33: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

28

Cada parámetro esta definido con la siguiente estructura:

Byte Longitud Descripción1 1 Número de caracteres del nombre del parámetro2 1 Identificador numérico del parámetro, siempre es

positivo (0 127)3 N Nombre del parámetro3+n 2 Número entero que indica el offset en bytes hasta el

siguiente parámetro.3+n+2 1 Largo de cada elemento de datos. Puede ser –1 para

caracteres, 1 para byte, 2 para enteros y 4 para flotantes.3+n+3 1 Número de dimensiones, máximo 73+n+4 D Dimensiones de los parámetros.3+n+4+d T Los datos de los parámetros.3+n+4+d+t 1 Número de caracteres de la descripción del parámetro3+n+4+d+t+1 M Descripción del parámetro

Ilustración 10. Tabla de composición de un parámetro en C3D por bytes.

3.2.2. Archivo .3d del sistema APAS

Un aspecto considerado es la compatibilidad con APAS, respecto a la lectura de los

archivos. Para la lectura de éstos fue necesaria una interpretación paso a paso, debido a las

inconsistencias encontradas en los archivos frente al formato que provee la compañía. A

continuación se muestra una tabla con las observaciones respectivas y la interpretación que

se le dieron a los datos ya que muchos son únicamente funcionales para la implementación

de APAS[3].

Page 34: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

29

Bloque del EncabezadoPalabra(16 bits)

Tipo dato Contenido especificaciónformato

Observaciones

0 – 3 A S S O C R O O TSEQUENCE NAME

Nombre corto que se le da a lasecuencia, se ignora.

4 FILE TYPE 1=1D 2=2D3=3D

Se refiere al número de dimensionesque maneja el mundo, solo se tiene encuenta el caso de 3 dimensiones.

5 # V I E W S U S E DCREATING 3D FILE

Es el número de cámaras utilizado en lacaptura.

6 – 11 VIEW # FOR EACHVIEW USED

Número de referencia para identificarcada vista.

12 NP = #POINTS PERFRAME

Número de marcadores que hay en lasecuencia.

13 NF = #FRAMES INSEQUENCE

Número de frames de la secuencia.

14 – 15 X MIN VALUE [FP] Sirven para probar que el archivo seesta cargando bien y se refieren a losvalores mínimos que pueden obtenerlos marcadores X.

16 – 17 Y MIN VALUE [FP] Sirven para probar que el archivo seesta cargando bien y se refieren a losvalores mínimos que pueden obtenerlos marcadores Y

18 – 19 X MAX VALUE [FP] Sirven para probar que el archivo seesta cargando bien y se refieren a losvalores máximos que pueden obtenerlos marcadores X

20 -21 Y MAX VALUE [FP] Sirven para probar que el archivo seesta cargando bien y se refieren a losvalores máximos que pueden obtenerlos marcadores Y.

22 –23 Z MIN VALUE [FP] Sirven para probar que el archivo seesta cargando bien y se refieren a losvalores mínimos que pueden obtenerlos marcadores Z

24 – 25 Z MAX VALUE [FP] Sirven para probar que el archivo seesta cargando bien y se refieren a losvalores máximos que pueden obtenerlos marcadores Z

Ilustración 11. Conformación del bloque de encabezado de un archivo .3d

Page 35: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

30

Bloque Sygma

Este bloque es opcional. En caso de no aparecer comienzan directamente los datos brutos

de los marcadores, en caso contrario se supone que el bloque de datos brutos debe

comenzar en 24*Número de Marcadores+4, lo que se cumple en algunos casos, porque no

es consistente con todos los archivos que se dan de muestra. Para el correcto

funcionamiento se trabajó en encontrar la manera para que lea correctamente los datos del

laboratorio, ya que parecen conservar el número correcto de bytes.

Palabra(16 bits)

Tipo dato Contenidoespecificación formato

Observaciones

26 -2 Block Marker Este marcador indica elinicio del bloque .

27 -2 Block Marker28 – 29 SIGMAX-1, ERROR-

X POINT #1Todos los puntos acontinuación son loserrores calculados porcada marcador. No setoman en cuenta para eldesarrollo.

30-31 SIGMAY-1, ERROR-Y POINT #1

32-33 SIGMAZ-1, ERROR-Z POINT #1

….SIGMAX-NP,ERROR-X POINT NPSIGMAY-NP,ERROR-Y POINT NPSIGMAZ-NP,ERROR-Z POINT NP

Ilustración 12. Conformación del bloque Sygma de un archivo .3d, error por punto.

Page 36: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

31

Bloque de datos en bruto

Palabra(16 bits)

Tipodato

Contenido especificación formato Observaciones

1 TIME FRAME #1 [MS] Tiempo del frameen milisegundos

2 - 3 X POINT #1 [FP] Coordenada X delprimer marcador enel primer frame.

4 - 5 Y POINT #1 [FP] Coordenada Y delprimer marcador enel primer frame.

6 – 7 Z POINT #1 [FP] Coordenada Z delprimer marcador enel primer frame.

8 – 9 RESIDUAL POINT #1 [FP] Punto residual delmarcador uno paracalcular errores.

10 VIEWS USED FLAG [1 BIT PERVIEW]

cámaras usadas enla captura del punto.Si el bit estaencendido o noindica si la cámaralo visualizó o no.

11 – 19 X-Y-Z RESIDUAL-VIEWS_USEDPOINT #2

..........2+(N-1)*9 -> 10+(N-1)*9

X-Y-Z RESIDUAL-VIEWS_USEDPOINT #N

..........2+NP*9 -1 MARKER FRAME #2 Marcador de inicio

de un nuevo frame.2+NP*9+1 TIME FOR FRAME #2 [MS] T i e m p o e n

milisegundos delcuadro 2

NEXT NP*9 Words X-Y-Z RESIDUAL-VIEWS_USED,POINTS 1->NP, FRAME #2

..........(NF-1) * (2+NP*9) -1 MARKER FRAME NF Marcador de inicio

de nuevo frame( N F - 1 ) *(2+NP*9)+1

TIME FRAME NF

Page 37: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

32

next NP*9 Words X-Y-Z-RESIDUAL-VIEWS_USED,POINTS 1->NP, FRAME NF

NF*(2+NP*9) -99 MARKER FOR END OF RAWXYZ DATA

Marcador de fin debloque.

NF*(2+NP*9)+1 -99 MARKER FOR END OF RAWXYZ DATA

Marcador de fin debloque.

Ilustración 13. Conformación del bloque de datos en bruto de un archivo .3d

Bloque con datos suavizados

Una vez terminan los datos brutos , comienza inmediatamente la sección de datos

suavizados los cuales no tienen ningún tipo de indicador para su comienzo.

Palabra Tipo dato Contenidoespecificaciónformato

Observaciones

0 – 1 SX1, SMOOTHEDX VALUE POINT#1

V a l o r d e l acoordenada X pasadapor un filtro, cuadro1.

2 – 3 SY1, SMOOTHEDY VALUE POINT#1

V a l o r d e l acoordenada Y pasadapor un filtro, cuadro1.

4 – 5 SZ1, SMOOTHEDZ VALUE POINT#1

V a l o r d e l acoordenada Z pasadapor un filtro, cuadro1.

. . . . .SX-NP,SMOOTHED XVALUE POINT NPSY-NP,SMOOTHED YVALUE POINT NPSZ-NP,SMOOTHED ZVALUE POINT NP

Page 38: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

33

VALUE POINT NPNP*6 0 SEPERATOR

FLAGFlag indicador del finde la sección de datossuavizados.

NP*6+1 0 SEPERATORFLAG

Ilustración 14. Conformación del bloque de datos filtrados de un archivo .3d

El siguiente bloque son los datos de posición / velocidad / aceleración suavizados que no

los tomo en cuenta para el desarrollo del programa pero tienen la forma básica de los

anteriores.

3.2.3. Archivo .ana del sistema APAS

Enviroment Record.

Esta sección almacena todos los datos referentes a la información del sistema en general.

La información siempre es la misma mientras no se cambie el sistema[3].

WORDOFFSET(16 bits) TYPE DESCRIPTION

Observaciones

0 – 1 I -1 / -1 MARKER

Marcador de inicio de header, por logeneral no se encuentra al inicio delarchivo, hay que buscarlo. Generalmenteno es el primer byte del archivo. No secuenta con la información de cuál es elcontenido de los primeros bytes.

2 I MAX# CHANNELS

3 I1ST CHANN# [OFFSETZERO & USUALLY ZERO]

Primer canal con información relevante.

4 ILAST CHAN# [OFFSETZERO]

Ultimo canal con información relevante.

5 I TRIG CHANGeneralmente se encuentra después delúltimo canal. Este canal contiene la señalde sincronización con los datos 3d.

Page 39: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

34

de sincronización con los datos 3d.

6 – 7 I*4 #SAMPLES [32BITS]Es el número de muestras totales que hayen el archivo de todos los canales.

8 – 9 F PERIOD [SEC]10 - 11 F TRIG LEVEL [USER UNITS]

12 - 13 FCOMBINED ALLCHANNELS RATE

La suma de todas las frecuencias de loscanales. Este número, dividido el númerode canales da la frecuencia de cada canal.

14 - 15 F PRE-TRIG FRAC16 - 17 F MAX SINGLE CHAN RATE18 I 1ST CHAN TO SAVE19 I LAST CHAN TO SAVE20 I #MICROSEC PER SAMPLE

21 - 22 FA/D -> VOLTS CONVFACTOR

23 IA/D VALUE FOR ZEROVOLTS

24 - 55 FCONV FACTOR VOLTS ->USER [X16 CHAN]

56 - 87 FVOLTS OFFSET FOR ZEROUNITS

88 IINDEX INTO GAIN TABLE1=x1 2=x10 1=x1 2=x2

89 - 90 F AMPLIFIER GAIN

91 - 170 C10 CHAR DESC FOR 16CHANNELS

Cadenas de 10 caracteres con el nombrepara cada canal.

171 - 218 C6 CHAR UNITS FOR 16CHANNELS

Cadenas de 6 caracteres con las unidadesde cada canal.

219 - 266 I DISPLAY LISTS [3x16]

267 I1ST PLATE CHANNEL[OFFSET ONE]

268 - 282 free

283 IPLATE DIMENSION UNITS0=CM 1=M 2=IN 3=FT

Unidades de los datos que da la placa.

284 - 295 C

(3, 6) PRI / SEC / TERC FLAGFOR PLATE CHANNELSPACKED 2 PER WORD

296 IPLATE TYPE 0=NONE1=KISTLER 2=AMTI

297 - 299 IPRI / SEC / TERC FLAG FORSINGLE / MULT [1/0]

300 - 305 F PRI / SEC / TERC TIMECONSTANT FORENVELOPE

Page 40: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

35

CONSTANT FORENVELOPE

306 - 309 IZERO VOLTS OFFSETEACH OF 4 GAINS

310 I#PLATES ON SYSTEM[0/1/2]

Número de placas en el sistema, máximo2.

311 - 334 F

(6,2) PLATE DIMENSIONFOR 2 PLATES"A" DIST XDUCER TO "X""B" DIST XDUCER TO "Y""AZ" DIST IN "Z" FROM

XDS TO TOP OF PLATE"X" LENGTH"Y" LENGTHfree

El primero y el segundo se usan en casode usar placas Kistler, el tercero indica elespesor de la placa, y el cuarto el largo yancho para cada placa.

335 - 336 FANGLE OF 2ND PLATERELATIVE TO 1ST

Angulo entre la primera y segunda placa,se ignora.

337 - 338 FX DIST OF 2ND PLATE REL1ST [CENTERS]

Distancia en x entre la primera y segundaplaca.

339 - 340 FY DIST OF 2ND PLATE REL1ST [CENTERS]

Distancia en y entre la primera y segundaplaca.

341 - 346 free

347 IIDCODE 1=LABMASTER2=CES Rev#1 3=CES Rev#3

348 - 349 I -99 / -99 MARKER Marcado de fin de header.Ilustración 15. Conformación del bloque de descripción del ambiente de un archivo .ana

Extended Enviroment Record

Esta información es adicional y es relevante para el análisis de las placas de fuerza, porque

contiene las unidades, los mínimos y los máximos, y datos básicos como el factor de

ganancia de volts, el offset, etc.

Page 41: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

36

WORDOFFSET(16 bits) TYPE DESCRIPTION

Observaciones

I -3 / -3 MARKER Marcador de inicio de header extendido.

2 I1ST CHAN FOR SCOPEDISPLAY [OFFSET ONE]

3 ILAST CHAN FOR SCOPEDISPLAY [OFFSET ONE]

4 – 91 FMIN/MAX FOR DISPLAY 16CHAN + 6 PLATE CHAN

Mínimo y máximo de cada canal.

92 – 100 Free

101 IPLATE FORCE UNITS 1=NT2=KG 3=LBS

Unidades de las placas de fuerza.

102 ICHARGE AMP TIME CONST1=NO 2=YES

103 – 104 ICHARGE AMP X/Y & ZRANGE SELECTION [1 -> 4]

105 I

FLAG FOR CHARGE AMPRESET <-> OPER. 1=NO2=YES

106 – 117 I

X/Y/Z PLATE CAL FOR2PLATES [pc/Nt]STORED AS INTEGER=F.P.* 100

118 ICHARGE AMP MODEL#1=9861 2=9863 3=9865

119 I

FLAG FOR AUTOCALC OFPLATE CHANSCONVERSION 1=YES 2=NO

120 – 124 ICHARGE AMP RANGESSTORED AS INT=FP * 10

125 IFLAG FOR AMPLIFIEROUTPUT UNITS 1=pC 2=NT

126 – 137 I

X/Y/Z/MX/MY/MZ PLATECAL 2PLATES [LB/uV/V]STORED AS INTEGER= FP *1000

138 I

EXCITATION VOLTAGEFOR AMTI PLATES [*100]STORED AS INTEGER = FP* 100

139 I GAIN FACTOR FOR AMTIELECTRONICS

Page 42: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

37

ELECTRONICS140 - 151 Free

151 – 152 F

REAL-TIME COPBULLSEYE DISTANCEBETWEEN BANDS

153 I

FLAG TO DRAW TRACEREAL-TIME COP 1=YES2=NO

154 I

FLAG TO SOUND TONEREAL-TIME COP 1=YES2=NO

155 IPLATE FOR REAL-TIMECOP [1/2/3]

165 – 447 Free

Según esta especificación aquí deberíanhaber 586 bytes libres lo cual esincorrecto, son 590 bytes.

448 – 449 I -99 / -99 MARKER Fin de header extendido.Ilustración 16. Conformación del bloque de descripción extendida del ambiente de un

archivo .ana

Data record format

En está sección se encuentran los datos en bruto de los canales análogos, también se

encuentra la configuración básica en el momento de la captura.

WORDOFFSET TYPE DESCRIPTION

Observaciones

0 – 1 I -2 / -2 MARKER Marcador de inicio de datos análogos.

2 – 3 I*4POINTER TOENVIRONMENT RECORD

Apuntador al bloque del header.

4 – 13 C 20 CHAR ID FOR TRIALIdentificador de 20 caracteres de laprueba.

14 – 17 C 8 CHARACTER DATE Fecha de la prueba

18 IMAX# CHANNELS(USUALLY 16)

De aquí en adelante se repiten losmismos datos que en la sección deenviroment.

19 I

1ST CHANNEL SAMPLED(OFFSET ZERO USUALLYZERO)

20 I LAST CHANNEL SAMPLED(OFFSET ZERO)

Page 43: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

38

(OFFSET ZERO)

21 ITRIGGER CHANNEL(OFFSET ONE)

22 – 23 I*4 #SAMPLES (32 BIT)24 – 25 F PERIOD (SEC)

26 – 27 FTRIGGER LEVEL (USERUNITS)

28 – 29 F

COMBINED ALLCHANNELS RATE(SAMPLES/SEC)

30 – 31 F PRE-TRIG FRACTION

32 – 33 FMAX SINGLE CHANNELRATE

34 I1ST CHANNEL TO SAVE(OFFSET ONE)

35 ILAST CHANNEL TO SAVE(OFFSET ONE)

36 I#MICROSEC PER SAMPLE(OFFSET ZERO)

37 I1ST SAMPLE# TO SAVE(OFFSET ZERO)

38 ILAST SAMPLE# TO SAVE(OFFSET ZERO)

39 – 40 FDEFAULT X-RANGE FORPLOTTING IF NOT ZERO

Específico de APAS.

41 ICURVE LIST TO PLOT0=1ST 1=2ND 2=3RD

Específico de APAS.

42 – 43 I*4 2nd Save44 - 59 free

60 –59+NS

DATA FOR 1ST SAVEDCHANNEL

Comienzan los datos almacenados comoShort, están organizados por canal, asíque se leen datos canal por canal, no hayningún separador que defina dondecomienza cada canal. Se calcula al tenerel número total de muestras y el númerode canales.

60+NS*NCH ->61+NS*NCH -99 / -99 MARKER

Marcador de fin de información análogay fin de archivo.

Ilustración 17. Conformación del bloque de datos de un archivo .ana

Page 44: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

39

3.3. PLACAS.

3.3.1. Cálculos de placas AMTI y BERTEC

Ilustración 18. Placa tipo BERTEC con sus elementos.

Cada placa de fuerza es calibrada individualmente y tiene una matriz única [C] de

calibración con unidades en N/V y N*m/V. Esta matriz es necesaria para obtener las

fuerzas y momentos de acuerdo a la salida de los canales análogos[10]. Las placas AMTI y

BERTEC cuentan con los mismos canales análogos, Fx, Fy, Fz, Mx, My, Mz y se obtienen

a partir de la siguiente fórmula:

Fx s1Fy s2Fz = [C]6X6 s3Mx s4My s5Mz s6

Page 45: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

40

Donde F y M son las fuerzas y los momentos, y S las salidas de las señales de la placa en

Volts, de tal forma que al multiplicar por la matriz C las unidades quedan en Newtons y

Newtons*metro.

Cálculo del punto de aplicación y del par.

A partir de las fuerzas y momentos se puede calcular el punto de aplicación en X, Y como

aparece en la figura.

Ilustración 19. Resultados que se quieren obtener a partir de los datos de BERTEC[14]

Page 46: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

41

Las fórmulas para estos cálculos son las siguientes:

x = ( -h*Fx - My) / Fz

y = ( -h*Fy + Mx) / Fz

Tz = Mz - x*Fy + y * Fx

Donde h es el espesor de la superficie superior de la placa y Tz es el torque aplicado sobre

la placa.

A continuación un ejemplo del cálculo de las fuerzas y momentos, y el punto de aplicación.

Se toman las siguientes muestras para las ganancias del amplificador.

Canal Ganancia(Gain)

1 102 103 54 105 106 20

En cualquier instante se toman las siguientes muestras de los canales de salida de las

placas:

Page 47: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

42

Canal Salida(Voltios)

1 -1.4502 2.2353 4.7654 3.0955 -0.5756 -1.016

Dividiendo las salidas de los canales por la ganancia de cada uno obtenemos:

S1 = -1.450/10 = -0.1450

S2 = 2.235/10 = 0.2235

S3 = 4.765/5 = 0.9530

S4 = 3.095/10 = 0.3095

S5 = -0.575/10 = -0.0575

S6 = -1.016/20 = -0.0508

Utilizamos esta matriz de calibración:

1200 -5 0 3 2 1020 1190 10 -4 1 -5-15 0 1800 0 6 230 -40 1 450 -3 035 2 -1 2 300 0

2 1 -2 -2 0 250

Page 48: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

43

Entonces al multiplicar las salidas por la matriz da como resultado lo siguiente:

Fx = (1200) * (-0.1450) + (-5*(0.2235) + (0)*(0.9530) + +(3)*(0.3095) + (2)*(-0.0575) +

(10)*(-0.0508) = - 174.812 N

De manera similar,

Fy = 272 N

Fz = 1716 N

Mx = 131 N*m

My = -22 N*m

Mz = -15 N*m

Ahora calculamos la ubicación en X y Y asumiendo que el espesor de la cubierta de la

placa es de 5 mm.

Entonces,

x = ( -h*Fx – My) / Fz = [(-0.005)(-175) +22] / 1716 = 0.013 m

y = ( -h*Fy + Mx) / Fz = [(-0.005)(272) + 131] / 1716 = 0.076 m

* Se puede asumir, si h es muy pequeño que x = -My/Fz y y = Mx/Fz

Page 49: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

44

3.3.2. Cálculos de placas Kistler.

El tipo de plataformas Kistler es también ampliamente usado en el área, es recomendado

por obtener a partir de sus canales mucha más información que con los otros tipos de

placas. Con los diferentes canales que se reciben se pueden calcular momentos, fuerzas,

puntos de apoyo y coeficientes de fricción con mucho más presición.

Ilustración 20.Descripción de los componentes y resultantes de una placa Kistler.[15]

Las placas Kistler reciben 8 canales explicados en la siguiente tabla:

Nombre Canal DescripciónFx12 1 Fuerza en x medida por el sensor 1 y 2.Fx34 2 Fuerza en x medida por el sensor 3 y 4.Fy14 3 Fuerza en y medida por el sensor 1 y 4.Fy23 4 Fuerza en y medida por el sensor 2 y 3.Fz1 5 Fuerza en z medida por el sensor 1.Fz2 6 Fuerza en z medida por el sensor 2.Fz3 7 Fuerza en z medida por el sensor 3.Fz4 8 Fuerza en z medida por el sensor 4.

Ilustración 21. Canales de placas Kistler

Page 50: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

45

Para realizar los cálculos a continuación presento las fórmulas dadas por Kistler:

Parámetro Fórmula DescripciónFx Fx12 + fx34 Fuerza medio-lateralFy Fy14 + fy23 Fuerza anterior-posteriorFz Fz1 +fz2 + fz3 + fz4 Fuerza VerticalMx B * (fz1+ fz2 + fz3 + fz4) Momento de la placa en XMy A * (-fz1+ fz2 + fz3 - fz4) Momento de la placa en YMz B * (-fx12 + fx34) +a * (fy14 –

fy23)Momento de la placa en Z

Mx’ Mx +Fy*az0 Momento en X en el tope de lasuperficies.

My’ My – Fx*az0 Momento en Y en el tope de lasuperficie.

Ax -My’/Fz Coordenada X del punto de aplicaciónAy Mx’/fz Coordenada Y del punto de aplicaciónTz Mz – Fy * ax +Fx * ay Momento libreCOFx Fx/Fz Coeficiente de fricción en XCOFy Fy/Fz Coeficiente de fricción en YCOFxy Sqrt(COFx2 + COFy2) Coeficiente de fricción absoluto.

Ilustración 22. Parámetros a partir de los datos brutos de una placa Kistler

Page 51: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

46

PROPUESTA DE SOLUCION PARA EL PROBLEMA DE MANEJO DE DATOS DEL

LABORATORIO

La solución que se propone en este sistema es la creación de un API de programación

integrable con el resto de las soluciones del sistema del laboratorio. Este API contiene todo

el modelo de datos básicos que integra los diferentes canales que recibe. Es portable al

poder comunicarse con otras plataformas leyendo y escribiendo de sus archivos. Se plantea

a JAVA como la elección más adecuada para la compatibilidad del sistema, integrándolo

con una de las librerías de gráficos 3D más potentes, OpenGL, facilitando la comunicación

de estos por medio de objetos y la tecnología JNI para comunicación de objetos JAVA y

C++.

4.1. REQUERIMIENTOS

4.1.1. Plataforma tecnológica.

Se han revisado 4 posibilidades básicas de implementación del proyecto, considerando

compatibilidad y extensibilidad.

• C++ y OpenGL

Esta plataforma brinda compatibilidad al utilizar GLUT para la visualización y el sistema

de ventanas (utilidad que no es completamente transparente, hay diferentes

implementaciones para cada sistema operativo). La conexión a los dispositivos de captura

es sencilla, en particular los de tipo magnético, que son los únicos que necesitan drivers, ya

Page 52: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

47

que la mayoría son desarrollados para el lenguaje de programación C. No brinda mayor

ayuda con el manejo de XML y la compatibilidad con otras plataformas.

• JAVA y JAVA3D

Java como primera instancia, brinda varios API que facilitan la implementación del parser,

la transformación de datos y la posibilidad de extensibilidad con XML lo cual es mas difícil

de implementar en lenguaje C. El problema principal son los drivers con los dispositivos de

captura, los cuales como en el caso de Flock of Birds, carecen de filtros de ruido. Java3D

esta limitado a trabajar únicamente con Linux y Windows, pero tiene la posibilidad de

importación de archivos de visualización importantes para mejorar la experiencia visual.

Punto fundamental para el laboratorio.

• VTK

Como tercera propuesta es una herramienta muy completa para tratamiento de imágenes y

visualización 3D. Pero es una plataforma poco intuitiva y relativamente compatible, por lo

tanto no la considero por su complejidad y dificultad para manejarla con objetos y C++.

• JAVA y OpenGL

Finalmente, después un largo tiempo de búsqueda de una alternativa que fuera compatible

con todos los sistemas y además extensible, se encontró el trabajo de tesis de Leo Chang y

Sven Goethel en 1997 con el cual se generó una librería que conecta Java y OpenGL (C++)

Page 53: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

48

a través de la tecnología JNI (Java Native Interface) para comunicación entre objetos de los

dos lenguajes. Lo que hace la aplicación muy compatible ya que solo tiene dos

requerimientos tener una máquina con JDK 1.1.7 y OpenGL 1.3, disponible en la mayoría

de computadores en el mercado, como lo son Linux, Windows, Unix y Mac OS. Esta

librería es distribuida gratuitamente por la compañía de software JauSoft[12].

4.1.2. Requerimientos Funcionales.

1- Servir de medio facilitador para el desarrollo de futuros módulos del proyecto.

2- Integrar las diferentes fuentes de datos del laboratorio, para tener un solo archivo de un

examen.

3- Manejar diferentes tipos de datos como pueden ser puntos 3d, placas, EMG, etc. dejando

la posibilidad abierta para la implementación de otros.

4- Proveer una interfase interactiva para el manejo y preparación de datos para análisis.

Como es la asignación del set de marcadores.

5- Servir de soporte inicial para una futura organización administrativa, por medio de

registros de eventos, datos del autor del archivo y bloqueo de datos.

6- Procesar los datos para ser retornados como datos del mundo real con sus respectivas

unidades.

7- Proveer una herramienta de sincronización básica para la integración de los datos

actuales.

Page 54: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

49

8- Representar tridimensionalmente la información obtenida en el examen, para una mejor

interacción con el usuario.

9- Proveer de compatibilidad al programa con el sistema actual por medio de la importación

y exportación entre archivos C3D y los formatos de APAS.

4.1.3. Requerimientos no funcionales

1- Proveer de una herramienta gráfica que permita visualizar todos los datos del examen.

2- Permitir ver por medio de ventanas los detalles relevantes de cada uno de los datos a

visualizar.

3- Proveer formas para correlacionar lo que sucede en ventanas diferentes a la gráfica y

manifestarlo en esta.

4- Simplificar lo máximo posible el sistema de alistamiento de datos para procesamiento.

5- Debe ser multiplataforma, puede funcionar en Linux, Windows, Unix y Mac.

6- Toda la documentación especificada en javadoc, para facilitar futuras implementaciones.

Page 55: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

50

4.2. Consideraciones de la aplicación

4.2.1. Propiedades del mundo virtual

El mundo virtual esta construido de acuerdo con las características del mundo de los

archivos C3D. La ubicación de los ejes que construyen el mundo están dispuestos de la

siguiente manera.

Ilustración 23. Ejes del mundo de la aplicación

El mundo tiene unidades en cm, m, pulgadas, etc, que son provistas por el archivo y si este

no las tiene, por defecto se le asigna una unidad y de acuerdo a ella el programa realiza la

conversión necesaria para una correcta visualización.

z

xy

Page 56: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

51

4.2.2. Conversiones de diferentes estándares

Para solucionar el problema de compatibilidad con otros mundos virtuales, se resuelve

dejar todas las propiedades estándares básicas al kernel del programa, el cual no se

involucrara en la interpretación de mundos diferentes, dejando esta responsabilidad a cada

módulo de lectura de archivos. Por otro lado esto permite que la librería sea mucho más

compatible con futuras implementaciones, ya que solo es necesario implementar el módulo

del archivo que se quiera leer cumpliendo con las conversiones necesarias al mundo de

C3D.

Page 57: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

52

DISEÑO DE CLASES

5.1. Explicación del funcionamiento.

Todo comienza por la clase ApasGL. Está clase es una implementación de la interface

CanvasAnimGL, la cual se encarga de interpretar y representar gráficamente en un

recuadro para dibujo todo el contenido de la clase Exam que contiene todos los datos de

una prueba del laboratorio.

La clase principal del sistema es Exam, esta a su vez tiene dos componentes fundamentales

la secuencia de información 3d de los marcadores y la secuencia de la información

análoga , cada una representada por las clases, sequence3D y sequenceANA

respectivamente. Además, contiene otros datos básicos como la rata de video, el número de

cuadros, y los datos básicos del paciente.

La secuencia de datos 3d se conforma a su vez por dos vectores. Uno con la descripción de

los marcadores y sus propiedades (descripción almacenada en la clase Marker) y otro con

los datos 3d; este vector se conforma por los cuadros capturados representados en la clase

Frame. La clase Frame, contiene también otro vector en donde se almacenan las

ubicaciones de cada marcador por cuadro. Cada ubicación se encuentra contenida en la

clase Point3Dmark, la cual contiene la ubicación en X, Y y Z y un identificador numérico

Page 58: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

53

asignado por el sistema para saber que marcador corresponde a la descripción dada en el

vector de marcadores.

La secuencia de datos análogos, tiene tres componentes formados por vectores. El más

importante es el vector de canales donde se almacena la información correspondiente a

cada canal sin procesar, este vector esta compuesto por objetos de la clase Channel, la cual

contiene su escala, descripción, offset y lo más importante un vector con todos los datos

capturados. Para la lectura es necesario tener parámetros de interpretación, como son: las

dimensiones de las placas, las unidades, la correspondencia de cada canal, etc. Con este fin

se construyen los otros dos vectores que contienen la información. Uno es para las placas y

el otro para la mimeografía. En el caso de las placas, cada componente del vector

representa una placa del sistema.

Finalmente se encuentran los módulos de archivos que contienen toda la información para

interpretarlos y adaptarlos al mundo del programa. Cada módulo esta encargado del

almacenamiento y lectura de los archivos en que se especialicen. Estos módulos construyen

un objeto de la clase Exam y luego el objeto se asigna al atributo Exam de la interface

principal para que lo represente gráficamente.

Ver el detalle de la definición de las clases en el Anexo 1.

Page 59: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

54

2

Ilustración 24. Diagrama de clases de la aplicación

Page 60: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

55

ANALISIS DE LOS RESULTADOS

El resultado final ha sido una aplicación a partir del API, para que prepare los ajustes de los

datos como nombres de los marcadores, datos del paciente, etc. Esta fue terminada y

cumple con las funciones básicas para generar los archivos .c3d, los cuales almacenan los

datos análogos, 3D y del paciente.

Como los archivos .3d incluyen los datos no filtrados y no se puede saber si los archivos

.c3d ya han sido filtrados, es necesario la implementación de filtros para reducir los

márgenes de error y que los movimientos sean más suaves y no tengan saltos. Hace falta la

implementación de un registro para futuras funciones administrativas del sistema y mejorar

la seguridad de los datos para evitar posibles inconsistencias.

Ilustración 25. Inicio de la aplicación APASAndes

Page 61: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

56

El sistema funciona de la siguiente manera, primero aparece la ventana de la ilustración 25,

con la subventana de visualización 3d en la que no aparece ningún contenido en primera

instancia.

El usuario tiene dos opciones para comenzar a trabajar y es abrir cualquiera de los tipos de

archivos disponibles, como .c3d del NIH y .3d del sistema APAS. En el caso de los

archivos .3d, el programa guía al usuario a abrir los otros archivos relativos a este examen

como son los .ana. De esta manera al finalizar el proceso carga todos los archivos

simultaneamente y realiza el proceso de sincronización.

Ilustración 26. Dialogo para carga de archivos.

Page 62: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

57

Una vez cargada la información, aparecerá representada en las ventanas y se procederá a

completarla, colocando la información básica del paciente y los nombres de los marcadores

y canales. Si es un archivo .c3d se supone esta completo, por tanto todos los marcadores

aparecerán con su respectivo nombre, al igual que los canales, y los datos del paciente. Si

este archivo no llegase a estar completo de todas maneras se puede modificar,

seleccionando el item, reescribiendo el parámetro, y volviendo a grabar el archivo.

Para la asignación de los nombres de los marcadores a medida que se seleccionan en el

listado, la gráfica indicará cual esta seleccionado y los nombres se colocarán de acuerdo al

set de marcadores que se utilicen en el laboratorio, lo que hace al sistema compatible con

cualquier set médico que se quiera utilizar.

Page 63: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

58

Ilustración 27. Carga de archivo C3D con información sincronizada y lista.

Finalmente se pueden almacenar o extraer datos del exámen a diferentes archivos; el

principal es el archivo .c3d. También existe la posibilidad de almacenar en archivos .3d y

de texto plano. En el de texto plano se incluyen todos los datos para ser utilizados con otras

aplicaciones de manera sencilla. En la figura 28, se muestran las gráficas de los datos

análogos generadas por Excel utilizando archivos planos.

Page 64: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

59

Ilustración 28. Utilización de datos extraidos a un archivo plano en Excel.

Page 65: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

60

CONCLUSIONES

La calibración de los datos del sistema APAS no pueden ser más precisos debido a las

limitaciones de los archivos. Sin embargo es posible calcular la calibración exacta para

integrar con el módulo de captura, colocando un indicador cuando aparece el flash de inicio

de datos análogos.

Para la colocación de un esqueleto en la visualización es necesario tener un árbol de

jerarquía de todas las uniones del esqueleto que se capturen.

La mejor manera de hacer compatible el sistema con otros sistemas, es a través de la

generación de módulos responsables de la importación de archivos.

La integración de todos los datos en un solo formato facilita el análisis y la lectura posterior

de los archivos.

La mejor forma de obtener una calibración es por medio de timestamps colocados cada

cierto tiempo en todas las secuencia de datos.

Un buen sistema de unidades es básico para poder conservar las escalas en el mundo

construido, cada señal o dato debe venir asociado con sus respectivas unidades.

Page 66: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

61

TRABAJOS FUTUROS

Para mejorar el proyecto es fundamental la implementación de más formatos de

movimiento con el fin de utilizar la captura en aplicaciones diferentes a las médicas.

Se encuentra la necesidad de implementar filtros para mejorar la calidad de la información

obtenida, filtros para limpiar el ruido de las señales análogas, y otros para filtrar picos en

las curvas de movimiento, que reflejan los errores del programa de captura.

La parte de mimeografía se dejo abierta al desarrollo por la falta de disponibilidad de

especificación y muestras de datos, por tanto es vital especificar esta parte y desarrollarla

dada su importancia.

Como posibilidad también se encuentra la integración directa con el trabajo que esta

realizando Felipe Carvajal, en la parte de captura, y así se aliste la información para el

análisis una vez se captura.

Para mejorar la interfaz gráfica en 3D, falta por implementar la visualización del esqueleto

y de los músculos para indicar la actividad muscular.

Page 67: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

62

ANEXO 1

DETALLE DE LAS CLASES DE LA APLICACION

Nombre de la clase:ApasGL

Paquete:apasAndes

Descripción de la clase:Implementa la interface CanvasAnimGL de la librería GL4Java y es la encargada degenerar el modelo 3d con su animación respectiva, y eventos.Propiedad Tipo Descripción del modelaje, restricciones,

información para diseño, suposicionesRotate Boolean Bandera que indica si debe girar o no.Nametags Boolean Bandera que indica si debe llevar nametags o

no.Solid Boolean Bandera que indica si debe ser wireframe o

no.Animate Boolean Bandera que indica si debe animar la

visualización o no.PosEyeX Float posición en x de la cámaraPosEyeY Float posición en y de la cámaraPosEyeZ Float posición en z de la cámaraAngleCamera Float Angulo de la cámara respecto al origenEsqueleton Boolean Bandera que indica si debe representar el

esqueleto o no.Frame Número del frame representadoServicio oresponsabilidad

Recibe Retorna Descripción

AnimationCalc String Implementa la función de la clase Exam paraleer los archivos.

Display String Implementa la función de la clase Exam paraguardar los archivos.

Init Inicializa la ventana de visualización y sucontexto.

Model Genera todo el modelo del mundo delexamen, como placas, ejes, puntos3d, etc.

ReInit En caso de suspender el thread de la ventanaesta función reinicializa los valores.

SetFrame Int Modifica el frame de la animaciónGetFrame Int Devuelve el cuadro de la animación en el

cuál se encuentra.

Page 68: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

63

Nombre de la clase:Exam

Paquete:apasAndes

Descripción de la clase:Esta clase contiene al resto de las clases que continúan. Por definición tiene todos los datosrecopilados durante el exámen. Los datos pueden ser 3d, de placas, etc.Propiedad Tipo Desc r ipc ión de l mode l a j e ,

restricciones, información para diseño,suposiciones

Num_markers Int Número de marcadores del exámen.Num_channels Int Número de canales análogos

capturadosVideo_rate Float # de cuadros por segundo de la capturaPacientName String Nombre del paciente examinadoDate String Fecha en la cuál se realiza el exámenWeight Float Peso del pacienteHeight Float Estatura del pacienteAnalog SequenceANA Secuencia de datos análogosSex String Sexo del pacienteSync Int Parámetro de sincronización entre los

datos análogos y 3DAnalog_measurements Int Número de muestras análogas tomadasNumFrames Int Número de cuadros de la secuencia 3DSequence Sequence3D Secuencia 3DS e r v i c i o oresponsabilidad

Recibe Retorna Descripción

GetAnalog SecuenciaANA

Retorna el canal análogo

GetNumChannels Int Devuelve el número de canalesanálogos capturados

SetNumChannels Int Modifica el número de canales de lacaptura

SetAnalog SecuenciaANA

Asigna al exámen un secuencia dedatos análogos.

GetnumFrames Int Devuelve el número de frames de lacaptura

GetSequence Secuencia3D

Devuelve el objeto con la secuencia depuntos3D y marcadores.

GetnumMarkers Int Devuelve el número de marcadores.GetVideoRate Float Retorna el número de cuadros por

segundo de la captura

Page 69: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

64

SetnumFrames Int Modifica el número de cuadros porsegundo de la captura.

SetSequence Secuencia3D

Asigna un objeto de tipo Secuencia3Dal objeto

SetnumMarkers Int Modifica el número de marcadores.SetVideoRate Float Modifica la rata de video.SwapFloat Float Float Recibe un flotante en representacion

little endian y lo retorna enrepresentacion big endian o alcontrario.

LoadExam String Definición abstracta para cargar unarchivo según su tipo de extensión. Losmódulos de archivos implementan estafunción

SaveExamen String Definición abstracta para guardar unarchivo según su tipo de extensión. Losmódulos de archivos implementan estafunción

GetPacientName String Retorna el nombre del paciente.SetPacientName String Asigna el nombre del paciente.GetDate String Retorna la fecha del exámen.SetDate String Asigna la fecha del exámenSetWeight Float Asigna el peso del paciente.GetWeight Float Retorna el peso del paciente.SetHeight Float Asigna la estatura del paciente.GetHeight Float Retorna la estatura del paciente.SetSex String Asigna el sexo del paciente.GetSex String Retorna el sexo del paciente.Set Sync Int Asigna el parámetro de sincronización

de los datos análogos y 3D.GetSync Int Retorna el parámetro de sincronización

de los datos análogos y 3D.SetAnalog_measurements

Int Asigna la estatura del paciente.

GetAnalog_measurements Int Retorna la estatura del paciente.SetNumFrames Int Asigna la estatura del paciente.GetnumFrames Int Retorna la estatura del paciente.

Page 70: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

65

Nombre de la clase:Sequence3D

Paquete:ApasAndes.3d

Descripción de la clase:Implementa el modelo donde se almacenan todos los datos de la captura de movimiento.Contiene un vector con la descripción de los marcadores y otro con los datoscorrespondientes a cada marcador.Propiedad Tipo Descripción del modelaje, restricciones,

información para diseño, suposicionesMarkers Vector Vector donde se almacenan todos los

parámetros referentes a los marcadores.Sequence Vector Vector donde se almacena todos los datos

de la localización de los marcadores porframe.

S e r v i c i o oresponsabilidad

Recibe Retorna Descripción

AddFrame Frame Añade al vector sequence un frame con laubicación de cada marcador.

AddMarker Marcador Añade al vector markers la descripción deun marcador.

GetMarkers Vector Devuelve el vector con el set de ladescripción de los marcadores.

SetMarkers Vector Asigna un vector nuevo con lasdescripciones de los marcadores.

GetFrames Vector Devuelve el vector con los datos de laposición de los marcadores.

SetFrames Vector Asigna un vector con los datos de laposición de los marcadores.

Page 71: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

66

Nombre de la clase:Marker

Paquete:ApasAndes.3d

Descripción de la clase:Este objeto contendrá la descripción de cada marcador, con su identificador que se leasignará para que luego corresponda al modelo médico.Propiedad Tipo Descripción del modelaje, restricciones,

información para diseño, suposicionesNumPoint Int Identificador numérico para saber la

correspondencia con los datos 3d.Id String Nombre que se le asigna al marcador para la

utilización futura en el análisis médico.Observations String Campo para agregar observaciones del

marcador como nombre no abreviado ydescripción completa.

Units StringS e r v i c i o oresponsabilidad

Recibe Retorna

Descripción

SetPoint Int Asigna el número que identifica al marcador.GetPoint Int Retorna el número del marcador.SetId String Asigna el nombre o identificador del marcador.GetId String Retorna el nombre del identificador del

marcador.SetObservations String Asigna la descripción u observaciones del

marcador.GetObservations String Retorna la descripción u observaciones del

marcador.

Page 72: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

67

Nombre de la clase:Frame

Paquete:ApasAndes.3d

Descripción de la clase:Este objeto contiene la información de cada frame, como su identificador y la ubicación decada marcador.Propiedad Tipo Descripción del modelaje, restricciones,

información para diseño, suposicionesPointsMark Vector Vector de almacenamiento con la ubicación

de cada marcador en este frame.S e r v i c i o oresponsabilidad

Recibe Retorna Descripción

AddPoint Punto3Dmark Adiciona un marcador al frame.GetPoint Int Punto3

DmarkRetorna el marcador correspondiente elidentificador numérico que se le pasa a lafunción.

SetPointsMark Vector Asigna un nuevo vector de Puntos-Marcadores

GetPointsMark Vector Retorna el vector de Puntos-Marcadores

Page 73: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

68

Nombre de la clase:Point3Dmark

Paquete:ApasAndes.3d

Descripción de la clase:Contiene la localización de cada marcador en coordenadas xyz.Propiedad Tipo Descripción del modelaje, restricciones,

información para diseño, suposicionesX Float Posición en x del marcadorY Float Posición en y del marcadorZ Float Posición en z del marcadorIdMark Int Identificador del marcador para saber su

correspondencia con su descripciónS e r v i c i o oresponsabilidad

Recibe Retorna Descripción

GetX Float Devuelve la coordenada x del marcador.GetY Float Devuelve la coordenada y del marcador.GetZ Float Devuelve la coordenada z del marcador.SetX Float Modifica la coordenada x del marcador.SetY Float Modifica la coordenada y del marcador.SetZ Float Modifica la coordenada z del marcador.GetIdMark Int Devuelve el identificador numérico del

marcador.SetIdMark Int Modifica el identificador numérico del

marcador.

Page 74: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

69

Nombre de la clase:SequenceANA

Paquete:ApasAndes.analog

Descripción de la clase:Aquí se almacenaran todas las posibles entradas análogas para el análisis del exámen. Eltipo de dato no es especifico y se deja a libertad del usuario para que defina las entradas,pudiendo definir el número, su localización, y la cantidad de dimensiones y canales quetenga. Se definen los vectores placas y músculos, ya que son datos por defecto dentro deeste tipo de exámenes.Propiedad Tipo Descripción del modelaje, restricciones,

información para diseño, suposicionesChannels Vector Vector con los diferentes canales de entrada

análogos.Plates Plate Vector contenedor de la descripción de las

placas.Emg Float Vector contenedor de la descripción para la

lectura de EMG.Gen_Scale FloatS e r v i c i o oresponsabilidad

Recibe Retorna Descripción

SetChannels Vector Asigna un set de canales análogosGetChannels Vector Devuelve el set de canales análogosGetPlates Vector Retorna el set de Placas.SetPlates Vector Asigna el set de Placas.GetEmg Vector Retorna el set con la descripción para leer

datos EMG.SetEmg Vector Asigna el set para leer set de datos EMG.AddPlate Plate Añade una placa nueva al set de placas.AddEmg Emg Añade un nuevo conjunto de parámetros para

lectura EMG.AddChannel Plate Añade un nueva canal análogo.GetPlate Int Plate Retorna la placa de acuerdo con el número

que se le pase a la función.GetChannel Int Channel Retorna el canal de acuerdo con el número

que se le pase a la función.GetEmg int Emg Retorna el emg de acuerdo con el número

que se le pase a la función.

Page 75: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

70

Nombre de la clase:Channel

Paquete:ApasAndes.analog

Descripción de la clase:Esta clase es la encargada de almacenar los datos brutos de un canal, contiene informacióncomo la descripción y el número de la escala para convertirla en datos reales.Propiedad Tipo Descripción del modelaje, restricciones,

información para diseño, suposicionesData Vector Vector con los diferentes canales de

entrada análogos.Description String Descripción del canal.Name String Nombre del canal.Offset Int Offset del canal usualmente un valor

cercano a 2048.Scale Float Número para convertir la información del

canal en datos reales.Units String Unidades de los datos reales del canal.Servicio o responsabilidad Recibe Retorna DescripciónGetData Vector Retorna todos los datos brutos del canal.SetData Vector Modifica el identificador numérico del

marcador.GetDescription String Retorna la descripción del canal.SetDescription String Asigna la descripción del canal.GetName String Retorna el nombre del canal.SetName String Asigna un nombre al canal.GetOffset Int Retorna el offset del canal para calcular los

datos reales de acuerdo al tipo deinformación.

SetOffset Int Asigna el offset del canal para podercalcular luego la información en datos delmundo real.

GetScale Float Retorna el factor para poder calcular elvalor en el mundo real del datos análogo.

SetScale Float Asigna el valor de la escala para tener elvalor de la vida real.

GetUnits String Retorna las unidades del canal análogocomo lo pueden ser Volts, Newtons, etc.

SetUnits String Asigna las unidades del canal.

Page 76: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

71

Nombre de la clase:Plate

Paquete:ApasAndes.analog

Descripción de la clase:Esta clase almacena todos los detalles necesarios para poder interpretar la información delas placas de fuerza, como son la referencia de los canales donde se encuentra almacenado,el tipo de placa, su localización y la de sus esquinas, y el vector origin al centro de la placa.Propiedad Tipo Descripción del modelaje, restricciones,

información para diseño, suposicionesChannels[] Int[] Arreglo en el cual se almacenan los canales

análogos con un orden determinado, comoFx, Fy, Fz, Mx, My, Mz en el caso de placasAMTI y Bertec y Fx12,Fx34, Fy14, Fy23,Fz1, Fz2, Fz3, Fz4 para Kistler.

O1 Float Dimensión x del vector origin.O2 Float Dimensión y del vector origin.O3 Float Dimensión z del vector origin.Type Int Tipo de la placa. O=ninguna, 1=Fuerza,

ubicación, 2=AMTI, BERTEC, 3=KISTLERX Float Ubicación en x del centro de la placa.Y Float Ubicación en y del centro de la placa.Z Float Ubicación en z del centro de la placa.X1 Float Distancia de x a la esquina 1 con respecto al

centro.X2 Float Distancia de x a la esquina 2 con respecto al

centro.X3 Float Distancia de x a la esquina 3 con respecto al

centro.X4 Float Distancia de x a la esquina 4 con respecto al

centro.Y1 Float Distancia de y a la esquina 1 con respecto al

centro.Y2 Float Distancia de y a la esquina 2 con respecto al

centro.Y3 Float Distancia de y a la esquina 3 con respecto al

centro.Y4 Float Distancia de y a la esquina 4 con respecto al

centro.Z1 Float Distancia de z a la esquina 1 con respecto al

centro.Z2 Float Distancia de z a la esquina 2 con respecto al

centro.

Page 77: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

72

Z3 Float Distancia de z a la esquina 3 con respecto alcentro.

Z4 Float Distancia de z a la esquina 4 con respecto alcentro.

S e r v i c i o oresponsabilidad

Recibe Retorna Descripción

GetChannels Int[] Retorna el arreglo con los números de loscanales que contienen la información de lasplacas.

GetO1 Float Retorna el componente x del vector Origin.GetO2 Float Retorna el componente y del vector Origin.GetO3 Float Retorna el componente z del vector Origin.GetType Int Retorna el tipo de placa.GetX Float Retorna la ubicación en x del centro de la

placa.GetY Float Retorna la ubicación en y del centro de la

placa.GetZ Float Retorna la ubicación en z del centro de la

placa.GetX1 Float Retorna la distancia de la esquina 1 en x al

centro.GetX2 Float Retorna la distancia de la esquina 2 en x al

centro.GetX3 Float Retorna la distancia de la esquina 3 en x al

centro.GetX4 Float Retorna la distancia de la esquina 4 en x al

centro.GetY1 Float Retorna la distancia de la esquina 1 en y al

centro.GetY2 Float Retorna la distancia de la esquina 2 en y al

centro.GetY3 Float Retorna la distancia de la esquina 3 en y al

centro.GetY4 Float Retorna la distancia de la esquina 4 en y al

centro.GetZ1 Float Retorna la distancia de la esquina 1 en z al

centro.GetZ2 Float Retorna la distancia de la esquina 2 en z al

centro.GetZ3 Float Retorna la distancia de la esquina 3 en z al

centro.GetZ4 Float Retorna la distancia de la esquina 4 en z al

centro.

Page 78: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

73

centro.SetChannels Int[] As igna l o s c ana l e s aná logos

correspondientes a las placas.SetO1 Float Asigna la coordenada x del vector origin.SetO2 Float Asigna la coordenada y del vector origin.SetO3 Float Asigna la coordenada z del vector origin.SetType Int Asigna el tipo del placa.SetX Float Asigna la coordenada en x del centro de la

placa.SetY Float Asigna la coordenada en y del centro de la

placa.SetZ Float Asigna la coordenada en z del centro de la

placa.SetX1 Float Asigna la distancia en x a la esquina 1 de la

placa.SetX2 Float Asigna la distancia en x a la esquina 2 de la

placa.SetX3 Float Asigna la distancia en x a la esquina 3 de la

placa.SetX4 Float Asigna la distancia en x a la esquina 4 de la

placa.SetY1 Float Asigna la distancia en y a la esquina 1 de la

placa.SetY2 Float Asigna la distancia en y a la esquina 2 de la

placa.SetY3 Float Asigna la distancia en y a la esquina 3 de la

placa.SetY4 Float Asigna la distancia en y a la esquina 4 de la

placa.SetZ1 Float Asigna la distancia en z a la esquina 1 de la

placa.SetZ2 Float Asigna la distancia en z a la esquina 2 de la

placa.SetZ3 Float Asigna la distancia en z a la esquina 3 de la

placa.SetZ4 Float Asigna la distancia en z a la esquina 4 de la

placa.

Page 79: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

74

Nombre de la clase:FileC3D

Paquete:ApasAndes.files.c3d

Descripción de la clase:Sirve como módulo de implementación para la lectura y escritura de archivos en el formatoC3D de NIH, cumpliendo con todos los requerimientos de la especificación.Propiedad Tipo Descripción del modelaje, restricciones,

información para diseño, suposicionesNumMarkers Int Número de marcadores.AnalogMeasurementsper3D Int Número total de datos análogos por cuadro

3d para así saber el número de canales.First3Dframe Int Número del primer cuadro en que comienza

la información análoga.Last3Dframe Int Número del último cuadro que tiene

información análoga.FrameRate Float Rata de cuadros por segundo.AnalogSamplesper3D Int Número de muestras análogas por cuadro de

3D.ProcessorType Int Tipo de procesador de la máquina con que se

almacenó la información.S e r v i c i o oresponsabilidad

Recibe Retorna Descripción

CargarArchivo String Implementa la función de la clase Exam paraleer los archivos.

guardarArchivo String Implementa la función de la clase Exam paraguardar los archivos.

getNumMarkers Int Retorna el número de marcadores.GetAnalogMeasurementsper3D

Int Retorna el número de datos análogos que setoman por frame 3d.

GetFirst3Dframe Int Retorna el primer cuadro de datossignificativos.

GetLast3Dframe Int Retorna el último cuadro de datossignificativos.

GetFrameRate Float Retorna el número de cuadros por segundo.GetAnalogSamplesper3D

Int Retorna el número de muestras por canal porcada frame 3D.

GetProcessorType Int Retorna el tipo de procesador en el cual fueescrito el archivo, puede ser Intel=1,DEC/Alpha=2, SGI/Java=3

Page 80: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

75

SetNumMarkers Int Asigna el número de marcadores.SetAnalogMeasurementsper3D

Int Asigna el número de datos análogos que setoman por frame 3d.

SetFirst3Dframe Int Asigna el primer cuadro de datossignificativos.

SetLast3Dframe Int Asigna el último cuadro de datossignificativos.

SetFrameRate Float Asigna el número de cuadros por segundo.SetAnalogSamplesper3D

Int Retorna el número de muestras por canal porcada frame 3D.

SetProcessorType Int Asigna el tipo de procesador con el cuál secreo el archivo.

FindGroup String Int Se le da el nombre del grupo y retorna elnúmero de identificación o –1 si no loencuentra

FindParameter String,int

Parameter Se le da el nombre del parámetro y elnúmero del grupo al cual pertenece y retornael objeto parámetro.

CreateGrupo String,String

Group Crea un nuevo grupo, con el nombre ydescripción que se le de y asigna un númerode una la secuencia.

CreateParameter String,String,int, int

Parameter Crea un nuevo parámetro, pasándole elnombre, la descripción, sus dimensiones y eltipo de dato de la unidad mínimo.

SwapDECFloat Float Float Reordena los bytes en formato DEC para queJava pueda leerlos

SwapFloat Float Float Invierte el orden de los byte en Little Endianpara que java pueda leerlos.

SwapLeInt Int Int Invierte el orden de los byte en Little Endianpara que java pueda leerlos.

SwapLeShort Short Short Invierte el orden de los byte en Little Endianpara que java pueda leerlos.

Page 81: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

76

Nombre de la clase:Group

Paquete:ApasAndes.files.c3d

Descripción de la clase:Esta clase almacena todos los datos necesarios para crear un grupo de datos según elestándar de archivos C3D.Propiedad Tipo Descripción del modelaje, restricciones,

información para diseño, suposicionesDesGroup String Descripción del grupo.IdGroup Int Identificador numérico del grupo.NameGroup String Nombre del grupo.S e r v i c i o oresponsabilidad

Recibe Retorna Descripción

SetDesGroup String Asigna la descripción del grupo.SetIdGroup Int Asigna un identificador numérico al grupo.SetNameGroup String Asigna un nombre al grupo.GetDesGroup String Retorna el identificador del grupo.GetIdGroup Int Retorna el identificador numérico del grupo.GetNameGroup String Retorna el nombre del grupo.

Page 82: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

77

Nombre de la clase:Parameter

Paquete:ApasAndes.files.c3d

Descripción de la clase:Esta clase almacena todos los datos de un parámetro según el estándar de archivos C3D.Propiedad Tipo Descripción del modelaje, restricciones,

información para diseño, suposicionesDesParameter String Descripción del parámetro.Data Vector Datos respectivos al parámetro( el algoritmo

para interpretarlos depende del tipo deinformación y son necesarias, las dimensionesy el tipo de unidades fundamentales, comocaracteres, flotante, enteros o bytes)

Dimen Int Arreglo donde se definen los tamaños de cadadimensión.

IdGroup Int Identificador numérico del grupo al cualpertenece.

NomParameter String Nombre del parámetro.NumDimensions Int Número de dimensiones de los datos (máximo

7)SizeData Int Da el tamaño de la unidad mínima de los datos.

Character=-1, Byte=1, Short=2, Float=4Servicio oresponsabilidad

Recibe Retorna Descripción

SetDesParameter String Asigna la descripción del parámetro.SetData Vector Asigna el vector de datos del parámetro.SetDimen Int Asigna los tamaños de las dimensiones.SetIdGroup Int Asigna el número del grupo al cuál pertenece.SetnomParameter String Asigna el nombre del parámetro.SetNumDimensions Int Asigna el número de dimensiones de los datos.SetSizeData Int Asigna el tamaño de los datos de la unidad

mínima.GetDesParameter String Retorna la descripción del parámetroGetData Vector Retorna el vector con los datos del parámetro.GetDimen Int Retorna los tamaños de las dimensiones.GetIdGroup Int Retorna el número del grupo al cual pertenece.GetnomParameter String Retorna el nombre del parámetro.GetNumDimensions Int Retorna el número de dimensiones de los

datos.GetSizeData Int Retorna el tamaño de la unidad mínima de los

datos.

Page 83: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

78

Nombre de la clase:File3D

Paquete:ApasAndes.files.apas

Descripción de la clase:Esta clase provee todos los recursos necesarios para leer archivos .3d del sistema APAS deAriel Dynamics. Su implementación no esta de acuerdo con el estándar del formato queestos publican ya que se ha encontrado que los archivos no coinciden, así que se hanrealizado las modificaciones para una lectura apropiada.Propiedad Tipo Descripción del modelaje, restricciones,

información para diseño, suposicionesNumMarkers Float Número de marcadores.NumFrames Int Número de frames almacenados.

S e r v i c i o oresponsabilidad

Recibe Retorna Descripción

Load3D String Implementa la función de la clase Exam paraleer los archivos.

Save3D String Implementa la función de la clase Exam paraguardar los archivos.

swapFloat Float Float Invierte los bytes de un float de tal forma quesean legibles por Java del formato de Intel.

swapLEShort Short Short Invierte los bytes de un Short para que sealegible en Java desde Intel o máquinas determinación Little Endian

Page 84: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

79

Nombre de la clase:FileANA

Paquete:ApasAndes.files.apas

Descripción de la clase:Esta clase provee de las herramientas para la lectura e interpretación del archivo .ANA delsistemas APAS de Ariel Dynamics. Su interpretación fue corregida dado que ladocumentación no es completamente clara y cuenta con algunos errores.Propiedad Tipo Descripción del modelaje, restricciones,

información para diseño, suposicionesNumChannels Float Número de marcadores.NumPlates Float Número total de datos análogos por cuadro

3d para así saber el número de canales.Frecuence Float Número del primer cuadro en que comienza

la información análoga.S e r v i c i o oresponsabilidad

Recibe Retorna Descripción

LoadAna String Implementa la función de la clase Exam paraleer los archivos.

SaveAna String Implementa la función de la clase Exam paraguardar los archivos.

SwapFloat Float Float Invierte los bytes de un float de tal forma quesean legibles por Java del formato de Intel.

swapLEShort Short Short Invierte los bytes de un Short para que sealegible en Java desde Intel o máquinas determinación Little Endian.

Page 85: “API ESTÁNDAR PARA MANEJO DE MOVIMIENTO EN EL CUERPO …

ISC-2003-1-42

80

BIBLIOGRAFÍA.

1- THINGVOLD, Jeffrey A., VAN BAERLE, Susan. Paper “Motion Capture File FormatRev iew” [on l i ne ] . LambSof t , I nc . D i spon ib l e en In t e rne t<URL:http://www.gdconf.com/archives/proceedings/2000/vanbaerle.doc>

2- CARF2002 Paper “Tracking of 3D points: Human gait application”, L. F. Carvajal A.,Universidad de los Andes 2002.

3- AMTI Force Plate Details[online]. AMTI Corp. Disponible en Internet<URL:http://www.amti.com>

4- Motion Lab Systems C3D Format Manual[online], 2002, Disponible en Internet <URL:http://www.c3d.org >

5- KWON, Young-Hoo. Teorical Foundation of GAIT Analysis[online]. Disponible enInternet <URL: http://www.kwon3d.com/theories.html>

6- VAUGHAN Christopher L., Dynamics of Human Gait, Human Kinetics Publications,Febrero de 1992.

7- Acclaim Studios, http://www.acclaim.com/studio>

8- Sistema de captura de posición magnético[online], Ascension Technologies – Flock ofBirds. <URL:http://www.ascension-tech.com/products/flockofbirds.php>

9- Especificación del cuerpo humano para animación, H-ANIM.Web3D Consortium.Disponible en Internet <URL:http://www.h-anim.org/specification>

10- Sistema de captura y análisis de movimiento APAS[online], Ariel Dynamics.Disponible en Internet <URL:http://www.sportsci.com>

11- Sistema de captura y análisis de movimiento Vicon 370[online], Disponible en Internet<URL: http://www.vicon.com>

12- GOETHEL, Sven. Librería GL4Java para compatibilidad de OpenGL y Java, JauSoft.Disponible en Internet <URL:http://www.jausoft.com/GL4Java>

13- Especificación Bertec Force Plates. Bertec Corporation. Disponible en Internet<URL:http://www.bertec.com>