motion inspector

Modélisation biomécanique










Sommaire

Principes de modélisation 2

Un peu de théorie 3

Construction du modèle 4

Panneau de modélisation 7

Définition du segment 10

Calcul cinématique sur un segment 12

Modèle multi-segmentaire 13

Un peu de théorie 13

Modélisation simple 15

Calculs Cinétiques 17

Création de liaisons inter-segmentaires 18

Modèle Biomécanique 20

Modèle anthropométrique 20

Création des liaisons articulaires 21

Habillage des segments 22

Modélisation des articulations 24

Sommaire 27



Principes de modélisation



Dans ce chapitre nous allons aborder les premiers éléments pour construire un modèle biomécanique permettant de calculer des grandeurs cinématiques, cinétiques et dynamique.

  1. Construction d’un modèle simple.

  2. Affichage du modèle en 3D.

  3. Calcul de grandeurs cinématiques.

  4. Calcul de grandeurs cinétiques.

  5. Calcul de dynamique inverse




Le modèle que nous allons construire est un modèle de pendule simple dont les données cinématiques sont contenues dans le fichier « Pendule.c3d » du répertoire « Modélisation_1 ».

Pour construire le modèle, commencez par charger les données (Fichier/Ouvrir).



Un peu de théorie

Un modèle est en fait une description des caractéristiques physiques du solide (taille, masse, moment d’inertie etc.).

Dans cet exemple, le pendule est composé d’un seul segment (un cylindre). Les marqueurs 1 et 2 correspondent respectivement aux deux extrémités du cylindre, le troisième marqueur étant à la périphérie.

La première étape consiste donc à calculer, pour chaque segment du modèle ces six coordonnées, trois positions (X, Y, Z) et trois rotations (, , ).


Pour calculer ces coordonnées, il est nécessaire de disposer d’au moins trois marqueurs non colinéaires par segment. Ces marqueurs doivent être positionnés de la façon suivante:

  1. Les marqueurs un (P1) et deux (P2) sont sur l'axe longitudinal du segment et définissent la longueur de celui-ci.

  2. Le marqueur trois (P3) est situé dans un autre plan et détermine l'axe OX (ou OY) du segment.


Ainsi, il est possible de calculer un repère orthonormé lié au segment :



Les orientations sont ensuite calculées ainsi que la matrice de transformation:






Cette figure représente une situation typique ou les marqueurs 1 et 2 sont à chaque extrémité du segment, le marqueur 3 étant à l’extérieur.

Cette situation ne représente pas le cas idéal. Normalement les marqueurs 1 et 2 devraient se trouver sur l’axe Z. Dans cet exemple, il serait nécessaire de recalculer la position de deux marqueurs virtuels se trouvant sur cet axe (cf. chapitre sur le calcul des centres articulaires).



Construction du modèle



Avant de construire le modèle proprement dit, il faut définir les paramètres généraux de celui-ci. Les paramètres généraux du modèle correspondent au type de modèle (Libre ou modèle biomécanique déjà existant, masse totale du sujet, etc.). Tous ces paramètres sont localisés dans le panneau « Modèle » et peuvent être modifiés à tout moment.

Pour débuter la modélisation, choisissez l’option Nouveau Modèle du menu Modèle. Une boite de dialogue vous invite à choisir un type de modèle :



  1. Modèle libre : ce modèle correspond à un modèle biomécanique où vous devez définir tous les paramètres de masse, d’inertie, ce centre de masse de chaque segment.

  2. Le modèle de Winter est un modèle régressif simple, initialement en 2D, permettant d’évaluer les paramètres corporels en fonction du poids du sujet.

  3. Le modèle de Chandler peut être considéré comme un modèle très similaire au modèle de Winter. C’est donc aussi un modèle régressif basé sur le poids total du sujet pour la détermination des paramètres corporels.

Segment

Poids (Newton)

Centre de masse
(% longueur)

Tête

0.032 PC + 18.70

66.3

Tronc

0.532 PC – 6.93

52.2

Bras

0.022 PC + 4.76

50.7

Avant Bras

0.013 PC +2.41

41.7

