SLAM Visuel 3D pour robot mobile autonome - Master de Sciences

 
CONTINUER À LIRE
SLAM Visuel 3D pour robot mobile autonome - Master de Sciences
Master de Sciences
   Mention « Imagerie, Robotique et Ingénierie pour le Vivant »

                     - Projet de Fin D’étude -

SLAM Visuel 3D pour robot mobile autonome
                         Romain Drouilly

                                           Encadrants ECA

                                                 Benoit Morisset

                                                 Pierrick Daniel

                                           Encadrant ENSPS

                                                 Bernard Bayle

                        Septembre 2011
SLAM Visuel 3D pour robot mobile autonome - Master de Sciences
Résumé

       Un robot mobile est une machine capable de se mouvoir de manière
autonome quelque soit l’endroit où elle se trouve et sans la supervision de l’homme.
Pour cela le robot doit pouvoir cartographier son environnement à mesure qu’il
l’explore. Ce problème de la navigation autonome d’un robot dans un
environnement inconnu est nommé SLAM (SLAM signifie Localisation et Cartographie
Simultanées). C’est un domaine de recherche très actif depuis plus de vingt ans et il
est maintenant possible de faire du SLAM en 2D. Le nouveau challenge est de faire du
SLAM en 3D. C’est le but de cette étude.

       Comme il sera montré il est désormais possible de résoudre le problème du
SLAM3D grâce à des capteurs innovants et des algorithmes performants. Nous
montrerons qu’il est possible de construire en temps réel des cartes en 3D très
précises pour modéliser des environnements intérieurs. En ajoutant des textures il
est alors possible de créer des vues très réalistes de la zone explorée. Par ailleurs on
peut extraire en temps réel des données à partir de la carte fournie par le SLAM,
dans le but de fournir au robot des informations sur les objets présents dans la scène.
Ceci permet d’améliorer significativement la connaissance que le robot a de
l’environnement et permet de le faire agir intelligemment.

                                     Abstract

       A mobile robot is an intelligent machine able to navigate by itself in any places
without human’s supervision. To do this robot has to map its environment while it is
exploring it. The problem of a robot navigating an unknown environment is called the
SLAM problem (SLAM stands for Simultaneous Localization And Mapping). It has
been a very active field of research for more than twenty years and we now have
solutions to address the 2D SLAM problem. The new challenge is to tackle the 3D
SLAM question. This is the goal of this study.

       As it will be shown in this report it is now possible to address the 3D SLAM
problem thanks to cutting edge sensors and very effective algorithms. We will
demonstrate that it is possible to build in real-time very precise 3D maps to model
indoor environments. Adding texture it is possible to create very realistic views of the
explored area. Moreover we can extract data in real-time from the model built by the
SLAM to provide the robot with information about objects in the scene. This
significantly improves the knowledge the robot has of its environment and allows to
make it act in an intelligent way.

                                                                                      1
SLAM Visuel 3D pour robot mobile autonome - Master de Sciences
Remerciements

       En tout premier lieu je tiens à remercier Benoit Morisset qui a suivit mon
travail tout au long de ces six mois. Nos échanges réguliers ont été pour moi une très
forte source de motivations et sont pour beaucoup dans la réussite de ce stage. Ses
conseils avisés m’ont toujours permis d’avancer efficacement dans mon travail.

     Ensuite je tiens à remercier Pierrick Daniel, mon maitre de stage, qui m’a
permis de travailler sur le sujet passionnant et plus que jamais d’actualité qu’est le
SLAM et grâce à qui j’ai découvert ce merveilleux outil qu’est la Kinect.

      Je tiens aussi à remercier Gwenaël Dunand pour m’avoir fait découvrir les
Design Pattern et m’avoir fait partager son expérience de la recherche et son
expertise en programmation.

      Mes sincères remerciements vont à toute l’équipe d’ECA Saclay pour l’accueil
chaleureux dont j’ai bénéficié et à toutes les personnes avec qui j’ai pu partager ma
passion pour la robotique.

        Enfin je tiens à remercier tous ceux qui, à Willow Garage ou ailleurs, au travers
d’initiatives collectives ou personnelles, mettent à disposition leur travail pour les
progrès de tous.

                                                                                       2
SLAM Visuel 3D pour robot mobile autonome - Master de Sciences
Sommaire

A. Introduction ..................................................................................................... 6

B. Objectifs du projet............................................................................................ 7

C. Introduction au problème du SLAM .................................................................. 8
   I.      Autonomie des robots...................................................................................... 8
                 1. Robotique: de la Fiction à la Réalité ................................................... 8
                 2. Qu'est ce qu'un robot autonome? ..................................................... 9
                 3. Percevoir son environnement ............................................................ 9
   II.     Odométrie Visuelle......................................................................................... 11
                 1. Points d’intérêt ................................................................................. 11
                 2. RANSAC............................................................................................. 12
                 3. ICP ..................................................................................................... 13
   III.    SLAM............................................................................................................... 15
                 1. Définition du problème .................................................................... 15
                 2. Principaux paradigmes ..................................................................... 16
                 3. Recherches actuelles ........................................................................ 19
   IV.     TORO : SLAM 3D ............................................................................................. 20
                 1. Principe ............................................................................................. 20
                 2. Graph-SLAM ..................................................................................... 21
                 3. TORO : formalisme ........................................................................... 21
   V.      Segmentation des nuages de points et reconstruction 3D ............................ 25
                 1. Principe de la segmentation ............................................................. 25
                 2. Mise en œuvre: cas des objets plans ............................................... 26

