You are on page 1of 65

UNIVERSITE ABOU BEKR BELKAID-TLEMCEN

FACULTE DE TECHNOLOGIE
DEPARTEMENT DE GENIE ELECTRIQUE ET D’ELECTRONIQUE

Projet de Fin d’Etude pour obtention du diplôme de :


Master Automatique - Option Contrôle de Processus

Intitulé :

Évaluation et simulation de l'accessibilité d'un lieu de


vie

Présenté par : BILAL BOUALEM

Soutenu le : 02 décembre 2010

Jury
 
‐ Mr Brahim CHERKI                                                                         Président 
‐ Mme Salima BORSALI                                                                          Examinatrice 
‐ Mr Abdelhak MOUSSAOUI                                                                Encadrant 
 
 
 
2009 ‐ 2010 
HandiAccess
Évaluation et simulation de l’accessibilité d’un lieu de
vie

B ILAL BOUALEM

02 décembre 2010
Remerciements

Je tiens à remercier en premier Dieu pour tout ce qu’il m’a donné.


J’adresse également mes remerciements les plus sincères à Mr Abdelhak
MOUSSAOUI qui a très volontiers accepté d’être l’encadrant de ce projet. Sa
grande connaissance dans le domaine, ainsi que son expérience, ont joué un rôle
important dans la conception de ce travail.
Je tiens à exprimer ma gratitude aux membres du jury, Mr Brahim CHERKI
et Mme Salima BORSALI, pour avoir accepté de juger ce travail.
La sollicitude du Mr Brahim CHERKI durant notre formation de Master,
m’a profondément touché. L’aboutissement de ce travail me donne l’occasion
de lui exprimer ma très sincère reconnaissance.
Je tiens à remercier toute l’équipe pédagogique du département GEE pour
avoir assuré la partie théorique de notre formation.

1
Dédicaces

Avec l’amour, le respect et l’admiration éternels je dédie ce modeste travail à


mes parents, symbole de ma gratitude et ma reconnaissance pour leurs sacrifices
et leurs présences à mes côtés contre vent et marré qui ont fait de moi ce que je
suis aujourd’hui « j’espère que j’ai fait votre fierté ».
Je dédie ce travail à mon petit frère qui m’a beaucoup aidé dans la lecture
critique de ce rapport.
Je dédie également ce travail à mes amis(e) qui m’ont encouragés(e) le long
de ce travail et je leur exprime mes remerciements pour les moments passés.
Je dédie ce travail à toutes les personnes qui m’ont aidé de près ou de loin
dans la réalisation de ce travail.

2
Table des matières

1 Introduction 6

2 État de l’art 9
2.1 Le projet « Santos T M » . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Le projet « Handisim » . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Le MoVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 LAMIH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3 Notions de base sur les chaînes articulées 16


3.1 Modélisation des robots . . . . . . . . . . . . . . . . . . . . . . . 16
3.1.1 Équations de Lagrange . . . . . . . . . . . . . . . . . . . 17
3.1.2 La notation Denavit-Hartenberg (DH) . . . . . . . . . . . 19
3.1.3 Modélisation de l’être humain . . . . . . . . . . . . . . . 21
3.2 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4 Modèles géométriques 27
4.1 Modèle géométrique direct . . . . . . . . . . . . . . . . . . . . . 27
4.2 Modèles géométriques inverses . . . . . . . . . . . . . . . . . . . 27
4.2.1 Méthode Aléatoire . . . . . . . . . . . . . . . . . . . . . 28
4.2.2 Méthodes basées sur la Jacobienne . . . . . . . . . . . . . 28
4.2.3 Méthode de la programmation linéaire séquentielle . . . . 29
4.2.4 Méthodes basées sur le gradient . . . . . . . . . . . . . . 29
4.2.5 Méthode Cyclic Coordinate Descent . . . . . . . . . . . 30
4.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

5 « HandiAccess » 42
5.1 L’outil de développement . . . . . . . . . . . . . . . . . . . . . . 42
5.1.1 Principe fondamental des MFC . . . . . . . . . . . . . . 43
5.2 La bibliothèque Roboop . . . . . . . . . . . . . . . . . . . . . . 43
5.2.1 La bibliothèque Newmat . . . . . . . . . . . . . . . . . . 44
5.2.2 La classe robot_basic . . . . . . . . . . . . . . . . . . . . 45
5.2.3 La classe Links . . . . . . . . . . . . . . . . . . . . . . . 45
5.2.4 La classe Robot . . . . . . . . . . . . . . . . . . . . . . . 46
5.3 Le moteur de rendu graphique OGRE 3D . . . . . . . . . . . . . 47
5.3.1 Gestion de la scène . . . . . . . . . . . . . . . . . . . . . 48
5.3.2 Gestion des ressources . . . . . . . . . . . . . . . . . . . 48
5.3.3 Rendu graphique . . . . . . . . . . . . . . . . . . . . . . 49
5.3.4 TinyXML . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.4 Modélisation 3D . . . . . . . . . . . . . . . . . . . . . . . . . . 49

3
TABLE DES MATIÈRES 4

5.5 Application HandiAccess . . . . . . . . . . . . . . . . . . . . . . 50


5.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

6 Conclusion et perspectives 54
Table des figures

2.1 Santos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Simulateur Santos pour Ford . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 La modélisation du corps humain en utilisant les marqueurs . . . . . . . . . . . 11
2.4 Handisim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.5 Les composants d’Handisim . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.6 A Gauche L’étude de l’ergonomie d’un véhicule A droite L’étude de l’ergo-
nomie de l’usine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.7 Principe de fonctionnement du MoVE . . . . . . . . . . . . . . . . . . . . . . 14
2.8 Projets du LAMIH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.1 Robot à n degrés de liberté . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17


3.2 Exemple de robot à un degré de liberté . . . . . . . . . . . . . . . . . . . . . . 18
3.3 Représentation de Denavit et Hartenberg . . . . . . . . . . . . . . . . . . . . . 20
3.4 Chaîne d’articulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5 Modélisation de la colonne vertébrale . . . . . . . . . . . . . . . . . . . . . . 22
3.6 Modélisation de l’épaule : A gauche : Approche de Maurel A droite : Approche
de Abdel-Malek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.7 Modèle à 21 degrés de liberté . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.1 Principe de la méthode CCD . . . . . . . . . . . . . . . . . . . . . . . . . . . 30


4.2 Schéma d’une chaîne d’articulations à n DDL . . . . . . . . . . . . . . . . . . 31
4.3 Définition des paramètres des articulations . . . . . . . . . . . . . . . . . . . . 31
4.4 La configuration courante et désiré de l’objet final . . . . . . . . . . . . . . . . 32
4.5 Une étape de la méthode CCD . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.6 Définition des angles de direction . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.7 Organigramme de la méthode CCD . . . . . . . . . . . . . . . . . . . . . . . 40

5.1 Les Applications MFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43


5.2 Structure d’OGRE 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.3 Modélisation 3D (squelette plus revêtement) . . . . . . . . . . . . . . . . . . . 49
5.4 L’application ”HandiAccess” . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.5 Structure ”HandiAccess” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.6 Arborescence décrite dans XML . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.7 Organigramme d’ ”HandiAccess” . . . . . . . . . . . . . . . . . . . . . . . . 53

6.1 Schéma de la solution proposée . . . . . . . . . . . . . . . . . . . . . . . . . . 54

5
Chapitre 1

Introduction

La réalité virtuelle est un outil complémentaire aux outils classiques d’étude et de concep-
tion, elle permet d’immerger les développeurs dans un environnement imaginaire pour repro-
duire les phénomènes réels ou de simuler les aspects de la réalité, ainsi les développeurs ont la
possibilité d’anticiper les problèmes, et de réduire les coûts et les délais...
De nombreuses enquêtes ont été faites dans plusieurs pays (comme l’enquête réalisée par
Handicaps-Incapacités-Dépendance en France ) qui ont abouti au même résultat qui considère
l’accessibilité comme le facteur déterminant qui facilite l’intégration des personnes handicapées
ou à mobilité réduite dans la société. Cela a poussé de nombreux gouvernements à rendre de
l’accessibilité un objectif à atteindre par les différentes structures.
Mais que représente l’accessibilité ?
L’accessibilité a été définie en 2006 par les pouvoirs publics français comme :
« L’accessibilité permet l’autonomie et la participation des personnes ayant un handicap,
en réduisant, voire supprimant, les discordances entre les capacités, les besoins et les souhaits
d’une part, et les différentes composantes physiques, organisationnelles et culturelles de leur
environnement d’autre part. L’accessibilité requiert la mise en œuvre des éléments complémen-
taires, nécessaires à toute personne en incapacité permanente ou temporaire pour se déplacer et
accéder librement et en sécurité au cadre de vie ainsi qu’à tous les lieux, services, produits et ac-
tivités. La société, en s’inscrivant dans cette démarche d’accessibilité, fait progresser également
la qualité de vie de tous ses membres. »[WIKI]
Dans ce projet nous allons élaborer une application qui a comme objectif d’indiquer les
différents points accessibles d’un lieu de vie d’une personne à mobilité réduite.
Ce travail est organisé en cinq chapitres.
Dans le chapitre 2, nous présenterons quelques projets et programmes de développement
dans le domaine de l’étude de l’accessibilité.
À travers le chapitre 3, nous rappelons quelques notions sur la robotique que nous avons
utilisées pour la modélisation de la partie supérieure de l’être humain et à la compréhension des
méthodes de la géométrique inverse qui seront présentées dans le chapitre suivant.
Dans le chapitre 4, nous présentons quelques modèles géométriques utilisés dans le calcul
de la posture des robots.
Nous présentons au chapitre 5 quelques outils qui nous ont servis dans la conception du
simulateur d’accessibilité que nous avons développé.
Pour finir ce rapport, une conclusion sur les résultats obtenus et quelques perspectives envi-
sagées seront donnés.

6
Motivation

Ce qui nous a motivés à choisir ce projet est en premier la noble cause que présente ce projet
qui est d’aider des personnes à mobilité réduite à s’intégrer dans la société.
Généralement, on définit la motivation comme le lien entre le savoir-faire et l’envie d’ap-
prendre de nouvelles choses en relevant des challenges et en surmontant les difficultés.
La nature différente que présente ce projet nous donne des défis et des challenges à relever
de quoi alimenter notre motivation.

Pour une personne à mobilité réduite, la simple présence d’une ou plusieurs marches ou
d’une rampe raide rend l’accès difficile à certains lieux, les images ci-dessus montrent quelques
exemples de ces situations dans notre pays.

7
Objectif

L’objectif du projet « HandiAccess » est de réaliser un simulateur 3D d’une personne à


mobilité réduite pour pouvoir évaluer l’accessibilité d’un environnement virtuel qui représente
un lieu de vie.
Alors pour atteindre cet objectif, nous allons procéder en premier lieu à modéliser de la
partie supérieure de l’être humain, puis à proposer une méthode qui permettra d’atteindre un
point désiré dans l’espace. Notre travail sera finalisé par le développement d’un simulateur 3D
du modèle de l’être humain.

8
Chapitre 2

État de l’art

« La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout
fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne
fonctionne... et personne ne sait pourquoi !» Albert EINSTEIN

