L’algorithme g´en´eral de construction des r´eseaux de r´etraction Retract PRM est pr´esent´e fi- gure 4.11. D’abord, un premier arbre est construit `a l’aide de l’algorithme Visib-PRM. Ensuite,
4. R´eseau de r´etraction : Construction 77 tqv t0 gi tg0i+1 ugi= 0 uqv u0gi+1= 1 u0gi= 0 ugi+1= 1 tτ gi tτgi+1
FIG. 4.10 – Existence d’un chemin dans le diagramme de visibilit´e en consid´erant les r´etractions. Pour une configuration qv de τgi∩gi+1, s’il n’y a pas de chemin visible reliant gi
`a gi+1, alors il existe un chemin {gi→ qv→ gi+1} r´etractable sur un chemin du r´eseau reliant gi `a gi+1. Ceci assure au niveau du diagramme de visibilit´e l’existence d’un chemin reliant les param`etres tg0i et tg0i+1.
`a chaque it´eration, une configuration libre qv est tir´ee al´eatoirement et la connexit´e du sous r´eseau visible est calcul´ee (fonction TestVisibConnection ligne 5). L’´evaluation de la connexit´e se fait en ´evitant si possible, le calcul int´egral de ce sous r´eseau. Lorsque le sous r´eseau vi- sible n’est pas connexe, avant d’ins´erer qv dans le r´eseau, on cherche `a savoir si celui-ci ne va pas participer `a la cr´eation d’un chemin redondant tel que nous l’avons d´efini section 3.3. Pour cela, on d´etermine deux composantes distinctes quelconques du sous r´eseau et parmi celles-ci, on choisit les nœuds n1, n2plus proches voisins de qv. Ensuite, on teste l’´eventuelle r´etraction du chemin τ = n1−qv−n2 sur des chemins du r´eseau (fonction TestRetract ligne 9). Si la r´etraction est possible, on rejette la configuration car celle-ci n’est pas n´ecessaire `a la construction du r´eseau de r´etraction.
La m´ethode permettant de d´eterminer la connexit´e d’un sous r´eseau visible (fonction Test- VisibConnection), ainsi que la fac¸on dont est test´ee la r´etraction (fonction TestRetract) font l’objet des deux sous sections suivantes.
4.2 Sous r´eseau visible
Nous pr´esentons ici la m´ethode de calcul de la connexit´e d’un sous r´eseau visible `a par- tir d’une configuration qv (fonction TestVisibConnection de l’algorithme Retract PRM). L’al- gorithme associ´e `a cette recherche est repr´esent´e figure 4.12. Dans un premier temps, on d´etermine l’ensemble des nœuds du sous r´eseau visible en testant `a l’aide de la m´ethode lo- cale les chemins reliant qv aux diff´erents nœuds du r´eseau. Ensuite, on examine la connexit´e des nœuds visibles. Cet examen se fait en deux passes. Dans un premier temps, on consid`ere
78 Chapitre 4. R´eseaux de R´etraction
RETRACT PRM
input : the robot A, the environment B, ntrymax, ntry cyclmax
output : the roadmap G
1 G ← Visib-PRM(A, B, ntrymax)
2 ntry ← 0
3 While ntry < ntry cyclmax
4 qv← RandomFreeConfig(A, B) 5 If TestVisibConnection = False 6 n1← NearestNode(qv,Conn1(Gv)) 7 n2← NearestNode(qv,Conn2(Gv)) 8 τ ← BuildPath(n1, qv, n2) 9 If TestRetract(τ, n1, n2, G) = 0 10 AddNodeAndEdges(qv, n1, n2, G) 11 ntry← 0 12 Else 13 ntry← ntry+ 1 14 End If 15 Else 16 ntry← ntry+ 1 17 End If 18 End While
FIG. 4.11 – Algorithme globale de g´en´eration d’un r´eseau de r´etraction
toutes les arˆetes potentiellement visibles. Ainsi deux nœuds sont d´etect´es non connexes s’il est n´ecessaire de passer par un nœud invisible pour les relier (fonction IsVisibleConnect ligne 8). Ce premier test permet d’augmenter l’efficacit´e de la m´ethode en ´eliminant des sous r´eseaux non-connexes avant mˆeme d’avoir fait des tests de visibilit´e d’arˆetes qui sont plus coˆuteux. Si ce premier test ne permet pas de d´eterminer la connexit´e du r´eseau, on d´etermine cette fois-ci la connexit´e en testant la visibilit´e des arˆetes s´eparant les nœuds en question (fonction IsVisi- bleConnect ligne 12).
Nous d´ecrivons maintenant le test de visibilit´e d’une arˆete `a partir d’une configuration donn´ee.
Visibilit´e d’une arˆete
Pour le cas le plus simple, le test de visibilit´e d’une arˆete se ram`ene au test de validit´e d’une facette dans l’espace des configurations, ayant pour sommets qv et les deux extr´emit´es de l’arˆete (figure 4.13).
En r´ealit´e, ce test de visibilit´e peut se d´ecomposer en plusieurs tests ´el´ementaires de fa- cettes, suivant la nature de l’espace des configurations :
– Dans le cas o`uC est isomorphe `a [0,1]n(les degr´es de libert´e du robot sont uniquement des translations ou des rotations born´ees), alors le test de visibilit´e d’une arˆete se ram`ene
4. R´eseau de r´etraction : Construction 79
TestVisibConnection(G, qv)
1 Nvis← EmptyList
2 For all node n ∈ Ng
3 If Visible(n, qv)
4 AddToList(n, Nvis)
5 End If
6 Endfor
7 TestEdges ← False
8 If IsVisibleConnect(qv, Nvis, G,TestEdges) = False
9 Return False
10 End If
11 TestEdges ← True
12 If IsVisibleConnect(qv, Nvis, G ,TestEdges) = False
13 Return False
14 End If
15 Return True
FIG. 4.12 – Algorithme de test de la connexit´e du r´eseau visible de qv
n
1n
2q
vFIG. 4.13 – La visibilit´e d’une arˆete peut s’exprimer par rapport `a la validit´e d’une facette de
C.
effectivement au test ´el´ementaire de la facette de sommets qvet les deux extr´emit´es de l’arˆete (c.f. figure 4.14(a)).
– Dans le cas plus complexe o`u un ou plusieurs degr´es de libert´e sont circulaires, (espace isomorphe `a [0, 1]n× SO(d)m, avec m > 0), le test de visibilit´e de l’arˆete se d´ecompose en plusieurs tests ´el´ementaires de facettes (c.f. figure 4.14(b), (c), (d)). Pour d´eterminer ces facettes, on v´erifie pour chaque degr´e de libert´e s’il n’y a pas de changement d’orientation de la visibilit´e quand on parcourt l’arˆete. Ce changement se produit quand la distance entre qvet une configuration donn´ee de l’arˆete est ´egale `a π pour la projection suivant le degr´e de libert´e (i.e. les deux configurations sont diam´etralement oppos´ees vis `a vis de ce degr´e de libert´e). Chaque discontinuit´e de la visibilit´e correspond alors `a une configuration le long de l’arˆete qui d´epartage deux facettes ´el´ementaires. Dans ce cas, il est donc n´ecessaire d’effectuer
80 Chapitre 4. R´eseaux de R´etraction
nchange+ 1 tests de facettes, o`u nchangecorrespond au nombre de changements d’orientation constat´es.
Remarquons que pour le cas des syst`emes `a ddls circulaires, le triplet de configurations consid´er´e forme une facette de nature diff´erente d’un point de vue topologique car celle-ci ne contient pas d’int´erieur (c.f figure 4.14(d)). Une cons´equence directe de cette propri´et´e est que si l’on permute les configurations qv, n1et n2, les facettes ´el´ementaires test´ees ne couvrent plus la mˆeme portion de l’espace (contrairement au cas des syst`emes ne comportant pas de degr´e de libert´e circulaire). Il est donc n´ecessaire de distinguer qv de n1 et n2, pour d´eterminer les facettes ´el´ementaires `a tester.
Test ´el´ementaire de facette : Pour savoir si une facette ´el´ementaire appartient `aCf ree, on utilise un algorithme dichotomique qui tente de recouvrir la facette de boules libres de l’espace des configurations (c.f. figure 4.15). La m´ethode de calcul de boules libres deC se fait en consid´erant la cin´ematique du robot et sa distance aux obstacles dans l’espace de travail. Cette m´ethode sera d´etaill´ee annexe B. L’algorithme de recouvrement d´ebute en calculant le rayon de chacune des boules centr´ees sur les sommets respectifs de la facette. Si ces rayons permettent de recouvrir la facette, celle-ci appartient `aCf ree. Sinon, on d´ecompose la facette en deux sous facettes, de telle sorte que le nouveau sommet commun aux deux sous facettes soit le plus ´eloign´e possible des zones d´ej`a couvertes par les boules. Le rayon de la boule centr´ee sur le nouveau sommet est `a son tour calcul´e et la d´ecomposition se poursuit, jusqu’`a ce qu’un sommet soit test´e invalide ou que toute la facette soit recouverte.