Main

0.005 PC + 0.75

51.5

Cuisse

0.127 PC – 14.82

39.8

Jambe

0.044 PC – 1.75

41.3

Pied

0.009 PC + 2.48

40.0



  1. Le modèle d’Hanavan est un modèle géométrique, c'est-à-dire que les paramètres segmentaires (poids, inerties, centre de masse) sont définis par la forme (volume) du segment. Ce modèle défini ainsi des primitives de forme pour chaque segment. Il est ainsi possible de calculer le volume d’une forme géométrique simple. En connaissant la masse volumique du corps, il est alors possible de calculer la masse, les moments d’inertie ainsi que la position du centre de masse de tous les segments.
    Ce modèle peut être plus précis que les modèles régressifs mais nécessite de connaitre les dimensions de tous les segments (ainsi que le poids du corps).

Repère

Mesure (m)

Point

Longueur de la main

0.170

P1

Longueur du poignet aux doigts

0.090

P2

Longueur de l'avant bras

0.230

P3

Longueur du bras

0.240

P4

Longueur du coude à l'acromion

0.280

P5

Longueur du pied

0.240

P6

Longueur de la jambe

0.390

P7

Longueur de la cuisse

0.370

P8

Longueur de la tête

0.210

P9

Longueur du haut du tronc

0.220

P10

Longueur du xyphion à l'acromion

0.220

P11

Longueur du tronc central

0.230

P12

Longueur du bas du tronc

0.100

P13

Circonférence du poing

0.235

P14

Circonférence du poingnet

0.165

P15

Circonférence de l'avant bras

0.225

P16

Circonférence du coude

0.255

P17

Circonférence du bras

0.295

P18

Circonférence du pied

0.230

P19

Circonférence du coup de pied

0.250

P20

Circonférence au niveau des orteils

0.210

P21

Circonférence de la cheville

0.255

P22

Circonférence de la jambe

0.410

P23

Circonférence du genou

0.400

P24

Circonférence du haut de la cuisse

0.655

P25

Circonférence de la tête

0.535

P26

Circonférence de la poitrine

0.960

P27

Circonférence niveau xyphion

0.960

P28

Circonférence de la taille au niveau du nombril

0.870

P29

Circonférence au niveau des fesses

1.090

P30

Largeur de la main

0.090

P31

Largeur du poignet

0.070

P32

Largeur du pied

0.120

P33

Largeur des orteils

0.100

P34

Profondeur de la hanche

0.220

P35

Largeur du tronc au niveau de la poitrine

0.350

P36

Largeur du tronc au niveau du xyphion

0.300

P37

Largeur de la taille au niveau du nombril

0.280

P38

Largeur du fessier au niveau du coccyx

0.360

P39

Longueur xyphion - menton

0.300

P40

Masse (Kg)

67.000




Il est possible de différentier les mesure du coté droit et gauche. Dans ce cas, toutes les mesures sont doublées. En choisissant ce type de modèle, il est nécessaire de fournir un fichier (Texte ou Excel) contenant toutes les mesures selon le format ci-dessus.



Pour notre exemple, nous allons utiliser un modèle libre. Il sera donc nécessaire de fixer tous les paramètres segmentaires.



Panneau de modélisation


Une fois validé le type de modèle, le panneau « Modèle » est alors affiché. Celui-ci comporte deux fenêtres.

La première fenêtre donne la structure hiérarchique du modèle.

Lors de la création, le modèle ne porte pas de nom (celui-ci sera donné lors de l’enregistrement). Le nombre de segment est égale à zéro.