Avec le progrès que connais les calculateurs et la simulation sur ordinateur, et l’utilisation de
plus en plus importante de cette dernière dans les industries de développement et d’évaluation
des prototypes, à titre d’exemple elle est utilisée pour les aménagements intérieurs des lieux de
vie comme les appartements, véhicules..., permettant de faciliter les tâches quotidiennes.
De nombreux laboratoires se sont intéressés à la simulation des mouvements de l’être hu-
main pour combler les besoins des industriels. Il existe plusieurs projets sur la simulation des
humains, dans cette partie nous citons quelques-uns.
En premier, nous commençons par décrire le projet Santos qui est considéré comme le leader
dans ce domaine. Ensuite, nous parlons du projet « Handisim » qui a été réalisé par des étudiants
de L’université de Laval Virtual pour simuler les déplacements d’une personne sur fauteuil
roulant dans une ville et reproduire les difficultés rencontrées par ces personnes.
Puis nous citons un exemple d’application d’évaluation de l’accessibilité d’un environne-
ment nommé MoVE 1 , elle est utilisée par le groupe PSA (constructeur d’automobile) afin de
simuler l’accessibilité dans les véhicules et l’ergonomie des usines.
Finalement, nous décrivons des projets menés au LAMIH 2 qui ont pour but d’étudier l’er-
gonomie des objets utilisés dans la vie quotidienne.

2.1 Le projet « Santos T M »


Développé dans les laboratoires de l’université d’Iowa, il est considéré comme le leader
mondial dans le domaine de la simulation humaine. Ce projet a vu le jour grâce au profes-
seur Karim Abdel-Malek [SANTOS] qui n’a cessé de le développer année après année jusqu’à
atteindre sa place actuelle. Le professeur Abdel-Malek a compté sur le financement du départe-
ment de la défense des États-Unis. [SANTOS]
1. MoVE : Modular Virtual Environment
2. LAMIH : Laboratoire d’Automatique, de Mécanique et d’Informatique industrielles et Humaines

9
CHAPITRE 2. ÉTAT DE L’ART 10

F IGURE 2.1 – Santos

Depuis 2010, Ford utilise Santos pour la simulation et l’évaluation de l’accessibilité dans
ses usines et ses ateliers.

F IGURE 2.2 – Simulateur Santos pour Ford

Il est très important de noter que Santos est le seul outil de simulation biomécanique qui
prend en compte la cause et l’effet du mouvement.

Prédiction de la posture
Le VSR 3 est le laboratoire travaillant sur le projet SantosT M et développant des techniques
afin d’offrir une simulation réaliste de l’être humain.
En utilisant des marqueurs, les chercheurs du VSR peuvent modéliser les mouvements
de l’être humain. La figure (2.3) montre le fonctionnement de ces marqueurs, également elle
illustre le modèle du corps humain entier.[FARRELL2005]
3. VSR : Virtual Soldier Research
CHAPITRE 2. ÉTAT DE L’ART 11

F IGURE 2.3 – La modélisation du corps humain en utilisant les marqueurs

En se basant sur des méthodes d’optimisation, les chercheurs du VSR élaborent des tech-
niques pour calculer la posture du modèle qui permet d’atteindre un point désiré. La manière de
prédire la posture change en fonction de la tâche à exécuter ce qui exige l’utilisation de plusieurs
méthodes telles que la méthode Cyclic Coordinate Descent ou la méthode pseudo inverse, etc
[FARRELL2005].
Pour une modélisation réelle de l’être humain, de nombreux paramètres sont pris en consi-
dération tels que le champ de vision, la force des muscles, la fatigue, etc [SANTOS].
CHAPITRE 2. ÉTAT DE L’ART 12

2.2 Le projet « Handisim »


Trouver son parcours dans une ville peut s’avérer un vrai problème pour les personnes se
déplaçant en fauteuil roulant, dans ce cadre, ce projet a pour objectif de simuler l’accessibilité
d’une ville. Cet outil de simulation recrée les difficultés rencontrées par les personnes en fauteuil
roulant dans leur vie quotidienne. [HANDI]

F IGURE 2.4 – Handisim

Il est constitué d’une unité de calcul qui gère le rendu 3D en fonction des entrées données
par l’utilisateur et un fauteuil d’essai qui constitue l’outil de commande, des capteurs installés
sur les roues arrières du fauteuil pour transmettre la vitesse de chaque roue. D’autres capteurs
sont aussi placés sur la tête pour commander la direction de déplacement. Pour un meilleur
réalisme de visualisation, des lunettes stéréos sont aussi utilisées.
La figure (2.5) résume les composants de ce simulateur.
CHAPITRE 2. ÉTAT DE L’ART 13

F IGURE 2.5 – Les composants d’Handisim

2.3 Le MoVE
Le MoVE est un moteur de calcul qui offre un environnement virtuel modulable qui varie
en fonction des besoins, il est appelé CAVE 4 .
Plusieurs entreprises, comme la société PSA responsable sur la production de véhicules
automobiles sous le nom de Peugeot et Citroën, utilisent ce moteur dans ses laboratoires de re-
cherche et développement afin de simuler et améliorer l’ergonomie de leurs véhicules.[PSASIM]
Grâce à ses différentes configurations, les développeurs commutent d’une configuration à
une autre afin de s’assurer que le produit est accessible à tous les individus. Non seulement le
produit mais le processus de production est soumis aussi à la simulation pour trouver l’aména-
gement intérieur de l’usine qui offre la meilleur productivité.
4. CAVE : Cave Automatic Virtual Environment
CHAPITRE 2. ÉTAT DE L’ART 14

F IGURE 2.6 – A Gauche L’étude de l’ergonomie d’un véhicule A droite L’étude de l’ergono-
mie de l’usine

Principe de fonctionnement
Il se base sur une idée simple, le calculateur se charge de diviser l’image en 3 parties, chaque
partie est projetée sur un miroir grâce à un projecteur, par réflexion, l’image s’affiche sur un mur
situé en face du miroir, l’individu est situé derrière le mur.
La figure2.7 résume le dispositif.

F IGURE 2.7 – Principe de fonctionnement du MoVE

2.4 LAMIH
Situé à Valenciennes au nord de la France, le LAMIH contient plusieurs plateformes où
chacune d’elles a son objectif. L’une de ces plateformes est nommée « Analyse gestuelle 3D »,
elle est destinée à mener des études sur l’ergonomie des objets tel qu’un sac à dos où une voiture
pour faciliter la vie quotidienne de l’être humain.[ANALYS3D]
En comptant sur un financement de la région Nord-Pas de Calais et le FEDER, ce laboratoire
alimente régulièrement des projets qui ont pour objectif l’étude de l’ergonomie des véhicules et
leur accessibilité par rapport aux personnes âgées ou du portage pendant la marche...
La figure (2.8) expose la nature des projets réalisés dans ce laboratoire.
CHAPITRE 2. ÉTAT DE L’ART 15

F IGURE 2.8 – Projets du LAMIH

Conclusion
Nous avons vu dans ce chapitre qu’il existe plusieurs applications qui sont développées dans
des domaines différents et pour le but de faciliter l’accès.
Chapitre 3

Notions de base sur les chaînes articulées

« On fait une science avec des faits, comme on fait une maison avec des pierres, mais une
accumulation de faits ne fait pas plus une science qu’un tas de pierres n’est une maison.»
Henri POINCARÉ

L’être humain a été, et depuis toujours, un système biologique complexe qui a convoité les
chercheurs à se mesurer à lui et à relever les défis technologiques et scientifiques qui conduisent
à copier ses habitudes (marcher, penser, sentir...).
Dans ce contexte, la robotique humanoïde est la plus proche du point de vue de la théorie et
la technologie à l’être humain, elle a été depuis longtemps un sujet qui nourrissait les textes de
science-fiction.
Dans ce chapitre, nous allons commencer par présenter quelques notions de base sur la
robotique humanoïde et la modélisation de l’être humain en présentant deux méthodes de mo-
délisation des robots. La première méthode est celle des équations de Lagrange et la deuxième
la notation Denavit-Hartenberg.
Ensuite, nous présentons le modèle de la partie supérieure de l’être humain.

3.1 Modélisation des robots


Les chaînes articulées sont une série d’articulations reliées entre elles par des liens (liaisons).
Généralement, le dernier lien représente l’objet de manipulation, il peut être une pince, une
main... La littérature donne plusieurs appellations à cette objets nous avons choisi de l’appeler
l’objet final.
Afin de simplifier la modélisation des robots en général, on utilise une manière propre aux
robots en symbolisant les liens par des segments de droite. Quant aux articulations, on les re-
présente par différents symboles selon leur type.
Le tableau (3.1) résume les différents symboles d’une articulation.

16
CHAPITRE 3. NOTIONS DE BASE SUR LES CHAÎNES ARTICULÉES 17

Type d’articulation Rotationnelle Prismatique

2D

3D
TABLE 3.1 – Symboles pour représenter les articulations des robots

Il existe deux méthodes pour la modélisation de robots : la première utilise les équations
de Lagrange, elle est utilisée en général pour le contrôle de sa dynamique. La deuxième est
plus adaptée à la géométrique inverse qui utilise les angles entre les repères associés à chaque
articulation.

3.1.1 Équations de Lagrange


Les équations de Lagrange sont basées sur les lois de la dynamique de Newton. Cette mé-
thode permet d’aboutir à des équations différentielles qui régissent le robot.
Utilisée pour des applications dynamiques, cette méthode offre la possibilité de simuler et
contrôler les mouvements de robots.
Nous considérons un robot à n degrés de liberté illustré sur la figure (3.1).[KELLY2005]

F IGURE 3.1 – Robot à n degrés de liberté

L’énergie totale de ce robot est la somme de l’énergie cinétique K et l’énergie potentielle U.

E(q, q̇) = K(q, q̇) +U(q)


où q = [q1 , q2 , . . . , qn ]T
Le Lagrangien L(q, q̇) d’un robot est la différence entre son énergie cinétique et son énergie
potentielle :
CHAPITRE 3. NOTIONS DE BASE SUR LES CHAÎNES ARTICULÉES 18

L(q, q̇) = K(q, q̇) −U(q)


Nous supposons que l’énergie potentielle U est due seulement à des forces conservatrices
telles que la gravité ou la force de compression présente dans les ressorts.
La forme vectorielle des équations de Lagrange de mouvement sont données par :
 
d ∂ L(q, q̇) ∂ L(q, q̇)
− = τi (3.1)
dt ∂ q̇i ∂ qi
Où i = [1, ..., n]
Et τi correspond aux forces externes et aux couples délivrés par les actionneurs sur chaque
articulation aussi bien à d’autres forces non-conservatives (les frottements. . . ).
L’utilisation des équations de Lagrange pour déduire le modèle du robot peut être résumée
en quatre étapes principales :
1. Calcul de l’énergie cinétique K(q, q̇).
2. Calcul de l’énergie potentielle U(q).
3. Calcul du Lagrangien L(q, q̇).
4. Développement des équations de Lagrange (3.1).

3.1.1.1 Exemple
Soit le robot à un degré de liberté illustré sur la figure (3.2).[KELLY2005]

F IGURE 3.2 – Exemple de robot à un degré de liberté

Il est constitué d’une liaison solide formée par deux parties de longueur l1 et l2 et de masses
m1 et m2 qui sont, pour simplifier le problème, concentrées dans leurs centres de gravité respec-
tives, et localisées dans leurs extrémités. l’angle ϕ est considéré constant.
Le robot ne peut tourner qu’autour de l’axe Z0 . Le mouvement de rotation est représenté par
l’angle q1 dans la figure (3.2).
Puisque le robot a un degré de liberté, alors q est un scalaire q = q1 .
La fonction de l’énergie cinétique k(q, q̇) du robot est donnée par l’équation suivante :
CHAPITRE 3. NOTIONS DE BASE SUR LES CHAÎNES ARTICULÉES 19

