Cartographie et Localisation Simultanées d`un Robot

Transcription

Cartographie et Localisation Simultanées d`un Robot
Introduction à la Recherche en Laboratoire
Cartographie et Localisation
Simultanées d'un Robot Golfeur
Présenté par
Sink Yeow CHEW
Préparé au sein du
Laboratoire G-SCOP
Du 1 Février 2016 au 2 Mai 2016
Encadré par
Gautier STAUFFER
Thierry FRAICHARD
Remerciement
Je souhaite tout d’abord remercier Gautier STAUFFER, professeur à Grenoble INP Ensimag
et chercheur au laboratoire G-SCOP, de m’avoir accepté dans son équipe de robot golfeur..
Ses qualités professionnelles, sa pédagogie et son optimisme ont été les facteurs dominants
pour réussir dans ce projet. Il a toujours été disponible pour m’aider à avancer au mieux dans
mon travail. En plus, il m’a tout le temps fait confiance, j’avais donc une réelle volonté de ne
pas le décevoir. Cette confiance était pour moi une source de motivation aussi importante que
la réussite de mon projet.
Je suis également reconnaissant à Thierry FRAICHARD pour l’idée de partir dans la direction
de SLAM. Il a parfaitement complété mon encadrement avec sa gentillesse et sa générosité de
partager ses expériences en robotique. Les discussions que nous avons eues sont les clefs de
réussite de ce projet.
Je pense avoir eu des encadrants exceptionnels et j’en ai conscience. C’est pour cela que je
leurs en suis extrêmement reconnaissant.
Il y a aussi ceux que j’ai côtoyés ou avec lesquels j’ai travaillé pendant ces trois mois, merci à
Alexandre CAULIER, Hugo MATHIAS et Yassine YAAKOUBI. Toutes ces personnes
m’ont apporté bien plus qu’elles ne le pensent et je les remercie. J’ai aimé la super ambiance
dans la salle.
Enfin, je remercie toutes personnes qui ont partagé avec moi cette aventure et qui a toujours
été à mes côtés depuis trois mois.
1
Sommaire
1.
2.
Introduction ................................................................................................................................... 3
1.1.
Contexte de travail ................................................................................................................ 3
1.2.
Problématique........................................................................................................................ 3
Etat de l’art .................................................................................................................................... 4
2.1.
2.1.1.
Ultrasons et Infrarouge .................................................................................................... 4
2.1.2.
Télémètre et système de triangulation ............................................................................. 5
2.2.
3.
Utilisation des balises ............................................................................................................ 4
Cartographie et Localisation Simultanées ............................................................................... 7
2.2.1.
Introduction à la méthode SLAM .................................................................................... 7
2.2.2.
SLAM visuel ................................................................................................................... 7
ORB-SLAM ................................................................................................................................... 9
3.1.
Principe.................................................................................................................................... 9
3.2.
Utilisation de l’ORB –SLAM sous ROS ............................................................................... 10
3.2.1.
Introduction au Robot Operating System (ROS) ........................................................... 10
3.2.2.
Notion de bases du ROS ................................................................................................ 10
3.2.3.
Intérêt de l’utilisation du ROS ....................................................................................... 11
4.
Implantation du système de positionnement sous ROS................................................................. 11
5.
Résultats et interprétation .......................................................................................................... 14
6.
7.
8.
5.1.
Conditions de l’expérience .................................................................................................... 14
5.2.
Visualisation sous rviz.......................................................................................................... 14
5.3.
Optimisation des nuages de points ........................................................................................ 15
5.4.
Reconstruction du terrain ...................................................................................................... 16
Conclusion .................................................................................................................................... 17
6.1.
Limites ................................................................................................................................... 17
6.2.
Comparaison à l’état de l’art ................................................................................................. 17
6.3.
Améliorations possibles ........................................................................................................ 17
Annexes......................................................................................................................................... 18
7.1.
Annexe A : Détails de calculs du système de triangulation................................................... 18
7.2.
Annexe B : Calibrage de la caméra ....................................................................................... 19
Bibliographie................................................................................................................................ 23
2
1. Introduction
1.1.
Contexte de travail
Ce projet a été réalisé dans le cadre du module Introduction à la Recherche en
Laboratoire (IRL) dans le laboratoire G-SCOP. Ce sujet a été proposé et encadré par Gautier
STAUFFER, chercheur au GSCOP.
Le but est de développer un robot capable de se repérer sur un green et de faire rentrer
la balle dans le trou. Dans un premier temps, le robot a été décomposé en plusieurs blocs
fonctionnels tels que la motricité, le système de positionnement et le mécanisme de vision
permettant de repérer la balle de golf et le trou. Nous sommes 3 étudiants chacun focalisant
sur les différentes fonctions citées précédemment. J’ai choisi de m’occuper du système de
positionnement parce que j’ai déjà eu des expériences lors de la participation à la Coupe
Robotique de la France.
La première partie de ce document est consacrée à l’état de l’art sur les techniques
permettant de localiser un robot mobile dans un environnement inconnu. Nous verrons de
manière théorique les principaux systèmes existants, leurs avantages et les inconvénients.
Ensuite, nous étudierons en détail un système basé sur la méthode SLAM (Cartographie et
Localisation Simultanées) qui sera utilisée dans notre projet.
1.2.
Problématique
Un robot mobile est une machine capable de se déplacer de manière semi-autonome ou
complètement autonome quel que soit l’endroit où elle se trouve.
Dans le cadre de ce projet, nous avons pour but de localiser notre robot golfeur sur un
green inconnu. Le robot doit être capable de se déplacer sur un green tout en cherchant la
balle de golf et le trou. Donc, à tout moment de sa navigation, nous avons besoin de connaitre
notre position, celle de la balle et du trou par rapport à un repère.
Cette problématique fait souvent le sujet de recherche dans les compétitions
robotiques par exemple la Coupe Robotique de la France. Dans la plupart des cas, la
résolution de ce problème est basée sur l’utilisation de l’odométrie ou des balises comme les
repères. Nous verrons par la suite les avantages et les inconvénients de ces systèmes. En
même temps, nous étudierons la problématique de SLAM qui ressemble beaucoup à la nôtre.
3
2. Etat de l’art
2.1.
Utilisation des balises
2.1.1.
Ultrasons et Infrarouge
Principe
Source [ 1]:
Sébastien GROS, “Système de
positionnement pour un robot mobile”,
Club ROBOTIK2000, 2007
Figure 1 : Schéma de principe d'un système à ultrason
Nous avons besoin de 2 signaux : 1 signal ultrasonique Su dont la vitesse de propagation Vu
𝑉𝑆𝑢 ≈ 340 𝑚 𝑠 −1
et 1 signal infrarouge SIR dont sa vitesse est très supérieure à celle des ultrasons.
A partir du robot, on envoie en même temps les 2 signaux dans toutes les directions. Etant
plus rapide que le signal ultrasonique Su, le signal infrarouge SIR atteindra les balises avant le
signal Su. Ceci a pour but de signaler aux balises le départ du signal Su.
Ti
t
Signal SIR reçu
Signal Su reçu
Figure 2 : Mesure de temps Ti
Après la réception du signal SIR, on attend pour recevoir les ultrasons afin de déterminer le
temps, Ti mis par le signal Su pour arriver jusqu’à la balise i. Ensuite, cette donnée est
renvoyée vers le robot. Ayant connu le temps de parcours des ultrasons et leur vitesse dans
l’air, nous pouvons donc déterminer les distances Di séparant le robot et la balise i.
𝐷𝑖 = 𝑇𝑖 ∗ 𝑉𝑆𝑢
4
Cette distance Di calculée peut être vue comme le rayon du cercle ayant la balise i comme le
centre. Afin de déterminer les coordonnées (X,Y) du robot, il suffit de résoudre l’équation à 2
inconnus suivante:
(𝑋 − 𝑥𝑖 )2 + (𝑋 − 𝑦𝑖 )2 = 𝐷𝑖 2
xi : Coordonnée X de la balise i
y i : Coordonnée Y de la balise i
Avantages et inconvénients
Cette solution a pour avantages d’être simple à mettre en œuvre et les composants
électroniques sont courants et bons marchés. Il n’y a pas de communication entre les balises,
ce qui évite d’avoir à mettre en place une liaison ou un protocole de communication évolué.
En revanche, dans le contexte de notre projet, le système de positionnement dont nous avons
besoin doit être capable de localiser notre robot sur un terrain qui ne sera pas forcément tout
plat. En plus, ce système à ultrasons ne nous permet pas de positionner notre robot sur un
grand green car la portée des ultrasons est de l’ordre 0.2m à 5m. Donc, la précision du
système dépend du nombre de récepteur (balises) qu’il est possible d’installer.
2.1.2.
Télémètre et système de triangulation
Principe
Le principe consiste à déduire le positionnement d’un robot situé autour des balises dont on
connait la position.[ 1] Pour ce faire, nous allons faire tourner un télémètre (partie mobile) à
vitesse constante sur le robot. L’utilisation des moteurs pas à pas permet d’obtenir une grande
précision sur l’angle de rotation. Le système de positionnement du robot aura l’air suivant.
0
0
Télémètre
Moteur pas à pas
Figure 3 : Modèle du robot équipé d’un télémètre
Ensuite, les balises sont équipées des photodiodes. Il s’agit d’un composant électronique
ayant la capacité de détecter un faisceau lumineux et de le transformer en signal électrique.
Lorsqu’une balise détecte le passage du laser, elle renvoie l’information au système de
localisation situé sur le robot qui peut ensuite en déduire les angles entre les balises grâce au
moteur pas à pas.
5
Lorsqu’au moins 2 balises détectent le passage du laser, l’ensemble de robot et des balises
forme un triangle.
Balise
B1
W
i
d1
r
d2
k
U
p
q
(0,0)
s
m
Robot
V
Origine
considérée
B2
j
o
d3
t
B3
Figure 4 : Principe du système de triangulation
Puisque la position des 3 balises, l’angle de rotation des émetteurs laser (i,j,k,o,p,q,r,s,t) et les
distances entre les balises (V,W,U) sont connus, il nous reste à connaitre les distances d1, d2 et
d3 afin d’en déduire la position du robot par rapport à ces 3 repères. Ces distances peuvent
être obtenues facilement à l’aide du télémètre.
Grace à ces données, nous pouvons procéder au calcul de la position (x,y) du robot suivant les
différents triangles. On remarque qu’il suffit de ne calculer qu’un seul des trois angles pour
connaître (x,y). Mais, par souci de précision, il est conseillé de faire une moyenne sur au
moins 2 valeurs de (x,y). Les détails de calculs sont précisés en Annexe A.
Avantages et inconvénients
Ce système est d’une part très peu sensible à l’interférence, et d’autre part permet d’obtenir à
la fois les angles entre les balises et les distances séparant le robot et les balises avec une
grande précision. Nous avons la possibilité de déterminer l’orientation du robot si nous
sommes capables de connaître l’angle entre une balise et l’avant du robot, ce qui revient à être
capable de connaître à tout instant l’orientation du laser par rapport à l’avant du robot.
En revanche, cette solution est compliquée à mettre en œuvre car contrairement au système
précédent, elle nécessite une communication non pas seulement entre les balises et le robot,
mais aussi entre les balises elles-mêmes. De plus, un télémètre de bonne qualité est de prix de
l’ordre 200 euros, ce qui est très cher par rapport à la solution précédente, sans compter le prix
des autres composants électroniques nécessaires à implanter ce système de positionnement.
6
2.2.
2.2.1.
Cartographie et Localisation Simultanées
Introduction à la méthode SLAM
La Cartographie et Localisation Simultanées, connue sous le nom anglais SLAM
(Simultaneous Localization And Mapping) permet à un robot autonome de se localiser dans
un environnement inconnu et de construire et améliorer une carte de l’environnement. La
problématique de SLAM peut être décomposée en 2 sous-problèmes :
 Représenter l'environnement à partir de l'interprétation des données fournies par les