La seconde fenêtre donne accès à l’ensemble des paramètres du modèle.




  1. Type de modèle (cf. ci-dessus)

  2. Valeur non valide. Toutes les données égales à cette valeur ne seront pas utilisées dans les calculs du modèle.

  3. Diviseur MKSA. Le modèle calcul l’ensemble des valeurs de sortie dans le système d’unité MKSA. Ainsi si les données en entrée sont des millimètres (cas des fichiers C3D), le diviseur est 1000.

  4. Seuil de force. Cette valeur indique, dans le cas de l’utilisation de données en provenance de plateformes de forces, le seuil minimal de force. Les valeurs inférieures à ce seuil sont considérées comme nulles.

  5. Fréquence de coupure. Cette valeur indique la fréquence de coupure utilisée pour le filtrage des données. Si cette fréquence est égale à la fréquence d’échantillonnage, aucun filtrage ne sera effectué.

  6. Utiliser le nom du marqueur. En cochant cette option, le modèle prend en compte le nom des marqueurs et non pas son numéro. Il est ainsi possible d’appliquer ce même modèle à des fichiers différents, mais possédant les mêmes noms de marqueurs.

  7. Spline. Cette option permet de recalculer éventuellement les données manquantes en utilisant un algorithme de type Cubic ou Quintic Spline.

  8. Dérivée simple. La modélisation dynamique inverse nécessite de calculer des dérivées successives. Les algorithmes utilisés nécessitent un nombre de données importantes pour limiter les erreurs (effet de bords). Cependant, si le nombre de données (nombre d’images) est faible, le calcul de cette dérivée ne sera pas possible. Dans ce cas, il est préférable d’utiliser des algorithmes plus simples (mais plus imprécis) pour calculer les vitesses et les accélérations.

  9. Moyennage. Le calcul des dérivées successives génèrent des données souvent bruitées. Il est parfois nécessaire d’utiliser un filtre « moyenneur » pour éliminer ce bruit de calcul.

  10. Inverser la force de réaction. Normalement, dans un fichier C3D, les informations relatives à une plateforme de forces font références aux forces et moments de réaction. Dans certains cas, les données recueillis correspondent à la force appliquée (et non pas la réaction). Il est donc nécessaire d’inverser les forces et les moments.

  11. Masse totale. Cette valeur (en kilogramme) doit correspondre à la masse totale du sujet (et éventuellement des ses accessoires).

  12. Degré. Cette option permet de calculer l’ensemble des valeurs relatives aux rotations en degré (ou en radian si non coché).

  13. Notation angulaire. Les calculs d’angle en 3D ne peuvent pas s’exprimer directement dans les axes généraux. En effet, il n’est pas possible de projeter les angles sans générer des erreurs importantes. Il existe cependant plusieurs façons de représenter les angles en 3D : angles d’Euler (12 séquences différentes), Angle et axe, Quaternion.
    En sélectionnant le type de notation, tous les calculs angulaires seront effectués avec cette notation.

  14. Tester les marqueurs. Cette option permet de tester la validité des marqueurs avant le calcul du modèle. Si un marqueur est non valide, le modèle (pour le segment comportant ce marqueur) ne sera pas effectué.

  15. Tester les centres de masse. Cette option, similaire à l’option précédente, indique de calculer les centres de masse des segments si seulement l’ensemble des marqueurs sont valides.


Une fenêtre accessoire donne les informations sur les propriétés d’affichage du modèle.





Définition du segment

Cette étape va permettre de définir le segment. Il est nécessaire de sélectionner en premier l’axe longitudinal du segment (deux marqueurs) puis l’axe secondaire (un marqueur).

Sélectionner, dans l’ordre le point 2 (Point_2), puis le point 1 (Point_1) et enfin le point 3 (Point_3).

Une fois cette sélection faite, valider la commande du Menu « Modèle/Nouveau Segment).

Un nouveau segment est alors créé (avec des paramètres par défaut). Le panneau modèle comporte maintenant un segment.

En sélectionnant ce premier segment [1], il est alors possible de modifier l’ensemble des paramètres du segment.

Le premier ensemble de paramètre rassemble la définition du segment :



Les trois premières lignes définissent les marqueurs constituant le segment.
La masse relative est une valeur entre 0 et 1 (de la masse totale)
CG correspond à la position relative du Centre de masse en fonction de la longueur du segment (distance P1P2).
Ixx, Iyy et Izz correspondent aux moments d’inertie du segment.

L’axe principal défini l’axe entre P1 et P2.
L’axe latéral correspond à l’axe défini entre P1-P2 et P3.