D. Contribution au SLAM .................................................................................... 28
   I.      Contexte général de l’étude ........................................................................... 28
                 1. ROS ................................................................................................... 28
                 2. Kinect ................................................................................................ 29
   II.     Analyse de l’existant....................................................................................... 33
                                                                                                                         3
SLAM Visuel 3D pour robot mobile autonome - Master de Sciences
III.    Solutions retenues.......................................................................................... 40
   IV.     RGBD Mapping ............................................................................................... 41
                 1. L’algorithme ..................................................................................... 41
                 2. Estimation de mouvement ............................................................... 42
                 3. Optimisation globale du graphe et fermeture de boucle ................ 45
                 4. Implémentation ................................................................................ 46
                 5. Schéma de fonctionnement du SLAM .............................................. 48
   V.      Descripteur NARFs.......................................................................................... 49
                 1. Tests du détecteur............................................................................ 49
                 2. Conclusion générale sur les NARFs................................................... 50
   VI.     Segmentation et Reconstruction 3D .............................................................. 51
                 1. Introduction...................................................................................... 51
                 2. Détection de plans dans un nuage de points ................................... 52
                 3. Détection des contours d’un plan .................................................... 55
                 4. Appariement de plans ...................................................................... 57
                 5. Problème lié à la reconstruction 3D temps réel............................... 59
                 6. Recollage des textures ..................................................................... 59
                 7. Organisation du code pour la reconstruction 3D ............................. 60

E. Résultats ........................................................................................................ 61
   I.      Matériel de tests ............................................................................................ 61
   II.     Test du SLAM .................................................................................................. 62
                 1. Fidélité de la reconstruction 3D ....................................................... 62
                 2. Amélioration due à ICP ..................................................................... 63
                 3. performances avec et sans supervision ........................................... 65
                 4. Robustesse aux variations de luminosité ......................................... 66
   III.    Test de la reconstruction 3D .......................................................................... 67
                 1. Test de la détection du sol en temps réel ........................................ 67
                 2. Test de la reconstruction 3D ............................................................ 68
   IV.     Discussion sur le SLAM et la reconstruction 3D ............................................ 73

F. Conclusion de l’étude ..................................................................................... 75

G. Bibliographie .................................................................................................. 77

                                                                                                                           4
SLAM Visuel 3D pour robot mobile autonome - Master de Sciences
H. Annexes ......................................................................................................... 78
   I.      ECA ................................................................................................................. 78
                 1. Présentation du groupe ECA ............................................................ 78
                 2. Les Activités du Pôle de Saclay ......................................................... 79
   II.     Kd-tree ............................................................................................................ 83
   III.    SIFT ................................................................................................................. 84
                 1. Détection des points d'intérêt.......................................................... 84
                 2. Calcul des descripteurs ..................................................................... 86
   IV.     SURF (Speeded Up Robust Feature) ............................................................... 87
                 1. Détection de points d'intérêts.......................................................... 87
                 2. Calcul des descripteurs ..................................................................... 88
   V.      Précision subpixellique ................................................................................... 89

                                                                                                                                  5
SLAM Visuel 3D pour robot mobile autonome - Master de Sciences
A. Introduction

      ECA conçoit des robots pour l’intervention en situations extrêmes : incendie,
tremblement de terre, accident nucléaire, déminage, intervention policière,
renseignements etc. Dans toutes ces situations le robot vient en aide à l’Homme en
explorant des zones inaccessibles ou trop dangereuses pour envoyer, au moins dans
un premier temps, des êtres vivants.

        Les robots doivent donc d’une part être suffisamment autonomes pour remplir
leur mission sans la supervision de l’Homme et d’autre part être capable de fournir à
l’utilisateur des informations sur la topographie du lieu, le plus souvent sous la forme
d’une carte.

        L’objectif du projet est donc de développer un module permettant de rendre le
robot autonome dans la tâche d’exploration. Plus précisément, le module doit
permettre au robot de dresser la carte d’un environnement inconnu au fur et à
mesure qu’il l’explore. Cette carte servira à la fois au robot à se localiser pour évoluer
de manière autonome et à l’utilisateur humain pour récupérer des informations sur
les lieux explorés.

       Le problème de l’autonomie d’un robot dans la tâche d’exploration d’un lieu
inconnu est appelé SLAM1. C’est un domaine de recherche très actif depuis plusieurs
décennies et beaucoup de solutions existent pour la cartographie 2D. Le défi est ici
de réaliser la modélisation en 3D de l’environnement et ce uniquement à partir
d’informations visuelles.

       Après une présentation des objectifs du projet, les fondements du problème
du SLAM seront présentés en détails en les replaçant dans leur contexte originel. Une
présentation formelle du problème sera introduite en insistant plus particulièrement
sur le paradigme qui sera utilisé dans l’étude. C’est ensuite le travail de stage lui-
même qui sera abordé avec la présentation successive des études sur lesquels il est
fondé, des solutions proposées et des résultats obtenus. Chaque fois que nécessaire
les choix effectués seront justifiés. Finalement les résultats seront discutés et un
certain nombre d’observations seront faite sur la robotique moderne.

      1
          Simultaneous Localization and Mapping

                                                                                        6
SLAM Visuel 3D pour robot mobile autonome - Master de Sciences
B. Objectifs du projet

       Lorsqu’un robot est employé pour explorer une zone inaccessible à l’homme, il
doit être capable de fournir des informations à l’utilisateur sur la topologie des lieux
visités. Il faut donc qu’il construise une carte de son environnement. Il doit en outre
faire preuve d’une autonomie suffisante pour pouvoir explorer la zone et trouver son
chemin même si les communications sont interrompues. Le robot doit donc être
capable de se localiser en permanence dans l’environnement qu’il explore.

       L’objectif du stage est donc de mettre en place un module de SLAM pour un
