scieee AI-readable full text Open interactive document viewer

Comparació de diferents sistemes 'low cost' de captura de moviment

Ruíz Guevara, Sergio

Abstract

El present Treball de Fi de Grau té com a objectiu comparar dos sistemes de captura del moviment considerats ‘low cost’que té el SIMMA Lab de l’EEBE. Aquests sistemes són els sensors inercials XSENS i el sensor de captura de moviment Kinect V2de Microsoft. Els segments de l’esquelet humà estudiats per fer aquesta comparativa han estat els de la cama dreta des de la pelvis fins al peu.La metodologia és la següent: primerament s’obtenen les dades procedents de cadascun dels sistemes segons la informació que poden capturar com a input. S’explica matemàticament el model creat mitjançant el software de càlcul MATLAB per convertir a partir d’aquest codi les dades capturades per cada sistema i obtenir l’orientació dels sòlids de l’usuari com a angles d’Euler. Aquestes dades que s’han obtingudes poden reproduir posteriorment en un model musculo-esquelètic mitjançant el software del’OpenSimper comprovar visualment que els angles obtinguts generen un moviment semblant al realitzat per l’usuari.Comparant els dos sistemes s’ha comprovat que, en els moviments capturats,els valors dels angles són propers quan es comparen rotacions que tenen gran variació mentre que els valors són més distants en aquelles rotacions que no tenen una variació significativa.També s’ha observat que en la Kinect apareixen errors de captura per alguns instants mentre que la corba en els XSENS és en tot moment estable.En la captura dels sensors XSENS tampoc s’observa la problemàtica que té la Kinect a l’hora d’obtenir la posició del peu, on s’observa que apareixen valors coherents en pocs instants, degut al fet que hi ha errors de captura inherents al propi sistema.

Full text