capteurs (ex : caméra, odomètre)
 La localisation du robot par rapport à un plan.
Evidemment, résoudre ces 2 problèmes consiste à traiter le paradoxe de la poule et de l'œuf
car nous avons besoin d’une carte pour définir la localisation et la position est nécessaire pour
construire une carte.
Récemment, de nombreuses recherches ont été faites, ayant pour but de traiter la
problématique de SLAM. Les approches les plus couramment utilisées sont basées sur des
méthodes d’estimation statistiques. Il s’agit des filtres statistiques permettant d’estimer l’état
d’un système dynamique grâce aux données fournies par les capteurs. Les SLAMs sont
catégorisés selon les algorithmes de calcul appliqués, le type d’informations reçue (ex :
images, laser), la représentation de l’environnement, etc. Par exemple, coreSLAM est famille
de SLAM capable de localiser un robot et construire la carte de l’environnement à partir des
données de laser.[ 3]
Dans le cadre de ce projet, nous avons choisi les algorithmes basés sur la vision par
ordinateur à l’aide d’une caméra.
2.2.2.
SLAM visuel
L’ajustement de faisceaux (Bundle Adjustment) est une méthode connue capable de
fournir la localisation de caméra avec une bonne précision [ 2]. Le PTAM est l’une des
premières familles de SLAM basées sur l’application temps réel de l’ajustement de
faisceaux.[ 4] Il permet de faire une sélection d’image et de trouver une correspondance entre
les images. Après avoir effectué une triangulation des points, il est capable de localiser la
caméra voire la relocaliser après que ci-dernière se perde dans l’espace. Or, l’application de
cet algorithme est assez limitée dû à un manque de détection de fermeture de boucle (loop
closure detection). La détection de fermeture de boucle est un élément crucial de la robustesse
du SLAM. Il consiste à détecter si le robot repasse par l’endroit où il est passé précédemment.
Cela nous permet d’améliorer la précision de la position actuelle du robot.
Dans le cadre de ce projet, nous avons choisi d’utiliser l’ORB-SLAM. Il s’agit d’une
autre famille de SLAM ayant toutes les propriétés essentielles présentées dans le PTAM. En
plus, des nouvelles fonctionnalités sont également ajoutées. Nous allons les préciser dans le
prochain chapitre.
7
Avantages et inconvénients
La méthode de l’ORB-SLAM est une problématique qui a déjà été traitée avec des résultats
garantis de bonne précision. Par rapport aux systèmes de positionnement présentés
précédemment, cette méthode ne nécessite qu’une caméra (dans le cas d’un mono SLAM), ce
qui est beaucoup plus simple à implanter en termes de matériel. En plus, il existe un module
de l’ORB-SLAM publié en open source et il est prêt à être employé.
En revanche, l’ORB-SLAM nécessite un processeur suffisamment puissant afin d’effectuer le
traitement des images et les calculs complexes. Cela implique que l’algorithme de SLAM sera
lancé dans un ordinateur mais pas sur un microcontrôleur d’Arduino. Les résultats seront
ensuite envoyés vers le robot à l’aide d’un système de communication comme bluetooth ou
wifi.
8
3. ORB-SLAM
3.1.
Principe
L’ORB signifie en anglais Oriented Fast and Rotated BRIEF, qui est un détecteur visuel
couramment utilisé dans la vision par ordinateur [ 5]. Un détecteur visuel permet de détecter
et de décrire les caractéristiques élémentaires d’une image : la forme, la couleur, etc
Figure 5 : Fonctionnement de l’ORB SLAM
Source:
Raul Mur-Artal, J. M. M.
Montiel and Juan D. Tardos
“ORB-SLAM: a Versatile and
Accurate Monocular SLAM
System”, IEEE, 2015
L’ORB-SLAM [ 6] consiste à recevoir en entrée les images et exécuter 3 threads en parallèle:
la localisation(Tracking), la construction de carte (Local Mapping) et la détection de
fermeture de boucle (Loop Closing).
La Tracking permet de localiser la caméra à partir des images. Ce thread décide également si
une nouvelle image sera considérée comme la référence ou rejetée. Dans le cas où la Tracking
perd sa référence, le module de reconnaissance (Place Recognition) sert de refaire une
localisation globale afin de retrouver la position de la caméra.
La Local Mapping a pour objectif de traiter les nouvelles images de référence. Elle permet de
faire une correspondance entre les nouveaux points ajoutés en faisant une triangulation. Lors
de cette étape, un algorithme d’élimination est appliqué dans le but de ne garder que les points
de bonnes qualités selon les critères de Recent Map Points Culling [ 6].
La Loop Closing recherche dans toutes les nouvelles images ajoutées s’il existe une
fermeture de boucle. Dans le cas où une fermeture est détectée, les 2 terminaux de boucle sont
alignés et les points redondants sont fusionnés. Cela nous permet d’estimer l’erreur accumulée
et de corriger l’erreur.
9
3.2.
Utilisation de l’ORB –SLAM sous ROS
3.2.1. Introduction au Robot Operating System (ROS)
Robot Operating System (ROS) est un système d'exploitation complet pour le service
robotique [ 7]. Aujourd’hui, Ubuntu est le seul système officiellement supporté. De nombreux
packages sont publiés pour ROS avec diverses licences open source (BSD, MIT). Ces
packages permettent de faire fonctionner des applications, des algorithmes ou encore des
programmes pour interfacer ROS avec des robots.
Le principe de base du ROS est de lancer en parallèle un grand nombre d'exécutables qui
peuvent échanger de l'information de manière synchrone ou asynchrone.
3.2.2. Notion de bases du ROS
Cette partie du document est consacrée à l’explication des notions de bases du ROS. Les mots
de clef comme le Master, le Node, les topics, les messages et les bags seront réutilisés dans la
suite du document.
Source :
Robot Operating System
https://fr.wikipedia.org/wiki
/Robot_Operating_System
Figure 6 : Communication des nœuds via les topics
 Le Master est le maitre contrôleur qui permet à des nœuds de se connaître et