robot d’intervention en milieu hostile. Plus précisément, le projet vise à doter le
robot de la capacité à cartographier en 3D un environnement inconnu. Un capteur
innovant a été retenu pour cette tâche : la Kinect de Microsoft. Il s’agit d’une caméra
RGBD, autrement dit d’un système d’acquisition fournissant à la fois des images et
des données métriques. Il faudra donc exploiter au mieux la richesse des
informations fournies pour construire un modèle 3D de l’environnement
visuellement réaliste.

       Les contraintes principales sont donc de :
       - réaliser un modèle précis de l’environnement permettant au robot de se
localiser en vue de planifier sa trajectoire
       - d’offrir un rendu réaliste de la scène pour un observateur humain
       - d’effectuer la reconstruction en temps réel

     Une contrainte secondaire est d’offrir une bonne robustesse aux variations de
luminosité.

                                                                                      7
SLAM Visuel 3D pour robot mobile autonome - Master de Sciences
C.         Introduction au problème du
                    SLAM

       L’objectif de ce chapitre est de présenter le contexte général du stage et
d’expliquer ce qui a motivé la problématique en la replaçant dans son contexte
originel. Plusieurs questions seront abordées concernant les développements
présents et futurs de la robotique, notamment: quels sont les verrous technologiques
qui empêchent aujourd’hui un robot de conduire une mission de manière
parfaitement autonome? Quelles sont les pistes de recherche actuelles pour
résoudre ces problèmes? Quels sont les succès déjà remportés?

 I. Autonomie des robots

      1. Robotique: de la Fiction à la Réalité

       Loin des images des films de science fiction, montrant hommes et robots
cohabitant harmonieusement dans des environnements complexes, la robotique
s’est pendant longtemps limitée à ses applications industrielles, se contentant de
remplacer l’homme dans l’exécution de tâches simples et répétitives.

      Cette limitation venait notamment de l’impossibilité de créer des systèmes
capables d’évoluer dans un environnement réel. En effet gérer l’extrême diversité
des situations dans lesquels un robot peut se trouver est très difficile. Il est
clairement impossible de prévoir tous les cas de figure pour préparer des
comportements types en fonction des situations rencontrées. Il faut dès lors que le
robot soit à même de percevoir son environnement intelligemment pour apprendre
et comprendre cet environnement en vu de planifier ses actions.

      Loin d’avoir résolu totalement ce problème la robotique a cependant connu
ces dernières années plusieurs victoires importantes qui ont conduit à de profonds
changements. Qu’ils soient à pattes ou à roues, volant ou rampant, les robots sont
désormais capables de se mouvoir dans des environnements aussi complexes que le
sol martien ou un hall de musée avec très peu de supervision de la part de l’homme.
Voyons comment ces succès ont étés rendus possibles.

                                                                                  8
SLAM Visuel 3D pour robot mobile autonome - Master de Sciences
2. Qu'est ce qu'un robot autonome?

           L'autonomie des robots est un enjeu clé de la robotique moderne. Un système
    robotisé n'a de raison d'être que s'il est capable d'effectuer un maximum de tâches
    sans la supervision de l'homme. Un système téléguidé représente bien moins
    d'intérêt puisque l'opérateur doit prendre en charge les tâches de bas niveau comme
    la navigation au lieu de se concentrer sur les objectifs essentiels de sa mission.

          Si l'on veut définir clairement ce qu'est un robot mobile autonome on peut
    dire qu'il s'agit d'un système capable de:

−    se localiser dans son environnement. Ceci répond à la question «où suis-je?».

−    trouver des zones d'intérêt à explorer ou des objets dans son environnement et liés
     à sa mission. Ceci répond à la question «où dois-je aller?».

−    de planifier ses actions, pour par exemple définir une trajectoire pour se rendre
     d'un point A à un point B. Ceci répond à la question «comment dois-je y aller?».

−    d'interagir, le cas échéant, avec son environnement pour réaliser certaines tâches.
     Il peut s'agir par exemple de trouver et d'actionner une poignée de porte pour
     pouvoir passer d'une pièce à une autre. Ceci répond à la question «Quelle est la
     fonction de cet objet?»

          On distingue donc deux types principaux de contraintes pour l'autonomie des
    robots: la capacité d'extraire des données de l'environnement (localiser des objets,
    des obstacles, le robot etc.) et la capacité à traiter ces informations intelligemment
    (prendre des décisions, savoir comment interagir avec tel ou tel objet).

          A ceci il faudrait encore ajouter d'autres aspects concernant notamment la
    sécurité du robot ou des êtres vivants avec lesquels il cohabite. Cependant c'est
    surtout le premier point qui nous intéressera dans la suite.

         3. Percevoir son environnement

          Quelque soit la mission qui lui est confiée, un robot mobile doit être capable
    de percevoir intelligemment son environnement. C'est à dire qu'il doit être en
    mesure de capter l'information et de la traiter en vue de produire des données
    exploitables.

                                                                                        9
Le robot doit notamment être capable de construire sa propre représentation
de l'environnement. Cette tâche est nommée la cartographie. Il doit pouvoir
fabriquer, sur la base des informations fournies par ses capteurs, une carte lui
permettant de définir des zones d'intérêt à explorer, des zones dangereuses à éviter
ou encore trouver les zones navigables. Cette carte pourra aussi servir de modèle de
l'environnement à un opérateur humain qui voudrait intervenir dans une zone a
priori inconnue.

       Or lorsque le robot explore une zone inconnue il doit aussi être capable de se