La deuxième série de paramètres concerne les paramètres d’affichage du segment :
Le nom de celui-ci ,
La visualisation du segment, des forces et des moments, sa taille, couleur, forme etc.

Tous ces paramètres sont modifiables


Pour notre exemple, le segment représente 100% de la masse totale (valeur de masse relative = 1), Ixx et Iyy sont égales à 0.289 et Izz = 0.707. Le type de forme sélectionnée est un cylindre.

Une fois les paramètres fixés, il est possible de calculer (et actualiser) le modèle par la commande du Menu « Modèle/Exécuter le modèle en cours ». Une fois le modèle calculé, les icônes des segments seront modifiés.

Pour terminer le modèle, il ne reste plus qu’à l’enregistrer par la commande du menu « Modèle/Enregistrer le modèle en cours ».





Calcul cinématique sur un segment

Lorsque le segment est sélectionné, l’icône des graphiques donne accès à un ensemble de calcul cinématique (position, vitesse et accélération) ainsi qu’à des calculs cinétiques et dynamique (Energies, forces et moments).

Les graphiques ainsi générés sont du même type que les graphiques ceux la cinématique d’un marqueur (cf. Partie 1). Une fenêtre graphique est alors crée pour chaque calcul.





Ces données cinématiques et dynamiques (angulaires par exemple) sont dépendantes des paramètres du modèle.



































Modèle multi-segmentaire



Au cours de cette partie, nous allons introduire les premiers éléments pour une modélisation de plusieurs segments articulés.

Un peu de théorie



La modélisation consiste en une réduction de la complexité. Dans le cas présent, un segment corporel est considéré comme un solide indéformable. Ceci est une approximation nous permettant d’utiliser les lois de la mécanique classique.

Les lois de la mécanique newtonienne sont appliquées à ces solides :

C’est ce principe de la dynamique qui va permettre de calculer toutes les grandeurs dynamiques à partir de la connaissance de la cinématique du segment et du modèle anthropométrique associé. En effet, si on examine la première équation, la somme des forces externes est déterminée par la masse du segment (données anthropométriques) et l’accélération de son centre de masse (données cinématiques).
Ce même raisonnement peut s’appliquer pour la deuxième équation. La somme des moments externes est totalement déterminée par la matrice d’inertie (données anthropométriques) et les vitesses angulaires (données cinématiques).

Il est alors possible de modéliser un segment sous la forme suivante :

.







Ce segment, dont on a déterminé la cinématique du centre de masse (CM), possède de façon générique un torseur à son extrémité distale (Fd, Md) et un torseur à son extrémité proximale (Fp, Mp). Ces torseurs peuvent posséder une valeur quelconque (même nulle). L’importance de ces torseurs apparaît lors de la considération de la liaison entre plusieurs segments.

Liaison entre deux segments

Si on considère deux segments S1 et S2 liés par un point L :

Le point de liaison pour le segment 1 est P1 (extrémité proximale de S1) le point de liaison pour le segment 2 est D2 (extrémité distale de S2). Ces deux points sont géométriquement confondus en un point L (sur la figure ils sont disjoints pour plus de clarté).

O

S2

n appellera alors « articulation » le lieu géométrique L, commun à P1 et D2. C’est au niveau de ce point que s’effectue la détermination des forces et moments proximaux de S1 et donc des forces et moments distaux de S2.

En effet :

S1

Ainsi, si on connaît en début de chaîne segmentaire le torseur externe distal (par mesure directe par exemple), il devient alors possible de calculer le torseur proximal du segment, donc le torseur distal du segment suivant. De proche en proche, on calcul toute la chaîne articulaire.

Cette méthode de dynamique inverse est souvent appelée méthode du segment libre, car aucune hypothèse n’est faite sur la « qualité » de la liaison.



Dans un premier temps, nous allons montrer comment réaliser très rapidement un modèle mécanique nous permettant de calculer seulement les grandeurs cinématiques.

Ensuite, en incluant les informations sur les masses et les inerties, nous serons capables de calculer des grandeurs cinétiques et énergétiques.

Modélisation simple

Tout d’abord, fermer tous les fichiers ouverts dans Motion Inspector.

