Introduction à la méthode SLAM
3 choses à savoir
La méthode SLAM (Simultaneous Localization and Mapping) est utilisée pour les véhicules autonomes et permet d'élaborer une carte, tout en localisant votre véhicule sur cette carte. Les algorithmes SLAM donne le moyen à un véhicule de cartographier des environnements inconnus. Les ingénieurs utilisent alors les informations de la carte pour réaliser des tâches telles que la planification de trajectoires et l’évitement d’obstacles.
La méthode SLAM fait l’objet de recherches techniques depuis de nombreuses années. Avec l'amélioration considérable de la vitesse de traitement de l'information et la disponibilité de capteurs low-cost tels que les caméras et les télémètres laser, la méthode SLAM est désormais utilisée pour des applications pratiques dans des domaines de plus en plus nombreux.
Pour comprendre pourquoi la méthode SLAM est importante, étudions certains de ses avantages et des exemples d’application.
Exemples d’application de la méthode SLAM
Prenons l’exemple d’un aspirateur robot domestique. Sans la méthode SLAM, il se déplacera de manière aléatoire dans une pièce et ne pourra peut-être pas nettoyer toute la surface du sol. En outre, cette approche très énergivore épuisera la batterie plus rapidement. Les robots basés sur la méthode SLAM, quant à eux, peuvent utiliser des informations telles que le nombre de tours de roue et les données provenant de caméras et d’autres capteurs d’images pour déterminer le nombre de mouvements nécessaires. C’est ce que l’on appelle la localisation. Le robot peut aussi simultanément utiliser la caméra et d’autres capteurs pour cartographier les obstacles dans son environnement et éviter de nettoyer deux fois la même zone. C’est ce que l’on appelle la cartographie.

Avantages de la méthode SLAM pour les robots de nettoyage
La méthode SLAM est utile dans de nombreuses autres applications, comme la navigation d’une flotte de robots mobiles pour organiser les rayons d’un entrepôt, le stationnement d’une voiture autonome sur une place libre ou la livraison d’un colis par navigation d’un drone dans un environnement inconnu. MATLAB et Simulink proposent des outils d’analyse, des fonctions et des algorithmes SLAM pour développer différentes applications. Vous pouvez implémenter la localisation et la cartographie simultanées ainsi que d’autres tâches telles que la fusion de capteurs, le pistage d’objets, la planification de trajectoire et le suivi de trajectoire.
En résumé, deux types de composants technologiques permettent de réaliser le SLAM. Le premier est le traitement des signaux provenant des capteurs, notamment le traitement front-end, qui dépend largement des capteurs utilisés. Le second est l’optimisation du graphe de pose, notamment le traitement back-end qui est identique quels que soient les capteurs.

Workflow de la méthode SLAM
Pour mieux comprendre le composant de traitement front-end, examinons deux méthodes SLAM différentes : le SLAM visuel et le SLAM LiDAR.
SLAM visuel
Comme son nom l’indique, le SLAM visuel (ou vSLAM) utilise des images acquises par des caméras et autres capteurs d’images. Le SLAM visuel peut utiliser des caméras simples (grand angle, Fisheye et sphériques), des caméras à œil composé (caméras stéréo et multi-caméras) et des caméras RGB-D (caméras de profondeur et ToF).
Cette méthode peut être implémentée à faible coût avec des caméras relativement bon marché. En outre, comme les caméras fournissent un grand volume d’informations, elles peuvent être utilisées pour détecter des points de repère (positions mesurées précédemment). La détection de points de repère peut également être combinée à l’optimisation basée sur les graphes, ce qui permet d’obtenir une certaine souplesse dans l’implémentation de la méthode SLAM.
On parle de SLAM monoculaire lorsque le vSLAM n’utilise qu’une seule caméra comme capteur, ce qui complique la définition de la profondeur. Ce problème peut être résolu soit en détectant des marqueurs de réalité augmentée, des damiers ou d’autres objets connus dans l’image pour la localisation, soit en fusionnant les informations de la caméra avec un autre capteur, comme des centrales inertielles (IMU), qui peuvent prendre des mesures physiques telles que la vitesse et l’orientation. Parmi les technologies liées au vSLAM, nous comptons la structure acquise à partir du mouvement (SfM), l’odométrie visuelle et l’ajustement de faisceaux.
Nous pouvons classer les algorithmes de SLAM visuel en deux catégories. Les méthodes creuses font correspondre les points caractéristiques des images et utilisent des algorithmes tels que PTAM et ORB-SLAM. Les méthodes denses exploitent la luminosité globale des images et utilisent des algorithmes tels que DTAM, LSD-SLAM, DSO et SVO.

Structure acquise à partir du mouvement.