localiser sur la carte à mesure qu'il la construit. La réalisation simultanée de la
cartographie et de la localisation est un problème fondamental en robotique mobile
connu sous le nom de SLAM (Simultaneous Localisation and Mapping).

      Sa résolution est un préalable indispensable à l'automatisation totale des
systèmes, sans quoi les robots seraient incapables de se mouvoir dans un
environnement inconnu. Dans la suite nous verrons donc quelles sont les étapes
nécessaires à la réalisation du SLAM.

                                                                                  10
II. Odométrie Visuelle

        Pour la réalisation d’une carte sur la base d’informations purement visuelles, il
faut pouvoir estimer le mouvement de la caméra pour mettre en correspondance les
différentes vues. Dans le cas d’un système monoculaire cette tâche est rendue
difficile par l’impossibilité d’estimer les distances à partir d’une seule image. Il faut
donc utiliser des séquences d’images pour initialiser les distances. Ici la Kinect fournit
directement la mesure de distance, on peut donc connaitre la position des points
observés dans chaque image.

      1. Points d’intérêt

       Pour estimer le mouvement de la caméra entre deux images il faut pouvoir
déterminer comment ont bougés les objets observés. Pour cela on ne peut utiliser
que des objets visibles dans les deux images et que l’on est capable de retrouver
facilement dans chacune d’elles. Pour des raisons de simplicité, on utilise en général
des points d’intérêt comme objets de référence.

       Un point d'intérêt est un point qui caractérise de façon unique une partie de
l'image. Plus précisément il s’agit d’un point localisé finement, augmenté de son
voisinage. Pour être utile ce point doit être très bien identifié à l’aide d’un
descripteur unique et il doit être possible de le retrouver facilement. Il existe une
multitude de méthode de détection/description de points d’intérêt parmi lesquelles
SIFT et SURF. Il s’agit de méthodes particulièrement appréciées pour leur robustesse
et leur efficacité. Elles sont décrites en détails en annexe.

       Le principe de détection correspond à rechercher des zones d’intensité
lumineuse particulière et offrant une grande stabilité. Pour cela on utilise le plus
souvent des méthodes basées sur le calcul du gradient de luminosité. Les extrema
correspondent aux points où s’annule le gradient. Il faut noter que ces points
d’intérêt ne sont pas nécessairement des pixels. En effet on peut obtenir la position
des points avec une précision subpixellique par des méthodes d’interpolation2.

       Une fois les points identifiés il faut décrire l'information locale dans l'image de
façon unique et aussi invariante que possible de l'échelle d’observation, des
rotations, des variations de luminosité etc. Pour cela on calcule un descripteur pour
chaque point. On commence par déterminer une orientation privilégiée basée sur
l’observation de l’entourage du point. Le descripteur est alors simplement une suite

      2
          Voir annexes

                                                                                       11
de valeurs (64 ou 128 le plus souvent) qui décrivent le voisinage à partir de cette
direction privilégiée. Ceci permet de rester invariant par rotation.

         Figure 1: Points d'intérêt détectés entre deux images. Les traits verts symbolisent les
déplacements entre deux itérations. Les traits rouges signalent les déplacements non conformes par
                                     rapport aux autres points

     2. RANSAC
      Une fois les points d’intérêts calculés dans chaque image il faut pouvoir
déterminer quel est le mouvement global de la caméra. Pour cela on doit trouver
quelle transformation permet de recoller correctement les deux nuages de points
formés par les points d’intérêt.

      La recherche de cette transformation est une tâche complexe, d'autant plus
que les nuages sont bruités. Il existe plusieurs types de méthodes qui présentent
toutes des avantages et des inconvénients, la rapidité de calcul étant souvent
incompatible avec la précision.

      L'algorithme RANSAC (RANdom SAmple Consensus) est classiquement utilisé
pour extraire un modèle d'un ensemble de données bruitées. Dans le cas présent
RANSAC est utilisé pour déterminer quels sont les points qui permettent d’estimer la
transformation entre les deux nuages le plus correctement possible. Autrement dit
RANSAC permet de filtrer les points trop bruités.

      Concrètement trois points dans chaque nuage sont tirés au hasard pour
déterminer une base. La transformation liant les deux bases est alors calculée. Les
nuages sont recollés suivant cette transformation et la distance entre chaque couple
de point est estimée. Un score est alors attribué à la transformation : si beaucoup de
couples de points se superposent le score est élevé, sinon il est faible. Finalement la

                                                                                                12
transformation qui possède le plus haut score est conservée : c’est elle qui permet de
recoller le plus de points ensemble, c’est donc elle qui a le plus de chance d’être
juste. Cette méthode permet en plus d’évaluer la transformation liant les deux
nuages de point de filtrer les points qui n’entrent pas dans le modèle principal.

      L’estimation de mouvement avec RANSAC est en générale assez bonne mais
dans le cadre de la construction d’une carte il est préférable d’affiner cette
estimation avec une autre méthode comme ICP.

     3. ICP

      ICP (Iterative Closest Point) est un algorithme qui permet de minimiser la
distance entre deux nuages de points A et B. Il est utilisé notamment lorsque l'on
veut reconstruire des objets 3D à partir de différentes vues, pour la construction de
cartes etc. L'avantage d'ICP par rapport à RANSAC est qu'il permet d'estimer les
mouvements avec une grande finesse. Il nécessite cependant en entrée une
estimation de la transformation a trouver sans quoi l'algorithme peut rester bloqué
dans une configuration non optimale (minimum local).

        Le principe de l'algorithme est assez simple. Il consiste à appareiller les points
