Planification de trajectoires d'un robot polygonal dans le plan

Steve Oudot

L'objectif principal de ce projet est d'ecrire un programme pour planifier et simuler les deplacements d'un robot R de forme polygonale dans le plan muni d'obstacles O1, ..., Ok eux-memes polygonaux. On commencera par etudier le cas particulier ou le robot et les obstacles sont convexes, et ou les deplacements sont constitues uniquement de translations. On continuera l'etude dans un cadre plus general, en supprimant d'abord l'hypothese de convexite du robot et des obstacles, puis en considerant des deplacements constitues de translations et de rotations. La base theorique utilisee pour ce projet est decrite dans le chapitre 13 du livre [1], nous vous conseillons donc fortement de vous le procurer (vous pouvez nous le demander si vous ne le trouvez pas).

1. On commence par le cadre le plus restreint : le robot est convexe et se deplace par des translations parmi des obstacles eux-memes convexes. En prenant un point de reference R0 dans le robot R, on ramene l'espace des configurations de R au plan lui-meme. Ainsi, toute position du robot est definie de maniere unique par la position du point R0. On peut ensuite representer l'espace des configurations admissibles (i.e. celles pour lesquelles le robot n'est pas en collision avec un ou plusieurs obstacles) par le plan prive des sommes de Minkowski Oi + (-R), où le terme -R est a interpreter comme l'ensemble des vecteurs reliant des points de R à R0. Il est en effet aisé de voir que le robot R est en collision avec un obstacle Oi si et seulement si le point R0 se trouve a l'interieur de l'obstacle agrandi Oi + (-R). Votre premiere tache consistera donc a calculer la somme de Minkowski de deux polygones convexes. Pour cela vous pourrez appliquer un algorithme tres simple, consistant a faire glisser le robot R le long de chaque obstacle Oi et a reporter les sommets du polygone ainsi obtenu. Voir la section 13.3 du livre [1] pour les details.

Votre deuxieme tache sera d'implementer l'algorithme de planification de trajectoire. Pour cela vous creerez une triangulation 2D contrainte, ou les aretes de contrainte seront les bords des obstacles. Pour deplacer le robot R de maniere a amener le point R0 d'un point D a un point A, vous procederez comme suit :
Afin de rendre le programme plus convivial, vous pourrez implementer une petite interface graphique simulant les deplacements du robot. Mais attention, cette etape est facultative et n'est pas au coeur du sujet, ne lui accordez donc que le minimum de temps !

2. On continue maintenant avec le cas ou le robot et/ou les obstacles peuvent ne pas etre convexes. Le principe reste le meme, seul le calcul des sommes de Minkowski change un peu. L'algorithme de calcul qui consiste a faire glisser le robot le long de chaque obstacle genere des boucles, qu'il suffit de supprimer a posteriori. Vous pouvez egalement utiliser la technique proposee a la fin de la section 13.3 du livre [1], qui propose de trianguler le robot et les obstacles. Le reste de l'approche reste rigoureusement le meme.

3. On considere maintenant le cas general d'un robot R qui peut tourner en plus de se translater. Cette fois l'espace des configurations n'est plus le plan, mais R^2xS^1 (le produit cartesien du plan avec le cercle). L'espace des configurations est beaucoup plus complique dans ce cas, aussi il est preferable de simplifier le probleme, quitte a ne pas trouver de solution dans certains cas, ce que nous vous conseillons de faire en suivant l'approche decrite a la section 13.5 du livre [1]. Grosso modo, l'espace des configurations se decompose en strates du type R^2x{alpha}, ou alpha est un angle fixe. Dans chaque strate les mouvements du robot sont exclusivement translationnels, donc on peut appliquer la technique developpee plus haut pour trouver des chemins entre des points donnes. Il reste a pouvoir se deplacer entre les strates, ce que l'on fait en discretisant le cercle S^1 et en cherchant, pour toute paire d'angles consecutifs alphai, alphai+1, quels sont les points de la i-eme strate qui peuvent etre relies a la (i+1)-eme strate par une rotation ne creant pas de collision avec des obstacles. Pour cela il peut etre necessaire de rajouter des points dans les strates. En testant votre programme sur des jeux de donnees de votre choix, vous pourrez essayer de determiner des configurations ou il ne trouve pas de solution alors qu'un chemin existe entre le depart et l'arrivee. Notez toutefois que tout chemin trouve par votre programme doit etre valide, i.e. ne doit pas passer par des configurations non admissibles du robot !

Mot clés: planification de trajectoires, sommes de Minkowski, triangulation de Delaunay, parcours de graphes.

Références:
[1] M. de Berg, O. Cheong, M. van Kreveld,  and M. Overmars. Computational Geometry: Algorithms and Applications. 3rd Edition, 2008. Springer Berlin Heidelberg. ISBN: 978-3-540-77973-5. DOI: 10.1007/978-3-540-77974-2.

robot et obstacles
Fig. 1 - Un robot polygonal R en translation dans le plan parmi des obstacles polygonaux O1, ..., Ok. La zone interdite pour le point R0 est l'ensemble des obstacles augmentés de (-R), en rouge sur l'image.