Ouvrer maintenant le fichier « pendule-1.c3d ». Ce fichier est un fichier de données 3D, de 1000 images (fréquence 500 Hz). Les mouvements ne se déroulent que dans un seul plan. De plus, toutes les articulations (un seul d.d.l.) possèdent un axe de rotation parallèle. Le fichier « pendule-2.c3d » correspond à ce même pendule mais avec plus de degrés de liberté.

Ce fichier possède 7 points définissant 3 segments :



Etape 0 : Nouveau Modèle (modèle libre)

La masse totale est de 4.19 + 2*2.36 = 8.91 Kg

Le coefficient MKSA est égal à 1000 (fichier C3D)



Les paramètres mécaniques du modèle sont les suivant :

Objet

Masse(Kg)

Masse relative

Ixx et Iyy

Izz

Sphère

4.19

0.470

0.0168

0.0168

Cylindre

2.36

0.264

0.0191

0.00295



Sélectionnez les marqueurs 1, 2 et 3 (dans cet ordre) et dans le menu Modèle, validez l’option « Nouveau Segment ».



Ce premier segment étant la sphère, fixer les différents paramètres pour ce segment.

Recommencez cette opération pour les deux autres segments :

Segment deux : Sélectionnez les points, dans l’ordre 2, 4 et 5 et ajoutez au modèle. Le type de forme est un cylindre pour ce segment.

Segment trois : Sélectionnez les points, dans l’ordre 4, 6 et 7, puis ajoutez ce segment au modèle.

Une fois ce modèle terminé, calculez le modèle (« Modèle/Exécuter le modèle en cours ».) puis enregistrez le (un modèle existe déjà pour ce fichier  « pendule_1.bm4 »).







Calculs Cinétiques

Une fois le modèle calculé, il est alors possible d’effectuer des calculs cinématiques et dynamiques (cf. ci-dessus). Ce modèle comporte plusieurs segments. Il devient alors possible de faire des calculs inter-segmentaires.

Ces calculs de cinématiques inter-segmentaires permettent de calculer des positions, vitesses et accélérations relatives (linéaire et angulaire). Il est nécessaire de sélectionner deux segments.

Le premier segment est le segment mobile, le deuxième doit être le segment fixe. Ainsi en sélectionnant en premier le cylindre du bas, puis le deuxième cylindre, le menu des graphiques affiche les calculs suivant :












Création de liaisons inter-segmentaires



Nous allons compléter ce modèle en ajoutant des liaisons mécaniques entre chaque segment. Ces liaisons vont permettre de calculer les efforts (forces et moments) qui seront transmis d’un segment à l’autre.

Le principe de propagation des efforts (cf. ci-dessus) détermine le mode de création des liaisons. La création doit suivre un ordre disto-proximal :

Création de la première liaison

Sélectionner la sphère, puis le marqueur « Point_1 ».
Si les segments masquent les marqueurs et donc rendent difficile la sélection, il est possible de rendre ces segments transparent (propriétés des segments). Les marqueurs deviennent alors visibles et facilement sélectionnables.

Une fois cette sélection effectuée, validez la création de la première liaison dans le menu « Modèle/Créer la première articulation ».















La liste du modèle s’enrichie maintenant d’une liste d’articulation.

Le symbole de l’articulation est de couleur rouge lorsque le modèle à été modifié et nécessite d’être recalculé.

Pour créer une liaison entre deux segments (dans notre cas, la sphère et le premier cylindre), il est nécessaire de sélection en premier le segment distal (la sphère), puis le segment proximal et enfin la point de liaison (le marqueur 2).








Une fois cette sélection faite, valider la commande du menu « Modèle/Nouvelle articulation ».

Renouveler cette opération entre le cylindre 1 et le cylindre 2.







Il ne reste plus qu’à « fermer » la chaine cinématique pour terminer ce modèle multi-segmentaire. Sélection le dernier segment (proximal) et le marqueur le plus proximal (point 6) et valider la commande du menu « Modèle/Dernière articulation ».

Le modèle est maintenant terminé et peut être recalculé. Ce modèle complet est déjà enregistré « pendule_2 .bm4 ».



