Précédent : Présentation générale et
objectifs Remonter : Projet PRISME, Géométrie, Algorithmes et
Suivant : Grands domaines d'application
Résumé : La géométrie algorithmique [11] a pour objet l'étude systématique des algorithmes géométriques, de leur conception et de leur analyse. C'est un domaine relativement récent né autour des années 1975. Le projet Prisme s'intéresse aux principales structures géométriques : triangulations, arrangements et diagrammes de Voronoï, étudie des techniques algorithmiques générales et efficaces, et cherche à résoudre quelques problèmes clés comme la planification de trajectoires de robots.
Contrairement aux algorithmes probabilistes (dits de Monte Carlo) les algorithmes randomisés (encore appelés algorithmes de Las Vegas) fournissent la solution exacte d'un problème déterministe et ne font aucune hypothèse statistique sur les données traitées. Seule leur complexité dépend des choix aléatoires effectués et s'analyse en moyenne. En conférant aux situations défavorables un poids statistique négligeable, la randomisation conduit à des algorithmes simples et efficaces, notamment en géométrie où elle a fait son apparition récemment [CS89]. La randomisation est aussi devenue une méthode de preuve permettant d'établir certains résultats combinatoires. Enfin, et ce n'est pas le moindre des paradoxes, la dérandomisation d'algorithmes randomisés permet, dans certains cas, d'établir des algorithmes déterministes optimaux.
Le projet Prisme s'est plus particulièrement spécialisé dans les algorithmes randomisés incrémentaux et a développé la méthode du graphe d'influence [4,11]. Le graphe d'influence est une structure de données qui retrace l'histoire de la construction d'un objet. L'utilisation d'une telle structure conduit à des algorithmes semi-dynamiques capables d'insérer en ligne des données qui ne sont pas connues au départ. Pour la plupart des problèmes fondamentaux, on peut même obtenir un algorithme dynamique traitant non seulement les insertions mais aussi les suppressions de données.
Algorithmes adaptatifs: Algorithmes dont la complexité
est fonction de la valeur effective de certains paramètres
significatifs (la taille de l'objet calculé, par exemple) et non
de la valeur de ces paramètres dans le pire des cas.
Pour la plupart des problèmes géométriques, la taille du
résultat est très variable non seulement en fonction du nombre de
données traitées mais aussi en fonction du jeu de données
lui-même. Par exemple, l'enveloppe convexe d'un ensemble de n
points en dimension d est un polytope dont le nombre de faces
peut varier de (pour un (d+1)-simplexe) à
(pour un
polytope maximal à n sommets), le nombre d'intersections d'un
ensemble de n segments du plan peut varier de 0 à
. Pour ces exemples, il est donc
particulièrement intéressant de disposer d'algorithmes adaptatifs
dont la complexité dépend de la taille du résultat. Dans d'autres
problèmes, ce sont d'autres paramètres qui peuvent jouer un rôle
crucial. La contribution du projet Prisme dans ce domaine
concerne essentiellement les problèmes d'enveloppes convexes
d'objets plans et de percement (ou, par dualité, de
couverture).
Figure: Diagramme de
Voronoï (en traits pleins) et triangulation de Delaunay (en
pointillés) d'un ensemble de points de .
L'étude des diagrammes de Voronoï, de leurs propriétés
mathématiques, de leur calcul et de leurs nombreuses variantes a
été et reste un sujet d'importance majeure de la géométrie
algorithmique [OBS92].
Les contributions du projet Prisme portent sur les aspects
combinatoires et algorithmiques, l'extension à différentes
métriques non-euclidiennes et l'application aux problèmes de
reconstruction de formes (cf. section ) et
d'approximation de surfaces.
Dans les vingt dernières années, ce problème a suscité des recherches allant des mathématiques (géométrie algébrique, combinatoire, théorie de la complexité), à la programmation et l'implantation effective sur des robots en passant par la conception et l'analyse d'algorithmes performants. L'idée centrale de tous les algorithmes est néanmoins toujours la même : construire une représentation de l'ensemble des configurations du robot pour lesquelles il n'y a pas de collision, ce qu'on appelle l'espace libre du robot. On ramène ainsi le problème du déplacement du robot dans l'espace où celui-ci évolue au problème du déplacement d'un point dans un espace dit des configurations dont la dimension est en général élevée (six pour un manipulateur à six degrés de liberté). Moyennant une structuration appropriée de cet espace, on peut alors construire un chemin qui correspond à un déplacement sans collision du robot.
Dans un premier temps, nous avons proposé des méthodes approchées générales qui ont conduit au logiciel industriel ACT. Nous avons ensuite étudié les aspects combinatoires et algorithmiques de cas particuliers importants en pratique : robot mobile évoluant sur un sol plan ou sur un sol accidenté, robot à pattes. On peut obtenir dans ces cas particuliers des solutions analytiques exactes et des algorithmes de calcul très efficaces.
Plus récemment, nous avons abordé la planification de trajectoires de robots mobiles soumis à des contraintes cinématiques : on parle dans ce cas de systèmes non-holonômes. La grande différence de ces systèmes par rapport aux systèmes holonômes réside dans le fait que tout chemin de l'espace libre n'est pas exécutable par le robot : c'est le problème du créneau qui nécessite de faire des manoeuvres si la voiture ne peut pas se déplacer en crabe. Nous nous sommes plus particulièrement intéressés au calcul de trajectoires de courbure bornée correspondant à une voiture dont le rayon de braquage est minoré. Le contrôle optimal permet de caractériser les plus courts chemins de courbure bornée en l'absence d'obstacle. Il est alors possible d'obtenir des algorithmes efficaces en présence d'obstacles.
Ces travaux ont conduit à plusieurs applications industrielles.
Résumé : Le calcul géométrique demande, au-delà de la conception et de l'analyse des algorithmes, de résoudre les questions délicates posées par leur programmation. Il s'agit tout d'abord de savoir représenter et organiser les structures géométriques, de façon cohérente et efficace. Il s'agit également de garantir un calcul fiable, ce qui est particulièrement délicat avec les objets géométriques dont la représentation est à la fois symbolique et numérique. [Hof89] Ces problèmes sont un des principaux obstacles à l'utilisation des résultats de la géométrie algorithmique.[C96] Nous détaillons dans la première section les problèmes posés par le calcul géométrique, puis nous décrivons un paradigme pour les résoudre. Finalement, nous présentons le projet CGAL, qui pose les fondements d'une bibliothèque d'algorithmes géométriques.
En pratique, la représentation des nombres réels en machine pose de gros problèmes qui sont très vite observables. Le résultat des opérations arithmétiques pouvant être tronqué, certaines propriétés géométriques du plan euclidien ne sont pas vérifiées dans l'implantation. Par ailleurs, le traitement des cas dégénérés, souvent ignoré dans les articles, est fastidieux, allonge considérablement les programmes et constitue une source d'erreurs.
Figure: Différents problèmes de robustesse : (a)
Une méthode couramment utilisée pour localiser un point dans un
polygone consiste à compter la parité du nombre d'intersections
d'un rayon allant à l'infini. Ici, ce rayon passe par un sommet.
Si les segments sont fermés, on compte deux intersections, aucune
si les segments sont ouverts ; dans les deux cas, le point est
placé incorrectement à l'extérieur du polygone. (b) Une méthode
couramment employée pour construire l'intersection de deux
polygones consiste à parcourir, à partir d'un sommet, la
frontière de chacun des polygones alternativement jusqu'au point
de départ. Ici, on peut arranger les segments de façon à ce que
la deuxième intersection ne soit pas détectée par un calcul en
virgule flottante ; l'algorithme fournit alors une solution
erronée. (c) L'algorithme de Bentley-Ottmann, l'un des plus
utilisés en géométrie algorithmique, calcule les intersections
d'un ensemble de segments en balayant le plan et en s'arrêtant
quand la droite passe par un sommet ou une intersection. Ici, on
peut arranger les segments de façon à ce qu'un calcul flottant
traite les événements dans le mauvais ordre : (1,2) avant 3.
Alors l'intersection (1,3) n'est pas détectée.
Plusieurs approches ont été suivies pour tenter de résoudre
ces problèmes. En ce qui concerne les cas dégénérés, une méthode
de perturbation symbolique a été développée et raffinée (voir
section ). Pour les algorithmes
incrémentaux randomisés, nous avons montré comment perturber la
définition du problème pour prendre en compte les cas dégénérés
(voir section
).
Pour ce qui concerne les problèmes d'arithmétique, une
approche prometteuse consiste à utiliser une arithmétique exacte
(voir prochaine section). Cependant, l'étude des algorithmes
permet aussi de dégager une notion de robustesse : il s'agit du
degré de l'algorithme (voir section ). On peut
montrer que certains tests de degré d, comme les déterminants,
peuvent s'évaluer en simple précision de manière fiable [13,18,20]. C'est une première voie
qui conduit à réduire le degré des algorithmes à travers celui de
leurs prédicats. On peut aussi reformuler certains algorithmes de
façon à réduire leur degré. Il reste à étudier et reformuler de
nombreux algorithmes en fonction de leur degré arithmétique.
Des types exacts ont été conçus dans des bibliothèques telles que GMP ou Leda. Le type résultant, même si on fait une première approximation en calcul flottant (rapide), reste assez lent. L'implantation de prédicats exacts a été étudiée et démontrée efficace en pratique par Fortune et van Wyk.[FvW96] Celle-ci se prête naturellement à l'approche filtrée, dans laquelle le résultat flottant est progressivement amélioré pour atteindre la fiabilité requise. En moyenne, le calcul flottant suffit et la perte de performance est donc minime.
Nous prévoyons donc de produire et automatiser ces outils de filtrage et de les intégrer dans la bibliothèque CGAL. Le but recherché est de libérer le programmeur de ces considérations de robustesse en lui procurant des prédicats exacts à coût très abordable. Des études préliminaires sur des algorithmes classiques ont montré que ce but est réaliste.
Nous avons développé une méthode permettant d'arrondir correctement des constructions géométriques à un point entier le plus proche [19]. Des outils d'automatisation pour la biliothèque CGAL sont en cours d'étude. Il faudra aussi évaluer le coût de cette approche. Il reste sur ce sujet beaucoup de recherches à effectuer, en particulier pour des structures plus complexes comme les diagrammes de Voronoï de segments ou les arrangements tridimensionnels.
Cette bibliothèque est écrite en C++ et veut permettre une
programmation facile, fiable et efficace d'applications
nécessitant la mise en oeuvre d'algorithmes géométriques (voir
aussi section ). La généricité est une des
caractéristiques de cette bibliothèque. Les algorithmes peuvent
utiliser différents types de données dès lors que certaines
méthodes sont définies. Le code est donc très largement
réutilisable. Cette approche contraste avec celle des perles
utilisées par exemple en infographie qui doivent être adaptées à
chaque nouveau besoin. La généricité doit aussi permettre de
comparer les caractéristiques de différents algorithmes dans un
même contexte et de conduire des recherches expérimentales.
Résumé : Trois types de problèmes sont rencontrés en théorie des mécanismes : modélisation, analyse et synthèse. La modélisation consiste à déterminer les relations entre les variables de commande du mécanisme (angle des actionneurs par exemple) et les variables de sortie (position et orientation d'un corps donné du mécanisme). L'analyse est la phase de détermination de différentes performances d'un mécanisme donné en prenant en compte les contraintes auxquelles il est soumis (par exemple des bornes sur les variables de commande) ainsi que celles imposées par l'utilisateur, qui pourra, par exemple, vouloir étudier les extremums d'une performance pour un ensemble donné des variables de sortie du mécanisme. La phase de synthèse est celle où l'on doit déterminer les dimensions d'un mécanisme, d'architecture mécanique donnée, afin qu'il satisfasse au mieux à un cahier des charges (on parle aussi de conception optimale).
Pour étudier les problèmes rencontrés lors de la modélisation, de l'analyse et de la synthèse nous nous sommes concentrés sur les mécanismes à chaînes fermées : tout en ayant un potentiel d'applications important (qui débordent d'ailleurs largement du cadre de la mécanique puisque, par exemple, certains problèmes de chimie sont structurellement identiques), c'est ce type de mécanismes qui pose les problèmes les plus complexes. Nous nous sommes particulièrement intéressés à l'étude d'une classe de robots, appelés robots parallèles, en raison de leurs performances (précision, charge), de leur large champ d'utilisation (de la fraiseuse à la table chirurgicale) ainsi que de leur similarité avec des mécanismes très répandus (suspension automobile par exemple). Ces cinq dernières années, de très gros progrès sur la modélisation ont été réalisés [12] même si quelques problèmes sont encore à résoudre. Nous nous focalisons donc actuellement sur l'analyse et la synthèse, notre but étant, d'une part, de proposer des algorithmes efficaces d'analyse des performances et, d'autre part, de développer une méthodologie de conception optimale reposant sur une approche géométrique ainsi que sur les algorithmes d'analyse.