d'échanger de l'information via les topics.
 Un Node est une instance d'un exécutable. Il peut correspondre à un capteur, un
moteur, un algorithme de traitement, etc.
 Un Topic est un canal de communication basé sur le système de publication et
d’abonnement (publication and subscription). ROS permet à un ou plusieurs nœuds de
publier de l'information sur un topic. En même temps, il peut y avoir un ou plusieurs
autres nœuds qui lisent de l'information sur ce topic.
 Les Messages sont les informations qui sont publiées dans un topic. Il est composé
des types élémentaires (entiers, flottants, chaînes de caractères, etc) ou d’autres
messages.
 Les Bags sont des formats destinés à stocker et rejouer les messages publiés dans un
topic.
Sur un schéma décrivant les relations entre les nœuds et la publication des messages dans les
topics, un nœud est représenté par un cercle alors qu’un rectangle correspond à un topic. Une
flèche partante d’un nœud A vers un topic B signifie la publication des messages du nœud A
dans le topic B. Cette notation sera utilisée dans la suite de ce document.
10
3.2.3. Intérêt de l’utilisation du ROS
L’ORB-SLAM que nous avons abordé précédemment nécessite de travailler sous
l’environnement de ROS. Il a été testé sous les versions Fuerte, Groovy, Hydro et Indigo.
Dans le cadre de ce projet, nous avons choisi la version Indigo car elle est la plus récente et la
plus stable parmi les 4 citées ci-dessus [ 7].
L’idée principale d’un OS robotique est de proposer des fonctionnalités standardisées faisant
abstraction du matériel, tout comme un OS classique pour PC. Dans notre cas, l’utilisation du
ROS nous permet de communiquer entre les différents blocs fonctionnels du robot golfeur: la
motricité, le système de positionnement et le mécanisme de vision. Nous pouvons ainsi
développer chacune de ces 3 parties indépendamment à condition que les bons types de
messages soient publiés sur le bon topic.
4. Implantation du système de positionnement sous ROS
Nœud caméra
Nœud ORB
SLAM
Nœud convertisseur
markers-pointcloud
Nœud convertisseur
pointcloud-pointcloud2
Sauvegarde
pcd
Figure 7 : Système de positionnement sous ROS
Le principe du système de positionnement est de cartographier le terrain sous forme des
nuages de points à partir des images reçues. Ces nuages de points seront traités ailleurs afin de
produire un modèle du terrain qui pourra ensuite servir dans la simulation. Le schéma cidessus montre l’ensemble des nœuds exécutés et des topics établis.
11
i.
Nœud caméra (/usb_cam) :
Rôle
Il communique avec les webcams standards et publie les images sous forme
sensor_msgs::Image.
Abonnement
Rien
Publication
/usb_cam/image_raw
Avant l’utilisation, une caméra doit être calibrée dans l’objectif de fournir une bonne
précision. Dans le cadre de notre projet, la caméra utilisée est la webcam Logitech C270.
Les explications théoriques sur le modèle sténopé et les démarches techniques du
calibrage sont précisées en Annexe B.
ii.
Nœud ORB SLAM :
Rôle
Etant fourni des images du terrain, l’ORB SLAM extrait ses caractéristiques ORB.
Lorsqu’il découvre des nouveaux coordonnées, une nouvelle carte de référence
prenant en compte des nouveaux repères sera publiée dans le topic
/ORB_SLAM/Map. Cette référence, sauvegardée internement sous le module de
reconnaissance (Place Recognition) (Figure 5), est renouvelé à tout moment lorsqu’il y
a de nouvelles images ajoutées. La position actuelle de la caméra est envoyée dans le
topic /tf. Ces informations sont importantes pour pouvoir visualiser la création de la
carte sous l’afficheur rviz.
Abonnement
/usb_cam/image_raw
Publication
/ORB_SLAM/Map
/ORB_SLAM/Frame
/tf
12
iii.
Nœud convertisseur markers-pointcloud (/marker2pointcloud) :
Rôle
A la sortie de l’ORB SLAM, la carte de référence est publiée sous forme des markers
qui ne servent que pour l’affichage. Or, ce qui nous intéresse dans le cadre de ce projet
est de pouvoir les manipuler voire les importer dans les logiciels de simulation
physique comme Gazebo. L’exécution de ce nœud a pour objectif d’extraire les
coordonnées 3D des markers et fabriquer une première forme de nuages de points.
Abonnement
/ORB_SLAM/Map
Publication
/marker2pointcloud/PointCloud
iv.
Nœud convertisseur pointcloud-pointcloud2 (/point_cloud_converter) :
Rôle
Le ROS possède son propre type de nuages de points : sensor_msgs/PointCloud et
sensor_msgs/PointCloud2. Ils sont de l’origine de la bibliothèque de nuages de points
(PCL : Point Cloud Library). Depuis des années, la PCL a remplacé le type
PointCloud par PointCloud 2 à cause de son inefficacité [ 8].
Ce deuxième convertisseur de nuages de point a pour objectif de convertir les
messages sensor_msgs/PointCloud en sensor_msgs/PointCloud2 pour pouvoir utiliser
les fonctions qui nécessitent de ne travailler qu’avec PointCloud 2 sous PCL.
Abonnement
/marker2pointcloud/PointCloud
Publication
/point_cloud_converter/PointCloud2
v.
Sauvegarde en PCD :
Sauvegarder les nuages de points dans les fichiers PCD [ 9] qui seront réutilisés dans
la suite.
Abonnement
/point_cloud_converter/PointCloud2
Publication
Rien
13
5. Résultats et interprétation
5.1.
Conditions de l’expérience
L’expérience a été conduite à l’extérieur sur de l’herbe. Dans un premier temps, nous ne nous
occupons du terrain quasi plat d’aire 8m*8m. La caméra utilisée est la webcam Logitech
C270 (3Mp) dont la qualité des images (publiées à 30 fps) dépend beaucoup de l’intensité de
lumière. L’ensemble du système de positionnement est implanté sur le processeur Intel(R)
Core(TM) i5-2410M [email protected].
5.2.
Visualisation sous rviz
La Figure 8 montre une image publiée dans le topic /ORB_SLAM/Frame. Nous constatons qu’elle est
Figure 8 : Image du terrain
Figure 9 : Représentation 3D de la carte
sous rviz
noire et blanche. Cela vient du fait que l’ORB SLAM ne garde que les caractéristiques ORB. A part
cela, les markers verts sur l’image représentent les coordonnées ORB qui ont été extraites de l’image.
Ces repères sont rangés dans le module de reconnaissance (Place Recognition) (Figure 5), qui
sera mis à jour pour chaque nouvelle image.
Ces mêmes repères sont représentés sur la Figure 9 dans un espace 3D. Les points en rouge
signifient les nouveaux caractéristiques ORB détectés. Les noirs représentent les coordonnés
qui ont été découverts et gardés comme la référence de la cartographie. Lors de l’insertion
d’une nouvelle image, la position actuelle de la caméra (cadre vert) est mise à jour sur la
carte. Les cadres bleus représentent le parcours que la caméra a suivi.
Figure 10 : Détection de fermeture de boucle
14
Comme expliqué précédemment, la référence de l’ORB SLAM est enregistrée dans le
module intégré Place Recognition. Cette référence est corrigée tout au long du parcours de la
caméra dans l’espace. Les nouveaux points insérés doivent satisfaire les conditions citées dans
Recent Map Points Culling [ 6]. En plus de cela, la détection d’une fermeture de boucle (loopclosure) permet d’estimer l’erreur accumulée et ainsi corriger l’erreur. La Figure 10 montre le
cas où une fermeture est détectée. Les 2 terminaux de boucle sont alignés et les points
redondants sont fusionnés. Par conséquent, nous observons qu’un nombre significatif de
points ont été éliminés.
5.3.
Optimisation des nuages de points
Vu de caméra
Figure 12 : Mur collé des papiers pointés
Figure 11 : Nuage de points
représentant le mur
Dans le cadre de ce projet, nous nous intéressons à la création d’une carte en construisant la
surface du terrain à partir des nuages de points. Or, afin d’obtenir une bonne précision, l’ORB
SLAM a besoin de repasser plusieurs fois par le même endroit et de refaire une estimation.
Donc, il se peut que les nuages de points créés à la première vue de la caméra ne soient pas
corrects. Il peut également arriver que l’ORB SLAM publie sa carte de référence sans que ci
dernière ne soit corrigée.
La Figure 12 montre l’expérience ayant pour but de vérifier l’hypothèse ci-dessus. Pour ce
faire, nous avons collés des papiers pointés sur un mur et ensuite parcouru la caméra sur les
zones de papiers. Sur la Figure 11, nous constatons que les points sont concentrés autour d’un
plan. On peut en déduire que ce plan représente le mur. En plus de cela, nous avons également
constaté qu’il existe des points qui ne sont pas appartenus au mur. Ceci peut être expliqué par
l’imprécision introduite par les points qui ne sont pas encore corrigés.
L’imprécision ci-dessus pose des problèmes lorsque nous allons faire une triangulation des
points. Pour la remédier, nous avons procédé par la méthode d’extraction de plan (Plane
model segmentation) [ 10]. Cette technique consiste à extraire tous les points qui se trouvent
sur un plan avec une épaisseur DistanceThreshold. La distance DistanceThreshold détermine
l’écart maximal entre un point et le plan considéré pour être pris en compte. A la fin du calcul,
nous n’allons garder que le plan contenant le plus de points.
15
5.4.
Reconstruction du terrain
Figure 13 : Représentation du terrain
3D
Figure 14 : Existence d’une bosse sur
le terrain 3D
L’étape finale dans notre système de positionnement consiste à reconstruire la surface du
terrain à partir de la carte de référence présentée sous forme des nuages de points Il existe
sous la bibliothèque de PCL une fonction permettant de trianguler les nuages de points [ 11].
La Figure 13 désigne la surface de l’herbe sur laquelle la caméra a fait son trajet. Nous
observons que la distribution de triangle n’est pas tout à fait équilibrée. Le centre de la carte
est plus dense par rapport à ses côtés parce que le fait de faire plusieurs tours permet à la
caméra de revoir et corriger la partie milieu de la carte plus souvent que ses côtés. Par
conséquent, la surface de cotés n’est pas plate, ce qui ne correspond pas à la réalité.
La Figure 14 montre les bosses que nous avons observés lorsqu’un zoom est fait sur la Figure
13. Ces bosses représentent la condition actuelle du terrain où il existe des cailloux ou des
zones de l’herbe qui sont plus élevées que les autres.
16
6. Conclusion
Dans le cadre de ce projet, nous avons développé un système de positionnement pour un robot
golfeur en nous basant sur l’ORB SLAM [ 6]. Il est démontré que notre système est capable
de reconstruire approximativement la surface du terrain. La précision dépend fortement de
celle de l’ORB SLAM. L’expérience montre que l’ORB SLAM pourra atteindre la précision
de l’ordre 1cm dans une salle et de l’ordre quelques mètres quand le taille du terrain
augmente.
6.1.
Limites
Comme la précision, les limites de notre système reste celles de l’ORB SLAM [ 6]. Dans la
plupart des cas, nous retrouverons les résultats ressemblant à ceux que nous avons obtenus
lors de l’expérience. Or, dans les cas suivants, notre système pourrait se comporter
différemment des résultats présentés précédemment.