deux à deux en utilisant une fonction de cout quadratique (distance euclidienne). A
chaque itération on estime la transformation entre les deux nuages A et B, la source
et la cible, à partir de ces couples de points. On déplace le nuage cible conformément
à la transformation calculée et la distance entre les deux nuages est alors réévaluée.
L'algorithme stoppe lorsque la distance minimale entre les deux nuages est atteinte.
Celle-ci est fixée au début de l'algorithme en fonction de la précision souhaitée.

      De cette manière on obtient une estimation fine de la transformation entre les
deux nuages de points qui permet un recollage presque parfait.

       Avec ces méthodes combinées on peut donc estimer le déplacement de la
caméra entre deux images successives. On reconstruit alors au fur et à mesure des
déplacements la trajectoire de la caméra tout en modélisant l’espace 3D. Cependant
bien que la précision de ces méthodes soit bonne, on constate une dérive de la
position au cours du temps due à l’accumulation des erreurs de mesure. Ceci
s’observe notamment lorsque le robot après avoir parcouru un certain trajet revient
à une position déjà visitée. La localisation courante du robot est alors souvent
différente de la localisation initiale. Il est donc nécessaire de créer une boucle de
supervision qui détecte lorsque le robot repasse par un endroit déjà exploré.
L’algorithme permet alors en constatant l’erreur sur l’estimation de position de
corriger la trajectoire et de la rendre plus cohérente. Cette étape est nommée
fermeture de boucle. Par ailleurs la carte créée par le robot peut être optimisée en
fonction de la connaissance que l’on a des erreurs de mesure. L’optimisation de la

                                                                                       13
carte et la détection de la fermeture de boucle sont essentielle à l’obtention d’une
carte de qualité. C’est l’algorithme de SLAM qui réalise ces étapes.

                                                                                 14
III. SLAM

      Le SLAM est considéré comme l'un des problèmes les plus fondamentaux de la
robotique moderne. Comme évoqué plus haut il permet de corriger les erreurs
accumulées pendant la phase d’estimation de mouvement en vue d’obtenir un
modèle cohérent de l’environnement. Cette partie présente le problème
formellement ainsi que ses trois principaux paradigmes.

      1. Définition du problème

       Un robot mobile, doté de la capacité de percevoir son environnement, explore
un milieu inconnu. Il part d'un point de coordonnées connues x0. L'estimation du
mouvement du robot est entachée d'incertitudes à chaque mesure, qui rendent
l'estimation de position de plus en plus imprécise. Le SLAM vise à résoudre le
problème de la création d'une carte non biaisée de l'environnement dans ce
contexte.

      Formellement on utilise les probabilités pour décrire le problème.

      Soit xt la position du robot à l'instant t (en 2D ou en 3D), on note

                                  = {0, 1, . . . , }

      La trajectoire du robot jusqu'à l'instant T.

      Soit ut l'estimation de mouvement faite entre les instant t-1 et t par
l'odométrie. On note:

                                    = { 0, 1, . . . , }

       L’ensemble du chemin parcouru jusqu'à l'instant T. Enfin soit m la carte de
l'environnement réel, considéré comme statique.

déplacement xt et la carte observée, m.
      Les mesure faites par le robot mettent en relation les estimations de

      Si l'on considère que le robot fait une mesure en chaque point alors on peut
noter la séquence de mesures:

                              = { 1 ,  2 ,  3 , . . . ,   }

       Le problème est maintenant de retrouver un modèle de l'environnement m
ainsi que la trajectoire XT du robot à partir de l'odométrie UT et des observations ZT.

                                                                                    15
Il existe deux formes de SLAM. Le premier nommé «online problem» consiste à
    calculer à chaque instant la position actuelle du robot en fonction des estimations de
    mouvements et des observations ce qui se note:

                                     ( , |  ,  )

          La seconde est nommée «full SLAM problem» et consiste cette fois à calculer à
    chaque instant l'ensemble de la trajectoire à partir de l'odométrie et des
    observations. On définit alors ce problème par:

                                    (  , |  ,  )

          Enfin pour résoudre le problème du SLAM, le robot a besoin de deux
    informations supplémentaires que sont :

−    le modèle reliant les mesures issues de l'odométrie avec les positions du robot
−    le modèle permettant de relier les mesures zt avec la position du robot.

    ( | − 1 ,  ) qui traduit la probabilité d'être à un point de coordonnées xt en
          Ces modèles sont exprimés respectivement par les formules

    partant du point xt-1 et en parcourant le chemin ut ; et (  | , ) qui est la
    probabilité de faire l'observation zt en étant à la position donnée xt connaissant m.

         2. Principaux paradigmes

             Il existe trois manières principales de traiter le problème du SLAM dont
    dérivent beaucoup d'algorithmes.

          2.1 EKF-SLAM

           La première méthode apparue est basée sur le filtrage de Kalman Etendue. Elle
    utilise un vecteur d'état pour représenter la position du robot et des amers dans la
    scène, auquel est associé une matrice d'erreur représentant les incertitudes sur les
    positions, les observations et les corrélations entre les différentes variables du
    vecteur d'état.

              Alors que le robot se déplace le vecteur d'état et la matrice d'erreurs sont
    mis à jour en utilisant un filtre de Kalman étendu.

             A chaque nouvel amer observé de nouvelles variables d'état sont ajoutés au
    vecteur d'état du système; la taille de la matrice de covariance croit
    quadratiquement.

                                                                                       16
Cette approche a été la première développée. Elle est de moins en moins
utilisée aujourd'hui notamment du fait des temps de calcul qui la rendent moins
intéressante que les autres.

         2.2 SLAM basé sur les filtres particulaires

        Une seconde approche pour traiter le problème du slam est basée sur