TREBALL FI DE GRAU Grau en Enginyeria Mecànica COMPARACIÓ DE DIFERENTS SISTEMES ‘LOW COST’ DE CAPTURA DE MOVIMENT Memòria i annexos Autor: Sergio Ruiz Guevara Director: Gil Serrancolí Masferrer Convocatòria: Maig 2019 Comparació de diferents sistemes ‘low cost’ de captura de moviment i Resum El present Treball de Fi de Grau té com a objectiu comparar dos sistemes de captura del moviment considerats ‘low cost’ que té el SIMMA Lab de l’EEBE. Aquests sistemes són els sensors inercials XSENS i el sensor de captura de moviment Kinect V2 de Microsoft. Els segments de l’esquelet humà estudiats per fer aquesta comparativa han estat els de la cama dreta des de la pelvis fins al peu. La metodologia és la següent: primerament s’obtenen les dades procedents de cadascun dels sistemes segons la informació que poden capturar com a input. S’explica matemàticament el model creat mitjançant el software de càlcul MATLAB per convertir a partir d’aquest codi les dades capturades per cada sistema i obtenir l’orientació dels sòlids de l’usuari com a angles d’Euler. Aquestes dades que s’han obtingut es poden reproduir posteriorment en un model musculo-esquelètic mitjançant el software de l’OpenSim per comprovar visualment que els angles obtinguts generen un moviment semblant al realitzat per l’usuari. Comparant els dos sistemes s’ha comprovat que, en els moviments capturats, els valors dels angles són propers quan es comparen rotacions que tenen gran variació mentre que els valors són més distants en aquelles rotacions que no tenen una variació significativa. També s’ha observat que en la Kinect apareixen errors de captura per alguns instants mentre que la corba en els XSENS és en tot moment estable. En la captura dels sensors XSENS tampoc s’observa la problemàtica que té la Kinect a l’hora d’obtenir la posició del peu, on s’observa que apareixen valors coherents en pocs instants, degut al fet que hi ha errors de captura inherents al propi sistema. Memòria ii Resumen El presente Trabajo de Fin de Grado tiene como objetivo comparar dos sistemas de captura del movimiento considerados ‘low cost’ que son presentes en el SIMMA Lab de la EEBE. Estos sistemas son los sensores inerciales XSENS y el sensor de captura de movimiento Kinect V2 de Microsoft. Los segmentos del esqueleto humano estudiados parar hacer esta comparativa han sido los de la pierna derecha desde la pelvis hasta el pie. La metodología es la siguiente: en primer momento se obtienen los datos provenientes de cada uno de los sistemas según la información que pueden capturar como input. Se explica matemáticamente el modelo creado a partir del software de cálculo MATLAB para convertir a partir de este código los datos capturados por cada sistema y obtener la orientación de los sólidos del usuario como ángulos de Euler. Estos datos que se han obtenido se pueden reproducir posteriormente en un modelo musculoesquelético a partir del software OpenSim para comprobar visualmente que los ángulos obtenidos generan un movimiento parecido al realizado per el usuario. Comparando los dos sistemas se ha comprobado que, en los movimientos capturados, los valores de los ángulos son cercanos cuando se comparan rotaciones que tienen gran variación mientras que los valores son más distantes en aquellas rotaciones que no tienen una variación significativa. També se ha observado que en la Kinect aparecen errores de captura para algunos instantes mientras que la curva en los XSENS es en todo momento estable. En la captura de los sensores XSENS tampoco se observa la problemática que aparece en la Kinect a la hora de obtener la posición del pie, donde aparecen valores coherentes en pocos instantes, debido a errores de captura inherentes al propio sistema. Comparació de diferents sistemes ‘low cost’ de captura de moviment iii Abstract The aim of this Final Degree Thesis is to compare two motion capture systems considered low cost that are present in the SIMMA Lab of the EEBE. These systems are, the XSENS inertial sensors and the Kinect V2 motion capture sensor made by Microsoft. The segments of the human skeleton studied on this comparison were the ones of the right leg from the pelvis to the foot. The methodology is as follows: first, the data coming from each of the systems is obtained according to the information that can be captured as input. The mathematical model created using the MATLAB software to convert the data captured by each system to convert the absolute orientation of rigid bodies to relative Euler angles is explained. These data obtained can be reproduced later in a musculoskeletal model using the OpenSim software to visually verify that the angles obtained generates a movement similar to the one perfomed by the user. Comparing the two systems for the capture movements, it has been verified that the values of the angles are close when comparing rotations that have a great variation while the values are more distant in those rotations that do not have a significant variation. It has also been observed that in the Kinect capture errors appear for some instants while the curve in the XSENS is stable at all times. XSENS system does not have the problems that have Kinect regarding the position of the foot, where just in a few moments the data seem to have consistent values, due to the capture errors inherent to the system. Memòria iv Comparació de diferents sistemes ‘low cost’ de captura de moviment v Agraïments En aquest apartat vull donar les gràcies al tutor d’aquest treball, en Gil Serrancolí Masferrer, sense la seva ajuda no hagués estat possible realitzar-ho degut als problemes laborals sorgits mentre es realitzava el treball. Li ha dedicat un bon temps a resoldre tots els dubtes que han anat sorgint tot i no ser sempre possible fer-ho físicament a causa dels horaris de cadascú. També cal agrair haver-me concedit un treball relacionat amb uns sensors del SIMMA Lab tant interesants com són els XSENS i que han estat utilitzats en pel·lícules i videojocs aquests anys. Memòria vi Comparació de diferents sistemes ‘low cost’ de captura de moviment vii Glossari API Aplication Programming Interface BM Base Mòbil BF Base Fixa BSN Body Sensor Networks fps frames per second gdl graus de llibertat GUI Graphical User Interface ISB International Society of Biomechanics – Societat Internacional de Biomecànica MOCAP Motion Capture – Captura del moviment PC Personal Computer – Ordinador Personal SDK Software Developement Kit SIMMA Lab Simulation and Movement Analysis Lab TFG Treball Fi de Grau USB Universal Serial Bus – Bus Universal en Sèrie Memòria 4 2.2. Abast del treball En aquest treball tant en el cas dels XSENS com el de Kinect s’han extret les dades que aquests aparells proporcionen com a outputs. S’han processat aquestes dades mitjançant codi de MATLAB per poder ser transmeses al software OpenSim i finalment els resultats obtinguts s’han comparat entre ells. En el cas de la Kinect ha calgut obtenir primerament l’orientació dels ossos a partir de les posicions dels diferents punts anatòmics del cos. Un cop obtingudes aquestes orientacions pels dos sistemes s’han calculat els angles relatius per fer aquesta comparació de dades entre els dos casos. Aquest treball captura els angles articular d’una sola cama fent diferents moviments del tren inferior. Només ens és possible fer-ho amb una cama donat que el nombre d’acceleròmetres XSENS no són suficients per a poder capturar les dues cames. A més a més el període de temps per a la captura del moviment no és de més d’un minut, ja que les dades poden distorsionar-se en períodes més prolongats. Comparació de diferents sistemes ‘low cost’ de captura de moviment 5 3. Estat de l’art En l'actualitat les tècniques de captura de moviment són àmpliament conegudes per la població. Tothom ha vist, ja sigui a les notícies, a documentals o a internet com a partir de la captura de moviment mitjançant sensors s'han creat personatges de ficció per a pel·lícules o videojocs. Tot i que aquestes tècniques de captura de moviment mitjançant ordinador van aparèixer a finals dels anys 70 (2) la captura de moviment ja existia anteriorment. La tècnica amb la qual es capturava el moviment des de principis de segle XX era la rotoscòpia. Figura 3.1: Rotoscopi, instrument utilitzat per la rotoscòpia (3) El rotoscopi (Figura 3.1) és un dispositiu creat per l'austríac Max Fleischer l'any 1915 (4) , el mecanisme d'aquest dispositiu consisteix a filmar una acció per després calcar aquesta fotograma per fotograma i convertir-la en un dibuix animat (5). El seu ús tradicional va ser la creació de pel·lícules d'animació. A partir d'ella el mateix Fleischer va revolucionar el món dels dibuixos animats, amb la creació de sèries com Out of the Inkwell o Talkatoons, on apareixerien personatges com Betty Boop o Popeye el mariner, i pel·lícules com Els viatges de Gulliver (1939). Walt Disney també va implementar aquesta tècnica per l'elaboració de pel·lícules com Blancaneu i els set nans (1937), Alícia al país de les meravelles (1951) (Figura 3.2) o Peter Pan (1953). Per la seva banda Warner Bros també va utilitzar la tècnica per curtmetratges de personatges internacionalment coneguts com Bugs Bunny o l'Ànec Duffy (6). Memòria 6 Figura 3.2: Actriu filmada i dibuix creat a partir d’ella per la pel·lícula Alícia al país de les meravelles. (7) Aquesta tècnica va ser molt útil perquè ja donava tant l'orientació com la perspectiva necessària per crear moviments el més natural possible. El següent gran pas pel que fa la a captura de moviment es va donar als anys 80 on van aparèixer els primers estudis biomecànics utilitzant ordinadors. A principis dels anys 80 Tom Calvert, Professor de kinesiologia, disciplina que estudia l'activitat muscular del cos humà (8), i ciències de la computació a la Simon Fraser University, va adherir potenciòmetres al cos d'un voluntari per investigar la mesura dels angles de les articulacions en els moviments que realitzava. Aquestes dades obtingudes digitalment li van permetre generar personatges animats per ordinador per utilitzar-los en estudis de coreografia i assistència clínica en pacients amb problemes de locomoció. Aquesta va ser la base de les tècniques de captura de moviment que s'utilitzen actualment. Posteriorment tant el MIT Architecture Machine Group com el New York Institute of Technology Computer Graphics Lab van començar a experimentar amb sistemes de seguiment òptic desenvolupant sistemes Op-Eye i SelSpot. Els seguidors òptics solen utilitzar petits marcadors connectats al cos, ja siguin LEDs intermitents o marcadors reflectants (passius), i una sèrie de dues o més càmeres centrades en l'espai de captura. Una combinació de maquinària i programari especial selecciona els marcadors en el camp visual de cada càmera i, mitjançant la comparació de les imatges, calcula la posició tridimensional de cada marcador al llarg del temps. Aquesta tecnologia en un principi tenia com a limitació el només poder rastrejar una dotzena de marcadors al mateix temps. Una de les grans fites de la història de la captura de moviment per ordinador va ser l’anunci Brilliance emès durant la Super Bowl de 1985. L’anunci va ser produït per Robert Abel juntament amb l’empresa Associates. El seu equip va inventar un mètode per capturar els moviments del subjecte pintant uns Comparació de diferents sistemes ‘low cost’ de captura de moviment 7 punts negres en divuit articulacions d’una model femenina i fotografiant el seu moviment sobre un tamboret que gira en diferents angles. Durant els següents anys van aparèixer dispositius que a partir de la captura del moviment de la mà aconseguien moure personatges digitals. Alguns projectes més exitosos van ser Mike the Talking Head de la companyia deGraf/Wahrman creat l’any 1988 on a partir del moviment de la mà una cara (prèviament digitalitzada en 3D a partir d’un actor) movia el cap i canviava la seva expressió facial. Per altra banda, també el mateix any, es va produir la creació de Waldo C. Graphic (Figura 3.3) de Silicon Graphics i Pacific Data Images, on també a partir del moviment de la mà es movia una marioneta virtual. Aquesta marioneta va ser utilitzada com a personatge d’Els Muppets així com en vídeos del parc temàtic Walt Disney World a Orlando, Estats Units. Figura 3.3: Dispositiu Waldo C. Graphic i posterior personatge animat. (9) SimGraphics l’any 1992 van desenvolupar un sistema de rastreig facial que anomenaven face waldo. Amb sensors mecànics units a la barbeta, els llavis, les galtes i les celles i els sensors electromagnètics de l'estructura del casc de suport, podien rastrejar els moviments més importants de la cara i passarlos en temps real als personatges d'ordinador. La importància d'aquest sistema era que un actor pogués manipular totes les expressions facials d'un personatge simplement mimant l'expressió facial, una interfície perfectament natural. Un dels primers grans èxits amb el face waldo, i el seu sistema d'animació VActor, va ser la interpretació del personatge de Nintendo Mario mitjançant un actor darrere de l’escenari generant els seus moviments i expressions de la cara amb el VActor. Es va utilitzar per a anuncis de productes i fires comercials. Totes aquestes tècniques es van anar perfeccionant, aconseguint utilitzar un major nombre de marcadors alhora així com crear aparells per la captura de moviment més petits i fàcils de moure. El mètode més utilitzat actualment és el de la captura mitjançant sistemes òptics a causa de la comoditat que dóna a l’usuari que porta els marcadors reflectants (LEDs o material reflectant) al no necessitar cablejat. Els marcadors reflectants són gravats per dues o més càmeres que capturen la posició i el Memòria 8 moviment d’aquests. A l’utilitzar més d’una càmera es pot conèixer la posició 3D de cada marcador (10). A més a més és un sistema molt precís i poden utilitzar-se molts marcadors, per contra el seu hardware acostuma a ser molt car en comparació a altres sistemes i es necessita un processament posterior de les dades (11). Hi ha una gran quantitat d’estudis realitzats amb els dos sistemes utilitzats en aquest treball. Pel que fa als XSENS, Tao et al. (12) van combinar sensors inercials amb sensors visuals per crear una solució híbrida (Figura 3.4) en temps real de la captura del moviment del braç per a persones que fan rehabilitació per reduir la càrrega de treball d’hospitals i fisioterapeutes. Van utilitzar dos mètodes, un determinista i un probabilístic per combinar els dos tipus de sensors. El mètode determinista utilitza la informació de la geometria del braç humà per fusionar diferents modalitats de dades. És un mètode vàlid per moviments simples però amb moviments més complicats els valors s’allunyen de la realitat. El mètode probabilístic fusiona les dades mitjançant el filtre de Kalman estès (EKF), un algoritme que permet estimar variables no observables a partir de variables no lineals observables però que poden contenir algun error de mesura (13). El resultat amb aquest mètode va ser satisfactori, millorant l’eficiència dels sistemes amb únicament marcadors visuals. Figura 3.4: Subjecte portant un sensor inercial i 3 marcadors visuals. (12) Damgrave et al. (14) va mesurar quin era el drift (l’error de mesura que apareix en els sensors XSENS a causa de les seves característiques, del pas del temps, del moviment a capturar, etc) per a diferents moviments de l’ésser humà. En aquest cas es va utilitzar el vestit XSENS MVN, un vestit que porta incorporat els sensors inercials. Un dels principals problemes d'un sistema de captura de moviment inercial és el drift en el pla horitzontal. Es van estudiar diferents moviments, caminar, saltar amb una cama i amb dues, córrer i fer passes llargues. (Figura 3.5) De l’estudi es va extreure que el drift és major en els moments en què no hi havia contacte amb el terra com al saltar, o en els moviments ràpids com córrer. Això significa que la deriva s'ha de tenir en compte gairebé tot el temps. Amb moviments lents i simples el drift és menor. Comparació de diferents sistemes ‘low cost’ de captura de moviment 9 Figura 3.5: Subjecte fent un dels diversos tests per trobar el drift de cada moviment.(14) El drift (o deriva) és un problema en estudis on és important la posició de l’objecte a mesura dins de la sala on es fa la captura de moviment. En aquests casos els autors recomanen afegir una captura de moviment addicional o afegir una tècnica de determinació d'ubicació al sistema XSENS. En situacions on no importa la posició dins de la sala sinó la posició relativa de cada part del cos aquest drift no és tan problemàtic i els sensors XSENS són més útils. Per aquest motiu en l’estudi realitzat no s’ha utilitzat cap altre sistema per precisar la posició dels sensors donat que la posició dins del laboratori no serà calculada en aquest treball. Pel que fa a la Kinect tot i que va ser comercialitzada com a hardware complementari per alguns videojocs de la consola XBOX el seu principal camp d’estudi on s’ha utilitzat ha estat el de la medicina. Moreno et al. (15) va utilitzar la Kinect per la creació d’un sistema per a la rehabilitació de pacients amb múltiples patologies, a través de videojocs on cal fer exercici, anomenats exergames, i l’anàlisi dels moviments dels pacients utilitzant un software desenvolupat per ells. Gràcies a la Kinect els pacients es diverteixen durant la seva teràpia a través dels jocs mentre que els especialistes obtenen una eina per al registre i l’anàlisi de les dades gràcies a la captura del moviment que després són processats utilitzant anàlisis biomecàniques. Aquest sistema es va instal·lar en un centre de rehabilitació i és realitzar investigacions amb diferents patologies (accidents vasculars cerebrals, traumes cranioencefàlics, etc). Gorriz, M. (16) de la UPC va desenvolupar una aplicació (Figura 3.6) per a facilitar l’aprenentatge de l’abecedari de la llengua de signes catalana mitjançant una sèrie d’activitats de lletrejar paraules amb la Kinect. La imatge capturada per la Kinect és tractada amb les llibreries de codi lliure OpenCV i un algoritme de reconeixement dels K veïns més propers per tal de portar a terme el reconeixement dels signes. L’aplicació permet reconèixer un total de sis signes de diferents mides, orientacions i formes. Memòria 10 Figura 3.6: Diverses pantalles de l’aplicació. La pantalla de l’esquerra serveix per calibrar la posició i la de l’esquerra mostra l’exercici. (16) Pel que fa als estudis que tenen com a finalitat ajudar als pacients durant la seva rehabilitació, Velarde et al. proposen donar un enfocament quantitatiu als diagnòstics durant la rehabilitació física, ja que actualment el més comú és que l’especialista es basi en observacions qualitatives donant en alguns casos, segons els autors, conclusions subjectives. A través de la Kinect mesuren en temps real els moviments dels membres superiors donant un resultat eficient i quantitatiu dels moviments d’aquests (17). Comparació de diferents sistemes ‘low cost’ de captura de moviment 11 4. Eines En aquest apartat es descriuen tant el hardware com el software utilitzat per aquest treball. 4.1. Hardware 4.1.1. XSENS MTw Awinda Entre els productes de la marca holandesa XSENS Technologies B.V., fundada l’any 2000 per Casper Peeters i Per Slycke, graduats a la Universitat de Twente, s’hi troben els sensors XSENS MTw Awinda que són els que s’utilitzen en aquest treball (18). Aquests dispositius s’engloben dins de les Unitats de Mesura Inercial-Magnètica (UMIM) que són motion trackers que inclouen un giroscopi 3D, un acceleròmetre 3D i un magnetòmetre 3D en un sol element i que poden combinar les dades obtingudes mitjançant algoritmes. Els UMIM estan comercialment disponibles com a sensors individuals com és el cas dels MTw Awinda utilitzats en aquest treball o com a part d’un Body Sensor Networks (BSN), com el XSENS MVN (Figura 4.1a), que captura el moviment del cos humà complet amb un vestit portat per la persona que captura el moviment i on els diferents sensors estan units per cables així com ho està també la bateria. Els motion tracker requereixen una font d'alimentació i una connexió amb el dispositiu d'enregistrament de dades (connexió tracker-host), mentre que pels motion trackers que utilitzen un BSN, es requereixen connexions addicionals entre els diferents sensors (19). Figura 4.1: a) El futbolista Lionel Messi vesteix el XSENS MVN per capturar els seus moviments per un vídeojoc. b) Sensor MTw (taronja) juntament amb l’Awinda Dongle (gris). (18) Va ser l’any 2011 quan XSENS va llançar la primera generació de MTw: un motion tracker inercial i magnètic en miniatura, desenvolupat específicament per a aplicacions cinemàtiques ambulatòries 3D altament precises. Cinc anys més tard, l’any 2016, la segona generació MTw Awinda va sortir al mercat. Amb aquesta segona generació els motion trackers passen a ser totalment sense fils eliminant el Memòria 12 cablejat entre trackers i tracker-host. Tots els motion trackers transmeten les seves dades a l’ordinador que grava les dades directament a través de l'Awinda Master ja sigui mitjançant una estació, l’Awinda Station o, com en el cas d’aquest treball, a través d’un USB, l’Awinda Dongle.(19) Figura 4.2. A l’esquerra esquema del hardware i software de l’MTw Awinda. A la dreta esquema del processament del senyal per donar les diferents variables. (19) Els diferents element del MTw Awinda són:  MTw: és la UMIM que captura les dades. Té unes mides 47x30x13 mm, 16 g de pes i alimentat per una bateria amb una durada de 6 h. Aquest aparell també conté baròmetre i termòmetre. L'MTw utilitza l’algorisme Strap-Down Integration (SDI) s'aplica a les lectures calibrades del giroscopi i l'acceleròmetre per extreure a la sortida l’increment d’orientació i de velocitat així com les dades del magnetòmetre i el baròmetre (Figura 4.2). Aquestes dades s’envien a l'Awinda Master, en aquest cas al Dongle que està connectat a l’ordinador. Per altra banda les dades del termòmetre s'utilitzen per compensar la dependència de temperatura dels altres elements de detecció. (Fig. 4.1b) (19)  Awinda Dongle: És l’Awinda Master. És un USB amb unes dimensions de 45x20,4x10,6 mm i té un rang de 10 m podent-se connectar fins a 20 MTw. El dispositiu fa d’interfície entre l’Awinda Host, és a dir, un ordinador amb el programa MT Manager, i els diferents MTw. El Dongle assegura que les dades de cada MTw es sincronitzen en un termini de 10 μs (Figura 4.1 b) (19). 4.1.2. Sensor de MOCAP Microsoft Kinect v2 La Kinect és un sensor de MOCAP creat per Alex Kipman desenvolupat per la companyia Microsoft. Aquest sensor va sortir per a la videoconsola XBOX 360 (2010) de la mateixa companyia. Posteriorment en aparèixer la consola XBOX One (2013) van llençar la Kinect v2, model que s’utilitza en aquest treball. Des de 2012, quan Microsoft va llençar la primera versió del SDK, el sensor també és compatible amb ordinadors que utilitzin el sistema operatiu Windows 7 o superior. Amb aquest llançament es va permetre que els usuaris poguessin crear aplicacions amb aquest sistema. Comparació de diferents sistemes ‘low cost’ de captura de moviment 13 La principal funció d’aquest sistema és que els usuaris controlin i interactuïn amb la consola o l’ordinador a partir de moviments o senyals verbals. El sensor està compost per les diferents parts que es distribueixen tal com apareix a la Figura 4.3: Figura 4.3: Parts de la Kinect V2 des d’un pla frontal i oberta. (20)  Càmera RGB: És la responsable de capturar les imatges en color. En aquest model s’utilitza la ColorSource d’alta definició, té una resolució de 1920x1080 píxels (16:9) i funciona a una velocitat de 30 fps.  Sensor de profunditat: Format per una càmera de profunditat, un emissor i una càmera d’infrarojos. Té una resolució de 512x424 píxels i funciona també a una velocitat de 30 fps. L’emissor envia uns infrarojos que en rebotar amb un cos són capturats pel sensor d’infrarojos generant un mapa de profunditat de tot el que està en el seu camp de visió. Captura una imatge en escala de grisos de tot allò visible en el seu camp de visió. Pot mesurar en un rang de profunditat entre els 0,5 i els 4,5m.  Micròfons multi-array: Conté quatre micròfons que en trobar-se en diferents posicions poden detectar la posició des d’on reben el senyal acústica a partir del decalatge d’aquestes. Filtren tot allò que no estigui en el rang entre 80 i 1100 Hz amplificant el volum d’aquests senyals per separar la veu humana del so ambient. Entre les seves característiques cal destacar el seu sistema de rastreig BodySource que pot detectar la posició de fins a 6 cossos humans dins el seu camp de visió podent rastrejar fins a 25 parts del cos de cada individu (Figura 4.4a). També disposa d’un sistema de reconeixement de gestos, de captació i reconeixement facial, i de captació de la posició de les mans diferenciant entre tenir la mà oberta, tancada o assenyalant amb l’índex o amb l’índex i el cor. Els 25 punts anatòmics s’uneixen mitjançant línies rectes per tal de formar tot el conjunt del cos que després apareixerà en pantalla per les diferents aplicacions o videojocs que estigui destinat (Figura 4.4b)(20)–(22). Memòria 20 Figura 5.3. Posició dels diferents sòlids del model Es tenen tantes coordenades com graus de llibertat. És a dir, qualsevol postura del model està definida per 23 valors, dels quals 3 s’encarreguen de determinar la posició de la pelvis respecte el terra i els altres 20 fan referència als angles articulars relatius corresponents a cadascuna de les articulacions. Es té per tant un sistema holònom. En la Taula 5.3 apareixen tots els noms de les coordenades tal com apareixen a l’OpenSim i la Figura 5.4 les mostra. Sólid Nom en OpenSim Pelvis pelvis Fèmur dret femur_r Tíbia dreta tibia_r Astràgal dret talus_r Calcani dret calcn_r Peu dret toes_r Fèmur Esquerra femur_l Tíbia Esquerra tibia_l Astràgal esquerra talus_l Calcani esquerra calcn_l Peu dret toes_l Tronc, coll i cap torso Taula 5.1: Nomenclatura dels sòlids del model calcn_l talus_r talus_l torso pelvis femur_r femur_l tibia_r tibia_l calcn_r toes_l toes_r Comparació de diferents sistemes ‘low cost’ de captura de moviment 21 Articulació gdl Sòlid parent Sòlid child Nom en OpenSim terra-pelvis 6 ground pelvis ground_pelvis maluc dret 3 pelvis femur_r hip_r genoll dret 1 femur_r tibia_r knee_r turmell dret 1 tibia_r talus_r ankle_r subastragalina dreta 1 talus_r calcn_r subtalar_r metatars dret 1 calcn_r foot_r mtp_r maluc esquerra 3 pelvis femur_l hip_l genoll esquerra 1 femur_l tibia_l knee_l turmell esquerra 1 tibia_l talus_l ankle_l subastragalina esquerra 1 talus_l calcn_l subtalar_l metatars esquerra 1 calcn_l foot_l mtp_l articulació lumbar 3 pelvis torso back Taula 5.2 Articulacions del model utilitzat: gdl, sòlids parent i sòlids child. Memòria 22 ground_pelvis hip_r / hip_l knee_r / knee_l ankle_r / ankle_l pelvis_tilt hip_flexion_r knee_angle_r ankle_angle_r pelvis_list hip_adduction_r knee_angle_l ankle_angle_l pelvis_rotation hip_rotation_r pelvis_tx hip_flexion_l pelvis_ty hip_adduction_l pelvis_tz hip_rotation_l Fig 5.4. Sentits positius de les derivades de les coordenades generalitzades. subtalar_r / subtalar_l mtp_r / mtp_l Back subtalar_angle_r mtp_angle_r lumbar_extension lumbar_bending subtalar_angle_l mtp_angle_l lumbar_rotation Taula 5.3 Nom de les coordenades del model referides a l’articulació corresponent. Comparació de diferents sistemes ‘low cost’ de captura de moviment 23 L’OpenSim defineix els moviments articulars com a rotacions relatives dels sistemes de referència locals dels sòlids child respecte els seus sòlids parent expressades en angles d’Euler tal com recomana l’ISB (International Society of Biomechanics). El sistema de referència global del terra té els eixos de la següent manera: l’eix 𝑌 apunta cap amunt en la direcció craniocaudal, l’eix 𝑋 apunta cap endavant en la direcció dorsoventral i l’eix 𝑍 cap a la dreta del model en la direcció mediolateral (Fig. 5.5a). Per la seva banda els eixos de referència locals són paral·lels a aquest sistema d’eixos global quan tots els angles d’Euler són 0, és a dir, en posició neutra (Fig. 5.5b). a) b) Figura 5.5. a) Sistema de referència global del terra i postura neutre. b) Eixos de referència locals en postura neutre de la pelvis, fèmur, tíbia i taló dret. Memòria 24 Comparació de diferents sistemes ‘low cost’ de captura de moviment 25 6. La captura del moviment En aquest apartat s’expliquen com s’han extret les dades així com tots els càlculs matemàtics duts a terme mitjançant MATLAB per tractar les dades extretes prèviament amb cadascun dels sistemes utilitzats. En els dos casos es parteix de les dades que rep el PC però aquestes no són les mateixes i per tant, tot i haver-hi semblances ha calgut fer dos codis de MATLAB diferents per obtenir els angles articulars i reporduir-los al model esquelètic d’OpenSim. Com ja s’ha explicat anteriorment les articulacions considerades són la pelvis (pelvis) i totes les de la cama dreta, és a dir maluc (hip), genoll (knee) i turmell (ankle) tal com es mostra en la Taula 6.1. ground_pelvis hip_r knee_r ankle_r pelvis_tilt hip_flexion_r knee_angle_r ankle_angle_r pelvis_list hip_adduction_r pelvis_rotation hip_rotation_r Taula 6.1: gdl considerats en aquest TFG Durant el treball ha estat necessari utilitzar alguns conceptes d’àlgebra lineal bàsica per a poder obtenir tant la posició com les coordenades angulars en el model d’OpenSim. Són les següents expressions:  Angle 𝜃 entre dos vectors 𝑣 i 𝑢. cos𝜃= 𝑣·𝑢 ∥𝑣∥∥𝑢∥ ; 𝜃∈[0,𝜋] (Eq. 1)  Angle 𝜃 entre un vector 𝑣 i un pla 𝜋 amb vector normal 𝑛. sin𝜃= 𝑣·𝑛 ∥𝑣∥∥𝑛∥ ; 𝜃∈[−𝜋2,𝜋2] (Eq. 2)  Vector 𝑤 perpendicular a dos vectors 𝑢 i 𝑣 donats. Equival a trobar el vector normal al pla format pels vectors 𝑢 i 𝑣. 𝑤=[𝑖 𝑗 𝑘 𝑢𝑥𝑢𝑦𝑢𝑧 𝑣𝑥𝑣𝑦𝑣𝑧] (Eq. 3)  Vector 𝑛 normal a un pla format per tres punts (𝐴, 𝐵 i 𝐶) mitjançant el producte vectorial de dos dels vectors que els formen. 𝐵𝐴     =𝐴 −𝐵 ; 𝐵𝐶     =𝐶−𝐵 𝑛= [𝑖 𝑗 𝑘 𝐵𝐴𝑥𝐵𝐴𝑦𝐵𝐴𝑧 𝐵𝐶𝑥𝐵𝐶𝑦𝐵𝐶𝑧] (Eq. 4) Memòria 26 6.1. XSENS 6.1.1. Obtenció de les dades El primer pas a l’hora d’obtenir les dades és escollir la posició dels quatre sensors dels quals disposa el SIMMA Lab, com que l’estudi a realitzar era de la cama dreta la decisió era fàcil. Un acceleròmetre s’ha col·locat en el tors, una mica per sota del pit, el següent en el fèmur, el tercer a la tíbia i l’últim en la part superior del peu. És important orientar de la mateixa manera tots els sensors perquè les dades capturades siguin més fàcils de calcular. En aquest cas tots els sensors s’han orientat de manera que el logo “XSENS” (Figura 4.1b) quedés a la part superior i visible. Com que no es disposava de cap vestit especial per la col·locació, els sensors s’han col·locat al cos mitjançant cinta adhesiva, a continuació es pot veure amb dues imatges com estaven col·locats: Figura 6.1: Captura de les dades amb els XSENS. Comparació de diferents sistemes ‘low cost’ de captura de moviment 27 D’aquesta manera es pot obtenir les rotacions desitjades. La relació entre la col·locació del sensor i l’articulació que es volia estudiar és la següent: Grau de llibertat Part del cos amb sensor Pelvis-terra Tors Maluc Tors i fèmur Genoll Fèmur i tíbia Turmell Tíbia i peu Taula 6.2: Relació entre la part del cos on s’han col·locat els sensors i el gdl on es buscava calcular la rotació. Un cop decidida la posició de cada sensor cal utilitzar el MT Manager que ja s’ha descrit prèviament. Aquest software permet capturar les dades i decidir quines d’elles exportar. Per poder trobar les rotacions relatives el que cal són les orientacions dels sensors. El software dóna l’opció de triar entre extreure l’orientació en quaternions, angles d’Euler o matrius de rotació. Per facilitar els càlculs amb MATLAB s’ha triat extreure les matrius de rotació. Per extreure les dades simplement cal clicar al botó vermell de “Record” per iniciar la captura i tornar-li a donar per aturar-la. El que és important és saber el nom de cada sensor per saber de quina part del cos és. En tots els tests realitzats s’ha col·locat en cada part del cos el mateix sensor i la distribució ha estat la següent: Part del cos Nom del sensor Tors MT_00B42C72 Fèmur MT_00B42C6E Tíbia MT_00B42C86 Peu MT_00B42C84 Taula 6.3: Nom de cada sensor i part del cos on s’ha col·locat. Un cop s’acaba la gravació el mateix MT Manager crea un fitxer MT Binary Logfile (.mtb). Un cop obert aquest fitxer es pot extreure les dades en 4 fitxers de text (.txt), un per cada sensor utilitzat, amb el que es treballarà mitjançant MATLAB. Memòria 28 6.1.2. Càlcul de les rotacions Un cop s’han exportat les dades des del MT Manager, mitjançant codi, s’importen els diferents fitxers a MATLAB. De totes les dades que s’han importat les úniques que interessen són les de la matriu de rotació que és tenen en forma de 6 columnes diferents per cada instant. Per tant, el primer pas, és unificar les 6 columnes de cada instant en una matriu de 3x3. Un cop es té la matriu creada cal modificar els eixos de referència per adequar-los als de l’OpenSim. La primera transformació és la dels eixos locals, en l’XSENS, si es col·loca el sensor amb el logo cap amunt tal com s’ha fet durant el treball, l’eix X apunta cap amunt, l’eix Y cap a la dreta i l’eix Z cap enfora mentre que en l’OpenSim cap amunt apunta l’eix Y apunta en la direcció longitudinal del segment, l’eix Z cap a la dreta i l’eix X en la direcció anterior del segment. Per tant cal modificar l’ordre de les columnes de la matriu. En la Figura 6.2a es pot veure les coordenades del sensor: Figura 6.2: a) Coordenades del sensor estirat, durant els tests l’eix X quedava apuntant cap amunt. (31) b) Coordenades locals a l’OpenSim. És fàcil adonar-se que cal fer aquesta modificació ja que es tenen els eixos locals visualitzats en el MT Manager. La segona modificació es tracta dels canvis dels eixos globals, que en el cas dels sensors XSENS en el nostre treball tenen l’eix Z apuntant en la direcció vertical cap amunt, l’eix Y cap a l’esquerra i per últim l’eix X cap enfora. En aquest cas la modificació necessària és en l’ordre de les files, en aquest cas també cal modificar el signe de les coordenades globals de l’eix Z de l’OpenSim. En la següent figura es pot veure la transformació: Y Z X Comparació de diferents sistemes ‘low cost’ de captura de moviment 29 Figura 6.3: a) Eixos globals dels sensors XSENS. b) Eixos globals de l’OpenSim. Ara que es coneixen quines modificacions cal fer en les matrius de rotacions que es tenen ja es pot passar al pas següent, que és el càlcul dels angles d’Euler. Primer de tot, per fer aquest càlcul, es defineixen els sis graus de llibertat d'un sòlid: tres d'ells defineixen la translació d'un punt del mateix sòlid i la resta determinen la rotació del sòlid al voltant d'aquest mateix punt. En aquest treball, no serà així per les articulacions, a causa del fet que les diferents unions no tindran moviments de translació. Si en tinguessin significaria que pot haver-hi separació dels ossos entre ells. Per tant, el moviment en aquest estudi queda restringit a únicament els tres graus de llibertat rotacionals. Tampoc es té en compte el moviment de translació de l'articulació pelvis-terra degut als problemes de càlcul que dóna la translació en l'estudi dels XSENS com ja s'ha explicat anteriorment. Per començar aquest càlcul cal dir que es coneixen les matrius de rotació que defineixen les rotacions simples al voltant de cadascun dels eixos d’una base ortonormal ( X, Y, Z ). Aquestes són:  Rotació de 𝛾𝑋 graus al voltant de l’eix X: 𝑅𝑋(𝛾𝑥)=[1 0 0 0 𝑐𝑜𝑠𝛾𝑥−𝑠𝑖𝑛𝛾𝑥 0 𝑠𝑖𝑛𝛾𝑥𝑐𝑜𝑠𝛾𝑥] (Eq. 5)  Rotació de 𝛾Y graus al voltant de l’eix Y: 𝑅𝑌(𝛾𝑦)=[𝑐𝑜𝑠𝛾𝑥0 𝑠𝑖𝑛𝛾𝑥 0 1 0 −𝑠𝑖𝑛𝛾𝑥0 𝑐𝑜𝑠𝛾𝑥] (Eq. 6) Memòria 36 Figura 6.5: Procés de transformació de les coordenades de la Kinect a l’OpenSim. En el primer pas es veu les coordenades de la Kinect sobre el dispositiu, en el segon sobre l’esquelet i finalment les de l’OpenSim. Feta aquesta transformació del sistema de coordenades procedim a fer els càlculs per extreure els angles articulars en angles d’Euler com ja ha estat explicat anteriorment, a partir dels punts extrets per la Kinect. Es mostra tots els passos realitzats per trobar primer els sistemes de referència locals dels sòlids del model esquelètic. Abans però cal mostrar els punts que ens dóna la Kinect i el nom que rep cadascun d’aquests. Es mostren en la Figura 6.6. Figura 6.6: Punts obtinguts amb el sensor Kinect.(33) Comparació de diferents sistemes ‘low cost’ de captura de moviment 37 6.2.3. Càlcul dels sistemes de referència locals 6.2.3.1. Pelvis Es comencen els càlculs per la pelvis, anomenada igual en l’OpenSim. Aquest sòlid està connectat a terra a partir de 6 gdl. En aquest cas es manté la translació igual a 0 i per tant es calcularan els 3 gdl rotacionals. Per obtenir les orientacions de la pelvis s’utilitzen els 3 punts extrets amb la Kinect, aquest són hipright, hipleft i spinebase. Aquests punts formen un pla transversal amb el punt spinebase més endarrerit que els altres dos. Figura 6.7 Sistema de coordenades local de la pelvis. Primer de tot es veu que l’eix 𝑦 de la pelvis (𝑝𝑒𝑙𝑣𝑖𝑠y) queda definit com el vector normal al pla format pels tres punts anatòmics spinebase, hipright i hipleft. S’aplica l’(Eq. 4 als vectors que uneixen spinebase amb hipleft i spinebase amb hipright per trobar aquest valor, això si, tenint en compte que el vector resultant ha d’apuntar cap amunt. S’obté per tant: 𝑝𝑒𝑙𝑣𝑖𝑠𝑦           ′=(ℎ𝑖𝑝𝑟𝑖𝑔ℎ𝑡−𝑠𝑖𝑝𝑖𝑛𝑒𝑏𝑎𝑠𝑒)×(ℎ𝑖𝑝𝑙𝑒𝑓𝑡−𝑠𝑝𝑖𝑛𝑒𝑏𝑎𝑠𝑒) (Eq. 28) Aquesta equació es calcula mitjançant la funció cross a MATLAB. L’eix 𝑧 (𝑝𝑒𝑙𝑣𝑖sz) es defineix com el vector que uneix hipleft amb hipright essent perpendicular a l’eix pelvisy a l’estar contingut al pla transversal de la pelvis. 𝑝𝑒𝑙𝑣𝑖𝑠𝑧          ′= ℎ𝑖𝑝𝑟𝑖𝑔ℎ𝑡 − ℎ𝑖𝑝𝑙𝑒𝑓𝑡 (Eq. 29) Un cop es tenen els eixos y i z per trobar l’eix 𝑥 restant només cal fer el producte vectorial (Eq. 3) al ser un vector perpendicular als dos primers i per tant es troba 𝑝𝑒𝑙𝑣𝑖𝑠𝑥. Cal tenir en compte que aquest ha d’apuntar cap endavant. S’obté aleshores: 𝑝𝑒𝑙𝑣𝑖𝑠𝑥           ′= 𝑝𝑒𝑙𝑣𝑖𝑠𝑦           ′×𝑝𝑒𝑙𝑣𝑖𝑠𝑧          ′ (Eq. 30) pelvisY pelvisX pelvisZ Memòria 38 Un cop s’han realitzat els càlculs explicats s’obtenen tres vectors ortogonals entre si que defineixen el sistema de referència local de la pelvis respecte al sistema de referència global del terra tal com es mostra en la Figura 6.8. Amb aquests vectors es poden obtenir els angles d’Euler de la pelvis respecte el terra. Figura 6.8: Sistema de referència local de la pelvis. En negre, esquelet de la Kinect (pelvis i malucs) amb els seus punts anatòmics. En vermell, groc i verd, els tres eixos de coordenades dels sistemes de referència de la pelvis i del terra.(24) Aquest sistema però té una imprecisió important a causa de la Kinect i és que aquesta dóna informació de l’orientació del pla transversal de la pelvis amb l’orientació de l’eix 𝑦 del tronc. Això fa que qualsevol moviment del tronc implica sempre un moviment de la pelvis i viceversa. En la realitat no és així, una persona pot moure el tronc mantenint la pelvis quieta. Aquest detall es nota en els moviments del tronc sobre el pla coronal generant una rotació excessiva de la pelvis al voltant del seu eix 𝑥 local. És per això que cal llegir l’angle d’inclinació del tronc (𝜃𝑥 𝑡𝑜𝑟𝑠𝑜), tal com es representa a la Figura 6.8, i s’aplica aquesta mateixa rotació a la pelvis al voltant del seu eix però en sentit contrari. En conseqüència, s’aconsegueix rectificar l’angle d’inclinació de la pelvis fent que aquest sigui independent de l’angle d’inclinació del tronc. Comparació de diferents sistemes ‘low cost’ de captura de moviment 39 Figura 6.9: Angle de correcció de la pelvis 𝜃𝑥 𝑡𝑜𝑟𝑠𝑜 . Es mostren els sistemes de coordenades del tronc i del terra, i part de l’esquelet Kinect (negre). (24) Per fer aquesta rectificació cal rectificar l’orientació dels eixos locals 𝑦 i 𝑧 de la pelvis (𝑝𝑒𝑙𝑣𝑖𝑠𝑦 i 𝑝𝑒𝑙𝑣𝑖𝑠𝑧) aplicant una rotació al voltant de l’eix 𝑝𝑒𝑙𝑣𝑖𝑠𝑥. Es busca llavors unes noves coordenades referides al sistema de referència global del terra i per fer-ho s’utilitza el procediment matemàtic mostrat a continuació. Aquest permet resoldre el problema d’una manera simple sense necessitat de calcular les matrius de rotació, que en aquest cas tenen una important complexitat. El procediment és el següent, donats un punt arbitrari a l’espai 𝑃, un eix arbitrari a l’espai 𝐴𝐵 i un angle 𝜃, si es vol girar el punt 𝑃 un angle 𝜃 al voltant del vector unitari 𝑛 que passa per l’origen i és paral·lel a l’eix 𝐴B , la nova posició de 𝑃 en coordenades globals es pot calcular amb l’(Eq. 31). 𝑃′=(𝑛·𝑃)×𝑛+cos𝜃[𝑃−(𝑛·𝑃)×𝑛]±sin𝜃(𝑛×𝑃) (Eq. 31) En aquest cas, 𝑃 pren el valor de les coordenades del vector que es vol rotar, ja que la informació rellevant del vector és la seva orientació i no el seu punt d’aplicació. Es considera, per tant, que tots els vectors s’inicien a l’origen de coordenades. 𝑛 és el vector unitari que defineix l’eix al voltant del qual es vol rotar. Fent aquesta modificació s’obté l’(Eq. 32). 𝑣′=(𝑛·𝑣)×𝑛+cos𝜃[𝑣−(𝑛·𝑣)×𝑛]±sin𝜃(𝑛×𝑣) (Eq. 32) On 𝑣 és el vector que es vol rotar i 𝑛 el vector unitari que defineix l’eix de rotació. El signe ± indica el sentit de gir. En el cas de la pelvis, es vol girar els eixos 𝑝𝑒𝑙𝑣𝑖𝑠𝑧 i 𝑝𝑒𝑙𝑣𝑖𝑠𝑦 al voltant de l’eix 𝑝𝑒𝑙𝑣𝑖𝑠𝑥. Aquests tres vectors són perpendiculars entre si, i, per tant, els productes escalars que apareixen en l’(Eq. 32) són nuls. Aquesta condició fa que l’expressió sigui molt més simple: 𝑣′=cos𝜃·𝑣±sin𝜃(𝑛×𝑣) (Eq. 33) Memòria 40 L’angle d’inclinació 𝜃𝑥𝑡𝑜𝑟𝑠𝑜 del tronc, representat a la Figura 6.9, s’obté com l’angle entre el pla transversal del terra que s’anomenarà 𝑔𝑟𝑜𝑢𝑛𝑑𝑦 i és igual a [0,1,0] i el vector 𝑡𝑜𝑟𝑠𝑜𝑧. D’aquesta manera es té en consideració el signe de la rotació. El seu valor es pot calcular una vegada es tenen els tres eixos de coordenades locals del tronc, que serà explicat més endavant. Un cop es tenen, s’utilitza l’(Eq. 34), que s’obté substituint els vectors corresponents en l’(Eq. 2) mencionada anteriorment. θ𝑋𝑡𝑜𝑟𝑠𝑜=sin−1(𝑡𝑜𝑟𝑠𝑜𝑧          ·𝑔𝑟𝑜𝑢𝑛𝑑𝑧             ∥𝑡𝑜𝑟𝑠𝑜𝑧          ∥∥𝑔𝑟𝑜𝑢𝑛𝑑𝑧             ∥)=sin−1(𝑡𝑜𝑟𝑠𝑜𝑧          ·(0,1,0) ∥𝑡𝑜𝑟𝑠𝑜𝑧          ∥) (Eq. 34) Substituint en l’(Eq. 33, s’obtenen les equacions (Eq. 35 i (Eq. 36 que permeten calcular de nous els eixos de coordenades de la pelvis però ara ja amb aquesta correcció. Abans d’aplicar-la cal assegurarse que el vector 𝑝𝑒𝑙𝑣𝑖𝑠𝑥 és unitari. Tenint en compte que valors positius de 𝜃𝑥𝑡𝑜𝑟𝑠𝑜 impliquen rotacions negatives al voltant de 𝑝𝑒𝑙𝑣𝑖𝑠𝑥 i viceversa, la rotació s’aplicarà en sentit positiu. 𝑝𝑒𝑙𝑣𝑖𝑠𝑦           =cos(𝜃𝑥𝑡𝑜𝑟𝑠𝑜)·𝑝𝑒𝑙𝑣𝑖𝑠𝑦           ′+sin(𝜃𝑥𝑡𝑜𝑟𝑠𝑜)·(𝑝𝑒𝑙𝑣𝑖𝑠𝑥           ′×𝑝𝑒𝑙𝑣𝑖𝑠𝑦           ′) (Eq. 35) 𝑝𝑒𝑙𝑣𝑖𝑠𝑧          =cos(𝜃𝑥𝑡𝑜𝑟𝑠𝑜)·𝑝𝑒𝑙𝑣𝑖𝑠𝑧          ′+sin(𝜃𝑥𝑡𝑜𝑟𝑠𝑜)·(𝑝𝑒𝑙𝑣𝑖𝑠𝑥           ′×𝑝𝑒𝑙𝑣𝑖𝑠𝑧          ′) (Eq. 36) Un cop queden definits els tres eixos de referència locals de la pelvis es normalitzen per garantir que el seu mòdul sigui unitari. 6.2.3.2. Tronc Per poder calcular correctament els eixos de coordenades de la pelvis és necessari trobar l’angle d’inclinació del tronc i per trobar aquest angle cal primer trobar l’eix de coordenades z (torsoz) del tronc respecte al sistema de referència global. En l’OpenSim, el tronc forma part del sòlid torso que és la unió de tronc, coll, cap i espatlles. Per trobar els seus eixos de coordenades locals (Figura 6.9) s’utilitzaran els punts spinebase, spineshoulder, shoulderright i shoulderleft (Figura 6.6). Comparació de diferents sistemes ‘low cost’ de captura de moviment 41 Figura 6.10: Sistema de referència local del tronc. En negre, esquelet i diferents punts anatòmics de la Kinect. En color cadascun dels eixos de coordenades dels sistemes de referència del tronc i del terra.(24) L’eix 𝑦 (𝑡𝑜𝑟𝑠𝑜𝑦) és igual al vector que comença en spinbase fins a spineshoulder, és a dir, té la direcció longitudinal del tronc en sentit ascendent La manera de calcular-lo és: 𝑡𝑜𝑟𝑠𝑜𝑥          =𝑠𝑝𝑖𝑛𝑒𝑠ℎ𝑜𝑢𝑙𝑑𝑒𝑟−𝑠𝑝𝑖𝑛𝑒𝑏𝑎𝑠𝑒 (Eq. 37) L’eix 𝑥 (𝑡𝑜𝑟𝑠𝑜𝑥) és l’encarregat d’orientar el pla coronal del tronc, difinit pel vector normal al pla format pels vectors 𝑡𝑜𝑟𝑠𝑜𝑦 i el vector que uneix els punts anatòmics shoulderleft i shoulderright. S’obté, aleshores, a través del seu producte vectorial, per tant s’utilitza l’(Eq. 3. Aquest vector s’encarrega d’orientar el pla coronal del tronc. 𝑡𝑜𝑟𝑠𝑜𝑥          =(𝑠ℎ𝑜𝑢𝑙𝑑𝑒𝑟𝑟𝑖𝑔ℎ𝑡−𝑠ℎ𝑜𝑢𝑙𝑑𝑒𝑟𝑙𝑒𝑓𝑡)×𝑡𝑜𝑟𝑠𝑜𝑦          (Eq. 38) Finalment l’eix 𝑧 (𝑡𝑜𝑟𝑠𝑜𝑧) es defineix com el vector perpendicular als dos anteriors, és a dir tornat a fer un producte vectorial (Eq. 3). S’obté per tant: 𝑡𝑜𝑟𝑠𝑜𝑧          =𝑡𝑜𝑟𝑠𝑜𝑥          ×𝑡𝑜𝑟𝑠𝑜𝑦          (Eq. 39) Un cop es té aquest eix ja es poden utilitzar les (Eq. 35 i (Eq. 36 mostrades anteriorment per trobar els eixos pelvisy i pelvisz. 6.2.3.3. Fèmur Un cop es té la pelvis es passa al fèmur. És un sòlid complex on només es tenen com a dades base per treballar les de dos punts, per un costat el maluc (hiprright) i per l’altre el genoll (kneeright). Un dels eixos, l’eix y , és fàcil, al ser el vector que uneix aquests dos punts mentre que els altres eixos locals son Memòria 42 més complicats de calcular degut a la necessitat de tres punts per a poder garantir l’orientació del sòlid i uns resultats correctes del model. Per a poder fer el càlcul s’ha generat un punt simètric del genoll respecte un pla paral·lel al pla sagital de la pelvis. Creant aquest punt és possible que, en el cas de realitzar un moviment d’adducció s’entrecreuessin el genoll i aquest nou punt simètric. És per això que el pla de simetria passa pel maluc contrari, en aquest cas, l’esquerra. Els punts utilitzats per obtenir els eixos seran, per tant, hipright, kneeright i kneerightsym, aquest últim simètric trobat com a pla paral·lel al pla sagital que passa per hipleft. Primer de tot es troba l’eix y , com ja s’ha explicat anteriorment, és simplement el vector que uneix maluc i genoll. L’equació per tant es: 𝑓𝑒𝑚𝑢𝑟𝑟𝑦             =ℎ𝑖𝑝𝑟𝑖𝑔ℎ𝑡−𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡 (Eq. 40) Un cop es té, es calcula el de l’eix x . Aquest és definit com el vector normal format per kneeright, kneerightsym i hipright. Per arribar a trobat aquest vector primer de tot cal trobar el punt kneerightsym que serà simètric a kneeright respecte al pla paral·lel al pla sagital de la pelvis que passa per hipleft. Aquest pla de simetria s’anomenarà α i es pot definir com: 𝛼:𝐴𝑥+𝐵𝑦+𝐶𝑧+𝐷=0 (Eq. 41) On A, B i C són les coordenades de pelvisz ,que és el vector normal al pla: 𝑛=(𝐴,𝐵,𝐶)=𝑝𝑒𝑙𝑣𝑖𝑠𝑧          (Eq. 42) Per trobar la constant D que defineix el pla α caldrà imposar que dins d’aquest pla hi estigui el punt hipleft. Si es substitueix 𝑥, 𝑦 i 𝑧 en l’(Eq. 41 amb les coordenades de hipleft es pot obtenir el valor de D: 𝐷=−[𝐴𝑥+𝐵𝑦+𝐶𝑧]=−(𝑝𝑒𝑙𝑣𝑖𝑠𝑧          ·ℎ𝑖𝑝𝑙𝑒𝑓𝑡) (Eq. 43) Un cop es té el valor de D es calcula el punt kneerightsym. Per fer-ho cal trobar l’equació de la recta 𝑟 perpendicular al pla α que passa per kneeright. Es coneix que el vector director d’aquesta recta i el vector normal del pla de simetria coincideixen i, per tant, s’obté l’(Eq. 44 de la recta. 𝑟:(𝑥,𝑦,𝑧)=(𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑥,𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑦,𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑧)+𝜆(𝐴,𝐵,𝐶) =𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡+𝜆·𝑝𝑒𝑙𝑣𝑖𝑠𝑧          (Eq. 44) Aquesta equació de la recta r s’iguala amb l’equació del pla de simetria α i d’aquesta manera s’obté el punt de tall P. Comparació de diferents sistemes ‘low cost’ de captura de moviment 43 𝑟:{𝑥=𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑥+𝜆𝐴 𝑦=𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑦+𝜆𝐵 𝑧=𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑧+𝜆𝐶 ; 𝛼:𝐴𝑥+𝐵𝑦+𝐶𝑧+𝐷=0 𝐴(𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑥+𝜆𝐴)+𝐵(𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑦+𝜆𝐵)+𝐶(𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑧+𝜆𝐶)+𝐷=0 𝜆(𝐴2+𝐵2+𝐶2)=−[𝐴·𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑋+𝐴·𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑌+𝐴·𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑍+𝐷] 𝜆=−[𝐴·𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑋+𝐴·𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑌+𝐴·𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑍+𝐷] (𝐴2+𝐵2+𝐶2) 𝜆=−𝐷+(𝑝𝑒𝑙𝑣𝑖𝑠𝑧          ·𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡) ‖𝑝𝑒𝑙𝑣𝑖𝑠𝑧          ‖2 (Eq. 45) Trobat el valor de λ s’utilitza l’(Eq. 44 de la recta r i s’obté el punt de tall P amb l’equació: 𝑃=𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡+𝜆·𝑝𝑒𝑙𝑣𝑖𝑠𝑧          (Eq. 46) Per últim, com que el punt de tall P és igual al punt mitjà entre kneeright i el seu simètric es pot calcular el punt kneerightsym. 𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑠𝑦𝑚=2𝑃−𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡 (Eq. 47) Figura 6.11: Sistema de referència local del maluc dret i pla coronal del fèmur (format per KneeRight, HipRight i KneeRightsym). En negre, esquelet de la Kinect (fèmur i tíbia). Els tres eixos de coordenades del fèmur i del terra són representats en verd, vermell i groc.(24) Memòria 44 Ja es tenen els tres punts necessaris per calcular el vector que defineix l’eix femurrx, que és normal al pla format per kneeright, hipright i kneerightsym. Es substitueix els diferents vectors en l’(Eq. 4 per obtenir l’(Eq. 48. 𝑓𝑒𝑚𝑢𝑟𝑟𝑥            ′=(𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡−ℎ𝑖𝑝𝑟𝑖𝑔ℎ𝑡)×(𝑘𝑛𝑒𝑒𝑟𝑖𝑔ℎ𝑡𝑠𝑦𝑚−ℎ𝑖𝑝𝑟𝑖𝑔ℎ𝑡) (Eq. 48) Amb aquest nou vector ja conegut apareixen dues problemàtiques. Per una banda, la direcció del vector femurrx’ presenta un comportament inestable ja que el pla format pels tres punts trobats anteriors no queda ben definit. Degut a aquest fet es poden obtenir grans variacions en la direcció del vector per una petita variació real de la posició del fèmur quan s’està en una posició d’abducció sense cap flexió, és a dir propera als 90º. El segon problema deriva del fet que el producte vectorial entre dos vectors no és commutatiu i és dependent de la direcció d’aquests. El problema es troba quan el vector femurry’ queda per sota del pla transversal de la pelvis, és a dir, en el cas que s’estigui realitzant un moviment d’abducció o flexió major a 90º. Per una banda en el cas d’una flexió pura és més de 90º (Fig. 6.12b) l’ordre es mantindria de la mateixa forma. Però per un moviment d’abducció pur major a 90º (Figura 6.12d) l’ordre vectorial cal invertir-lo per evitar el canvi de sentit del vector resultant femurrx’ de l’(Eq. 48. Per a poder resoldre aquest problema cal introduir el càlcul de tres nous angles: a) b) c) d) Figura 6.12: a) Sistema de referència local del fèmur dret per flexió major a 90° amb el corresponent angle 𝜃𝑓𝑟𝑦 𝛼𝑐𝑝. b) Angle 𝜃𝑓𝑟𝑦 𝑝𝑧 i àrea cònica corresponent. c) i d) Angle 𝜃𝑓𝑟𝑦 𝛼𝑡𝑝 per una abducció menor (c) i major (d) de 90°.(24) Comparació de diferents sistemes ‘low cost’ de captura de moviment 45  Angle 𝜃𝑓𝑟𝑦 𝑝𝑧 entre l’eix 𝑓𝑒𝑚𝑢𝑟𝑟𝑦 (𝑓𝑟𝑦) i 𝑝𝑒𝑙𝑣𝑖𝑠𝑧 (𝑝𝑧). Serveix per determinar les situacions en les quals els tres punts estudiats es troben gairebé alineats, englobant qualsevol direcció de l’espai 3D. Representa geomètricament l’angle d’inclinació d’un con amb l’eix longitudinal situat sobre l’eix 𝑝𝑒𝑙𝑣𝑖s z (Figura 6.12b). Aquest terme permet seleccionar el volum cònic on el fèmur presenta un mal comportament. El valor llindar ha estat trobat de forma experimental i és de 2° (24). Pel cas del fèmur dret, en el cas d’abducció propera a 90º els eixos 𝑝𝑒𝑙𝑣𝑖𝑠𝑧 i 𝑓𝑒𝑚𝑢𝑟𝑟y prenen sentits contraris i per tant el valor llindar serà de 178°. Els problemes apareixeran per valors angulars entre 178° i 180°. Substituint en l’(Eq. 1), s’obté l’(Eq. 49 a partir de la qual es calcula el valor de l’angle. 𝜃𝑓𝑟𝑦 𝑝𝑧= cos−1(𝑓𝑒𝑚𝑢𝑟𝑟𝑦             ·𝑝𝑒𝑙𝑣𝑖𝑠𝑧          ‖𝑓𝑒𝑚𝑢𝑟𝑟𝑦             ‖‖𝑝𝑒𝑙𝑣𝑖𝑠𝑧          ‖) (Eq. 49)  Angle 𝜃𝑓𝑟𝑦 𝛼𝑡𝑝 entre l’eix 𝑓𝑒𝑚𝑢𝑟𝑟𝑦 (𝑓𝑟𝑦) i el pla transversal de la pelvis (αtp) amb vector normal pelvisy. El signe de l’angle indica si el vector femurry es troba per sobre del pla transversal (abducció o flexió menor a 90º.) (Figura 6.12c) o es troba per sota (abducció o flexió major de 90º) (Figura 6.12d). Els angles positius s’obtenen quan el fèmur es troba per sota del pla transversal donat que es considera el vector femurry com ascendent al fèmur. Per tant en el cas de ser negatiu es trobarà per sota d’aquest pla. Es calcula aquest angle substituint l’(Eq. 2 i obtenim l’(Eq. 50: 𝜃𝑓𝑟𝑦 𝑝𝑧= sin−1(𝑓𝑒𝑚𝑢𝑟𝑟𝑦             ·𝑝𝑒𝑙𝑣𝑖𝑠𝑦           ‖𝑓𝑒𝑚𝑢𝑟𝑟𝑦             ‖‖𝑝𝑒𝑙𝑣𝑖𝑠𝑦           ‖) (Eq. 50)  Angle 𝜃𝑓𝑟𝑦 𝛼𝑐𝑝 entre l’eix 𝑓𝑒𝑚𝑢𝑟𝑟𝑦 (𝑓𝑟𝑦) i el pla transversal de la pelvis (αcp) amb vector normal pelvisx. Aquest angle indica la separació entre el fèmur i el pla coronal de la pelvis. L’ordre del producte vectorial canviarà depenent del seu valor en el cas que l’angle 𝜃𝑓𝑟𝑦 𝛼𝑡𝑝 calculat just abans sigui negatiu. El valor llindar serà de 7,5º trobat de manera experimental al SIMMA Lab (24). Per tant, l’ordre del producte vectorial variarà en el cas que el valor absolut de l’angle es trobi entre 0º i 7,5º. Com que en aquests casos la separació entre el pla coronal de la pelvis i el fèmur es molt petita es considerà el moviment com abducció. Com amb l’angle anterior es substitueixen els vectors en l’(Eq. 2 i s’obtè la nova (Eq. 51: 𝜃𝑓𝑟𝑦 𝛼𝑐𝑝= sin−1(𝑓𝑒𝑚𝑢𝑟𝑟𝑦             ·𝑝𝑒𝑙𝑣𝑖𝑠𝑥           ‖𝑓𝑒𝑚𝑢𝑟𝑟𝑦             ‖‖𝑝𝑒𝑙𝑣𝑖𝑠𝑥           ‖) (Eq. 51) Les diferents condicions que poden aparèixer per calcular el vector femurrx’ són les següents: Memòria 52 globals dels XSENS i de la Kinect no són iguals. Per tant els resultats no tenen cap relació. Per la resta de tests no es compararà la pelvis. Com que no s’ha fet cap moviment amb el tronc o amb la pelvis no s’esperava grans variacions en cap dels angles i així ha estat. En el cas de la inclinació cap als costats (abducció-adducció) i de la rotació del cost s’aprecia que les corbes són simètriques tot i que el punt mitjà no es troba als 0 graus(Figura 7.2). Comparació de diferents sistemes ‘low cost’ de captura de moviment 53 Figura 7.2: Rotacions de la pelvis pel Test 1. Pel que fa la flexió del maluc, s’obtenen valors semblants entre els dos sistemes. També s’aprecia que aquests valors s’allunyen amb el pas dels segons i que, a partir de la primera flexió els angles obtinguts amb la Kinect són superiors als dels XSENS. També es pot apreciar que a l‘acabar de realitzar la primera flexió en la Kinect els angles es disparen en un període molt curt mentre que en els XSENS l’augment és menys pronunciat. Pel que fa a l’abducció els valors ja no són tan propers. Els XSENS tenen valors propers als 0 graus com era d’esperar, s’incrementa al voltant dels 10 graus quan es produeix la flexió, però la Kinect en els instants que s’està produint la flexió té un angle d’abducció negatiu de fins a menys 30 graus. Per últim, en la rotació interna del fèmur, també s'observa que es generen angles en el moment de la flexió produeix un moviment en aquest grau de llibertat, al mateix moment que es produeixen els valors de flexió més elevats. També en aquest cas són positius en els XSENS mentre que són negatius per la Kinect, així com en l’abducció era més pronunciat el valor màxim absolut de la Kinect aquí ho és el de l’XSENS. Vista aquesta diferència en els angles secundaris, aquells que no varien tant degut al moviment realitzat, en els següents tests només es farà l’estudi per aquelles rotacions principals segons el moviment (Figura 7.3). Memòria 54 Figura 7.3: Rotacions del maluc pel Test 1. Pel que fa a l’angle de flexió del genoll s’obtenen, en aquest cas en tot moment, valors superiors per part dels XSENS. Com en el cas anterior, també s’obté que en alguns instant varia més notablement l’angle en l’aparell de Microsoft. Una possible causa d’aquest fet podria esser que la Kinect captura menys valors en cada instant de temps i per tant és més fàcil que produeixin salts més grans entre cada instant. Només hi ha un període on l’angle pren valors negatius ja que en la segona flexió del maluc no s’ha flexionat el genoll (Figura 7.4). Comparació de diferents sistemes ‘low cost’ de captura de moviment 55 Figura 7.4: Flexió del genoll pel Test 1. Per últim també s’ha estudiat l’angle de flexió plantar del turmell. El resultat obtingut mostra en alguns instants uns valors força propers però en altres la Kinect dóna uns valors molt variables. La raó per la qual és produeix aquest fet molt probablement per la dificultat de capturar el valor del punt rightfoot per part del sensor (Figura 7.5). Figura 7.5: Rotacions del turmell pel Test 1. Memòria 56 7.2. Tests 2 i 3 - Flexió de maluc Com que en el segon i tercer test s’ha realitzat al mateix moviment, que també és el mateix que en el primer, es compararan junts i es verificarà tot el que s'ha observat en el primer test. El primer angle que s’ha estudiat és el de la flexió del maluc. Es comprova el que ja s’ha observat anteriorment. En línies generals els valors són molt propers. En el moment en què s’arriba als punts màxims i mínims de flexió en on apareixen les diferències, en la Kinect sempre s’obtenen valors majors tant en el màxim com en el mínim. Es tornen a apreciar instants on la Kinect presenta increments pronunciats en el valor de l’angle, especialment en els moments de màxima flexió (Figura 7.6). Figura 7.6: Rotacions del maluc pels Tests 2 i 3. En el cas del genoll els valors obtinguts són més distants entre sistemes. Segons la Kinect els períodes de flexió del genoll són més curts del que descriuen els XSENS. També torna a aparèixer salts en els valors de la Kinect. En aquest cas, en els XSENS, també es pot observar com en el moment en el qual la cama torna a una posició propera a la inicial hi ha algun instant on el valor de l’angle decreix per tornar a créixer. De totes maneres en la Kinect també s’aprecia i per tant el més probable és que hagi estat algun moviment estrany a l’hora de realitzar la flexió per part de l’usuari (Figura 7.7). Comparació de diferents sistemes ‘low cost’ de captura de moviment 57 Figura 7.7: Flexió del genoll pels Tests 2 i 3. Per últim s’estudien els angles de flexió del turmell. En aquests dos tests es verifiquen els problemes de la Kinect per capturar els valors del peu, són molt pocs instants on les gràfiques de la Kinect són estables, en gran part de la gràfica s’observen errors de captura (Figura 7.8). Figura 7.8: Flexió del genoll pels Test 2 i 3. 7.3. Test 4 - Abducció de maluc El quart test realitzat és el d’un moviment diferent, en aquest cas d’abducció del maluc. (Figura 7.9) Memòria 58 Figura 7.9: Moviment d’abducció del maluc.(34) L’angle més interessant d’estudiar en aquest cas és per tant aquesta abducció. En el moviment capturat per la Kinect en el moment de màxima abducció negativa té valors incorrectes. També es pot dir que, un cop més la Kinect dóna valors majors (en aquest cas negatius) en el moment de màxim moviment, en aquest cas d’abducció la diferència és major que la vista en els casos de flexió (Figura 7.10). Figura 7.10: Abducció del maluc pel Test 4. En aquest test també s’ha estudiat els angles de flexió i rotació del maluc per un moviment diferent dels realitzats anteriorment. El que s’aprecia en aquestes rotacions és que els XSENS han detectat unes variacions en la flexió i la rotació interna del maluc. No són angles grans i probablement han estat originats involuntàriament en fer l’abducció per part de l’usuari. En el cas de la Kinect el que s’observa són força errors de captura i una corba amb grans variacions, especialment a la rotació interna (Figura 7.11). Comparació de diferents sistemes ‘low cost’ de captura de moviment 59 Figura 7.11: Flexió i rotació del maluc pel Test 4. 7.4. Test 5 - Flexió + Abducció de maluc En el següent test s’ha realitzat un moviment de flexió i abducció del maluc combinat. Primerament s’ha realitzat la flexió del maluc unida a la del genoll i un cop s’ha flexionat el maluc s’ha efectuat l’abducció (Figura 7.12). Memòria 60 Figura 7.12: Les tres etapes del moviment, repòs inicial, posterior flexió de maluc i genoll i abducció final. (35) En aquest cas s’ha observat el mateix que s’ha vist en els casos anteriors pel que fa l’estabilitat dels valors, els dels XSENS són més estables i tenen menys salts en els valors. La diferència observable per aquest test és que la flexió del maluc és major en els XSENS en el cas de màxima flexió, però a més, l’angle també és menor quan la flexió és mínima (màxima extensió del maluc) (Figura 7.13). Figura 7.13: Flexió del maluc pel Test 5. Pel que fa l’abducció s’observa com errors de captura en els valors de la Kinect són encara majors a la de la flexió. També s’observa que per aquesta test l’abducció, que es negativa quan es realitza el moviment d’abducció de la pelvis, és major en la Kinect (Figura 7.14: Abducció del maluc pel Test 5. Comparació de diferents sistemes ‘low cost’ de captura de moviment 61 Figura 7.14: Abducció del maluc pel Test 5. Com que també es té la flexió del genoll en aquest moviment s’ha fet el gràfic de la comparativa entre els dos sistemes. En aquest gràfic s’aprecia com segons la Kinect la flexió dura instant més curts de temps i els valors de l’angle en flexionar el genoll són menors (Figura 7.15). Figura 7.15: Flexió del genoll pel Test 5. 7.5. Test 6 - Esquat L’últim moviment realitzat per fer l’estudi és el d’esquat o squat, en aquest moviment es té tant flexió del maluc com del genoll però en comptes d’aixecar la cama el que és fa es baixar el tors. (Figura 7.16) Memòria 68 8.1.2. Cost de realització En aquest apartat es tenen en compte tots els costos sorgits degut a la pròpia realització del treball per part de l’estudiant. S’ha tingut en compte el cost de les hores de dedicació. Per trobar aquest cost s’utilitza un salari estimat per un enginyer que en aquest cas serà de 20€/h. En el temps de reunió amb el tutor també es té en compte el salari del tutor, el qual també serà de 20€/h. S’ha calculat un total de 500 h per fer el treball. Aquestes hores son repartides de la següent manera: Fase Temps [h] Preu [€] Estudi previ i recerca 125 2.500 Desenvolupament del codi 175 3.500 Obtenció dels resultats 100 2.000 Redacció del treball 80 1.600 Reunions amb el tutor 20 800 Total 500 10.400 Taula 8.2: Repartiment de les hores dedicades al treball i cost associat. El cost del consum elèctric al no utilitzar equips de potència és força reduït i per tant no es tindrà en compte en el còmput del costos. 8.1.3. Cost indirecte Finalment també s’ha afegit en el total dels costos aquells deguts al desplaçament de l’estudiant fins a l’EEBE aquells cops que han estat realitzats únicament amb el propòsit de realitzar TFG. Aquests costos provenen tant del cost del transport públic com del privat al haver-se fet els desplaçaments en els dos casos. El nombre de vegades que s’ha anat a la universitat en cotxe han estat aproximadament 20. Establint el preu de la benzina al voltant dels 1,25€ el litre, el consum de benzina en 6 litres cada 100 kilòmetres i el nombre de kilòmetres únicament per anar a la universitat com la diferència entre anar de la feina a la universitat i tornar a casa menys anar de la feina a casa que es de manera diària uns 25 kilòmetres aproximadament, el cost d’anar en cotxe fins a l’EEBE ha estat de: Comparació de diferents sistemes ‘low cost’ de captura de moviment 69 20𝑣𝑖𝑎𝑡𝑔𝑒𝑠· 25𝑘𝑚 1𝑣𝑖𝑎𝑡𝑔𝑒𝑠·6𝑙 100𝑘𝑚·1,25€ 1𝑙 =37,5€ El cost del transport públic serà el d’haver utilitzat 3 targetes T-10 de TMB. La suma d’aquests costos indirectes es la següent: Concepte Cost [€] Transport privat 37,5 Transport públic 30,6 Total 68,1 Taula 8.3: Costos indirectes 8.1.4. Costos totals Un cop s’ha calculat els costos per separat es calcula el cost total d’aquest TFG. Concepte Cost [€] Cost d’adquisició i amortització 126,5 Cost de realització 10.400,0 Cost indirecte 68,1 Total 10.594,6 Taula 8.4: Cost total del projecte 8.2. Anàlisi de l’impacte ambiental Aquest projecte ha tingut un impacte ambiental molt reduït, a causa del fet que no s'ha generat cap residu considerable durant l'execució d'aquest. L'únic residu directe que ha tingut el treball és la cinta aïllant utilitzada per col·locar els sensors XSENS al cos per fer les captures. S'han utilitzat dues cintes aïllants de les quals se n’ha utilitzat una i mitja. Com a altres residus ocasionats es pot parlar del deteriorament que poden haver patit els equips electrònics, tant els ordinadors com els XSENS i la Kinect. En cap cas el seu ús no ha estat un factor que hagi reduït dràsticament la vida útil d'aquests. De totes maneres, tot aquest material caldrà ser reciclat Memòria 70 un cop no sigui útil seguint la Directiva Europea 2002/96/CE, relativa a la fi de la seva vida útil, el tractament dels residus i el seu possible reciclatge. També hi ha hagut una despesa elèctrica per l'ús d'aquests aparells, però no haurà significat un gran augment en el consum ni de l'EEBE ni en el propi habitatge a l'haver utilitzat equips electrònics de baixa potència. L’únic impacte ambiental que hi ha hagut ha estat en els desplaçaments en vehicle propi des de la feina fins a l’EEBE. Aquest impacte en kg de CO2 comptabilitzant, com en el estudi econòmic, la diferència de kilòmetres entre anar directament a casa o anar de la feina a la universitat i posteriorment tornar a casa i tenint en compte que un vehicle de benzina emet 2,3kg de CO2 per litre(37). 20𝑣𝑖𝑎𝑡𝑔𝑒𝑠·25𝑘𝑚 𝑣𝑖𝑎𝑡𝑔𝑒·6 100 𝑙 𝑘𝑚·2,3𝑘𝑔 𝐶𝑂2 𝑙=69 𝑘𝑔 𝐶𝑂2 Comparació de diferents sistemes ‘low cost’ de captura de moviment 71 Conclusions L’objectiu d’aquest TFG ha estat fer una comparativa de la captura de moviment que realitzen dos sistemes considerats de low cost (comparats amb altres existents en el mercat) i que formen part del SIMMA Lab de l’EEBE que són els sensors inercials XSENS i per l’altre el sensor de captura de moviment Kinect V2 de Microsoft. Cal precisar que tot i ser considerats ambdós sistemes com a low cost hi ha una diferència considerable entre el preu dels sistemes essent força superior el dels XSENS. A causa de la quantitat de sensors XSENS disponibles en el laboratori els moviments estudiats per fer la comparativa han estat només els de la cama dreta, des de la pelvis fins al peu. Un cop analitzats els valors que es poden obtenir de cada sistema a l’hora de fer la captura del moviment s’ha estudiat quines dades cinemàtiques eren possibles de comparar. Finalment s’ha decidit comparar els angles articulars doncs en el cas dels XSENS es pot conèixer l’orientació d’aquests i en el cas de la Kinect la posició de diferents punts anatòmics de l’usuari. En un primer moment s’ha valorat obtenir també la translació de la pelvis però s’ha descartat en veure que, pels XSENS, s’obtenien valors llunyans a la translació real per culpa del drift en el pla horitzontal, aquest és un error de mesura que apareix a causa de les seves característiques i que s’incrementa en majors períodes de captura del moviment. Això es deu al fet que és necessari integrar l’acceleració dos cops per obtenir la translació. Un cop decidit quins valors utilitzar com a input per trobar els angles articulars s’ha desenvolupat un model matemàtic, que ha estat explicat en aquest treball, a partir d’un codi generat utilitzant el software de càlcul MATLAB per cada sistema de captura del moviment. En un primer moment s’ha suggerit generar un codi en llenguatge C++ mitjançant el desenvolupador de codi VisualBasic però finalment s’ha decidir fer-ho amb MATLAB, ja que és un programa més fàcil d’entendre i treballar i desenvolupat per fer models matemàtics. L’existència d’un Toolbox per la captura de dades amb càmeres ha estat també un motiu de pes per decidir triar aquest programari. En el cas dels XSENS prèvia a la mateixa captura ha estat necessari decidir on i com col·locar cadascun dels sensors per poder obtenir satisfactòriament els angles articular desitjats. Finalment s’ha decidit col·locar els sensors paral·lels al pla craniocaudal essent el primer sota el pit, un al mig de la cuixa, el següent entre el turmell i el fèmur i l’últim en l’empenya del peu, tots ells amb el logo de XSENS en la part superior del sensor. Un cop decidida la col·locació s’ha realitzat la captura del moviment a partir del software propi dels sensors anomenat MT Manager i que dóna un fitxer de text com a output amb les dades que poden extreure els sensors que posteriorment és important pel codi de MATLAB. En el codi creat amb MATLAB per la Kinect s’ha utilitzat l’Image Acquisition Toolbox que permet connectar la càmera de la Kinect a MATLAB per poder transmetre les dades capturades sense necessitat de cap altre software. Una vegada extretes les dades i importades al codi de MATLAB s’ha fet servir el model Memòria 72 matemàtic creat per convertir aquests inputs que eren diferents en cada cas en els diferents angles de les articulacions a estudiar que són els de la pelvis, el maluc, el genoll i el turmell. Durant el desenvolupament dels dos codis han sorgit diferents problemàtiques. Una d'elles ha estat trobar la manera de modificar els eixos de referència tant locals com globals de cada sistema per ser comuns entre ells. A més s’ha buscat que fossin compatibles amb el software OpenSim per poder visualitzar els angles obtinguts i d’una manera visible donar per correctes els valors. En el cas de la Kinect s’han detectat altres problemes derivats de les limitacions d’aquest sistema. Una d’elles ha estat en el cas de l’orientació del fèmur per valors propers als 90º de flexió o abducció, s’ha aprofitat la manera amb la qual es va corregir aquest problema en un treball on també es buscaven els angles articulars a partir de la Kinect (24), en aquest treball es van introduir certes condicions per trobar els sistemes de referència locals del fèmur a partir de dividir les regions on es troba el fèmur per decidir si es tracta d’un moviment d’abducció o de flexió i per tant calcular l‘orientació de maneres diferents. En el treball anterior es van fer proves experimentals per decidir uns valors que separessin ambdues zones i aquests valors s’han aprofitat en el present treball. Un altre problema detectat, relacionat també amb la Kinect, ha estat l’orientació de la pelvis i ve derivat pel fet que per aquest sistema quan es realitza un moviment amb el tronc també es realitza per la pelvis i viceversa, quan realment, és possible moure el tronc sense necessitat de moure la pelvis. Aquest error s’ha resolt a partir de restar l’angle d’inclinació del tronc al sistema de referència local de la pelvis. Un cop resolts tots aquests problemes detectats s’ha creat el codi per realitzar tots els càlculs necessaris i després exportar totes les dades necessàries en un fitxer de MATLAB per poder fer els posteriors estudis pertinents així com un fitxer .mot per poder visualitzar els moviments en el sistema OpenSim. Les diferents orientacions obtingudes per cada articulació estudiada han estat comparades entre els dos sistemes. Els resultats obtinguts mostren corbes més suaus en el cas dels sensors inercials respecte a la Kinect on apareixen errors de captura en alguns instants. Els valors en els angles articular que pateixen una major variació a causa del moviment realitzat són força semblants pels dos sistemes en els 6 tests realitzats. Per contra, es troben diferències majors en els angles d’aquelles articulacions que tenen una menor variació. S’ha detectat també la dificultat que té la Kinect per capturar la posició del peu, i per tant, el posterior el càlcul de la flexió plantar del turmell. Són pocs els instants on l’angle obtingut és estable en el temps i proper als valors dels XSENS. Per últim s'ha detectat que la diferència entre els dos sistemes és major en moviments més complexes com és el cas del moviment de flexió i abducció junts. Es pot concloure que els dos sistemes poden ser útils per aplicacions on es vol capturar la cinemàtica d’un cos amb un pressupost reduït. Els sensors inercials XSENS ofereixen una millor qualitat de les dades amb valors més estables però per contra són més cars. Per altra banda els XSENS han limitat els Comparació de diferents sistemes ‘low cost’ de captura de moviment 73 sòlids a estudiar al només comptar amb 4, si es volen fer estudis d’un major nombre de sòlids és necessari comptar-hi amb més sensors fent que el preu total augmenti. També es té el problema de la col·locació dels sensors, que en aquest treball ha estat amb cinta adhesiva, podent generar orientacions no totalment idèntiques a les que té realment el sòlid. Per solucionar-ho seria necessari o bé crear algun tipus de vestit o cinta on quedessin enganxats de la manera desitjada tots els sensors o bé comprar el vestit fet per la companyia XSENS però el preu també augmentaria considerablement. Aquests problemes no es presenten en la Kinect que sempre pot capturar els punts del cos complet. Aquesta afirmació és relativa doncs en el cas de la Kinect s’ha observat el problema amb la captura dels punts del peu. Resumint es pot dir que els dos sistemes són vàlids per diferents aplicacions que volen capturar la cinemàtica d’un cos amb un pressupost reduït però depenent dels tipus i la quantitat de sòlids a estudiar i del moviment que es vol capturar serà més viable en relació qualitat/preu utilitzar un sistema o l’altre. Memòria 74 Comparació de diferents sistemes ‘low cost’ de captura de moviment 75 Bibliografia 1. OpenSim - Support, Events and Resources. A: [en línia]. [Consulta: 20 desembre 2017]. Disponible a: http://opensim.stanford.edu/support/index.html. 2. Sturman, D.J. A Brief History of Motion Capture for Computer Character Animation A Brief History of Motion Capture for Computer Character Animation. A: [en línia]. Paris: 2012. [Consulta: 6 juny 2018]. Disponible a: http://www.siggraph.org/education/materials/HyperGraph/animation/character_animation/motion _capture/history1.htm. 3. Cabarga, L. The Fleischer story: A history of the Max Fleischer Cartoon Studio in the golden age of film animation 1920 - 1942. 2. Nova York: Da Capo Press Inc, 1988. ISBN 978-0306803130. 4. Seymour, M. The Art of Roto: 2011. A: [en línia]. 2011. [Consulta: 6 juny 2018]. Disponible a: https://www.fxguide.com/featured/the-art-of-roto-2011/. 5. Mérida Mejías, S. Rotoscopia y captura de movimiento. Una aproximación general a través de sus técnicas y procesos en la postproducción [en línia]. Universitat Politècnica de València, 2013. [Consulta: 6 juny 2018]. Disponible a: https://riunet.upv.es/bitstream/handle/10251/35675/memoria.pdf?sequence=1&isAllowed=y. 6. Falcone, J. De Altamira a Toy Story [en línia]. 2002. Buenos Aires Argentina: Universidad de Palermo,2002. [Consulta: 6 juny 2018]. Disponible a: https://fido.palermo.edu/servicios_dyc/publicacionesdc/vista/detalle_articulo.php?id_articulo=4995 &id_libro=97. 7. Conditt, J. 100 years of motion-capture technology. A: [en línia]. 2018. [Consulta: 1 maig 2018]. Disponible a: https://www.engadget.com/2018/05/25/motion-capture-history-video-viconsiren/?guccounter=1. 8. Kinesiología. A: Gran Diccionario de la Lengua Española [en línia]. Larousse Editorial, S.L., 2016. DOI 9788415411253. [Consulta: 6 juny 2018]. Disponible a: https://es.thefreedictionary.com/kinesiología. 9. Dosier, R. Weekly Muppet Wednesdays: Waldo C. Graphic. A: [en línia]. 2011. [Consulta: 6 juny 2018]. Disponible a: https://muppetmindset.wordpress.com/2011/04/13/weekly-muppetwednesdays-waldo-c-graphic/. 10. Vera, L. et al. Espejo Aumentado: sistema interactivo de Realidad Aumentada basado en Kinect. A: [en línia]. 2018. [Consulta: 6 juny 2018]. Disponible a: https://www.researchgate.net/publication/260342692. 11. Kitagawa, M. i Windsor, B. MoCap for Artists: Workflow and Techniques for Motion Capture [en línia]. Focal Press, 2008. ISBN 978-0-240-81000-3. [Consulta: 6 setembre 2018]. Disponible a: https://gpreview.kingborn.net/383000/a78d30c0f1c84e79b87385cb3f3523ae.pdf. 12. Tao, Y., Hu, H. i Zhou, H. Integration of Vision and Inertial Sensors for 3D Arm Motion Tracking in Home-based Rehabilitation. A: The International Journal of Robotics Research [en línia]. 2007, Vol. 26, Memòria 76 p. 607-624. DOI 10.1177/0278364907079278. [Consulta: 20 juny 2018]. Disponible a: http://ijr.sagepub.com. 13. Pascual, A. EKF y UKF: dos extensiones del filtro de Kalman para sistemas no lineales aplicadas al control de un péndulo invertido. A: [en línia]. 2006. [Consulta: 20 juny 2018]. Disponible a: http://iie.fing.edu.uy/ense/asign/tes/monografias/anteriores/alejandro_pascual/TES2004_pascual.p df. 14. Damgrave, R.G.J. i Lutters, D. The Drift of the Xsens Moven Motion Capturing Suit during Common Movements in a Working Environment. A: Proceedings of the 19th CIRP Design Conference [en línia]. Cranfield University: Competitive Design, 2009,p. 338. [Consulta: 20 juny 2018]. Disponible a: https://dspace.lib.cranfield.ac.uk/bitstream/handle/1826/3722/The_Drift_of_the_Xsens_Moven_M otion_Capturing_Suit_during_Common_Movements_in_a_Working_Environment2009.pdf?sequence=3&isAllowed=y. 15. Moreno, F. et al. Un Framework para la Rehabilitación Física en Miembros Superiores con Realidad Virtual. A: Primera Conferencia Nacional de Computación, Informática y Sistemas [en línia]. Caracas, Venezuela: 2013. [Consulta: 9 juliol 2018]. Disponible a: https://s3.amazonaws.com/academia.edu.documents/32291708/concisa13.pdf?AWSAccessKeyId=A KIAIWOWYYGZ2Y53UL3A&Expires=1536515753&Signature=0prVZFIMaXBrtwPyT46pUZJzJKI%3D&res ponse-content-disposition=inline%3B filename%3DUn_Framework_para_la_Rehabilitacion_. 16. Górriz, M. Aprenentatge de la llengua de signes catalana amb Kinect [en línia]. Escola Universitària Politècnica de Mataró, Universitat Politècnica de Catalunya, 2012. [Consulta: 9 juliol 2018]. Disponible a: https://upcommons.upc.edu/bitstream/handle/2099.1/16035/MemoriaMarcGorriz.pdf?sequence=1 &isAllowed=y. 17. Velarde, M.P. et al. Análisis del movimiento de las extremidades superiores aplicado a la rehabilitación física de una persona usando técnicas de visión artificial. A: Revista Tecnológica - ESPOL [en línia]. 2015. DOI 1390-3659. [Consulta: 7 juliol 2018]. Disponible a: http://rte.espol.edu.ec/index.php/tecnologica/article/view/377/225. 18. Company - Xsens 3D motion tracking. A: [en línia]. [Consulta: 15 agost 2018]. Disponible a: https://www.xsens.com/company/. 19. Paulich, M. et al. Xsens MTw Awinda: Miniature Wireless Inertial-Magnetic Motion Tracker for Highly Accurate 3D Kinematic Applications. A: [en línia]. [Consulta: 3 agost 2018]. Disponible a: www.xsens.com,. 20. Diferencias entre Kinect V1 y Kinect V2. A: [en línia]. [Consulta: 12 juny 2018]. Disponible a: https://edwinnui.wordpress.com/2015/02/05/diferencias-entre-kinect-v1-y-kinect-v2-2/. 21. Componentes del sensor Kinect para Xbox 360. A: [en línia]. [Consulta: 12 juny 2018]. Disponible a: https://support.xbox.com/es-ES/xbox-360/accessories/kinect-sensor-components. 22. Kinect - ElOtroLado. A: [en línia]. [Consulta: 12 juny 2018]. Disponible a: https://www.elotrolado.net/wiki/Kinect. 23. Fernández, H. Skeletons?… el desarrollo de una interfaz verdaderamente natural. A: [en línia]. 2012. Comparació de diferents sistemes ‘low cost’ de captura de moviment 77 [Consulta: 1 maig 2018]. Disponible a: https://hughfernandez.com/2012/07/04/skeletons-eldesarrollo-de-una-interfaz-verdaderamente-natural/. 24. Mascaró Palliser, O. VIRTUAL MIRROR: Integració de llibreries Kinect i OpenSim a temps real. UPC, 2018. 25. MT Manager User Manual. A: [en línia]. 2005. [Consulta: 18 març 2019]. Disponible a: www.xsens.com. 26. Rouse, M. What is MATLAB? A: [en línia]. [Consulta: 18 març 2019]. Disponible a: https://whatis.techtarget.com/definition/MATLAB. 27. Welcome to OpenSim - OpenSim Documentation. A: [en línia]. [Consulta: 4 febrer 2018]. Disponible a: https://simtk-confluence.stanford.edu/display/OpenSim/Welcome+to+OpenSim. 28. Drake, R.L. et al. Gray anatomía para estudiantes [en línia]. Elsevier, 2010. ISBN 9788481748321. [Consulta: 1 maig 2019]. Disponible a: https://es.wikipedia.org/wiki/Plano_anatómico. 29. John, C.T. et al. Contributions of muscles to mediolateral ground reaction force over a range of walking speeds. A: [en línia]. 2012, DOI 10.1016/j.jbiomech.2012.06.037. [Consulta: 16 desembre 2018]. Disponible a: http://dx.doi.org/10.1016/j.jbiomech.2012.06.037. 30. Anderson, F.C. i Pandy, M.G. Dynamic Optimization of Human Walking. A: [en línia]. 2001, DOI 10.1115/1.1392310. [Consulta: 16 desembre 2018]. Disponible a: https://homes.cs.washington.edu/~todorov/courses/amath533/AndersonPandy.pdf. 31. Matula, T. Estimating human movement using accelerometers Declaration. A: [en línia]. Brno: 2016. [Consulta: 29 març 2019]. Disponible a: https://www.vutbr.cz/www_base/zav_prace_soubor_verejne.php?file_id=132370. 32. Torres Fabre, M.A. Diseño e Implementación de una biblioteca de robótica en MATLAB [en línia]. Universidad de las Américas Puebla, 2014. [Consulta: 17 març 2019]. Disponible a: http://catarina.udlap.mx/u_dl_a/tales/documentos/lmt/torres_f_ma/capitulo3.pdf. 33. Anonymous author. Kinect | vvvv. A: [en línia]. 2017. [Consulta: 7 març 2019]. Disponible a: https://vvvv.org/documentation/kinect. 34. Hip pain | Causes, exercises, treatments | Versus Arthritis. A: [en línia]. [Consulta: 20 abril 2019]. Disponible a: https://www.versusarthritis.org/about-arthritis/conditions/hip-pain/. 35. Standing Open The Gate | Illustrated Exercise Guide. A: [en línia]. [Consulta: 20 abril 2019]. Disponible a: https://www.spotebi.com/exercise-guide/standing-open-the-gate/. 36. Squat | Illustrated Exercise Guide. A: [en línia]. [Consulta: 20 abril 2019]. Disponible a: https://www.spotebi.com/exercise-guide/squat/. 37. Universidad del País Vasco. ¿Quieres conocer el impacto ambiental de la movilidad? - UPV/EHU. A: [en línia]. [Consulta: 23 abril 2019]. Disponible a: https://www.ehu.eus/es/web/araba/campusiraunkorra-mugikortasuna-ingurunean-eraginak. Memòria 84 else % Avisa de la no grabacó de cap cos warning('No body is tracked') end % Extracció del temps en cada instant de captura time(j)=24*3600*(datenum(depthMetaData.AbsTime)-t0); end t0=datenum(depthMetaData_all(1).AbsTime); for j = 1:length(depthMetaData_all) % Get images and metadata from the color and depth device objects. depthMetaData=depthMetaData_all(j); % Create skeleton connection map to link the joints. SkeletonConnectionMap = [ [4 3]; %Head [3 21]; %Neck [21 9]; %RightShoulder [9 10]; %RightArm [10 11]; %RightArm2 [11 12]; %RightHand [12 24]; %RightHand2 [12 25]; %RightHand3 [21 5]; %LeftShoulder [5 6]; %LeftArm [6 7]; %LeftArm2 [7 8]; %LeftHand [8 22]; %LeftHand2 [8 23];%LeftHand3 [21 2]; %Torso [2 1]; %Torso2 [1 17]; %RightHip [17 18]; %RightLeg [18 19]; %RightLeg2 [19 20]; %RightFoot [1 13]; %LeftHip [13 14]; %LeftLeg [14 15]; %LeftLeg2 [15 16]; %LeftFoot ]; % Find the indexes of the tracked bodies. anyBodiesTracked = any(depthMetaData.IsBodyTracked ~= 0); trackedBodies = find(depthMetaData.IsBodyTracked); % Find number of Skeletons tracked. nBodies = length(trackedBodies); if nBodies == 0 else for i = 1:24 for body = 1:nBodies skeletonJoints = depthMetaData.JointPositions (:,:,depthMetaData.IsBodyTracked); end Comparació de diferents sistemes ‘low cost’ de captura de moviment 85 end % Extracció de les dades i = 3; k = 1; shoulderleft(j,i) = skeletonJoints(5,k); shoulderright(j,i) = skeletonJoints(8,k); spineshoulder(j,i) = skeletonJoints(21,k); spinebase(j,i) = skeletonJoints(1,k); r_hip(j,i) = skeletonJoints(17,k); l_hip(j,i) = skeletonJoints(13,k); r_knee(j,i) = skeletonJoints(18,k); r_ankle(j,i) = skeletonJoints(19,k); r_foot(j,i) = skeletonJoints(20,k); i = 2; k = 2; shoulderleft(j,i) = skeletonJoints(5,k); shoulderright(j,i) = skeletonJoints(8,k); spineshoulder(j,i) = skeletonJoints(21,k); spinebase(j,i) = skeletonJoints(1,k); r_hip(j,i) = skeletonJoints(17,k); l_hip(j,i) = skeletonJoints(13,k); r_knee(j,i) = skeletonJoints(18,k); r_ankle(j,i) = skeletonJoints(19,k); r_foot(j,i) = skeletonJoints(20,k); i = 1; k = 3; shoulderleft(j,i) = -skeletonJoints(5,k); shoulderright(j,i) = -skeletonJoints(8,k); spineshoulder(j,i) = -skeletonJoints(21,k); spinebase(j,i) = -skeletonJoints(1,k); r_hip(j,i) = -skeletonJoints(17,k); l_hip(j,i) = -skeletonJoints(13,k); r_knee(j,i) = -skeletonJoints(18,k); r_ankle(j,i) = -skeletonJoints(19,k); r_foot(j,i) = -skeletonJoints(20,k); end pause(0.001); time(j)=24*3600*(datenum(depthMetaData.AbsTime)-t0); end for j = 1:length(depthMetaData_all) % PELVIS % L'eix z va de hipleft a hipright pelvis_z(j,:) = r_hip(j,:) - l_hip(j,:); sb_hr(j,:) = r_hip(j,:) - spinebase(j,:); sb_hl(j,:) = l_hip(j,:) - spinebase(j,:); % L'eix y és perpendicular al pla transversal definit per hipright, hipleft i spinebase pelvis_y(j,:) = cross(sb_hr(j,:), sb_hl(j,:)); Memòria 86 % L'eix x és perpendicular pelvis_x(j,:) = cross(pelvis_y(j,:), pelvis_z(j,:)); pelvis_x(j,:) = pelvis_x(j,:) / norm(pelvis_x(j,:)); pelvis_y(j,:) = pelvis_y(j,:) / norm(pelvis_y(j,:)); pelvis_z(j,:) = pelvis_z(j,:) / norm(pelvis_z(j,:)); % L'eix y va de spinebase a spineshoulder. torso_y(j,:) = spineshoulder(j,:) - spinebase(j,:); sr_sl(j,:) = shoulderleft(j,:) - shoulderright(j,:); %CORRECCIÓ PELVIS % L'eix x és el vector normal al pla definit per el vector shoulderrightshoulderleft i l'eix y del torso. torso_x(j,:) = cross(sr_sl(j,:), torso_y(j,:)); % L'eix z és perpendicular. Equival a la projecció del vector shoulderright-shoulderleft sobre el pla horitzontal del torso. torso_z(j,:) = cross(torso_x(j,:), torso_y(j,:)); % Correcció de la pelvis: Restem l'angle theta_x del torso al voltant de l'eix x de la pelvis. ground_y = [0 1 0]; correction = asin(torso_z(j,2) / (norm(torso_z(j,:)))); px_py(j,:) = cross(pelvis_x(j,:), pelvis_y(j,:)); px_pz(j,:) = cross(pelvis_x(j,:), pelvis_z(j,:)); % Calculem ara les matrius de rotació corresponents de la pelvis respecte el terra for i = 1:3 pelvis_y(j,i) = cos(correction)*pelvis_y(j,i) + sin(correction)*(px_py(j,i)); pelvis_z(j,i) = cos(correction)*pelvis_z(j,i) + sin(correction)*(px_pz(j,i)); end for i =1:3 R_OP(i,1) = pelvis_x(j,i); R_OP(i,2) = pelvis_y(j,i); R_OP(i,3) = pelvis_z(j,i); end R_PO = transpose(R_OP); %FEMUR %L'eix y va de kneeright a hipright femur_y(j,:) = r_hip(j,:) - r_knee(j,:); % Projecció del punt kneeright sobre el pla paralel al pla sagital de la pelvis(normal a pelvis_z) que passa per hipleft. Constant D del pla $ (Ax+By+Cz+D=0), on(A,B,C)=pelvis_z Comparació de diferents sistemes ‘low cost’ de captura de moviment 87 % Es calcula la projecció del punt P sobre el pla $ com a la intersecció entre $ i la recta r que passa per P i és perpendicular a $. % r: (x,y,z)=(Px,Py,Pz)+lambda*(pelvis_z) Dhr = -dot(pelvis_z(j,:), l_hip(j,:)); % Factor de multiplicació lambdahr = -((Dhr + dot(pelvis_z(j,:), r_knee(j,:))) / ((norm(pelvis_z(j,:)))*(norm(pelvis_z(j,:))))); % Intersecció % Punt simètric kneerp(j,:) = r_knee(j,:) + lambdahr*pelvis_z(j,:); kneers(j,:) = 2* kneerp(j,:) - r_knee(j,:); ks_hr(j,:) = kneers(j,:) - r_hip(j,:); kr_hr(j,:) = r_knee(j,:) - r_hip(j,:); % L'eix x és el vector normal format pel simètric, kneeright i hipright % Condicions pel canvi de signe del producte vectorial passats els 90º d'addució, i per evitar errors quan els 3 punts estan alineats angle entre femurright_y i pelvis_z. Defineix un con thetaz_femur(j,1) = acosd((dot(femur_y(j,:), pelvis_z(j,:))) / (norm(femur_y(j,:))*norm(pelvis_z(j,:)))); % angle entre femurright_y i el plà transversal de la pelvis. thetay_femur(j,1) = asind((dot(femur_y(j,:), pelvis_y(j,:))) / (norm(femur_y(j,:))*norm(pelvis_y(j,:)))); % angle entre femurright_y i el plà coronal de la pelvis. thetax_femur(j,1) = asind((dot(femur_y(j,:), pelvis_x(j,:))) / (norm(femur_y(j,:))*norm(pelvis_x(j,:)))); if (thetaz_femur(j) < (178)) %fora del con if (thetay_femur(j) > 0) % per sota del pla transversal femur_x(j,:) = cross(kr_hr(j,:), ks_hr(j,:)); else % per damunt del pla transversal if (abs(thetax_femur(j,1)) > 7.5) % flexió femur_x(j,:) = cross(kr_hr(j,:), ks_hr(j,:)); else % abducció femur_x(j,:) = cross(ks_hr(j,:), kr_hr(j,:)); end end else % Dins del con: L'eix x serà igual que pelvis_x femur_x(j,:) = pelvis_x(j,:); end % L'eix z és perpendicular femur_z(j,:) = cross(femur_x(j,:), femur_y(j,:)); % Normalitzem els vectors. femur_x(j,:) = femur_x(j,:) / norm(femur_x(j,:)); femur_y(j,:) = femur_y(j,:) / norm(femur_y(j,:)); femur_z(j,:) = femur_z(j,:) / norm(femur_z(j,:)); % TIBIA % L'eix Y va de r_ankle a r_knee tibia_y(j,:) = r_knee(j,:) - r_ankle(j,:); Memòria 88 % S'obté la rotació del fèmur amb l'orientació de la tíbia: angle entre el pla sagital del fèmur (perpendicualar a femur_z) i el vector tibia_y. femurrotr(j,:) = asin(dot(tibia_y(j,:), femur_z(j,:)) / (norm(tibia_y(j,:))*norm(femur_z(j,:)))); hry_hrx(j,:) = cross(femur_y(j,:), femur_x(j,:)); hry_hrz(j,:) = cross(femur_y(j,:), femur_z(j,:)); for i = 1:3 femur_x(j,i) = cos(femurrotr(j,:))*femur_x(j,i) - sin(femurrotr(j,:))*(hry_hrx(j,i)); femur_z(j,i) = cos(femurrotr(j,:))*femur_z(j,i) - sin(femurrotr(j,:))*(hry_hrz(j,i)); end % S'obté la matriu de rotació del fèmur respecte el terra for i = 1:3 R_OHr(i,1) = femur_x(j,i); R_OHr(i,2) = femur_y(j,i); R_OHr(i,3) = femur_z(j,i); end % Angles d'Euler de pelvis respecte al terra pelvis(j,2) = asind(R_OP(3,2)); pelvis(j,3) = atan2d(-R_OP(3,1) / cosd(pelvis(j,2)), R_OP(3,3) / cosd(pelvis(j,2))); pelvis(j,1) = atan2d(-R_OP(1,2) / cosd(pelvis(j,2)), R_OP(2,2) / cosd(pelvis(j,2))); % Matriu de rotació de la cadera respecte la pelvis R_PHr = R_PO * R_OHr; % Angles d'Euler de cadera respecte al terra hip(j,2) = asind(R_PHr(3,2)); hip(j,3) = atan2d(-R_PHr(3,1) / cosd(hip(j,2)), R_PHr(3,3) / cosd(hip(j,2))); hip(j,1) = atan2d(-R_PHr(1,2) / cosd(hip(j,2)), R_PHr(2,2) / cosd(hip(j,2))); % Angle del genoll kneer_angle(j,1) = -acosd(dot(tibia_y(j,:), femur_y(j,:)) / (norm(femur_y(j,:))*norm(tibia_y(j,:)))); % Angle del turmell foot_y(j,:) = r_ankle(j,:) - r_foot(j,:); ankler_angle(j,1) = acosd(dot(tibia_y(j,:), foot_y(j,:)) / (norm(tibia_y(j,:))*norm(foot_y(j,:))))-90; % Exportació de les dades data1(j,1) = pelvis(j,1); %pelvis_tilt data2(j,1) = -pelvis(j,2); %pelvis_list data3(j,1) = -pelvis(j,3); %pelvis_rotation data4(j,1) = 0; %pelvis_tx Comparació de diferents sistemes ‘low cost’ de captura de moviment 89 data5(j,1) = 0; %pelvis_ty data6(j,1) = 0; %pelvis_tz data7(j,1) = hip(j,1); %hip_flexion_r data8(j,1) = hip(j,2); %hip_adduction_r data9(j,1) = hip(j,3); %hip_rotation_r data10(j,1) = kneer_angle(j,1); %knee_angle_r data11(j,1) = ankler_angle(j,1); %ankle_angle_r data12(j,1) = 0; %subtalar_angle_r data13(j,1) = 0; %mtp_angle_r data14(j,1) = 0; %hip_flexion_l data15(j,1) = 0; %hip_adduction_l data16(j,1) = 0; %hip_rotation_l data17(j,1) = 0; %knee_angle_l data18(j,1) = 0; %ankle_angle_l data19(j,1) = 0; %subtalar_angle_l data20(j,1) = 0; %mtp_angle_l data21(j,1) = 0; %lumbar_extension data22(j,1) = 0; %lumbar_bending data23(j,1) = 0; %lumbar_rotation end k6.data = [time' data1 data2 data3 data4 data5 data6 data7 data8 data9 data10 data11 data12 data13 data14 data15 data16 data17 data18 data19 data20 data21 data22 data23]; k6.labels = {'time', 'pelvis_tilt', 'pelvis_list', 'pelvis_rotation','pelvis_tx','pelvis_ty','pelvis_tz','hip_flexion_r','hi p_adduction_r','hip_rotation_r',... 'knee_angle_r','ankle_angle_r','subtalar_angle_r','mtp_angle_r','hip_flex ion_l','hip_adduction_l','hip_rotation_l', 'knee_angle_l',... 'ankle_angle_l','subtalar_angle_l','mtp_angle_l','lumbar_extension','lumb ar_bending','lumbar_rotation'}; fname = 'Kinect - Test 6 - Squat.mot'; % Exportació al fitxer .mot per visualitzar les dades write_motionFile(k6, fname) % Exportació al fitxer .mat per comparar les dades save('Kinect - Test 6 - Squat','k6') Comparació de diferents sistemes ‘low cost’ de captura de moviment 91