RAPPORT DE PROJET DE FIN D’ÉTUDES
Aleksander Przybylo
Département de Génie mécanique , Section fabrication
École Polytechnique de Montréal
Avril 2003
MODÉLISATION D’UN ROBOT PARALLÈLE
SPHÉRIQUE DANS UN ENVIRONNEMENT
DE RÉALITÉ VIRTUELLE
RÉSUMÉ
Le sujet du rapport est la présentation d’un projet consistant en la réalisation d’un
simulateur d’un robot parallèle sphérique dans un environnement de réalité virtuelle.
Premièrement, on présente une revue de l’état des recherches dans le domaine des robots
parallèles en général et le cadre théorique dans lequel s’est déroulé le projet. Ensuite, on
expose la méthodologie de travail et les détails de la programmation du simulateur dans
l’environnement Windows et dans l’environnement de la voûte d’immersion CAVE.
ABSTRACT
The subject of this report is the presentation of a project consisting in the creation
of a spherical parallel robot simulator in a virtual reality environment. First, we present a
review of the present research advances in the domain of parallel robots in general and
the theoretical framework in which the project takes place. Then, we expose the
methodology and the details of the simulator programming in the Windows environment
as well as in the virtual reality CAVE environment.
TABLE DES MATIÈRES
Liste des figures ........................................................................................................i
Liste des symboles et des abréviations .................................................................... ii
Principaux symboles ........................................................................................... ii
Abréviations ........................................................................................................ ii
Introduction............................................................................................................. 1
Revue de la bibliographie........................................................................................ 2
Cadre théorique et hypothèses................................................................................. 4
État de la recherche ............................................................................................. 4
Définitions ........................................................................................................... 4
Simplifications .................................................................................................... 6
Méthodologie de travail .......................................................................................... 8
Modèle 3D........................................................................................................... 8
Position initiale.................................................................................................... 8
Modèle cinématique direct................................................................................ 11
Algorithme et programmation........................................................................... 11
Implantation dans la Voute ............................................................................... 12
Programmation...................................................................................................... 13
Fonctions algébriques........................................................................................ 13
Affichage ........................................................................................................... 15
Discussion des résultats......................................................................................... 19
Conclusion............................................................................................................. 20
Recommandations ................................................................................................. 21
Références ............................................................................................................. 22
REMERCIEMENTS
Je tiens à remercier les personnes suivantes qui m’ont grandement soutenu dans la
réalisation de mon projet. Je remercie tout d’abord Luc Baron de m’avoir donné
l’opportunité de travailler sur le projet en question et de m’avoir aidé dans sa réalisation.
Ensuite je voudrais remercier Atmane Laras, Lévis Thériault et Benoît Ozell pour leur
soutien technique. Aussi je tiens à remercier Stéphane Brunet de m’avoir fourni le code
de son logiciel qui m’a permis de démarrer mon projet beaucoup plus vite, ainsi que
Mahmoud Sabsaby et Sofiane Achiche de m’avoir fourni les travaux de M. Daniali et
d’autres documents qui m’ont grandement éclairé tout au long de mon projet. Finalement,
je remercie Stéphanie Lizotte d’avoir toujours été là.
i
LISTE DES FIGURES
Figure 1 - Différentes parties d’un robot parallèle.............................................................. 5
Figure 2 - Angles β et α .................................................................................................... 10
Figure 3 - Vecteurs →
iP , →
iQ et →
iR ..................................................................................... 10
Figure 4 - Système de référence pour la base ................................................................... 16
Figure 5 - Système de référence pour l’effecteur .............................................................. 16
Figure 6 - Système de référence pour les distaux ............................................................. 16
Figure 7 - Système de référence pour les proximaux........................................................ 17
ii
LISTE DES SYMBOLES ET DES ABRÉVIATIONS
Principaux symboles
→
iP – vecteurs unitaires qui pointent dans la direction des sommets de la base
→
iQ – vecteurs unitaires qui pointent dans la direction des sommets de l’effecteur
→
iR – vecteurs unitaires qui pointent dans la direction des distaux et proximaux
β − angle positionnant l’actionneur sur la base
α − angle positionnant l’actionneur sur l’effecteur
θr& − vecteur contenant les taux de rotation des trois actionneurs
ωr
− vecteur contenant les angles de rotation de l’effecteur
Abréviations
DT – double-triangulaire
INRIA – Institut National de Recherche en Informatique et en Automatique (France)
MGD – modèle géométrique direct
MGI – modèle géométrique inverse
MCD – modèle cinématique direct
MCI – modèle cinématique inverse
CAO – conception assistée par ordinateur
VRML – Virtual Reality Modelling Language
STEP – Standard for the Exchange of Product
STL – Standard Template Library
1
INTRODUCTION
Le monde de la cybernétique fonctionne depuis déjà plus d’un siècle avec des
robots sériels de toutes sortes, qui se sont largement développés depuis leur création. Il y
a une cinquantaine d’années sont apparus les robots parallèles qui jusqu’à maintenant
font objet de recherches intensives et sont encore considérés par une bonne partie de la
communauté scientifique comme de la science fiction. La complexité du fonctionnement
des robots parallèles est à des années lumière de leurs frères sériels, ce pourquoi leur
utilisation est réservée à des tâches très spécifiques.
Une des principales difficultés de ce type de robots est leur imprévisibilité. En
effet, il est très difficile de prévoir comment l’effecteur se comportera si on déplace tel
actionneur. Plusieurs ont essayé de créer des simulateurs de ces robots, ce qui certes
permet de mieux visualiser leur fonctionnement que simplement en regardant une
équation avec des matrices et des vecteurs. Toutefois, ces simulateurs manquent souvent
de réalisme et le problème n’est pas plus résolu, surtout lorsqu’on a affaire à des
structures complexes.
Le présent projet consiste à créer un simulateur dans un environnement de réalité
virtuelle. L’utilisateur pourra, en se plaçant au milieu d’une voûte d’immersion, voir le
robot comme s’il était devant lui. De plus, il lui sera possible d’interagir avec lui par
l’intermédiaire d’une manette.
Après une brève revue de la bibliographie et de l’état actuel des recherches dans le
domaine, je présenterai d’abord le cadre théorique dans lequel se place le projet et ensuite
la méthodologie de travail employée dans sa réalisation. Finalement, je consacrerai une
section à part aux différentes étapes de la programmation du simulateur.
2
REVUE DE LA BIBLIOGRAPHIE
Le nombre de chercheurs qui s'intéressent aux robots parallèles croît de jour en
jour, ce pourquoi le nombre de publications y dédiées est plus qu'exhaustive. Rien que
dans la province du Québec, presque chaque grande école d'ingénieurs possède ses
propres spécialistes dans le domaine, que ce soit Jorge Angeles à l'Université McGill,
Clément Gosselin à l'Université Laval ou Luc Baron à l'École Polytechnique de Montréal.
Chacun de ces professeurs a publié une multitude d'articles concernant toutes les sortes
possibles des robots parallèles. Dans le cadre de ce rapport, on ne s'attardera cependant
que sur un type particulier : le robot DT sphérique à trois degrés de liberté (le DT veut
dire « double-triangular » ou double-triangulaire en français).
Le modèle théorique du robot étudié dans ce rapport a été mis au point par
Mohammadi Daniali dans sa thèse de doctorat « Contributions to the kinematic synthesis
of parallel manipulators » [4] à l'Université McGill sous la supervision de Jorge Angeles.
La thèse en question contient entre autres les modèles cinématiques directs et inverses
(ces modèles seront expliqués plus en profondeur dans la suite du rapport), les analyses
de singularité ainsi que les designs isotropes de tous les différents manipulateurs
proposés.
Pour ce qui est des modèles cinématiques et géométriques directs et inverses,
ceux-ci font objet d'études très poussées depuis déjà plusieurs dizaines d'années. C'est
surtout l'aide de la communauté mathématique qui a contribué grandement à l'élaboration
de solution aux modèles géométriques directs. Celles-ci sont cependant, en général,
extrêmement complexes et fastidieuses.
Quant aux simulateurs eux-mêmes, plusieurs efforts ont été faits de ce côté-ci.
Entre autres, Ilian Bonev de ParallelMIC a conçu plusieurs simulateurs sous forme de
scripts Matlab [2]. D’autre part, Stéphane Brunet de l’École Polytechnique de Montréal a
aussi conçu un simulateur codé en C++ dont je me suis légèrement inspiré dans la
conception de mon propre simulateur.
3
Finalement, Jean-Pierre Merlet de l'INRIA en France, qui a contribué grandement
à démystifier les mécanismes parallèles, a publié plusieurs articles et ouvrages et donné
un grand nombre de conférences concernant ses recherches dans le domaine. Ses travaux
intitulés « Parallel robots : open problems » [6] et « Still a long way to go on the road for
parallel mechanisms » [7] en particulier présentent les dernières avances et les principales
lacunes des connaissances actuelles. Ils ont aussi constitué pour moi un point de départ
idéal dans la découverte du monde des robots parallèles.
4
CADRE THÉORIQUE ET HYPOTHÈSES
État de la recherche
Il existe de nos jours plusieurs solutions qui offrent des simulateurs informatiques
des robots parallèles de toutes sortes. La majorité de ceux-ci, sont toutefois réalisés pour
des interfaces traditionnelles et très peu offrent un niveau de réalisme comparable à celui
des environnements de réalité virtuelle. Un exemple classique est celui des scripts Matlab
qui permettent d'implanter le code nécessaire à la visualisation du mouvement du robot, à
l'intérieur d'une fenêtre. La majorité de ces logicie ls n'offrent qu'un affichage en deux
dimensions, ce qui est totalement insuffisant. Même les logiciels plus complexes qui nous
présentent le robot en trois dimensions sont souvent insuffisants, et ne réussissent guère à
nous faire visualiser le fonctionnement du robot.
Avec l'aide de la réalité virtuelle, nous sommes en mesure de voir le robot presque
comme s'il était en avant de nous et d'interagir avec lui à l'aide d'une manette. Nous
pouvons donc le voir de tous les côtés et examiner son fonctionnement sous une
multitude d'angles, ce qu'aucun écran ne peut faire avec autant de réalisme.
Définitions
Avant d’entrer dans les détails, il serait utile de présenter quelques fondements
des robots parallèles. Premièrement, le terme parallèle désigne « un robot dont l'organe
terminal effecteur est relié à la base par au moins deux chaînes cinématiques
indépendantes, » [7] par opposition à un robot sériel où le nombre de chaînes
cinématiques indépendantes est au nombre d’une seule. Ensuite, les termes distal,
proximal, effecteur et base, désignent les différentes parties du robot, tel qu’illustré sur la
figure 1.
5
Figure 1 - Différentes parties d’un robot parallèle
Ainsi, la base (jaune) est la partie immobile du robot, l’effecteur (rouge) est
l’organe terminal et les proximaux (verts) et distaux (bleus), qui sont aussi des
actionneurs, sont des liaisons entre la base et l’effecteur.
Ensuite, il est utile d’éclaircir ce que sont les modèles géométriques et
cinématiques directs et inverses. Un modèle géométrique direct (MGD) est une
correspondance directe entre les positions des actionneurs et la position de l’effecteur.
MGD : Positions des actionneurs → Position de l’effecteur
Un modèle géométrique inverse (MGI) est une correspondance directe entre la
position de l’effecteur et les positions des actionneurs. Ainsi, en connaissant la position
de l’effecteur, on déduit celles des membres distaux et proximaux.
MGI : Position de l’effecteur → Positions des actionneurs
Un modèle cinématique direct (MCD) est une correspondance directe entre les
déplacements des actionneurs et le déplacement de l’effecteur.
MCD : Déplacements des actionneurs → Déplacement de l’effecteur
6
Finalement, un modèle cinématique inverse (MCI) est une correspondance
directe entre le déplacement de l’effecteur et les déplacements des actionneurs.
MCI : Déplacement de l’effecteur → Déplacements des actionneurs
Pour ce qui est des singularités, il s’agît de configurations très particulières où peu
importe les mouvements des actionneurs, il n’est plus possible de bouger le membre
effecteur. Cela arrive par exemple lorsque le déterminant d’une des matrices jacobiennes
du modèle cinématique devient nul.
Simplifications
Lors de l’élaboration du modèle cinématique, deux éléments ont été
négligés. Premièrement, aucun algorithme de détection de collision n’a été implanté. Des
limites ont été simplement placées sur l’étendue des positions possibles des actionneurs
de façon à ce que ces derniers n’entrent pas en interférence avec la base. Il est toutefois
possible qu’une interférence se produise entre les actionneurs et l’effecteur. Un
algorithme de détection de collision peut être extrêmement fastidieux à implanter même
pour des structures relativement simples et il peut grandement réduire la performance du
simulateur dû à des calculs très complexes. Or, étant donné que le but de ce simulateur
n’était que de visualiser le fonctionnement global du robot, ce détail peut être omis.
Deuxièmement, on n’a pas tenu compte de la présence potentielle de singularités.
En fait, les singularités et la détection de collisions sont deux voies de recherches
extrêmement intenses en ce moment. Jusqu’à maintenant, aucun algorithme n’a été
développé qui permettrait de définir un chemin reliant deux points que lconques, libre
d’interférences et de singularités.
Une autre simplification a aussi été faite quant au mouvement de l’effecteur.
Celui-ci est commandé par des matrices jacobiennes qui ne sont précises que lorsque les
déplacements sont infinitésimaux, or ce n’est bien évidemment pas le cas.
Finalement, pour ce qui est de la version du logiciel dans la voûte, il n’est possible
de déplacer qu’un seul actionneur à la fois, ceci dû à une limite au niveau des boutons
disponibles sur la manette. Ainsi, avec un bouton on change d’actionneur et avec deux
7
autres on les fait tourner. En pratique, on n’agît presque jamais sur un seul actionneur à la
fois. Toutefois, afin d’améliorer l’ergonomie au niveau de l’interaction cette limite a été
posée. Grâce au clavier, cette limite n’existe pas dans la version pour les postes de travail
(UNIX et Windows) et on peut agir sur autant d’actionneurs à la fois que l’on veut.
8
MÉTHODOLOGIE DE TRAVAIL
Modèle 3D
Avant de commencer à programmer le fonctionnement du robot, il a d’abord fallu
modéliser le robot dans un logiciel de CAO. Le point de départ a donc été la conception
du robot dans CATIA V5R8 et l’exportation dans un format facilement lisible. À ce
moment précis plusieurs formats se présentent à nous : VRML, STEP, STL... Parmi
ceux-ci, c’est le format STL qui est le plus facile à récupérer. Ce format est un maillage
triangulaire de la surface du solide. Le fichier est donc structuré par facettes définies par
quatre vecteurs : un vecteur normal est trois pour définir les trois sommets du triangle.
Ceux-ci peuvent être récupérés directement et stockés dans des éléments GLTriangles où
les vecteurs normaux servent à calculer la réflectivité de l’élément.
Position initiale
Afin de positionner les structures récupérées, il faut résoudre plusieurs systèmes
d’équation à l’aide de l’algèbre linéaire. Avant de fournir toutes les équations, définissons
d’abord une série de vecteurs unitaires. Les vecteurs →
iP définissent les positions des
membrures de la base, les vecteurs →
iQ définissent les positions des membrures de
l’effecteur et, finalement, les vecteurs →
iR définissent les positions des actionneurs.
Toutes les coordonnées sont données dans un référentiel où le plan xz définit le
« plancher » et y est l’axe vertical (le vecteur →→
et( ) T841.25 0 TD 0 Tc ( ) Tj 5.25 0 Tf -047607 Tc 047607 Tw (l’axt ) Tj867.5 0 TD /F4 12 Tf -0.078 Tc 0 Twx56
rs − −
ii i ii i ii
9
Ensuite, nous supposons, que les vecteurs de l’effecteur →
iQ sont le résultat d’une
rotation de π/3 par rapport au vecteur
01
0
. On obtient alors :
−−=
−=
−
−
=→→→
8164965809.05773502692.0
0
4082482904.05773502692.0
7071067812.0
4082482904.05773502692.0
7071067812.0
321 QQQ [2]
Finalement, le vrai défi est de trouver les positions des effecteurs qui
correspondent à cette position de l’effecteur. Afin de trouver les vecteurs →
iR , nous allons
résoudre le système d’équations suivant, en supposant que les trois actionneurs sont à la
même position sur les trois rampes :
[ ]( ) ( )( ) ( )( ) ( )
[ ]( )
( ) ( )( ) ( )
[ ] [ ]
=
++−
−=
+−−
−−−=
baselasurPositioneffecteurlsurPosition
effecteurlsurPosition
baselasurPosition
'cos8164965811.0sin4082482905.0sin5773502694.0cos5773502693.0
sin7071067812.0'
cos4082582905.0sin4082482905.0cos5773502692.0sin5773502692.0
sin70710678120cos7071067812.0
αααα
αββ
ββββ
[3]
où β est l’angle qui définit la position de l’actionneur sur la base et α est l’angle
qui définit la position de l’actionneur sur l’effecteur tel qu’illustré à la figure 2 (voir
détails à l’annexe A).
10
Figure 2 - Angles β et α
La solution de ce système donne α = 0.4636476093, ce qui nous permet d’obtenir
les vecteurs →
iR .
−=
−
−
=
−−=
→→→
5477225574.07745966694.0
3162277663.0
07745966694.0
6324555326.0
5477225579.07745966694.0
3162277659.0
321 RRR [3]
La figure 3 illustre les neuf vecteurs discutés ci-haut.
Figure 3 - Vecteurs →
iP , →
iQ et →
iR
Quant aux rotations des membres proximaux, elle est simplement obtenue
approximativement en calculant les angles entre les vecteurs →
iP et
−
→→
+ ii RQ 1 .
Ainsi, nous obtenons tout ce qui est nécessaire au positionnement initial de tous
les membres. La prochaine étape consistera à déterminer les déplacements de l’effecteur
en fonction des déplacements des actionneurs.
11
Modèle cinématique direct
Le modèle cinématique direct avait déjà été élaboré pour ce type de robot par
Daniali [4]. Celui ci est une équation linéaire qui met en relation les déplacements des
trois actionneurs et les trois rotations de l’effecteur.
0=+ ωθrr
& KJ [4]
où les matrices J et K sont des matrices Jacobiennes définies comme suit :
⋅
×
⋅
×
⋅
×
=
→→→
→→→
→→→
333
222
111
00
00
00
PQR
PQR
PQR
J [5]
et
×−
×−
×−
=→→
→→
→→
T
T
T
QR
QR
QR
K
)(
)(
)(
33
22
11
[6]
et les vecteurs ωr
et θr& sont définis respectivement comme le vecteur des vitesses
angulaires de l’effecteur et le vecteur des taux de rotation des trois actionneurs.
Algorithme et programmation
Une fois toute la théorie élaborée, on peut se lancer dans la mise en place d’un
algorithme pertinent. Ainsi, on commencera par implanter toutes les fonctions nécessaires
aux calculs algébriques. Ensuite, il faudra implanter la fonction d’affichage, qui balaiera
toutes les membrures et les positionnera aux endroits voulus. Finalement des fonctions
spéciales seront requises pour l’interface usager. Lors de l’exécution, le logiciel devra
tout d’abord initialiser tous les vecteurs, afficher le robot et ensuite appeler les fonctions
algébriques et redessiner la scène à chaque fois qu’une commande est interceptée. Voici
12
une liste abrégée de toutes les étapes de la programmation en environnement Visual C++
avec les librairies OpenGL :
• Mise en place de l’interface graphique OpenGL
• Création des fonctions algébriques
o implantation des opérations algébriques : vecteur × vecteur,
vecteur · vecteur, matrice × vecteur, matrice × matrice,
matrice + matrice etc.
o création de matrices de rotation autour d’un vecteur quelconque
o détermination des angles de rotation de l’effecteur en fonction des
rotations des actionneurs
o calcul de l’angle entre deux vecteurs
o normalisation d’un vecteur
• Fonction d’affichage des membrures du robot aux positions voulues
• Interaction avec l’usager (actionneurs)
Le résultat de cette étape est un programme totalement fonctionnel et indépendant
permettant de visualiser le robot en 3D et d’interagir avec lui, à l’aide du clavier par
exemple.
Toutes ces fonctions seront décrites plus en détail dans la partie Programmation.
Implantation dans la Voute
Une fois le programme créé en OpenGL, on n’a plus qu’à rajouter les fonctions
d’initialisation de la Voute, à réimplanter les fonctions responsables de l’interaction et à
modifier les noms de quelques fonctions pour qu’il soit fonctionnel dans l’environnement
de réalité virtuelle. En gros, il s’agît de remplacer toutes les fonctions de la librairie
GLUT par celles de la librairie CAVE_OGL.
13
PROGRAMMATION
Fonctions algébriques
Opérations élémentaires
Premièrement, il faut implanter toutes les fonctions de l’algèbre linéaire
suivantes :
−−−
==×
1221
1331
2332
321
321
vuvuvuvuvuvu
vvvuuukji
vu
rrr
rr [7]
332211 vuvuvuvu ++=⋅rr
[8]
++++
++
=
333232131
323222121
313212111
umumumumumum
umumum
uAr
[9]
++++++++++++
++++++
=
333323321331323322321231313321321131
332323221321322322221221312321221121
331323121311321322121211311321121111
babababababababababababababababababa
bababababababababa
AB [10]
++++++
+++
=+
333332323131
232322222121
131312121111
babababababa
bababa
BA [11]
où A et B sont des matrices est ur
et vr
sont des vecteurs unitaires.
Matrice de rotation
Une fonction spéciale a été implantée qui permet de créer une matrice de rotation
autour d’un axe quelconque :
14
où α est l’angle de rotation en radians et ur
est le vecteur unitaire définissant l’axe
de rotation.
Angles do rotation des l’effecteur en fonction des taux de rotation des actionneurs
Une fonction a été créée qui prend comme paramètre les vecteurs de position →
iP ,
→
iQ et →
iR , ainsi que le vecteur θr& et la matrice de rotation de l’effecteur précédente
(lorsque cette fonction est appelée pour la première fois, la matrice de rotation de
l’effecteur est une matrice identité) et détermine le vecteur ωr
correspondant et la
nouvelle matrice de rotation. Voici la procédure qui décrit les différentes étapes des
calculs :
1. Création des matrices jacobiennes J et K, tel que décrit par les équations 5 et 6
2. Multiplication de la matrice jacobienne J par le vecteur θr&
θr&J
3. Calcul du déterminant de la matrice jacobienne K
K
4. Si le déterminant est non nul, on continue, sinon, on arrête
5. Inversion de la matrice jacobienne K
1−K
6. Multiplication de l’opposé du résultat de 5. par le résultat de 2., ce qui donne
le vecteur ωr
ωθrr
& =− − JK 1
( )( ) ( ) ( )( ) ( ) ( )( ) ( )( )( ) ( ) ( )( ) ( ) ( )( ) ( )( )( ) ( ) ( )( ) ( ) ( )( ) ( )
[ ]12coscos1sincos1sincos1sincos1coscos1sincos1
sincos1sincos1coscos1
23132231
1322
2321
2313212
1
+−+−−−−−+−+−
+−−−+−=
αααααααααααα
αααααα
uuuuuuuuuuuuuu
uuuuuuuM rot
15
7. Création de trois matrices de rotation, tel que décrit par l’équation 12, à partir
des trois angles obtenus
8. Multiplication des trois matrices dans un ordre quelconque, ce qui donne la
matrice de rotation globale
9. Il faut ensuite multiplier cette matrice par la matrice précédente afin d’obtenir
un résultat cumulatif
10. C’est la matrice cumulative qui servira à mettre à jour l’affichage alors que la
matrice non cumulative servira à mettre à jour les vecteurs de position →
iP , →
iQ
et →
iR .
Angles de rotation des proximaux
Les angles de rotation des proximaux sont simplement obtenus en calculant les
angles entre les vecteurs →
iP et
−
→→
+ ii RQ 1 . Premièrement, on effectue un produit
vectoriel entre les deux vecteurs, ensuite on calcule la norme du résultat. L’angle entre les
deux vecteurs est égal au arc cosinus de la norme (étant donné que les vecteurs sont
unitaires).
Affichage
Voici une description détaillée de la procédure servant à affiche r les différents
membres du robot. Il est important de noter que chacune des membrures est définie par
une série de facettes de trois sommets dans les référentiels illustrés aux figures ci-
dessous. La figure 4 illustre le référentiel de la base, la figure 5 celui de l’effecteur, la
figure 6 celui des distaux et la figure 7 celui des proximaux.
16
Figure 4 - Système de référence pour la base
Figure 5 - Système de référence pour l’effecteur
Figure 6 - Système de référence pour les distaux
17
Figure 7 - Système de référence pour les proximaux
Ainsi, il suffit de se positionner au bon endroit avec la bonne orientation et
d’appeler la fonction d’affichage du solide approprié. Cette dernière dessine tout
simplement des triangles sans se soucier de l’emplacement réel; c’est la matrice courante
qui s’occupe des transformations des coordonnées nécessaires.
1. Nettoyage de l’écran
2. (Ré)Initialisation de la matrice
3. Application du matériau pour la base
4.
18
8.3. Appel de la fonction d’affichage avec l’effecteur comme paramètre
8.4. Retour à la matrice enregistrée
9. Enregistrement de la matrice
9.1. Rotation autour du vecteur (0.0, 0.0, 1.0) pour placer le distal et le
proximal
9.2. Enregistrement de la matrice
9.2.1. Rotation autour du vecteur (1.0, 1.0, 0.0) pour tourner le
proximal autour de son axe
9.2.2. Application du matériau pour le proximal
9.2.3. Appel de la fonction d’affichage avec le proximal comme
paramètre
9.2.4. Retour à la matrice enregistrée
9.3. Application du matériau pour le distal
9.4. Appel de la fonction d’affichage avec le distal comme paramètre
9.5. Retour à la matrice enregistrée
10. Rotation de 120 degrés autour du vecteur (1.0, 1.0, 1.0)
Les étapes 9. et 10. sont ensuite répétées 2 fois afin de dessiner les deux autres
proximaux et distaux.
19
DISCUSSION DES RÉSULTATS
Les résultats obtenus sont plus que satisfaisants. En effet, le fait de voir le robot
comme s’il était devant nous aide énormément dans la compréhension du mécanisme.
Cependant deux problèmes se font sentir à l’exécution.
Pour les raisons explicités auparavant, le fait d’utiliser un modèle cinématique et
non géométrique fait en sorte que les déplacements du membre effecteur accumulent, tel
que prévu, des imprécisions de plus en plus importantes. Ainsi, après un certain temps
l’effecteur peut même sortir des jointures qui sont censés le retenir et le guider. Le seul
moyen de palier complètement à ce problème serait d’implanter un modèle géométrique
direct, ce qui est pratiquement infaisable dû au nombre élevé de solutions possibles et à la
complexité des équations. Une solution plus réaliste serait de considérer des rotation des
actionneurs plus petites, de façon à ce que les déviations engendrées soient, elles aussi,
plus petites. Ceci est cependant coûteux en temps machine, surtout lorsque les taux de
rotation deviennent très petits. Le simulateur ne doit donc être utilisé que durant un temps
limité et, lorsque les imprécisions deviennent significatives, il doit être réinitialisé.
Finalement, un dernier problème mineur se fait sentir au niveau de la résolution de
l’image projetée. Le fait d’avoir choisi un format de type STL fait en sorte que le robot
soit composé d’une multitude de petits triangles obtenus par maillage de la surface
extérieure de celui-ci. Afin de palier à ce problème on pourrait soit changer de format
pour par exemple STEP ou VRML qui sont des formats de type plus topologique ou
d’augmenter la taille du robot par un certain facteur avant de l’exporter et ensuite diviser
toutes les coordonnées par ce même facteur. Les triangles obtenus seraient plus petits,
mais leur quantité croîtrait. De cette manière, le logiciel occuperait une place beaucoup
plus importante en mémoire et s’exécuterait plus lentement.
20
CONCLUSION
La réalisation du présent projet s’est déroulée en plusieurs étapes, chacune
desquelles ayant exigé la familiarisation avec un univers complexe et vaste. Le domaine
des robots parallèles en est encore un qui se développe de jour en jour et où d’importantes
recherches se déroulent partout à travers le monde. La recherche bibliographique sur ce
sujet n’a donc pas été un obstacle.
Mis à part les robots parallèles et tout ce qui les entoure, le projet consistait aussi
en la programmation du simulateur en C++/OpenGL et en l’implantation du code dans
l’environnement de réalité virtuelle CAVE. Pour ce qui est de la programmation en C++
et en OpenGL, la documentation est bien évidemment abondante sur ces sujets. Les
choses se compliquent légèrement lorsque l’on parle de l’environnement CAVE. En effet
la documentation sur le sujet est très rare et souvent même ne s’applique qu’à des cas
particuliers de configurations spécifiques.
Les résultats du projet sont plus qu’encourageants à poursuivre les efforts mis
dans l’implantation de simulateurs de phénomènes difficiles à visualiser dans
l’environnement de réalité virtuelle. Ceci permet d’avoir une compréhension beaucoup
plus précise du phénomène et surtout d’épargner de l’argent investi dans la réalisation de
prototypes.
21
RECOMMANDATIONS
Une prochaine étape qui pourrait poursuivre les efforts mis dans le présent projet
pourrait être l’élaboration d’un moteur graphique permettant une implantation facile de
tout autre type de robot. Étant donné que le but de ce projet n’était que la visualisation
d’un seul type de robot, le code développé est très statique et s’adapte très difficilement à
l’implantation d’un quelconque autre type. De la même sorte il est impossible de changer
les dimensions des membrures, ce qui pourrait pourtant être intéressant afin de pouvoir
optimiser la géométrie.
D’autre part, le code développé dans ce projet n’exploite qu’une infime partie des
capacités de l’environnement virtuel offert par la CAVE. Il serait intéressant de le
développer afin qu’il exploite mieux ses fonctionnalités, en particulier celles de
l’interaction avec l’usager.
22
RÉFÉRENCES
[1] BAKER, P., http://archive.ncsa.uiuc.edu/Vis/ImmersaVis/Notes/course.html,
National Center for Supercomputing Applications, University of Illinois, 1997.
[2] BONEV, I., Simulation of 3–RRR Planar Parallel Manipulators, 2000.
[3] COMPANY, O. http://www.lirmm.fr/~company/fr/robot_fr/robot_fr_2.htm,
Laboratoire d'Informatique, de Robotique et de Micro-électronique de
Montpellier.
[4] DANIALI, M., “Contributions to the kinematic synthesis of parallel
manipulators”, Department of Mechanical Engineering, McGill University, mars
1995.
[5] DANIALI, M., ZSOMBOR-MURRAY, P.J., ANGELES, J., Direct kinematics of
double-triangular parallel manipulators, McGill Centre for Intelligent Machines
and Department of Mechanical Engineering, McGill University, 1995.
[6] MERLET, J.P., “Parallel Robots: Open Problems” INRIA, BP 93, 06902 Sophia-
Antipolis.
[7] MERLET, J.P., “Still a long way to go on the road for parallel mechanisms”,
INRIA Sophia-Antipolis, ASME 2002 DETC Conference, Montréal.
[8] PAPE, D., CRUZ-NEIRA, C., CZERNUSZENKO, M.,
http://www.cours.polymtl.ca/inf6802/notes/CAVEUserGuide/index.html,
Electronic Visualization Laboratory, University of Illinois at Chicago , 1997.
[9] SABSABY, M., “Synthèse d’un manipulateur parallèle sphérique à trois degrés de
liberté », École Polytechnique de Montréal, janvier 2002.
[10] WANG, J., GOSSELIN, C., “Representation of the singularity loci of a special
class of spherical 3-DOF Parallel manipulator with revolute actuators,
Département de génie mécanique, Université Laval, Québec.
23
[11] ZHANG, D., XI, F., MECHEFSKE, C., “Kinematic Analysis of a Spatial 3-DOF
Parallel Manipulator”, Integrated Manufacturing Technologies Institute, National
Research Council of Canada, London, ON.
[12] Grand dictionnaire terminologique, http://www.granddictionnaire.com, Office
national de la langue française, 1999