1
k(q, q̇) = m2 l22 cos2 (ϕ) q̇2
2
et la fonction de l’énergie potentielle correspondante

U(q) = m1 l1 g + m2 (l1 + l2 sin(ϕ))g


Nous supposons que l’énergie potentielle est nulle au plan (x0 , y0 ), et notant que l’énergie
potentielle est indépendante de l’angle q.
Alors dans ce cas le Lagrangien L(q, q̇) est
m2 2 2
L(q, q̇) =l cos (ϕ) q̇2 − m1 l1 g − m2 (l1 + l2 sin(ϕ))g
2 2
De là nous pouvons déduire

∂ L(q, q̇)
= m2 l22 cos2 (ϕ) q̇
∂ q̇
 
d ∂ L(q, q̇)
= m2 l22 cos2 (ϕ) q̈
dt ∂ q̇
∂ L(q, q̇)
=0
∂q
Donc l’équation de Lagrange correspondante est

m2 l22 cos2 (ϕ) q̈ = τ


Que nous pouvons écrire comme vecteurs d’états
  " #
d q q̇
= τ
dt q̇ m2 l 2 cos2 (ϕ)
2

3.1.2 La notation Denavit-Hartenberg (DH)


Ce type de modélisation est plus simple à manipuler est plus adéquat aux calculs des mo-
dèles géométriques directs ou inverses. Cette modélisation se base sur l’idée d’associer des
repères pour chaque articulation d’une manière précise, puis extraire des paramètres qui tra-
duisent l’état ou la posture du robot.
Les repères locaux sont associés à chaque articulation suivant les étapes suivantes :
[ALOUANI2009]
1. Numéroter les articulations de 1,...,n degrés de liberté.
2. Aligner les axes Z i en fonction du mouvement (Si c’est une articulation rotationnelle la
rotation se fait sur l’axe Z et si elle est prismatique le déplacement se fait sur l’axe Z
aussi).
3. Aligner les axes Xi tels qu’ils soient perpendiculaires aux axes Z i−1 et Z i et ont comme
direction de l’articulation i − 1 vers i.
4. L’intégration de l’axe Yi est facultative car il ne présente aucune utilité pour extraire les
paramètres du modèle alors il est préférable de ne pas le prendre en compte dans la repré-
sentation pour ne pas l’encombrer.
CHAPITRE 3. NOTIONS DE BASE SUR LES CHAÎNES ARTICULÉES 20

Après avoir associé à chaque articulation un repère local, il est temps d’extraire les paramètres
du modèle, pour cela il existe plusieurs manières pour les avoir. La plus utilisée et la plus
adéquate aux bras manipulateurs est la représentation de Denavit et Hartenberg (DH). Depuis
l’apparition des méthodes informatiques, cette méthode reste l’outil le plus utilisé dans la mo-
délisation des robots, son atout majeur se résume dans le fait qu’il fournit la matrice de passage
d’une articulation à une autre avec seulement quatre paramètres qui sont extraits de la manière
suivante :[ALOUANI2009]
1. le premier paramètre est appelé θi , il représente l’angle de l’articulation trouvé en me-
surant l’angle entre Xi−1 et Xi . (dans le cas des articulations prismatiques, ce paramètre
reste constant).
2. Le deuxième paramètre est di , il représente la distance qui sépare l’origine du repère i − 1
et l’axe Xi sur le long de l’axe Zi−1 . (dans le cas d’une articulation rotationnelle, di est
constant).
3. Le troisième paramètre est ai , il représente la distance entre l’origine de l’axe Xi et l’al-
longement de l’axe Zi−1 .
4. Finalement, αi représente l’angle de compensation qui sépare Zi−1 et Zi sur l’axe Xi .
La figure (3.3) donne un schéma explicatif des significations de chaque paramètre.

F IGURE 3.3 – Représentation de Denavit et Hartenberg

Comme nous l’avons mentionné précédemment, ces quatre paramètres sont suffisants pour
le calcul de la matrice de transformation qui relie les deux articulations i − 1 et i. Cette matrice
est calculée comme suit :
 
cos θi −cos αi sin θi sin αi sin θi ai cos θi
(i−1)
 sin θi cos αi sin θi −sin αi cos θi ai sin θi 
Ti = 
 0

sin αi cos αi di 
0 0 0 1
Nous constatons qu’elle est composée de deux parties distinctes, la première est une matrice
3 × 3 qui représente l’orientation du repère i par rapport au repère i − 1 :
 
cos θi −cos αi sin θi sin αi sin θi
R =  sin θi cos αi sin θi −sin αi cos θi 
0 sin αi cos αi
CHAPITRE 3. NOTIONS DE BASE SUR LES CHAÎNES ARTICULÉES 21

La deuxième partie représente le vecteur position de l’origine du repère i dans le repère


i−1 :
 
ai cos θi
P =  ai sin θi 
di
Le plus souvent, et pour des raisons de clarté, les quatre paramètres sont classés dans un
tableau appelé Tableau des paramètres DH où chaque ligne correspond à un degré de liberté et
donne la matrice de transformation homogène associée.
Il est évident de constater que c’est la manière la plus approprié pour notre application. Dans
le reste du travail nous allons utiliser cette méthode.

3.1.3 Modélisation de l’être humain


Dans cette section nous allons considérer l’être humain comme étant une série d’articula-
tions et de liens appelés les chaînes articulées.
La figure (3.4) illustre cette structure :

F IGURE 3.4 – Chaîne d’articulations

Depuis plusieurs années, de nombreuses recherches ont été menées dans le but de modéliser
l’être humain. De nos jours il existe plusieurs modèles, chacun d’eux présente une avancée dans
la modélisation de l’homme. Dans ce qui suit, un modèle de la partie supérieure de l’être humain
(Colonne vertébrale, épaule, bras) sera proposé.

3.1.3.1 Modélisation de la colonne vertébrale


La colonne vertébrale est un ensemble d’os entassés l’un sur l’autre ce qui lui donne la
propriété de bouger dans toutes les directions et rend difficile sa modélisation.
La colonne vertébrale est constituée de trois parties majeures :
La première partie est la partie lombaire située sur l’extrémité inférieure de la colonne sui-
vie de la partie thoracique et enfin la partie cervicale située en haut de la colonne vertébrale.
Un modèle de douze degrés de liberté sera développé dans la section suivante, il est capable
d’exprimer les différents gestes possibles de la colonne.[WIKI]
La figure (3.5) montre la manière de disposer les articulations.
CHAPITRE 3. NOTIONS DE BASE SUR LES CHAÎNES ARTICULÉES 22

F IGURE 3.5 – Modélisation de la colonne vertébrale

3.1.3.2 Modélisation de l’épaule


À cause de la complexité de son anatomie, il existe différentes manières pour modéliser
l’épaule. En 1998, Maurel utilise quatre articulations interconnectées. Ce modèle permet d’in-
terpréter avec précision l’interdépendance entre les articulations. Par conséquent, bien que le
modèle permette des rotations uniques, il est réduit à cinq DDLs (degrés de liberté) en simpli-
fiant les rotations communes.
En 2001 Abdel-Malek a proposé une autre approche basée sur l’interprétation du mou-
vement brut final, où seules, la position et l’orientation finales qui importent. Il utilise deux
articulations prismatiques et trois articulations rotationnelles.[FARRELL2005]
La figure (3.6) montre les deux manières de modélisation.

F IGURE 3.6 – Modélisation de l’épaule : A gauche : Approche de Maurel A droite : Approche


de Abdel-Malek

Bien que l’approche d’Abdel-Malek soit simple à implémenter, elle ne donne pas des ani-
mations précises à l’encontre de l’approche de Maurel simplifiée qui est plus précise, mais
difficile à implémenter. Dans le cas de notre projet, nous utiliserons l’approche de Maurel
simplifiée.[FARRELL2005]
CHAPITRE 3. NOTIONS DE BASE SUR LES CHAÎNES ARTICULÉES 23

3.1.3.3 Modèle de la partie supérieure de l’être humain (colonne vertébrale, épaule, bras)
Après avoir modélisé chaque partie indépendamment, nous allons dans cette section les
assembler afin d’obtenir un modèle global de la partie supérieure de l’être humain.
La figure (3.7) donne l’aspect global du modèle.

F IGURE 3.7 – Modèle à 21 degrés de liberté

C’est au niveau des contraintes que nous pouvons définir l’handicap d’une personne. Dans le
tableau (3.3), nous présentons les contraintes que nous avons imposées sur chaque articulation.
CHAPITRE 3. NOTIONS DE BASE SUR LES CHAÎNES ARTICULÉES 24

Min Max
π π
q1 −
6 6
π π
q2 −
12 12
π π
q3 −
6 6
π π
q4 −
12 12
π π
q5 −
12 18
π π
q6 −
12 12
π π
q7 −
12 12
π π
q8 −
12 18
π π
q9 −
12 12
π π
q10 −
12 12
π π
q11 −
12 18
π π
q12 −
12 12
π π
q13 −
6 6
π π
q14 −
6 6
π π
q15 −
2 2

q16 0
3
π π
q17 −
6 6

q18 0
3
π π
q19 −
6 6
π π
q20 −
2 2
π π
q21 −
9 9

TABLE 3.3 – Les contraintes de chaque articulation

Le tableau (3.5) contient tous les paramètres DH du modèle présenté précédemment pour
une posture que nous avons choisi arbitrairement. [ALOUANI2009]
CHAPITRE 3. NOTIONS DE BASE SUR LES CHAÎNES ARTICULÉES 25

θi di αi ai
π π
1 0 0
2 2
π π
2 0 0
2 2
π π
3 L1 0
2 2
π π
4 0 0
2 2
π π
5 0 0
2 2
π π
6 L2 0
2 2
π π
7 0 0
2 2
π π
8 0 0
2 2
π π
9 L3 0
2 2
π π
10 0 0
2 2
π π
11 0 0
2 2
π π
12 − L4 L5
2 2
π
13 0 0 0
2
π
14 0 0 − L6
2
π
15 0 0 0
2
π π
16 0 0
2 2
π
17 0 L7 0
2
π
18 0 0 0
2
π π
19 L8 0
2 2
π π
20 0 0
2 2
21 0 0 0 0
TABLE 3.5 – Les paramètres Denavit-Hartenberg

Où l1 = L2 = L3 = 10 ; L4 = 5 ; L5 = L6 = 10 ; L7 = L8 = 30 ;
CHAPITRE 3. NOTIONS DE BASE SUR LES CHAÎNES ARTICULÉES 26

3.2 Conclusion
Dans ce chapitre, nous avons présenté deux méthodes différentes utilisées pour la modéli-
sation des robots, chacune d’elles a ses propres spécificités.
Le modèle que nous utilisons dans notre travail contient 8 articulations à 21 degrés de liberté.
Il est clair que ce modèle est difficile à manipuler et encore plus à implémenter.
Dans ce qui suit, nous allons proposer des techniques et des modèles géométriques utilisées
pour le calcul de la posture d’un humain.
Chapitre 4

Modèles géométriques

« La plus grande gloire n’est pas de ne jamais tomber, mais de se relever à chaque chute.»
CONFUCIUS

Il existe deux types des modèles géométriques, la géométrique directe utilisée pour déter-
miner la position de l’objet final par rapport au repère de la base à partir de l’angle de chacune
des articulations du robot ou de la posture.
La géométrique inverse fournit la posture du robot à partir des coordonnées de l’objet final.
Dans ce qui suit, nous allons exposer les différentes techniques et méthodes utilisées dans
chacun de ces modèles.

4.1 Modèle géométrique direct


