SLAM (localisation et cartographie simultanées)

Introduction à la méthode SLAM

Fonctionnement, types d'algorithmes SLAM et comment débuter

La méthode SLAM (localisation et cartographie simultanées) 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 donnent les moyens à un véhicule de cartographier des environnements inconnus. Les ingénieurs utilisent les informations de la carte pour réaliser des tâches telles que la planification de trajectoires et l’évitement d’obstacles.

Importance de la méthode SLAM

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, les algorithmes SLAM sont désormais utilisés 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 un algorithme 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

Avantages de la méthode SLAM pour les robots de nettoyage

Les algorithmes SLAM sont utiles dans de nombreuses autres applications, comme le pilotage d'une flotte de robots mobiles chargés d'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.

Fonctionnement de la méthode SLAM

De manière générale, 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 SLAM comprenant les blocs de base pour le traitement front-end et back-end.

Workflow de la méthode SLAM

Types de méthodes SLAM

Pour en savoir plus sur le composant de traitement front-end, explorez différentes méthodes SLAM telles que le SLAM visuel, le SLAM LiDAR et le SLAM multicapteur.

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 multicaméras) et des caméras RGB-D (caméras de profondeur et ToF).

Cette méthode peut être implémentée pour un coût faible 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.

L'algorithme de SLAM est dit monoculaire lorsque le vSLAM n'utilise qu'une seule caméra comme capteur, ce qui complique la détermination 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 d'autres capteurs, 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.

SLAM visuel monoculaire utilisant un ensemble de données TUM RGB-D.

vSLAM monoculaire

Texte alternatif : Reconstruction dense par SLAM visuel stéréo.

vSLAM stéréo

SLAM visuel RGB-D utilisant un ensemble de données TUM RGB-D.

vSLAM 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, aux caméras 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 nuages 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 efficace pour la cartographie avec des algorithmes SLAM. Le mouvement est estimé de manière séquentielle en recalant les nuages de points. Ce mouvement calculé (la distance parcourue) permet de localiser le véhicule. Pour estimer la transformation relative entre les nuages de points, vous pouvez utiliser des algorithmes de recalage comme ICP (Iterative Closest Point) et NDT (Normal Distributions Transform). Vous pouvez également utiliser une approche basée sur les caractéristiques, notamment LOAM (Lidar Odometry And Mapping) ou FGR (Fast Global Registration), axée sur les caractéristiques FPFH. Les cartes de nuages de points 2D ou 3D peuvent être représentées sous forme de cartes quadrillées ou de cartes voxel.

En raison de ces difficultés, la localisation des véhicules autonomes peut nécessiter de fusionner d'autres mesures, 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 basé sur les nuages de points 3D est couramment employé pour la conduite autonome et les drones.

Cartographiez la zone intérieure en utilisant le SLAM LiDAR 2D et un graphe factoriel.

SLAM avec LiDAR 2D

Créez une carte à partir de données LiDAR 3D grâce au SLAM.

SLAM avec LiDAR 3D

SLAM multicapteur

Le SLAM multicapteur est un type d'algorithme SLAM qui utilise toute une variété de capteurs, notamment des caméras, des IMU (centrales inertielles), des GPS, des LiDAR, des radars et autres, pour améliorer la précision et la robustesse des algorithmes SLAM. En utilisant les points forts complémentaires de différents capteurs et en atténuant leurs limitations individuelles, le SLAM multicapteur peut offrir des performances supérieures. Par exemple, alors que les caméras fournissent des données visuelles détaillées, elles peuvent s'avérer moins performantes dans des scénarios de faible luminosité ou à grande vitesse ; le LiDAR, quant à lui, fonctionne de manière constante dans diverses conditions d'éclairage, mais peut rencontrer des difficultés avec certains matériaux de surface. Le SLAM multicapteur offre une solution plus fiable que ses homologues monocapteurs en intégrant des données provenant de différentes sources. Le graphe factoriel est un cadre modulaire et adaptable qui intègre divers types de capteurs, tels que des caméras, des IMU et des GPS. De plus, le graphe factoriel prend en charge des entrées de capteur personnalisées (comme le LiDAR et l'odométrie) en convertissant les données en facteurs de pose. Cette fonctionnalité permet différentes configurations de SLAM multicapteur, telles que le SLAM visuel-inertiel monoculaire et le SLAM LiDAR-IMU.

Difficultés courantes avec le SLAM

Bien que les algorithmes SLAM soient utilisés pour certaines applications pratiques, plusieurs difficultés techniques entravent la généralisation de leur adoption. 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

Les algorithmes SLAM estiment 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.

Impossibilité de revenir au point de départ (carte déformée)

Exemple de création d’un graphe de pose et de minimisation des erreurs.

Pour le SLAM multicapteur, un calibrage précis des capteurs est essentiel. Les divergences ou les erreurs de calibrage peuvent entraîner des inexactitudes de fusion des capteurs et compromettre la fonctionnalité globale du système. L'optimisation du graphe factoriel peut également faciliter le processus de calibrage, notamment l'alignement des systèmes caméra-IMU.

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.

Exemple de création d’un graphe de pose et de minimisation des erreurs.

2. Echec de localisation et perte de position sur la carte

La cartographie à partir d’images 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 de 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 d'algorithmes SLAM sur le hardware d'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, de calculs SIMD (Single Instruction Multiple Data) et de GPU embarqués, peut encore améliorer les vitesses, 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.

SLAM avec MATLAB

Traitement d'images et de signaux provenant des capteurs pour le front-end SLAM :

Graphes de pose 2D/3D pour le back-end SLAM :

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

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™.