Pas de translation ou trop de rotation pure dans l’espace lors de l’initialisation du
système
Pure rotation lors de la navigation dans l’espace
En plus de cela, lors de l’expérience, nous avons fait l’hypothèse que notre terrain de l’herbe
est quasiment plat, d’où nous avons filtré les nuages de points par rapport à un plan. Nous
n’avons pas testé notre système avec toutes les conditions du terrain (bosses, trou etc). Le
comportement du système ne sera donc pas garanti.
6.2.
Comparaison à l’état de l’art
Les techniques présentées dans l’état de l’art sont des systèmes électroniques ayant besoin de
la mise en œuvre des balises électroniques. Dans le cas de notre projet, seule une caméra est
nécessaire pour capter les images. Mais, l’efficacité de notre système dépend fortement de la
qualité des images fournies par la caméra.
L’utilisation des balises dans l’état de l’art implique la prédéfinition de la taille du terrain.
Dans le cas du système à ultrasons [ 1], la taille du terrain est limitée à 5m*5m. Or,
l’expérience montre que notre système fonctionne bien sur un terrain de 8m*8m.
Nous n’avons pas pu comparer exactement la précision de notre système et celle de l’état de
l’art car elle n’est pas détaillée dans la documentation [ 1].
6.3.
Améliorations possibles
La performance de notre système peut être améliorée selon les différentes méthodes de SLAM
utilisées. L’ORB SLAM 2 sorti en Janvier 2016 possède les mêmes caractéristiques que
l’ORB SLAM utilisé dans notre projet [ 12]. En plus, l’ORB SLAM 2 applique un ajustement
de faisceaux complet. L’extraction des caractéristiques ORB est améliorée et le procès de la
tracking prendra moins de temps.
A part cela, la construction de la surface de terrain devrait être améliorée en affinant les
détails de surface (trou, bosse etc).
Finalement, dans le but d’adapter notre robot et d’améliorer la précision du système, nous pouvons
effectuer une simulation de terrain avec le robot à l’aide de l’outil Gazebo [ 13].
17
7. Annexes
7.1.
Annexe A : Détails de calculs du système de triangulation
Triangle (B1, R, B3)
𝑤
𝑥 = + cos(180 − (𝑝 + 𝑞)) ∗ 𝑑3
2
𝑦 = sin(180 − (𝑝 + 𝑞)) ∗ 𝑑3
Triangle (B2, R, B3)
𝑤
𝑥 = + cos(𝑜 + 𝑡 ) ∗ 𝑑3
2
𝑦 = sin(𝑜 + 𝑡 ) ∗ 𝑑3
Triangle (B1, R, B2)
𝑥 = cos(𝑖) ∗ 𝑑1
𝑦 = L + sin(𝑖) ∗ 𝑑1
18
7.2.
Annexe B : Calibrage de la caméra
Objectif
La calibration d'une caméra a pour but de déterminer la relation mathématique entre les
coordonnées 3D observée via la caméra et les coordonnées 2D projetés sur son image
correspondante. Afin de fournir des mesures dimensionnelles précises en entrée de l’ORB
SLAM, il est indispensable de prendre en compte des distorsions induites par le système
optique de la caméra.
Modèle sténopé
Calibrer une caméra consiste à la modéliser. Aujourd’hui, il existe plusieurs modèles décrivant
le processus de formation des images dans une caméra. Le modèle sténopé (pin-hole) est le
modèle le plus couramment utilisé.
𝑢
𝑓𝑥
𝑠 [𝑣 ] = [ 0
1
0





0
𝑓𝑦
0
𝑐𝑥 𝑟11
𝑐𝑦 ] [𝑟21
1 𝑟31
𝑟12
𝑟22
𝑟32
𝑟13 𝑡1 𝑋
𝑟23 𝑡2 ] [𝑌 ]
𝑟33 𝑡3 𝑍
1
(X, Y, Z) : Coordonnées des points dans l’espace 3D
(u, v) : Coordonnées des points projetés sur l’image 2D
S : Factor d’agrandissement de l’image
Matrice [FC] modélise les paramètres intrinsèques de la caméra, d’où
 (cx, cy) : Centre de l’image
 fx, fy : Distances focales exprimées en pixels