C’est une technique utilisée afin de déterminer les coordonnées de l’objet final dans le repère
global, il s’agit d’une conversion des coordonnées articulaires aux coordonnées cartésiennes.
Mathématiquement, nous pouvons l’exprimer de la manière suivante :

X = f (q)
Où X est la matrice homogène (4 × 4). et q = [q1 , ..., qn ]T qui représente la posture actuelle
du robot.
La matrice homogène représente la matrice de passage d’une articulation i − 1 à l’articula-
tion i, le passage de l’articulation 1 à n peut être exprimé par :

(1)
Tn =(1) T2 × .... ×(n−1) Tn

4.2 Modèles géométriques inverses


Au contraire de la géométrique directe, la géométrique inverse traduit les positions et les
orientations de l’objet final des coordonnées cartésiennes vers les coordonnées articulaires, en
d’autres termes, délivrer la configuration de chaque articulation qui permet d’atteindre un point
désiré de l’espace.
Mathématiquement, le problème de la géométrique inverse est régi par l’équation suivante :

27
CHAPITRE 4. MODÈLES GÉOMÉTRIQUES 28

q = f −1 (X) (4.1)
Où f −1 (X) représente un système de n équations non-linéaires avec n inconnus.
Dans ce qui suit nous allons présenter quelques approches utilisées pour résoudre l’équation
(ou le système) (4.1).

4.2.1 Méthode Aléatoire


Cette méthode est la plus simple, elle consiste à choisir des valeurs aléatoires pour toute
la chaîne articulaire puis vérifier si la distance entre l’objet final et le point désiré diminue,
ces valeurs seront gardées sinon il faut choisir d’autres valeurs et répéter le processus itératif
jusqu’à atteindre l’objectif.

4.2.2 Méthodes basées sur la Jacobienne


Cette approche est une méthode d’optimisation itérative très utilisée dans la géométrique
inverse vu sa simplicité d’implémentation.
Pour un système à n inconnus et m contraintes, la Jacobienne J est une matrice m × n qui
contient les dérivées partielles des contraintes par rapport aux inconnus. [BOULIC2003]
Dans ce qui suit, nous allons décrire des méthodes d’optimisations basées sur la Jacobienne
utilisées pour la résolution des problèmes de la géométrique inverse.

4.2.2.1 Méthode de la transposée de la Jacobienne


Dans la plupart des cas, la Jacobienne J n’est pas une matrice carrée donc elle n’est pas
inversible. Pour remédier à ce problème, il existe la méthode de la transposée de la Jacobienne
qui consiste à remplacer la matrice inverse de J par sa transposée ce qui donne

∆q = αJ T ∆x
Où ∆x représente le vecteur de distance entre la position actuelle de l’objet final et la position
désirée. α est un scalaire qui représente généralement le gradient d’une fonction coût.

4.2.2.2 Méthode de la pseudo-inverse de la Jacobienne


Le principe est de calculer une matrice J + appelée la pseudo inverse qui est une estimation
de la matrice inverse J.[BOULIC2003, WIKI]
Elle est calculée de la manière suivante :

J + = lim (J T J + δ I)−1 J T = lim J T (J T J + δ I)−1


δ →0 δ →0

Dans le cas où J n’est pas réelle, la J T doit être remplacée par l’adjointe de J.
Dans la géométrique inverse J + fournit à chaque itération, une correction de l’articulation
∆q, cette correction est exprimée comme suit :

∆q = J + ∆x + PN(J) ∆α
Où ∆x est le vecteur qui exprime la distance entre l’objet final et le point désiré, PN(J) représente
l’opérateur de projection sur le noyau de J qu’on notera N(J), il est obtenu par :
CHAPITRE 4. MODÈLES GÉOMÉTRIQUES 29

PN(J) = I − J + J
∆α est le gradient de la fonction coût g(q) exprimé dans l’espace articulaire.
Malgré sa simplicité, la méthode de la pseudo-inverse est très lente à cause de l’étape sup-
plémentaire de calcul la matrice J + .

4.2.3 Méthode de la programmation linéaire séquentielle


Cette méthode est basée sur l’idée de rendre le système et ces contraintes linéaires autour
d’un point de fonctionnement à l’aide la série de Taylor. Le problème linéarisé est alors résolu
grâce aux méthodes d’optimisation linaire, à titre d’exemple, nous citons l’utilisation de la
méthode simplexe.[KHALIL1995]

4.2.4 Méthodes basées sur le gradient


4.2.4.1 Méthode de la descente de gradient
C’est une méthode d’optimisation permettant de déterminer une série qui tend vers le mini-
mum désiré.[ALOUANI2009]
L’algorithme est le suivant
– Choisir un vecteur initial q0 .
Chaque itération consiste à :
– Calculer le gradient gi = ∇ f (qi−1 ).
– Calculer le nouveau vecteur qi = qi−1 − αgi
Où α est un scalaire choisi qui influence la vitesse de convergence de la méthode : s’il est choisi
très grand, l’algorithme sera rapide mais instable et il présentera des oscillations autour de la
solution, et s’il est choisi petit l’algorithme sera plus lent
– Si le résultat est satisfaisant alors s’arrêter, sinon mettre qi−1 = qi et recalculer le gradient.
Pour de meilleurs résultats, il est préférable que le choix du vecteur initial soit proche de la
solution, dans le cas contraire, il n’est pas à exclure de tomber sur un minimum local.

4.2.4.2 Méthode de la programmation quadratique séquentielle


SQP 1 est un algorithme d’optimisation. L’idée de base de cette méthode consiste à résoudre
des problèmes non linéaires avec contraintes en utilisant des séquences de sous-problèmes de
programmation quadratique. Les contraintes de chaque sous-problème sont des linéarisations
des contraintes de départ, la fonction objectif du sous-problème est l’approximation quadratique
de la fonction du Lagrangien.
Cette méthode est très utilisée pour résoudre les problèmes d’optimisations surgissant dans
les calculs des trajectoires optimales.
Pendant de longues années, la méthode SNOPT 2 (c’est une implémentation particulière de
l’algorithme SQP) a fait les succès de OTIS 3 qui utilise la commande optimale par simulation
implicite. [GILL2005, OTIS]
1. SQP : Sequential Quadratic Programming
2. SNOPT : Sparse Nonlinear OPTimizer
3. OTIS : Optimal Trajectories by Implicit Simulation
CHAPITRE 4. MODÈLES GÉOMÉTRIQUES 30

Il existe d’autres méthodes basées sur le gradient, nous citons à titre d’exemple la MMFD 4 ,
mais pour toutes ces méthodes, si le point initial est très loin du point désiré alors il est possible
que la méthode tende vers un minimum local.[MI]

4.2.5 Méthode Cyclic Coordinate Descent


Dans cette section, nous nous sommes inspirés de l’article [WANG1991]pour rédiger cette
section.
C’est une méthode d’optimisation qui est basée sur la correction de l’angle d’une seule
articulation à la fois, de la dernière jusqu’à la première et de façon itérative. En d’autres termes,
elle consiste à transformer des problèmes à n dimensions en n problèmes à une dimension.
La figure (4.1) résume le principe de la CCD 5 .

F IGURE 4.1 – Principe de la méthode CCD

Dans cette section, nous expliquons les différentes étapes de la méthode Cyclic Coordinate
Descent (CCD).

4.2.5.1 Formulation du problème


Ce travail s’intéresse essentiellement aux bras manipulateurs avec des liens rigides, des
structures en boucle ouverte et des articulations à un seul degré de liberté. La figure (4.2) montre
qu’il existe (n + 1) repères sur un bras manipulateur de n degrés de liberté.
4. MMFD : Modified Method of Feasible Directions
5. CCD : Cyclic Coordinate Descent
CHAPITRE 4. MODÈLES GÉOMÉTRIQUES 31

F IGURE 4.2 – Schéma d’une chaîne d’articulations à n DDL

Le premier système de coordonnées est considéré comme le repère de référence, et fixé à la


terre. Le système attaché à l’objet final est appelé (xh yh zh ).
Les symboles utilisés dans ce projet pour définir les différents paramètres des liens sont
illustrés sur la figure (4.3).

F IGURE 4.3 – Définition des paramètres des articulations

Les axes des articulations sont alignés avec les axes z des systèmes de coordonnés ; si l’ar-
ticulation i est une articulation rotationnelle, alors l’angle de rotation θi est la variable de l’ar-
ticulation ; par contre si l’articulation i est prismatique, alors la variable de l’articulation est le
déplacement de l’articulation si .
Les coordonnées cartésiennes de l’objet final sont définit par le vecteur position Ph (q) et la
matrice d’orientation [Rh (q)]. Où
– Ph (q) : est la coordonnée du point d’origine du système de coordonnés (xh yh zh ).
CHAPITRE 4. MODÈLES GÉOMÉTRIQUES 32

– [Rh (q)] = [h1 (q)|h2 (q)|h3 (q)], où h1 (q), h2 (q) et h3 (q) sont les vecteurs unités le long des
axes xh , yh et zh comme le montre la figure (4.4).
– q = [q1 , q2 , . . . , q3 ]t est le vecteur des variables d’articulations.
Le problème de géométrique inverse peut être formulé comme suit :

Problème P1 : Étant données les coordonnées cartésiennes désirées de l’objet final Pd et


[Rd ] = [d1 |d2 |d3 ], où d j ( j = 1 to 3) sont les vecteurs unités du système xd ,yd et zd (voir figure
(4.4)). Trouver le vecteur des variables des articulations q tel que Ph (q) = Pd et [Rh (q)] = [Rd ]].
De plus le vecteur solution doit satisfaire les limitations physiques des articulations, c’est-à-dire
qli ≤ qi ≤ qui Avec qli et qui sont respectivement les bornes supérieures et inférieures de la ième
articulation.

F IGURE 4.4 – La configuration courante et désiré de l’objet final

Si q n’est pas une solution du problème P1, alors la position calculée ne correspond pas
à la position désirée, comme le montre la figure (4.4). Cependant, si nous pouvons trouver un
d d
vecteur de correction q tel que q∗ = q + q représente une solution au problème P1, alors le
point oh coïncidera avec od et les deux systèmes de coordonnées doivent être identiques.
Ceci implique que :
d
|| p(q∗ )|| = ||Pd − Ph (q∗ )|| = 0 et d j · h j (q∗ ) = 1 où ||.|| symbolise la norme Euclidienne
du vecteur.et ( · ) exprime le produit scalaire entre vecteurs. Ainsi, les erreurs entre les positions
actuelles et désirées de l’objet final peuvent être décrites par les fonctions suivantes :
– Erreur de position :
D d d
P(q) = P(q) · P(q) (4.2)
– Erreur d’orientation :
3
DO(q) = ∑ (d j · h j (q) − 1)2 (4.3)
j=1
– Erreur Totale :
E(q) = DP(q) + DO(q) (4.4)
CHAPITRE 4. MODÈLES GÉOMÉTRIQUES 33

Et le problème de géométrique inverse devient un problème de minimisation :

Problème P2 : Trouver q∗ tel que E(q∗ ) = min { E(q) | qli ≤ qi ≤ qui , i = 1 à n} et E(q∗ ) ≤ e
e
où → 0 est l’erreur tolérée.
Notons que (4.3) décrit avec le même poids l’erreur d’orientation de chacune des trois di-
rections ; cependant, il peut ne pas être nécessaire dans certaines applications pratiques. Afin de
traiter de tel situations, (4.3) peut être modifié :
3
DO(q) = ∑ (sv j (d j .h j (q) − 1))2
j=1

