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.
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.
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.
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.
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.
vSLAM monoculaire
vSLAM stéréo
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.
SLAM avec LiDAR 2D
SLAM avec LiDAR 3D
Pour continuer à explorer ce sujet
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.
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.
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.
Pour continuer à explorer ce sujet
Traitement d'images et de 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ération 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
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™.
Ressources
Développez vos connaissances grâce à la documentation, aux exemples, aux vidéos et plus encore.
Sujets connexes
Explorez des sujets similaires pour lesquels on utilise couramment les produits MATLAB et Simulink.
Utilisez la carte de sortie des algorithmes SLAM pour la planification de trajectoires et les systèmes de contrôles.
- Implémentez des algorithmes de planification de trajectoires comme RRT ou Hybrid A* avec Navigation Toolbox.
- Envoyez des commandes de contrôle pour suivre la trajectoire planifiée avec évitement des obstacles.
Accélérez 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™.
Consultez l'e-book Développer des robots mobiles autonomes avec MATLAB et Simulink.
Version d'essai gratuite de 30 jours
CommencerSélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)