Matrice [RT] représente les paramètres extrinsèques de la caméra.
Dans ce modèle, on cherche à estimer les paramètres intrinsèques de la caméra, et sa position
et orientation par rapport au repère du monde réel (paramètres extrinsèques). La matrice [RT]
décrit le mouvement de la caméra dans un environnement statique. Elle transforme les
coordonnés (X, Y, Z) en (x, y, z). En tenant en compte des distorsions, cette transformation
peut être exprimée sous forme :
𝑥
𝑋
[ 𝑦 ] = [𝑅 ] [ 𝑌 ] + [𝑇 ]
𝑧
𝑍
19
Avec
𝑦′ =
𝑦
𝑧
′′
𝑥 = 𝑥′
𝑦 ′′ = 𝑦
1+𝑘1 𝑟 2 +𝑘2 𝑟 4 +𝑘3 𝑟 6
1+𝑘4 𝑟 2 +𝑘5 𝑟 4 +𝑘6 𝑟 6
2
4
6
′ 1+𝑘1 𝑟 +𝑘2 𝑟 +𝑘3 𝑟
1+𝑘4 𝑟 2 +𝑘5 𝑟 4 +𝑘6 𝑟 6
2
+ 2𝑝1 𝑥 ′ 𝑦 ′ + 𝑝2 (𝑟 2 + 2𝑥 ′ )
2
+ 𝑝1 (𝑟 2 + 2𝑦 ′ ) + 2𝑝2 𝑥 ′ 𝑦 ′
2
2
𝑟2 = 𝑥′ + 𝑦′
𝑢 = 𝑓𝑥 𝑥 ′′ + 𝑐𝑥
𝑣 = 𝑓𝑦 𝑦 ′′ + 𝑐𝑦
Les coefficients ki représentent les distorsions radiales et les pi modélisent les distorsions
tangentielle. Dans notre cas, l’ORB SLAM ne demande que la précision des coefficients
jusqu’à l’ordre 2 (k1, k2, p1, p2).
Algorithmes de calibration
Aujourd’hui, il existe plusieurs moyens permettant de calculer ces paramètres. Nous résumons
ci-dessous les algorithmes les plus connus en traitement d’image.
No
1
2
3
4
Algorithmes
Méthode Transformation directe linéaire (DLT method)
Méthode de Zhang
Méthode de Selby **
Méthode de Tsai
Dans le cadre de notre projet, l’algorithme utilisé est l’approche de Zhang car il existe sous
l’environnement de ROS le paquetage camera_calibration dans lequel est intégré cet
algorithme, qui permet de calibrer les mono-caméras.
Calibration sous ROS
Protocole de calibration
1. Avant de commencer, il nous faut