l'utilisation de filtres particulaires. Le principe est de suivre un grand nombre
d'hypothèses en parallèle qui sont autant de trajectoires possibles. Ces différentes
hypothèses correspondent à un échantillonnage de la distribution de probabilité des
trajectoires.

       Pour chacune d'elles on construit la carte en fonction des perceptions du robot
à l'aide d'un filtre de Kalman. Cependant dans ce cas le traitement est simplifié
puisque la trajectoire est connue: les perceptions successives des différents amers ne
sont plus corrélées et la matrice de covariance se simplifie puisqu'on ne mémorise
plus que les variances individuelles des amers. La complexité des calculs passe ainsi
de 0(N²) à O(N).

       Le problème principal de cette technique est que la représentation de la carte
et de la trajectoire du robot devient vite très lourde. En effet il faut que le nombre de
particules soit suffisant pour échantillonner correctement la distribution de
probabilité des trajectoires.

       Par ailleurs lors de fermeture de boucle, seules les trajectoires correctes sont
retenues ce qui entraine un ré-échantillonnage du filtre particulaire, conduisant à
une forte perte d'information. Ce problème est d'autant plus important que
l'environnement contient plusieurs cycles (plusieurs ré échantillonnages successifs).

         2.3 Graph-SLAM

      La troisième méthode est basée sur la théorie des graphes. Elle consiste à
considérer les positions successives du robot et des différents amers comme les
nœuds d'un graphe. Les arrêtes sont alors constituées des contraintes fournies par
l'odométrie ou par l'observation des amers.

         Pour illustrer ce propos voyons comment procède le robot pour construire la
carte.

         2.3.1 Construction d'un graphe

      A l'instant de départ le robot observe le amer 1. Le graphe est donc constitué
de deux nœuds, la position du robot et celle du amer, ainsi que d'une arrête : la
contrainte observationnelle entre le robot et le amer 1.

                                                                                      17
A l'instant t2 le robot a avancé d'une distance u2 fournie par l'odométrie et
observe les amers 1 et 2. Le graphe est maintenant constitué de quatre nœuds: les
positions du robot à t1 et t2, reliées par l'estimation de déplacement (odométrie);
les positions des amers, reliées aux positions du robot par les contraintes
observationnelles.

                            Figure 2 : exemple de création d’un graphe

      2.3.2 Optimisation du graphe

      Une fois le graphe construit on cherche à l'optimiser en minimisant l'erreur sur
les contraintes du graphe. Du fait des incertitudes sur les mesures il existe en effet
des erreurs dans l'estimation de position du robot et des amers.

      Le « full SLAM problem » a été défini plus haut comme la probabilité d'avoir

données (odométrie plus observations), ce qui s’écrit (  ,  |   ,  ).
une trajectoire et un modèle de l'environnement pour un ensemble de mesures

      En prenant le log on obtient:

                         log (  ,  |   ,  ) = !"#

                             + ∑ log ( |  − 1 ,  )

                                + ∑ &!' ( | ,  )

       Chacun des éléments de cette somme correspond à un mouvement du robot
et forme une arrête du graphe. L'optimisation du graphe consiste donc finalement à
calculer :

                ∗ ,  ∗ = )*')+ , ,- &!' (  ,  |   ,  )

      Où * est le symbole pour la solution optimale.

       Le gros avantage du Graph-SLAM est qu'il permet de gérer les cartes
composées d'un très grand nombre de nœuds (>10⁸ à ce jour) ce qui est impossible
avec les autres techniques. Cependant l'optimisation du graphe peut être très lourde.

                                                                                   18
3. Recherches actuelles

          Le SLAM a fait l'objet de nombreux développements ces dernières années
qui ont permis d'arriver à des solutions variées plus ou moins performantes. Il existe
aujourd'hui plusieurs algorithmes ayant fait leurs preuves pour la cartographie 2D
avec des caméras ou des Lasers et plusieurs logiciels proposent leur propre module
de SLAM 2D. L'objectif est aujourd'hui de passer à la 3D. Reconstruire
l'environnement intégralement permettrait de surpasser les performances des
robots actuels en leur permettant d'accéder à des données beaucoup plus riches. La
cartographie 3D autorise en effet de rapprocher considérablement la perception des
robots de la vision animale et donc d'améliorer sensiblement leur potentielle
compréhension de leur environnement.

         Pour évoluer dans un environnement complexe il faut en effet être capable