Une fois le modèle total calculé, il est alors possible d’afficher des données cinématiques (position, vitesse et accélération) et dynamiques (forces et moments) pour chaque articulation.

Sélectionnez, par exemple la dernière articulation (articulation proximale). Le menu graphique vous permet maintenant d’afficher différentes courbes.



















Il est aussi possible d’afficher les forces et les moments sur l’animation 3D.

Modèle Biomécanique

La dernière étape de ce chapitre consiste à réaliser un modèle complet du membre inférieur en ajoutant des données en provenance de la plateforme de force. Ces données permettront de calculer les efforts au niveau des différentes articulations (cheville, genou et hanche).



Les données initiales (C3D) se trouvent dans le fichier « marche.c3d » du répertoire « modélisation_2 ». Ces données possèdent une particularité. Les marqueurs du talon (gauche et droit) ne sont pas valides et la modélisation du pied va donc poser un problème. Nous allons voir comment il est possible de remédier à ce problème.

Modèle anthropométrique

Le modèle anthropométrique associé est un modèle de « Chandler ». Créer un nouveau modèle, la masse totale étant de 65 kg.

La démarche de modélisation est la suivante :

  1. Premier segment : pied droit. Comme nous l’avons déjà évoqué, il n’est pas possible de sélectionner trois marqueurs pour le pied. En effet le marqueur du talon (RHEE) n’est pas un marqueur valide. Ce segment sera donc modélisé avec seulement deux marqueurs : RTOE et RANK. Dans ces conditions, le calcul des rotations autour de l’axe longitudinal ne sera pas possible. Sélectionnez ces deux marqueurs et ajouter un segment correspondant au pied.

  2. Jambe droite. Sélectionnez les trois marqueurs RANK-RKNE et RTIB. Ajouter un segment de type jambe (shank)

  3. Cuisse droite. Sélectionnez les trois marqueurs RKNE-RASI et RTHI et ajoutez un segment de type cuisse.

  4. Pied gauche. Procédez de la même façon que pour la pied droit avec les marqueurs LTOE et LANK

  5. Jambe gauche : LANK-LKNE et LTIB. Ajouter un segment de type jambe (shank)

  6. Cuisse gauche : LKNE-LASI et LTHI et ajoutez un segment de type cuisse.

Recalculer le modèle final.

Création des liaisons articulaires

Il reste maintenant à créer les liaisons entre les segments. Le fichier de données comporte, en plus des données cinématiques, des données en provenance de deux plateformes de forces. Au cours de cet essai, le sujet pose le pied droit sur la plateforme 2 et le pied gauche sur la plateforme 1. Le numéro de chaque plateforme est affiché lors de la phase de modélisation. Il est ainsi aisé de déterminer la plateforme utilisée.

  1. Contact du pied. La première liaison va symboliser le contact du pied droit sur la plateforme 2. Sélectionnez le marqueur RTOE et le segment correspondant au pied droit et créez une articulation. Il est maintenant possible de sélectionner la plateforme dans les propriétés de l’articulation.
    Dans le champ « plateforme de forces », sélectionnez la plateforme 2 pour établir une liaison entre le point le plus distal (RTOE) du segment et la plateforme de forces. Les données de cette plateforme seront utilisées pour calculer les moments et les forces distales de ce premier segment.

    Dans le cas où une plateforme de forces n’est pas directement enregistrée dans le fichier C3D, il est possible d’utiliser des données analogiques pour fournir ces mêmes informations. Le champ « contact » permet ainsi de spécifier les données de forces, de moment ainsi que du point d’application de la force (Xp et Yp).


  2. Articulation de la cheville : Sélectionnez le pied, la jambe ainsi que le marqueur RANK et créer une articulation.

  3. Articulation du genou : Sélectionnez la jambe et la cuisse ainsi que le marqueur RKNE et créer une articulation.

  4. Articulation de la hanche : Sélectionnez la cuisse et le marqueur RASI et créez l’articulation terminale.

  5. Recalculer le modèle final.



Habillage des segments