un échiquier imprimé en noir et blanc. Dans notre cas, il s’agit d’un 8*6 échiquier avec les
carrés de coté 10.8 cm. [Annexe Checkerboard]
une caméra. J’ai utilisé la webcam Logitech C270.
L’expérience est faite dans un environnement sans obstacle.
2. Démarrer le maitre de ROS.
Roscore
20
3. Lancer le nœud permettant de publier les images dans le topic /usb_cam/image_raw. Pour
ce faire, j’ai écrit un fichier launch usb-cam.launch.
roslaunch usb-cam.launch
4. Maintenant, on peut démarrer le nœud camera_calibration en spécifiant les caractéristiques
de l’échiquier utilisé.
rosrun camera_calibration cameracalibrator.py --size NbR*NbC --square L
image:=/topic_qui_publie
NbR: Nombre de rangées
NbC: Nombre de colonnes
L : La largeur d’un carré en mètre
Dans mon cas, j’ai utilisé un 8*6 échiquier avec les carrés de largeur 4 cm.
rosrun camera_calibration cameracalibrator.py --size 8*6 --square 0.04
image:=/usb_cam/image_raw
Si tout se passe bien, une fenêtre s’ouvre comme suivant.
Figure 15 : Fenêtre du calibrage de caméra
Source:
How to Calibrate a Monocular Camera
http://wiki.ros.org/camera_calibration/
Tutorials/MonocularCalibration
Signification des barres X,Y,Skew et Size.
 X : Les informations récupérées sur l’axe X
 Y: Les informations récupérées sur l’axe Y
 Size : Les informations récupérées sur l’axe Z
 Skew : Les informations récupérées sur la rotation