d'en percevoir la complexité.    La cartographie 3D permettrait en outre de
surmonter des problèmes classiques rencontrés en 2D comme la détection d'une
table ou d'obstacles situés à différentes hauteurs, d'envisager l'exploration de
milieux en plusieurs dimensions (plusieurs étages d'un bâtiment, milieu naturel etc)
d'ajouter d'autres types d'informations aux cartes que les informations métriques,
comme par exemple la couleur.

           Le passage à la 3D présente bien sur des défis supplémentaires notamment
en termes de volume de données à traiter. Cependant comme nous le verrons dans
la suite ceci est aujourd'hui possible.

                                                                                   19
IV. TORO : SLAM 3D

        Cette partie présente TORO, l’algorithme de SLAM utilisé dans la suite. Après
un rapide descriptif des principes
                          principes utilisés dans TORO, le formalisme est présenté en
détail.

       1. Principe

      Lorsqu'un robot se déplace, il observe des amers dont il évalue la position dans
la scène. Entre deux poses successives le robot peut estimer sa trajectoire en
observant comment les positions des amers dans son champ d'observation ont
évoluées relativement à lui. Il créer donc une contrainte entre deux poses
successives.

   Figure 3 : Position du robot (triangles bleus) et des amers (étoiles) au cours du temps.
                                                                                     temp Les flèches
                      jaunes sont les contraintes dues à l’odométrie ou à la vision.

Figure 4 : schématisation de principe de base exploité dans TORO : les contraintes visuelles à différents
 instants sont transformées pour créer des contraintes
                                           contraintes entre des poses non successives (flèches jaunes
                                                pales).

                                                                                                        20
Cependant, il arrive fréquemment que le robot observe plus de deux fois le
même amer. Il est alors possible de créer de nouvelles contraintes tout au long de la
trajectoire entre des poses non successives. Ceci permet de réévaluer la trajectoire à
chaque itération en prenant en compte l'ensemble des observations. C'est cette idée
qui est exploitée dans TORO.

     2. Graph-SLAM

     TORO utilise une représentation des données sous forme de graphe.
Autrement dit il n'existe pas de carte métrique au sens usuel du terme.

      Pour construire le graphe TORO réduit l'ensemble des données à une
succession de nœuds, les poses du robot, reliées par des contraintes entre ses nœuds
correspondant aux déplacements estimés. Les contraintes sont déterminées à partir
des observations faites à chaque itération.

       Ici on ne considère pas la position d'un amer comme une contrainte. On déduit
à partir de la position estimée à différentes poses des relations entre les nœuds qui
elles sont prises en compte comme des contraintes. L'avantage principal de cette
représentation est que les contraintes modélisent mieux les dépendances entre les
données que dans une représentation classique. En effet avec cette représentation
sont mis en relation un ensemble d'observations faites à un instant t avec un autre
ensemble d'observations faites à un instant ultérieur, et non pas les observations
elles-mêmes.

     Par ailleurs dans cette représentation l'optimisation est complètement
découplée du modèle sous-jacent (optimisation de graphe), ce qui permet une
grande souplesse d'utilisation de l'algorithme.

      La contrepartie est cependant que pour un amers observé N fois il existe N²
arrêtes, donc la complexité de la résolution croît rapidement.

     3. TORO : formalisme

      L'algorithme consiste à trouver la configuration des nœuds du graphe qui
minimise l'erreur introduite par les contraintes.

      Ainsi en notant :

    x = (x1 · · · xn ) le vecteur des paramètres décrivant la configuration des
nœuds (qui ne sont nécessairement des relations métriques);

                                                                                   21
δji la contrainte entre le nœud i et j, qui correspond à l'arrête ij ;

      Ωji la matrice modélisant les incertitudes sur les contraintes;

      fji (x) la fonction définissant la contrainte non bruitée entre les points i et j;

      On peut définir l'erreur sur la contrainte entre les nœuds j et i, notée eji, par :

                                  678 () = 978 () – ;78

      On peut aussi définir le résidu rij par :

                                    *78 () = −678 ().

      L'intérêt de l'utilisation du résidu est que ce vecteur donne la 'direction' dans
laquelle il faut changer le graphe (l’erreur diminue dans ce sens).

     Si on fait l'hypothèse d'un bruit gaussien on peut exprimer le log négatif de la
probabilité3 de fij 4 par :

                    78 (978 () − ;78 )

                                   = 678 () >78 678 ()

                                  = *78 () >78 *78 ().

     En supposant que les observations sont indépendantes5, le log négatif de la
probabilité pour une configuration x est :

      3
        L’intérêt de prendre le log négatif est de ramener la probabilité sur une plage
de 0 à l’infini, de transformer les produits en sommes et de se ramener à une
fonction monotone.
      4
          Voir chapitre consacré au Graph-SLAM
      5
          Ceci suppose que la probabilité de A et B est la probabilité de A fois celle de B

                                                                                           22
< () = ? 78 *78 ()
                                @A,BCDE

     Finalement l'objectif est de trouver la configuration x* qui maximise la
probabilité des observations, ce qui s'écrit :

                                 ∗ = )*'8" < ()6

      Où * est le symbole pour désigner la solution optimale.

      3.1 Descente de gradient stochastique(SGD)

       Pour minimiser la fonction F une approche présenté dans par Olson [7]
consiste à sélectionner de manière itérative les contraintes et à déplacer les nœuds
dans le sens permettant une diminution de l'erreur. Les nœuds sont mis à jour selon
la formule :

                            HIJ =  H + K ・L MJ NBA
                                                  ,
                                                     >BA *BA

       Où x représente l’ensemble des variables décrivant la localisation de la pose
dans le graphe. H est la hessienne du système qui représente la courbure de la
fonction d’erreur. J est la jacobienne. Le facteur lambda sert simplement à éviter des
oscillations dans l'algorithme en diminuant progressivement la part du résidu utilisée
dans la mise à jour des variables.

      3.2 Parametrisation

       La qualité de la parametrisation joue un rôle important pour l'efficacité de
l'algorithme. En effet avec la méthode SGD il faut à chaque itération définir quelle
partie du graphe doit être mise à jour. Avec la méthode présentée par Olson [7] le

      6
        On démontre qu’en prenant le log négatif rechercher la probabilité maximum
revient à calculer argmin

                                                                                   23
problème est que pour l'optimisation d'une contrainte entre les nœuds i et k, il
faudra mettre à jour tous les nœuds j pour j=i à k.

      Dans TORO une autre méthode exploitant au mieux la topologie du graphe a
été développée utilisant un arbre pour la représentation des données. Ceci permet
de décomposer le problème en plusieurs sous problèmesproblèmes plus simples qui
correspondent soit à des contraintes de l'arbre soit des contraintes additionnelles
(fermeture de boucle).

                   Figure 5:: passage du graphe à un arbre pour la phase d'optimisation

       Chaque équation du SGD résout réso l'un de ces sous-problèmes.
                                                                problèmes. Dans cet