Recalage des nuages de points pour le SLAM RGB-D
SLAM LiDAR
Le LiDAR (acronyme de Light Detection and Ranging) est une méthode qui utilise principalement un capteur laser (ou capteur de distance).
Par rapport aux caméras, au ToF et à d’autres capteurs, les lasers sont nettement plus précis et sont utilisés pour des applications impliquant des véhicules se déplaçant à grande vitesse, comme les voitures autonomes et les drones. Les valeurs de sortie des capteurs laser sont généralement des données de nuage de points 2D (x, y) ou 3D (x, y, z). Le nuage de points du capteur laser fournit des mesures de distance très précises et s’avère très efficace pour la cartographie avec la méthode SLAM. Généralement, le mouvement est estimé de façon séquentielle en mettant en correspondance plusieurs nuages de points. Ce mouvement calculé (la distance parcourue) permet de localiser le véhicule. Pour la mise en correspondance des nuages de points LiDAR, des algorithmes de recalage comme ICP (Iterative Closest Point) et NDT (Normal Distributions Transform) sont utilisés. Les cartes de nuages de points 2D ou 3D peuvent être représentées sous la forme d'une carte quadrillée ou d'une carte voxel.
Toutefois, les nuages de points ne sont pas aussi détaillés que les images en termes de densité, et n'offrent pas toujours suffisamment de caractéristiques pour la mise en correspondance. Par exemple, dans les lieux qui comportent peu d’obstacles, il est difficile d'aligner les nuages de points, et la position du véhicule peut alors être perdue. En outre, cette mise en correspondance nécessite généralement une puissance de traitement plus élevée. Il faut donc optimiser les processus pour améliorer la vitesse. En raison de ces difficultés, la localisation des véhicules autonomes peut nécessiter de fusionner d’autres résultats de mesure, par exemple l’odométrie, le GNSS (Global Navigation Satellite System) et les données IMU. Pour les applications telles que les robots d’entrepôt, le SLAM LiDAR 2D est fréquemment utilisé, tandis que le SLAM qui utilise les nuages de points LiDAR 3D peut être employé pour la conduite autonome et les drones.

SLAM avec LiDAR 2D

SLAM avec LiDAR 3D
Difficultés courantes avec le SLAM
Bien que le SLAM soit utilisé pour certaines applications pratiques, plusieurs difficultés techniques freinent une adoption plus générale. Pour chacune, il existe une contre-mesure permettant de contourner l’obstacle.
1. Accumulation d’erreurs de localisation entraînant une déviation substantielle par rapport aux valeurs réelles
Le SLAM estime un mouvement séquentiel, ce qui inclut une certaine marge d’erreur. Cette erreur s'accumule dans le temps, ce qui entraîne une déviation substantielle par rapport aux valeurs réelles. Les données de la carte peuvent finir par être faussées ou décalées, ce qui rend les recherches suivantes plus difficiles. Imaginons que le robot suive une trajectoire carrée. À mesure que l’erreur s’accumule, les points de départ et d’arrivée du robot ne correspondent plus. On appelle cela un problème de fermeture de boucle. Les erreurs d’estimation de pose comme celle-ci sont inévitables. Il est important de détecter les fermetures de boucle et de déterminer comment corriger ou effacer les erreurs accumulées.

Exemple de création d’un graphe de pose et de minimisation des erreurs.
Une contre-mesure consiste à garder en mémoire certaines des caractéristiques d’un lieu précédemment visité et s’en servir comme point de repère pour minimiser l’erreur de localisation. Les graphes de pose permettent de corriger les erreurs. Résoudre la minimisation d'erreurs comme un problème d’optimisation permet de générer des cartes plus précises. Ce type d’optimisation est appelé un ajustement de faisceau en SLAM visuel.

