Professional Documents
Culture Documents
Introduction
Un des enjeux essentiels de la ralit virtuelle est de permettre de manipuler des objets
virtuels comme s'ils taient rels. Cela implique de restituer les phnomnes naturels le plus
dlement possible. Pour ce faire, il faut tudier les modles mcaniques qui rgissent le
mouvement des objets, et notamment s'intresser aux interactions entre objets. En eet, le
traitement des chocs et des contacts est primordial pour avoir une sensation de manipulation
raliste avec un priphrique retour d'eort.
Des travaux concernant le traitement des chocs et des contacts ont dj t mens au
sein de l'quipe SIAMES. Ces travaux ont conduit dvelopper de nouveaux algorithmes
de rsolution. Ces algorithmes sont bass sur des paramtres mcaniques, ils sont donc
performants au niveau du ralisme des interactions. Ils sont galement performants au niveau
des temps de calcul puisqu'ils permettent de simuler les interactions entre 160 billes en temps
rel [Dum05].
D'autres travaux, au sein de l'quipe, ont permis l'intgration de priphriques retour
d'eort pour piloter des simulations de ralit virtuelle mais il reste encore des progrs
faire concernant la contrainte temps rel et la qualit de la perception.
Nous nous intresserons ici au couplage entre ces nouveaux algorithmes performants et
les priphriques haptiques dans le but d'amliorer la qualit de perception des chocs.
Dans ce rapport, nous commencerons par expliciter quelques notions utiles la comprhension du problme. Nous exposerons ensuite quelques mthodes de dtection de collision
puis nous nous intresserons aux mthodes de dtermination des eorts d'interaction que ce
soit pour des contacts ou pour des chocs, en nous appuyant sur les travaux de Jean-Marie
Souez [Sou02] et de Mathieu Renouf [RAD05]. Nous exposerons alors les enjeux propres
au couplage de ces algorithmes avec les priphriques haptiques. Dans la deuxime partie
qui concerne la conception et la mise en uvre du couplage, nous commencerons par expliquer le concept sous-jacent ce stage puis, aprs avoir prcis le cadre de notre travail,
nous dtaillerons l'implmentation des dirents modules. Nous conclurons en prsentant
les perspectives envisages.
Amandine Fressier
1 Quelques dnitions
1.1
1.2
Rappels . . . . . . . . . . . . . . . . . . . . .
1.1.1 Scne virtuelle . . . . . . . . . . . . .
1.1.2 Temps rel . . . . . . . . . . . . . . .
1.1.3 Retour haptique . . . . . . . . . . . .
Gnralits sur le traitement des interactions
2.2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Couplage
3.1
3.2
7
7
7
8
8
11
11
11
12
14
14
15
15
22
Dnition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Problmatique du couplage temps rel . . . . . . . . . . . . . . . . . . . . . . 23
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
29
29
31
31
32
Irisa
5 L'environnement
5.1
5.2
OpenMASK . . . . . . . . . . . . . . . . . . . . . . . .
5.1.1 Description gnrale . . . . . . . . . . . . . . .
5.1.2 La programmation dans OpenMASK . . . . . .
5.1.3 L'objet de simulation OpenMASK . . . . . . .
5.1.4 La visualisation dans OpenMASK . . . . . . .
ConF&TiS (Contacts, Frottements & Time Stepping)
5.2.1 Description . . . . . . . . . . . . . . . . . . . .
5.2.2 Utilisation . . . . . . . . . . . . . . . . . . . . .
5.2.3 Principe de fonctionnenemt . . . . . . . . . . .
5.2.4 Dtails de l'architecture . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
L'architecture choisie . . . . . . . . . . . . . . . . . . . . . . . . . . .
Le simulateur dynamique . . . . . . . . . . . . . . . . . . . . . . . .
6.2.1 Dtails de l'architecture . . . . . . . . . . . . . . . . . . . . .
6.2.2 Vers une plate-forme idale . . . . . . . . . . . . . . . . . . .
Le module d'interaction . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.1 Quel type de picking ? . . . . . . . . . . . . . . . . . . . . . .
6.3.2 Les direntes solutions . . . . . . . . . . . . . . . . . . . . .
6.3.3 Bilan sur le module d'interaction . . . . . . . . . . . . . . . .
Le couplage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.1 Prcisions concernant l'existant . . . . . . . . . . . . . . . . .
6.4.2 Modications eectues . . . . . . . . . . . . . . . . . . . . .
6.4.3 D'un point de vue OpenMASK . . . . . . . . . . . . . . . . .
6.4.4 Reprsentation OpenMASK du priphrique retour d'eort
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6.4
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
33
33
33
34
34
35
35
35
36
36
37
39
39
40
40
45
46
47
48
52
52
52
53
54
55
57
8 Conclusion
60
Amandine Fressier
Irisa
Premire partie
Chapitre 1
Quelques dnitions
Il y a quelques pr-requis ncessaires pour pouvoir aborder le reste de ce rapport. En
eet, notre sujet est assez large puisqu' il traite des interactions d'un utilisateur avec des
objets virtuels. Il faut donc avoir des notions concernant la modlisation du monde virtuel
mais aussi concernant les contraintes qu'imposent l'interaction avec un utilisateur. Ce sont
ces notions et quelques autres que nous allons dtailler dans les paragraphes suivants.
1.1 Rappels
1.1.1 Scne virtuelle
Une scne virtuelle est compose d'objets ayant des proprits spciques (forme, position, matriau, couleur...). Les traitements de la scne, quelqu'ils soient (calcul de rendu,
traitement des interactions...) se basent sur ces proprits.
Pour calculer une animation, on discrtise le temps en intervalles rguliers et on calcule
les nouvelles positions des objets pour chaque pas de temps. Plus le pas de temps est petit
meilleure est la qualit de l'animation, mais le nombre de calculs augmente considrablement,
ce qui pose problme lorsqu'on doit tenir compte de la contrainte temps rel.
Projet Siames
Amandine Fressier
Il y a plusieurs types de temps rels : le temps rel dur avec un noyau temps rel qui
assure que les entres/sorties se font dans un temps compatible avec la contrainte temps
rel. L'autre type est le temps rel souple qui assure simplement que si le temps de tous les
calculs est plus court que le temps simul alors la contrainte temps rel sera respecte.
Le temps rel pour une application visuelle ncessite un taux de rafrachissement de
l'ordre de 30Hz au minimum : une trentaine d'images par seconde, l'utilisateur l'impression que l'animation est continue. Mais pour une bonne immersion du sujet, la frquence
est plutt de l'ordre de 60Hz (pour les jeux vidos, ou bien pour la vision stroscopique
puisqu'on a deux images calculer). Par contre, pour ce qui est du retour haptique, ce taux
est plutt de l'ordre de 300Hz voire de 1000Hz pour certaines applications [HS04].
Irisa
Cette dformation locale et trs ponctuelle ne se modlise pas par un changement de frontire
mais plutt par des quations appropries au point de contact [PPG04].
On appelle solide rigide un solide qui a une forme constante dans le temps. Nous nous
intressons ici ce type de solide pour des raisons de temps de calcul. En eet, la prise en
compte de la dformation locale des solides lors du choc est plus coteuse (car on rajoute
des quations pour modliser cette dformation) mais pourtant, mme pour la modlisation
de solides rellement rigides, il serait intressant de les considrer comme partiellement
dformables car c'est ce qui se passe dans la ralit. On obtiendrait donc une plus grande
prcision dans le rendu des interactions.
Les interactions
Une interaction a lieu quand deux solides en mouvement se rencontrent. On peut tre
plus prcis en sparant les interactions en deux catgories : les chocs (impacts) caractriss
par leur brivet et qui provoquent le rebond des solides (liaison phmre) ; les contacts
qui durent dans le temps (liaison persistante).
Quelque soit le type des interactions, leur traitement se dcompose en deux parties : la
dtection gomtrique et le traitement des interactions lui mme c'est dire la rsolution des
quations de mouvement (ce que l'on appelle aussi, dans ce rapport, la dtermination des
eorts d'interaction). La dtection gomtrique sert dterminer quels sont les objets qui
entrent en collision et leurs points de contact. Lorsqu'un contact est dtect il faut modier
les quations de mouvement des solides de faon se qu'ils ne s'interpntrent pas.
La partie simulateur dynamique de la gure 1.1 reprsente le schma caractristique
d'un algorithme de traitement des interactions. Tout d'abord, les solides virtuels sont en
mouvement, la rsolution des quations de mouvement se situant dans une partie prcdant
le traitement des interactions, nous ne la dtaillerons pas dans ce rapport. On peut nanmoins
prciser qu'il s'agit de rsoudre des quations direntielles par une intgration temporelle
classique. Lors du mouvement des solides, tout moment, l'algorithme de dtection vrie
s'il y a des intersections. Si c'est le cas, il renvoie la liste des objets en contact et il faut
alors modier la rsolution des quations de mouvement pour prendre en compte l'eet de
l'interaction sur le mouvement des solides et assurer la non-pntration [Dum05].
La partie couplage de la gure 1.1 reprsente le coeur de notre sujet de stage et nous la
dtaillerons plus loin.
Projet Siames
10
Amandine Fressier
Fig.
Irisa
11
Chapitre 2
2.1.1 Enjeux
Le but de la dtection de collision est de signaler automatiquement un contact gomtrique quand il va se produire ou quand il vient de se produire [LG98]. Ce problme tant trs
courant dans de nombreux domaines comme la robotique, l'animation, la synthse d'image
ou encore la ralit virtuelle, il est donc trs tudi et on trouve dans la littrature beaucoup d'outils spciques. On s'aperoit nanmoins que les exigences vis vis des dirents
dtecteurs sont semblables : ils doivent tre rapides et prcis.
rapides : pour pouvoir notamment tre intgrs des applications mettant en uvre
un environnement virtuel. En eet, l'interactivit avec l'utilisateur tant primordiale,
on cherche minimiser les temps de calcul et atteindre le temps rel. De plus, mme
sans avoir la contrainte temps rel, les scnes devenant de plus en plus complexes,
on doit tre capable de grer en un temps raisonnable un nombre toujours croissant
d'objets mme de provoquer de nombreuses collisions.
Projet Siames
12
Amandine Fressier
prcis : ils sont la base du traitement des interactions. Les algorithmes de restitution
des chocs ou des contacts s'appuient sur les rsultats des dtecteurs, une erreur ce
niveau aurait donc des rpercutions dans toute la chane de traitement des interactions.
En eet, l'algorithme de dtermination des eorts se base sur les rsultats fournis par
le dtecteur, si ces rsultats sont errons, alors le calcul des eorts ne sera pas pertinent
et la restitution haptique sera de mauvaise qualit.
L'enjeu lors du dveloppement d'un dtecteur est donc de trouver un compromis, adapt
l'application vise, entre le temps de calcul des intersections et la prcision demande. Nous
allons maintenant voir quelques mthodes qui se sont attaches optimiser ce compromis.
Techniques discrtes
Les techniques discrtes sont utilises par des applications de simulation raliste mais
sans contrainte de temps rel, le retour en arrire tant coteux en temps de calcul.
Pour dtecter les interactions dans une scne, une des premires ides est de tester les interactions entre chaque polygones de la scne. Cette mthode permet d'obtenir des rsultats
corrects mais le temps de calcul est loin d'tre minimis. On peut rduire le nombre de tests
en remarquant que deux polygones loigns dans la scne ne connatront pas d'interaction
au pas de temps suivant. Cela conduit structurer la scne en rassemblant les objets voisins
et en limitant les tests ces objets.
Il y a deux approches majeures qui permettent d'liminer rapidement les tests inutiles :
les volumes englobants et la dcomposition spatiale.
La technique des botes englobantes a plusieurs variantes. La technique des botes englobantes alignes sur les axes a notamment t utilise par Cohen et al. [CLMP95] pour
dterminer quelles sont les paires d'objets qui peuvent entrer en collision. Les botes sont
places dans des listes correspondant aux axes du repre et ces listes sont tries dynamiquement. Le test d'intersection n'est eectu que pour les botes se chevauchant. Un tel
Irisa
13
algorithme est appel "Sweep and Prune". Les auteurs ont amlior les performances en utilisant le fait que les objets ne bougent pas beaucoup d'un pas de temps l'autre (cohrence
spatiale et temporelle de la scne). Ils ont ainsi implment un algorithme en O(n + m), o
n est le nombre d'objets de la scne, et m est le nombre d'objets trs voisins.
Une autre variante des botes englobantes consiste orienter les botes, c'est dire qu'elles
ne sont plus alignes sur les axes de la scne mais sur les axes dnis par l'objet [GLM96]. On
parle alors de OBBTrees (Oriented Bounding Box Trees). Chaque noeud de l'arbre est une
bote englobante, la racine englobant un objet entier et les feuilles des primitives. L'intrt
de cette variante est que l'on peut ainsi reprsenter n'importe quelle forme d'objet et pas
seulement des objets connexes.
Le problme des hirarchies de volumes englobants est que les arbres peuvent tre trs
profonds pour des modles complexes et le parcours pour trouver le point de contact exact
prend du temps.
La subdivision spatiale consiste quant elle diviser l'espace par des cellules et placer
chaque objet (ou bote englobante) dans ces cellules. Pour dterminer s'il y a collision il faut
examiner les cellules occupes par chaque bote et vrier si ces cellules sont partages par
d'autres objets. Cette mthode est coteuse en mmoire et peut devenir trs coteuse en
temps de calcul si la taille des cellules n'est pas approprie la scne. Pour diminuer le cot
mmoire, certains auteurs utilisent des tables de hachage.
Conscients des limites de ces deux approches, Gregory et al. [GLGT00] ont propos un
algorithme hybride tirant parti des avantages respectifs de ces approches. Ils prcalculent
une hirarchie hybride des objets. L'espace virtuel est d'abord partitionn par une grille uniforme, puis pour chaque cellule non vide, ils calculent un OBBTree reprsentant le contenu
de la cellule et stockent un pointeur associ l'OBBTree dans une table de hashage. Lorsque
l'on veut dterminer s'il y a collision, on cherche d'abord la cellule puis on regarde quel(s)
OBBTree(s) de la cellule sont concerns. Les auteurs utilisent galement la cohrence temporelle et spatiale pour amliorer les performances de leur algorithme. Grce cette approche
ils arrivent un temps de calcul acceptable pour le temps rel haptique (frquence en kHz)
sur des scnes relativement complexes (plusieurs dizaines de milliers de polygones).
Projet Siames
14
Amandine Fressier
est de dterminer si deux botes englobantes orientes (OBB) se chevauchent sur un intervalle
de temps. L'arithmtique des intervalles est utilise pour dterminer l'instant de la collision
et la hirarchie de botes englobantes aide liminer des tests inutiles. Redon et al. utilisent
galement diverses heuristiques pour amliorer les temps de calcul.
Conclusion
Quand on dcrit le problme du contact entre deux solides rigides en terme de vitesses,
on obtient l'quation suivante :
M (q) = Q(q, q, t) +
q
(2.1)
M (q) est la matrice d'inertie du systme, Q(q, q, t) est le terme qui exprime l'ensemble
Irisa
15
donc pas d'inconnues supplmentaires. On rsout alors l'quation 2.1 comme une quation
direntielle du second ordre qu'il y ait contact ou pas.
C'est donc une mthode assez intuitive qui, quand une collision est dtecte, place un
ressort entre les deux objets [MW88]. La loi du ressort est choisie pour que quand la distance
entre les deux objets tend vers 0, la rpulsion soit forte (tende vers l'inni). On peut prendre
la loi habituelle K/d, K tant la raideur du ressort et d la distance entre les deux objets. La
force de rpulsion est alors applique dans la mme direction (mais en sens inverse) pour les
deux objets. Quand les objets s'loignent cette force devient nulle.
Cette mthode est facile comprendre et programmer et elle s'applique bien aux solides
rigides. Cependant, si le choc est trs violent, le coecient de raideur tend vers l'inni et il
faut alors diminuer le pas de temps pour pouvoir rsoudre correctement les quations. Cette
mthode peut alors devenir trs coteuse en temps de calcul. Par ailleurs cette approche
convient pour des contacts, par contre, le traitement des chocs est plus dlicat car il n'y a
aucun moyen de rgler la raideur du ressort par des paramtres mcaniques. Il a t montr
que le choix du coecient de raideur (ou de pnalisation) est parfois impossible [SH96]. Il
faut donc ajuster cette raideur en fonction des conditions de simulation.
Pourtant cette mthode est trs utilise car elle est facile implmenter et facilement
adaptable aux solides dformables. Par ailleurs certains travaux rcents [HS04] ont permis
d'amliorer les performances de cette approche notamment en regardant la distribution des
forces sur une zone de contact et non plus sur un seul point. De cette faon cet algorithme
peut traiter les contacts entre surfaces.
Projet Siames
(2.2)
16
Amandine Fressier
dR = FR dt + JR
(2.3)
FR est une fonction continue qui reprsente les forces de contact dans le cas continu et
JR reprsente la partie discontinue.
Dans le cas de contact (sans impact) JR est nul, il n'intervient que lorsqu'il y a choc.
Dans l'quation 2.1 nous avons prsent R comme le vecteur des forces globales
de contact. Pour dterminer les R nous avons besoin d'informations complmentaires que
nous allons dtailler dans les paragraphes suivant.
La condition de Signorini
La condition de Signorini modlise le fait que deux solides ne doivent pas s'interpntrer
lors du contact. Soit g l'cartement entre deux solides et rn la force de rpulsion qu'exerce
un solide sur l'autre.
Il y a deux cas possibles : Soit les solides sont loigns,( g > 0 ), et donc la force de
rpulsion qu'exerce un solide sur l'autre est nulle (rn = 0). Soit les solides sont en contact
(g = 0) et la force de rpulsion est non nulle (rn > 0).
Plus formellement :
g 0 rn 0 g.rn = 0.
(2.4)
Cette loi modlise le fait que pour qu'un solide glisse sur un autre, il faut que leur vitesse
relative atteigne un certain seuil. Ce phnomne est traduit par le cne de Coulomb. Le
vecteur de force de frottement est spar en deux composantes : normale rn et tangentielle
rt . est le coecient de frottement.
S'il n'y a pas de glissement, on a la relation rt rn et on se trouve l'intrieur du
cne de Coulomb.
Si les solides glissent, on se trouve sur la frontire du cne : rt = rn .
En rsum :
si ut = 0,
si ut = 0,
rt rn
rt = rn
(2.5)
Cette loi sert modliser le rebond. Un rebond s'exprime par le fait que la vitesse normale
avant le choc est plus petite ou gale la vitesse normale aprs le choc. e est le coecient
de restitution. Sa valeur varie entre 0 (choc mou) et 1 (choc lastique).
En terme d'quation :
Irisa
17
un = eun+
(2.6)
Cette loi ne permet cependant pas de modliser le dcollement (par exemple pour un
parallpipde oscillant sur un plan). Pour modliser le rebond standard ainsi que le dcollement, on utilise l'quation suivante
un eun+
(2.7)
Nous allons maintenant prsenter les deux approches dont nous avons parl plus haut.
Toutes deux s'appuient sur les quations de la dynamique non rgulire que nous venons
d'noncer. Nous commenons par exposer l'approche pilotage par vnement (eventdriven).
Cette approche repart de l'quation 2.1. L'ide est de calculer la simulation avec un
pas de temps donn et de revenir en arrire pour dterminer l'instant exact de la collision.
En eet, avant la collision, l'quation 2.1 s'applique mais le vecteur des forces globales de
contact est nul. La rsolution ne pose donc pas de problme. Par contre au moment du choc,
le terme R reprsente une inconnue supplmentaire et le systme n'a plus de solution.
On rsout ce problme en dterminant l'instant exact de la collision et en appliquant aux
points en contact la loi d'impact de Newton qui modlise le rebond. On a donc une quation
supplmentaire qui permet de rsoudre le systme.
Nous allons maintenant prciser la notion de retour arrire. Il est courant, lors de la
simulation, que l'instant du choc ne corresponde pas un instant de calcul. On s'aperoit
donc "trop tard" qu'il y a eu collision. L'ide est de revenir en arrire et de recommencer
la simulation avec un pas de temps plus petit pour voir quand exactement s'est produite la
collision. Ces retours arrires tant coteux dans le cas o les collisions sont nombreuses, il
devient ncessaire de dissocier le traitement des contacts de celui des chocs. Cette discrimination se fait en comparant les vitesses relatives des solides un certain seuil : en dessous
de ce seuil c'est un contact et au dessus c'est un choc. Cette approche a t adapte aux collisions multiples, en commenant par traiter les chocs qui ont plus d'eet sur le mouvement
des solides, puis en traitant les contacts.
Cette approche pilotage par vnement dtermine avec prcision l'instant du choc, elle
donne donc de bons rsultats au niveau du ralisme des simulations. Le problme est qu'elle
devient trs coteuse lorsqu'il y a beaucoup d'interactions traiter. En eet, cette mthode
ncessite un ranement itratif du pas de temps pour rechercher l'instant de la collision, et
dans le cas o les interactions sont nombreuses, les temps de calcul semblent peu appropris
pour une simulation interactive [Dum05]. Par contre, on pourrait penser coupler cette approche avec un algorithme de dtection des interactions continu qui fait concider l'instant
de la collision avec un instant de calcul, on viterait ainsi les retours arrires. Il resterait
cependant un problme de synchronisation puisque l'algorithme de dtection continu modie
le pas de temps.
Projet Siames
18
Amandine Fressier
Nous allons maintenant illustrer cette approche avec les rsultats obtenus lors de simulations en trois dimensions [Sou02]. La gure 2.1 reprsente une planche en quilibre sur
un plan. La planche est pose de telle sorte que son centre de gravit se situe l'extrieur
du plan. L'algorithme dtecte que les points de gauche ont tendance dcoller du plan et
la planche bascule. Si au contraire on place le centre de gravit de la planche sur le plan
alors elle reste en quilibre. partir de la mme conguration, des exprimentations ont t
conduites avec succs pour s'assurer de la validit de l'quation 2.7 (loi d'impact de Newton
avec dcollement) en lchant la planche sur le support.
Fig.
Pour exprimenter le traitement des chocs et des contacts, un billard a t modlis. Cela
a permis de tester les algorithmes avec direntes situations initiales (nombre de boules,
vitesse, position). Lors du choc entre 2 boules, les rsultats obtenus sont ceux attendus :
les boules rebondissent symtriquement et la vitesse est amortie correctement. La gure 2.2
prsente le problme des interactions multiples. Une boule vient frapper une autre boule qui
est elle mme en contact avec une troisime boule. Ce contact initial est transform en choc
et engendre une impulsion lorsque les deux premires boules se rencontrent. Les deux boules
en contact initialement sont concernes par l'impact. Cette exprience permet de valider la
distinction faite entre les contacts et les chocs. La dicult vient du fait que lors du choc
par la troisime boule, les deux boules en contact peuvent soit s'entrechoquer, soit s'carter.
Si ces boules avaient t initialement cartes, alors le choc aurait transform l'cartement
en choc ou en contact.
Nous allons maintenant passer l'approche temps contrl (time-stepping) telle que
propose par exemple par Mathieu Renouf. Cette approche prend en compte la discontinuit
de la vitesse en repartant de l'quation 2.3. En cas de contact, le deuxime terme de la somme
de l'quation prcdente est calcul en faisant une moyenne des eorts d'interaction sur le
pas de temps.
Contrairement l'approche pilotage par vnement, le pas de temps est ici constant ce
qui est un atout pour la simulation temps rel et il n'y a pas de distinction entre les chocs et
les contacts. L'autre atout de cette mthode est qu'elle ne fait pas de retour arrire, en eet
Irisa
Fig.
19
celui-ci est gnant dans le cas d'interaction avec un utilisateur humain : on ne peut alors pas
garantir l'coulement continu du temps simul et donc cela pnalise le temps rel souhait.
Par contre, on ne calcule qu'une moyenne et on ne dtermine pas l'instant exact de la
collision, la prcision est donc moins importante que dans l'approche pilotage par vnement.
On peut toujours augmenter la prcision des calculs en prenant un pas de temps plus petit
mais les temps de calcul s'en ressentent. Nanmoins, cette mthode ne modiant pas le
pas de temps, ne faisant pas de retour arrire, elle parait tout de mme plus adapte aux
simulations temps rel. Pour preuve, elle permet de simuler, en temps rel, l'empilement de
160 sphres en obtenant des rsultats cohrents.
Nous allons prsenter quelques rsultats obtenus avec cette approche temps contrl. Le
premier exemple concerne l'empilement de sphres (gure 2.3). C'est un exemple coteux en
temps de calcul car le nombre de contacts observs augmente fortement avec le nombre de
corps. Les simulations ont t eectues avec une nombre croissant de sphres (80,160, 320 et
800). Comme nous l'avons dit ci- dessus, jusqu' 160 sphres, la contrainte temps rel pour la
visualisation (30hz environ) a pu tre respecte. En diminuant le nombre de sphres on peut
atteindre une frquence de sortie d'une centaine de Hertz. La gure ci-dessous reprsente
la simulation avec 800 sphres. Dans ce cas, le temps de calcul est nettement suprieur au
temps simul (une quinzaine de fois).
Dans la simulation de la gure 2.4, une bille de diamtre important a t place dans
une bote parmi un ensemble de billes plus petites. La bote est soumise une vibration et
sous l'action de celle-ci, on observe le mme phnomne qu'en ralit, la bille la plus grosse
remonte.
Projet Siames
20
Amandine Fressier
Fig.
2.3 Empilement de billes (800 billes, le temps rel n'est pas atteint)
Fig.
Conclusion
Irisa
21
pour simuler le choc entre deux billes. On peut imaginer une simulation deux billes o une
bille est tenue par l'utilisateur via le priphrique retour d'eort et l'autre est libre dans
l'environnement virtuel par exemple.
Projet Siames
22
Amandine Fressier
Chapitre 3
Couplage
Aprs avoir vu les direntes tapes du traitement des interactions, nous allons maintenant nous intresser au couplage entre les algorithmes de rsolution des quations de
mouvement et le priphrique retour d'eort.
Nous allons commencer par dnir ce qu'est le couplage puis nous verrons quelques uns
des problmes qu'il nous faudra rsoudre.
3.1 Dnition
Nous allons d'abord rappeler le schma de principe d'un systme retour d'eort [LAC03].
Un systme retour d'eort est gnralement compos des lments suivants :
Un bras retour d'eort et son contrleur temps rel.
Un logiciel de simulation physique temps rel qui intgre des algorithmes de dtection
de collision et de simulation des quations de la dynamique.
Un logiciel qui assure la communication entre le contrleur de l'interface haptique et
le simulateur physique temps rel. Ce logiciel gre le couplage entre ces deux systmes
dynamiques.
Un systme de visualisation qui ache la position des objets calculs par le simulateur
physique temps rel.
Jusqu'ici, nous avons dtaill le deuxime point : le logiciel de simulation physique temps
rel comprenant la dtection de collision et la dtermination des eorts d'interaction. L'objet
de ce chapitre est de s'attacher au point suivant, le couplage.
Irisa
23
Le couplage fait le lien entre le monde virtuel et le monde rel dans le but de faire ressentir
l'utilisateur un vnement virtuel de manire raliste. Dans notre cas, le monde virtuel est
rgi par les algorithmes prsents dans le chapitre prcdent, notamment les algorithmes de
Mathieu Renouf. Les vnements virtuels sont des chocs ou des contacts.
Le couplage doit donc prendre en compte l'action de l'utilisateur sur le priphrique
haptique et agir sur le monde virtuel en consquence. Il doit aussi, partir des rsultats des
algorithmes de simulation, piloter le bras retour d'eort.
En prsentant le couplage de cette faon, on voit apparatre plusieurs niveaux de problmes notamment lis au fait de passer du monde virtuel au monde rel et l'interaction
avec l'utilisateur.
Projet Siames
24
Amandine Fressier
bon moment. La restitution n'est plus cohrente, le bras retour d'eort se met vibrer et
l'utilisateur n'a pas d'autre choix que de le lcher.
Le deuxime point concerne le couplage proprement parler. Dans [OHT], il est prcis
que le priphrique haptique envoie des positions au simulateur qui lui, retourne des forces.
Dans certains cas o les algorithmes de simulation ncessitent des forces en entre, il faut
alors traduire les positions en forces. Cela se fait gnralement en introduisant un ressort en
parallle avec un amortisseur entre le pointeur virtuel et une reprsentation de ce pointeur
(un proxy). Cette mthode d'indirection entre le priphrique et le simulateur dynamique est
appele "couplage virtuel". Le couplage virtuel sert aussi assurer la stabilit du systme
[LMCL01]. En eet, quand l'utilisateur dplace le pointeur, le proxy suit ce mouvement
mais "en souplesse" grce l'intermdiaire du ressort et de l'amortisseur. Pour reprendre
l'exemple du mur, avec un tel couplage l'utilisateur reste en contact avec le mur par le biais
du proxy.
Des observations ont mis en vidence l'inuence ngative du couplage virtuel sur la
transparence. Des travaux ont alors t mens[LML02] pour maximiser le ralisme de la
restitution tout en assurant la stabilit. Ceci est fait en adaptant les paramtres du couplage virtuel (rigidit, amortissement) fonction de la frquence d'interaction. Dans notre cas,
comme dans le cas de Hasegawa et Sato [HS04], les algorithmes de simulation prennent en
entre des positions et rendent des forces, on pourrait donc penser se passer de couplage
virtuel. Cependant, il faudra peut tre explorer une piste de ce genre pour assurer la stabilit
du systme.
Un autre point dur rside dans l'asymtrie de la boucle d'interaction entre l'utilisateur et
le systme de simulation. En eet, une des premires choses prendre en compte lors de la
ralisation d'un systme interactif, ce sont les caractristiques des sens que l'on veut stimuler.
Dans notre cas, une bonne perception des forces ncessite des frquences relativement leves
(1000Hz). Nous avons vu que cela ne devrait pas nous poser de problme si l'on utilise
l'approche temps contrl avec peu d'objets virtuels.
Le problme vient du fait que les gestes de l'utilisateur sont assez lents (autour de 10Hz),
il y a donc une asymtrie de la boucle d'interaction. Les forces appliques au bras retour
d'eort doivent tre rafrachies une frquence leve, mais comme elles sont directement
relies aux mouvement de l'utilisateur, elles vont voluer lentement [FAT03].
La plupart des systmes haptiques oprent l'aide d'une boucle d'interaction ferme, le
systme rend les forces calcules la frquence dtermine par le mouvement de l'utilisateur.
Une grande part de l'information est donc perdue et le rendu est de mauvaise qualit, le
systme est instable et il y a des vibrations. Plusieurs solutions ont t envisages pour
rduire ce phnomne, une approche consiste calculer les forces basse frquence (30Hz)
et estimer ce qui se passe entre deux calculs successifs.
Dans [HWN04] les auteurs ont abandonn l'approche boucle ferm et proposent de gnrer les signaux hautes frquences en boucle ouverte. Les forces correspondant un contact
donn sont prcalcules fonction des conditions de contact (vitesse, matriaux,...). Ensuite,
quand le contact virtuel est eectivement dtermin, le signal haute frquence enregistr
Irisa
25
vient se superposer au signal basse frquence dtermin par les algorithmes de simulation.
Contrairement aux systmes en boucle ferme, cette approche a l'avantage de ne plus relier
directement forces et positions. En eet, dans l'environnement virtuel, la masse du priphrique haptique pose problme, car il n'est pas possible de la rduire et la perception des
contacts est biais, la transparence du systme est mauvaise. Avec l'approche boucle ouverte,
comme le retour d'information n'est pas immdiat, on peut traiter ce problme.
La mme ide est traite dans [KFN05], o il est prcis que les forces peuvent tre
prcalcules partir d'observation bases sur un contact rel entre des objets de matriau
donns. Cela permet de travailler avec des bibliothques de forces prtes tre appliques.
Pour l'instant, l'approche boucle ouverte est l'oppos de notre problmatique puisqu'elle
fait intervenir des forces prcalcules alors que nous voulons mettre en place une restitution
des eorts uniquement base sur les donnes calcules par la simulation en ligne. Par contre,
il serait sans doute intressant d'appliquer cette mthode en calculant hors ligne les forces
grce aux algorithmes temps contrl.
Une autre mthode [CSC05], consiste sparer la boucle de contrle des forces de l'environnement virtuel de simulation. Cette sparation permet la simulation de tourner moins
vite et l'utilisateur peut donc manipuler des mondes virtuels plus complexes. Cela autorise
galement la restitution d'eort distance via internet.
Cependant, les utilisateurs n'ont une sensation raliste que si les forces fournies la
boucle de contrle durant un pas de temps de simulation correspondent celles qui agissent
sur le pointeur virtuel. Les auteurs introduisent alors la notion de modle local d'interaction.
Ce modle local tourne une frquence donne et inclus les caractristiques du monde virtuel
propres une interaction sur un pas de temps de la simulation. Plus simplement, l'ide est
de reprsenter le pointeur virtuel par un proxy dynamique et de travailler sur ce proxy. En
fait cela dplace la frontire du virtuel au rel et permet ainsi de dissocier les problmes.
Cette mthode a beaucoup d'avantages car elle permet notamment d'augmenter la stabilit
du systme en prvoyant les contacts dans l'environnement immdiat du proxy et de calculer
des interactions entre le proxy et des objets entre deux calculs de la simulation (ce qui ne
nous sera pas forcment utile vu que nos algorithmes sont rapides). Il parait donc intressant
de se pencher sur cette approche et de voir si elle permet d'orir un bon compromis entre
stabilit et transparence.
Projet Siames
26
Amandine Fressier
Conclusion partielle
Dans cette premire tude, nous nous sommes attachs prciser le problme pos et
le replacer dans son cadre. Aprs avoir prsent quelques notions prliminaires et gnralits
sur notre sujet, nous nous sommes penchs sur le traitement des interactions. Suite un bref
tat de l'art des techniques de dtection de collision, nous avons expos direntes approches
de la dtermination des eorts d'interaction pour nir par aborder le couplage et quelques
uns des problmes inhrents. Ces direntes parties nous ont permis de nous faire une ide
des contraintes et des dicults prendre en compte durant notre stage.
En eet, le but du stage est de raliser le couplage entre un bras retour d'eort et les
algorithmes de traitement des interactions bass sur l'approche temps contrl dvelopps
au sein de l'quipe SIAMES. Ce couplage est gnrique, nous ne nous attachons pas un
priphrique retour d'eort particulier. Dans le chapitre suivant, nous prsenterons le
concept de ce couplage qui se fera en utilisant la plate-forme OpenMASK dveloppe dans
l'quipe SIAMES.
Irisa
Deuxime partie
27
29
Chapitre 4
Concept
Dans ce stage, nous avons propos une mise en uvre de rendu haptique avec des algorithmes de dynamique non rgulire. Nous allons dans ce chapitre justier ce choix de
la dynamique non rgulire et montrer comment notre stage s'insre dans les recherches
actuelles sur le rendu haptique.
Projet Siames
30
Amandine Fressier
4.1 Couplage entre un bras retour d'eort et un simulateur dynamique bas sur
une mthode de pnalisation
Fig.
Or, dans le cas o le simulateur dynamique est bas sur des algorithmes de dynamique
non rgulire, sa structure nous permet de nous passer de cette traduction puisqu'il est
capable de calculer l'eort rendre directement avec les positions et les vitesses fournies.
4.2 Couplage entre un bras retour d'eort et un simulateur dynamique bas sur la
dynamique non rgulire
Fig.
La dynamique non rgulire possde donc des avantages par rapport aux mthodes de
pnalisation. Au niveau du traitement des contacts, elle devrait tre plus performante car
plus proche de la ralit, et au niveau du couplage, elle permet de s'aranchir du couplage
virtuel qui pose des problmes de qualit d'interaction.
Irisa
31
Fig.
4.3 Dans notre cas : couplage entre un bras retour d'eort et ConF&TiS
Projet Siames
32
Amandine Fressier
Conclusion
Irisa
33
Chapitre 5
L'environnement
L'environnement de programmation a videmment eu un impact direct sur la conception
de notre programme. Nous allons donc consacrer ce chapitre la description de cet environnement ainsi qu' la description des travaux que nous avons repris (ConF&TiS de Mathieu Renouf). Nous prsenterons donc la plate-forme OpenMASK et le programme ConF&TiS. Nous
ne rentrerons toutefois pas dans les dtails, nous nous contenterons d'exposer les concepts
fondamentaux. Cette premire approche doit nanmoins tre susante pour cerner les diffrents choix de conception que nous avons fait. Le lecteur dsireux de se renseigner plus
amplement pourra se reporter aux rfrences donnes.
5.1 OpenMASK
5.1.1 Description gnrale
OpenMASK1 est une plate-forme dveloppe en C++ au sein de l'quipe SIAMES de
l'IRISA.
C'est un outil gnrique ddi aux besoins de la programmation en ralit virtuelle.
Plus prcisment, la plate-forme OpenMASK est une bibliothque C++ utilise pour le
dveloppement et l'excution d'applications modulaires de ralit virtuelle. Elle ore des
fonctionnalits d'interaction, de visualisation et de distribution rseau. Elle permet ainsi de
dvelopper des applications de simulation et de ralit virtuelle complexes.
De plus, elle est oriente multi-processus et permet donc la distribution des calculs sur une
grappe de processeurs, ce qui est souvent ncessaire en ralit virtuelle tant les applications
sont gourmandes en ressources. Il serait judicieux de conserver cette proprit l'esprit pour
pouvoir ventuellement amliorer les performances de notre programme.
Pour l'instant, nous n'utilisons que les fonctionnalits d'interaction et de visualisation
qu'ore la plate-forme.
1 Modular
Projet Siames
www.openMASK.org
34
Amandine Fressier
que prsent dans le Trait de la ralit Virtuelle dition 2006, volume 3 [FMT06], chapitre 12
Irisa
35
5.2.1 Description
La partie gestion des chocs et des contacts de ConF&TiS est base sur une approche de
type time-stepping. ConF&TiS permet de visualiser une scne compose d'objets simples
(sphre, plan, bote). Il prend en entre des chiers dcrivant les paramtres de la simulation :
description des objets, description des paramtres du simulateur dynamique. Le simulateur
dynamique calcule les trajectoires des objets fonction des paramtres fournis. En sortie, il
fournit un rendu visuel de la scne. Mais ConF&TiS ne permet pas d'interagir avec les objets
de la scne. Son architecture est pense uniquement dans le cas d'objets non interactifs.
Projet Siames
36
Amandine Fressier
5.2.2 Utilisation
Le schma ci-dessous montre l'utilisation de ConF&TiS. En entre, on lui fourni des
chiers dcrivant la simulation et en sortie on obtient une visualisation de cette simulation.
Fig.
Irisa
37
fraction du pas de temps (fraction dnie par le paramtre theta du chier param.in) et la
correction se fait dans ce qui reste du pas de temps simul.
Fig.
Projet Siames
38
Amandine Fressier
Conclusion
La premire tape du stage a donc t de prendre en main en parallle OpenMASK et ConF&TiS. Il a fallu d'une part cerner l'architecture de ConF&TiS et d'autre part
comprendre le fonctionnement d'OpenMASK. L'enjeu tant de dterminer si l'architecture
de ConF&TiS tait adapte nos besoins en interaction et couplage, ou si au contraire nous
devions la modier en tenant compte des spcicits d'OpenMASK.
Irisa
39
Chapitre 6
Projet Siames
40
Amandine Fressier
Ide L'ide est donc que les objets ConF&TiS ne soient plus seulement des objets au
sens C++, mais qu'ils soient des objets de simulation OpenMASK. Cela leur permet de
communiquer avec les dirents modules (module d'interaction et de couplage).
Irisa
Fig.
41
Manager par retour d'vnements. De plus, ce n'est pas adapt aux scnes trs lourdes : il
faut que le Manager ait autant de paires d'entres/sorties qu'il y a d'objets dans la scne et
il faut aussi qu'il gre un grand nombre d'vnements, et ce, chaque pas de temps.
Par ailleurs, le Manager ne peut pas pas savoir a priori combien d'objets vont tre crs, il
faut donc que les entres/sorties du Manager se crent au fur et mesure de la cration des
PsConfetiObject, c'est dire en dynamique, or ce n'est pas possible pour les entres.
Enn, un autre problme se pose pour faire correspondre les entres/sorties du Manager
celle des objets ConF&TiS, il faudrait sans doute mettre en place un systme index, map
ou vecteur, dont le cot de parcours ne serait pas ngligeable.
On voit que cette solution est dicilement viable, sa mise en uvre est lourde et le
rsultat est loin d'tre acquis, surtout en terme de performances.
Nous avons donc rchis une solution moins coteuse en terme de temps de calcul.
La solution adopte
Projet Siames
42
Amandine Fressier
auprs du Manager leur cration, le Manager possdant un vecteur de pointeurs sur les
PsConfetiObject. De cette faon, quand le Manager veut accder aux proprits des PsRigidBody, il le fait par le biais d'une double indirection. Ce qui n'est pas du tout coteux en
temps de calcul et cela permet au Manager d'accder aussi bien des attributs publiques
qu' des mthodes du PsRigidBody ou ventuellement du PsConfetiObject.
Fig.
Multithreading
C'est donc cette solution que nous avons mis en place, certes, elle n'utilise
pas le systme standard de communication d'OpenMASK mais nous nous sommes assurs
que cela ne limitait pas notre programme. En eet, le fait d'utiliser des pointeurs nous fait
perdre les fonctionnalits de distribution des calculs et de rpartition de la plate-forme.
Dans notre cas, cela importe peu car les calculs les plus coteux ne se font pas dans les
PsConfetiObject ni mme dans les PsRigidBody, ils se situent au niveau de la dtection
de collision et des algorithmes de dynamique non rgulire, c'est dire dans le Manager.
C'est donc le Manager qu'il conviendrait de dcouper en threads, et cette programmation
relverait du multithreading au niveau C++ et non plus au niveau OpenMASK puisque le
Manager est un seul et unique objet de simulation.
remarque
Nous allons, dans les pages qui suivent dtailler l'implmentation des classes
mises en uvre. Pour des questions de lisibilit, nous avons prfr laisser les exemples de
code dans le texte plutt que de les mettre en annexe.
Irisa
43
OpenMASK
Projet Siames
44
Amandine Fressier
PsConfetiObject : : PsConfetiObject
( P s C o n t r o l l e r& c t r l , c o n s t P s O b j e c t D e s c r i p t o r& o b j e c t D e s c r i p t o r ) :
P s S i m u l a t e d O b j e c t ( c t r l , o b j e c t D e s c r i p t o r ) , / / o b j e t de s i m u l a t i o n
PsvMechanismPartner ( ) , / / pour l a v i s u a l i s a t i o n
// s o r t i e s v i s u a l i s a b l e s p o s i t i o n , o r i e n t a t i o n , c h e l l e
_PosVisOutput
( addOutput<P s T r a n s l a t i o n >
( " PosVisu " , new PsPolator <P s T r a n s l a t i o n >() ) ) ,
_RotVisOutput
( addOutput<PsQuaternion>
( " RotVisu " , new PsPolator <PsQuaternion >() ) ) ,
_ScaVisOutput
( addOutput<P s S c a l e >
( " S c a v i s u " , new PsPolator <P s S c a l e >() ) ) ,
// c r a t i o n du \ t e x t i t { PsRigidBody }
_body ( new PsRigidBody ( ) )
Dans le corps du constructeur, on passe au Manager un pointeur sur le
courant.
PsConfetiObject
// s i g n a l e DynaManager qu ' un o b j e t a t c r
PsDynaManager : : g e t I n s t a n c e ( ) . a d d C o n f e t i O b j e c t ( t h i s ) ;
Nous avons modi le Manager pour qu'il range ce pointeur dans un vecteur de pointeur de
PsConfetiObject vector <PsConfetiObject *> _VecObjects.
v o i d PsDynaManager : : a d d C o n f e t i O b j e c t ( P s C o n f e t i O b j e c t o b j )
{
// on v r i f i e que l ' o b j e t p a s s en paramtre e x i s t e
a s s e r t ( o b j != NULL ) ;
// on l ' a j o u t e au v e c t e u r de p o i n t e u r s s u r d e s P s C o n f e t i O b j e c t
_vecObjects . push_back ( o b j ) ;
}
La lecture des paramtres et l'initialisation du PsRigidBody :
ConF&TiS gre 4 types d'objets, sphre, cube, plan, bol (le cylindre reste implmenter).
Ces objets ont des paramtres d'initialisation dirents (la sphre a besoin d'un rayon, le
plan d'un largeur et d'un longueur) mais ont aussi des paramtres en communs (ils ont
tous une vitesse et une position initiale par exemple). Il faut donc lire d'abord le type
de l'objet et ensuite lire certains paramtres en fonction de ce type, ce qui est fait dans les
fonctions (ParseType Params). On lit ensuite les paramtres communs tous dans la fonction
ParseCommonParams. Avec chaque paramtre lu on initialise un attribut du PsRigidBody
auquel on accde en drfrenant _body.
Irisa
45
La fonction ProcessEvent :
Nous avons vu que c'est le Manager qui eectue tous les calculs de position et d'orientation
des objets partir des proprits des attributs des PsRigidBody auxquels il accde par une
double indirection : _vecObjects[i]->getRB()->mthodeDePsRigidBody avec getRB() une
mthode permettant d'accder l'attribut priv _body du PsConfetiObject. Or c'est le PsConfetiObject qui gre la visualisation. Il nous faut donc passer les informations de position
et d'orientation calcules chaque pas de temps par le Manager au PsConfetiObject. Comme
nous n'avons pas retenu la solution qui consistait communiquer par entre/sortie entre ces
deux objets, nous le faisons par envoi d'vnements. A chaque pas de temps, le Manager
envoie un vnement valu de nom PsDynaManager : : event_Id. Le PsConfetiObject rceptionne cet vnement dans son ProcessEvent() et met jour ses sorties visualisation avec les
valeurs contenues dans l'OutputPair.
b o o l P s C o n f e t i O b j e c t : : p r o c e s s E v e n t ( PsEvent e v e n t )
{
// vnement envoy par l e Manager
i f ( event >e v e n t I d == PsDynaManager : : _eventId )
{
PsValuedEvent<PsDynaManager : : OutputPair > vEvent =
dynamic_cast< PsValuedEvent<PsDynaManager : : OutputPair >>(e v e n t ) ;
i f ( vEvent )
{
// mise j o u r d e s s o r t i e s avec l e s v a l e u r s r e u e s du Manager
_PosVisOutput . s e t ( vEvent>v a l u e . f i r s t ) ;
_RotVisOutput . s e t ( vEvent>v a l u e . s e c o n d ) ;
}
}
}
Projet Siames
46
Amandine Fressier
Ensuite il faudrait synchroniser tous ces objets de faon ce que l'action sur l'un d'eux
entrane une adaptation immdiate des autres ce qui pose des problmes de synchronisation.
L'autre solution consiste centraliser les calculs dans un objet de simulation (le Manager)
connu de tous les objets. C'est la solution que nous avons mis en place. Le Manager est
connect tous les objets et comme c'est lui qui eectue les calculs sa frquence grce
un algorithme itratif, il n'y a pas de problme de synchronisation. Dans cette solution les
objets n'ont plus grer de calculs, il n'y a donc pas besoin de les rpartir. On peut donc
se passer de la communication OpenMASK et les faire communiquer avec le Manager par
le biais de pointeurs. Par contre, il serait intressant de dcouper le Manager, qui eectue
tous les calculs, en plusieurs threads en utilisant par exemple la localisation gomtrique,
c'est dire en tablissant des zones d'inuence pour les objets. OpenMASK n'orant pas de
fonctionnalits pour dcouper un objet de simulation en threads, cela relverait donc de la
programmation C++. Cette solution nous parat la plus viable mais elle impose de ne pas
sparer les objets du Manager.
Actuellement, la communication entre objets de simulation telle qu'elle est implmente dans
OpenMASK ne fournit pas de solution adapte ce problme. En eet, OpenMASK permet
de faire communiquer des modules distincts (module de couplage avec module d'interaction
par exemple), ces modules ne comportant que quelques classes, mais ces classes pouvant
eectuer des calculs coteux. Dans ce cas, la communication OpenMASK permet de grer
facilement et avantageusement la distribution (sur plusieurs threads ou travers le rseau)
des modules.
Nous avons donc modi ConF&TiS pour l'adapter aux interactions. Nous avons pour
cela cr une classe PsConfetiObject qui permet de rendre les objets virtuels indpendants du
Manager, notamment en terme de visualisation, celui-ci ne grant plus que la partie calcul.
L'tape suivante est d'tre capable de slectionner l'objet que l'on veut piloter l'aide d'un
priphrique.
Irisa
Fig.
Fig.
47
Projet Siames
48
Amandine Fressier
Le priphrique que nous allons utiliser, c'est dire un bras retour d'eort, est capable
de se dplacer en 3D. Il serait donc intressant d'exploiter cette proprit au niveau de la
slection d'objets. Cela suppose la mise en place d'une dsignation 3D.
De nombreux travaux sur l'interactivit ont t fait dans l'quipe. Ces travaux
ont permis de fournir un kit d'interactivit [DT04] pour OpenMASK. Ce kit est un ensemble
de classes C++ qui permettent de rendre un objet de simulation interactif et de fournir des
interacteurs (outils d'interaction) qui contrlent les objets interactifs. L'ide est d'apprendre
aux objets et aux outils d'interaction un protocole de communication qui leur permette
d'tablir des connections dynamiques entre eux, de manire ce que les outils d'interaction
puissent manipuler les objets interactifs. Ce kit d'interactivit se veut gnrique, on doit
pouvoir se servir n'importe quel priphrique pour peu que l'on puisse connatre sa position
et son orientation. Le problme qui se pose dans notre cas, c'est que la communication se
fait dans les deux sens. L'objet interactif doit recevoir la position et l'orientation de l'outil
d'interaction mais l'outil d'interaction doit galement recevoir la force qui s'applique sur
l'objet interactif. Or dans le protocole d'interaction propos dans ce kit, la communication
ne se fait que dans un sens, de l'outil d'interaction vers l'objet interactif.
Nous avons pens modier ce kit qui a l'intrt de fournir des fonctions gnriques de dsignation de faon ce qu'il autorise le renvoi d'information de l'objet vers l'outil d'interaction.
Nous n'avons pas retenu cette solution car le kit comprenant beaucoup de classes, nous avons
d'une part manqu de temps pour tudier la faisabilit d'une telle modication et d'autre
part, toujours dans un souci de simplication et de performance, nous avons prfr crer
notre propre implmentation de la dsignation.
Nanmoins, si au cours des tests, on venait s'apercevoir que le module que nous avons
implment orait des fonctionnalits insusantes, il serait possible de reconsidrer cette
solution.
solution2
Irisa
49
Fig.
Cursor3D
Projet Siames
50
Amandine Fressier
// s e n d e r : XMouseTrigger ,
// g o a l : t o s i g n a l a p i c k on t h i s o b j e c t ( Cursor3D )
i f ( event >e v e n t I d == " T r i g g e r " ) {
i f ( c o n n e c t e d==f a l s e ) / / i f c u r s o r i s f r e e
{
// t r a d u c t i o n de l a p o s i t i o n r e u e pour l ' e n v o y e r au v i s u a l i s e u r
...
...
...
// e n v o i au v i s u a l i s e u r
sendValuedEvent ( _ a s s o c i a t e d P i c k e r ,
" omniPick " ,
PsPair<PsTranslationHPRRotation , PsFloat >( a x e V i s e e , P s F l o a t ( 1 0 ) ) ) ;
}
else
{// p a r t n e r i s i n i t i a l i z e d b e c a u s e c o n n e c t e d = t r u e
sendEvent ( partnerName , " d i s c o n n e c t i o n " ) ;
}
}
Le visualiseur renvoie
dsign.
Cursor3D
un vnement
Picked
// s e n d e r : a s s o c i a t e d P i c k e r ( v i s u )
// g o a l : g e t t h e PsName o f t h e p i c k e d o b j e c t
i f ( e v e n t > e v e n t I d == " p i c k e d " ) {
// PsValuedEvent<PsPair<P s S t r i n g , P s S t r i n g > >
PsValuedEvent < P s P i c k I n f o > valuedEvent =
dynamic_cast< PsValuedEvent < P s P i c k I n f o >> ( e v e n t ) ;
// nom de l ' o b j e t d s i g n
partnerName = valuedEvent > v a l u e . getPartnerName ( ) ;
Irisa
51
Ensuite, s'il y a bien eu un objet dsign et si cet objet est autoris interagir, alors Cursor3D
envoie un vnement de demande de connexion cet objet, en lui fournissant son nom et le
nom des entres auxquelles l'objet doit se connecter.
// s i i l y a un o b j e t d s i g n
// e t s i c e t o b j e t e s t a u t o r i s i n t e r a g i r
i f ( ( partnerName not_eq ( PsName ( "NULL" ) ) ) and ( ! i s I n ( partnerName ) ) )
{
i f ( ( partnerName not_eq PsName ( " " ) )
{
// pour p i l o t a g e
c o n n e c t e d = t r u e ; / / un o b j e t e s t maintenant en i n t e r a c t i o n
// OutputNames : nom d e s s o r t i e s de \ t e x t i t { Cursor3D } a u x q u e l l e s
// l ' o b j e t d s i g n ( partnerName ) d o i t s e c o n n e c t e r
sendValuedEvent<EValue>
( partnerName , " ReadyForConnection ? " , OutputNames ) ;
}
e l s e { connected = f a l s e ; }
}
e l s e { connected = f a l s e ; }
Projet Siames
52
Amandine Fressier
i f ( _body>get_connected ( ) == t r u e )
{
// mise j o u r d e s s o r t i e s v i s u de l ' o b j e t c o u r a n t
// par l e s v a l e u r s f o u r n i e s par Cursor3D
_PosVisOutput . s e t ( _PosInput . g e t ( ) ) ;
_RotVisOutput . s e t ( _RotInput . g e t ( ) ) ;
}
6.4 Le couplage
Jusqu'ici nous avons dtaill de quelle faon Cursor3D assure la connexion entre le priphrique et le PsConfetiObject. Dans ce chapitre, nous allons tudier l'tape suivante, c'est
dire comment les paramtres de vitesse et de position (et orientation) fournis par le priphrique passent du PsConfetiObject au Manager et inversement, autrement dit comment
la force calcule par le Manager est transmise au PsConfetiObject. Nous verrons galement
comment le priphrique est reprsent d'un point de vue OpenMASK.
Irisa
53
priphrique.
A chaque pas de temps, pour chaque objet, le Manager :
1. calcule la vitesse libre c'est dire en ne prenant en compte que la gravit. Dans le cas
d'un objet pilot par la simulation cette vitesse est fournie l'initialisation.
2. prdit la position et l'orientation sans tenir compte des contacts.
3. dtermine les contacts
4. corrige la position, l'orientation et la vitesse eectives en tenant compte des contacts
calculs l'tape prcdente. Dans le cas d'un objet libre, la vitesse eective est calcule
partir de la vitesse libre et des contraintes de contacts. Dans le cas d'un objet pilot,
la vitesse eective est celle fournie l'initialisation, la mme qu'en 1. . Quant la
position et l'orientation, elles sont dtermines fonction des positions et orientations
prdites et de la vitesse eective que l'objet soit pilot ou pas.
5. met les valeurs de position, d'orientation et de vitesse jour pour le prochain pas de
temps.
Nous devons maintenant voir comment modier ces fonctions de calcul dans le cas d'un
objet pilot par un priphrique.
PsConfe-
tiObject
Remarque
Projet Siames
54
Amandine Fressier
solution1
solution2 La solution prcdente est coteuse car elle implique une frquence leve pour
tous les objets de la simulation. Or on ne peut en piloter qu'un la fois. L'ide est donc
d'augmenter uniquement la frquence de l'objet pilot.
Le problme est que la frquence d'un objet de simulation est un paramtre xe donn
l'initialisation par le biais du chier de conguration. Si on ne voulait pas avoir la possibilit
de changer d'objet pilot en cours de simulation, on pourrait penser choisir un seul PsConfetiObject pilotable pour toute la simulation et lui xer une frquence adquate. Mais nous
souhaitons pouvoir changer d'objet piloter en cours de simulation, il faut donc trouver un
moyen de le distinguer des autres dynamiquement.
Pour cela, il sut de remarquer que ce qui caractrise un objet pilot c'est qu'il est connect
Cursor3D. La solution consiste donc augmenter la frquence de l'objet de simulation
Cursor3D de faon ce qu'elle soit suprieure celle du Manager. De cette faon, chaque
pas de temps, Cursor3D peut envoyer un vnement au PsConfetiObject qui lui est connect
pour lui signaler qu'il doit mettre les valeurs de son PsRigidBody jour.
Irisa
55
Cette solution est moins coteuse en temps de calcul que la solution prcdente car quelque
soit le nombre d'objets simuler, il n'y a que Cursor3D qui a une frquence leve.
Remarque
Fig.
Ce schma rsume ce qu'il faut implmenter pour que le priphrique puisse communiquer avec le reste de notre programme.
Pour communiquer avec le PsConfetiObject via Cursor3D, la classe reprsentant le bras doit
Projet Siames
56
Amandine Fressier
avoir une entre pour rcuprer la force qui s'applique sur l'objet qu'il pilote, une sortie
position/orientation et une sortie vitesse pour fournir ces donnes l'objet pilot.
La connexion avec Cursor3D se fait ds la cration des entres/sorties puisque Cursor3D
contient la gomtrie associe au pointeur du priphrique. Ces deux objets sont donc connects en permanence.
La frquence de cet objet doit tre 1000Hz, or il peu probable que cette frquence soit atteinte
par le simulateur dynamique. Une solution habituelle consiste mettre les valeurs fournies
par le simulateur dynamique dans un tampon et tant que ces valeurs ne sont pas mises
jour, on fournit au bras la dernire valeur connue. Dans notre cas, vu que la connexion avec
Cursor3D est permanente, il n'y a pas besoin de mettre en place un mcanisme de ce genre,
les entres/sorties OpenMASK le font automatiquement. Sur la sortie force de Cursor3D, la
dernire valeur fournie reste disponible et donc le priphrique peut la relire la frquence
voulue.
Mme en fournissant au bras des valeurs une frquence de 1000Hz, il est frquent de rencontrer des problmes de vibration ou d'instabilit. Il est alors possible de mettre en place
un systme de ltrage des valeurs reues directement dans la classe de l'objet de simulation.
Irisa
57
Chapitre 7
Projet Siames
58
Amandine Fressier
Fig.
Irisa
Fig.
Projet Siames
59
60
Amandine Fressier
Chapitre 8
Conclusion
Dans ce rapport, nous avons prsent une tude bibliographique qui nous a amen
proposer une solution pour amliorer le rendu haptique des chocs et des contacts. Cette proposition met en uvre la dynamique non rgulire. Nous pensons d'un part qu'un simulateur
dynamique bas sur la dynamique non rgulire propose un meilleur rendu des forces qu'un
simulateur classique bas sur une mthode de pnalisation car contrairement ce dernier,
la dynamique non rgulire modlise une ralit. D'autre part, nous avons vu qu'elle nous
permet de nous aranchir du couplage virtuel comme le montre la gure 8.1, ce qui doit
nous permettre d'avoir une meilleure qualit de restitution des eorts pour l'utilisateur.
Notre proposition se dcline en trois modules pour lesquels nous avons dni une mise en
uvre en utilisant la plate-forme OpenMASK du projet SIAMES, mise en uvre que l'on
peut voir en partie sur la gure 8.2. Le module de simulation dynamique issu des travaux
Irisa
61
Fig.
Pour nir, nous avons propos deux dmonstrations. La premire concerne les modications du simulateur dynamique. Cette dmonstration nous a permis de nous assurer que les
changements apports au simulateur n'ont pas modi les rsultats des calculs. La deuxime
dmonstration rete l'avancement de notre travail. Elle concerne l'interaction avec l'utilisateur, elle lui permet de slectionner et de piloter un objet de la simulation la souris. Pour
que la mise en uvre soit termine, il reste nir d'implmenter la communication entre le
simulateur dynamique et le priphrique.
Une fois l'implmentation acheve, pour dterminer si notre proposition permet d'amliorer sensiblement la qualit d'interaction, il sera ncessaire de se confronter des modles
existants. Nous avons pens par exemple l'API de ReachIn qui permet une qualit d'interaction trs concluante avec les bras retour d'eort de Sensable, la comparaison avec
notre proposition se fera donc en utilisant le priphrique OmniPhantom. Cependant, il sera
galement souhaitable de tester notre proposition avec un priphrique retour d'eort
six degrs de libert (comme le Virtuose d'Haption) pour pouvoir tester la restitution du
couple. Pour exploiter pleinement le couplage avec un tel priphrique il faudra modier le
module d'interaction pour pouvoir autoriser la slection d'objet par des points autre que
leur centre de gravit. De cette manire, le couple pourra rellement tre test.
Par ailleurs, dans le but d'amliorer les rsultats des tests, on peut d'ores et dj envisager plusieurs axes de travail. Dans notre rapport, nous avons propos plusieurs solutions
de mise en uvre qui diraient essentiellement par la frquence des objets de simulation
reprsentant les objets virtuels. Dans un cas, cette frquence tait nulle et dans l'autre elle
tait plus leve que celle du simulateur dynamique. Il faudrait tester ces deux solutions
pour dterminer laquelle est la plus performante au niveau des temps de calcul mais aussi
au niveau de la qualit d'interaction. Puis, toujours dans un souci de performance, il serait
intressant d'tudier la rpartition du simulateur dynamique sur plusieurs threads.
Projet Siames
62
Amandine Fressier
Bibliographie
[CLMP95] J. Cohen, M. Lin, D. Manocha, and K. Ponamgi. I-collide : An interactive
and exact collision detection system for large-scale environments. Proceedings of
ACM Int. 3D Graphics Conference, pages 189196, 1995.
[CSC05]
[DT04]
[Dum05]
[FAT03]
[FMT06]
[GLGT00] A. Gregory, M.C Lin, S. Gottschalk, and R. Taylor. Fast and accurate collision
detection for haptic interaction using a three degree-of-freedom force-feedback
device. Comput. Geom. Theory Appl., 15(1-3) :6989, 2000.
[GLM96]
[HS04]
S. Hasegawa and M. Sato. Real time rigid body simulation for haptic interactions based on contact volume of polygonal objects. Comput. Graphic. Forum,
23(3) :529538, 2004.
Irisa
63
[HWN04] Jesse D. Hwang, Michael D. Williams, and Gnter Niemeyer. Toward eventbased haptics : Rendering contact using open-loop force pulses. In HAPTICS,
pages 2431, 2004.
[KFN05] Katherine J. Kuchenbecker, Jonathan Fiene, and Gnter Niemeyer. Event-based
haptics and acceleration matching : Portraying and assessing the realism of
contact. In WHC, pages 381387, 2005.
[LAC03] A. Lcuyer, C. Andriot, and A. Crosnier. Interfaces haptiques et pseudohaptiques. In Proceedings of JNRR'03 (4me Journes Nationales de la Recherche en Robotique), 2003.
[LG98]
Ming C. Lin and Stefan Gottschalk. Collision detection between geometric models : a survey. Proc. of IMA Conference on Mathematics of Surfaces, 1998,
1998.
[LMCL01] Sompong Lertpolpairoj, Thavida Maneewarn, Siam Charoenseang, and Djitt
Laowattana. The eect of static virtual couplings on realistic performance of
haptic systems. Prooceedings of the 4th Asian Conference on Robotics and its
Applications, Singapore, 2001.
[LML02] S. Lertpolpairoj, T. Maneewarn, and S. Laowattana. Realistic and stability performances of haptic system with adaptive virtual coupling. Industrial Technology,
2002. IEEE ICIT '02. 2002 IEEE International Conference, 11-14 Dec. 2002,
1 :382 387, December 2002. 11-14.
[MAS03] T. Meyer, G. Andrade, and J.-M Souez. Un tat de l'art sur les logiciels de
dtection de collision. GTAS Brest, 2003.
[MW88]
M. Moore and J. Wilhelms. Collision detection and response for computer animation. In Proceedings of SIGGRAPH '88, pages 289298. ACM Press, 1988.
[OHT]
OpenHaptics Toolkit Programmer's Guide version 1.0.
[PPG04] M. Pauly, D. K. Pai, and L. J. Guibas. Quasi-rigid objects in contact. In
Proceedings of SCA '04, pages 109119. ACM Press, 2004.
[RAD05] Mathieu Renouf, Vincent Acary, and Georges Dumont. Comparison of algorithms for collisions, contact and friction in view of real-time applications. In
Multibody Dynamics 2005 : International Conference on Advances in Computa-
[RKC02]
[SH96]
[Sou02]
Projet Siames
64
Amandine Fressier
Irisa