algorithme on traite les rotations et les translations séparément. Si l'on considère les
rotations, elles induisent des non linéarités importantes dans le problème. Le SGD
répartit simplement le résidu le long de la trajectoire. Ceci se fait au travers du
terme :

                                    O = K ・L MJ NBA
                                                  ,
                                                     >BA *BA

        Pour ce qui est de la translation la solution très intuitive consiste
simplement à distribuer le déplacement le long de la trajectoire.

        Figure 6: distribution des erreurs en rotation
                                              rotation et translation le long de la trajectoire

                                                                                                  24
V. Segmentation des nuages de points et
   reconstruction 3D

           Pour représenter une scène en 3D il faut pouvoir mesurer la position des
objets observés dans l’espace. Pour l'heure les capteurs permettant de déterminer
les positions en 3D utilisent soit des lasers soit des systèmes vidéos et fournissent
une représentation de la scène sous forme de nuages de points. La visualisation
d’une carte sous cette forme n’est pas optimale d’une part parce que les points n’ont
pas de signification physique réelle, ils sont simplement une vision échantillonnée de
la réalité sous-jacente, et d’autre part parce que pour représenter des surfaces il faut
un très grand nombre de points.

       Cette manière de représenter les données impose donc une étape de
reconstruction de la scène qui vise à extraire du nuage de point les données
véritablement pertinentes, à savoir les primitives géométriques. Prenons l'exemple
d'une sphère. Lorsqu'elle est observée par un Laser le résultat fourni est un groupe
de points répartis dans l'espace selon une relation bien précise donnée par la
géométrie de l'objet, ici une surface sphérique. La question qui se pose est donc de
savoir comment retrouver les propriétés de la surface à partir de l’ensemble des
points qui la forment. Dans la pratique un objet n'est jamais observé isolement, il est
inclus dans un nuage représentant la scène globale et sa taille relativement au reste
du nuage peut être faible. Il faut donc dans le même temps segmenter le nuage de
point pour en extraire les sous-ensembles formés par les objets.

      1.         Principe de la segmentation

      Pour pouvoir identifier un ensemble de points correspondant à un objet
particulier il faut connaître la relation liant les points. Il faut donc disposer d'un
modèle de l'objet que l’on cherche. Le principe de la recherche consiste dans un
premier temps à identifier un ensemble minimal décrivant correctement le modèle
(par exemple trois points pour un plan) puis à essayer d’étendre le support de ce
modèle en cherchant les points qui s’accordent avec lui.

       Pour l’ensemble des formes géométriques simples il est possible de définir un
modèle paramétrique donc cette technique ne pose pas de problème. Cependant
pour des objets plus complexes il n'existe pas toujours de modèle mathématiques
simples. On peut alors imaginer décomposer l'objet en formes simples puis inclure
dans un second temps des contraintes entre ces formes élémentaires. Par exemple si
l'on souhaite détecter un cube on peut chercher chacune de ces faces, des plans, et
                                                                                     25
ensuite vérifier qu'elles sont bien perpendiculaires ou parallèles les unes aux autres.
L’avantage de cette méthode est qu’elle permet de s’appuyer sur les techniques de
détection classiques. En revanche elle n’utilise pas toute l’information disponible
directement pour la détection.

     2.           Mise en œuvre: cas des objets plans

       Ici on se limite au cas des objets plans. Ceci se justifie du fait de
l’environnement urbain dans lequel se trouve le robot. Les objets ont en majorité des
formes simples composées de faces planes : sol, murs, portes, meubles, ordinateurs
etc. On cherche à identifier un plan dans un nuage. Il faut trouver l'ensemble des
points dont les positions remplissent le critère:

                               ) + PQ +  + R = 0

      Pour a, b, c et d choisis.

nuage permettant de calculer un premier jeu de paramètres du modèle (a, b, c et d).
       La première étape consiste à tirer un nombre de point minimal (trois) dans le

coordonnées sont les paramètres a, b et c. d est identifié en calculant ) + PQ + 
Avec ces trois points est formé le vecteur perpendiculaire au plan dont les

pour l’un des points. On évalue alors le nombre de point qui concordent avec le
modèle. Pour cela on vérifie que les coordonnées de chaque point candidat
respectent l’équation paramétrique (à un seuil près). Si c’est le cas alors le point est
ajouté à l’ensemble et les coefficients du plan sont réévalués. L’évaluation des
coefficients du plan optimal pour un ensemble de point se fait en plusieurs étapes.

      Premièrement on calcule le barycentre du nuage
                                             W
                                           1
                                         = ? 8
                                           "
                                            AXJ

       Où pi est la position d’un point.

      Ensuite on calcule la matrice :

                              ГW (, ) ГW (, Q) ГW (, )
                         Y = ZГW (Q, ) ГW (Q, Q) ГW (Q, )\
                              ГW (, ) ГW (, Q) ГW (, )

      Où ГW (), P) = ∑WA() − ] )(P − ^ ) .

      Le vecteur normal optimal à ce plan est le vecteur correspondant à la valeur
propre la plus petite de la matrice C. Finalement on trouve le coefficient d comme
précédemment en utilisant le centre de masse comme point. L’ajout de point se fait
de manière itérative jusqu’à ce qu’il n’y ait plus aucun point à ajouter. Si le nombre
de point est trop faible le modèle est rejeté pour éviter les fausses détections. Sinon

                                                                                     26
Vous pouvez aussi lire