Où : (
1 Si la jème direction est comprise dans le calcul de l 0 erreur
sv j = 0 Sinon

4.2.5.2 La méthode Cyclic Coordinate Descent


La méthode CCD est une méthode de recherche heuristique des erreurs de position et
d’orientation. Chaque cycle de cette méthode contient n étapes ; à la iéme (i variant de n jus-
qu’à 1) étape, seul la iéme articulation peut être changée afin de minimiser la fonction objectif.
La configuration du robot est actualisée après chaque cycle. Ce processus cyclique continue
jusqu’à atteindre l’erreur tolérée.
La figure (4.5) illustre une étape de la méthode CCD. Le vecteur Pi indique la position ac-
tuelle du point oi (l’origine du iéme système de coordonnées). Pih est le vecteur de oi vers la
position actuelle de l’objet final. À la iéme étape, les vecteurs Pid et Pi restent constant, et afin de
minimiser l’erreur de position et d’orientation de l’objet final, le vecteur Pih et le système de co-
ordonnées (xh , yh , zh ) peuvent tourner ou translater selon l’axe zi , selon le type de l’articulation
i, deux cas peuvent être considérés.
CHAPITRE 4. MODÈLES GÉOMÉTRIQUES 34

F IGURE 4.5 – Une étape de la méthode CCD

Cas d’une articulation rotationnelle : Dans ce cas, la variable de l’articulation qi est l’angle
j
de rotation i .
Avec l’interdiction de changer la configuration des autres articulations(qk , k = 1. . . i − 1, i +
j
1, . . . n). Si nous pivotons autour de l’axe zi avec un angle i , alors le vecteur pivoté peut être
écrit
0
Pih (φ ) = [R(zi , φ )]Pih (4.5)
Où [R(zi , φ )] est une matrice de rotation spatiale 3 × 3, par conséquent l’erreur de position
devient une fonction à une seule variable qui dépend de φ .

D p(φ ) = (Pid − Pih (φ )) · (Pid − Pih (φ ))


0 0
(4.6)
En remplaçant (4.5) en (4.6)

∆p(φ ) = Pid · Pid + Pih · ([R(zi, φ )]t [R(zi, φ )]Pih ) − 2Pid · ([R(zi, φ )]Pih )
= Pid · Pid + Pih · Pih − 2 Pid · ([R(zi , φ )]Pih )
Où [.]t indique la transposée de la matrice. Puis-que Pid · Pid et Pih · Pih sont des constantes
D
positives, minimiser p(φ ) revient à minimiser :

g1 = Pid · [R(zi , φ )]Pih (4.7)


De façon similaire, si nous tournons le dernier système de coordonnées autour de l’axe zi
avec un angle φ , alors les vecteurs d’orientation deviendront

0
h j (φ ) = [R(zi , φ )]h j Pour j = 1 à 3 (4.8)
CHAPITRE 4. MODÈLES GÉOMÉTRIQUES 35

Et l’erreur d’orientation devient :


3
DO(q) = ∑ (d j · h0j (φ ) − 1)2 (4.9)
j=1

Qui est aussi une fonction de φ seulement. Puisque h0j et d j sont des vecteurs unitaires ; ainsi

d j · h0j (φ ) = cosψ j (φ )
Où ψ j (φ ) est l’angle entre d j et h j comme le montre la figure (4.6). Par conséquent, la
relation (4.9) peut s’écrire :
3
DO(φ ) = ∑ (cos ψ j (φ ) − 1)2 (4.10)
j=1

F IGURE 4.6 – Définition des angles de direction

Le sens physique de la relation (4.10) peut être interprété à l’aide de la figure (4.6). Il est
clair de cette figure que l’erreur d’orientation entre les deux systèmes de coordonnées doit
être minimisée quand ψ j (φ ) tend vers zéro pour tous les axes, ou quand le cosinus des trois
directions (cosψ j ) simultanément tend vers 1 ; ceci peut être obtenue par la minimisation de la
relation (4.10).
Sinon, puisque cosψ j (φ ) est bornée entre ±1, l’erreur d’orientation peut aussi être réduite
en maximisant :
3 3
g2 = ∑ cos ψ j (φ ) = ∑ d j · h0j (φ ) (4.11)
j=1 j=1
Il est très important de souligner que la minimisation de (4.10) n’est pas exactement équiva-
lente à la maximisation de (4.11), ce qui implique que la solution optimale de φ dans les deux
fonctions est différente.
Cependant, puisque φ est itérativement ajustée (φ est ajustée à chaque itération) de sorte
que cosψ j (φ ) converge à 1 pour tout j, les solutions sont asymptotiquement équivalentes.
CHAPITRE 4. MODÈLES GÉOMÉTRIQUES 36

Afin de simplifier les calculs, nous préférons utiliser pour formuler l’erreur d’orientation la
maximisation de (4.11) qui est moins gourmande en temps de calcul que la minimisation de
(4.10), sachant que la méthode CCD est utilisée généralement pour trouver efficacement une
bonne valeur initiale pour d’autres méthodes d’optimisation.
Nous pouvons constater que (4.11) donne des poids égaux à l’erreur d’orientation pour
chacune des trois directions du système de coordonnées associé à l’objet final, et, si désiré, il
est facile de modifier (4.11) comme :
3
g2 = ∑ σ j d j · h0j (φ )
j=1

Où (
1 Si la jème direction est comprise dans le calcul de l 0 erreur
sv j = 0 Sinon
En combinant (4.7) et (4.11) la fonction objectif, dans ce cas, peut être définie comme :

g(φ ) = w p g1 (φ ) + wo g2 (φ ) (4.12)

w p et wo sont des nombres réels positifs choisis arbitrairement afin de donner des poids à la
correction de la position ou de l’orientation.

Problème P3 Trouver φ ∗ , tel que g(φ ∗ ) = max g(φ ) | φ l ≤ φ ≤ φ u , où φ l = φic − φil , φ u =




φiu − φic , φil et φiu sont respectivement les bornes inférieure et supérieure de l’articulation θi , et
θic est la valeur actuelle de θi .
La solution analytique du problème P3 peut être facilement dérivée. Selon la forme vecto-
rielle de l’équation des Rodrigues, on peut montrer que :

[R(zi , φ )]Pih = zi (Pih · zi )(1 − cos φ ) + Pih cos φ + (zi × Pih ) sin φ (4.13)
Où × exprime le produit vectoriel.
En remplaçant (4.13) dans (4.7), g1 (φ ) devient :

g1 (φ ) = (Pid · zi )((Pih · zi )(1 − cos φ ) + (Pid · Pih ) cos φ + Pid · (zi × Pih ) sin φ
Pareil pour (4.11)

3
g2 (φ ) = ∑ {(d j · zi)(h j · zi)(1 − cos φ ) + (d j · h j ) cos φ + d j · (zi × h j ) sin φ }
j=1

En remplaçant ces deux relations dans (4.12) on obtient

g(φ ) = k1 (1 − cos φ ) + k2 cos φ + k3 sin φ


Où k1 , k2 et k3 sont des coefficient donnés par

k1 = w p (Pid · zi )((Pih · zi ) + wo ∑3j=1 (d j · zi )(h j · zi )


k2 = w p (Pid · Pih ) + wo ∑3j=1 (d j · h j )
 
k3 = zi . w p (Pih × Pid ) + wo (h j × d j )
CHAPITRE 4. MODÈLES GÉOMÉTRIQUES 37

Dans le cas où il n’y a pas de contraintes imposées sur φ , alors g(φ ) est maximisée quand :

dg(φ )
= (k1 − k2 ) sin φ + k3 cos φ = 0

Et

d 2 g(φ )
= (k1 − k2 ) cos φ − k3 sin φ < 0
dφ 2
A partir de ces deux équations, il est facile de déduire une unique valeur de φ qu’on notera
φ . Cependant, la solution réelle du problème P3 doit satisfaire les contraintes imposées par
e
chaque articulation, c’est-à-dire
Si φ l ≤ φe ≤ φ u alors φ ∗ = φe.
(
Si g(φ u ) > g(φ l ) φ ∗ = φ u
Sinon
Si g(φ l ) > g(φ u ) φ ∗ = φ l

Cas d’une articulation prismatique : Dans ce cas, nous ne pouvons réduire que l’erreur
de position, car l’orientation de l’objet final ne dépend pas de la variable si . Notant par λ le
changement de si (mesuré par sic la valeur actuelle de si ), l’erreur de position devient

∆P(λ ) = (Pid − (Pih + zi λ )).(Pid − (Pih + zi λ ))


= δ P · δ P − 2 (δ P.zi )λ + λ 2

Où δ P = Pid − Pih , comme nous l’avons déjà montré sur la figure (4.5), et le problème
devient

Problème P4 Trouver λ ∗ , tel que ∆P(λ ∗ ) = min{∆P(λ )|λ l ≤ λ ≤ λ û} où λ l = sic − sui ,
λ u = sui − sic , et sui et sli sont respectivement les limites supérieures et inférieures. Alors

d∆P(λ )
= 2(λ − δ P.zi )

Et

d 2 ∆P(λ )
=2>0
dλ 2
Ainsi, dans le cas où il n’y a pas de contraintes imposées sur λ alors, il existe une seul
λ , Alors ∆P(λ ) est minimiser quand λ = e
solution notée e λ = δ P . zi .
Comme dans le cas précédant, la solution réelle du problème P4 devrait satisfaire aussi les
contraintes imposées. C’est-à-dire
λ ≤ λ u alors λ ∗ = e
Si λ l ≤ e λ.
(
Si ∆P(λ u ) > ∆P(λ l ) λ ∗ = λ l
Sinon
Si ∆P(λ l ) > ∆P(λ u ) λ ∗ = λ u
Par conséquent, pour chaque étape de la méthode CCD, dans chacun des cas, le problème
original à n dimensions est réduit à n problèmes à une dimension. En plus, la solution analytique
CHAPITRE 4. MODÈLES GÉOMÉTRIQUES 38

de ce dernier peut être facilement calculée. En outre, à chaque étape, la valeur de la fonction
objectif est réduite, ce qui garantit la convergence globale.
Il est aussi nécessaire à souligner que cette méthode n’est pas sensible aux configurations
singulières des bras manipulateurs (une configuration est dite singulière lorsqu’elle engendre
une perte d’un ou de plusieurs degrés de liberté). C’est pourquoi l’estimation initiale du vecteur
des solutions est quelconque.
Cependant, à cause de la nature heuristique de cette méthode, la vitesse de convergence est
grande en fonction de la structure du robot, en d’autres termes, la vitesse de convergence ralentit
si la structure du robot est complexe.
L’expérience montre qu’en général, quand l’estimation initiale est loin de la solution, en
appliquant quelques cycles seulement cette méthode nous ramène au voisinage de la solution.
Par contre, elle devient très lente ensuite.
Quand le vecteur estimé est proche de la solution réelle, il est préférable de commuter sur
une autre méthode. Par exemple la méthode BFGS 6 est prévue pour donner une vitesse de
convergence linéaire ou quadratique.
Pour cette raison, c’est la méthode CCD qui convient pour trouver de bonnes valeurs initiales
pour la méthode BFGS.
Le critère de commutation entre les deux méthodes peut-être comme suit :
Après chaque cycle complet de la méthode CCD, nous comparons la valeur actuelle de la
fonction objectif Ec avec la valeur trouver dans le cycle précédent E p . Si E p < β et Ec > E p2 (où
β ≤ 1 est une constante positive très petite qui exprime la proximité du vecteur solution), alors
le vecteur solution est proche de la solution réelle et la vitesse de convergence est lente ; donc il
faut commuter vers la méthode BFGS.

4.2.5.3 Algorithme numérique


La procédure complète de solution est résumée ci-dessous :
6. BFGS : Broyden-Fletcher-Goldfarb-Shanno
CHAPITRE 4. MODÈLES GÉOMÉTRIQUES 39

Algorithm 4.1 Algorithme de résolution basé sur la méthode CCD


Étape 1:
Introduire les paramètres des liens du robot et les contraintes qli et qui (i = 1 to n).
Donner une position désirée (la cible) Pd et [Rd ], l’erreur de tolérance ε et l’estimation initiale
du vecteur des variables d’articulation.

PhaseI
Étape 2:
– Pour: i = n à 1

Pih = Pn+1 − Pi
∆P(q) = δ P(q) · δ P(q)
∆O(q) = ∑3j=1 (d j · h j (q) − 1)2
Ec = E(q) = δ p(q) + δ O(q)

– Si Ec ≤ ε alors Stop
– Sinon E p < β et Ec > E p2 alors Commuter vers BFGS
– Sinon E p = Ec

Étape 3:
– Pour: i=n à 1
– Si l’articulation est rotationnelle
dg(φ )


 = (k1 − k2 ) sin φ + k3 cos φ = 0
 dφ


– Calculer φ ∗ telle que : Et


 2
d g(φ )

 = (k1 − k2 ) cos φ − k3 sin φ < 0
dφ 2
– qi = qi + φ ∗
– Pih = P0ih (φ ∗ )
– h j ( j = 1 à 3)
– Si l’articulation est prismatique

d∆P(λ )
– Calculer λ ∗ telle que : = 2(λ − δ P.zi ).

– qi = qi + λ ∗
– Pih = Pih + λ ∗ zi

– Retour à Étape 2
PhaseII
Étape 4:
Début de la méthode BFGS
CHAPITRE 4. MODÈLES GÉOMÉTRIQUES 40

Figure 4.7: Organigramme de la méthode CCD


CHAPITRE 4. MODÈLES GÉOMÉTRIQUES 41

Avantages :
– D’après les tests, l’algorithme décrit précédemment garantit la robustesse (la solution est
indépendante du vecteur de départ) et une convergence rapide vers un minimum global.
– Elle est très simple à implémenter.
– Peut-être combiner à d’autres méthodes par exemple la BFGS.

Inconvénients :
– La dynamique de cette méthode ne reflète pas les mouvements réels.

4.3 Conclusion
Dans ce chapitre, nous avons exposé des méthodes utilisées dans la géométrique directe et
inverse où chacune d’elle présente des avantages et des inconvénients.
En se basant sur des études déjà faites [ALOUANI2009], nous avons choisi d’utiliser la
méthode CCD qui offre en plus de la rapidité, la robustesse et la précision, l’atout majeur de
fournir le minimum global pour n’importe quel point de départ.
Dans le chapitre suivant, nous allons présenter les outils que nous avons utilisé dans l’im-
plémentation de l’application développée ”HandiAccess”.
Chapitre 5

« HandiAccess »

« Nous devons apprendre à vivre ensemble comme des frères, sinon nous allons mourir tous
ensemble comme des idiots.» Martin Luther King

Dans ce chapitre, nous allons présenter les outils qui nous ont servi dans la réalisation de ce
projet et des techniques que nous avons utilisés pour assembler les différentes partie du projet
et garantir le bon fonctionnement de l’application en général.
Nous commençons par décrire les outils de développement que nous avons utilisées pour
l’implémentation de l’application « HandiAccess”, puis nous décrivons la bibliothèque ”Roboop”
qui nous a facilité l’implémentation des algorithmes géométrique directe et inverse.
Ensuite, nous donnons une brève présentation du logiciel « 3D Studio MAX » que nous avons
utilisé pour la modélisation 3D de l’environnement virtuel ainsi que l’avatar 3D.
Pour terminer, nous présentons l’aspect final de l’application et nous décrivons son archi-
tecture.

5.1 L’outil de développement


Qualifié du langage le plus utilisé dans le monde, le langage C++ a imposé sa suprématie
dans le monde grâce à des dispositifs ingénieux et des fonctions utiles pour la programmation.
Il fait partie des langages de programmation de la famille « orientée objet » qui se base sur l’idée
de constituer un projet qui englobe des classes et des méthodes.[WIKI]
Une classe n’est qu’un ensemble de méthodes et d’attributs que le programmeur fait appel
en cas de besoin.
Nous avons choisi le langage C++ comme outils de développement de notre projet pour les
raisons suivantes :
– La disponibilité de la documentation (Livres, internet...).
– Un outil très utilisé dans le développement des applications récentes.
– pour tirer profit des bibliothèques C++ en robotique, notamment :
– La bibliothèque de calcul matriciel ”newmat” .
– La bibliothèque de simulation des robots manipulateurs ”Roboop”.
– La bibliothèque ”OGRE 3D” est réalisée en C++.
Dans notre projet, nous avons utilisé un type d’application particulier, connu sous le nom des
MFC 1 , ce type d’application relie la programmation sous ”Visual C++” à ”Windows”grâce à
1. MFC : Microsoft Foundation Classes

42
CHAPITRE 5. « HANDIACCESS » 43

des outils et des objets déjà définies mise à la disposition du programmeur.

5.1.1 Principe fondamental des MFC


L’idée de base est que chaque application MFC se compose de :

5.1.1.1 Le document
Il contient toutes les diverses données manipulées et traitées par l’application. Dans un pro-
jet, le document est représenté par une classe « CDocument » qui sert au stockage des données
de l’application.
Il est très important de souligner que le programmeur peut choisir entre deux types d’ap-
plications MFC. Les SDI 2 qui affichent un seul document à la fois, et les MDI 3 qui offrent la
possibilité d’afficher plusieurs documents dans une même fenêtre principale. [MFC2001]

5.1.1.2 La vue
Une vue est toujours associée à un document, elle représente une manière d’afficher les
données du document à l’utilisateur. Il est très important de souligner qu’il est possible d’avoir
plusieurs vues pour le même document.[MFC2001]
La figure (5.1) décrit les différentes partie d’une MFC

F IGURE 5.1 – Les Applications MFC

5.2 La bibliothèque Roboop


ROBOOP 4 est une bibliothèque libre programmée en C++ pour faciliter le développement
d’applications et la simulation des robots. Nous avons choisi cette bibliothèque pour son code
2. SDI : Single Document interface
3. MDI : Multiple Document Interface
4. ROBOOP : ROBotic Oriented Object Package
CHAPITRE 5. « HANDIACCESS » 44

optimisé, ses performances qu’elle offre (temps de calcul,...) et pour la disponibilité de la docu-
mentation complète sur internet qui explique toutes les fonctionnalités.

5.2.1 La bibliothèque Newmat


Ce package contient des classes et des méthodes précompilées permettant d’exécuter des
calculs mathématiques. Dans ce qui suit, nous allons présenter quelques types et classes.

5.2.1.1 Real
C’est l’équivalent du ”double” dans les types classiques.

5.2.1.2 ColumnVector
ColumnVector() ou ColumnVector(n) est une fonction surchargée qui permet de déclarer ou
de créer un vecteur colonne à n éléments.
Cette fonction nous a été très utile dans la création des vecteurs de position.

5.2.1.3 Matrix
Matrix ou Matrix(n,m) une fonction surchargée qui permet la déclaration ou la création
d’une matrice n × m. Dans cette fonction il est possible d’apercevoir un vecteur colonne comme
une matrice (m,1).
Elle nous a été utile dans la déclaration et la création des matrices de transformation.

5.2.1.4 crossproduct (Matrix &A,Matrix &B)


C’est une fonction utilisée pour le calcul du produit vectoriel entre deux vecteurs ou deux
matrices.

5.2.1.5 dotproduct(Matrix &A,Matrix &B)


Comme son nom l’indique, cette fonction calcule le produit scalaire entre deux matrices.
Avec les nouveaux types pré-déclarés il a été nécessaire de surcharger des opérateurs afin
de permettre la manipulation des fonctions précédemment décrites.

5.2.1.6 L’operator *
Cette opérateur a été surchargé pour permettre la multiplication matricielle, par exemple
il est possible de multiplier une matrice ”A” par une matrice ”B” et affecter le résultat à une
matrice ”C” en écrivant ”C=A*B”.

5.2.1.7 L’operator +
En surchargeant l’opérateur + il est possible d’effectuer des opérations d’addition sur des
matrices.
CHAPITRE 5. « HANDIACCESS » 45

5.2.1.8 L’operator -
Comme les précédents opérateurs, cet opérateur a été surchargée pour permettre la soustrac-
tion entre deux matrices.
Ce package contient encore plus de fonctions que nous n’avons pas utilisées, mais qui sont
très utiles dans le calcul mathématique, nous citons à titre d’exemple ”eigenvalues()” qui calcule
les valeurs propres d’une matrice.

5.2.2 La classe robot_basic


Ce package a été créer pour regrouper les fonctions communes entre les deux notations DH
et DH modifié.
Ce package contient aussi de nombreuses méthodes, nous citons celles que nous avons uti-
lisées :

5.2.2.1 La classe robot_basic


Une méthode surchargée permet la déclaration du modèle du robot, soit en le choisissant
à partir des modèles déjà présent dans la bibliothèque ou de le charger à partir d’un fichier de
configuration (d’extension ”.conf”) dans ”link”.

5.2.2.2 La classe kine


Cette méthode surchargée retourne le résultat de la géométrique directe elle existe en trois
versions :

La fonction kine(int j) Retourne la position de l’articulation j à partir de la première articu-


lation.

La fonction kine(Matrix &rot, ColumnVector &pos, int j) Retourne la position de l’arti-


culation j à partir de la première articulation dans pos et la matrice de rotation dans rot.

La fonction kine(void) Retourne la position de l’objet final à partir de la première articula-


tion.

5.2.2.3 La fonction inv_kin


Grâce à la méthode de la Jacobienne, cette fonction détermine pour un point désiré les
variables articulaires correspondantes.

5.2.3 La classe Links


Cette classe englobe toutes les données et fonctionnalités requises pour caractériser un
simple lien comme le défini Denavit et Hartenberg (dans la notation standard, la notation modi-
fiée).
Le tableau (5.1) présente ces données :
CHAPITRE 5. « HANDIACCESS » 46

Paramètre Type Description du paramètre


joint_type int il est égal à zéro si l’articulation est
rotationelle et à 1 si elle est
prismatique
theta, d, a, alpha Real Les paramètres DH
joint_offset Real Décalage de l’articulation
géométrique P ColumnVector Position de l’articulation
R Matrix Matrice de rotation de l’articulation
DH Bool true = notation standard, false =
notation modifiée
theta_min Real Bande inférieur de la variable
theta_max Real Bande supérieur de la variable
m Real la masse
inertie r ColumnVector Position du centre de gravité
I Matrix Matrice du tenseur d’inertie
Im Real Inertie de la partie rotor du moteurs
Moteur Gr Real Rapport de vitesse
B Real Coefficient du frottement visqueux
Cf Real Frottements de Coulomb
TABLE 5.1 – Paramètres link

Elle contient aussi les quelques autres méthodes :

5.2.3.1 La fonction transforme


transforme (Real q) recalcule la matrice ”R” et le vecteur ”P” avec le nouveau ”q” et les
remplacées dans ”link”.
De plus des getters et les setters qui permettent respectivement d’avoir et de changer les
paramètres de ”link”.

5.2.4 La classe Robot


Ce package contient toutes les fonctions utiles pour la modélisation de chaînes articulaires.
Des méthodes de la géométrique inverse, géométrique directe, contrôle de la dynamique, mo-
dèles de quelques robots célèbres (Puma, Rhino, Schilling).
Il est très important de noter que ”robot” hérite les propriétés de ”robot_basic”.
il est composé des éléments suivants :
– Du nombre de degré de liberté n (int dof ).
– Un tableau qui contient les éléments de Link (Link *links).
Dans ce qui suit, nous allons décrire quelques fonctions.

5.2.4.1 La fonction inv_kin


Cette méthode fait appel à la méthode déjà décrite dans la section ”robot_basic”.

Dans ce package, nous avons introduit deux nouvelles méthodes où nous avons implémenté
l’algorithme de la méthode CCD, nous allons décrire le rôle de chacune des méthodes :
CHAPITRE 5. « HANDIACCESS » 47

5.2.4.2 La fonction CCDAngleCorrection


Cette méthode a pour but le calcul de l’angle de correction qui permet de minimiser l’erreur
entre le point désiré et l’objet final pour une articulation donnée i.

5.2.4.3 La fonction inv_kin_CCD


Cette méthode fait appel à l’algorithme « CCDAngleCorrection » pour toutes les articula-
tions puis elle applique l’angle de correction au robot en respectant les contraintes imposées sur
chaque articulation ce qui forme un cycle.
Ce cycle est répété jusqu’à atteindre le critère d’arrêt (une erreur tolérée, un nombre d’ité-
rations...).

Remarque : Il existe deux autres packages le premier « mRobot » est similaire à « robot »,
mais il utilise la notation DH modifiée ce qui améliore le calcul des paramètres dynamiques, le
deuxième « mRobot_min_para » utilise le modèle du robot avec la notation DH modifiée et le
minimum de paramètres d’inertie.

5.3 Le moteur de rendu graphique OGRE 3D


OGRE 3D 5 est un moteur 3D libre distribuer sous une licence MIT 6 . Il est utilisé pour le
rendu tridimensionnel d’une ou plusieurs caméras d’un environnement en 3D.
Programmé sous C++, OGRE 3D est orienté objet, il intègre des fonctions utiles pour le
rendu en temps réel en utilisant les technologies d’affichage DirectX et OpenGL.[WIKI]
La figure (5.2) illustre la disposition des différents objets d’OGRE 3D :
5. OGRE 3D : Object-Oriented Graphics Rendering Engine 3D
6. MIT : Massachusetts Institute of Technology
CHAPITRE 5. « HANDIACCESS » 48

F IGURE 5.2 – Structure d’OGRE 3D

L’objet ”Root” représente le point d’entrer du système OGRE 3D, il est le premier à dé-
clarer et dernier à détruire. C’est à ce niveau que le programmeur peut configurer le système
(résolution, les options plein écran...), de plus, il est possible de créer les objets qui interagissent
avec les gestionnaires de scènes, les systèmes de rendu, les fenêtres de rendu, chargement des
plug-ins... ”Root” est le point de départ pour presque tous les objets.[OGRE]
Voici le reste des objets des composantes de OGRE 3D :

5.3.1 Gestion de la scène


Il est responsable de la gestion des contenus de la scène, la structure et la façon de les
apercevoir de la caméra. . .
Les classes dans ce projet sont responsables de donner une interface de déclaration naturelle
du monde construit, facilitant le travail des programmeurs.

5.3.2 Gestion des ressources


Les fonctionnalités incluses dans le gestionnaire des ressources sont responsable du charge-
ment, la réutilisation, et le déchargement des textures, polices. . . nécessaires pour le rendu.
CHAPITRE 5. « HANDIACCESS » 49

5.3.3 Rendu graphique


Le rendu représente la dernière phase de calcul de l’image finale de synthèse, et qui est basé
sur le système de rendu API 7 (DirectX ou OpenGL).
Les autres classes du gestionnaire de scène utilisent la classe de rendu pour afficher les
modèles 3D sur l’écran. Grâce à son architecture, OGRE 3D peut être facilement étendu par
la possibilité d’ajout de plug-ins sous forme de fichiers de bibliothèques à liens dynamiques
(dll), voir bloc plug-in sur le schéma de la figure 5.2. Cette caractéristique donne à OGRE 3D
l’avantage d’être utilisé dans plusieurs domaines, et non seulement appliqué à des problèmes
spécifiques.

5.3.4 TinyXML
TinyXML permet de gérer Les fichiers XML 8 (lecture, écriture...).[WIKI]
OGRE 3D utilise TinyXML pour charger les modèles 3D et leurs paramètres du document
XML.

5.4 Modélisation 3D
Dans cette partie nous avons utilisé « 3D Studio MAX » pour la modélisation de notre per-
sonnage qui est une référence dans le domaine de la modélisation 3D.
Notre avatar 3D se compose de :
Squelette : qui n’est d’autre que les articulations et les liens de notre modèle humain.
Revêtement : il représente l’aspect visuel du personnage ou de l’objet 3D en générale, il hérite
tous les mouvements imposés par le squelette du personnage, et se déforme en fonction
de ses mouvements grâce à sa structure en maillage 3D où chaque maille représente un
polygone fermé délimité par des arêtes qui définit une facette de l’objet 3D.
La figure (5.3) décrit cette structure.

F IGURE 5.3 – Modélisation 3D (squelette plus revêtement)


7. API : Application Programming Interface
8. XML : Extensible Markup Language
CHAPITRE 5. « HANDIACCESS » 50

5.5 Application HandiAccess


L’application que nous avons développée est une application MFC de type SDI qui évalue
l’accessibilité d’un point de l’espace avec des contraintes imposées par un modèle d’un être
humain à mobilité réduite.
La figure (5.4) montre l’aspect de la fenêtre d”’HandiAccess”.

F IGURE 5.4 – L’application ”HandiAccess”

Afin de réaliser cette application nous avons élaboré une structure particulière, où la vue
de la MFC est utilisée afin d’afficher le rendu fourni par OGRE 3D (en manipulant les fonc-
tionnalités de DirectX ou OpenGL) qui, en utilisant TinyXML, peut charger les données de la
structure articulée décrite dans le document XML.
En deuxième partie, « Roboop » utilise « boost » pour charger les données concernant le
robot (les paramètres DH, types d’articulations...) présentent dans le fichier de configuration
« .conf ». Afin d’exécuter un calcul mathématique, Roboop s’appuie sur la bibliothèque « new-
mat » décrite précédemment.
Grâce à la méthode CCD que nous avons implémentée, il est possible de calculer la posture
qui permet d’atteindre un point désiré.
La figure (5.5) décrit cette structure.
CHAPITRE 5. « HANDIACCESS » 51

F IGURE 5.5 – Structure ”HandiAccess”

La figure (5.6) illustre l’architecture décrite dans le fichier XML sachant que la main gauche
ne bouge pas.
CHAPITRE 5. « HANDIACCESS » 52

F IGURE 5.6 – Arborescence décrite dans XML

L’organigramme global de l’application est illustré dans la figure (5.7)


CHAPITRE 5. « HANDIACCESS » 53

F IGURE 5.7 – Organigramme d’ ”HandiAccess”

5.6 Conclusion
Dans ce chapitre, nous avons présenté en premier lieu les outils informatiques que nous
avons utilisés pour la réalisation du projet, en allant du langage utilisé C++, en passant par la
bibliothèque Roboop et en terminant par le moteur graphique OGRE 3D.
Au final, nous avons présenté l’aspect final de l’application et nous avons montré le résultat
d’assemblage de toutes les parties.
Nous constatons que l’application donne l’aspect final de la posture permettant d’atteindre
un point donné.
Chapitre 6

Conclusion et perspectives

Nous avons présenté dans ce travail concernant l’évaluation et la simulation de l’accessibi-


lité d’un lieu de vie, les différentes techniques et méthodes utilisées soit dans la modélisation
d’un être humain ou dans le calcul de la posture pour atteindre un point.
L’objectif de ce travail est de réaliser une application capable d’évaluer et de simuler l’ac-
cessibilité d’un lieu de vie pour une personne à mobilité réduite.
Nous constatons que l’application donne des résultats satisfaisants et permet d’évaluer l’ac-
cessibilité d’un point de l’espace pour une personne à mobilité réduite et fournit l’aspect de
la posture finale qui permet d’atteindre ce point. Malgré ces résultats concluants, elle présente
quelques problèmes, en particulier, au niveau de la rapidité de l’algorithme CCD, en effet, les
études réalisées dans [ALOUANI2009] prouvent qu’elle ralentit en se rapprochant du point
désiré.
Afin d’améliorer notre application nous proposant les solutions suivantes :
En ce qui concerne le problème de la rapidité, la méthode CCD peut être combinée à d’autres
méthodes d’optimisation, par exemple la méthode BFGS qui est plus performante dans le voi-
sinage du point désiré ce qui permet de rendre l’application encore plus rapide.[WANG1991]
Nous envisageons aussi d’implémenter le modèle dynamique de l’être humain dans l’appli-
cation et considérer la configuration donnée par le modèle géométrique inverse, une consigne à
ce système dynamique. Ainsi il est possible de boucler le système et de le corriger si nécessaire.
La figure (6.1) résume la solution proposée dans un schéma explicatif.

F IGURE 6.1 – Schéma de la solution proposée

54
Annexe

Le maillage 3D de l’avatar (Code XML)


<mesh>
<submeshes>
<submesh material="AVATAR" usesharedvertices="false"
use32bitindexes="false" operationtype="triangle_list">
<faces count="5978">
création des facettes
<face v1="0" v2="1" v3="2" />
<face v1="3" v2="4" v3="5" />
<face v1="6" v2="7" v3="8" />
<face v1="9" v2="10" v3="11" />
<face v1="12" v2="13" v3="14" />
......
</vertex>
<vertex>
<position x="-1939.99" y="-613.631" z="-9295.23" /> position de la facette
<normal x="-0.745125" y="-0.0748872" z="0.662708" />
</vertex>
<vertex>
<position x="-1939.99" y="-613.631" z="-9295.23" />
<normal x="-0.745125" y="-0.0748872" z="0.662708" />
</vertex>
<vertex>
<position x="-1942.76" y="-761.128" z="-9304.58" />
<normal x="-0.795396" y="-0.064205" z="0.60268" />
</vertex>

Définition du squelette de l’avatar (Code XML)


<skeleton> déclaration du squelette
<bones>
<bone id="0" name="Racine"> déclaration d'un type bone nommé Racine
<position x="6.00034e-005" y="365.58" z="-506.5" /> positionner Racine
<rotation angle="4.18879"> angle de rotation de Racine
<axis x="-0.57735" y="0.57735" z="-0.57735" /> repère associé à Racine
</rotation>
<scale x="100" y="100" z="100" /> l'échelle de Racine
</bone>
<bone id="1" name="Tronc_01">

55
CHAPITRE 6. CONCLUSION ET PERSPECTIVES 56

<position x="12" y="-1.95505e-006" z="5.24543e-007" />


<rotation angle="0">
<axis x="3.04596e-013" y="-2.29964e-020" z="-1" />
</rotation>
</bone>
<bone id="2" name="Tronc_02">
<position x="9.99999" y="-6.75242e-007" z="4.37083e-007" />
<rotation angle="0">
<axis x="-3.04596e-013" y="1.28707e-013" z="1" />
</rotation>
</bone>
<bone id="3" name="Tronc_03">
<position x="12" y="-3.21234e-009" z="5.2458e-007" />
<rotation angle="0">
<axis x="0.023442" y="0.0234419" z="-0.99945" />
</rotation>
</bone>
<bone id="4" name="Clav_D">
<position x="6.99989" y="9.00005" z="0" />
<rotation angle="1.57079">
<axis x="-1.19209e-007" y="2.06633e-007" z="1" />
</rotation>
</bone>
<bone id="5" name="Bras_D">
<position x="8.28593" y="-1.52588e-005" z="2.14641e-010" />
<rotation angle="0">
<axis x="0.004264" y="9.0014e-007" z="0.999991" />
</rotation>
</bone>
<bone id="6" name="A_Bras_D">
<position x="29.0823" y="-0.00213623" z="-3.27418e-011" />
<rotation angle="0">
<axis x="1.39357e-014" y="-1.31674e-011" z="1" />
</rotation>
</bone>
<bone id="7" name="Main_D">
<position x="26.0877" y="1.52588e-005" z="2.25555e-010" />
<rotation angle="0">
<axis x="-1.31704e-014" y="3.20307e-011" z="-1" />
</rotation>
</bone>
<bone id="8" name="Final_D">
<position x="14.6613" y="0" z="1.01863e-010" />
<rotation angle="0">
<axis x="1.3132e-014" y="-1.43738e-009" z="1" />
</rotation>
</bone>
<bone id="9" name="Clav_G"> <position x="6.99997" y="-9" z="1.81899e-012" />
<rotation angle="1.57078">
<axis x="6.55674e-008" y="-6.55666e-008" z="-1" />
</rotation>
CHAPITRE 6. CONCLUSION ET PERSPECTIVES 57

</bone>
<bone id="10" name="Bras_G">
<position x="8.28595" y="0" z="3.18323e-012" />
<rotation angle="0">
<axis x="1.96069e-010" y="1.04505e-010" z="-1" />
</rotation>
</bone>
<bone id="11" name="A_Bras_G">
<position x="29.0823" y="1.52588e-005" z="1.09139e-011" />
<rotation angle="0">
<axis x="1" y="0" z="0" />
</rotation>
</bone>
<bone id="12" name="Main_G">
<position x="26.0877" y="0" z="1.00044e-011" />
<rotation angle="0">
<axis x="1" y="0" z="0" />
</rotation>
</bone>
<bone id="13" name="Final_G">
<position x="14.6613" y="0" z="5.91172e-012" />
<rotation angle="0">
<axis x="1" y="0" z="0" />
</rotation>
</bone>
<bone id="14" name="Cou">
<position x="15" y="-9.33374e-006" z="0" />
<rotation angle="0">
<axis x="-0.166533" y="-5.90952e-008" z="0.986036" />
</rotation>
</bone>
<bone id="15" name="Tete">
<position x="7.69516" y="1.72644e-007" z="5.57604e-007" />
<rotation angle="0">
<axis x="0.000348458" y="1.32926e-009" z="1" />
</rotation>
</bone>
<bone id="16" name="Final_T">
<position x="19.9864" y="-5.3551e-009" z="4.67824e-007" />
<rotation angle="0">
<axis x="0.120386" y="-0.963087" z="-0.240772" />
</rotation>
</bone>
</bones>
<bonehierarchy>
<boneparent bone="Tronc_01" parent="Racine" /> mettre Tronc_01 hérite de Racine.
<boneparent bone="Tronc_02" parent="Tronc_01" />mettre Tronc_02 hérite de Tronc_01.
<boneparent bone="Tronc_03" parent="Tronc_02" />
<boneparent bone="Clav_D" parent="Tronc_03" />
<boneparent bone="Bras_D" parent="Clav_D" />
<boneparent bone="A_Bras_D" parent="Bras_D" />
CHAPITRE 6. CONCLUSION ET PERSPECTIVES 58

<boneparent bone="Main_D" parent="A_Bras_D" />


<boneparent bone="Final_D" parent="Main_D" />
<boneparent bone="Clav_G" parent="Tronc_03" />
<boneparent bone="Bras_G" parent="Clav_G" />
<boneparent bone="A_Bras_G" parent="Bras_G" />
<boneparent bone="Main_G" parent="A_Bras_G" />
<boneparent bone="Final_G" parent="Main_G" />
<boneparent bone="Cou" parent="Tronc_03" />
<boneparent bone="Tete" parent="Cou" />
<boneparent bone="Final_T" parent="Tete" />
</bonehierarchy>
<animations />
</skeleton>

Fichier de configuration de la structure articulée sous Roboop


(.conf)

[humanoid_dh]
Commentaire
Name: humanoid
Nom du robot
DH: 1
La notation DH
Fix: 0
Articulation imaginaire desactivée
dof: 21
Nombre de ddl
angle_in_degree: 0
Angle en radian
Motor: 0
CHAPITRE 6. CONCLUSION ET PERSPECTIVES 59

[humanoid_dh_LINK1] [humanoid_dh_LINK2] Nom de l'articulation


joint_type: 0 joint_type: 0 Articulation
theta: 1.5708 theta: 1.5708 rotationnelle.
d: 0.0 d: 0.0 Paramètres DH θi .
a: 0.0 a: 0.0 Paramètres DHdi .
Paramètres DHai .
alpha: 1.5708 alpha: 1.5708
Paramètres DHαi .
theta_min: 0.0 theta_min: -0.1745
Bande inférieurqli .
theta_max: 0.0 theta_max: 0.2618
Bande supérieur qui .
joint_offset: 0.0 joint_offset: 0.0
immobile: 0 immobile: 0
m: 2.0 m: 1.0
cx: -0.5 cx: -0.5
cy: 0.0 cy: 0.0
cz: 0.0 cz: 0.0
Ixx: 0.0 Ixx: 0.0
Ixy: 0.0 Ixy: 0.0
Ixz: 0.0 Ixz: 0.0
Iyy: 0.1666666 Iyy: 0.0833333
Iyz: 0.0 Iyz: 0.0
Izz: 0.1666666 Izz: 0.0833333
Im: 0.0 Im: 0.0
Gr: 0.0 Gr: 0.0
B: 0.0 B: 0.0
Cf: 0.0 Cf: 0.0
CHAPITRE 6. CONCLUSION ET PERSPECTIVES 60

[humanoid_dh_LINK3] [humanoid_dh_LINK4]
joint_type: 0 joint_type: 0
theta: 1.5708 theta: 1.5708
d: 7.0 d: 0.0
a: 0.0 a: 0.0
alpha: 1.5708 alpha: 1.5708
theta_min: -0.1745 theta_min: -0.1745
theta_max: 0.1745 theta_max: 0.1745
joint_offset: 0.0 joint_offset: 0.0
immobile: 0 immobile: 0
m: 1.0 m: 1.0
cx: -0.5 cx: -0.5
cy: 0.0 cy: 0.0
cz: 0.0 cz: 0.0
Ixx: 0.0 Ixx: 0.0
Ixy: 0.0 Ixy: 0.0
Ixz: 0.0 Ixz: 0.0
Iyy: 0.0833333 Iyy: 0.0833333
Iyz: 0.0 Iyz: 0.0
Izz: 0.0833333 Izz: 0.0833333
Im: 0.0 Im: 0.0
Gr: 0.0 Gr: 0.0
B: 0.0 B: 0.0
Cf: 0.0 Cf: 0.0

.. ..
. .
Bilan personnel

Un jour quelqu’un a dit que « l’écriture est le dépôt de bilan de la pensée ». Dans ce para-
graphe, nous allons écrire en quelques lignes un bilan personnel du projet.
Ce projet nous a appris la manière de mener les projets et les différentes façons de traiter les
problèmes rencontrés.
De plus nous avons acquis des connaissances dans les domaines techniques qu’il s’agit du
domaine de la robotique ou de la modélisation des robots ou du domaine de l’optimisation
numérique et les méthodes utilisées dans la géométrique inverse. En outre, nous avons appris
à tirer le meilleur de la théorie qui existe afin d’atteindre notre but. De plus, ce projet nous a
permis de nous immerger dans le côté pratique et ainsi compléter notre formation.
En plus de tout ce que nous avons appris, et grâce à notre encadrant et aux différents contacts
que nous avons eus avec des gens du domaine, nous avons développé notre sens du travail col-
lectif et le développement des idées ce qui nous facilitera l’immersion dans le domaine profes-
sionnel.

61
Bibliographie

[ALOUANI2009] ALOUANI Rachid. Analyse et Commande d’une structure articulée redon-


dante par Descente de Gradient Adaptative (Approche Proposée), Méthode Aléatoire
(Approche Proposée), Méthode Cyclic Coordinate Descent (CCD). Université de Metz.
2009. 3.1.2, 3.1.2, 3.1.3.3, 4.2.4.1, 4.3, 6
[BOULIC2003] BOULIC Ronan. Cinématique inverse pour l’optimisation de postures hu-
maines soumises à des contraintes multiples. 2003. 4.2.2, 4.2.2.2
[FARRELL2005] FARRELL Kimberly. Kinematic Human Modeling And Simulation Using
Optimization-Based Posture Prediction. The university of Iowa. 2005. Disponible sur
http ://www.loomingsuspicions.com/docs/thesis.pdf (consultée le 16/06/2010) 2.1, 2.1,
3.1.3.2, 3.1.3.2
[GILL2005] GILL Philip E, MURRAY Walter, SAUNDERS Michal A. SNOPT : An SQP Al-
gorithm for Large-Scale Constrained Optimization. Siam Review. 2005. Vol. 47, n°1,
pp 99-131. 4.2.4.2
[KELLY2005] KELLY Raphael, SANTIBANEZ Victor Davila, LORIA Antonio. Control of
Robot Manipulators in Joint Space. Springer. 3.1.1, 3.1.1.1
[KHALIL1995] KHALIL Nadim. ULSI Characterization with Technology Computer-Aided
Design. Sciences et techniques. Vienne : Technical University of Vienna. 1995. Dispo-
nible sur http ://www.iue.tuwien.ac.at/phd/khalil/ (consultée le 22/09/2010). 4.2.3
[MFC2001] Visual C++ , Ecole nationale des sciences géographiques, 06 mars 2001. 5.1.1.1,
5.1.1.2
[MI] MI Zan. Task-Based Prediction Of Upper Body Motion. Virtual Soldier Research
(VSR) - The University of Iowa. 4.2.4.2
[WANG1991] WANG Li-Chun Tommy, CHEN Chih Cheng. A combined optimization method
for solving the inverse kinematics problem of mechnical manipulators.IEEE Transac-
tions on Robotics And Automation. 1991. Vol.7,n° 4, pp 489-499. 4.2.5, 6
[ANALYS3D] http ://www.univ-valenciennes.fr/LAMIH/analyse-gestuelle-3d (Consultée le
12/09/2010). 2.4
[HANDI] http ://www.dailymotion.com/video/x220i2_escin-france5_tech (Consultée le
16/08/2010). 2.2
[OGRE] http ://www.ogre3d.org/docs/manual/ (Consultée le 16/10/2010). 5.3
[OTIS] http ://otis.grc.nasa.gov (Consultée le 15/09/2010). 4.2.4.2
[PSASIM] http ://www.psa-peugeot-citroen.com/modules/realite_virtuelle/index.html
(Consultée le 12/09/2010). 2.3
[ROBOOP] http ://www.cours.polymtl.ca/roboop/docs/robot.html (Consultée le 12/10/2010).
[SANTOS] http ://www.santoshumaninc.com (Consultée le 12/09/2010). 2.1, 2.1

62
BIBLIOGRAPHIE 63

[WIKI] http ://fr.wikipedia.org (Consultée le 16/10/2010).


1, 3.1.3.1, 4.2.2.2, 5.1, 5.3, 5.3.4

You might also like