Il est possible de changer la forme des segments corporels et ainsi leur donner une forme « plus réaliste ». Par défaut, lors de la construction d’un segment, la forme adoptée est une forme de type « os ». Les propriétés du segment permettent de modifier cette forme par défaut.

Des formes simples sont proposées (sphère, cylindre et boite). Il est cependant possible d’associer un segment à une forme quelconque. Cette forme, matérialisée par un fichier (OBJ ou 3DS) peut être sélectionnée. Ce fichier forme doit se trouver dans le même répertoire que le fichier de données C3D.









En sélectionnant « forme », une boite de dialogue se sélection des fichiers vous permet de choisir le fichier. Dans notre exemple, un fichier « GolemBones.obj » rassemble une collection de formes correspondant aux différents segments corporels. Choisissez ce fichier et sélectionnez la forme (le segment) désirée dans la boite de sélection.

Pour notre exemple, nous allons choisir l’objet « RightFoot » pour symboliser le pied droit.

Il reste maintenant à orienter correctement la forme importée. En effet, les objets enregistrés dans les fichiers OBJ ou 3DS peuvent être dessinés dans un repère très différent du repère de calcul de notre modèle. Il convient donc de modifier la position et/ou l’orientation de la forme pour qu’elle s’adapte à la représentation de notre modèle.



Cette illustration montre très clairement que le pied est mal orienté (le calcanéum se trouve à la face supérieure). En première approximation si est nécessaire d’effectuer une rotation de 180 degrés autour de l’axe longitudinal.

Ces modifications de position et d’orientation sont directement accessible dans les propriétés 3D du segments.









Les champs PosX, PosY et PosZ définissent les déplacement de la forme importée par rapport au repère du segment.

Les champs Rx, Ry et Rz définissent les trois angles (en degré) d’Euler permettant l’orientation de la forme dans le repère du segment.

Il est possible d’entrer directement la valeur dans le champ ou de modifier cette valeur en utilisant les flèches (haut et bas) situées à l’extremité du champ.











De même, il est possible de modifier la taille du segment (dans le cas de formes importées, seule la taille Z est considérée).



Ainsi en modifiant la taille, la position et l’orientation, il est possible d’avoir une représentation plus réaliste du modèle.

Taille Z = 0.3
PosX = 0.03 
Pos Z = 0.05 
Rz = 180

Vous pouvez procéder de la même façon pour tous les autres segments.





Le modèle est ainsi complet. Il existe cependant un problème quant à la détermination des centres articulaires. De façon générale, les centres articulaires doivent être calculés à partir des positions des marqueurs et il est souvent, sinon toujours, erroné d’utiliser directement la position d’un marqueur pour définir les axe des segments.

Motion Inspector possède un langage de script et des bibliothèques associées permettant de calculer des centres articulaires et même des modèles complets.


Modélisation des articulations

Les données correspondant aux marqueurs sont en fait localisées sur la partie externe du segment corporel. Pour déterminer l’axe longitudinal du segment il est donc nécessaire de recalculer de nouveaux « marqueurs virtuels ».

Cas 1 : il existe 4 marqueurs par segment. Ces quatre marqueurs sont disposés symétriquement par rapport au diamètre du segment (points rouges). Il est donc facile de calculer le milieu de deux marqueurs (points verts).

Cette situation se retrouve, par exemple, pour le membre supérieur. Le bras est composé de 4 marqueurs : EpauleD1, EpauleD2, CoudeD1, CoudeD2.

Pour créer un nouveau marqueur, une seule ligne de script 3DVL est nécessaire.

mkMilieu("EpauleD1", "EpauleD2", "RSJC");

mkMilieu("coudeD1", "coudeD2", "REJC");


Ces deux lignes de script montrent comment créer deux marqueurs RSJC et REJC. Ces deux marqueurs seront assimilés, pour cet exemple, aux centres articulaires.

Ce segment possède maintenant 6 marqueurs. Le solide est alors complètement défini par au moins trois marqueurs (les deux points verts, plus un des points rouges définissant l’axe latéral).