Exemple de création d’un graphe de pose et de minimisation des erreurs.
2. La localisation échoue et la position sur la carte est perdue
La cartographie à partir d'image et de nuages de points ne tient pas compte des caractéristiques du mouvement d’un robot. Dans certains cas, cette approche génère des estimations de position discontinues. Par exemple, un résultat de calcul indiquant qu’un robot se déplaçant à 1 m/s a soudain fait un bond de 10 mètres. Ce type d’échec de localisation peut être évité en utilisant un algorithme de récupération ou en fusionnant le modèle de mouvement avec plusieurs capteurs pour réaliser les calculs sur la base des données des capteurs.
Il existe plusieurs méthodes permettant d’utiliser un modèle de mouvement avec la fusion de capteurs. Les filtres de Kalman sont une méthode de localisation fréquemment utilisée. Puisque la plupart des robots à entraînement différentiel et des véhicules à quatre roues utilisent des modèles de mouvement non linéaires, il est courant de recourir aux filtres de Kalman et aux filtres à particules (localisation Monte Carlo). Dans certains cas, on peut également utiliser des filtres bayésiens plus flexibles, comme les filtres Kalman sans parfum. Parmi les capteurs couramment utilisés, citons les dispositifs de mesure inertiels tels que l’IMU, le système de référence d’attitude et de cap (AHRS), le système de navigation inertielle (INS), les accéléromètres, les gyroscopes et les magnétomètres. Les encodeurs rotatifs ajoutés au véhicule sont souvent utilisés pour l’odométrie.
Lorsque la localisation échoue, une possible contre-mesure de récupération consiste à garder en mémoire un point de repère en tant qu’image-clé à partir d’un lieu précédemment visité. Lors de la recherche d’un point de repère, un processus d’extraction de caractéristiques est appliqué de façon à permettre de balayer l'environnement à grande vitesse. Certaines méthodes basées sur les caractéristiques d’images incluent un modèle de sac de caractéristiques (BoF) et de sac de mots visuels (BoVW). Plus récemment le Deep Learning a été utilisé pour la comparaison des distances au sein des caractéristiques.
3. Coût de calcul élevé associé au traitement d’images, au traitement des nuages de points et à l’optimisation
Le coût de calcul est problématique lors de l’implémentation du SLAM sur un véhicule. Le calcul est généralement réalisé sur des microprocesseurs embarqués compacts à faible consommation ayant une puissance de traitement limitée. Pour une localisation précise, il est essentiel d’exécuter le traitement d’images et la mise en correspondance des nuages de points à haute fréquence. En outre, les calculs d’optimisation comme la fermeture de boucle sont des processus intensifs en calcul. La difficulté est de trouver comment exécuter de tels traitements coûteux en calcul sur des microprocesseurs embarqués.
Une contre-mesure consiste à exécuter différents processus en parallèle. Des processus tels que l’extraction de caractéristiques, un prétraitement nécessaire pour la mise en correspondance, se prêtent plutôt bien à la parallélisation. L’utilisation de CPU multicœurs pour le traitement, du calcul Single Instruction, Multiple Data (SIMD) et des GPU embarqués peuvent encore améliorer la vitesse, dans certains cas. De plus, puisque l’optimisation du graphe de pose peut être réalisée sur un cycle relativement long, réduire sa priorité et l'exécuter à intervalles réguliers peut également améliorer les performances.
MATLAB® propose des fonctionnalités permettant d’implémenter des applications SLAM pour votre système cible et de recourir à de nombreuses contre-mesures pour contourner les difficultés techniques connues du SLAM.
Traitement de l’image et des signaux provenant des capteurs pour le front-end SLAM
- Traitement LiDAR 2D et 3D et mise en correspondance des données de mesure avec Lidar Toolbox™ et Navigation Toolbox™
- Traitement des nuages de points 3D et recalage des nuages de points
- Détection de fermetures de boucle utilisant les méthodes de sac de caractéristiques et de sac de mots visuels
- Détection d’objet et segmentation sémantique avec le Deep Learning
- Génération de carte avec des nuages de points LiDAR 3D en utilisant Automated Driving Toolbox™
- Fusion de capteurs pour la localisation et le pistage multi-objets avec Sensor Fusion and Tracking Toolbox™
Graphes de pose 2D / 3D pour le back-end SLAM
- Générer des graphes de pose 2D / 3D avec Navigation Toolbox
- Optimisation d’un graphe de pose basé sur les contraintes des nœuds et des arêtes
- Ajustement de faisceau avec Computer Vision Toolbox
Grilles d’occupation avec l’application SLAM Map Builder
- Importer des données LiDAR 2D depuis l'espace de travail MATLAB ou des fichiers rosbag et créer des grilles d’occupation
- Trouver et modifier les fermetures de boucle, puis exporter la carte sous forme de grille d’occupation pour la planification de trajectoires
Utiliser la carte de sortie des algorithmes SLAM pour la planification de trajectoires et les systèmes de contrôles
- Implémenter des algorithmes de planification de trajectoires comme RRT ou Hybrid A* avec Navigation Toolbox
- Envoyer des commandes de contrôle pour suivre la trajectoire planifiée avec évitement des obstacles
Accélérer les processus intensifs en calcul tels que ceux liés au traitement d’images en les exécutant en parallèle avec Parallel Computing Toolbox™
Déployer des nœuds ROS autonomes et communiquer avec votre robot compatible ROS à partir de MATLAB et Simulink® avec ROS Toolbox
Déployer vos algorithmes de traitement d’images et de navigation développés dans MATLAB et Simulink sur des microprocesseurs embarqués avec MATLAB Coder™ et GPU Coder™
En savoir sur la méthode SLAM
SLAM LiDAR
- Implémenter des algorithmes de localisation et de cartographie simultanées (SLAM) avec MATLAB (2:23)
- SLAM avec des données de mesure LiDAR 2D
- Créer une carte à partir de données LiDAR avec la localisation et la cartographie simultanées (SLAM)
- Créer une carte et localiser grâce à la mise en correspondance de segments
- Algorithme SLAM sur des données LiDAR aériennes avec des descripteurs FPFH
- Cartographie pour les robots mobiles et les UGV (10:01)
SLAM avec l'environnement de simulation Unreal Engine