4. Afin d’obtenir une bonne calibration, il faut déplacer l’image autour de la fenêtre avec
toutes les orientations possibles. Pour chaque déplacement de l’échiquier dans l’espace, on
verra l’avancement de l’accumulation des infos sur les barres X,Y,Skew et Size.
21
Une fois que les informations sont suffisantes pour les calculs, toutes les 4 barres seront en
vertes. On peut donc démarrer la calibration avec les données récupérées.
Figure 16 : Déplacement de l’échiquier autour de la fenêtre
Utilisation des résultats
Dès que la calibration est terminée, nous allons trouver les informations ci-dessous affichées
dans le terminal et aussi sauvegardées dans un fichier .yaml.
...
camera matrix
832.419750 0.000000
308.340942
0.000000 835.157342
230.981013
0.000000 0.000000 1.000000
distortion
0.013499 -0.189840 0.001753
0.001687 0.000000
…
Lors de l’expérience, je me suis rendu compte que les résultats varient selon l’intensité
de lumière. Donc, plusieurs expériences sont fait avec les mêmes grilles et la moyenne des
valeurs sera utilisée.
Finalement, on remplit le fichier ORB_SLAM/Data/Settings.yaml avec les informations cidessus.
22
8. Bibliographie
[ 1 ] Sébastien GROS, “Système de positionnement pour un robot mobile”, Club
ROBOTIK2000, 2007
[ 2 ] B. Triggs, P. F. McLauchlan, R. I. Hartley, and A. W. Fitzgibbon, “Bundle adjustment a
modern synthesis” Vision algorithms: theory and practice, 2000
[ 3 ] Oussama El Hamzaoui, “Localisation et cartographie simultanées pour un robot mobile
équipé d’un laser à balayage : CoreSLAM ”,École nationale supérieure des mines de Paris,
2014
[ 4 ] G. Klein and D. Murray, “Parallel tracking and mapping for small AR workspaces,” in
IEEE and ACM International Symposium on Mixed and Augmented Reality (ISMAR), Nara,
Japan, November 2007
[ 5 ] Ethan Rublee Vincent Rabaud Kurt Konolige Gary Bradski, “ORB: an efficient
alternative to SIFT or SURF”,Willow Garage, Menlo Park, California
[ 6] Raul Mur-Artal, J. M. M. Montiel and Juan D. Tardos “ORB-SLAM: a Versatile and
Accurate Monocular SLAM System”, IEEE, 2015
[ 7] ROS
https://fr.wikipedia.org/wiki/Robot_Operating_System
[ 8] Remplacement du PointCloud par PointCloud2
http://wiki.ros.org/pcl?action=AttachFile&do=get&target=PCL_March_2010.pdf
[ 9] Format PCD
http://pointclouds.org/documentation/tutorials/pcd_file_format.php
[ 10] Plane model segmentation
http://www.pointclouds.org/documentation/tutorials/planar_segmentation.php
[ 11] Alexandru-Eugen Ichim,“PCL - SURFACE RECONSTRUCTION”, TOYOTA CODE
SPRINT
[ 12] Raul Mur-Artal, Juan D. Tardos, J. M. M. Montiel and Dorian Galvez-Lopez, “RealTime SLAM for Monocular, Stereo and RGB-D Cameras, with Loop Detection and
Relocalization Capabilities”, Willow Garage, Menlo Park, California
[ 13] Simulateur physique Gazebo
http://wiki.ros.org/gazebo
23

Documents pareils