3D biomechanische bewegingsanalyse van de schouder Thomas Thys
Promotoren: prof. dr. ir. Benedict Verhegghe, prof. dr. Katharina D'Herde Begeleiders: Germano Gomes, dr. Matthieu De Beule Scriptie ingediend tot het behalen van de academische graad van Burgerlijk werktuigkundig-elektrotechnisch ingenieur
Vakgroep Mechanische constructie en productie Voorzitter: prof. dr. ir. Daniël De Zutter Vakgroep Anatomie, embryologie, histologie en medische fysica Voorzitter: prof. dr. Hubert Thierens Faculteit Ingenieurswetenschappen Academiejaar 2007-2008
3D biomechanische bewegingsanalyse van de schouder Thomas Thys
Promotoren: prof. dr. ir. Benedict Verhegghe, prof. dr. Katharina D'Herde Begeleiders: Germano Gomes, dr. Matthieu De Beule Scriptie ingediend tot het behalen van de academische graad van Burgerlijk werktuigkundig-elektrotechnisch ingenieur
Vakgroep Mechanische constructie en productie Voorzitter: prof. dr. ir. Daniël De Zutter Vakgroep Anatomie, embryologie, histologie en medische fysica Voorzitter: prof. dr. Hubert Thierens Faculteit Ingenieurswetenschappen Academiejaar 2007-2008
Voorwoord
Artsen en hun patiënten willen zeer graag op voorhand weten welke invloed een chirurgische ingreep zal hebben op het verdere leven van de patiënt. Veel van deze informatie kan gehaald worden uit vroegere, gelijkaardige ingrepen, maar het zou handig zijn als er ook manieren zijn om deze informatie te verkrijgen zonder dat men de ingrepen moet doen. Hiervoor is de samenwerking tussen artsen en ingenieurs ideaal, door samen te werken kunnen modellen opgesteld worden aan de hand waarvan de gevolgen van ingrepen bekeken kunnen worden. In dit werk zal een eerste stap gezet worden naar de ontwikkeling van een dynamisch model van de schouder. Een dynamisch model is een model dat op precies dezelfde manier reageert als het echte lichaamsdeel. Het heeft dezelfde dimensies, dezelfde bewegingen kunnen gemaakt worden over hetzelfde bereik en dezelfde krachten werken erop in als op het echte lichaamsdeel. Voordat de dynamica van een model uitgewerkt kan worden moet men eerst een goede kennis hebben over de kinematica van het model. De kinematica bekijkt de enkel de bewegingen van een lichaam, zonder rekening te houden met krachten. We zullen uit gaan van proeven, gedaan door een groot aantal personen. Vanuit de gegevens die uit deze proeven bekomen werden zal een procedure opgesteld worden om tot een kinematische databank te komen. Zo’n databank bevat alle informatie over de bewegingen van de schouder. Dit werk is voortgevloeid uit mijn interesse voor zowel de ingenieurswetenschappen als de medische wetenschap. De mensen uit beide disciplines hebben vaak een verschillende kijk op hetzelfde probleem en hun samenwerking kan enkel leiden tot betere oplossingen. Ikzelf heb, met dit werk, een veel beter begrip gekregen van een bepaald aspect van de werking van het menselijk lichaam en heb een inkijk gekregen in de vele mogelijkheden die er zijn als ingenieurs en artsen samenwerken. Ik zou graag de mensen bedanken die mij geholpen hebben bij de realisatie van dit werk. In de eerste plaats mijn begeleiders Germano en Matthieu voor de tijd die ze gestoken hebben in mijn begeleiding en het geduld dat ze met mij gehad hebben. Tevens wil ik mijn promotoren bedanken voor het vertrouwen en de geboden kans. Verder wil ik ook Pieter Samaey, Peter Mahieu, Pieter-Jan De Roo en Nicolas Dhooghe bedanken. Zij zijn de geneeskundestudenten die, in het kader van hun scriptie, de gegevens verzameld hebben waarop de uitwerking gedaan werd die in dit werk beschreven wordt. Als laatste wil ik mijn familie en vrienden bedanken die mij steeds blijven steunen zijn en nooit hun geduld verloren.
Toelating tot bruikleen
De auteur geeft de toelating deze scriptie voor consultatie beschikbaar te stellen en delen van de scriptie te kopiëren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze scriptie.
Thomas Thys, augustus 2008
Overzicht
3D biomechanische bewegingsanalyse van de schouder door Thomas Thys Scriptie ingediend tot het behalen van de academische graad van BURGERLIJK WERKTUIGKUNDIG - ELEKTROTECHNISCH INGENIEUR Academiejaar 2007 – 2008 Promotoren: Prof. Dr. Ir. Benedict Verhegghe, Prof. Dr. Katharina D’Herde Begeleiders: Germano Gomes, Dr. Matthieu De Beule Vakgroep Mechanische constructie en productie Voorzitter: Prof. Dr. Ir. Daniël De Zutter Vakgroep Anatomie, embryologie, histologie en medische fysica Voorzitter: Prof. Dr. Hubert Thierens FACULTEIT INGENIEURSWETENSCHAPPEN UNIVERSITEIT GENT
Samenvatting In dit werk zal een procedure opgesteld worden voor het opbouwen van een kinematische databank voor de schouder. Hiervoor zal uitgegaan worden van proeven gedaan door een groot aantal personen. Deze proeven omvatten individuele bewegingen van de verschillende gewrichten in de schouder en arm en bewegingen die representatief zijn voor het dagelijks leven. Voor het opstellen van de procedure wordt de standaard gevolg die opgesteld werd door de International Shoulder Group (ISG). De procedure zal getest worden door de analyse te doen van één proefpersoon en de resultaten van deze analyse zullen gerapporteerd worden.
Trefwoorden Schouder, bewegingsanalyse, kinematica, standaard ISG
3D Biomechanical Movement Analysis of the Shoulder Thomas Thys Supervisor(s): Benedict Verhegghe, Katharina D’Herde, Germano Gomes, Matthieu De Beule Abstract – In this article a procedure will be described to build up a kinematic database for the shoulder. We will start from tests that have been done by a large number of persons. The tests are composed of individual movements of the different joints of the shoulder and arm and of movements that are considered representative for the daily life. To build up the procedure, we will follow the standard that is composed by the International Shoulder Group (ISG). The procedure will be tested by doing a complete analysis of the tests done by one person and the results of this analysis will be presented. Key words – shoulder, movement analysis, kinematics, ISG standard I. INTRODUCTION The shoulder is able to do very complicated movements. By this movements, humans have the possibility to complete very sophisticated tasks. The complex movements of the shoulder are all composed of individual rotations in the different joints of the shoulder and arm. Patient, who have to undergo orthopedic surgery to the shoulder would like to know how much of the abilities of the shoulder stay after the surgery. To help surgeons plan their intervention, a dynamic model of the shoulder is been built. A first step to this dynamic model is to compose a kinematic database. This is a database that has all the different movements of the shoulder in it. A procedure to do a kinematic analysis will be built in this work. This will be done with respect to the standard that was issued by the ISG (WU, ET AL., 2005). II. METHODS A. Subjects More than 30 healthy male subject without any shoulder complaints were included in this study, along with more than 10 persons with an impaired shoulder. All these persons were asked to do the complete set of tests. B. Measurements Reflective markers were attached to the bony landmarks proposed in the standard of the ISB (WU, ET AL., 2005) (Table 1). The movement of these markers was recorded by 8 infrared cameras. The 2D images recorded by the different cameras were recomposed to a 3D image of the markers by Qualisys Track Manager. The markers that are marked by (*) in table 1 are these that are only attached in the static measurement, they were removemed during the real tests because they were on landmarks where the skin moves to much over the bone and thus the position of the marker is unsure. These position of these anatomical points in the dynamical analysis is later detemined analytically. The glenohumeral rotation centrer is not marked either, because it is inside the bone, it too will be determined analytically. Varous methods to do this were tested during this work.
Clavicula Sternoclavicular joint (SC) (*) Acromioclavicular joint (AC) Scapula Processus Coracoideus (PC) (*) Acromioclavicular joint (AC) Angulus Acromialis (AA) (*) Trigonum Spinae (TS) (*) Angulus Inferior (AI) (*) Humerus Epicondylus Medialis (EM) (*) Epicondylus Lateralis (EL) (*) Glenohumeral joint (GH) Insertion of Deltoid on proximal humerus (De) (**) Insertion of Brachioradialis on distal humerus (BO) (**) Belly of Biceps, midway the line connecting De and BO (BB) (**) Forearm Processus Styloideus Ulnaris (US) Processus Styloidus Radialis (RS) Hand Distal point of the 3rd metacarpal (CM3) The markers that are marked with (**) are not described in the standard by the ISG. These markers that will stay on the body during the dynamic analysis will be used to determine a transform that can be used to bring the markers, that are not known in the dynamic analysis, from the static analysis. C. Procedure A static image was taken for every subject. In this static image the subject held the arm straight next to the body, de elbow was in 90° flexion and the hand was in neutral position. This static image was used as the base from where the rotations of the joints will be calculated. Twelve Range of Motion (ROM) tasks and seven Activities of Daily Living (ADL) tasks were measured (Table 2). ROM tasks are individual movements of the different joints, ADL tasks are movements that are representative for the movements done by the shoulder in the daily life. Since dynamic measurement of the scapula is very difficult, measurements were performed in a quasi-static mode. Each task had to be done 10 times and different movements were recorded in sequences. Table 2. Measured ROM tasks and ADL tasks
ROM Wrist Elbow Humerus – scapula
Table 1. Bony landmarks that are used in this study
Thorax Processus Xiphoideus (PX) Incisura Jugularis (IJ) Processus Spinosus 7th cervical vertebrae (C7) Processus Spinosus 8th thoracal vertebrae (T8)
Flexion – extension Radial – ulnar deviation Flexion – extension Pronation – supination Anteflexion – retroflexion Abduction – adduction in the scapular plane Abduction – adduction in the frontal plane Endo – exorotation, humerus in 0° abduction Endo – exorotation, humerus in 90° abduction
Scapula – clavicula ADL Hygiene
Eating
Every day object
Elevation – depression Protraction – retraction Reach to opposite side of neck Combing hair Perineal care Eating with a spoon out of a bowl Poor a bottle into a glass and drink Pick up a mobile phone Take a book off a shelve and put it down
For the ROM tasks, the subjects were asked to reach the maximal joint angle. This means that for a elevetion task the subject was asked to elevate the humerus as high as possible. The subject had some freedom in carrying out the ADL tasks, this to improve the spontaneity of the task. Some guidelines were given so that the tasks would be carried out uniformly. D. Preprocessing of the data The recorded data of the tests had two major problems. The first problem were holes in the data. Despite of the high number of cameras, some of the markers were invisible at some moments. If the marker wasn’t recorded by at least 3 cameras, a 3D image couldn’t be composed and there was a loss of data resulting to a hole in the data. This problem could be solved in the program Qualisys. There was the option of manually filling the holes with splines. By dragging the edges of the hole, a spline could be created that matched the data. A second problem was static, a problem inherent to all analog measurements. This problem was solved by applying a two-pass, lowpass Butterworth filter of 3rd order to the data with a cut-off frequence of 10 Hz. This way all movements with a frequency higher than 10 Hz were removed from the data. Real movements always have a frequency lower than 10 Hz, so these wouldn’t be bothered. III. THE JOINT COORDINATE SYSTEMS (JCS) The Joint Coordinate Systems are local coordinate systems for every body segment of the shoulder and arm. They are described in the ISG standard. The movement of the joints will be described as rotations along the different axes of the JCS. The JCS of the different segments are defined starting from the different points that were measured in the test. All the JCS are right handed orthonormal coordinate systems. A. Definitions Thorax The origin is in IJ. Y t is the vector from the midpoint between PX and T8 to the midpoint between IJ and C7 (approx. vertical in the initial position). X t is perpendicular to the plane fitted to the points IJ, C7 and (PX + T8) / 2, pointing to the right. Z t is perpendicular to X t and Yt. Clavicle The origin is in SC. X c is the vector connecting AC and SC, pointing to AC. Z c is perpendicular to X c and Y t . Y c is perpendicular to Z c and X c . Scapula The origin is AA. X s is the vector pointing from TS to AA. Z s is perpendicular to AI – AA and X s pointing backward (i.e. perpendicular to the scapular plane). Y s is perpendicular to Zs and X s . Humerus There are two options for the JCS of the humerus. The second one was motivated by the high error sensitivity of the direction connecting EM and EL. First option: the origin is in GH. Y h1 is the line connecting GH and the midpoint between EL and EM, pointing to GH. X h1 is the line perpendicular to the plane formed by EL, EM and GH, pointing
forward. Z h1 is the common line perpendicular to Y h1 and X h1 , pointing to the right. Second option: the origin is in GH. Y h2 is the line connecting GH and the midpoint of EL and EM, pointing to GH. Z h2 is the line perpendicular to the plane formed by Y h2 and Y f (see forearm), pointing to the right. X h2 is the common line perpendicular to Z h2 and Y h2 , pointing forward. The point GH could not be measured, it has to be determined analytically. This is done in III.B. Forearm The origin is in US. Y f is the line connecting US and the midpoint of EL and EM, pointing proximally. X f is the line perpendicular to the plane through US, RS and the midpoint between EL and EM, pointing forward. Z f is the common line perpendicular to X f and Y f , pointing to the right. Hand The origin is in CM3. Y ha is the vector pointing from CM3 to the midpoint between US and RS. X ha is perpendicular to the plane formed by Y ha and RS – US, pointing medial. Z ha is perpendicular to X ha and Y ha and points up. B. Glenohumeral rotation centre In earlier works, GH was analytically determined with regression equations that started from the points of the scapula (MESKERS, VERMEULEN, DE GROOT, VAN DER HELM & ROZING, 1998). We have tested this method and concluded that the position of GH was not satisfactionary. A second method that was used to calculate the position of GH was to search the centre of rotation of points that have a fixed position relative to the humerus. The points BO, BB and De have a fixed position relative to the humerus. The subjects were asked to do rotations with the upper arm with small amplitude. This way the points described a sphere, with GH the centre of this sphere. This method was also abandoned because the results were poor. The method we finally ended up using was that that used finite elements images. Finite element images of the bones of the shoulder and arm were mad available by the VAKHUM project (UNIVERSITÉ LIBRE DE BRUXELLES, 2003). In this images the humerus articulated perfectly with the scapula, the position of GH relative to the scapula was almost perfect. We could point out the anatomical landmarks on the finite elements image of the scapula, and than compose a transformation between these points and the points from the tests. If we apply the same transform to GH from the finite elements image of the humerus, GH in the tests would have the same position relative to the scapula as that in the finite elements images. C. Transforming points from the static to the dynamic We want to know the JCS for the dynamic tests to, because the rotations we want to calculate are these between the axes in the static image and the axes in the dynamic one. To define the JCS we need points that haven’t been measured in the dynamic tests. We need to determine these points analytically. We will do this by putting the points in the static test in coordinates relative to a coordinate system fixed to a certain segment. Because the coordinate system is fixed, it will move along with the segment when it moves and so we know the coordinate of the moved point. The points we don’t know are SC for the clavicula, AA, AI, TS and PC for the scapula and EM and EL for the humerus. For SC, we assume that it’s position is fixed relative to the coordinate system of the thorax. This is a good assumption because the movements of SC relative to the thorax are minimal. For the points of the scapula, we assume that the scapula is fixed to the clavicula. In reality this is not right, but because, in this work, we are not interested in scapular movements, it is a good assumption. We then put the points of the scapula relative to the coordinate system of the clavicula and this way they can be transformed to the dynamic images. For EM and EL there was no coordinate system we could refer them to that was fixed to the humerus. The JCS of the humerus, which is fixed to it, is defined using EM and EL, so it couldn’t be done without knowing EM and EL. Therefore a transformation was formed between the points of the humerus (GH, BO, BB and De) in the static and
dynamic images using the MATLAB function procrustes. If we apply this transform to EM and EL, they would end up in the right place. After defining all hese points in the dynamic tests, we were able to calculate all the JCS for every instance of the dynamic tests. We could then calculate the transformation matrices between the static and dynamic JCS for every segment. IV. THE ROTATION ANGLES We now know the transformation at every instance between the static and dynamic JCS for every segment. To report the movement of the joints with respect to the ISG standard, we need to decompose these transformations into sequences of Euler rotations. Many different sequences of Euler rotations are possible. For every segment an order of rotations along the different axes was defined so that the angles remained as close as possible to the clinical definitions of joint and segment motions (KARDUNA, MCCLURE & MICHENER, 2000). The order of rotations and what the different rotations represent for the different segments of the shoulder and arm are described in the ISG standard. Thorax relative to the global coordinate system (Z-X-Y order) e1: the-axis is the axis coincident with the Z g -axis of the global coordinate system. Rotation (α GT ): flexion (-) or extension (+). e2: the axis fixed to the thorax and coincident with the Y t -axis of the thorax coordinate system. Rotation (γ GT ): axial rotation to the left (+) or to the right (-). e3: the common axis perpendicular to e1 and e3, i.e. the rotated X t axis of the thorax. Rotation (β GT ): lateral flexion rotation of the thorax, to the right (+) or to the left (-) SC joint (clavicle relative to thorax, Y-X-Z order) e1: the axis fixed to the thorax and coincident with the Y t -axis of the thorax coordinate system. Rotation (γ SC ): retraction (-) and protraction (+). e3: the axis fixed to the clavicle and coincident with the Z c -axis of the clavicle coordinate system. Rotation (α SC ): axial rotation of the clavicle, rotation over the top backwards (+) or forwards (-). e2: the common axis perpendicular to e1 and e3, the rotated X c -axis. Rotation (β SC ): elevation (-) and depression (+). AC joint (scapula relative to clavicle, Y-X-Z order) Because we supposed that the scapula is fixed to the clavicle, there won’t be any rotations in this joint. It is not useful to define the different angles of rotation in the AC joint. Humerus relative to thorax (Y-X-Y order) Here we couldn’t do take the classic approach. If the upper arm is 90° abducted, the shoulder and the upper arm are aligned. The e1-axis and e3-axis are aligned then and it will not be possible to distinguish the rotations along the different axes from each other. This is called Gimbal Lock. Instead, a Euler decomposition is used to find the corresponding angles. e1: the axis fixed to the thorax and coincident with the Y t -axis of the thorax coordinate system. Rotation (γ h ): plane of elevation, 0° is abduction, 90° is forward flexion. e3: axial rotation around the Y h -axis. Rotation (γ h ) 2 : axial rotation, endorotation (+) and exorotation (-). e2: the axis fixed to the humerus and coincident with the X h -axis of the humerus coordinate system. Rotation (β h ): elevation (-) Elbow joint (forearm relative to humerus, Z-X-Y order) e1: the axis fixed to the humerus and coincident with the Z h -axis of the humerus coordinate system Rotation (α HF ): flexion (+) and extension (-) e3: the axis fixed to the forearm and coincident with the Y t -axis of the forearm coordinate system. Rotation (γ HF ): pronation (+) and supination (-) The third rotation is not possible in the elbow (for most people), so this angle will not be looked at.
Wrist joint (hand relative to forearm, Y-X-Z order) e1: the axis fixed to the forearm and coincident with the Z f -axis of the forearm coordinate system. Rotation (α FHa ): flexion (+) and extension (-). e3: the axis fixed to the hand coincident with the Y ha -axis of the hand coordinate system. Rotation (γ FHa ): pronation(+) and supination (-) These movements are not possible between the hand and forearm, this angle will not be interpreted. e2: the common axis perpendicular to e1 and e3. Rotation (β FHa ): ulnar deviation (+) or radial deviation (-). The procedures to determine all these angles are made available by ISG. They wrote functions in MATLAB to calculate the angles starting from the transformation matrix and considering the different rotation orders (CHADWICK, 2005). V. RESULTS We now know the entire procedure to find the different angles of rotation of every joint. We will now test the procedure by doing a complete analysis of the results of the tests from one subject. In this paragraph, an overview of these results will be given. A. ROM movements The different angles of the movements could be found by analyzing the plots of the angle variation of the ROM movements. If an angle follows a sinusoidal curve during a particular movement, it is the angle that is connected with the movement that is done then. The other curves should be a flat line, because the movement should be around one axis. In figure 1 we see the plot of the movement of the wrist, the first five cycles are those of the flexion and extension, the last five are those of the supination and pronation. We can see a distinct sinusoidal movement of the red curve in the first part and of the green curve in the second part.
Figure 1: Results of the movements of the wrist. So the red curve is that of the flexion and extension and the green curve is that of the supination and pronation We can clearly see that the other curves follow a sinusoidal path too, this shouldn’t be the case. It indicates that the movement is not around one axis. The cause of this is the bad quality of the data we used. The axes we calculated are not aligned with the anatomical axes. We can see this happening for all angles, non of the axes of the JCS are aligned with the anatomical axes. In table 3 an overview is given of all the maximal angles that are found out of the ROM tests, they are compared with the values found in literature (KAPANDJI, 1980). We can see that all the angles differ. Because the movements aren’t made around the anatomical axes, but around an axis that has an angle relative to the anatomical axes, the real movement is composed of a sequence of angles around different axis. So the angle around the one axis is always smaller than the one around the anatomical axis. We don’t have results for the angles of plane of elevation or endorotation and exorotation. This is because the plots showed no real patterns and we couldn’t draw any conclusions of them.
Table 3. Maximum angles from the tests and literature
Movement Wrist Flexion Extension Ulnar deviation Radial deviation Forearm Pronation Supination Flexion (relative) Extension (relative) Humerus Elevation Plane of elevation Exorotation Enodrotation Clavicle Elevation Depression Protraction Retraction
This study
Kapandji
48,19° 47,9° 25,59° 15,23°
85° 85° 45° 15°
54,15° 56,41° 80,3° 51,11°
85° 90° 70° 90°
67° -
180 90 80 95
33,87° 5,18° 16,01° 24,3°
-
B. ADL movements The analysis of these movements is based on the results of the analysis of the ROM movements. Because there are no solid conclusions drawn from the latter analysis, it is impossible to draw good quantitative conclusions for the ADL movements. The maximum angles of each segment and every movement is found in table 4, but the values are not representative. We can only compare the results found in the ADL movements to those found in the ROM analysis, so we can look at the values and compare them to the values found in the ROM analysis. We can’t do a qualitative analysis either because an angle of e.g. 70° for one movement in one test is not the same as an angle of 70° of the same movement in another test.
VI. CONCLUSIONS The original data were not good enough to do a good quantitative analysis. Because there was high uncertainty about the correct position of the markers, the definitions of the JCS are not certain either. This leads to rotations that don’t occur around one single axis when they are supposed too. This way, the angles that we find don’t match the values found in literature. This way we weren’t able to validate the procedure by the analysis of the data. We can’t be certain that the procedure we composed does what it has to do. We followed the ISG standard and we used the MATLAB-code they provided, so we have high hopes that the procedure is solid. The only way to test this is to do a complete analysis of data that have been confirmed. It could be that the conclusion that the data is insufficient is premature. We should analyse the complete set of data and perform a statistical analysis to be certain that the data is malicious and not the procedure. REFERENCES Chadwick, E. (2005, maart 8). Revision 3: kinematics. Retrieved november 17, 2007, from http://isg.case.edu/repository/kinematics/ Dhooghe, N., & Samaey, P. (2008). Computer-geleide preoperatieve planning voorschouderarthroplastiek. De rol van de scapulaire rotatie in de biomechanica van het schoudergewricht. Scriptie voorgedragen in de 2de Proef in het kader van de opleiding tot arts . UGent.
Kapandji, I. A. (1980). Bewegingsleer aan de hand van tekeningen van de werking van de menselijke gewrichten -- Deel I: De bovenste extremiteit. Houten: Bohn Stafleu Van Loghum. Karduna, A. R., McClure, P. W., & Michener, L. A. (2000). Scapular kinematics: effects of altering the Euler angle sequence of rotations. Journal of Biomechanics (33), 1063-1068. Meskers, C., Vermeulen, H., de Groot, J., Van der Helm, F., & Rozing, P. (1998). 3D shoulder position measurements using a sixdegree-of-freedom electromagnetic tracking device. Clin. Biomech. (13), 280-292. Université Libre de Bruxelles. (2003, april 25). Virtual Animation of the Kinematics of the Human for Industrial, Educational and Research Purposes. Retrieved mei 14, 2008, from http://www.ulb.ac.be/project/vakhum/index.html Wu, G., van der Helm, F. C., Veeger, H., Makhsous, M., Van Roy, P., Anglin, C., et al. (2005). ISB recommandation on definitions of joint coördinate systems of various joints for the reporting of human joint motion -- Part II: shoulder, elbow, wrist and hand. Journal of Biomechanics (38), 981-992.
Table 4.Maximal angles for different movements and tasks
Inhoudsopgave
HOOFDSTUK 1: Inleiding .................................................................................................................. 1 1. Doel van het onderzoek .................................................................................................................1 2. Objectieven van het onderzoek .....................................................................................................2 3. Overzicht van dit werk ...................................................................................................................3
HOOFDSTUK 2: De anatomie en de bewegingen van de bovenste extremiteiten ............................. 4 1. Inleiding..........................................................................................................................................4 2. Anatomische terminologie.............................................................................................................5 2.1 Aanduiding van posities ..................................................................................................5 2.2 Vlakken in de anatomie ..................................................................................................6 3. De beenderen van de schoudergordel en de arm .........................................................................7 3.1 De thorax ........................................................................................................................7 3.2 De clavicula .....................................................................................................................9 3.3 De scapula .......................................................................................................................9 3.4 De humerus ................................................................................................................. 10 3.5 De voorarm .................................................................................................................. 10 4. De bewegingen van de bovenste extremiteit ............................................................................. 12 4.1 De thorax ..................................................................................................................... 12 4.2 De schouder ................................................................................................................. 13 4.2.1 Anteflexie- en retroflexiebewegingen ............................................................ 14 4.2.2 Adductie .......................................................................................................... 15 4.2.3 Abductie .......................................................................................................... 15 4.2.4 Rotatie van de arm.......................................................................................... 16 4.2.5 Bewegingen van de schoudergordel in het horizontale vlak .......................... 16 4.3 De elleboog .................................................................................................................. 17 4.3.1 Flexie - extensie .............................................................................................. 17 4.3.2 Pronatie - supinatie ......................................................................................... 17 4.4 De pols ......................................................................................................................... 18 HOOFDSTUK 3: Opname en voorverwerking van de gegevens ....................................................... 20 1. De opname van de data .............................................................................................................. 20 1.1 De proefpersonen ........................................................................................................ 20 1.2 De opnamehardware en -software ............................................................................. 20 1.3 De markers ................................................................................................................... 22 1.4 De bewegingen ............................................................................................................ 24 1.4.1 De statische meting ........................................................................................ 24 1.4.2 De Range of Motion bewegingen ................................................................... 25 1.4.3 De activiteiten uit het dagelijks leven ............................................................. 26 2. Voorverwerking van de data....................................................................................................... 27 2.1 Gaten in de gegevens .................................................................................................. 27 2.2 Ruis .............................................................................................................................. 28 2.3 De datastructuur .......................................................................................................... 30
HOOFDSTUK 4: Analyse van de statische gegevens ........................................................................ 32 1. Inleiding....................................................................................................................................... 32 2. Invoeren van de Joint Coordinate Systems (JCS) ....................................................................... 32 2.1 Coördinaatsysteem voor de thorax – X t Y t Z t ................................................................ 33 2.2 Coördinaatsysteem voor de clavicula – X c Y c Z c ............................................................ 33 2.3 Coördinaatsysteem voor de scapula – X s Y s Z s .............................................................. 34 2.4 Coördinaatsysteem voor de humerus ......................................................................... 35 2.4.1 Eerste optie – X h1 Y h1 Z h1 .................................................................................. 35 2.4.2 Tweede optie – X h2 Y h2 Z h2 ............................................................................... 35 2.4.3 Technisch coördinaatsysteem – X ht Y ht Z ht ....................................................... 35 2.5 Coördinaatsysteem voor de voorarm – X f Y f Z f ............................................................ 36 2.6 Coördinaatsysteem voor de hand – X ha Y ha Z ha ............................................................. 37 3. Visualisatie .................................................................................................................................. 38 3.1 Invoeren van namen en assenkruisen ......................................................................... 38 3.2 Gebruiken van vlakken voor een betere visualisatie ................................................... 39 3.3 Gebruik van een realistische voorstelling van de beenderen ..................................... 40 3.4 Bepalen van GH in het stl-bestand van de humerus ................................................... 43 4. Bepalen van het glenohumeraal rotatiecentrum ....................................................................... 44 4.1 Bepaling d.m.v. regressie relatief t.o.v. de scapula ..................................................... 44 4.2 Bepaling aan de hand van rotaties van de bovenarm ................................................. 45 4.3 Bepaling met behulp van de stl-bestanden ................................................................. 46 HOOFDSTUK 5: Analyse van de dynamische gegevens ................................................................... 48 1. Aanvullen van ontbrekende gegevens ........................................................................................ 48 1.1 Overbrengen van gegevens van de statische naar de dynamische beelden ............... 48 1.2 De coördinatentransformatie ...................................................................................... 49 2. Euler en Cardan hoeken .............................................................................................................. 50 2.1 Theoretische beschouwing .......................................................................................... 51 2.2 Toepassing op de Joint Coordinate Systems ............................................................... 53 2.2.1 Beweging van de thorax relatief t.o.v. het globaal coördinaatsysteem ......... 54 2.2.2 Beweging van het sternoclaviculair gewricht ................................................. 54 2.2.3 Beweging van het acromioclaviculair gewricht .............................................. 55 2.2.4 Beweging van de humerus relatief t.o.v. de thorax........................................ 55 2.2.5 Beweging van het ellebooggewricht ............................................................... 56 2.2.6 Beweging van de pols ..................................................................................... 56 3. Voorbereidingen voor de rotaties bepaald kunnen worden ...................................................... 57 HOOFDSTUK 6: Resultaten en conclusies ....................................................................................... 59 1. De ROM bewegingen .................................................................................................................. 59 1.1 Bewegingen van de pols .............................................................................................. 60 1.2 Bewegingen van de elleboog ....................................................................................... 61 1.3 Bewegingen van de bovenarm .................................................................................... 63 1.4 Bewegingen van de schouder ...................................................................................... 65 1.5 Het acromioclaviculair gewricht .................................................................................. 66 2. De ADL bewegingen .................................................................................................................... 67 3. Algemene conclusies................................................................................................................... 69
HOOFDSTUK 1 Inleiding
1. Doel van het onderzoek
De armen zijn in staat om zeer verschillende, vaak complexe, bewegingen uit te voeren. Hierdoor is de mens in staat om zeer ingewikkelde taken tot een goed einde te brengen. De complexe bewegingen van de arm zijn de resultante van eenvoudige rotaties in de verschillende gewrichten van het schouder-arm-complex. Wanneer de beweeglijkheid van de arm beperkt wordt door een bepaalde aandoening in het schouder-arm-complex is het vaak nodig om over te gaan tot orthopedische ingrepen om de volledige of gedeeltelijke beweging van de arm terug mogelijk te maken. Omdat de bovenste ledematen zo’n ingewikkelde structuur hebben, is het belangrijk om op voorhand een goed model te hebben om de uitkomst van deze operatie zo goed mogelijk te voorspellen. Om pre-operatieve planning van orthopedische schouderoperaties uit te voeren wordt momenteel een biomechanisch model van de schouder ontwikkeld. Om met realistische gegevens de dynamica van de schouder met dit model te onderzoeken is een databank nodig van de kinematica van de armen schouderbeweging. Een kinematische databank bevat alle gegevens over de beweging van het schouder-arm-complex zonder rekening te houden met aangrijpende krachten. Er wordt dus niet gekeken naar de krachten die de spieren uitoefenen op de beenderen of eventuele externe krachten die op de beenderen uitgeoefend worden. Het uiteindelijke doel van dit onderzoek is het opstellen van zo’n kinematische databank. Een volledige kinematische databank van de schouder bevat verschillende componenten: -
-
-
Er moeten gegevens zijn van zowel mensen met een gezonde schouder als mensen die reeds een aandoening aan de schouder hebben. Daarom werden in dit onderzoek zowel proeven gedaan met gezonde personen als met personen die reeds een bepaalde schouderprothese hebben. Er moet een statistisch onderzoek uitgevoerd kunnen worden. Daarom is een groot aantal proefpersonen aangewezen. Er werden meer dan 30 gezonde personen en meer dan 10 patiënten bereid gevonden om aan het onderzoek deel te nemen. Aan de hand van de databank moet een evaluatie gemaakt kunnen worden van de verminderde beweeglijkheid van de schouder na een operatie. Daarom hebben de personen een aantal activiteiten moeten uitvoeren die representatief zijn voor de bewegingen van de schouder in het dagelijks leven (ADL).
1
-
-
Er wordt ook gekeken naar de beweeglijkheid van de verschillende gewrichten op zich. Daarom werden proeven uitgevoerd die een beeld gaven van het bereik dat de verschillende gewrichten hebben in hun verschillende vrijheidsgraden (Range of Motion, ROM). Als laatste moet de databank ook gegevens bevatten over de beweeglijkheid van de scapula. De bewegingen van dit been zijn zeer moeilijk te beschouwen en daarom werden, met veel zorg, aparte proeven gedaan om de rotaties van de scapula beter in beeld te brengen.
Er werden reeds eerder onderzoeken gedaan met het doel een kinematische databank op te stellen, maar geen enkel met de omvang en volledigheid van dit onderzoek. In hoofdstuk 6 zullen de resultaten, die verkregen werden in dit onderzoek, vergeleken worden met de resultaten van de gelijkaardige onderzoeken. Al deze onderzoeken hebben wel gemeen dat ze gevoerd zijn met respect voor de standaard die opgesteld werd door de International Society of Biomechanics (ISB, http://isbweb.org/). Deze organisatie, die zich bezig houdt met het samen brengen van onderzoekers en onderzoeken in de biomechanica zodat samenwerking bevorderd wordt, heeft een standaard opgesteld voor het onderzoeken van de mechanica van de schouder. Deze standaard zal doorheen het werk verder toegelicht – en natuurlijk toegepast – worden.
2. Objectieven van het onderzoek De objectieven van het onderzoek zijn in de loop ervan gewijzigd. Oorspronkelijk was het de bedoeling een volledige kinematische databank op te stellen. Hiermee wordt bedoeld dat er een opname en volledige verwerking van alle aspecten van de databank gedaan wordt. In de loop van het onderzoek is gebleken dat de beschikbare tijd nogal krap was en de complexiteit van het onderzoek onderschat werd. Daarom werd besloten om niet het volledige onderzoek te doen binnen het kader van dit werk, maar enkel het geraamte op te stellen om een volledige verwerking te doen en dit te staven door het toe te passen op één set gegevens. De bijgestelde objectieven zijn: •
• •
•
•
Volledige opname van de gegevens van alle proefpersonen, zowel gezonde personen als patiënten. Dit betekent dat de activiteiten uit het dagelijks leven (ADL), de individuele bewegingen van de gewrichten (ROM) en de beelden die de scapulaire rotatie weergeven, opgenomen worden. Voorverwerking van al deze gegevens. De gegevens worden vervolledigd en gefilterd. Dan worden bestanden gegenereerd die gebruikt kunnen worden voor toekomstige verwerking. Een volledige analyse van de gegevens van één persoon volgens de standaard van de ISB en de bevindingen uit deze analyse vergelijken met de conclusies gemaakt in andere onderzoeken. Zoeken of er nieuwe methoden kunnen toegepast worden om het glenohumeraal rotatiecentrum te vinden. Dit punt is belangrijk voor het onderzoek maar kan niet opgenomen worden in de proeven omdat het in het bot ligt. Uitwerken van visualisatietechnieken zodat de gegevens en resultaten op een eenvoudige manier voorgesteld kunnen worden.
2
3. Overzicht van dit werk In hoofdstuk 2 wordt begonnen met een overzicht van de anatomie en de bewegingen van de schouder. Een studie hiervan was nodig aangezien ik hier, als ingenieursstudent, weinig of geen kennis van had. Eerst wordt een overzicht gegeven van de termen die in de anatomie gebruikt worden om zich te oriënteren in het lichaam. Vervolgens wordt elk bot besproken dat belangrijk is in dit onderzoek en worden belangrijke punten op deze botten toegelicht. Als laatste wordt een overzicht gegeven van de bewegingen die in elk gewricht van het schouder-arm-complex mogelijk zijn en die belangrijk zijn voor dit onderzoek. Hoofdstuk 3 gaat over de opname en voorverwerking van de gegevens. De hardware en de software die voor de opname gebruikt werden, worden besproken. Vervolgens worden de verschillende proeven besproken die uitgevoerd moesten worden door de proefpersonen. Om te eindigen wordt iets gezegd over de voorverwerking van de gegevens. De gegevens moeten namelijk vervolledigd en gefilterd worden voor ze verder verwerkt kunnen worden. In hoofdstuk 4 wordt de analyse van de statische beelden besproken. Deze statische beelden bevatten veel informatie die nodig is om de dynamische analyse uit te voeren. Er wordt besproken hoe de Joint Coordinate Systems werden ingevoerd en waarvoor deze dienen. Vervolgens wordt beschreven hoe we de visualisatie verbeterd hebben, dit om een duidelijke en begrijpelijke voorstelling van de gegevens en resultaten te kunnen bieden. Als slot worden in dit hoofdstuk verschillende methoden besproken, en met elkaar vergeleken, om het glenohumeraal rotatiecentrum te bepalen. In hoofdstuk 5 gebeurt de dynamische analyse. Er wordt beschreven hoe men de, in de dynamische metingen, ontbrekende gegevens kan bekomen. Er wordt uitgelegd wat de hoeken van Euler zijn en hoe ze van toepassing zijn voor dit onderzoek. Vervolgens worden de verschillende rotaties bepaald en wordt beschreven hoe deze geformuleerd moeten worden volgens de standaard van de ISB. Hoofdstuk 6 bevat de resultaten en conclusies. Er zal een korte beschrijving gegeven worden van gelijkaardige studies en de resultaten uit deze studies zullen vergeleken worden met deze die hier bekomen zullen worden.
3
HOOFDSTUK 2
De anatomie en de bewegingen van de bovenste extremiteiten 1. Inleiding
Om een analyse te maken van de bovenste extremiteit en haar bewegingen, moet eerst geweten zijn hoe deze ineen zit en op welke manieren ze kan bewegen. Daarom zullen in dit hoofdstuk de anatomie en bewegingen van de bovenste extremiteit uiteengezet worden. De bovenste extremiteit bestaat uit de schoudergordel en de arm. De schoudergordel is de benige structuur die een gewricht vormt met de armen en deze ondersteunt. Hij bestaat uit de sleutelbeenderen (clavicula) aan de voorzijde van de borst en de schouderbladen (scapula) die plat tegen de rug liggen. De beenderen in de arm die voor dit onderzoek belangrijk zijn, zijn het opperarmbeen (humerus) in de bovenarm en de ellepijp (ulna) en het spaakbeen (radius), die samen de onderarm vormen. In dit werk zal enkel de Latijnse naam van de beenderen gebruikt worden. (Figuur 2.1)
Clavicula Humerus
Radius
Ulna
Scapula
Thorax Figuur 2.1: De bovenste extremiteiten. (Argosy Publishing, Inc., 2007)
We beginnen dit hoofdstuk met een verklaring van de anatomische terminologie, die eigen is aan het vakgebied en enige duiding nodig heeft. Vervolgens worden de verschillende beenderen van de schoudergordel kort besproken en als laatste worden de bewegingsmogelijkheden van de schouder en arm, die van toepassing zijn voor dit onderzoek, toegelicht.
4
2. Anatomische terminologie De termen die hier uitgelegd worden, zijn standaardtermen in de anatomie maar zijn daarbuiten weinig gekend. Hier wordt een kort overzicht gegeven van de termen die in dit werk gebruikt zullen worden. (Marieb & Hoehn, 2007)
2.1
Aanduiding van posities
De meeste dieren hebben meestal één uiteinde waar zich de kop bevindt, en één met de staart. Het uiteinde met de kop of het hoofd is de craniale zijde, het einde met de staart is de caudale zijde. Voor de mens worden deze termen ook gebruikt, maar omdat ze niet meer zo intuïtief zijn, worden eveneens de termen superieur en inferieur, voor respectievelijk dichter bij en verder weg van het hoofd, gebruikt (Figuur 2.2).
Figuur 2.2: Links de craniale of superieure en rechts de caudale of inferieure richting.
Het deel van het lichaam van het dier dat normaal naar boven gericht is, het verst van de grond af, is de dorsale zijde. Het tegenovergestelde deel, dat normaal bij een dier naar beneden gericht is, het dichtst bij de grond, is de ventrale zijde. Bij de mens worden de termen dorsaal en ventraal nog steeds gebruikt voor de rug- en buikzijde, maar omdat de mens rechtop loopt, beschrijven deze termen niet de zijden het dichtst bij, of het verst af van de grond. Daarom gebruikt men bij de mens ook vaak anterieur voor punten aan de voorzijde en posterieur voor punten aan de achterzijde van het lichaam (Figuur 2.3).
Figuur 2.3: Links de ventrale of anterieure en rechts de dorsale of posterieure richting.
Bij ledematen of andere aanhangsels van een dier is een punt dat dichter bij de lichaamsromp ligt proximaal, terwijl een punt verder weg distaal genoemd wordt (Figuur 2.4).
Figuur 2.4: Links de proximale en rechts de distale richting.
5
Structuren dichtbij de middellijn van het lichaam worden mediaal genoemd, terwijl structuren die meer aan de zijden liggen (meer links of rechts van het midden), lateraal worden genoemd (Figuur 2.5).
Figuur 2.5: Links de mediale en rechts de laterale richting.
2.2
Vlakken in de anatomie
Er worden drie soorten vlakken gebruikt in de anatomie (Figuur 2.6): • • •
Een sagittaal vlak verdeelt het lichaam in een linker- en rechterdeel. Het midsagittale (of mediaan-) vlak is dan het vlak dat het lichaam precies middendoor deelt. Een coronaal of frontaal vlak verdeelt het lichaam in dorsale en ventrale gedeelten (bij een mens in een voor- en achtergedeelte) Een transvers(-aal) vlak of horizontaal vlak verdeelt het lichaam in een craniaal en een caudaal deel. 6
Coronaal of frontaal vlak
(Mid-) sagittaal of mediaanvlak
Transvers(-aal) of horizontaal vlak
Figuur 2.6: De verschillende anatomische referentievlakken.
3. De beenderen van de schoudergordel en de arm Hier volgt een korte bespreking van de verschillende beenderen in de schoudergordel en de arm die belangrijk zijn voor het onderzoek. Tevens worden een aantal punten op de verschillende beenderen aangegeven die een belangrijke rol spelen in dit onderzoek. De informatie werd allemaal gehaald uit een anatomisch handboek. (Abrahams, 2003)
3.1
De thorax
De thorax (Ned.: ribbenkast of borstkas) behoort niet echt tot de schoudergordel, maar vormt wel het aanhechtingspunt van de schoudergordel. De thorax is niet één enkel been, maar is samengesteld uit verschillende beenderen. We zullen hier de verzameling van de wervelkolom, de ribben en het sternum (Ned.: borstbeen) benoemen als de thorax (Figuur 2.7).
Ribben: 7 paar ware en 5 paar valse.
7 Sternum
Ruggenwervels, hier afgebeeld van C7 tot T12
Figuur 2.7: Ventraal (links) en dorsaal (rechts) zicht op de thorax. (Argosy Publishing, Inc., 2007)
De ribbenkast beschermt de vitale organen in de borstkas en biedt aanhechtingspunten voor spieren van de rug, borst en schouder. Hij is zo licht dat hij tijdens de ademhaling beweegt. De ribbenkast bestaat uit 7 paar ware en 5 paar valse ribben. Deze zijn allemaal achteraan verbonden met een ruggenwervel. De vaste ribben zijn aan de voorkant verbonden met het borstbeen, de valse ribben zijn ofwel onrechtstreeks, via vergroeid kraakbeen, verbonden met het borstbeen, ofwel helemaal niet verbonden.
Het sternum is een lang plat bot dat verticaal in het midden aan de voorkant van de ribbenkast ligt. Op dit been liggen twee punten die belangrijk zijn voor dit onderzoek: de processus xiphoideus (PX) en de incisura jugularis sterni (IJ). Het eerste punt is het meest inferieure punt van het sternum, het tweede punt ligt in het putje aan de onderkant van de hals, net boven het sternum (Figuur 2.8).
IJ
PX
Figuur 2.8: Het sternum.
De wervelkolom geeft ons lichaam flexibiliteit en houdt ons overeind. Bovendien beschermt zij het delicate ruggenmerg. De wervelkolom is opgebouwd uit de ruggenwervels met daartussen de tussenwervelschijven. Er zijn 7 halswervels, 12 borstwervels (met aan elke wervel een rib gehecht), 5 lendenwervels, 5 heiligbeenwervels en 4 staartwervels. Op Figuur 2.7 zijn enkel de 7de halswervel en de twaalf borstwervels afgebeeld. Dit omdat enkel de 7de halswervel en de 8ste borstwervel van belang zijn voor dit onderzoek. Dat zijn namelijk de wervels die in ongeveer hetzelfde horizontale vlak liggen als respectievelijk IJ en PX. Een belangrijk onderdeel van de wervels is het doornuitsteeksel (Processus Spinosus). Dat is het deel van de wervel dat men kan voelen op de rug (Figuur 2.9).
Doornuitsteeksel
Figuur 2.9: Bovenaanzicht van een borstwervel.
8
3.2
De clavicula
De clavicula (Ned.: sleutelbeen) is een S-vormig bot dat horizontaal aan de bovenkant van de thorax ligt. Het mediale uiteinde van de clavicula bevat een groot ovaal facet voor de verbinding met het sternum bij het sternoclaviculair gewricht (SC). Er ligt een kleiner facet aan het andere uiteinde, waar de clavicula verbonden is aan de acromion (zie paragraaf 3.3) bij het acromioclaviculair gewricht (AC) (Figuur 2.10).
Wervelkolom Scapula AC
SC
Clavicula Sternum Figuur 2.10: Bovenaanzicht van de thorax met een duidelijk zicht op de clavicula.
3.3
De scapula
De scapula (Ned.: schouderblad) is een plat, driehoekig bot dat tegen de achterkant van de thorax ligt. Het vormt samen met de clavicula de schoudergordel (Figuur 2.10). De spina scapulae(Ned.: beenplaat) is een dikke uitstekende richel, een uitloper van de schoudertop. Dit is een plat uitsteeksel dat het puntje van de schouder vormt. De zijwaartse hoek, het dikste deel van het schouderblad, bevat de schouderkom, de indeuking waarin de humeruskop (zie paragraaf 3.4) past in het schoudergewricht. Het ravenbekuitsteeksel (processus coracoïdeus, PC) is ook in dit gebied voelbaar. Spina scapulae Acromion
AA
TS Margo medialis
PC
AI
Rand van de schouderholte
Figuur 2.11: Dorsaal (boven) en ventraal (onder) zicht op de scapula.
9
Een aantal punten die nog belangrijk zijn voor het onderzoek zijn ook aangeduid op de figuur. Het gaat over de onderste rand van de scapula (angelus inferior, AI), het meest latero-dorsale punt van de scapula (angulus acromialis, AA) en de kruising tussen de spina scapulae en de margo medialis (trigonum spinae, TS) (Figuur 2.11).
3.4
De humerus
De humerus (Ned.: bovenarmbeen) is een typisch pijpbeen. Het heeft een lange schacht met vergrote uiteinden, die bij het schoudergewricht verbonden zijn met de scapula en bij de elleboog met de ulna en de radius. Aan de bovenkant van de humerus ligt de gladde, bolvormige kop die in de schouderholte past. Distaal vindt men aan weerszijden van het bot de epicondyli (epiconylus medialis, EM en epiconylus lateralis, EL) (Figuur 2.12). Het punt waarrond de humerus roteert bij beweging noemt men het glenohumeraal rotatiecentrum (GH). Dit punt is niet te voelen door de huid, omdat het midden in het bot ligt. In hoofdstuk 4, paragraaf 4 wordt beschreven hoe dit punt gevonden kan worden.
Humeruskop 10
EL
EM
Figuur 2.12: De humerus. (Argosy Publishing, Inc., 2007)
3.5
De voorarm
In dit onderzoek wordt de voorarm als een geheel gezien. In werkelijkheid bestaat deze uit twee beenderen, de ulna (Ned.: ellepijp) en de radius (Ned.: spaakbeen). Zij vormen een gewricht met de humerus en met de polsbotjes en zijn op unieke wijze gevormd om de hand en de onderarm te laten draaien.
De ulna ligt aan de kant van de pink (mediaal) terwijl het spaakbeen aan de kant van de duim (lateraal) ligt. Door de radio-ulnaire gewrichten kunnen de ulna en radius rond elkaar draaien in de bewegingen die typisch zijn voor de onderarm: pronatie en supinatie (paragraaf 4.3.2). Het uitsteeksel van de elleboog is een stuk van de ulna en noemt de olecranon (OL). De uitsteeksels die men voelt aan de basis van de duim en de pink zijn respectievelijk de processus styloideus radii (RS) en processus styloideus ulnae (US). Een ander punt dat gebruikt wordt in het onderzoek is het distale punt van het derde middenhandsbeentje (CM3), dit punt wordt ook aangeduid op Figuur 2.13.
OL
Ulna Radius
US
RS
CM3
Figuur 2.13: Dorsaal zicht op de rechterarm. (Argosy Publishing, Inc., 2007)
11
4. De bewegingen van de bovenste extremiteit Het complex van schouder en arm kan een groot aantal bewegingen aan. Dit blijkt uit het groot aantal vrijheidsgraden dat dit complex heeft. Als we de zes vrijheidsgraden van de thorax mee beschouwen, heeft het hele complex niet minder dan 17 vrijheidsgraden. Een overzicht wordt gegeven in Tabel 2.1. Dit is een gevolg van de verschillende gewrichten die allemaal bijdragen tot de grote beweeglijkheid. De informatie komt uit een standaardwerk uit de bewegingsleer. (Kapandji, 1980) Thorax t.o.v. globaal assenstelsel
6 vrijheidsgraden
Sternoclaviculair gewricht
3 vrijheidsgraden
Acromioclaviculair gewricht
3 vrijheidsgraden
Scapulothoracisch glijvlak
-2 vrijheidsgraden
Conoïd ligament
-1 vrijheidsgraad
Glenohumeraal gewricht
3 vrijheidsgraden
Humero-ulnair gewricht
1 vrijheidsgraad
Ulno-radiaal gewricht
1 vrijheidsgraad
Pols
3 vrijheidsgraden
Totaal
17 vrijheidsgraden
Tabel 2.1: Overzicht van de vrijheidsgraden van de bovenste extremiteiten.
4.1
De thorax
De zes vrijheidsgraden van de thorax zijn drie rotaties en drie translaties. De drie translaties zijn eenvoudig verplaatsingen van de thorax langs de globale assen. De rotaties zijn hoekverdraaiingen rond dezelfde assen. De bewegingen van de thorax zijn geen direct objectief van dit onderzoek, maar ze moeten wel beschouwd worden omdat ze een invloed hebben op de positie en oriëntatie van de andere lichaamsdelen. Zoals in hoofdstuk 5, paragraaf 3 besproken zal worden, moeten de bewegingen van de thorax geëlimineerd worden om een goede beschouwing te kunnen maken van de andere bewegingen. In Figuur 2.14 zijn de assen te zien waarrond geroteerd wordt. De rotatie rond de Zt-as wordt flexie of extensie genoemd. De rotatie rond de Yt-as is axiale rotatie en de rotatie rond de Xt-as wordt laterale rotatie van de thorax genoemd. Opmerking:
de assen die hier gedefinieerd worden, zijn niet per definitie de assen die zullen gebruikt worden in het onderzoek. Het is wel de bedoeling dat de assen uit het onderzoek, de hier gebruikte assen zo goed mogelijk benaderen.
12
Figuur 2.14: De thorax met de assen waarrond geroteerd wordt. (Argosy Publishing, Inc., 2007)
4.2
De schouder
De schouder is het meest beweeglijke van alle gewrichten in het menselijk lichaam. De schouder heeft drie vrijheidsgraden, waardoor de bovenste extremiteiten ten opzichte van de drie vlakken in de ruimte kunnen bewegen.
13
Figuur 2.15: De verschillende assen waarrond de schouder beweegt.
1. Rond de transversale as, gelegen in een frontaal vlak, zijn de anteflexie- en retroflexiebewegingen mogelijk. Deze worden uitgevoerd in een sagittaal vlak. 2. Rond de sagittale as, gelegen in een sagittaal vlak, zijn de abductie- en adductiebewegingen mogelijk. Deze worden uitgevoerd in een frontaal vlak. 3. De snijlijn van het frontale en het sagittale vlak is de verticale as. Hier rond zijn de anteflexieen retroflexiebewegingen mogelijk, uitgevoerd in een horizontaal vlak, als de arm 90° geabducteerd is. 4. Rond de longitudinale as van de humerus zijn de exorotatie- en endorotatiebewegingen van de arm mogelijk. De rotatie omheen deze as is de resultante van bewegingen, uitgevoerd om twee van de drie assen tegelijkertijd.
Opmerking:
de assen die hier gedefinieerd worden, zijn niet per definitie de assen die zullen gebruikt worden in het onderzoek. Het is wel de bedoeling dat de assen uit het onderzoek, de hier gebruikte assen zo goed mogelijk benaderen. 4.2.1
Anteflexie- en retroflexiebewegingen
De bewegingen worden uitgevoerd met de humerus in 0° abductie (Figuur 2.16) of met de humerus in 90° abductie (Figuur 2.17). Bij de beweging met 0° abductie kan de arm tot 45° à 50° in retroflexie en tot 180° in anteflexie gaan. In het laatste geval kan men ook spreken van 180° abductie.
14 Figuur 2.16: (a) retroflexie (b) anteflexie
Als de arm in 90° abductie staat, gebeurt de beweging rond een verticale as en in een horizontaal vlak. Hierbij zijn niet alleen de bewegingen in het schoudergewricht betrokken, maar ook de bewegingen van de scapula t.o.v. de thorax. De beweging naar voor kan gaan tot 140°, die naar achter slechts tot 30°.
Figuur 2.17: (a) 90° abductie in frontaal vlak (b) anteflexie en adductie naar voor (c) retroflexie en adductie naar achter.
4.2.2
Adductie
Adductie in het frontale vlak vanuit de referentiestand (i.e. de stand waarbij de arm verticaal naast de romp hangt) is mechanisch onmogelijk vanwege de aanwezigheid van de romp. Vanuit de referentiestand is adductie slechts mogelijk gecombineerd met: retroflexie (a), dit laat geringe adductie toe of anteflexie (b), in dit geval is er 30° tot 45° adductie mogelijk (Figuur 2.18).
Figuur 2.18: (a) adductie met retroflexie (b) adductie met anteflexie.
4.2.3
Abductie
Abductie, de beweging van de bovenste extremiteit van de romp af, vindt plaats in een frontaal vlak, om een sagittale as. Bij 180° abductie bevindt de arm zich verticaal boven de romp. Twee dingen dienen opgemerkt te worden: ten eerste wordt vanaf 90° abductie de arm dichter bij het mediaanvlak van het lichaam gebracht, ten tweede kan de uiterste abductiestand van 180° ook bereikt worden door 180° anteflexie. (Figuur 2.19)
Figuur 2.19: Verschillende posities van de arm in abductie.
15
4.2.4
Rotatie van de arm
Dit vindt plaats om de longitudinale as van de humerus. Om de omvang van de rotatiebeweging te meten dient de elleboog 90° gebogen te zijn, zodat de arm zich in een sagittaal vlak bevindt (a). Anders zou bij de omvang van de rotatiebeweging eveneens die van de pronatie en supinatie van de onderarm gerekend worden. Zoals in Figuur 2.20 te zien is kan de exorotatie gaan tot 80° (b), de endorotatie kan gaan tot 95° (c). Om deze omvang te bereiken dient de onderarm achter de romp langs te gaan, waardoor de rotatiebeweging samen gaat met een zekere mate van retroflexie.
Figuur 2.20: (a) referentiepositie (b) exorotatie (c) endorotatie.
4.2.5
Bewegingen van de schoudergordel in het horizontale vlak
Bij deze bewegingen zijn ook de bewegingen van de scapula t.o.v. de thorax betrokken. Figuur 2.21 toont de referentiestand (a), de retractie van de schoudergordel (b) en de protractie van de schoudergordel (c). De omvang van de protractie is groter dan deze van de retractie.
Figuur 2.21: (a) referentiestand (b) retractie (c) protractie.
Een beweging van de schouder die niet in het werk vermeld stond, en waar dus geen afbeelding van is, is de elevatie en depressie van de schouder. Bij elevatie wordt de schouder omhoog gebracht volgens de verticale as, bij depressie wordt de schouder naar onder gebracht langs de verticale as (cf. schouders optrekken).
16
4.3
De elleboog
Het ellebooggewricht is het gewricht dat een mechanische verbinding tot stand brengt tussen de boven- en de onderarm. Door deze verbinding kan de arm, zich positionerend in drie loodrecht op elkaar staande vlakken (dankzij het schoudergewricht), zijn distale en actieve uiteinde – de hand – meer of minder ver van het lichaam afvoeren. Dank zij de flexiemogelijkheid in de elleboog kan men het voedsel naar de mond brengen. Anatomisch is het ellebooggewricht één enkel gewricht: er is slechts sprake van één gewrichtsholte. Qua functie is er echter sprake van twee gescheiden eenheden: de pronatie - supinatie, in het proximale radio-ulnaire gewricht en de flexie-extensie in de gewrichten tussen humerus en ulna en tussen humerus en radius. 4.3.1
Flexie –extensie
De referentiestand wordt gedefinieerd als de positie waarbij de longitudinale assen van boven- en onderarm in een rechte lijn staan. Extensie is het bewegen van de onderarm naar dorsaal. Aangezien de referentiestand overeenkomt met de volledige extensie is de uitslag vanuit de referentiestand in extensierichting per definitie nul, behalve bij diegenen waarbij slapte van de ligamenten een hyperextensie van 5° à 10° toelaat. Gaat men daarentegen uit van welke flexiestand van de elleboog dan ook, dan is een relatieve extensie altijd mogelijk. Flexie is het bewegen van de onderarm naar ventraal waarbij de onderarm tegen het ventrale gedeelte van de bovenarm aankomt. Actieve flexie is mogelijk tot 145°, passieve flexie is mogelijk tot 160°, waarbij een opening van vuistbreedte overblijft tussen pols en schouder, zodat de pols nooit de schouder raakt (Figuur 2.22).
Figuur 2.22: V.l.n.r. volledige flexie, gedeeltelijke flexie, referentiestand (volledige extensie)
4.3.2
Pronatie – supinatie
Pronatie en supinatie zijn de bewegingen van de onderarm om een longitudinale as. Hierbij zijn twee gewrichten betrokken die mechanisch met elkaar verbonden zijn: het proximale radio-ulnaire gewricht, dat anatomisch behoort tot het ellebooggewricht en het distale radio-ulnaire gewricht, dat anatomisch los ligt van het polsgewricht. Pronatie en supinatie kunnen alleen goed bekeken worden met de elleboog tegen de romp en 90° geflecteerd. Als de elleboog gestrekt is, ligt de onderarm in één lijn met de bovenarm en rotatie van de eerstgenoemde kan dan samengesteld zijn uit pronatie of supinatie en rotatie in de schouder.
17
De supinatiepositie wordt bereikt wanneer de handpalm naar boven en de duim lateraal wijst (a), de pronatiestand is wanneer de handpalm naar beneden en de duim mediaal wijst (b). De middenpositie ontstaat wanneer de handpalm naar mediaal en de duim naar boven wijst (c). Dit is de positie van waaruit de bewegingsuitslag van pronatie en supinatie gemeten wordt.
Figuur 2.23: Pronatie en supinatie.
Wanneer men langs de longitudinale as van de onderarm kijkt, ligt de hand, wanneer ze in middenpositie staat, in een sagittaal vlak (d). De hand in supinatie (e) ligt in het horizontale vlak en dus is de bewegingsuitslag van de supinatie 90°. De hand in pronatie bereikt het horizontale vlak net niet (f) en daarom is de bewegingsuitslag van de pronatie slechts 85° (Figuur 2.23).
4.4
De pols
De pols, het distale gewricht van de bovenste extremiteit, kan de hand, als uitvoerend segment, in de meest optimale positie brengen om te grijpen. Het polsgewricht heeft twee graden van vrijheid. Samen met de pronatie en de supinatie, die een derde vrijheidsgraad vormen, kan de hand dan ook ten opzichte van de onderarm in elk vlak van de ruimte worden geplaatst. De bewegingen van de pols kunnen rond twee assen worden uitgevoerd (Figuur 2.24). De eerste as is de dwarse as AA’ (transversaal), gelegen in een frontaal vlak (verticaal gearceerd). Deze as laat flexieen extensiebewegingen toe, die uitgevoerd worden in het sagittale vlak (horizontaal gearceerd). De tweede as is de voor - achterwaarts gerichte as BB’ (antero - posterieur), gelegen in een sagittaal vlak. Deze as laat adductie- en abductiebewegingen toe, die uitgevoerd worden in het frontale vlak.
18
Figuur 2.24: De verschillende bewegingen van de pols.
1. De flexiebeweging. De handpalm beweegt naar de voorzijde van de onderarm. De maximale uitslag van de beweging is 85°. 2. De extensiebeweging. De handrug beweegt naar de achterzijde van de onderarm. Ook van deze beweging is de maximale uitslag 85°. 3. De adductie of ulnaire deviatie. De hand beweegt naar de lichaamsas toe en de mediale zijde, of de ulnaire zijde, vormt met de mediale zijde van de onderarm een stompe hoek die open is naar mediaal. Deze maximale uitslag is 45°. 4. De abductie of radiale deviatie. De hand beweegt van de lichaamsas af en de laterale zijde, of de radiale zijde, vormt met de laterale zijde van de onderarm een stompe hoek die naar lateraal toe open is. De maximale uitslag van deze beweging is 15°.
19
HOOFDSTUK 3
Opname en voorverwerking van de gegevens 1. De opname van de data
De eigenlijke opname van de data behoort niet tot dit onderzoek, dit werk is vooral gericht op de verdere verwerking van de gegevens. De opname werd gedaan door twee studenten geneeskunde in het kader van hun scriptie (Dhooghe & Samaey, 2008). In hun werk is dan ook een meer gedetailleerde beschrijving van de werkwijze te vinden. Hier zal toch een kort overzicht gegeven worden van de opname. Dit omdat bepaalde facetten van de opname in mindere of meerdere mate belangrijk zijn voor het begrip van het verder onderzoek.
1.1
De proefpersonen
Er waren twee groepen proefpersonen die deelnamen aan dit onderzoek. Enerzijds waren er 30 gezonde rechtshandige personen. Met gezond wordt bedoeld dat er geen voorgeschiedenis was van schouderpathologie. Anderzijds waren er 12 patiënten. Dit waren vrijwilligers die al minstens twee jaar een schouderprothese hadden en die voldoende postoperatieve functionaliteit van de schouder hebben om de bewegingen uit te voeren. De voorkeur voor alle proefpersonen lag bij rechtshandige personen. De methoden die hier beschreven zullen worden, zijn namelijk allemaal gebaseerd op een onderzoek van de rechter schouder. Echter, als er toch een linkshandig persoon onderzocht is, wordt aangeraden alle ruwe data te spiegelen ten opzichte van het mediaanvlak, zodat de technieken voor de rechterschouder zonder verdere beperkingen kunnen worden toegepast. Het rechtshandig zijn was bij de gezonde personen een strikt selectiecriterium. Bij de patiënten was de groep die voldeed aan de andere voorwaarden al zo klein dat ook linkshandige mensen aanvaard werden.
1.2
De opnamehardware en –software
Voor het opnemen van de gegevens worden reflecterende markers op verschillende plaatsen van het lichaam geplaatst (paragraaf 1.3). De markers zijn bolletjes met een reflecterend oppervlak en ze worden op de huid aangebracht met dubbelzijdige tape. Tijdens de bewegingen die de proefpersonen uitvoeren, wordt de positie van deze markers opgenomen door 8 infrarood camera’s.
20
Deze camera’s hebben rond de lens diodes die infrarood licht uitstralen. Dit licht wordt door de markers gereflecteerd en dan door de camera’s opgenomen. De camera’s zijn zo geplaatst dat elke marker op elk moment minstens door drie camera’s zichtbaar is. Deze beelden worden dan opgenomen met de Qualisys Track Manager. Deze software zorgt ervoor dat de 8 eendimensionale beelden (Figuur 3.1) van de verschillende camera’s samengesteld worden tot een driedimensionaal beeld (Figuur 3.2).
21 Figuur 3.1: De 8 eendimensionale beelden in Qualisys.
Figuur 3.2: Het driedimensionale beeld. Ook de posities van de camera's zijn te zien.
Qualisys neemt de bewegingen op met 60 frames per seconde. Voor elke frame zijn voor elk punt de x-, y- en z-coördinaten bekend ten opzichte van het globaal coördinatensysteem. Deze coördinaten worden gebruikt in het verder onderzoek (Figuur 3.3).
Figuur 3.3: Links een 3D-beeld met het globaal assenstelsel en rechts de lijst met markers en hun coördinaten.
22
1.3
De markers
De markers zijn deze die voorgesteld worden in de standaard voor het beschrijven van bewegingen van de gewrichten van de International Society of Biomechanics (ISB). Deze standaard werd voorgesteld door het Standarization and Terminology Comittee (STC) van de ISB. De standaard werd opgesteld met als primair doel het vereenvoudigen van het werk en het aanmoedigen van communicatie tussen onderzoekers, clinici en alle andere geïnteresseerde partijen. Er werden standaarden opgesteld voor alle belangrijke gewrichten in het lichaam, zoals de voet, de enkel, de heup, de wervelkolom, de schouder, de elleboog, de hand en de pols. (Wu, et al., 2005) De plaatsen waar de markers worden aangebracht, werden reeds besproken in de loop van paragraaf 3 van hoofdstuk 2. Hier wordt een overzicht gegeven van de markers die in dit onderzoek gebruikt werden. De plaatsen waar de markers geplaatst worden, zijn steeds anatomische referentiepunten die gemakkelijk door de huid te voelen zijn. De geneeskundestudenten die de opnames deden hadden dus geen problemen met het lokaliseren van deze punten. Er worden ook enkele markers gebruikt die niet beschreven staan in de standaard voor de schouder, maar die toch belang zullen hebben in de loop van het onderzoek. Het gaat over de marker CM3, die zal gebruikt worden om de beweging van de hand te kunnen beschouwen en de markers BO, BB en De op de bovenarm (Figuur 3.4). Deze zullen gebruikt worden om een technisch coördinaatsysteem voor de bovenarm te bepalen (hoofdstuk 4, paragraaf 2.4.3)
Figuur 3.4: Positie van de extra markers van de bovenarm.
Deze markers zijn niet geplaatst op referentiepunten van de botten, maar worden op de huid geplaatst op referentiepunten van de spieren in de bovenarm (Murray & Johnson, 2004). In de onderstaande tabel wordt een overzicht gegeven van de verschillende beenderen en de markers die aan elk bot verbonden zijn. Bot of segment
Anatomisch referentiepunt
Beschrijving
Hand
CM3
Metacarpaal 3
US Voorarm
RS OL
Olecranon
EM
Epicondylus medialis
EL
Epicondylus lateralis
GH Humerus/ Bovenarm
Processus styloïdeus van de ulna Processus styloïdeus van de radius
BO BB De
Rotatiecentrum van het glenohumerale gewricht Oorsprong van de musculus brachioradialis Midden van de buik van de musculus biceps brachii Insertie van de musculus deltoïdeus
23
Scapula
PC
Processus coracoïdeus
AI
Angulus inferior
TS
Trigonum spinae
AA
Angulus acromialis
ACr
ACl
Clavicula
Thorax
Acromioclaviculair gewricht rechts Acromioclaviculair gewricht links (gebruikt om de oriëntatie van de romp te bepalen)
SC
Sternoclaviculair gewricht
ACr
Acromioclaviculair gewricht rechts
IJ
Incisura jugularis
PX
Processus xiphoïdeus
C7 T8
Processus spinosus van de zevende cervicale wervel Processus spinosus van de achtste thoracale wervel
Tabel 3.1: Overzicht van de beenderen en de markers.
1.4
De bewegingen
Elke proefpersoon moest een aantal bewegingen uitvoeren. Er waren twee soorten bewegingen, de bewegingen uit het dagelijks leven (ADL) en de Range of Motion bewegingen (ROM). De activiteiten uit het dagelijks leven zijn 7 representatieve activiteiten die beschreven werden in de literatuur (Magermans, Chadwick, Veeger, & van der Helm, 2005). In de Range of Motion bewegingen wordt het bereik van de verschillende bewegingen van de verschillende gewrichten, zoals beschreven in hoofdstuk 2, paragraaf 4, bepaald. Alle bewegingen worden gedaan vanuit een startpositie die gelijk is aan de statische meting. Daarna wordt elke beweging 10 maal achter elkaar uitgevoerd. Deze repetities zijn nodig omdat dan een selectie gemaakt kan worden van de beste beweging uit de sequentie. Zo worden eventueel slecht uitgevoerde bewegingen uit de metingen gefilterd. Na de bewegingssequenties wordt terug de startpositie aangenomen. 1.4.1
De statische meting
De proefpersoon staat recht en houdt zijn ellebogen in 90° flexie, de schouders en de polsen in neutrale stand, de handen gestrekt en kijkt recht voor zich uit. Alle beschreven markers zijn aangebracht op de huid. Elke dynamische meting zal ook vanuit deze stand gestart worden. De statische meting en de verwerking ervan wordt uitvoerig beschreven in hoofdstuk 4.
24
1.4.2
De Range of Motion bewegingen
Omdat bepaalde markers te hard schuiven over de huid tijdens de bewegingen, worden ze verwijderd voor de dynamische proeven (ROM en ADL). Het gaat hier over SC voor de clavicula, alle markers van de scapula en de markers EM en EL op de humerus. Uit hoofdstuk 4, paragraaf 2 zal blijken dat we deze referentiepunten voor de verwerking van de dynamische beelden toch nodig hebben, in hoofdstuk 5, paragraaf 1 zal dan beschreven worden hoe men deze referentiepunten toch op analytische wijze kan bepalen. Lichaamsdeel Pols
Elleboog
Beweging Flexie/ Extensie Radiale/ Ulnaire deviatie Flexie/ Extensie Pronatie/ Supinatie Anteflexie/ Retroflexie Abductie/ Adductie in het scapulair vlak
Humerus/ Scapula
Abductie/ Adductie in het frontaal vlak Endo-/ Exorotatie met humerus in 0° abductie Endo-/ Exorotatie met humerus in 90° abductie Horizontale abductie/ adductie
Scapula/ Clavicula
Elevatie/ Depressie Protractie/ Retractie
Tabel 3.2: Overzicht van de ROM bewegingen van de bovenste extremiteit.
De meeste van deze bewegingen werden reeds beschreven in hoofdstuk 2, paragraaf 4. Enkele bewegingen wijken af van de bewegingen die daar beschreven werden. De abductie- en adductiebewegingen worden gedaan in drie verschillende vlakken. De beweging in het frontaal vlak werd reeds beschreven in hoofdstuk 2, paragraaf 4.2.2 en 4.2.3. Verder wordt de beweging ook gedaan in het scapulair en in een horizontaal vlak. Het scapulair vlak is een vlak door de verticale as van het lichaam dat gedraaid is over 30° ten opzichte van het frontaal vlak. Voor de beweging in het horizontaal vlak wordt de bovenarm in het verlengde van de schouder gebracht. Vanuit deze stand worden dan de abductie- en adductiebewegingen uitgevoerd. De endo- en exorotatiebewegingen worden ook op twee manieren uitgevoerd. De humerus in 0° abductie betekent dat de bovenarm gewoon verticaal langs de romp blijft hangen en dat zo de bewegingen uitgevoerd worden. Als de humerus in 90° abductie staat, betekent dit dat de bovenarm in het verlengde van de schouder staat, vanuit deze stand worden dan de endo- en exorotatiebewegingen uitgevoerd.
25
1.4.3
De activiteiten uit het dagelijks leven
Voor de registratie van de ADL werd een keuze gemaakt van 7 verschillende activiteiten. Bij elke activiteit werd vertrokken van dezelfde startpositie. De proefpersonen waren vrij in de manier waarop ze een bepaalde activiteit uitvoeren, zo trachten we de meest natuurlijke situatie te creëren. Bij elke proef werden wel enkele instructies gegeven om een zekere cohesie in de gegevens te verkrijgen. De startpositie is met de twee handen vlak op de tafel waaraan de proefpersoon zit. Na elke beweging worden de handen terug in de startpositie gebracht. Categorie
Activiteit Reiken tot aan de tegenovergestelde zijde van de nek
Hygiëne
Haar kammen Perineale zorg Eten met een lepel uit een kom
Eten
Een fles uitschenken in een glas en opdrinken Mobiele telefoon opnemen
Alledaags object
Een boek uit een rek halen en op tafel neerleggen
Tabel 3.3: Overzicht van de ADL bewegingen.
Sommige handelingen spreken voor zichzelf, andere hebben enige uitleg nodig om in te zien hoe de beweging juist uitgevoerd werd. Bij het kammen van het haar wordt de handpalm via het voorhoofd, over de haren tot aan de achterzijde van het hoofd gebracht. Daarna wordt de hand vanuit de nek terug naar de startpositie gebracht. Bij de perineale zorg reikt de proefpersoon met zijn handpalm naar zijn os coccyx. Dat is het staartbeentje en bevindt zich helemaal op het einde van de wervelkolom. Daarna wordt de hand terug in startpositie gebracht. Bij het eten met een lepel uit een kom bevindt de kom zich op een gemarkeerde plaats op de tafel. De proefpersoon neemt de lepel op van het tafelblad, waarna hij met de lepel in de kom schept om vervolgens de lepel naar de mond te brengen. Na dit 10 maal uitgevoerd te hebben, worden zowel de lepel als de hand terug naar de startpositie gebracht. Voor het uitschenken van de fles in een glas en opdrinken bevinden de fles en het glas zich op gemarkeerde plaatsen op het tafelblad. De proefpersoon neemt de fles, simuleert het volschenken van het glas en zet de fles terug op de gemarkeerde plaats op het tafelblad. Daarna neemt hij het glas, brengt dit naar zijn mond en zet het glas terug op de gemarkeerde plaats op het tafelblad. De hand wordt na elke volledige beweging terug naar de startpositie gebracht.
26
Voor het opnemen van de mobiele telefoon ligt de GSM op een gemarkeerde positie op de tafel. De proefpersoon neemt de GSM en brengt hem naar zijn rechter oor, om het daarna terug op de aangegeven plaats op de tafel te leggen. De hand wordt na elke beweging terug naar de startpositie gebracht. Bij het uit een rek halen van een boek, ligt het boek op een verhoging op de tafel, dit stelt het rek voor. De proefpersoon neemt het boek en legt dit op een vaste positie op de tafel, waarna hij zijn hand terug naar de startpositie brengt. Daarna neemt de persoon het boek terug van het tafelblad om het opnieuw op de verhoging te leggen en brengt daarna zijn hand terug in de startpositie.
2. Voorverwerking van de data Ondanks de goede voorbereiding van de metingen zijn er twee problemen die onmogelijk vermeden konden worden. Men kan niet vermijden dat er gaten in de gegevens komen en dat er ruis op de gegevens zit.
2.1
Gaten in de gegevens
Het groot aantal camera’s kon niet voorkomen dat sommige markers af en toe niet door drie camera’s gezien konden worden. Een marker moet minstens door drie camera’s gefilmd worden om een driedimensionale positiebepaling te kunnen doen. Op deze manier ontstonden de gaten in de gegevens, dit zijn momenten dat de markers niet door genoeg camera’s gefilmd werden.
Figuur 3.5: De x-, y- en z-kromme van BB bij het reiken naar de hals. De gele stukjes zijn ontbrekende data.
In Figuur 3.5 zijn zowel het probleem als het eerste deel van de oplossing te zien. De gele stukjes in de krommen zijn plaatsen waar er data verloren is gegaan. Deze moeten opgevuld worden met passende krommen. In Qualisys is het mogelijk om deze gaten op te vullen. Men kan handmatig de gaten opvullen met splines. Deze splines kan men, door het begin- en eindpunt van het gat aan te passen, zo goed mogelijk aanpassen aan de vorm van de curve.
27
Tijdens het onderzoek werd meermaals gesuggereerd om dit proces te automatiseren, maar de selectie in Figuur 3.5 duidt een bijkomend probleem aan dat dit bijna onmogelijk maakt. Het is namelijk zo dat het verlies van een marker vaak gepaard gaat met een sprong van de positie van de marker juist voordat hij uit het zicht verloren gaat. Het gevolg hiervan is dat als men een functie programmeert die het gat opvult met een spline gelieerd aan het begin- en eindpunt van het gat, men vaak onjuiste oplossingen krijgt. Handmatig kan men de begin- en eindgrens van het gat voorbij deze sprong trekken en zo bekomt men toch een goed passende spline. Door het handmatig opvullen van de gegevens is het probleem nog niet volledig van de baan. Deze manipulaties zijn enkel mogelijk voor gaten die groter zijn dan 10 frames. Na het handmatig opvullen van de gaten blijven die gaten nog die korter zijn dan 10 frames. Deze kunnen wel automatisch opgevuld worden. Omdat deze gaten zo kort zijn, is de opvulling ervan met rechten voldoende. Daarom is het voldoende een functie te schrijven die deze gaten automatisch detecteert en ze via lineaire interpolatie opvult. De MATLAB-code voor deze functie is te vinden in appendix A.
2.2
Ruis
Een inherent probleem aan data-acquisitie is ruis. Ruis is nooit te vermijden als men gegevens van een analoge bron opneemt. De ruis hier is te wijten aan kleine trillingen van de markers, opnamefouten door de camera’s en fouten in de opnamesoftware. Deze ruis moet verwijderd worden voordat men aan de eigenlijke verwerking en analyse van de gegevens kan beginnen, omdat het kan leiden tot foute conclusies.
Figuur 3.6: Ruis op de x-kromme van ACr bij het op een rek zetten van een boek.
28
Op Figuur 3.6 zijn enkele plekken met veel ruis aangeduid op een kromme opgenomen met het Qualisys systeem. Er is duidelijk te zien dat ruis overal op de kromme in mindere of meerdere mate voorkomt. De ruis op een kromme kan verminderd worden door het toepassen van een filter. We hebben geopteerd voor een Butterworth-filter omdat deze vaak gebruikt wordt in biomechanische onderzoeken. De orde van de filter was afhankelijk van het soort meting. Na proeven werd besloten dat een filter van derde orde een goede keuze was om het grootste deel van de gegevens te filteren. Voor de statische metingen, die vaak minder dan 10 frames omvatten, was het gebruik van een derde-orde filter niet mogelijk omdat de lengte van de data groter moet zijn dan drie maal de orde van de filter. Voor de statische gegevens werd dan geopteerd voor een filter van eerste orde. De gebruikte filter was een low pass filter met als cut-off frequentie 10 Hz. Alle frequenties groter of gelijk aan 10 Hz werden dus uit de signalen weg gefilterd. Er werd gekozen voor 10 Hz omdat men zeker is dat reële bewegingen van de arm steeds een frequentie hebben die kleiner is dan 10 Hz. Er werd verder besloten om een two pass filter te gebruiken. Deze gaat als het ware twee maal over de data. Een eerste maal van voor naar achter, een tweede maal van achter naar voor. Dit wordt gedaan omdat dan vermeden wordt dat er faseverschuivingen optreden. De gefilterde gegevens blijven zo in fase met de originele gegevens. 29
Figuur 3.7: Detail van een originele en een gefilterde kromme.
De opgevulde en gefilterde gegevens werden in bestanden opgeslagen zodat ze gemakkelijk ingelezen konden worden in MATLAB voor de verdere verwerking. De MATLAB-code voor het filteren en opslaan van de gegevens is te vinden in appendix A.
2.3
De datastructuur
We zijn er in dit onderzoek niet in geslaagd een volledige verwerking van alle data te doen. Deze zal dus in een vervolgonderzoek gedaan moeten worden door een andere persoon. Daarom is het aangewezen dat de datastructuur toegelicht wordt. De dataopname is gebeurd in een tijdsspanne van drie weken. De eerste twee weken werden de proeven op gezonde personen gedaan, de derde week deze op de patiënten. Voor elke dag dat er opnames gedaan werden, werd er een map aangemaakt met als naam de datum van opname. Op elke proefdag kwamen 2, 3 of 4 proefpersonen aan de beurt. Het aantal proefpersonen per dag was afhankelijk van hoe vlot de proeven verliepen en hoeveel verschillende sequenties gedaan moesten worden. Voor de gezonde personen werden verschillende bewegingen die tot dezelfde categorie behoren, zoals bijvoorbeeld alle bewegingen in de pols, in één sequentie gedaan. Voor de patiënten, meestal oudere personen, werden deze proeven opgedeeld in verschillende sequenties. Als submappen van de mappen voor de verschillende dagen werden voor elke persoon een map aangemaakt met als naam de volledige naam van de proefpersoon, vaak had deze map een submap die “afgewerkt” noemt omdat er reeds bewerkingen gedaan werden door de geneeskundestudenten. Hierin werd dan voor elke sequentie die gedaan werd een QTM-bestand opgeslagen. De naam van deze QTM-bestanden bestond uit de voornaam van de proefpersoon en de proeven die in die sequentie gedaan werden. QTM is het formaat waarin Qualisys bewegingen opslaat. Omdat de verdere verwerking met MATLAB moest gebeuren, moesten de gegevens overgezet worden in een formaat dat ingelezen kon worden. Na het vervolledigen van de data, wat kon gebeuren in Qualisys zelf, werden de gegevens weggeschreven naar TSV-bestanden (deze optie was ingebouwd in Qualisys). TSV staat voor Tab Seperated Values, het zijn dus bestanden waarin alle coördinaten van alle punten op elk moment opgeslagen werden gescheiden door een tab. Bijvoorbeeld: een beweging van 15 markers (met elk 3 coördinaten op elk moment) gedurende 3000 frames leverde in deze bestanden een soort matrix op van 3000 rijen met op elke rij 45 waarden gescheiden door tabs. De TSV-bestanden kregen dezelfde naam als de QTM-bestanden waar ze van afgeleid werden. Elk TSV-bestand bevat eveneens een hoofding waarin bijkomende informatie te vinden is. De belangrijkste informatie hierin zijn de sample frequentie en de namen van de verschillende markers die opgenomen werden. In Figuur 3.8 is een voorbeeld te zien van de structuur van een TSV-bestand. De figuur geeft ook een voorbeeld van de naam van de bestanden. Het gaat hier dus over het opnemen van een mobiele telefoon door Jia Yuh Wong. Dit is overigens de persoon die als voorbeeld verder verwerkt zal worden (zie hoofdstuk 6). Deze TSV-bestanden konden ingelezen worden in MATLAB waarna ze verder verwerkt konden worden. Na het filteren van de gegevens werden deze terug weggeschreven naar nieuwe TSVbestanden met dezelfde naam als het origineel maar met het navoegsel “_smooth”. Deze bestanden werden voor elke persoon in zijn map opgeslagen in een submap die “gefilterd” genoemd werd.
30
Figuur 3.8: Voorbeeld van de structuur van een TSV-bestand.
31
Figuur 3.9: Overzicht van de datastructuur van de gegevens.
Op Figuur 3.9 is een overzicht gegeven van de datastructuur. De map “gefilterd” bevat, zoals gezegd, dezelfde TSV-bestanden als de huidige map waarvan de namen aangepast zijn. Deze bestanden bevatten dan de gefilterde data.
HOOFDSTUK 4
Analyse van de statische gegevens 1. Inleiding
Uit hoofdstuk 3, paragraaf 1.4.2 weten we dat bij de statische meting, die van elke proefpersoon werd genomen, meer markers werden aangebracht dan bij de dynamische metingen. Het gaat hier over SC op de clavicula, alle markers op de scapula en de epicondyli van de humerus. Deze punten worden tijdens de dynamische metingen niet gemarkeerd omdat ze op plaatsen liggen waar, tijdens het bewegen, de huid heel gemakkelijk over de botten glijdt. Omdat de markers op de huid gekleefd zijn, zou er tijdens de beweging dus geen goede overeenkomst meer zijn tussen de plaats van de marker en het punt van het bot dat de marker moet aangeven. De statische meting bevat dus meer plaatsmarkeringen dan de dynamische metingen. Deze metingen zijn bovendien ook nauwkeuriger dan de dynamische metingen. De markers bij de statische metingen zijn met zeer grote zorg op de juiste plaats aangebracht en omdat er geen beweging is van de proefpersoon treden er ook minimale meetfouten op. De statische meting is dus de beste meting die we hebben van elke proefpersoon en zal dus gebruikt worden als basis voor de verdere verwerking van de dynamische gegevens. De veranderingen in de coördinaten die ontstaan tijdens de dynamische metingen zullen allen gerefereerd worden ten opzichte van de statische meting en hieruit zullen dan de resultaten bekomen worden. In dit hoofdstuk zal eerst uiteen gezet worden hoe de Joint Coordinate Systems werden ingevoerd. Verder zal beschreven worden hoe de visualisatie van de gegevens geëvolueerd is en hoe de bepaling van het glenohumeraal rotatiecentrum gedaan werd.
2. Invoeren van de Joint Coordinate Systems (JCS) Zoals uitgelegd werd bij het beschrijven van de verschillende markers in hoofdstuk 3, paragraaf 1.3, wordt dit werk gepresenteerd met respect tot de standaard die door de International Shoulder Group werd opgesteld voor de beschrijving van bewegende gewrichten. Ook de Joint Coordinate Systems (JCS) zijn een deel van deze standaard. (Wu, et al., 2005) (van der Helm, 1997) Volgens de standaard worden de bewegingen van de verschillende gewrichten beschreven ten opzichte van locale coördinaatsystemen in de verschillende delen van de schoudergordel. De assen van de coördinaatsystemen worden allemaal bepaald met behulp van de verschillende gemeten punten. Termen zoals links, rechts, boven, onder, voor en achter, die gebruikt worden om de
32
oriëntatie van de coördinaatassen aan te geven zijn intuïtief te interpreteren. “Rechts” is in de richting van de rechter schouder, “boven” is superieur, “onder” is inferieur , “voor” is anterieur en “achter” is posterieur. Hoe de bewegingen van de lichaamssegmenten worden beschreven aan de hand van de standaard zal later beschreven worden (hoofdstuk 5, paragraaf 2.2).
2.1
Coördinaatsysteem voor de thorax – X t Y t Z t
Voor de thorax ligt de oorsprong O t in het punt IJ. De Y t -as is de lijn die het middelpunt van PX en T8 verbindt met het middelpunt van IJ en C7 en is naar boven gericht. De Z t -as is de lijn die loodrecht staat op het vlak gevormd door IJ, C7 en het middelpunt tussen PX en T8 en is naar rechts gericht. De X t -as is dan de lijn loodrecht op de Z t -as en de Y t -as die naar voor gericht is (Figuur 4.1).
33
Figuur 4.1: Oriëntatie coördinaatsysteem thorax.
Men ziet dus dat de assen onderling loodrecht zijn en gericht als een rechtshandig assenstelsel. De vectoren die de assen voorstellen worden ook genormeerd. Dit assenstelsel is dus een rechtshandig orthonormaal assenstelsel. Dit geldt ook voor alle hierna beschreven assenstelsels.
2.2
Coördinaatsysteem voor de clavicula – X c Y c Z c
Voor de clavicula is het grote probleem dat er slechts twee punten op het bot gekend zijn. Om dit op te lossen, wordt de Y t -as van de thorax gebruikt om de assen de kunnen definiëren. De oorsprong van het coördinaatsysteem is SC. De Z c -as is de lijn die SC en ACr verbindt en die gericht is naar ACr. De X c -as is de lijn loodrecht op Z c en Y t en wijst naar voor. De Y c -as is dan de lijn loodrecht op X c en Z c die naar boven gericht is (Figuur 4.2).
Figuur 4.2: Oriëntatie coördinaatsysteem clavicula.
2.3
Coördinaatsysteem voor de scapula – X s Y s Z s
De oorsprong van het coördinaatsysteem ligt dus in AA. De X s -as is een lijn die AA en TS verbindt en die gericht is naar AA. De Z s -as staat loodrecht op de X s -as en de lijn gevormd door AI en AA. De Z s -as is naar achter gericht. Z s staat dus loodrecht op het scapulair vlak. De Y s -as staat loodrecht op Z s en X s en is zo georiënteerd dat een rechtshandig stelsel gevormd wordt, Y s is dus naar boven gericht (Figuur 4.3).
Figuur 4.3: Oriëntatie coördinaatsysteem scapula.
34
2.4
Coördinaatsystemen voor de humerus
Voor de humerus zijn er verschillende coördinaatsystemen. Er zijn twee mogelijkheden voor de definitie van locale coördinaatsystemen en er is ook een derde technisch coördinaatsysteem (Figuur 4.4). 2.4.1
Coördinaatsysteem voor de humerus, eerste optie – X h1 Y h1 Z h1
De oorsprong van dit coördinaatsysteem ligt in GH. GH kon niet gemeten worden in de proeven omdat zijn positie niet te bepalen is aan het huidoppervlak. De bepaling van GH wordt besproken in paragraaf 4. De Y h1 -as is de lijn die GH verbindt met het middelpunt tussen EL en EM en die gericht is naar GH. X h1 staat loodrecht op het vlak gevormd door EL, EM en GH en is naar voor gericht. De Z h1 -as staat dan loodrecht op de X h1 en Y h1 -as en is naar rechts gericht. 2.4.2
Coördinaatsysteem voor de humerus, tweede optie – X h2 Y h2 Z h2
Ook voor dit coördinatensysteem ligt de oorsprong in GH. Ook de Y h2 -as is dezelfde als in het vorige geval. De Z h2 -as is de lijn loodrecht op het vlak gevormd door Y h2 en de Y f -as, die in paragraaf 2.5 bepaald zal worden. De X h2 -as is dan opnieuw de lijn loodrecht op Z h2 en Y h2 , die naar voor gericht is. Doordat de afstand tussen EM en EL zo kort is, zit er een grote fout op de richting van de verbindingslijn tussen deze twee punten. Hierdoor kan het zijn dat de Z h1 -as sterk afwijkt van de rotatie-as van de humerus. De Z h2 -as wordt bepaald door de positie van de boven- en onderarm en door de oriëntatie van de voorarm. Per definitie wordt de Z h2 -as gedefinieerd met de elleboog in 90° flexie in het sagittaal vlak en de voorarm in volledige pronatie. 2.4.3
Technisch coördinaatsysteem voor de humerus – X ht Y ht Z ht
Zoals vermeld in de inleiding van dit hoofdstuk zijn er in de statische beelden meer punten beschikbaar dan in de dynamische. Voor de dynamische metingen is het bepalen van de verschillende coördinaatsystemen echter ook noodzakelijk en heeft men dus een aantal punten nodig die in de dynamische beelden niet aanwezig zijn. Om dit op te lossen, nemen we aan dat de punten die ontbreken een vaste oriëntatie hebben ten opzichte van de verschillende coördinaatsystemen. Zo neemt men aan dat de oriëntatie van SC vast is ten opzichte van het coördinaatsysteem van de thorax en dat de punten van de scapula die ontbreken vast georiënteerd zijn ten opzichte van de clavicula. Bij het laatste wordt aangenomen dat de bewegingen in het acromioclaviculair gewricht zo klein zijn dat de scapula en de clavicula als een star geheel kunnen gezien worden.
35
Voor de humerus heeft men de punten EM en EL nodig om het coördinaatsysteem te bepalen. Om deze punten in de dynamische metingen te kennen heeft men dus een extra coördinaatsysteem nodig met een vaste oriëntatie ten opzichte van de humerus. Dit coördinaatsysteem is dan het technisch coördinaatsysteem. De oorsprong van het coördinaatsysteem ligt in BO. De Z ht -as is de lijn die BO verbindt met De en gericht is naar De. De X ht -as staat loodrecht op Z ht en de lijn die BB en BO verbindt. X ht is naar voor gericht. De Y ht -as staat dan loodrecht op Z ht en X ht en is naar voor gericht zodat de drie assen een rechtshandig stelsel vormen.(Murray & Johnson, 2004)
Figuur 4.4: De humerus met de verschillende coördinaatsystemen.
In een later stadium van het onderzoek is gebleken dat het technisch coördinaatsysteem niet voldeed om de punten van de statische naar de dynamische beelden te transformeren. De reden waarom dit niet werkte was niet helemaal duidelijk. Er werd besloten om de punten EM en EL voor de dynamische analyse op een andere manier te bepalen. Deze methode zal besproken worden in hoofdstuk 5, paragraaf 1.
2.5
Coördinaatsysteem voor de voorarm – X f Y f Z f
Voor de voorarm ligt de oorsprong in US. De Y f -as is de lijn die US verbindt met het middelpunt van EM en EL en die proximaal gericht is. X f is dan de lijn loodrecht op het vlak door US, RS en het middelpunt tussen EL en EM. De Z f -as staat loodrecht op X f en Y f en is naar rechts gericht (Figuur 4.5).
36
Figuur 4.5: Oriëntatie coördinaatsysteem voorarm.
2.6
Coördinaatsysteem voor de hand – X ha Y ha Z ha
Het assenstelsel voor de hand hoort niet echt bij de standaard voor de JCS van de schouder, maar wordt hier toch ingevoerd omdat tijdens het onderzoek ook de bewegingen in de pols bekeken worden. De oorsprong van dit assenstelsel ligt in CM3. De Y ha -as wordt gedefinieerd als de lijn tussen CM3 en het middelpunt van US en RS. De X ha -as ligt loodrecht op Y ha en op de lijn die RS en US verbindt. De X ha -as wijst naar de palm van de hand. De Z ha -as ligt dan loodrecht op X ha en Y ha en wijst naar de zijde van de pink, zodat de drie assen een rechtshandig stelsel vormen (Figuur 4.6).
Figuur 4.6: Oriëntatie coördinaatsysteem van de hand.
37
3. Visualisatie Er wordt een aantal ingrepen uitgevoerd op de gegenereerde beelden waardoor ze duidelijker worden. Dit ondersteunt de verwerking van de gegevens en maakt de interpretatie van de resultaten eenvoudiger.
3.1
Invoeren van namen en assenkruisen
Als men de gegevens uit Qualisys exporteert, krijgt men bestanden die lange lijsten met coördinaten van de verschillende punten bevatten. In MATLAB kan dan een plot gemaakt worden waar deze coördinaten op uitgezet worden. Een ruimte met daarin een aantal punten geplot, zonder enige verdere informatie, is natuurlijk nietszeggend. Daarom zijn, als eerste stap in het verduidelijken van de plots, de namen van de verschillende punten erbij gezet. Dit geeft al een iets duidelijker beeld van wat er juist voorgesteld wordt, maar zoals te zien is in Figuur 4.7 is de interpretatie hiervan nog steeds zeer moeilijk.
38
Figuur 4.7: Statisch beeld met enkel de punten en hun naam.
In een tweede stap worden de assenkruisen van de coördinatensystemen ingevoerd, zodat men al enig idee heeft van de oriëntatie van de verschillende lichaamsdelen. Zoals in Figuur 4.8 te zien is, draagt het toevoegen van de assenkruisen niet echt bij tot de vereenvoudiging van de interpretatie.
Figuur 4.8: Beeld na toevoegen van de assenkruisen.
3.2
Gebruiken van vlakken voor een betere visualisatie
Om de beelden echt duidelijker te maken worden vlakken en lijnen ingevoerd die de verschillende beenderen (of ledematen) moeten voorstellen. Het vlak tussen de punten IJ, PX, C7 en T8 is het symmetrievlak van de thorax en wordt hier gebruikt om de thorax voor te stellen. Tussen de punten SC en ACr wordt een lijn getrokken, dit is een voorstelling van de clavicula. Voor de scapula wordt een getorst vlak gebruikt tussen de punten ACr, AA, AI en TS. De humerus wordt voorgesteld door een driehoek tussen de punten GH, EM en EL. De voorarm wordt hier als een geheel voorgesteld en hiervoor wordt een rechthoek gebruikt tussen de punten EM, EL, US en RS. Ook de hand wordt als een geheel gezien en voor de visualisatie ervan wordt een driehoek tussen de punten US, RS en CM3 gebruikt. Het resultaat van deze bewerkingen is te zien in Figuur 4.9.
Figuur 4.9: Beeld met de beenderen of lichaamsdelen voorgesteld door vlakken en lijnen.
39
3.3
Gebruik van een realistische voorstelling van de beenderen
De beelden met de vlakken zijn reeds voldoende om een eenvoudige interpretatie toe te laten, maar we willen toch nog een stap verder gaan en realistische beelden leveren. Hiervoor maken we gebruik van stl-bestanden van de verschillende beenderen die beschikbaar gesteld werden door de ULB via het VAKHUM-project (Université Libre de Bruxelles, 2003). Deze stl-bestanden bevatten beelden, bestaande uit eindige elementen, van de verschillende beenderen (Figuur 4.10).
40
Figuur 4.10: Dorsaal oppervlak van de rechter scapula met handmatig geselecteerde punten.
Om deze beelden van de beenderen in te passen in wat we gemeten hebben in de proeven is het nodig dat ze naar de juiste plaats getransformeerd worden. Hiervoor moeten eerst de belangrijke punten van de beenderen (deze die in de metingen gebruikt worden) gevonden worden op de eindige-elementenbeelden. De enige manier om dit te doen, is ze handmatig aanduiden op de beelden. Op Figuur 4.10 is te zien hoe op het beeld van de scapula de punten AI, AA en TS aangeduid werden. Via trial and error wordt voor elk bot een combinatie van punten gevonden zodat het eindigeelementenbeeld zo goed mogelijk in de metingen past. Vaak wordt meer gewicht aan een bepaald punt gegeven, zodat het eindige-elementenbeeld dichter naar dit punt toe getrokken wordt. Op deze manier wordt een beeld verkregen dat de werkelijkheid goed benaderd. Voor de thorax worden de punten IJ, PX, C7, T8 en ACr gebruikt. Omdat IJ als de globale oorsprong, waaraan alle punten gerefereerd worden, gekozen is, is het nodig dat dit punt zeker juist ligt. Daarom wordt aan dit punt een dubbel gewicht toegekend. IJ, PX, C7 en T8 liggen allemaal ongeveer in hetzelfde vlak. Daarom is het niet zeker dat, als men enkel deze punten gebruikt, de oriëntatie van de thorax juist is. Als men enkel deze vier punten gebruikt, is het meermaals gebleken dat de thorax gespiegeld ten opzicht van het mediaanvlak werd weergegeven. Daarom wordt ook ACr gebruikt in
de passing van de thorax om de oriëntatie goed te krijgen, ondanks dat dit punt helemaal niet tot de thorax behoort. Voor de clavicula zijn er niet genoeg punten beschikbaar om een goede oriëntatie te verkrijgen. Er zijn minstens drie punten nodig om het segment op de juiste plaats en in de juiste oriëntatie te krijgen. Daarom worden om de clavicula te plaatsen ook punten van een ander bot gebruikt. Als dit gedaan wordt, moet ervoor gezorgd worden dat men steeds punten neemt van een bot dat meer distaal ligt dan het bot dat men wil passen. Dit omdat dan het volgende bot nog aangepast kan worden aan de positie van het vorige. Daarom worden, om de plaats van de clavicula te bepalen, het punt SC op de clavicula en de punten AA, AI, ACr en TS van de scapula gebruikt. Voor de scapula worden de punten AA, AI, ACr, TS en PC gebruikt. Aan AA wordt een dubbel gewicht toegekend omdat hierin de oorsprong van het lokaal coördinaatsysteem van de scapula ligt en we dus willen dat dit zo goed mogelijk gepositioneerd is. Voor de humerus is het voldoende om enkel GH, EM en EL te gebruiken. De passing van het bot aan de metingen is reeds zeer goed als men enkel deze punten gebruikt. De radius en ulna worden elk apart gepositioneerd, ondanks dat voor dit onderzoek de voorarm als een geheel gezien wordt. Bij de pronatie- en supinatiebewegingen roteren de ulna en radius om elkaar. Om dit goed te kunnen illustreren worden de twee botten afzonderlijk gepast. Voor het passen van de radius worden de punten US, RS, EL en het middelpunt van EM en EL gebruikt. Aan RS wordt een dubbel gewicht toegekend om zeker te zijn dat de radius in het punt RS ligt. Het middelpunt van EM en EL wordt gebruikt om ervoor te zorgen dat de radius (en ook de ulna) meer volgens de as van de voorarm komen te liggen. Voor de ulna worden de punten US, RS, EM, OL en het middelpunt van EM en EL gebruikt. Hier wordt aan US een dubbel gewicht gegeven. OL wordt hier gebruikt om de ulna meer naar de as van de voorarm te trekken. Voor de hand worden de punten US, RS, CM3 en het middelpunt van US en RS gebruikt. Aan het punt CM3 wordt een drievoudig gewicht toegekend om de oriëntatie van de hand juist te krijgen. Het middelpunt van US en RS wordt gebruikt om de hand in het verlengde van de as van de voorarm te leggen. We kennen nu de coördinaten van alle belangrijk punten in de stl-bestanden en uit de proeven kennen we de coördinaten van al deze punten in de werkelijkheid. We willen nu dat de punten van de stl-bestanden getransformeerd worden naar de punten in de werkelijkheid en dat zo de eindigeelementenbeelden ingepast worden in onze metingen. Dit kunnen we doen door in MATLAB de functie procrustes te gebruiken. Deze functie bepaalt een transformatie die de oorspronkelijke punten zo dicht mogelijk bij de uiteindelijke punten legt. De transformatie bestaat uit een schaling, een rotatie en een translatie en kan daarna op de volledige eindige-elementenmatrix toegepast worden. (MATLAB-code in appendix A) Na de transformatie van alle beenderen naar hun uiteindelijke locatie krijgt men een beeld dat de werkelijkheid redelijk goed benaderd (Figuur 4.11)
41
Figuur 4.11: Voorstelling met de beenderen.
Zoals te zien is in Figuur 4.11 is de overeenkomst niet voor alle beenderen perfect. Vooral de thorax krijgt te maken met sterke afwijkingen. Het punt C7, bijvoorbeeld, dat normaal op het doornuitsteeksel van de 7de cervicale wervel moet liggen, ligt hier redelijk ver vandaan. De oorzaak hiervan is vooral de slechte palpatie van de punten, zowel bij het plaatsen van de markers als bij het manueel aanduiden van de punten op de eindige-elementenbeelden werden fouten gemaakt. De punten IJ, PX, C7 en T8 zouden eigenlijk in eenzelfde vlak moeten liggen, maar in werkelijkheid lagen ze in een getorst vlak. De functie procrustes werkt enkel met een uniforme schaling, een rotatie en een translatie en kan dus geen getorst vlak projecteren op een recht vlak. De passing van de andere beenderen in de metingen is veel bevredigender. Vooral voor de passing van de scapula is het belangrijk dat ze goed is, aangezien ze later gebruikt zal worden om een schatting te maken van de locatie van GH. Na visuele inspectie blijkt dat de passing van de scapula zeer bevredigend is. De fouten die hier gemaakt worden, hebben verder niet zoveel belang aangezien ze enkel invloed hebben op de visualisatie en niet op de verwerking van de gegevens en de uiteindelijk resultaten.
42
3.4
Bepalen van GH in het stl-bestand van de humerus
Om het eindige-elementenbeeld van de humerus te kunnen transformeren, is het nodig dat de positie van GH binnen de eindige-elementenmatrix gekend is. Het is niet mogelijk om GH handmatig aan te duiden omdat GH binnen in de humeruskop ligt. Om toch de positie van GH te bepalen, wordt aangenomen dat GH het centrum is van het bolvormig deel van de humeruskop. Door dan een bol te fitten met dit bolvormig deel en hiervan het centrum te bepalen, heeft men een heel goede schatting van de coördinaten van GH. (MATLAB-code in appendix A)
43
Figuur 4.12: De humerus met een bol gefit aan de humeruskop.
4. Bepaling van het glenohumeraal rotatiecentrum Zoals vermeld in paragraaf 2.35 ligt de oorsprong van het coördinatenstelsel voor de humerus in het glenohumeraal rotatiecentrum (GH). Een zo goed mogelijke benadering van GH is dus belangrijk voor de verdere verwerking van de gegevens en heeft een invloed op de accuraatheid van de resultaten.
Figuur 4.13: De correcte positie van de humeruskop (Argosy Publishing, Inc., 2007).
Als GH op de correcte plaats ligt, zou de kop van de humerus perfect moeten articuleren met de schouderholte (cavitas glenoidalis). De kop moet dan mooi tussen de acrominion en de processus coracoideus liggen. De juiste positie van de humeruskop is te zien op Figuur 4.13.
4.1
Bepaling d.m.v. regressie relatief t.o.v. de scapula
De eerste methode voor de bepaling van GH gaat uit van de positie van de punten op de scapula om van daaruit door middel van regressievergelijkingen de positie van GH te bepalen (Meskers, Vermeulen, de Groot, Van der Helm, & Rozing, 1998). De coördinaten gebruikt in de vergelijkingen zijn relatief ten opzichte van het coördinatenstelsel van de scapula: 𝐺𝐺𝐺𝐺𝑥𝑥 = 18.9743 + 0.2434𝑃𝑃𝑃𝑃𝑥𝑥 + 0.2341𝐴𝐴𝐴𝐴𝑥𝑥 + 0.1590‖𝐴𝐴𝐴𝐴 − 𝐴𝐴𝐴𝐴‖ + 0.0558𝑃𝑃𝑃𝑃𝑦𝑦
𝐺𝐺𝐺𝐺𝑦𝑦 = −3.8791 − 0.1002‖𝐴𝐴𝐴𝐴𝐴𝐴 − 𝑃𝑃𝑃𝑃‖ + 0.1732𝑃𝑃𝑃𝑃𝑦𝑦 − 0.3940‖𝐴𝐴𝐴𝐴𝐴𝐴 − 𝐴𝐴𝐴𝐴‖ + 0.1205𝐴𝐴𝐴𝐴𝑥𝑥 𝐺𝐺𝐺𝐺𝑧𝑧 = −9.2629 − 0.2403𝑃𝑃𝑃𝑃𝑦𝑦 + 1.0255𝑃𝑃𝑃𝑃𝑧𝑧 + 0.1720‖𝑇𝑇𝑇𝑇 − 𝑃𝑃𝑃𝑃‖
De International Shoulder Group stelt op zijn website de MATLAB-functie ghestnew.m ter beschikking die deze vergelijkingen implementeert (Chadwick, 2005).
44
Figuur 4.14: Positie van de humerus bij het bepalen van GH door regressie.
Zoals op Figuur 4.14 te zien is, is de positie van de humerale kop helemaal niet correct. De kop ligt te veel ventraal en mediaal. Omdat via deze methode de kop dus niet op de correcte plaats te krijgen was, werd besloten om van deze methode af te stappen. 45
4.2
Bepaling aan de hand van rotaties van de bovenarm
De tweede manier waarop GH benaderd wordt, behoort eigenlijk al tot de analyse van de dynamische beelden. Ze wordt hier toch beschreven omdat we ook voor de statische beelden een goede benadering van GH nodig hebben. Een tweede reden dat de methode hier al beschreven kan worden is omdat de dynamische beelden in dit geval niet bestudeerd worden met het oogpunt hoeken te bepalen, maar enkel voor het bepalen van GH. Een van de proeven die de personen moesten uitvoeren, was het maken van rotaties met kleine amplitude van de bovenarm. Het idee achter deze proef is dat de markers die dan aangebracht zijn op de bovenarm, namelijk BO, BB en De, bij het maken van deze beweging een bolvormige beweging maken rond GH (Figuur 4.15). De drie punten op de bovenarm beschrijven dus elk een gedeeltelijk boloppervlak. Men kan dan drie bollen fitten naar deze gegevens. (MATLAB-code in appendix A) Deze bollen zouden dan concentrisch moeten zijn en het gemeenschappelijk centrum van de drie bollen zou dan GH moeten zijn. In werkelijkheid waren de drie verkregen bollen niet concentrisch. Er werd beslist het gemiddelde van de drie middelpunten te beschouwen als de beste schatting voor GH.
Figuur 4.15: Positie humerus bij het bepalen van GH met de rotaties van de bovenarm.
Men kan zien dat de positie reeds een stuk verbeterd is. De plaats van de humeruskop is zeker nog niet ideaal, bij deze benadering van GH snijdt de humeruskop zelfs de processus coracoideus. Omdat de juiste positie van GH niet alleen belangrijk is voor een goede visualisatie, maar ook een belangrijke bouwsteen voor de verdere analyse is, is een accurate bepaling van GH toch belangrijk. Daarom konden we niet tevreden zijn met deze manier om GH te bepalen en moest gezocht worden naar een manier die de juiste positie van GH nog dichter benadert.
4.3
Bepaling met behulp van de stl-bestanden
Een interessante eigenschap van de stl-bestanden met de eindige-elementenbeelden van de beenderen is dat de verschillende beelden van de beenderen op de juiste manier ten opzichte van elkaar georiënteerd zijn. Dit betekent dus dat de aanpassing van de humeruskop aan de schouderholte in de originele stl-bestanden nagenoeg perfect is. (Figuur 4.16)
Figuur 4.16: Aanpassing van de humeruskop aan de schouderholte in de originele stl-bestanden.
46
Uit paragraaf 3.3 bleek dat de plaats van het eindige-elementenbeeld van de scapula na transformatie steeds accuraat is. Het is dan voldoende om op de coördinaten van het punt GH in de stl-file van de humerus, die verkregen werden in paragraaf 3.4, dezelfde transformatie toe te passen als op alle punten van de scapula. Het punt GH wordt gezien alsof het een vaste positie heeft ten opzichte van de scapula. Op Figuur 4.17 is te zien dat na het toepassen van deze methode er een goede aansluiting is van de humeruskop aan de schouderholte. Ook het toepassen van de transformatie op de humerus om deze op de juiste plaats te krijgen, heeft weinig invloed op de aansluiting. Deze aanpak geeft zeer bevredigende resultaten voor de positie van het glenohumeraal rotatiecentrum. Voor verdere verwerking zal dan ook steeds deze methode toegepast worden om GH te zoeken.
47 Figuur 4.17: Positie humerus bij bepaling van GH m.b.v. stl-bestanden.
HOOFDSTUK 5
Analyse van de dynamische gegevens
De beelden die verkregen werden tijdens de dynamische proeven zullen in dit hoofdstuk verwerkt worden. De term dynamisch wijst op het feit dat het over bewegende beelden gaat. Het gaat dus niet over dynamische proeven. Er wordt helemaal niet gekeken naar krachten op de onderzochte botten, noch naar interne, noch naar externe krachten. Omdat de gegevens die hier verwerkt worden steeds afkomstig zijn van bewegende beelden, is het niet eenvoudig om deze te illustreren. Een afbeelding van zo’n dynamisch beeld is enkel een momentopname en zegt redelijk weinig. Daarom zullen op de cd, die bij dit werk gegeven zal worden, enkele voorbeelden staan van deze dynamische beelden ter illustratie.
1. Aanvullen van ontbrekende gegevens Er werd reeds eerder gezegd dat de dynamische beelden minder informatie, in de vorm van markers, bevat dan de statische. De marker SC op de clavicula, de markers AA, AI, TS en PC op de scapula en de markers EM en EL op de humerus ontbreken. Deze markers zijn allemaal wel nodig om de Joint Coordinate Systems te bepalen. Daarom moet er een manier gevonden worden om deze markers over te brengen uit de statische metingen.
1.1
Overbrengen van gegevens van de statische naar de dynamische beelden
De veronderstelling die gemaakt wordt bij het overbrengen van deze gegevens, is dat ze steeds een vaste positie hebben ten opzichte van één van de JCS. Aangezien het JCS gekend is in de statische en de dynamische meting is het eenvoudig om de punten te transformeren. Men moet wel altijd zien dat het coördinaatsysteem waar men het punt naar refereert, gedefinieerd kan worden zonder het punt te kennen. Het punt SC, dat zo dicht mogelijk bij het sternoclaviculair gewricht ligt, wordt verondersteld weinig of niet te bewegen ten opzichte van de thorax. Men kan op het lichaam voelen dat de bewegingen in het punt SC zeer klein zijn, dus dat deze veronderstelling correct is. Men kan in de statische en dynamische beelden steeds het JCS van de thorax bepalen. De punten om dit te doen zijn steeds gekend. Dan moet men in het statische beeld de coördinaten van SC beschrijven in het lokaal coördinaatsysteem van de thorax. Dit doet men door een transformatie te maken van het globaal coördinaatsysteem (dit zijn de coördinaten die gegeven worden door Qualisys) naar het lokaal coördinaatsysteem van de thorax. Het opstellen van de transformatie zal uitgelegd worden in de volgende paragraaf.
48
In de dynamische beelden doen we dan de omgekeerde transformatie. De coördinaten, die beschreven zijn ten opzichte van het lokaal coördinaatsysteem, worden dan terug getransformeerd naar het globaal coördinaatstelsel. Voor het overbrengen van de punten van de scapula (AA, AI, TS en PC) is nog een bijkomende veronderstelling nodig. Zolang we niet geïnteresseerd zijn in de scapulaire rotaties, kunnen we er abstractie van maken. We veronderstellen dus dat de clavicula en de scapula vast aan elkaar verbonden zijn. Dit heeft als gevolg dat de punten van de scapula dan een vaste positie hebben ten opzichte van het lokaal coördinaatsysteem van de clavicula. De verdere overzetting van de punten van statisch naar dynamisch is dan hetzelfde. Voor het punt GH is de aanpak analoog, enkel is nu de veronderstelling dat GH een vaste positie heeft ten opzichte van het lokaal coördinaatsysteem van de scapula. Deze veronderstelling geeft eveneens een goede overeenkomst met de werkelijkheid. De punten EM en EL, vaste punten van de humerus, hebben enkel een vaste positie ten opzichte van het lokaal coördinaatsysteem van de humerus. Het probleem is dat om het lokaal coördinaatsysteem van de humerus te kennen, we de positie van EM en EL nodig hebben. Een eerste poging om dit op te lossen was het gebruik van een technisch coördinaatsysteem voor de humerus. Dit coördinaatsysteem werd beschreven in hoofdstuk 4, paragraaf 2.4.3. Dit coördinaatsysteem is vast verbonden aan de humerus en zou dus ideaal zijn om EM en EL over te plaatsen van de statische naar de dynamische meting. Uit proeven is echter gebleken dat deze methode, om een nu nog steeds onbekende reden, niet werkte. Er moest dus een andere manier gevonden worden om EM en EL over te plaatsen. Omdat we al goede resultaten hadden verkregen voor transformaties met de functie procrustes werd besloten om deze te gebruiken om EM en EL over te plaatsen. Deze functie bepaalt, als men de oude en nieuwe positie (dus deze in de statische en dynamische metingen) van een aantal punten kent, ook een transformatie tussen deze punten. We gebruiken de punten BO, BB, De en GH. Dit zijn allemaal punten die zowel in de statische als dynamische metingen bekend zijn. Daarna past men de transformatie, verkregen met procrustes, toe op de punten EM en EL.
1.2
De coördinatentransformatie
De transformatiematrix voor deze transformatie is zeer simpel op te stellen. Deze is namelijk opgesteld uit de eenheidsvectoren die het lokaal coördinaatsysteem voorstellen uitgedrukt ten opzichte van het globaal coördinaatsysteem (dat ook door drie eenheidsvectoren voorgesteld wordt). Een punt in de ruimte kan geschreven worden als een vector 𝑃𝑃 = [𝑥𝑥, 𝑦𝑦, 𝑧𝑧]. Stel dat de vector P,
voorgesteld ten opzichte van het globaal coördinaatsysteem, geschreven wordt als
𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔
𝑃𝑃 en
49
dezelfde vector P, maar geschreven in functie van het lokaal coördinaatsysteem, geschreven wordt als 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 𝑃𝑃. Dan kan de transformatie tussen beide vectoren geschreven worden als: 𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔
𝑃𝑃 =
𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙
𝑅𝑅 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 𝑃𝑃 +
𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔
𝑃𝑃𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙
𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜
𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔
Dit is de transformatie van het lokaal coördinaatsysteem naar het globaal. 𝑃𝑃𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 zijn de coördinaten van de oorsprong van het lokaal coördinaatsysteem beschreven ten opzichte van 𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔
het globaal coördinaatsysteem. De kolommen van de matrix 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 𝑅𝑅 zijn de eenheidsvectoren van het lokaal coördinaatsysteem beschreven ten opzichte van het globaal coördinaatsysteem. 𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙
𝑅𝑅 = �
𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔
𝑋𝑋𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙
𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔
𝑌𝑌𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙
𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔
𝑍𝑍𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 �
Voor de omgekeerde transformatie, van het lokaal naar het globaal coördinaatsysteem, moet de vergelijking gewoon opgelost worden naar 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 𝑃𝑃: 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙
𝑃𝑃 =
𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙
𝑅𝑅 −1 (
𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔
𝑃𝑃 −
𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔
𝑃𝑃𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙
𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜
)
Het grote voordeel dat we hebben is dat al onze coördinaatsystemen orthonormaal zijn. Dit heeft als gevolg dat de inverse van de transformatiematrix gelijk is aan de getransponeerde. (Craig, 1989) Deze beschrijving is gemaakt voor kolomvectoren. In dit onderzoek worden steeds rijvectoren gebruikt. Het enige gevolg dat dit heeft voor de vergelijkingen is dat ze volledig getransponeerd moeten worden. Dit betekent dat in coördinaatsysteem maar de rijen.
𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙
𝑅𝑅 niet de kolommen de eenheidsvectoren van het lokaal
De functies in MATLAB die de lokale coördinaatstelsel opstellen geven als output een matrix met als rijen de eenheidsvectoren die de drie assen voorstellen. Deze matrices kunnen dus gebruikt worden als de transformatiematrices. Deze transformaties kunnen ook gebruikt worden voor de transformatie van coördinaten tussen 𝑜𝑜𝑜𝑜𝑜𝑜 eender welke coördinaatstelsels. Zolang 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 𝑅𝑅 de matrix blijft die de vectoren van het nieuw coördinaatstelsel voorstellen ten opzichte van het oud coördinaatstelsel. Volgens Craig kan zo’n
transformatiematrix voorgesteld worden door 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 𝑅𝑅−1 𝑜𝑜𝑜𝑜𝑜𝑜 𝑅𝑅 (als de matrices steeds de eenheidsvectoren bevatten (in de kolommen) van de verschillende coördinaatsystemen geschreven ten opzichte van eenzelfde coördinaatsysteem). Omdat we steeds met orthonormale stelsels werken is de inverse van een matrix steeds de getransponeerde. Deze manier om een transformatiematrix te bepalen zal later nog gebruikt worden.
2. Euler en Cardan hoeken In de ISB standaard worden de rotaties rond de verschillende assen van de lokale coördinaatsystemen beschreven op een manier die gebaseerd is op de Euler hoeken. Daarom wordt hier een theoretische uiteenzetting gegeven van Euler hoeken en wordt daarna de toepassing door de ISB beschreven.
50
2.1
Theoretische beschouwing (Dunn & Parberry, 2002)
De transformaties die de relatie tussen de coördinaatsystemen van verschillende lichamen beschrijft bevat 9 parameters. Er zijn er echter slechts 3 die een pure rotatie beschrijven. We kunnen een 3x3 transformatie matrix dus beschrijven als 3 opeenvolgende rotaties. Deze hoeken kunnen op twee manieren geïnterpreteerd worden, als vast ten opzichte van de ruimte of als vast ten opzichte van het lichaam. Hoeken die vast zijn in de ruimte (of globale hoeken) refereren naar 3 orthogonale rotaties rond de globale coördinaatassen. Hoeken die vast zijn ten opzichte van de lichamen zijn rotaties rond assen die vast verbonden zijn aan de lichamen. Dit wordt geïllustreerd in respectievelijk Figuur 5.1 en Figuur 5.2.
Figuur 5.1: Hoeken vast in de ruimte.
51
Figuur 5.2: Hoeken vast aan een lichaam.
De beide notaties zijn sequentie-afhankelijk, dit wil zeggen dat de transformatie afhankelijk is van de volgorde waarin de rotaties toegepast worden. De notatie vast aan het lichaam wordt de sequentie van Euler hoeken (of –rotaties) genoemd. Cardan hoeken zijn een sequentie van Euler hoeken die plaats vindt rond alle drie de assen vast verbonden aan het segment in een bepaalde volgorde. NietCardanische sequenties hebben steeds dezelfde eerste en laatste rotatie-as. Als we het systeem {A} (initieel samenvallend met {G}) roteren rond de X G -as over een hoek α dan worden de Y’ A en Z’ A -as: 0 0 (𝛼𝛼)� en 𝑍𝑍′𝐴𝐴 = � sin (𝛼𝛼) � 𝑌𝑌′𝐴𝐴 = �cos sin (𝛼𝛼) −cos (𝛼𝛼)
Dus wordt de rotatiematrix rond de X-as over een hoek α: 1 0 (𝛼𝛼) 𝑅𝑅𝑋𝑋 (𝛼𝛼) = �0 cos 0 sin (𝛼𝛼)
0 −sin (𝛼𝛼)� cos (𝛼𝛼)
Equivalente uitdrukkingen voor rotaties rond de Y en Z-as zijn: cos (𝛽𝛽) 0 𝑅𝑅𝑌𝑌 (𝛽𝛽) = � −sin (𝛽𝛽)
0 1 0
sin (𝛽𝛽) cos (𝛾𝛾) 0 � en 𝑅𝑅𝑍𝑍 (𝛾𝛾) = � sin (𝛾𝛾) cos (𝛽𝛽) 0
−sin (𝛾𝛾) cos (𝛾𝛾) 0
0 0� 1
De volledige transformatie, zoals getoond in Figuur 5.2 kan dan geschreven worden als: 𝐺𝐺 𝐴𝐴 𝑅𝑅𝑋𝑋𝑋𝑋𝑋𝑋
= 𝑅𝑅𝑋𝑋 (𝛼𝛼) ∙ 𝑅𝑅𝑌𝑌 (𝛽𝛽) ∙ 𝑅𝑅𝑍𝑍 (𝛾𝛾)
Als we dan de matrices invullen, cos schrijven als c en sin als s (voor beknoptheid) dan wordt dit:
𝐺𝐺 𝐴𝐴 𝑅𝑅𝑋𝑋𝑋𝑋𝑋𝑋
𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 = � 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 + 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 −𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 + 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠
−𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 −𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 + 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 + 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠
𝑠𝑠𝑠𝑠 −𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 � 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐
Als de transformatiematrix geschreven is in de hierboven getoonde vorm, dan kunnen de Euler hoeken afgeleid worden uit de matrix elementen. Vanzelfsprekend zijn er 12 verschillende sequenties van Euler hoeken (waarvan 6 Cardanische) en elke sequentie resulteert in een verschillende matrix. De methoden om de Euler hoeken te extraheren uit de transformatiematrices werden reeds geprogrammeerd door de ISG (Chadwick, 2005). Euler hoeken hebben echter een groot nadeel: gimbal lock. Dit doet zich voor wanneer twee van de vrijheidsgraden in het gedefinieerde gewricht gealinieerd zijn (Figuur 5.3). Deze manipulator heeft een X, Y’, Z’’ sequentie en wanneer de Y’-rotatie ± 90° is, zijn de X en Z’’-gewrichten gealinieerd en kunnen er rotaties zijn in beide gewrichten zonder dat de eindoriëntatie van de effector veranderd.
Figuur 5.3: Gimbal Lock bij een X, Y', Z'' sequentie van Euler hoeken.
52
Dit fenomeen is veel voorkomend bij alle Cardanische en niet-Cardanische sequenties van Euler hoeken en er zijn steeds twee gimbal lock posities, gescheiden door 180°, in de tweede rotatie. Dit effect is niet enkel een singulariteit in de afgeleide Euler hoeken voor een gegeven oriëntatie matrix, maar het versterkt ook kleine fouten in de matrixelementen dicht bij d gimbal lockposities.
2.2
Toepassing op de Joint Coordinate Systems
Er kan verwarring ontstaan als men de beweging van twee coördinaatsystemen, vast aan een lichaam, beschrijft met een sequentie van Euler hoeken. Daarom wordt in de standaard, opgesteld door de ISB, ook de methode opgenomen om de positie en oriëntatie van de gewrichten te beschrijven (Wu, et al., 2005). De methode die beschreven wordt in de standaard is heel gelijkaardig aan een Cardanische sequentie van Euler hoeken. De JCS beschrijft steeds de rotatie van een distaal segment {D} in relatie tot een proximaal segment {P} in termen van rotaties rond een proximaal gehechte as e 1 , een distaal gehechte as e 3 en een gemeenschappelijke loodrechte as e 2 = e 3 x e 1 . (Figuur 5.4)
53
Figuur 5.4: Basis van de JCS - 3 orthogonale rotaties.
Voor de verschillende segmenten in het schouder-arm-complex worden de rotaties en hun volgorde verschillende gedefinieerd. De definitie is steeds zo dat de rotaties, en hun volgorde, de werkelijkheid zo dicht mogelijk benaderen. Er is onderzoek gedaan naar de verschillende sequenties van de rotaties in elk gewricht, hieruit zijn de ideale rotatievolgorden gebleken (Karduna, McClure, & Michener, 2000) Hierna zal een overzicht gegeven worden van de bewegingen die tijdens dit onderzoek bekeken worden. Omdat de programma’s van de ISG geschreven zijn volgens de standaard is het belangrijk te vermelden dat α steeds een rotatie rond de Z-as is, β rond de X-as en γ rond de Y-as, onafhankelijk van de volgorde van de rotaties.
2.2.1
Beweging van de thorax relatief t.o.v. het globaal coördinaatsysteem (Z-X-Y volgorde, Figuur 5.5)
De as die samenvalt met de Z g -as van het globaal coördinaatsysteem is e 1 , de rotatie rond deze as (α GT ) is flexie (negatief) of extensie (positief). De e 3 -as is de as gehecht aan de thorax en samenvallend met de Y t -as. De rotaties rond deze as (γ GT ) zijn de axiale rotatie naar links (positief) of naar rechts (negatief). e 2 is de gemeenschappelijke as loodrecht op e 1 en e 3 (i.e. de geroteerde X t -as van de thorax). De rotaties (β GT ) zijn de laterale flexie van de thorax, naar rechts is positief, naar links is negatief.
Figuur 5.5: De rotaties van de thorax. V.l.n.r. flexie/ extensie, axiale rotatie, laterale flexie.
2.2.2
Beweging van het sternoclaviculair gewricht (clavicula relatief t.o.v. de thorax, Y-X-Z volgorde, Figuur 5.6)
e 1 is de as vast aan de thorax en samenvallend met de Y t -as van het coördinaatsysteem van de thorax. De rotaties (γ SC ) zijn retractie (negatief) en protractie (positief). De e 3 -as is vast aan de clavicula en valt samen met de Z c -as van het coördinaatsysteem van de clavicula. De rotaties (α SC ) zijn de axiale rotatie van de clavicula, rotatie van de top naar achter is positief, naar voor is negatief. De gemeenschappelijke as e 2 staat loodrecht op e 1 en e 3 , het is de geroteerde X c -as. De rotaties (β SC ) zijn de elevatie (negatief) en depressie (positief).
Figuur 5.6: De rotaties van de clavicula. V.l.n.r. Protractie /retractie, elevatie, axiale rotatie.
54
2.2.3
Beweging van het acromioclaviculair gewricht (scapula relatief t.o.v. de clavicula, Y-X-Z volgorde, Figuur 5.7)
Als de veronderstellingen goed geïmplementeerd zijn, zou er geen beweging van de scapula ten opzichte van de clavicula mogen zijn. De rotaties worden toch bekeken ter controle. De e 1 -as is vast aan de clavicula en valt samen met de Y c -as van het coördinaatsysteem van de clavicula. De rotaties (γ AC ) zijn de AC retractie (negatief) of de AC protractie (positief). De scapula is meestal in retractie. e 3 is de as vast aan de scapula en samenvallend met de Z s -as van het coördinaatsysteem van de scapula. De rotaties (α AC ) zijn de AC anterieure (negatief) of AC posterieure (positief) tilt. De scapula is meestal posterieur getilt. e 2 is de gemeenschappelijke as loodrecht op e 1 en e 3 . Het is de geroteerde X s -as van het coördinaatsysteem van de scapula. De rotaties (β AC ) zijn de AC laterale (negatief) of AC mediale (positief) rotatie. De scapula is meestal lateraal geroteerd.
55
Figuur 5.7: Rotaties van de scapula. V.l.n.r. Protractie /retractie, laterale rotatie, A /P tilt.
2.2.4
Beweging van de humerus relatief t.o.v. de thorax (Y-X-Y volgorde, Figuur 5.8)
Dit is het enige gewricht waar de beweging gebaseerd is op een sequentie van Euler rotaties. Omdat e 1 en e 3 in dezelfde richting starten kan de normale aanpak niet gebruikt worden. In plaats daarvan wordt Euler decompositie gebruikt om de corresponderende hoeken te vinden. De clinici termen flexie en abductie worden vermeden omdat flexie gevolgd door abductie radicaal verschillend is van abductie gevolgd door flexie. e 1 is de as vast aan de thorax en samenvallend met de Y t -as van het coördinaatsysteem van de thorax. De rotatie (γ h ) bepaald het vlak van elevatie, 0° is abductie, 90° is ante- of retroflexie. De e 3 -as is de axiale rotatie rond de Y h -as. De rotaties (y h ) 2 zijn de endorotatie (positief) en de exorotatie (negatief). De e 2 -as is vast aan de humerus en valt samen met de X h -as van het coördinaatsysteem van de humerus. De rotatie (β h ) is de elevatie (negatief).
Figuur 5.8: Rotaties van de humerus. V.l.n.r. vlak van elevatie, elevatie, axiale rotatie.
2.2.5
Beweging van het ellebooggewricht (voorarm relatief t.o.v. de humerus, Z-X-Y volgorde)
De e 1 -as is vast aan de humerus en valt samen met de Z h -as van het coördinaatsysteem van de humerus. De rotaties (α HF ) zijn de flexie (positief) en de hyperextensie (negatief). e 3 is de as vast aan de voorarm en samenvallend met de Y f -as. De rotaties (γ HF ) zijn de axiale rotaties van de voorarm, pronatie (positief) en supinatie (negatief). De derde as wordt niet gebruikt omdat er eigenlijk maar twee bewegingen mogelijk zijn in het ellebooggewricht. De bewegingen in de derde richting zouden zo klein zijn dat er geen onderscheid gemaakt zou kunnen worden tussen deze bewegingen en ruis op het signaal. 2.2.6
Beweging van de pols (hand relatief t.o.v. de voorarm, Y-X-Z volgorde)
e 1 is de as vast aan de voorarm en samenvallende met de Z f -as. De rotaties (α FHa ) zijn de flexie (positief) en extensie (negatief). De e 3 -as is de as vast aan de hand en samenvallende met Y ha van het coördinaatsysteem van de hand. De rotaties (γ FHa ) zijn de rotaties (pronatie en supinatie). Supinatie is de negatieve rotatie. Omdat we de beweging van de hand bekijken ten opzichte van de pols, zal hier geen beweging waarneembaar zijn. Pronatie en supinatie zijn namelijk bewegingen die met de hand en voorarm samen gedaan worden. De gemeenschappelijke as e 2 staat loodrecht op e 1 en e 3 . De rotaties (β FHa ) zijn de radiale deviatie (negatief) en de ulnaire deviatie (positief).
56
3. Voorbereidingen voor de rotaties bepaald kunnen worden Er zijn matrices opgesteld die de eenheidsvectoren bevatten van alle coördinaatsystemen in de statische en de dynamische metingen. Als men nu voor elk gewricht deze matrix van de statische en de dynamische meting vermenigvuldigt, krijgt men de rotatiematrix die de transformatie bepaalt tussen het statisch en het dynamisch assenstelsel (zie paragraaf 1.2). Het is goed mogelijk dat door de bewegingen, de oorsprong van het statisch en het dynamisch assenstelsel niet meer samenvallen. Om de juiste rotatiematrix te verkrijgen is het wel noodzakelijk dat beide assenstelsels een gemeenschappelijke oorsprong hebben. Dit probleem is eigenlijk reeds op voorhand opgelost, aangezien de vectoren in de rijen van de matrices allemaal gedefinieerd zijn ten opzichte van de globale oorsprong. Ze worden pas later naar de lokale oorsprong verschoven voor de visualisatie. Het statisch en het dynamisch assenstelsel, gedefinieerd door hun respectievelijke matrices hebben dus dezelfde oorsprong. De transformatie, gedefinieerd door het product van beide matrices, bestaat dus enkel uit rotaties rond de verschillende assen. Voor het afbeelden van de verschillende botten worden dezelfde rotatiematrices gebruikt. Het enige verschil nu is dat de beenderen reeds op hun plaats liggen. De assenstelsels zijn dus, als het ware, reeds naar de lokale oorsprong verschoven. De oplossing hiervoor is dat men het dynamisch assenstelsel telkens verschuift naar de oorsprong van het statisch assenstelsel. Op deze manier krijgen beide assenstelsels dezelfde oorsprong en kunnen de rotaties uitgevoerd worden. Een uitzondering op dit laatste zijn de rotaties van de voorarm en de hand. De assenstelsels van deze segmenten liggen ver van de plaats waar de rotaties echt plaats vinden. Het assenstelsel van de voorarm ligt in US, terwijl het centrum van de rotaties in de buurt ligt van
𝐸𝐸𝐸𝐸+𝐸𝐸𝐸𝐸+𝑂𝑂𝑂𝑂 3
ligt het assenstelsel in CM3, terwijl het centrum van de rotaties in de buurt van
. Voor de hand
𝑈𝑈𝑈𝑈+𝑅𝑅𝑅𝑅 2
ligt. Om een
betere visualisatie van deze twee lichaamssegmenten te verkrijgen, werden de assenstelsels naar de respectievelijke punten waar de echte rotatie plaats vindt, verschoven. Deze oplossing is de uitkomst van het uittesten van verschillende mogelijkheden. Verder zijn we steeds enkel geïnteresseerd in lokale bewegingen. Als men telkens het statisch met het dynamisch assenstelsel zou vergelijken, incorporeert men ook steeds de bewegingen van de proximale segmenten. Bijvoorbeeld: bij sommige personen was de beginstand van waaruit de bewegingen gedaan werden over 90° gedraaid ten opzichte van het statische beeld. Dit betekent een axiale rotatie van de thorax over 90°. Als men deze beweging niet zou aftrekken van de verdere lichaamsdelen zou men bij elke rotatie rond een verticale as een extra rotatie van 90° hebben. Om dit op te lossen is het voldoende om de transformatiematrix te voorvermenigvuldigen met de inverse van de transformatiematrix van het proximale segment. Voor de clavicula betekent dit dat de transformatiematrix vermenigvuldigd wordt met de inverse van de transformatiematrix van de thorax. De matrix van de scapula wordt vermenigvuldigd met de inverse matrix van de clavicula. Omdat we voor de humerus slechts geïnteresseerd zijn in bewegingen ten opzichte van de thorax, is dat op dat moment het proximaal segment en moet dus voorvermenigvuldigd worden met de inverse matrix van de thorax. Voor de voorarm moet de matrix vermenigvuldigd worden met de
57
inverse van de matrix van de humerus en voor de hand, tenslotte, moet de matrix vermenigvuldigd worden met de inverse van de matrix van de voorarm. Na het uitvoeren van al deze voorbewerkingen heeft men de lokale transformatiematrix. De verschillende rotatiehoeken kunnen dan bepaald worden door gebruik te maken van functies die ter beschikking gesteld worden door het ISG (Chadwick, 2005). Deze functies bepalen de hoeken α, β en γ (of in het geval van de humerus γ 1 , β en γ 2 ) rekening houdend met de uitzonderingen, die kunnen optreden als de hoeken in de buurt komen van een meervoud van 90° (Craig, 1989). De berekende hoeken worden dan in vectoren weggeschreven en in MAT-files opgeslagen voor verdere verwerking. Deze verdere verwerking bestaat uit het plotten van de gegevens zodat hier de conclusies uit getrokken kunnen worden. De resultaten en conclusies zullen besproken worden in het volgende hoofdstuk. (De MATLAB-code is te vinden in appedix A)
58
HOOFDSTUK 6
Resultaten en conclusies
Uit de dynamische analyse werden de hoeken verkregen waarrond de verschillende segmenten roteren. Voor elk coördinaatsysteem werden drie hoeken verkregen, één voor een rotatie rond elke as van het coördinaatsysteem. In dit hoofdstuk wordt het verloop van deze hoeken bekeken en worden de conclusies die hieruit verkregen worden, vergeleken met de resultaten die verkregen werden in gelijkaardig onderzoeken. Er mag niet vergeten worden dat deze resultaten voortkomen uit de proeven die door een enkele persoon gedaan werden. De resultaten die bekomen worden zijn dus zeker niet representatief, maar ze zouden reeds een indicatie moeten geven van hoe correct dit onderzoek uitgevoerd werd. Het is goed mogelijk dat resultaten, die in deze bespreking nog sterk afwijken van deze uit de literatuur, na een statistische analyse van alle resultaten uit het onderzoek toch een correcte uitkomst geven.
1. De ROM bewegingen De ROM bewegingen bevatten voor elke segment de rotaties die rond één enkele as gebeuren. Al deze bewegingen werden reeds uitvoerig besproken in hoofdstuk 2, paragraaf 4. Daarom zijn de resultaten uit deze onderzoeken ideaal om te bepalen welke grafieken bij welke hoeken horen. Uit de grafieken kunnen ook eventuele tekenveranderingen of verschuivingen bepaald worden zodat de gegevens overeen komen met de standaard opgesteld door de ISB (zie hoofdstuk 5, paragraaf 2.2). Men kan intuïtief aanvoelen dat, als men een cyclische beweging uitvoert rond één as, men één sinusoïdale kromme en twee vlakken krommen moet krijgen. In de figuren in deze paragraaf is duidelijk te zien dat dit in ons onderzoek niet het geval is. De reden hiervoor is drieledig: Ten eerste werden de markers niet met de nodige zorg aangebracht tijdens de proeven. Hierdoor hebben we tijdens het onderzoek niet steeds de goede coördinaten van de anatomische referentiepunten. Dit heeft tot gevolg dat de lokale assenstelsels, die bepaald worden op basis van deze coördinaten, niet altijd de juiste oriëntatie hebben. Een verder gevolg hiervan is dat de coördinaatassen niet altijd liggen volgens de assen waarrond de echte rotaties gebeuren. Ten tweede waren de markers te vaak niet zichtbaar voor genoeg camera’s. Hierdoor ontstonden gaten in de gegevens. In de voorverwerking werden deze gaten gereconstrueerd, maar niet altijd op de juiste wijze. Hierdoor zijn op bepaalde momenten de plaatsen van belangrijke markers helemaal niet juist. Een goed voorbeeld hiervan is te zien in het filmpje met de naam ROM upper arm anteflexion-retroflexion Qualisys dat te vinden is op de bijgeleverde cd. In het filmpje is te zien dat de marker BB helemaal niet op de correcte plaats ligt. Aangezien het hier over een beweging van de
59
bovenarm gaat en BB, onrechtstreeks, nodig is voor het bepalen van het lokaal coördinaatsysteem van de bovenarm, heeft dit grote gevolgen voor de juistheid van de resultaten. Een derde reden voor de resultaten is dat de proefpersonen de proeven niet op de correcte manier uitvoerden. Om goede resultaten te verkrijgen is het belangrijk dat de beweging gedaan wordt in een vlak dat loodrecht op de as staat. In de bestanden ROM wrist flexion-extension en ROM wrist ulnarradial deviation (te vinden op de cd) is duidelijk te zien dat dit niet altijd het geval was.
1.1
De bewegingen van de pols (hand relatief t.o.v. de voorarm)
De resultaten die bekomen werden bij het doen van de ROM bewegingen van de pols worden weergegeven in Figuur 6.1. De eerste vijf cycli van de figuur zijn het resultaat van de flexie-extensie, de volgende vijf zijn het resultaat van de ulnaire en radiale deviatie. Deze bewegingen moeten samen bekeken worden om een besluit te kunnen maken over welke kromme, welke hoek voorstelt. De legende geeft weer welke hoek bij welke beweging hoort. In de loop van deze paragraaf zal uitgelegd worden hoe men tot deze besluiten gekomen is.
60
Figuur 6.1: De resultaten van de bewegingen van de pols.
De hand kan, ten opzichte van de pols, twee bewegingen maken: enerzijds de flexie en de extensie en anderzijds de ulnaire en radiale deviatie. Bij de flexie en extensie beweegt het gewricht enkel rond de Z ha -as, de hoekverdraaiing rond een Z-as wordt steeds α genoemd (zie hoofdstuk 5, paragraaf 2.2). In de figuur is te zien dat de rode kromme een duidelijk sinusoïde vormt tijdens de flexie en extensie, dit is dus de kromme die α FHa voorstelt. Uit de kromme zijn reeds een aantal conclusies te trekken. De beweging startte met een flexie van de pols, de standaard zegt dat flexie een positieve hoek oplevert, dus dit is correct. Verder zien we dat de beweging in de beide richtingen tot ongeveer 45° gaat. De maximale uitwijking voor flexie is 52,34°, de gemiddelde maximale uitwijking voor flexie over de vijf cycli is 48,19°. Voor de extensie is
de maximale uitwijking -49,55° (extensiehoeken zijn negatief), de gemiddelde maximale uitwijking over de vijf cycli is -47,9°. In de literatuur is te vinden dat de maximale uitwijking in beide richtingen 85° is (Kapandji, 1980), de grote afwijkingen tussen dit onderzoek en de literatuur hangen samen met wat de andere kromme doet tijdens deze beweging. Zoals eerder gezegd zou de kromme voor de deviaties, als de beweging perfect uitgevoerd wordt, vlak moeten zijn. Dat dit niet het geval is, wijst erop dat de beweging niet in een vlak loodrecht op de Z ha -as gebeurd is maar in een vlak dat een hoek maakt met de as. De redenen voor deze afwijkingen werden uitgelegd in paragraaf 1. Als de bewegingen niet loodrecht op de as gebeuren, gaat een deel van de rotatiehoek verloren en dit is duidelijk te zien in de hier geformuleerde resultaten. De groene kromme stelt de rotaties rond de X ha -as voor. De positieve uitwijking is de ulnaire deviatie, de negatieve de radiale. De hoek wordt β FHa genoemd. Uit de laatste vijf cycli, die in Figuur 6.1 te zien zijn, kan men opmaken dat de maximale uitwijking voor de ulnaire deviatie 27,23° is, de gemiddelde maximale uitwijking is 25,59°. Voor de radiale deviatie is de maximale uitwijking -17,42°, de gemiddelde maximale uitwijking is -15,23°. In de literatuur (Kapandji, 1980) is te vinden dat de maximale uitwijking in ulnaire richting 45° is, die in radiale richting 15°. De waarden voor de ulnaire deviatie zijn ook hier weer te laag, die voor de radiale deviatie komen overeen met de waarden uit de literatuur. Ook hier weer is dit te wijten aan de assen die niet gelegen zijn volgens de echte assen van rotatie. In het filmpje ROM wrist ulnar-radial deviation is duidelijk te zien dat deze beweging uitgevoerd werd in een vlak dat niet in het verlengde van de onderarm ligt. Hierdoor zijn de rotaties niet rond één enkele as, maar zijn ze een combinatie van rotaties rond de verschillende assen. Een voorbeeld dat de problemen met de foute rotaties goed illustreert is te vinden in de kromme voor de pronatie en supinatie, ook afgebeeld in Figuur 6.1. De hand kan eigenlijk deze beweging helemaal niet uitvoeren ten opzichte van de onderarm, het is een beweging die door de hand en de onderarm samen gedaan wordt. De grote fluctuaties in deze kromme zijn dus te wijten aan de slechte gegevens.
1.2
De bewegingen van de elleboog (voorarm relatief t.o.v. de humerus)
In Figuur 6.2 zijn de resultaten te zien die bekomen werden uit de proeven die gedaan werden met de elleboog. Met de elleboog zijn eigenlijk maar twee bewegingen mogelijk, de flexie en extensie rond de Z-as en de pronatie en supinatie rond de Y-as. De resultaten van de derde beweging worden ook afgebeeld om aan te tonen dat de assen ook hier niet volgens de echte rotatie-assen gelegen zijn en de verschillende bewegingen dus samenstellingen van rotaties rond verschillende assen zijn. De eerste vijf cycli uit de figuur stellen de pronatie en supinatie voor, de laatste vijf de flexie en extensie. De pronatie en flexie geven positieve hoeken, de supinatie en extensie geven negatieve hoeken. De hoeken voor flexie en extensie zijn relatief ten opzichte van de startpositie van de arm, in de literatuur wordt deze positie reeds beschreven als 90° flexie.
61
Figuur 6.2: De resultaten van de bewegingen van de elleboog.
De groene kromme stelt de pronatie en supinatie voor. Dit is de beweging van de onderarm rond de Y f -as, de hoek wordt γ HF genoemd. Uit de figuur en het filmpje ROM forearm pronation-supination is te zien dat de beweging start vanuit ongeveer 10° pronatie. Om de absolute maximale uitwijkingen te kennen, moeten van dus steeds 10° optellen bij de maximale hoeken die gevonden worden uit de figuur. Zo bekomen we voor de maximale pronatie van de voorarm een hoek van 57,48° en een gemiddelde maximale uitwijking over de vijf cycli van 54,15°. Voor de supinatie vinden we een maximale uitwijking van -90,71° en een gemiddelde maximale uitwijking van -56,41°. In de literatuur (Kapandji, 1980) is te vinden dat de maximale uitslag voor supinatie 90° is en die voor pronatie 85°. Voor zowel de pronatie als de supinatie zijn de gemiddelde maximale uitwijkingen vel kleiner (ongeveer 55°), dus ook hier verliezen we verdraaiing doordat de beweging eigenlijk bestaat uit opeenvolgende rotaties rond de opeenvolgende assen. Dit is ook te zien in de figuur, waar we fluctuaties hebben voor de drie hoeken. In het tweede deel van de figuur zijn twee dingen te zien: ten eerste stelt de rode kromme de flexie en extensie voor, ten tweede is te zien dat de bewegingen uitgevoerd werden terwijl de onderarm in supinatie was. De groene kromme fluctueert in het tweede deel van de kromme duidelijk rond -52°, de onderarm was dus in 42° supinatie. Als men de 56,41° uit de vorige alinea beschouwd als volledige supinatie, kan men zeggen dat de onderarm bijna volledig gesupineerd was. De rode kromme is dus de relatieve flexie en extensie uit de startpositie (90° flexie). Het is de beweging rond Z-as. We zullen de waarden niet omrekenen naar absolute flexie en (hyper-) extensie, omdat de laatste beweging weinig voorkomt. De maximale relatieve flexie is 90,73°, de gemiddelde maximale flexie over de vijf cycli is 80,3°. De maximale relatieve extensie is -55,3°, de gemiddelde maximale extensie is -51,11°.
62
In de literatuur is te vinden dat de arm vanuit de startpositie hier 90° kan extenderen en 70° kan flecteren. De flexie in dit onderzoek is te groot en de extensie is te klein. We zien dat in dit geval de interferentie van de andere rotaties klein is, een conclusie die hieruit getrokken kan worden is dat de startpositie voor de bewegingen niet met de arm 90° geflecteerd was.
1.3
De beweging van de bovenarm (humerus relatief t.o.v. van de thorax)
In Figuur 6.1 zijn de resultaten te zien van de elevaties van de bovenarm. De eerste vijf cycli zijn de resultaten van de elevatie van de arm in het frontaal vlak, de volgende vijf cycli zijn de elevaties in het scapulair vlak en de laatste vijf cycli zijn de resultaten van de anteflexie van de arm. De hoeken die hier afgebeeld zijn, zijn geen individuele rotaties rond de verschillende assen van het lokaal coördinaatsysteem, maar het is de ontbinding in Euler hoeken van de bewegingen die door de arm gemaakt werden. Er zijn twee rotaties rond de Y-as, deze die het vlak van elevatie bepaald en de endorotatie en exorotatie en één rotatie rond de Z-as, de elevatie.
63
Figuur 6.3: Resultaten van de elevaties van de bovenarm.
De interpretatie van de rode kromme is betrekkelijk eenvoudig. Voor de drie verschillende elevaties is er een uitwijking van de hoek tussen 0° en ongeveer -90° (de elevatie is een uitwijking in negatieve richting). Voor de elevatie in het frontaal vlak, de abductie van de arm eigenlijk) is de maximale uitwijking -88,84°, de gemiddelde maximale uitwijking over de vijf cycli is -77,21°. In de literatuur is te vinden dat deze uitwijking maximaal 180° kan bereiken. Voor de elevatie in het scapulair vlak is de maximale uitwijking -92,8°, de gemiddelde maximale uitwijking mag slechts berekend worden over drie cycli, de eerste twee en de laatste. De twee middelste metingen waren van heel slechte kwaliteit. In het filmpje ROM upper arm elevations
scapular plane is te zien dat dit te wijten is aan de slechte reconstructie van de gaten in de kromme van BB. De gemiddelde waarde is dan -72,74°. Voor de elevatie in het sagittaal vlak werd enkel anteflexie gedaan, de minimale hoek van elevatie is dus 0°. De retroflexie van de arm werd niet bekeken. De maximale uitwijking van de arm voor de anteflexie is -102,8°, de gemiddelde maximale uitwijking over de vijf cycli is -67°. De literatuur zegt dat deze beweging tot 180° kan gaan. Dus ook hier onderschatten de berekeningen de uitwijking. Ook hier lijkt dit te wijten aan de bedenkelijke kwaliteit van de metingen. De interpretatie van de andere krommen is zeer moeilijk, de blauwe kromme is het vlak van elevatie, deze zou continue 0° moeten zijn voor de elevatie in het frontaal vlak, 30° voor de elevatie in het scapulair vlak en 90° voor de anteflexie. Men kan duidelijk zien dat dit helemaal niet het geval is, voor het frontaal en het scapulair vlak ligt de kromme op ongeveer -110° (zonder de fluctuaties te beschouwen) en voor het sagittaal vlak ligt de kromme ongeveer op 0°. Men zou kunnen zeggen dat de kromme verschoven is over ±90°, maar dan klopt de locatie van de kromme voor de elevaties in het scapulair vlak nog steeds niet. De kromme voor de endo- en exorotatie zou eigenlijk 0° moeten zijn over de volledige sequentie. Men kan duidelijk zien dat dit niet het geval is. De twee krommen lijken gespiegeld ten opzichte van de horizontale as. De twee rotaties rond de Y-as lijken dus sterk te interfereren met elkaar. Dit wordt ook duidelijk aangetoond als men kijkt naar de krommen voor de rotaties van de bovenarm (Figuur 6.4).
Figuur 6.4: Resultaten voor de rotaties van de bovenarm.
64
De eerste vijf cycli zijn de exo- en endorotatie van de bovenarm met de humerus in 0° abductie, de volgende vijf cycli staan voor de abductie en adductie in het horizonaal vlak en de laatste vijf cycli beelden de exo- en endorotatie van de bovenarm uit met de humerus in 90° abductie. Ook hier klopt die kromme van de elevatie. De elevatie is nul voor de eerste vijf cycli en wordt -60° voor de twee andere bewegingen. Deze waarden worden bekomen als men abstractie maakt vn de fluctuaties van deze krommen. Ook hier is te zien dat de andere twee krommen een verloop hebben dat niet strookt met de werkelijkheid. In de eerste en laatste vijf cycli moet de groene kromme, voor de exo- en endorotatie, variëren rond de nul, met ongeveer even grote uitwijkingen in beide richtingen, terwijl de blauwe kromme vlak moet zijn. Voor de middelste vijf cycli moet de groene kromme vlak blijven en moet de blauwe kromme variëren rond nul. Dit is helemaal niet het geval, de beide krommen blijven een gelijkaardig verloop vertonen als bij de elevaties. Ook hier lijken de twee kromme ongeveer gespiegeld ten opzichte van de horizontale as. Dit kan wijzen op een fout in de wijze waarop deze hoeken berekend werden. De standaard van ISG werd echter strikt gevolgd in de berekeningswijze en de functies die ter beschikking gesteld werden door ISG werden gebruikt. Deze methode en deze functies werden echter reeds met succes gebruikt in andere onderzoeken (Magermans, Chadwick, Veeger, & van der Helm, 2005). We moeten dus ook hier weer besluiten dat de resultaten enkel een gevolg kunnen zijn van de bedenkelijke kwaliteit van de gegevens.
1.4
De bewegingen van de schouder
De schouder kan twee verschillende bewegingen doen: de depressie en elevatie en de protractie en retractie. In de proeven kan men aan het hand van deze bewegingen de maximale uitwijkingen van de clavicula bekijken. In Figuur 6.5 zijn de resultaten van deze bewegingen te zien. De eerste vijf cycli zijn de depressie en elevatie van de schouder, de laatste vijf cycli zijn de resultaten van de protractie en retractie van de schouder. In het filmpje ROM shoulder depression-elevation kan men zien dat de beweging begint met een elevatie, het klopt dus dat de curve eerst naar negatieve kant uitwijkt. De maximale elevatie van de clavicula is -34,34°, de gemiddelde maximale elevatie is -33,87°. De maximale depressie van de clavicula is 5,55°, de gemiddelde maximale depressie is 5,18°. Er werden in de literatuur geen waarden gevonden waarmee deze waarden vergeleken kunnen worden, maar aangezien de interferentie van de andere krommen redelijk klein is (vergeleken met deze in de andere bewegingen) en omdat de waarden ongeveer stroken met wat men intuïtief aanvoelt. Kan men deze resultaten als redelijk nauwkeurig beschouwen. De tweede bewegingssequentie begon met een retractie van de schouder, wat een negatieve uitwijking oplevert. De maximale retractie van de clavicula is -27,68°, de gemiddelde maximale retractie is -24,3°. De maximale protractie is 17,68°, de gemiddelde maximale protractie is 16,01°.
65
Uit de literatuur weten we dat de protractie een groter bereik moet hebben dan de retractie. In dit geval is het net omgekeerd. Dit kan erop wijzen dat de neutrale stand van de schouder niet op 0° lag. Uit de filmpjes kan niet echt goed uitgemaakt worden of dit het geval was.
Figuur 6.5: De resultaten van de bewegingen van de schouder.
1.5
Het acromioclaviculair gewricht (scapula relatief t.o.v. de clavicula)
We hebben aangenomen dat de scapula niet mag bewegen ten opzichte van de clavicula. Uit alle resultaten bleek dat deze aanname op de juiste manier geïmplementeerd werd. De bewegingen van het acromioclaviculair gewricht zijn minimaal.
Figuur 6.6: De bewegingen van de scapula.
66
2. De ADL bewegingen Zoals uit de vorige paragraaf gebleken is, zijn de hoeken die bekomen worden uit deze proeven niet representatief. Het is daarom niet aangewezen om de absolute hoeken, verkregen uit de ADL proeven, te vergelijken met deze bekomen in andere gelijkaardige onderzoeken. We kunnen wel de bekomen hoeken vergelijken met de maximale uitwijkingen bekomen uit de vorige paragraaf, deze relatieve uitwijkingen kunnen dan vergeleken worden met de relatieve uitwijkingen uit andere onderzoeken. We zullen steeds kijken naar de gemiddelde maximale uitwijking van een beweging. We zullen ook abstractie maken van de rotaties van de bovenarm om de Y-as, aangezien hierover geen conclusies gemaakt konden worden in de vorige paragraaf. In Tabel 6.1 is een overzicht te zien van de resultaten die verkregen werden uit de ADL proeven. Men kan zien dat de uitwijkingen enkel betekenis hebben relatief ten opzichte van de maximale uitwijkingen die gevonden werden in paragraaf 1, maar zelfs dan zin de resultaten niet eenduidig. De uitwijking voor de pronatie van de voorarm in de proef met het boek, bereikt bijvoorbeeld een waarde die groter is dan de maximale uitwijking gevonden uit de ROM bewegingen. We moeten de beschreven hoeken dus eerder zien als een kwalitatieve beschrijving dan als een kwantitatieve. De afkortingen in de tabel zouden voor zich moeten spreken, alle waarden zijn gegeven in graden. De plaatsen waar geen waarde ingevuld staat, zijn waarden die geen resultaat van betekenis gaven. Deze waren te klein, of er waren geen duidelijke maxima of minima te zien. De resultaten zijn allemaal redelijk logisch, waar bijvoorbeeld een grote supinatie verwacht werd, werd die ook gevonden. De waarden daarentegen zijn, zoals voorspeld, weinig betekenend, 70° supinatie in de ene proef is niet hetzelfde als 70° supinatie in de andere. Ik zal de bespreking van deze resultaten dus niet doen. Het is uit de cijfers onmogelijk te zeggen of de elevatie van de bovenarm in de ene proef groter is dan in de andere of welke proef resulteert in de maximale flexie van de elleboog. Als ik de resultaten toch zou bespreken zou ik eerder uit gaan van de beelden en mijn intuïtie om een klassering van de verschillende bewegingen te maken en dan zou heel het onderzoek eigenlijk voor niets geweest zijn.
67
68
Tabel 6.1: Overzicht resultaten ADL proeven
3. Algemene conclusies In de loop van het onderzoek werd al snel duidelijk dat de gegevens waarvan we gestart waren van niet zo goede kwaliteit waren. De markers waren vaak op onzorgvuldige wijze aangebracht en de bewegingen die gedaan werden door de proefpersonen vertoonden afwijkingen van de standaard. Als we een goed kwantitatief en kwalitatief onderzoek willen doen naar de bewegingen van de schouder en arm, zullen de proeven waarschijnlijk opnieuw gedaan moeten worden. Het is mogelijk dat deze conclusie voorbarig is. Ten eerste kan ik niet verzekeren dat de procedure die opgesteld is voor de verwerking foutvrij is en ten tweede hebben we de procedure slechts toegepast op één proefpersoon. Deze proefpersoon is gekozen, na het bekijken van alle gegevens van de proeven, omdat de gegevens er op het eerste zicht redelijk goed uitzagen. Een bijkomend aspect dat in het voordeel sprak van de proefpersoon was het feit dat hij zijn tests in het midden van de tweede week gedaan had, op het moment dus dat men zou verwachten dat de personen die de proeven afnamen het minste fouten zouden maken. Het is dus nog steeds mogelijk dat, wanneer de analyse van alle gegevens gedaan is en hier een statistische analyse op uitgevoerd werd, de resultaten toch nog representatief zouden zijn. Dit moet blijken als het onderzoek verder gezet zou worden. De resultaten vallen dus tegen, maar ik denk dat de procedure die hier opgesteld werd, en de MATLAB-code die geschreven werd, redelijk robuust en correct is. Of dit zo is zal eveneens moeten blijken als ze gebruikt worden voor de verdere verwerking van deze of nieuwe gegevens.
69
APPENDIX A
MATLAB-functies
1. Voorverwerking van de gegevens 1.1.
FileFilter.m
De gegevens uit de tsv-bestanden die met Qualisys gegenereerd werden, worden door deze functie ingelezen, gefilterd en deze gefilterde data worden weer terug weggeschreven naar nieuwe tsvbestanden. Om enige vorm van automatisering te voorzien, worden de files uit een map allemaal achter elkaar gelezen en verwerkt, zodat alle proeven die door een persoon gedaan werden, en dus in een map staan, tegelijk verwerkt worden. 70 function FileFilter %% Inlezen van de gegevens % De datastructuur is zo dat er steeds een map is met de naam van de % persoon, met daarin alle tsv-files van de proeven die de persoon gedaan % heeft (één tsv-file per opdracht). % In dit deel van de functie kan men zo'n map selecteren en zullen alle % gegevens (naam, datum, grootte) van de tsv-files die in de map zitten % in de structure array M gestoken worden. % Verder wordt er binnen de geselecteerde map een submap aangemaakt met de % naam "gefilterd", waarin later de tsv-files die de gefilterde data bevatten % zullen worden weggeschreven. path = strcat(uigetdir,'\'); M = dir(strcat(path,'*.tsv')); mkdir(path,'gefilterd');
%% Verwerken van de gegevens % De for-lus zal dan alle tsv-files overlopen en de gepaste opdrachten % uitvoeren. for j = 1:length(M) % Importeren van de data fullpath = strcat(path,M(j,1).name); % % % %
Inlezen van de data uit de tsv-file. data gescheiden worden door een tab, het aantal header lines. Dit zijn de file bevatten en bij het inlezen dus
Het argument '\t' zegt dat de het derde argument (10) geeft lijnen die verdere info over de overgeslagen mogen worden.
newData1 = importdata(fullpath,'\t',10); assignin('base','check',fullpath); % Controlevariabele die toont % waar het fout gelopen is als % er iets fout loopt % Aanvullende vervollediging van de data % Alhoewel het grote deel van de gaten reeds opgevuld werden in het % programma Qualisys, blijven er nog steeds kleine gaten over in de % data, die er niet handmatig uitgehaald kunnen worden. % % % %
Daarom worden alle data nog eens overlopen en daar waar nodig opgevuld door middel van rechten. (De overblijvende gaten zijn meestal maximum 5 frames lang, dus een interpolatie d.m.v. rechten is toelaatbaar)
% Deze opvulling lijkt overbodig, maar is het niet aangezien de % filterfunctie niet zo goed overweg kan met ontbrekende data. % Waar data ontbreekt zet Matlab bij het inlezen een NaN (Not a Number) % Deze lus controleert waar dit voorkomt en past dan de functie % interpolate_missing_data_points toe. for k = 1:size(newData1.data,1) for l = 1:size(newData1.data,2) if isnan(newData1.data(k,l)) p = l; newData1.data(:,p) = interpolate_missing_data_points(newData1.data(:,p)); end end end
71
% Het eigenlijke filteren Fc = 10; Fs = 60./2;
% Cut-off frequentie % Helft van de sample-frequentie
[m,n] = size(newData1.data); smooth = zeros(m,n); % Omdat de lengte van de data langer moet zijn dan drie keer de orde % van de filter en er data-sets zijn die zeer kort zijn, is het niet % altijd mogelijk orde 3 te nemen. We maken dus een keuze. if m < 25 Order = floor((m-1)./3); else Order = 3; end % % % %
B en A zijn respectievelijk de teller en de noemer van de transferfunctie van een Butterworth filter van orde gelijk aan 3 (of minder bij korte data-sets) en een cut-off frequentie Fc die genormaliseerd werd op de halve samplefrequentie Fs.
[B,A]=butter(Order,Fc/Fs); % De data-sets worden twee keer overlopen, een keer van voor naar % achter en een tweede maal in de andere richting, dit om % faseverschuivingen te vermijden. % Als de orde van de filter 3 is, verkrijgt men door het tweemaal % passeren een filtering van 6de orde. for k = 1:n smooth(:,k) = filtfilt(B,A,newData1.data(:,k)); end %% Wegschrijven van de data naar nieuwe tsv-files. % Er wordt een tsv-file aangemaakt in de submap 'gefilterd' die % dezelfde naam heeft als de originele tsv-file, aangevuld met % '_smooth'. [unused,name] = fileparts(M(j,1).name); fullpath2 = [path 'gefilterd\' strcat(genvarname(name),'_smooth') '.tsv'];
72
% Het commando fprintf heeft als een van de argumenten de structuur van % de weg te schrijven data. Dit wordt hier gegenereerd. % % % %
Er wordt gezegd dat de data floating point getallen zijn met 3 cijfers na de komma en 4 ervoor en dat de data gescheiden worden door tabs. Ook wordt het aantal kolommen gespecificeerd, dit is gewoon gelijk aan het aantal kolommen van de originele files.
argfprint = '%4.3f'; for l = 1:size(smooth,2)-1 argfprint = strcat(argfprint,'\t%4.3f'); end argfprint = strcat(argfprint,'\n'); % De nieuwe tsv-file wordt geopend, de header lines worden % weggeschreven (dit is handig voor de verdere verwerking), dan worden % de data weggeschreven en wordt de file terug gesloten. fid = fopen(fullpath2,'wt'); for o = 1:length(newData1.textdata) fprintf(fid,[newData1.textdata{o} '\n']); end fprintf(fid,argfprint,smooth'); fclose(fid); end
1.2
Interpolate_missing_data_points.m
Deze functie wordt gebruikt om de overgebleven kleine gaten in de data op te vullen. Omdat de overgebleven gaten zeer kort zijn (meestal slechts 8 à 10 frames), is lineaire interpolatie voldoende.
function [x] = interpolate_missing_data_points(s) ns = length(s); %% Ontbrekend begin van data aanvullen % Als er data ontbreekt aan het begin van de reeks, wordt er gezocht naar % de eerst frame waar data beschikbaar zijn en wordt al het voorgaande % gelijkgesteld aan deze eerste beschikbare waarde.
73
% Dit stuk is principieel overbodig, aangezien in Qualisys het commando % gegeven werd om de data in te korten als het begin of einde ontbrak. if isnan(s(1)) i = 1; while isnan(s(i)) i = i+1; end; s(1:i) = s(i+1); end; %% Een gat in de loop van de data opvullen % Alle data worden overlopen en er wordt gezocht naar een waarde NaN. Dan % wordt gekeken hoelang men waarden NaN blijft weervinden. Vervolgens wordt er % lineair geïnterpoleerd tussen de waarde juist voor het gat en die er juist na. for i = 2:ns-1, if isnan(s(i)) ib = i-1; j = i; while (isnan(s(j)) && (j<ns)) j = j+1; end; ie = j; % Als er data ontbreken op het einde van de reeks, wordt gewoon de % laatst bekende waarde doorgetrokken tot op het einde. % Ook dit deel is eigenlijk overbodig, maar werd voor de zekerheid % behouden. if ie == ns if ib > 1 for k = ib:ie, s(k) = s(ib-1); end; end end; % Hier gebeurt dan de opvulling van gaten in de data door middel van een % rechte. ds = (s(ie)-s(ib))./(ie-ib+1); for k = ib:ie, s(k) = s(ib)+((k-ib+1).*ds); end; end; end; x = s;
74
2. De analyse van de gegevens 2.1
Analyse.m
De statische en de dynamische analyse werden oorspronkelijk in aparte files gedaan. Maar omdat er zoveel gegevens uitgewisseld moesten worden tussen de statische en de dynamische analyse werd besloten om alles in één file uit te voeren.
function Analyse clear all %% Statische analyse %% Inlezen van de gegevens % Er wordt een venster geopend waarin een file geselecteerd kan worden van % een statisch beeld. De bestandsnaam en het pad worden elk in een % veranderlijke geschreven. [FileName,PathName] = uigetfile('*.tsv','Select the Static file'); % De data worden ingelezen in de veranderlijke NewData1. De parameters van % importdata zijn het scheidingsteken, hier een tab, en het aantal header % lijnen, hier 10. FullPath = strcat(PathName,FileName); NewData1 = importdata(FullPath,'\t',10); %Volgorde markers: %IJ PX C7 T8 SC ACr ACl TS AI AA PC De BB BO EM EL OL RS US CM3 Head % % % %
Er wordt een controle gedaan om te zien of alle markers aanwezig zijn. Als dit niet zo is wordt de veranderlijke check_stat op nul gezet. Als niet alle markers aanwezig zijn, zal de analyse niet verlopen zoals het hoort.
controle1 = textscan(NewData1.textdata{10},'%s'); controle2 = {'IJ' 'PX' 'C7' 'T8' 'SC' 'ACr' 'ACl' 'TS' 'AI' 'AA' 'PC' ... 'De' 'BB' 'BO' 'EM' 'EL' 'OL' 'RS' 'US' 'CM3' 'Head'}; check_stat = 1; for i = 1:length(controle1{1})-1 check_stat = check_stat.*strcmp(controle1{1}{i+1},controle2{i}); end assignin('base','check_stat',check_stat);
75
% Alle markers worden ingelezen en krijgen hun naam. De marker IJ wordt % beschouwd als de globale oorsprong. Alle markers worden verschoven zodat % het punt IJ in het punt [0 0 0] komt te liggen. IJ = NewData1.data(3,1:3); OverallOrigin = IJ; IJ = IJ-OverallOrigin; PX = NewData1.data(3,4:6)-OverallOrigin; C7 = NewData1.data(3,7:9)-OverallOrigin; T8 = NewData1.data(3,10:12)-OverallOrigin; SC = NewData1.data(3,13:15)-OverallOrigin; ACr = NewData1.data(3,16:18)-OverallOrigin; TS = NewData1.data(3,22:24)-OverallOrigin; AI = NewData1.data(3,25:27)-OverallOrigin; AA = NewData1.data(3,28:30)-OverallOrigin; PC = NewData1.data(3,31:33)-OverallOrigin; De = NewData1.data(3,34:36)-OverallOrigin; BB = NewData1.data(3,37:39)-OverallOrigin; BO = NewData1.data(3,40:42)-OverallOrigin; EM = NewData1.data(3,43:45)-OverallOrigin; EL = NewData1.data(3,46:48)-OverallOrigin; OL = NewData1.data(3,49:51)-OverallOrigin; RS = NewData1.data(3,52:54)-OverallOrigin; US = NewData1.data(3,55:57)-OverallOrigin; CM3 = NewData1.data(3,58:60)-OverallOrigin;
76 % % % %
De verschillende stl-files die de eindige-elementen beelden bevatten van de verschillende botten worden ingelezen. De functie ImportStl zorgt ervoor dat alle files tegelijk ingelezen kunnen worden zodat niet steeds dezelfde commando's herhaald moeten worden.
[C_stl,Ha_stl,Hu_stl,R_stl,U_stl,S_stl,T_stl] = ImportStl; % % % % % % % % % % % %
Hier worden de vorige manieren voor het bepalen van het glenohumeraal rotatiecentrum geïmplementeerd. Van deze methoden werd afgestapt, daarom zijn de lijnen als commentaar aangeduid. De eerste lijn is voor de bepaling van GH door middel van de regressie relatief t.o.v. de scapula. De tweede lijn transformeert GH, die gegeven werd door de functie getGH.m, terug naar het globaal coördinatensysteem. GetGH bepaalt GH door middel van rotaties van de bovenarm, omdat GH in die functie relatief t.o.v. het coördinatensysteem voor de scapula geeft, is het nodig dit terug te transformeren.
% if nargin == 2 % GH = ghestnew(PC,ACr,AA,TS,AI); % else % GH = GH*S+ACr; % end
% Er wordt een matrix opgesteld met punten voor elk segment. Deze matrices % zullen later dienen als argument voor een functie die de stl-files op de % juiste plaats zal transformeren. thorax = [IJ;IJ;PX;T8;C7;ACr]; clavicula = [SC;AA;AI;ACr;TS]; scapula = [ACr;AA;AA;AI;TS;PC]; radius = [(EM+EL)/2;EL;US;RS;RS]; ulna = [EM;OL;(EM+EL)/2;US;US;RS]; hand = [(US+RS)/2;US;RS;CM3;CM3;CM3]; %% Afbeelden van het statische beeld figure(1) hold on; view(107,18); % % % %
De x-, y- en z-coördinaten van alle punten worden allemaal in een aparte vector geschreven zodat deze vectoren gebruikt kunnen worden in de functie scatter3. Dit is een functie die de punten kan plotten in een 3D-ruimte.
M = zeros(21,3); for i = 1:21 M(i,1) = NewData1.data(3,3*i-2)-OverallOrigin(1); M(i,2) = NewData1.data(3,3*i-1)-OverallOrigin(2); M(i,3) = NewData1.data(3,3*i)-OverallOrigin(3); end scatter3(M(:,1),M(:,2),M(:,3),50,'k','filled'); % Ook de naam van de punten wordt erbij gezet, hierbij wordt gebruikt % gemaakt van de vector controle2, die alle namen van de punten bevat. for i = 1:21 text(M(i,1)+8,M(i,2)+8,M(i,3)+8,controle2{i}) end % % % %
De beelden uit de stl-files worden getransformeerd naar de plaats die aangegeven wordt door de punten uit de metingen. Hiervoor wordt de functie TransformBone gebruikt. Voor meer uitleg hierover kan men het bestand TransformBone.m raadplegen.
[xtR,ytR,ztR] = TransformBone(R_stl,radius); [xtU,ytU,ztU] = TransformBone(U_stl,ulna); [xtHa,ytHa,ztHa] = TransformBone(Ha_stl,hand); [xtT,ytT,ztT] = TransformBone(T_stl,thorax); [xtC,ytC,ztC] = TransformBone(C_stl,clavicula); [xtS,ytS,ztS,GH] = TransformBone(S_stl,scapula); humerus = [GH;EM;EL]; [xtHu,ytHu,ztHu] = TransformBone(Hu_stl,humerus);
77
% De Joint coordinate Systems voor alle segmenten worden bepaald en % worden afgebeeld. Alle afbeeldingen krijgen een handle zodat ze later in % de dynamische beelden aangepast kunnen worden. [T,hT3] = [F,hF3] = [H1,hH13] [H2,hH23] [Ht,hHt3] [C,hC3] = [S,hS3] = [Ha,hHa3]
asthor(IJ,PX,C7,T8); asfore(EM,EL,RS,US); = ashum1(GH,EM,EL); = ashum2(GH,EM,EL,F(2,:)); = techhum(BO,BB,De); asclav(SC,ACr,T(2,:)); asscap(AA,TS,AI); = ashand(CM3,RS,US);
% De oorsprong is IJ % De oorsprong is US % De oorsprong is GH % % % %
De De De De
oorsprong oorsprong oorsprong oorsprong
is is is is
BO SC AA CM3
% De verschillende botten worden afgebeeld. Ook deze krijgen een handle mee % zodat ze in de dynamische beelden aangepast kunnen worden. hHu = patch(xtHu,ytHu,ztHu,[.5 .5 .5],'EdgeColor','none', ... 'FaceLighting','phong'); hR = patch(xtR,ytR,ztR,'g','EdgeColor','none','FaceLighting','phong'); hU = patch(xtU,ytU,ztU,'b','EdgeColor','none','FaceLighting','phong'); hHa = patch(xtHa,ytHa,ztHa,'r','EdgeColor','none','FaceLighting','phong'); hT = patch(xtT,ytT,ztT,'c','EdgeColor','none','FaceLighting','phong'); hC = patch(xtC,ytC,ztC,'m','EdgeColor','none','FaceLighting','phong'); hS = patch(xtS,ytS,ztS,'y','EdgeColor','none','FaceLighting','phong'); % De belichting en de ruimte van de plot worden ingesteld. axis equal, grid on, hold off, view(119,12); light('Position',[1 1 1],'Style','infinite'); light('Position',[-1 -1 -1],'Style','infinite'); %% Transformeren van punten naar lokale coördinaatsystemen % % % % % %
Er zijn een aantal punten nodig in de dynamische analyse die daar niet beschikbaar zijn. Daarom moeten ze hier naar een lokaal coördinaatsysteem getransformeerd worden. Zodat ze in de dynamische analyse terug vanuit het lokaal coördinaatsysteem naar het globaal coördinaatsysteem getransformeerd kunnen worden. Op deze manier kennen we de globale coördinaten van deze punten ook in de dynamische analyse.
SCT = (SC-IJ)*T'; EM_stat = EM; EL_stat = EL; ACrC = (ACr-SC)*C'; TSC = (TS-SC)*C'; AIC = (AI-SC)*C'; AAC = (AA-SC)*C'; GHC = (GH-SC)*C';
78
%% Dynamische analyse %% Inlezen van de data % Dit gebeurt analoog als in de statische analyse [FileName,PathName] = uigetfile('*.tsv','Select a tsv-file'); FullPath = strcat(PathName,FileName); NewData2 = importdata(FullPath,'\t',10); %Volgorde markers: %IJ PX C7 T8 SC ACr ACl De BB BO OL RS US CM3 Head Static controle1 = textscan(NewData2.textdata{10},'%s'); controle2 = {'IJ' 'PX' 'C7' 'T8' 'ACr' 'ACl' 'De' 'BB' 'BO' 'OL' ... 'RS' 'US' 'CM3' 'Head' 'STATIC'}; check_dyn = 1; for i = 1:length(controle1{1})-1 check_dyn = check_dyn.*strcmp(controle1{1}{i+1},controle2{i}); end if check_dyn ==0 assignin('base','controle',controle1{1}); end assignin('base','check_dyn',check_dyn); % Hier worden een aantal matrices geïnitialiseerd die later gebruikt zullen % worden. Trans = eye(4); Invtrans = eye(4); R_thor = eye(4); R_clav = eye(4);
R_scap R_hum1 R_hum2 R_fore
= = = =
eye(4); eye(4); eye(4); eye(4);
R_hand = eye(4);
%% Initialisatie van de figuur figure(2) ax = axes('XLim',[-400 400],'YLim',[-350 200],'ZLim',[-400 350]); view(136,10); grid on; axis equal light('Position',[1 1 1],'Style','infinite'); light('Position',[-1 -1 -1],'Style','infinite');
79
% % % %
We maken gebruik van gestructureerde plot objecten. Elk object kan als 'Parent' of 'Child' ingesteld worden. Als men een bepaald transformatie toepast op een Parent zullen alle Children van dat object dezelfde transformatie ondergaan.
% Op de hgtransform objecten kan men bepaald transformaties zoals rotaties % en translaties toepassen. Alle objecten die dan als Child van deze objecten % ingesteld staan, ondergaan dan diezelfde transformaties. % % % %
We zullen dit gebruiken omdat we een transformatie-gestuurde beweging willen bereiken. We bepalen dan de rotatie tussen een statisch lokaal coördinaatsysteem en een dynamisch. Als we deze kennen, kunnen we dan alle objecten die als Child ingesteld staan mee transformeren.
% Het eerste object wordt als Child van de assen ingesteld. Dit moet altijd % gedaan worden. De kinderen van dit eerste hgtransform object zijn dan de % stl-file van de thorax en het JCS van de thorax. t1 = hgtransform('Parent',ax);
% % % % %
Een tweede hgtransform object wordt als Child van het eerste gezet. Dit object heeft als Children het JCS en de stl-file van de clavicula. Bewegingen van de thorax worden nu overgenomen door de clavicula. Door t2 als een apart hgtranform object te definiëren kunnen we de clavicula ook aparte bewegingen laten uitvoeren.
t2 = hgtransform('Parent',t1);
% % % %
copyobj(hT,t1); copyobj(hT3,t1);
copyobj(hC,t2); copyobj(hC3,t2);
Op dezelfde manier maken we elk distaal segment steeds een Child van het proximaal segment. Zo voeren de distale segmenten steeds dezelfde bewegingen uit als de proximale, maar kunnen we de distale segmenten ook steeds een eigen beweging laten uitvoeren.
t3 = hgtransform('Parent',t2);
copyobj(hS,t3); copyobj(hS3,t3);
t4 = hgtransform('Parent',t3);
copyobj(hHu,t4); copyobj(hH13,t4); copyobj(hH23,t4); copyobj(hHt3,t4);
t5 = hgtransform('Parent',t4);
copyobj(hR,t5); set(hR,'Clipping','off') copyobj(hU,t5); set(hU,'Clipping','off') copyobj(hF3,t5); set(hF3,'Clipping','off')
t6 = hgtransform('Parent',t5);
copyobj(hHa,t6); set(hHa,'Clipping','off') copyobj(hHa3,t6);set(hHa3,'Clipping','off')
set(gcf,'Renderer','opengl')
80
% Initialisatie van de vectoren waarin de hoeken op elk moment opgeslagen % zullen worden. N = size(NewData2.data,1); abc_thor abc_clav abc_scap abc_hum1 abc_hum2 abc_fore abc_hand
= = = = = = =
zeros(N,3); zeros(N,3); zeros(N,3); zeros(N,3); zeros(N,3); zeros(N,3); zeros(N,3);
% We laten nu een lus lopen die voor elk frame alle operaties uitvoert. for i = 1:N %% Inlezen van de gegevens % Dit gebeurt op dezelfde manier als in de statische analyse. IJ_dyn = NewData2.data(i,1:3); OverallOrigin = IJ_dyn; IJ_dyn = IJ_dyn-OverallOrigin; PX_dyn = NewData2.data(i,4:6)-OverallOrigin; C7_dyn = NewData2.data(i,7:9)-OverallOrigin; T8_dyn = NewData2.data(i,10:12)-OverallOrigin; ACr_dyn = NewData2.data(i,13:15)-OverallOrigin; % ACl_dyn = NewData2.data(i,16:18)-OverallOrigin; De_dyn = NewData2.data(i,19:21)-OverallOrigin; BB_dyn = NewData2.data(i,22:24)-OverallOrigin; BO_dyn = NewData2.data(i,25:27)-OverallOrigin; OL_dyn = NewData2.data(i,28:30)-OverallOrigin; RS_dyn = NewData2.data(i,31:33)-OverallOrigin; US_dyn = NewData2.data(i,34:36)-OverallOrigin; CM3_dyn = NewData2.data(i,37:39)-OverallOrigin; % Head_dyn = NewData2.data(i,40:42)-OverallOrigin; % Static_dyn = NewData2.data(i,43:45)-OverallOrigin; % We bepalen het lokaal coördinaatsysteem van de thorax T_dyn = asthor(IJ_dyn,PX_dyn,C7_dyn,T8_dyn,1); % We bepalen de rotatiematrix tussen het lokaal statisch en dynamisch % coördinaatsysteem van de thorax. Dit gebeurt door de matrices met de % vectoren die de assen bepalen te vermenigvuldigen. R_thor(1:3,1:3) = T_dyn'*T;
81
% % % aaaa%
Het is nu voldoende deze matrix toe te wijzen aan het hgtransform object t1 dat als Children de stl-file van de thorax heeft, maar ook alle andere hgtransform objecten. Op deze manier voeren alle segmenten de bewegingen uit die bepaald worden door de matrix R_thor.
set(t1,'Matrix',R_thor) % % % %
De verschillende rotatiehoeken van de verdraaiingen van de thorax worden bepaald door de transformatiematrix te ontbinden in de verschillende rotatiematrices, rekening houdend met de volgorde van rotaties.
% % % % % %
De functie RZXYSOLV ontbindt de transformatiematrix in rotatiematrices als de volgorde van de rotaties opeenvolgend rond de Z-, X- en Y-as is. De eerste drie argumenten die de functie terug geeft zijn de verschillende rotatiehoeken. Deze worden weggeschreven in een vector. Op het einde van de lus zullen deze vectoren dus de hoeken bevatten voor alle frames.
angles_thor = RZXYSOLV(R_thor); abc_thor(i,1) = angles_thor(1); % Flexie (-) of extensie (+) abc_thor(i,2) = angles_thor(2); % Laterale flexie rotatie naar rechts % (+) of naar links (-) abc_thor(i,3) = angles_thor(3); % Axiale rotatie naar links (+) of naar % rechts (-) % We hebben het punt SC nodig om het JCS voor de clavicula te bepalen. % Daarom transformeren het punt SC, dat we kennen relatief t.o.v. het % JCS van de thorax terug naar de globale coördinaten. SC_dyn = SCT*T_dyn+IJ_dyn; % % % % %
De verdere verwerking is dezelfde als deze voor de thorax, met het enige verschil dat we de verschillende coördinaatstelsels dezelfde oorsprong moeten hebben om de rotatie uit te voeren. Daarom verschuiven we het dynamisch assenstelsel naar de oorsprong van het statische assenstelsel, namelijk SC.
C_dyn = asclav(SC_dyn,ACr_dyn,T_dyn(2,:),1); R_clav(1:3,1:3) = C_dyn'*C; Trans(1:3,4) = -SC'; Invtrans(1:3,4) = SC'; R_clav0 = R_thor'*R_clav; set(t2,'Matrix',Invtrans*R_clav0*Trans)
82
% % % %
De verschillende rotatiehoeken van de verdraaiingen van de clavicula worden bepaald door de transformatiematrix te ontbinden in de verschillende rotatiematrices, rekening houdend met de volgorde van rotaties.
angles_clav = RYXZSOLV(R_clav0); abc_clav(i,1) = angles_clav(1); % abc_clav(i,2) = angles_clav(2); % % abc_clav(i,3) = angles_clav(3); % % % % % % %
Depressie (+) en elevatie (-) Axiale rotatie (top naar achter is positief) Protractie (+) en retractie (-)
Hier worden ook punten vanuit de statische analyse getransformeerd. We kennen hier wel het punt ACr, om alle punten juist te positioneren ten opzichte van dit punt wordt gekeken naar het verschil tussen ACr uit de dynamische analyse en dit uit de statische analyse. Dit verschil wordt dan bijgeteld bij de andere punten van de scapula, die naar hier getransformeerd werden om deze juist te positioneren.
ACr1 = (ACr_dyn-SC_dyn)*C_dyn'; versch = ACr1-ACrC; TS1 = TSC+versch; TS_dyn = TS1*C_dyn+SC; AI1 = AIC+versch; AI_dyn = AI1*C_dyn+SC; AA1 = AAC+versch; AA_dyn = AA1*C_dyn+SC; S_dyn = asscap(AA_dyn,TS_dyn,AI_dyn,1); R_scap(1:3,1:3) = S_dyn'*S; Trans(1:3,4) = -AA'; Invtrans(1:3,4) = AA'; R_scap0 = R_clav'*R_scap; set(t3,'Matrix',Invtrans*R_scap0*Trans); % De scapula beweegt niet ten opzichte van de clavicula, de hoeken die % hier bepaald worden zijn allemaal zeer klein. Dit is te zien in de % resultaten. angles_scap = abc_scap(i,1) abc_scap(i,2) abc_scap(i,3)
RYXZSOLV(R_scap0); = angles_scap(1); = angles_scap(2); = angles_scap(3);
GH_dyn = GHC*C_dyn+SC; % % % %
Om EM en EL te bepalen kon geen gebruik gemaakt worden van een assenstelsel. Daarom gebruiken we hier de functie procrustes.m. Als men twee sets punten heeft, bepaalt deze functie een transformatie die de eerste set zo goed mogelijk afbeeld op de tweede set.
% % % % %
We bepalen de transformatie tussen de punten uit X en de punten uit Y. Zo kennen we een transformatie tussen de statische en dynamische positie van de humerus. Als we die kennen, kunnen we de punten EM en EL, die een vaste positie hebben ten opzichte van de humerus, ook transformeren met behulp van de transformatie.
83
X = [GH_dyn;GH_dyn;GH_dyn;OL_dyn;BO_dyn;De_dyn;BB_dyn]; Y = [GH;GH;GH;OL;BO;De;BB]; [d,Z,transform] = procrustes(X,Y); EM_dyn = transform.b*EM_stat*transform.T+transform.c(1,:); EL_dyn = transform.b*EL_stat*transform.T+transform.c(1,:); H1_dyn = ashum1(GH_dyn,EM_dyn,EL_dyn,1); F_dyn = asfore(EM_dyn,EL_dyn,RS_dyn,US_dyn,1); H2_dyn = ashum2(GH_dyn,EM_dyn,EL_dyn,F_dyn(2,:),1); R_hum1(1:3,1:3) = H1_dyn'*H1; R_hum2(1:3,1:3) = H2_dyn'*H2; Trans(1:3,4) = -GH'; Invtrans(1:3,4) = GH'; R_hum10 = R_clav'*R_hum1; set(t4,'Matrix',Invtrans*R_hum10*Trans); % % % %
De verschillende rotatiehoeken van de verdraaiingen van de humerus worden bepaald door de transformatiematrix te ontbinden in de verschillende rotatiematrices, rekening houdend met de volgorde van rotaties.
% % % %
De hoeken worden berekend van de beweging van de humerus t.o.v. de thorax. Daarom wordt voorvermenigvuldigd met de inverse van de transformatiematrix van de thorax, omdat dat, op dat moment, het proximaal segment is.
[y1,z,y2] = rotyzy(R_thor'*R_hum1); abc_hum1(i,1) = y1; % Vlak waarin elevatie gebeurt abc_hum1(i,2) = y2; % Endorotatie (+) en exorotatie (-) abc_hum1(i,3) = z; % Elevatie (-) [y1,z,y2] = rotyzy(R_thor'*R_hum2); abc_hum2(i,1) = y1; abc_hum2(i,2) = y2; abc_hum2(i,3) = z; M = makehgtform('scale',1.04); R_fore(1:3,1:3) = F_dyn'*F; Trans(1:3,4) = (-(EM_stat+EL_stat+OL)/3)'; Invtrans(1:3,4) = ((EM_stat+EL_stat+OL)/3)'; R_fore0 = R_hum1'*R_fore; set(t5,'Matrix',Invtrans*M*R_fore0*Trans); % % % %
De verschillende rotatiehoeken van de verdraaiingen van de elleboog worden bepaald door de transformatiematrix te ontbinden in de verschillende rotatiematrices, rekening houdend met de volgorde van rotaties.
% Er worden slechts twee hoeken besproken omdat de derde vrijheidsgraad % van de elleboog eigenlijk onbestaande is.
84
% De waarden voor de tweede hoek worden geïnverteerd omdat de pronatie % positief moet zijn volgens de standaard van de ISB. % De flexie en de extensie van de elleboog wordt bekeken relatief ten % opzichte van de startpositie. In de literatuur wordt deze positie % gezien als 90° flexie. angles_fore = abc_fore(i,1) abc_fore(i,2) abc_fore(i,3)
RZXYSOLV(R_fore0); = angles_fore(1); % Wordt niet gerapporteerd. = -angles_fore(2); % Pronatie (+) en supinatie (-) = angles_fore(3); % Flexie (+) en extensie (-)
Ha_dyn = ashand(CM3_dyn,RS_dyn,US_dyn,1); R_hand(1:3,1:3) = Ha_dyn'*Ha; Trans(1:3,4) = (-(US+RS)/2)'; Invtrans(1:3,4) = ((US+RS)/2)'; R_hand0 = R_fore'*R_hand; set(t6,'Matrix',Invtrans*R_hand0*Trans); % % % %
De verschillende rotatiehoeken van de verdraaiingen van de pols worden bepaald door de transformatiematrix te ontbinden in de verschillende rotatiematrices, rekening houdend met de volgorde van rotaties.
% % % %
De pronatie- en supinatiehoeken moeten nul zijn over de gehele lijn omdat de beweging van de hand bekeken wordt t.o.v. de onderarm en deze twee segementen kunnen niet op deze manier bewegen ten opzichte van elkaar.
angles_hand = abc_hand(i,1) abc_hand(i,2) abc_hand(i,3)
RYXZSOLV(R_hand0); = angles_hand(1); % Wordt niet gerapporteerd = angles_hand(2); % Ulnaire (+) en radiale (-) deviatie = angles_hand(3); % Flexie (+) en extensie (-)
% Alle segmenten en de coördinaatstelsels worden, na transformatie, op elk aaaa% moment weergegeven. drawnow end % % % %
Er wordt een nieuwe MAT-file aangemaakt waarvan de naam bestaat uit de naam van de proefpersoon, de bewegingen die de file bevat en als achtervoegsel _angles. Naar deze file worden alle vectoren weggeschreven die de alle rotatiehoeken bevatten.
SaveName = strrep(FileName,'smooth.tsv','angles'); save(SaveName,'abc_thor','abc_clav','abc_scap','abc_hum1','abc_hum2', ... 'abc_fore','abc_hand');
85
2.2
Asclav.m
Dit is de functie om het lokaal coördinaatsysteem voor de clavicula te bepalen. Deze wordt als voorbeeld gegeven voor de verschillende functies om de lokale coördinaatsystemen te bepalen. De andere functies zijn volledig analoog. De functies worden ter beschikking gesteld op de website van ISG (Chadwick, 2005).
function [C,h] = asclav(SC,AC,yt,noplot) %% Definiëren van de verschillende assen % % % %
De assen worden gedefinieerd volgens het protocol dat opgesteld is door ISG. Alle vectoren die de assen bepalen worden genormeerd. De assen worden zo georiënteerd dat men telkens een orthonormaal rechtshandig stelsel krijgt.
zc = (AC-SC) / norm(AC-SC); xc = cross(yt,zc); xc = xc/norm(xc); yc = cross(zc,xc); % C is de matrix met de verschillende basisvectoren in de RIJEN. C = [xc;yc;zc]; %% Weergeven van het assenstelsel % % % % %
Er wordt een plotparameter ingebouwd. Deze zorgt ervoor dat de functie ook kan aangesproken worden zonder dat de assen getekend worden. Het is voldoende dat men één enkele willekeurige parameter mee geeft aan de functie om te beletten dat de assen weergegeven worden.
if nargin<4 % % % % % % % %
De pijlen van het assenstelsel worden getekend met de functie arrow3.m. Met deze functie kan men alle parameters van de getekende pijlen aanpassen, zodat men mooie pijlen verkrijgt. Meer uitleg over arrow3.m kan men vinden in het betreffende bestand. De pijlen worden niet op werkelijke grootte afgebeeld, omdat ze dan niet zichtbaar zouden zijn, daarom wordt een schalingsfactor 50 toegepast.
p = 50*C+[SC;SC;SC];
86
% % % % % %
De eerste parameter van arrow3 is het beginpunt van de pijl, dit is de oorsprong van het coördinatenstelsel. De tweede parameter is het eindpunt van de pijl. De derde parameter is de kleur van de pijl. De vierde tot de zesde parameter zijn vormparameters, in volgorde bepalen ze de breedte van het pijlhoofd, de hoogte van het pijlhoofd en de diameter van het punt dat de oorsprong van de pijl aanduidt.
h(1:7) = arrow3([SC;SC;SC],p,'b',3,6,2); % % % p
We willen eveneens de namen van de assen bij de pijlhoofden zetten. Daarom tellen we bij elke coördinaat 1 bij, zodat de positie van de naam iets verwijderd is van het pijlhoofd. = p+ones(3);
% % % % %
De functie text geeft de tekst die gegeven is in de vierde parameter weer op de plaats gedefinieerd door de eerste drie parameters. In de tekststring wordt eveneens het formaat van de tekst meegegeven (hier bold face). Als laatste parameter wordt de kleur van de tekst meegegeven.
h(8) = text(p(1,1),p(1,2),p(1,3),'\bfXc','color','b'); h(9) = text(p(2,1),p(2,2),p(2,3),'\bfYc','color','b'); h(10) = text(p(3,1),p(3,2),p(3,3),'\bfZc','color','b'); % % % %
Alle plots krijgen een handle mee, zodat ze later gemanipuleerd kunnen worden. De hier gemaakte plots worden allemaal aan dezelfde handle toegevoegd omdat ze steeds in groep gemanipuleerd moeten worden.
end
2.3
getGH.m
function [GH] = getGH(ACrT,TST,AIT,NewData2) % % % %
Benadering van de coördinaten van GH door middel van het zoeken van het gemeenschappelijk middelpunt van rotatie van de markers van de bovenarm terwijl rotaties met kleine amplitude gedaan worden met de bovenarm rond het glenohumeraal gewricht.
% % % %
BELANGRIJK! De functie geeft de coördinaten van GH terug relatief ten opzichte van het systeem met oorsprong in ACr (het Joint Coordinate System voor de scapula)
% Volgorde markers: % IJ PX C7 T8 SC ACr ACl De BB BO OL RS US CM3 Head Static
87
%% Initialisatie van de vectoren % Als vectoren groeien in een lus, is het steeds aangewezen om reeds op % voorhand een vector aan te maken met de juiste lengte. De_full = zeros(size(NewData2.data,1),3); BO_full = zeros(size(NewData2.data,1),3); BB_full = zeros(size(NewData2.data,1),3); %% Verwerken van de gegevens % NewData2 bevat de gegevens van de proef waarin kleine rotaties gemaakt % werden met de bovenarm rond het glenohumeraal gewricht. Deze gegevens % worden hier frame per frame ingelezen. for i = 1:size(NewData2.data,1) % Inlezen en benoemen gegevens % Hier wordt hetzelfde gedaan als in het hoofdprogramma, we beperken % ons echter tot het inlezen en benoemen van die punten die we nodig % hebben in deze functie. IJ = NewData2.data(i,1:3); OverallOrigin = IJ; IJ = IJ-OverallOrigin;
88
PX = NewData2.data(i,4:6)-OverallOrigin; C7 = NewData2.data(i,7:9)-OverallOrigin; T8 = NewData2.data(i,10:12)-OverallOrigin; ACr = NewData2.data(i,13:15)-OverallOrigin; De = NewData2.data(i,19:21)-OverallOrigin; BB = NewData2.data(i,22:24)-OverallOrigin; BO = NewData2.data(i,25:27)-OverallOrigin; % % % % %
In het hoofdprogramma werden de punten van de scapula getransformeerd zodat ze relatief ten opzichte van het coördinaatsysteem van de thorax beschrven stonden. We hebben hier dus ok op elk moment het coördinaatsysteem van de thorax nodig, zodat we deze punten terug kunnen transformeren.
% Dit moet gedaan worden omdat de punten op de scapula niet gekend zijn % in de dynamische metingen (behalve ACr) en we ze dus moeten % overplaatsen uit de statische meting. T = asthor(IJ,PX,C7,T8,1);
% originT = IJ;
% ACr is wel gekend in de dynamische metingen, dit wordt ook naar het % coördinaatsysteem T getransformeerd en vergeleken met de ACr die % verkregen werd uit de statische meting.
% % % % %
Het verschil tussen ACr1 (de versie van ACr uit de dynamische meting) en ACrT (de versie uit de statische meting) wordt berekend en bijgeteld bij de andere punten van de scapula die we nodig hebben. Zo worden de punten uit de statische meting aangepast aan de positie van ACr in de dynamische meting.
ACr1 = (ACr-IJ)*T'; versch = ACr1-ACrT; TS1 = TST+versch; TS = TS1*T+IJ; AI1 = AIT+versch; AI = AI1*T+IJ; S = asscap(ACr,TS,AI,1);
% originS = ACr;
% Op elk moment worden de punten van de bovenarm (De, BO en BB) % geschreven ten opzichte van het coördinaatsysteem van de scapula. De % waarden worden in een vector gestoken. De_full(i,:) = (De-ACr)*S'; BO_full(i,:) = (BO-ACr)*S'; BB_full(i,:) = (BB-ACr)*S'; end %% Bepalen gemeenschappelijk rotatiecentrum % Het algoritme dat gebruikt wordt, bepaalt een bol die het best past bij % de reeks punten die als argument aan de functie gegeven wordt. % Om het algoritme te initialiseren is een eerste schatting nodig van het % middelpunt en de straal van de bol die gezocht wordt. % We zoeken het punt GH, dat normaal het middelpunt moet zijn van de % verschillende bollen. Omdat dit punt redelijk dicht bij het punt ACr % ligt, is [0 0 0] een goede eerste schatting van het middelpunt. gemGH gemDe gemBB gemBO
= = = =
[0 0 0]; mean(De_full); mean(BB_full); mean(BO_full);
% Als schatting van de stralen werd gekozen om de afstand te nemen tussen % de eerste schatting van het middelpunt en het gemiddelde van alle punten % op het boloppervlak. rDe = norm(gemGH-gemDe); rBO = norm(gemGH-gemBO); rBB = norm(gemGH-gemBB); % % % %
De functie lssphere bepaalt dan het middelpunt en de straal van de bol die het best bij de opgegeven punten past. Dit gebeurt op basis van het Gauss-Newton algoritme. Meer uitleg hierover is te vinden in het bestand lssphere.m
89
% % % %
Er wordt voor elke set van punten (dus deze voor De, BO en BB) een aparte bol bepaald. In het ideale geval zouden deze drie bollen hetzelfde middelpunt moeten hebben. De drie punten draaien namelijk, in theorie, allemaal rond hetzelfde middelpunt, GH.
[x0De,rDe1,d,sigmah,convDe,Vx0n,urn,GNlog,a,R] = ... lssphere(De_full,gemGH',rDe,.001,.001); [x0BB,rBB1,d,sigmah,convBB,Vx0n,urn,GNlog,a,R] = ... lssphere(BB_full,gemGH',rBB,.001,.001); [x0BO,rBO1,d,sigmah,convBO,Vx0n,urn,GNlog,a,R] = ... lssphere(BO_full,gemGH',rBO,.001,.001); % Er bleek echter dat de drie bollen helemaal niet hetzelfde middelpunt % hadden. Dus werd het gemiddelde punt van de drie middelpunten gekozen als % beste schatting voor het punt GH. GH = mean([x0De';x0BB';x0BO']);
2.4
Ghestnew.m
Dit is een functie die het glenohumeraal rotatiecentrum bepaald aan de hand van regressievergelijkingen die uitgaan van de posities van de punten van de scapula. Deze functie werd ook ter beschikking gesteld door ISG.
function gh = ghestnew(pc,ac,aa,ts,ai) % Deze functie bepaalt het glenohumeraal rotatiecentrum door gebruikt te % maken van regressievergelijkingen die gebruik maken van de posities van % de punten van de scapula. %disp(['Warning in ghestnew: data must be provided in millimeters!!']) %% Inlezen van de gegevens % % % %
De punten van de scapula worden verkregen uit het hoofdprogramma. We moeten hier wel het coördinaatsysteem voor de scapula bepalen omdat alle punten relatief ten opzichte van dit coördinaatsysteem beschreven moeten worden.
Rsca=asscap(ac,ts,ai,1); Osca=(ac); % De punten transformeren zodat ze beschreven staan ten opzichte van het % lokaal coördinaatsysteem van de scapula.
90
pc=(pc-Osca)*Rsca'; ac=(ac-Osca)*Rsca'; aa=(aa-Osca)*Rsca'; ts=(ts-Osca)*Rsca'; ai=(ai-Osca)*Rsca'; %% Opstellen van de regressievergelijkingen % De regressievergelijkingen maken gebruik van een aantal afstanden tussen % verschillende punten van de scapula. Deze afstanden worden hier berekend. lacaa=norm(ac-aa); ltspc=norm(ts-pc); laiaa=norm(ai-aa); lacpc=norm(ac-pc); % Hier worden de regressievergelijkingen in een matrixvorm geschreven. scx=[1 pc(1) ai(1) laiaa pc(2)]'; scy=[1 lacpc pc(2) lacaa ai(1) ]'; scz=[1 pc(2) pc(3) ltspc ]';
thx=[18.9743 0.2434 0.2341 thy=[-3.8791 -0.1002 0.1732 thz=[-9.2629 -0.2403 1.0255 %previous version: thz=[ 9.2629
0.1590 0.0558]; -0.3940 0.1205]; 0.1720]; -0.2403 1.0255 0.1720];
% Berekening van de coördinaten van GH (in het lokaal coördinaatsysteem) % door gebruik te maken van de regressievergelijkingen. GHx = thx*scx; GHy = thy*scy; GHz = thz*scz; gh=[GHx GHy GHz]; % GH wordt dan geschreven in functie van de globale coördinaten en % weggeschrven naar de hoofdfunctie. gh=gh*Rsca+Osca;
91
2.5
PlotGHSphere.m
function PlotGHSphere % Functie om het rotatiecentrum van het glenohumeraal gewricht te bepalen % in de stl-file van de humerus. % De methode is het fitten van een sfeer aan de kop van de humerus. Het % middelpunt van die bol is dan een benadering van het glenohumeraal % rotatiecentrum.
%% Inladen van de gegevens % Op de stl-file van de humerus werden handmatig een aantal (27) punten % geselecteerd op het bolvormig deel van de humeruskop. Deze zullen dan % dienen om via regressie het middelpunt ervan te zoeken. % Tegelijk wordt de stl-file van de humerus ingelezen, dit om een % visualistaie te kunnen maken. load('-mat','punten bol GH.mat'); [x,y,z,c] = stlread('RHumerus.stl'); %% Fitten van de sfeer % % % % %
Om een sfeer te kunnen fitten, moet men een eerste schatting maken van het middelpunt en de straal. Een schatting van het middelpunt bekomt men door het gemiddelde te nemen van alle punten, een schatting voor de straal haalt men uit de literatuur die stelt dat een gemiddelde humeruskopeen straal tussen de 25 en 30 mm heeft.
r0 = mean(X0); % Om de schatting van de sfeer te doen, maken we gebruik van de functie % lssphere.m die gebruik maakt van het Gauss-Newton algoritme. [x0n,rn,d,sigmah,conv,Vx0n,urn,GNlog,a,R] = lssphere(X0, r0', 25, .0001, .0001); x0n %% Visualisatie % We plotten de gevonden sfeer, samen met de humerus, om te zien of de fit % accuraat is. [X,Y,Z] = sphere; X = X.*rn + x0n(1); Y = Y.*rn + x0n(2); Z = Z.*rn + x0n(3);
92
figure, patch(x,y,z,'y'); hold mesh(X,Y,Z,'EdgeColor','r','FaceColor','none','LineWidth',1.2); axis equal, axis tight
2.6
TransformBone.m
function [xt,yt,zt,GH] = TransformBone(M_stl,part) % % % % %
Deze functie transformeert de verschillende stl-files naar de juiste plaats in de beelden. Het gaat hierbij uit van de punten die bekend zijn op de verschillende botten en bepaald hiermee een transformatie tussen de oorspronkelijke plaats van de stl-beelden in de ruimte en de plaats die bepaald wordt door de coördinaten uit de metingen.
% Op de stl-beelden werden de anatomische referentiepunten, die gebruikt % worden in dit onderzoek, handmatig aangeduid. De coördinaten worden hier % allemaal beschreven. GH = [66.5804 276.5832 -936.1932]; EM = [80.31 327.6 -1215]; EL = [40.18 278.1 -1216]; RS = [121.4 207.6 -1455]; US = [81.29 232.4 -1464]; OL = [53.22 313 -1211]; CM3 = [96.02 184.9 -1549]; IJ = [237.1 215.5 -938.2]; PX = [245.8 180.9 -1141]; T8 = [243.5 369.5 -1075]; C7 = [243.5 319.6 -875.1]; SC = [219.2 235 -916.6]; AA = [51.47 308.8 -914.2]; AI = [141.2 362.7 -1056]; ACr = [85.63 280.7 -891.8]; TS = [164.4 357 -945.6]; PC = [89.98 260.5 -927.9]; % Afhankelijk van de parameter die de functie mee krijgt, wordt een % verschillend bot getransformeerd. Een tweede parameter van de functie % zijn de coördinaten van de punten uit de metingen. % De vectoren X en Y worden gedefinieerd. Y bevat de punten uit de % stl-files. X bevat de punten uit de metingen.
93
if strcmp(inputname(1),'Hu_stl') Y = [GH;EM;EL]; X = part; elseif strcmp(inputname(1),'R_stl') Y = [(EM+EL)/2;EL;US;RS;RS]; X = part; elseif strcmp(inputname(1),'U_stl') Y = [EM;OL;(EM+EL)/2;US;US;RS]; X = part; elseif strcmp(inputname(1),'Ha_stl') Y = [(US+RS)/2;US;RS;CM3;CM3;CM3]; X = part; elseif strcmp(inputname(1),'T_stl') Y = [IJ;IJ;PX;T8;C7;ACr]; X = part; elseif strcmp(inputname(1),'C_stl') Y = [SC;AA;AI;ACr;TS]; X = part; elseif strcmp(inputname(1),'S_stl') Y = [ACr;AA;AA;AI;TS;PC]; X = part; end % De functie procrustes bepaalt een transformatie die de punten uit Y zo % goed mogelijk afbeeldt op de punten uit X. De transformatie bestaat uit % een schaling b, een rotatie T en een translatie c. [d,Z,transform] = procrustes(X,Y); % % % % % %
De gevonden transformatie moet toegepast worden op alle punten uit de matrices die het stl-beeld bepalen. Dit zijn drie matrices, de eerste matrix is een 3xN-matrix, met N het aantal driehoekjes waaruit het stl-beeld bestaat. Elke rij van deze matrix bevat de 3 x-coördinaten van de hoeken van één driehoekje. De tweede bevat op dezelfde manier de y-coördinaten en de derde de z-coördinaten.
x = M_stl{1}; y = M_stl{2}; z = M_stl{3}; xt = zeros(size(x)); yt = zeros(size(x)); zt = zeros(size(x)); % Afhankelijk van het segment dat we moeten transformeren zijn er kleine % verschillen in de verwerking. % % % %
De eerste verwerking is voor de thorax. Omdat we zeker willen dat het punt IJ in de oorsprong blijft liggen en dat dit punt juist gepositioneerd is op het stl-beeld, verschuiven we de thorax na transformatie zo dat het punt IJ op de correcte plaats komt te liggen.
94
if strcmp(inputname(1),'T_stl') % % % % % % %
Procrustes geeft samen met de transformatie ook een matrix weer van waar de punten uit Y belanden na de transformatie (dit is niet sowieso op de punten van X). We willen dat IJ na transformatie zeker in [0 0 0] ligt. Daarom nemen we de eerste rij van Z, dat is de plaats van IJ na de transformatie en we trekken deze af van alle punten na transformatie. Zo bekomen we dat het beeld van de thorax zeker op de juiste plaats komt te liggen.
IJ = [Z(1,:);Z(1,:);Z(1,:)]; for i = 1:size(x,2) M = [x(1,i),y(1,i),z(1,i);x(2,i),y(2,i),z(2,i);x(3,i),y(3,i),z(3,i)]; M1 = (transform.b*M*transform.T+transform.c(1:3,:))-IJ; xt(:,i) = M1(:,1); yt(:,i) = M1(:,2); zt(:,i) = M1(:,3); end % % % %
Als we de scapula transformeren, willen we ook dezelfde transformatie toepassen op GH. Dit is namelijk uiteindelijk de manier geworden waarop GH bepaald wordt. We nemen op deze manier aan dat GH steeds een vaste positie heeft ten opzichte van de scapula.
% Omdat GH in de stl-bestanden reeds de juiste positie heeft ten opzichte % van de scapula, zijn we op deze manier zeker dat GH, na transformatie, % ook de juiste positie heeft. elseif strcmp(inputname(1),'S_stl') for i = 1:size(x,2) M = [x(1,i),y(1,i),z(1,i);x(2,i),y(2,i),z(2,i);x(3,i),y(3,i),z(3,i)]; M1 = transform.b*M*transform.T+transform.c(1:3,:); xt(:,i) = M1(:,1); yt(:,i) = M1(:,2); zt(:,i) = M1(:,3); end GH = transform.b*GH*transform.T+transform.c(1,:);
95
% Voor alle andere segmenten wordt gewoon de transformatie toegepast. else for i = 1:size(x,2) M = [x(1,i),y(1,i),z(1,i);x(2,i),y(2,i),z(2,i);x(3,i),y(3,i),z(3,i)]; M1 = transform.b*M*transform.T+transform.c(1:3,:); xt(:,i) = M1(:,1); yt(:,i) = M1(:,2); zt(:,i) = M1(:,3); end end
2.7
RXYZSOLV.m
Dit is een voorbeeld van de functies die de transformatiematrix ontbindt in de drie rotatiematrices waaruit hij opgebouwd is. Er wordt rekening gehouden met de volgorde waarin de rotaties uitgevoerd werden. Deze functie is voor de rotatievolgorde X, Y, Z. De methode om de verschillende hoeken te bepalen die gebruikt wordt in de functie, kunnen terug gevonden worden in een wiskundig werk dat Euler hoeken behandeld (Craig, 1989).
function [out] = RXYZSOLV(T) % Deze functie zoekt de hoeken alpha, beta en gamma, die de rotaties rond % de verschillende assen bepalen voor een transformatiematrix die een % voorstelling is van opeenvolgende rotaties rond de X-, Y en Z-as. % De functies voor de andere volgordes van rotaties hebben een % gelijkaardige structuur. Al deze functies werden ter beschikking gesteld % op de website van de ISG. %% Verschillende controles % % % %
Er wordt een controle gedaan op de dimensies van de matrix. Het moet hier over een 4x4-matrix gaan. Dit is een algemene vorm van een transformatiematrix die zowel een rotatie als een translatie kan bevatten.
if size(T)~=[4,4]; disp('Error: transformation matrix has to be a 4x4 matrix') return; end;
96
% Hier wordt gecontroleerd of alle elementen van de matrix numeriek zijn. if sum(isnan(T(:)))~=0, out=[NaN,NaN,NaN,NaN,NaN,NaN]; return; end %% Berekening van de verschillende hoeken. % De methode om dit te doen, kan gevonden worden in een wiskundig werk dat % Euler hoeken behandeld. % Gama is geen schrijffout, maar dit moet gebruikt worden omdat gamma een % beschermde functie is in Matlab. beta
= asin(-T(3,1));
%'assumption' that cos(beta)>0
alphasin = asin(T(3,2)/cos(beta)); alphacos = acos(T(3,3)/cos(beta)); % Er wordt op toegezien dat de hoeken allemaal tussen -180° en 180° liggen. if (alphacos>pi/2 && alphasin>0); alpha=pi-alphasin; end; if (alphacos>pi/2 && alphasin<0); alpha=-pi-alphasin; end; if (alphacos<=pi/2); alpha=alphasin; end; gamasin = asin(T(2,1)/cos(beta)); gamacos = acos(T(1,1)/cos(beta));
97 if (gamacos>pi/2 && gamasin>0); gama=pi-gamasin; end; if (gamacos>pi/2 && gamasin<0); gama=-pi-gamasin; end; if (gamacos<=pi/2); gama=gamasin; end; A=[cos(beta)*cos(gama),-sin(gama),0;... sin(gama)*cos(beta),cos(gama),0;... -sin(beta),0,1]; H=A\T(1:3,4); H=H'; % De hoeken worden omgezet van radialen naar graden en terug weggeschreven. out=[rad2deg(alpha),rad2deg(beta),rad2deg(gama),H];
Bibliografie
Abrahams P. (2003). De atlas van het menselijk lichaam. Een volledig overzicht van de werking van het lichaam. Utrecht: Veltman Uitgevers. Argosy Publishing, Inc. (2007). Visible Body | 3D Human Anatomy. Opgeroepen op maart 17, 2008, van http://www.visiblebody.com/
Chadwick E. (2005, maart 8). Revision 3: kinematics. Opgeroepen op november 17, 2007, van http://isg.case.edu/repository/kinematics/ Craig J. J. (1989). Introduction to robotics: mechanics and control. USA: Addison-Wesley Publishing Company, Inc. Dhooghe N. & Samaey P. (2008). Computer-geleide preoperatieve planning voorschouderarthroplastiek. De rol van de scapulaire rotatie in de biomechanica van het schoudergewricht. Scriptie voorgedragen in de 2de Proef in het kader van de opleiding tot arts. UGent. Dunn F. & Parberry I. (2002). 3D math primer for graphics and game development. Plano, Texas, USA: Wordware Publishing, Inc. Jones L., Holt C. & Bowers A. Movement of the Shoulder Complex -- The development of a measurement technique based on proposed ISB standards. Paper, Cardiff University, Cardiff, UK. Kapandji I. A. (1980). Bewegingsleer aan de hand van tekeningen van de werking van de menselijke gewrichten -- Deel I: De bovenste extremiteit. Houten: Bohn Stafleu Van Loghum. Karduna A. R., McClure P. W. & Michener L. A. (2000). Scapular kinematics: effects of altering the Euler angle sequence of rotations. Journal of Biomechanics (33), 1063-1068. Magermans D. J., Chadwick E. K., Veeger H. E. & van der Helm F. C. (2005). Requirements for upper extremity motions during activities of daily living. Clinical Biomechanics (20), 591-599. Marieb E. N. & Hoehn K. (2007). Anatomy and Physiology. USA: Pearson Education. Meskers C., Vermeulen H., de Groot J., Van der Helm F. & Rozing P. (1998). 3D shoulder position measurements using a six-degree-of-freedom electromagnetic tracking device. Clin. Biomech. (13), 280-292. Murray I. A. & Johnson G. R. (2004). A study of external forces and moments at the shoulder and elbow while performing every day tasks. Clinical Biomechanics (19), 586-594.
98
Université Libre de Bruxelles. (2003, april 25). Virtual Animation of the Kinematics of the Human for Industrial, Educational and Research Purposes. Opgeroepen op mei 14, 2008, van http://www.ulb.ac.be/project/vakhum/index.html van der Helm F. C. (1997). A standardized protocol for motion recordings of the shoulder. Proceedings of the First Conference of the ISG, (pp. 7-12). Delft University of Technology, The Netherlands. Wu G., van der Helm F. C., Veeger H., Makhsous M., Van Roy P., Anglin C., et al. (2005). ISB recommandation on definitions of joint coördinate systems of various joints for the reporting of human joint motion -- Part II: shoulder, elbow, wrist and hand. Journal of Biomechanics (38), 981-992.
99