Cas 2 : il existe deux marqueurs sur le segment. Ces deux marqueurs sont disposés sur la face externe du segment. C’est le cas pour la jambe droite et la cuisse droite.

Il est donc nécessaire de connaître une information supplémentaire : le diamètre (ou le rayon) de chaque extrémité du segment.

La première étape consiste à calculer un repère local au segment. Ce repère local peut être déterminé à partir d’autres marqueurs déjà existants. Par exemple, pour la cuisse, le repère local est construit à partir de "genouD", "epineILLD", "gdTrocD"

Une fois ce repère construit, il suffit de calculer un déplacement (en coordonnées locales : dx, dy, dz) du marqueur existant selon un axe latéral. Cette procédure de calcul d’une position en coordonnées locales « devrait » être effectuée sur des données sans mouvement (fichier statique). Cependant, si l’on ne dispose pas de telles données, le calcul de la position locale sera effectué sur le début du fichier.

Une fois la position estimée en coordonnées locales, il ne reste plus qu’à calculer la position du nouveau marqueur, en coordonnées globales, sur l’ensemble du fichier.

Toutes ces opérations sont réalisées par une seule ligne de code 3DVL :

jntMarkerOffset(debut, fin, "genouD", "epineILLD", "gdTrocD", "RKJC", -ds, 0.0, 0.0);

Le détail du calcul peut être consulté dans le fichier bibliothèque « joints.3dh » situé dans le répertoire « include » du répertoire programme.



Cas 3 : c’est le cas symétrique du cas 2. Les deux marqueurs sont situés sur la partie interne du segment.

jntMarkerOffset(debut, fin, "genouG", "epineILLG", "gdTrocG", "LKJC", ds, 0.0, 0.0);



Cas 4 : La position de l’articulation de la hanche ne peut pas être estimée par cette méthode. En effet, le trochanter ne se trouve pas au même niveau que l’articulation (hauteur et position latérale). Une autre méthode est alors utilisée1. Cette méthode permet d’estimer la position du centre articulaire de la hanche en utilisant des repères anatomiques situés sur le bassin. Une ligne de script permet de calculer cette position :

jntHipCenters("epineILLD", "epineILLG");



Ces différents cas se retrouvent dans notre exemple. En général, il est possible de définir une procédure standardisée permettant de recalculer l’ensemble des marqueurs virtuels et centres articulaires. Il suffit, par exemple, de disposer d’un script 3DVL s’appliquant à un ensemble de marqueurs disposés toujours de la même façon (aux mêmes repères anatomiques) et dont les noms sont aussi standardisés. Cette procédure, souvent appelée « Marker Set » vous permettra d’automatiser la procédure de modélisation (cf. fichier dans le répertoire « Modélisation\Marker Set » pour un exemple).



Dans notre script, le modèle est reconstruit étape par étape :

Procedure MainModel()

// Cette procédure calcule un modèle général avec un marker set classique

// afin de recalculer les positions des marqueurs pour le modèle complet.

//

Foot(); // Pied TOE->HEE(z)-AJC(y)

Shank(); // Jambe : AJC->KJC(z)-ANK(y)

// Cuisse : KJC->HIP(z)-KNEE(y)

Pelvis(); // Pelvis : RASI->LASI(y)-SACR(z)

// Abdomen : MHIP->LTHO(z)-HIP(y)

// Thorax LTHO->UTHO(z)-SHO(y)

Shoulders(); // Epaule

Head(); // Tête : MSHO->MHEAD(z)-LFHD(y)

Arms(); // Bras Humerus : SJC->EJC(z)-ELB(y)

// Avant bras : EJC->WRI(z)-FRA(y)

end;





En résumé, il est donc nécessaire de calculer de façon aussi précise que possible les axes des segments ainsi que les centres articulaires. Ces calculs dépendent de la localisation initiale des marqueurs et du type de mouvement que l’on enregistre. Ainsi, il est souvent nécessaire de disposer d’un « marker set » et d’un script associé en fonction de la situation expérimentale.







1 cf. Alexander et al. « A comparison of the accuracy of several hip center location prediction methods ». J. Biomechanics, 23, 6, 617-621.