Maison > Article > Périphériques technologiques > GSLAM | Une architecture générale et un benchmark
J'ai soudainement découvert un article vieux de 19 ans
GSLAM : A General SLAM Framework and Benchmark
Code source ouvert : https://github.com/zdzhaoyong/GSLAM
Allez directement au texte intégral pour ressentir la qualité de ce travail ~
La technologie SLAM a récemment remporté de nombreux succès et a attiré l'attention des entreprises de haute technologie. Cependant, la question de savoir comment s'interfacer avec les algorithmes existants ou émergents pour effectuer efficacement des analyses comparatives en termes de vitesse, de robustesse et de portabilité reste une question. Dans cet article, une nouvelle plateforme SLAM appelée GSLAM est proposée, qui fournit non seulement des fonctions d'évaluation mais fournit également aux chercheurs des outils utiles pour développer rapidement leurs propres systèmes SLAM. La contribution fondamentale du GSLAM est universelle. Interface SLAM multiplateforme et entièrement open source conçue pour gérer l'interaction des ensembles de données d'entrée, des implémentations SLAM, des visualisations et des applications dans un cadre unifié. Grâce à cette plate-forme, les utilisateurs peuvent implémenter leurs propres fonctions sous forme de plug-ins pour améliorer les performances du SLAM et pousser davantage l'application du SLAM vers des applications pratiques.
Depuis les années 1980, la localisation et la cartographie simultanées (SLAM) sont un sujet de recherche populaire dans le domaine de la vision par ordinateur et de la robotique. SLAM fournit des fonctionnalités essentielles pour de nombreuses applications nécessitant une navigation en temps réel, telles que la robotique, les véhicules aériens sans pilote (UAV), la conduite autonome et la réalité virtuelle et augmentée. Ces dernières années, la technologie SLAM s'est développée rapidement et divers systèmes SLAM ont été proposés, notamment des systèmes SLAM monoculaires (basés sur des points caractéristiques, des méthodes directes et semi-directes), des systèmes SLAM multicapteurs (méthodes RGBD, binoculaires et assistées par inertie). ) et les systèmes SLAM basés sur l'apprentissage (méthodes supervisées et non supervisées).
Cependant, avec le développement rapide de la technologie SLAM, presque tous les chercheurs se concentrent sur la théorie et la mise en œuvre de leurs propres systèmes SLAM, ce qui rend difficile l'échange d'idées et la mise en œuvre d'une migration vers d'autres systèmes. Cela entrave l’application rapide de la technologie SLAM dans divers domaines industriels. En outre, il existe actuellement de nombreuses implémentations différentes de systèmes SLAM, et la manière de comparer efficacement la vitesse, la robustesse et la portabilité reste un problème. Récemment, Nardi et al. et Bodin et al. ont proposé un système de référence SLAM unifié pour mener des études expérimentales quantitatives, comparables et vérifiables et également explorer les compromis entre différents systèmes SLAM. Ces systèmes facilitent la réalisation d'expériences d'évaluation à l'aide d'ensembles de données et de modules d'évaluation métriques.
Étant donné que les systèmes existants ne fournissent que des références d'évaluation, cet article estime qu'il est possible d'établir une plate-forme pour servir l'ensemble du cycle de vie des algorithmes SLAM, y compris les étapes de développement, d'évaluation et d'application. De plus, le SLAM basé sur l'apprentissage profond a fait des progrès significatifs ces dernières années, il est donc nécessaire de créer une plate-forme prenant en charge non seulement C++ mais également Python pour mieux prendre en charge l'intégration de la géométrie et des systèmes SLAM basés sur l'apprentissage profond. Par conséquent, dans cet article, une nouvelle plate-forme SLAM est présentée qui fournit non seulement des capacités d'évaluation, mais fournit également aux chercheurs des outils utiles pour développer rapidement leurs propres systèmes SLAM. Grâce à cette plateforme, les fonctions couramment utilisées sont fournies sous forme de plug-ins, afin que les utilisateurs puissent les utiliser directement ou créer leurs propres fonctions pour de meilleures performances. On espère que cette plateforme pourra promouvoir davantage l’application pratique des systèmes SLAM. En résumé, les principales contributions de cet article sont les suivantes :
Ce qui suit présente d'abord l'interface du framework GSLAM et explique le principe de fonctionnement de GSLAM. Deuxièmement, trois composants pratiques sont introduits, à savoir l'estimateur, l'optimiseur et le vocabulaire. Ensuite, différentes implémentations SLAM populaires sont évaluées à l'aide du cadre GSLAM en utilisant plusieurs ensembles de données publiques typiques. Enfin, nous résumons ces travaux et attendons avec impatience les futures orientations de recherche.
La technologie SLAM est utilisée pour créer des cartes dans des environnements inconnus et positionner des capteurs sur la carte, se concentrant principalement sur les opérations en temps réel. Les premiers SLAM étaient principalement basés sur le filtrage de Kalman étendu (EKF). Les paramètres de mouvement de 6 degrés de liberté et des repères 3D sont représentés de manière probabiliste sous la forme d'un vecteur d'état unique. La complexité de l'EKF classique augmente quadratiquement avec l'augmentation du nombre de points de repère, limitant son évolutivité. Ces dernières années, la technologie SLAM s'est développée rapidement et de nombreux systèmes SLAM visuels monoculaires ont été proposés, notamment des méthodes directes basées sur des points caractéristiques et des méthodes semi-directes. Cependant, les systèmes SLAM monoculaires manquent d'informations sur l'échelle et ne peuvent pas gérer les situations de rotation pure. C'est pourquoi d'autres systèmes SLAM multicapteurs, notamment les méthodes RGBD, binoculaires et assistées par inertie, ont émergé pour améliorer la robustesse et la précision.
Bien qu'un grand nombre de systèmes SLAM aient été proposés, il y a eu peu de travaux sur l'unification des interfaces de ces algorithmes et aucune comparaison complète de leurs performances. De plus, les implémentations de ces algorithmes SLAM sont souvent publiées sous forme d'exécutables autonomes plutôt que de bibliothèques, et ne sont souvent conformes à aucune structure standard.
Récemment, l'odométrie visuelle (VO) supervisée et non supervisée basée sur l'apprentissage profond a proposé de nouvelles idées par rapport aux méthodes traditionnelles basées sur la géométrie. Cependant, optimiser davantage la cohérence de plusieurs images clés n’est toujours pas facile. GSLAM fournit des outils qui peuvent aider à obtenir une meilleure cohérence globale. Grâce à ce cadre, il est plus facile de visualiser ou d'évaluer les résultats et de les appliquer davantage à divers secteurs industriels.
Dans le domaine de la robotique et des ordinateurs, le système robotique (ROS) fournit une méthode de communication très pratique entre les nœuds et est privilégié par la plupart des chercheurs en robotique. De nombreuses implémentations SLAM fournissent des wrappers ROS pour s'abonner aux données des capteurs et publier les résultats de visualisation. Cependant, il n’unifie pas les entrées et les sorties de la mise en œuvre du SLAM, ce qui rend difficile l’évaluation plus approfondie des différents systèmes SLAM.
Inspiré de l'architecture de message ROS, GSLAM implémente une classe d'utilitaires de communication inter-processus similaire appelée Messenger. Cela fournit une alternative au ROS dans l'implémentation SLAM et maintient la compatibilité, c'est-à-dire que tous les messages définis par ROS sont pris en charge dans le cadre et que les wrappers ROS sont implémentés naturellement. Grâce à la conception en cours, les messages sont livrés sans sérialisation ni transfert de données, et les messages peuvent être envoyés sans délai et sans frais supplémentaires. Dans le même temps, la charge utile d'un message ne se limite pas aux messages définis par ROS, mais peut également être n'importe quelle structure de données copiable. En outre, non seulement il fournit des capacités d'évaluation, mais il fournit également aux chercheurs des outils utiles pour développer et intégrer rapidement leurs propres algorithmes SLAM.
Il existe actuellement plusieurs systèmes de référence SLAM, notamment le benchmark KITTI, le benchmark TUM RGB-D et l'ensemble de données de référence ICL-NUIM RGB-D. Ces systèmes fournissent uniquement des fonctions d'évaluation. De plus, SLAMBench2 étend ces benchmarks aux algorithmes et aux ensembles de données, obligeant les utilisateurs à rendre les implémentations publiées compatibles avec SLAMBench2 à des fins d'évaluation, ce qui est difficile à étendre à davantage de domaines d'application. Contrairement à ces systèmes, la plateforme GSLAM proposée dans cet article fournit une solution qui peut servir tout le cycle de vie de la mise en œuvre du SLAM, du développement à l'évaluation en passant par l'application. Fournit aux chercheurs des outils utiles pour développer rapidement leurs propres systèmes SLAM et développer davantage des visualisations, des évaluations et des applications basées sur une interface unifiée.
Le framework du GSLAM est illustré dans la figure. Dans l'ensemble, l'interface est conçue pour gérer l'interaction de trois parties.
Le framework est conçu pour être compatible avec une variété de différents types d'implémentations SLAM, y compris, mais sans s'y limiter, l'odométrie inertielle visuelle monoculaire, binoculaire, RGBD et multi-caméras avec fusion multi-capteurs. Les plates-formes d'apprentissage profond modernes et les développeurs préfèrent coder en Python, c'est pourquoi GSLAM fournit des liaisons Python, permettant aux développeurs d'implémenter SLAM en Python et de l'appeler en utilisant GSLAM, ou d'utiliser Python pour appeler une implémentation SLAM basée sur C++. De plus, JavaScript est pris en charge pour les utilisations Web.
Certaines structures de données couramment utilisées par les interfaces SLAM incluent le réglage/lecture des paramètres, le format d'image, la transformation d'attitude, le modèle de caméra et la structure de données cartographiques. Ce qui suit est une brève introduction à quelques classes d’interface de base.
Paramter Setting
GSLAM utilise une petite classe d'analyse et de configuration de paramètres Svar, qui contient uniquement un fichier d'en-tête, s'appuie sur C++11 et possède les fonctionnalités suivantes :
a Analyse des paramètres et chargement de la configuration. Informations d'aide. Semblables aux outils d'analyse de paramètres populaires tels que Google gflags, les configurations de variables peuvent être chargées à partir d'arguments de ligne de commande, de fichiers et de l'environnement système. Les utilisateurs peuvent également définir différents types de paramètres et fournir des informations d'introduction, qui seront affichées dans le document d'aide.
b. Un petit langage de script qui prend en charge les variables, les fonctions et les instructions conditionnelles pour rendre les fichiers de configuration plus puissants.
c. Liaison et partage de variables thread-safe. Il est recommandé de lier les variables fréquemment utilisées à des pointeurs ou des références, ce qui offre non seulement de l'efficacité mais aussi de la commodité.
d, définition de fonction simple et appel depuis C++ ou script pur. Les liaisons entre les commandes et les fonctions aident les développeurs à découpler les dépendances de fichiers.
e. Prend en charge la représentation arborescente, ce qui signifie que les configurations peuvent être facilement chargées ou enregistrées à l'aide des formats XML, JSON et YAML.
Messagerie intra-processus
Étant donné que ROS fournit une méthode de communication très pratique entre les nœuds, elle est privilégiée par la plupart des chercheurs en robotique. Inspiré de l'architecture de message ROS2, GSLAM implémente une classe d'utilitaires de communication inter-processus similaire appelée Messenger. Cela fournit une alternative au ROS dans l’implémentation SLAM tout en maintenant la compatibilité. Grâce à sa conception inter-processus, Messenger est capable de publier et de s'abonner à n'importe quel cours sans frais supplémentaires. Ce qui suit est une introduction à d'autres fonctions :
a. L'interface adopte le style ROS, qui est facile à utiliser pour les utilisateurs. Et il prend en charge tous les messages définis par ROS, ce qui signifie que le remplacement du système de messagerie ROS d'origine nécessite très peu de travail.
b. Puisqu'il n'y a pas de sérialisation ni de transfert de données, les messages peuvent être envoyés sans délai et sans frais supplémentaires. Dans le même temps, la charge utile d'un message ne se limite pas aux messages définis par ROS, mais prend également en charge toute structure de données copiable.
c. Le code source comprend uniquement des fichiers d'en-tête basés sur C++11, sans dépendances supplémentaires, ce qui le rend portable.
d.API est thread-safe et prend en charge les notifications conditionnelles multithread lorsque la taille de la file d'attente est supérieure à zéro. Avant que l'éditeur et l'abonné ne se connectent, le nom du sujet et la structure des données RTTI sont vérifiés pour garantir qu'ils sont appelés correctement.
Transformation 3D
Pour la partie rotation, vous avez le choix entre plusieurs représentations, notamment les matrices, les angles d'Euler, les quaternions unitaires et l'algèbre de Lie donc (3). Pour une transformation donnée, n’importe lequel d’entre eux peut être utilisé pour la représenter et peut être converti l’un dans l’autre. Cependant, lorsque l’on considère des transformations multiples et une optimisation multiple, une attention particulière doit être portée à la représentation choisie. La représentation matricielle est sur-paramétrée à l'aide de 9 paramètres, alors que la rotation n'a que 3 degrés de liberté (DOF). La représentation angulaire d'Euler utilise trois variables et est facile à comprendre, mais elle se heurte au problème du verrouillage universel et n'est pas pratique pour les transformations multiples. Les quaternions unitaires constituent le moyen le plus efficace d'effectuer plusieurs rotations, tandis que les algèbres de Lie sont une représentation courante pour effectuer des optimisations courantes.
De même, les algèbres de Lie se(3) et sim(3) des corps rigides et les transformations de similarité sont définies. GSLAM utilise des quaternions pour représenter la partie rotation et fournit des fonctions pour convertir une représentation en une autre. Le tableau 1 montre l'implémentation de la transformation et la compare à trois autres implémentations variées (Sophus, TooN et Ceres). Étant donné que l'implémentation de Ceres utilise la représentation de l'axe angulaire, l'exponentielle et le logarithme de la rotation ne sont pas requis. Comme le montre le tableau, l'implémentation de GSLAM fonctionne mieux car elle utilise des quaternions et a une meilleure optimisation, tandis que TooN utilise une implémentation matricielle et fonctionne mieux en termes de transformations de points.
Format d'image
Le stockage et la transmission des données d'image sont l'une des fonctions les plus importantes du SLAM visuel. Pour améliorer l'efficacité et la commodité, GSLAM utilise une structure de données GImage, compatible avec cv::Mat. Il dispose d'un compteur à pointeur intelligent pour garantir que la mémoire est libérée en toute sécurité et peut être transférée facilement sans copie de mémoire. Les pointeurs de données sont alignés pour faciliter l’accélération SIMD (Single Instruction Multiple Data). Les utilisateurs peuvent convertir entre GImage et cv::Mat de manière transparente et sécurisée sans copie de mémoire.
Modèles de caméra
Étant donné que SLAM peut contenir une distorsion radiale et tangentielle due à des imperfections de fabrication, ou des images capturées par des caméras fisheye ou panoramiques, différents modèles de caméra sont proposés pour décrire la projection. GSLAM fournit des implémentations comprenant OpenCV (utilisé par ORB-SLAM), ATAN (utilisé par PTAM) et OCamCalib (utilisé par MultiCol-SLAM). Les utilisateurs peuvent également facilement hériter de ces classes et implémenter d'autres modèles de caméra tels que les modèles Kannala-Brandt et panoramiques isométriques.
Structure des données cartographiques
Pour la mise en œuvre du SLAM, l'objectif est de localiser et de générer des cartes en temps réel. GSLAM recommande d'utiliser une structure de données cartographiques unifiée, composée de plusieurs fenêtres cartographiques et points cartographiques. Cette structure de données convient à la plupart des systèmes SLAM visuels existants, y compris les méthodes basées sur les fonctionnalités ou directes.
Les cadres cartographiques sont utilisés pour représenter l'état de localisation à différents moments, y compris diverses informations ou résultats d'estimation capturés par des capteurs, notamment des données brutes IMU ou GPS, des informations de profondeur et des modèles de caméra. L'implémentation SLAM estime les relations entre eux et les connexions entre eux forment un graphe de pose.
Les points de la carte sont utilisés pour représenter l'environnement tel qu'observé par les images, généralement utilisées par les méthodes basées sur les fonctionnalités. Cependant, un point de carte peut représenter non seulement un point clé, mais également un GCP (Ground Control Point), une ligne de bord ou un objet 3D. Leur correspondance avec les cadres cartographiques forme un graphe d'observation, souvent appelé graphe de faisceaux.
Pour faciliter la mise en œuvre d'un système SLAM, GSLAM fournit une classe utilitaire. Cette section présentera brièvement trois modules optimisés, à savoir Estimateur, Optimiseur et Vocabulaire.
Les calculs purement géométriques restent un problème fondamental qui nécessite des solutions en temps réel puissantes et précises. Les algorithmes SLAM visuels traditionnels ou les solutions visuo-inertielles modernes s'appuient sur des algorithmes de vision géométrique pour l'initialisation, la relocalisation et la fermeture de boucle. OpenCV fournit plusieurs algorithmes géométriques et Kneip fournit une boîte à outils pour la vision géométrique, OpenGV, qui se limite aux calculs de pose de caméra. L'estimateur de GSLAM vise à fournir une famille de solveurs de forme fermée couvrant tous les cas et utilise la méthode robuste de cohérence d'échantillonnage aléatoire (RANSAC).
Le Tableau 2 répertorie les algorithmes pris en charge par Estimator. Sur la base des données d'observation fournies, ils sont divisés en trois catégories. L'appariement 2D-2D est utilisé pour estimer les contraintes épipolaires ou homographiques, et les poses relatives peuvent en être décomposées. La 2D-3D correspond à l'estimation de la pose absolue centrale ou non centrale d'un système monoculaire ou multi-caméras, ce qui est le fameux problème PnP. Les fonctions de géométrie 3D telles que l'ajustement de plan et l'estimation des transformations SIM de deux nuages de points sont également prises en charge. La plupart des algorithmes s'appuient sur la bibliothèque open source d'algèbre linéaire Eigen, qui est une bibliothèque d'en-tête uniquement et disponible sur la plupart des plates-formes.
L'optimisation non linéaire est la partie centrale des systèmes SLAM géométriques modernes. En raison de la latitude élevée et de la rareté de la matrice hessienne, les structures graphiques sont utilisées pour modéliser le problème d'estimation complexe du SLAM. Plusieurs frameworks, dont Ceres, G2O et GTSAM, sont proposés pour résoudre des problèmes généraux d'optimisation de graphes. Ces frameworks sont largement utilisés dans différents systèmes SLAM. ORB-SLAM et SVO utilisent G2O pour l'optimisation des BA et des graphes de pose. OKVIS et VINS utilisent Ceres pour l'optimisation des graphiques avec des facteurs IMU, et des fenêtres glissantes sont utilisées pour contrôler la complexité des calculs. Forster et al. ont proposé une méthode d'initialisation visuelle basée sur SVO et ont utilisé GTSAM pour implémenter le backend.
L'optimiseur de GSLAM vise à fournir une interface unifiée pour la plupart des problèmes SLAM non linéaires, tels que le solveur PnP, BA, l'optimisation des graphes de pose. Un plug-in universel pour ces problèmes est implémenté sur la base de la bibliothèque Ceres. Pour des problèmes spécifiques, tels que BA, certaines implémentations plus efficaces, telles que PBA et ICE-BA, sont également disponibles sous forme de plug-ins. Grâce à l'outil d'optimisation, les développeurs peuvent accéder à différentes implémentations à l'aide d'une interface unifiée, en particulier pour les systèmes SLAM basés sur l'apprentissage profond.
La reconnaissance de lieu est l'une des parties les plus importantes du système SLAM, utilisée pour la détection de relocalisation et de bouclage. La méthode Bag of Words (BoW) est largement utilisée dans les systèmes SLAM en raison de son efficacité et de ses excellentes performances. FabMap propose une méthode probabiliste pour la reconnaissance de lieux basée sur l'apparence, utilisée dans des systèmes tels que RSLAM et LSD-SLAM. Puisqu'il utilise des descripteurs à virgule flottante comme SIFT et SURF, DBoW2 crée une arborescence de vocabulaire pour la formation et la détection, prenant en charge les descripteurs binaires et à virgule flottante. Refael a proposé deux versions améliorées de DBoW2, DBoW3 et FBoW, qui simplifient l'interface et accélèrent la formation et le chargement. Par la suite, ORB-SLAM a adopté le descripteur ORB et utilisé DBoW2 pour la détection de boucles, la relocalisation et la correspondance rapide. Par la suite, une série de systèmes SLAM, tels que ORB-SLAM2, VINS-Mono et LDSO, ont utilisé DBoW3 pour la détection de bouclage. Il est devenu l'outil le plus populaire pour mettre en œuvre la reconnaissance de localisation dans les systèmes SLAM.
Inspiré par le travail ci-dessus, GSLAM a implémenté une implémentation uniquement du fichier d'en-tête du vocabulaire DBoW3, qui présente les caractéristiques suivantes :
Le tableau 3 montre la comparaison de quatre bibliothèques de sacs de mots. Dans l'expérience, chaque nœud parent possède 10 nœuds enfants, la détection des fonctionnalités ORB utilise ORB-SLAM et la détection SIFT utilise SiftGPU. Le vocabulaire ORB est utilisé dans les résultats d'implémentation, avec respectivement les niveaux 4 et 6, ainsi qu'un vocabulaire SIFT. FBoW et GSLAM utilisent tous deux le multithreading pour l'apprentissage du vocabulaire. L'implémentation de GSLAM surpasse les autres implémentations dans presque tous les projets, y compris le chargement et la sauvegarde de vocabulaires, la formation de nouveaux vocabulaires, la conversion de listes de descripteurs en vecteurs BoW pour la reconnaissance de lieux et en vecteurs de fonctionnalités pour une correspondance rapide des fonctionnalités. De plus, l'implémentation GSLAM utilise moins de mémoire et alloue moins de blocs de mémoire dynamique, car la principale raison pour laquelle DBoW2 nécessite beaucoup de mémoire est la fragmentation.
Les benchmarks existants exigent que les utilisateurs téléchargent des ensembles de données de test et téléchargent les résultats pour une évaluation de la précision, ce qui n'est pas suffisant pour unifier l'environnement d'exploitation et évaluer des comparaisons équitables de performances. Grâce à l'interface unifiée de GSLAM, l'évaluation des systèmes SLAM devient plus élégante. Avec l'aide de GSLAM, les développeurs peuvent simplement télécharger un plug-in SLAM et effectuer diverses évaluations de la vitesse, du coût de calcul et de la précision dans un environnement dockerisé en utilisant des ressources fixes. Dans cette section, certains ensembles de données et plugins SLAM implémentés seront d'abord présentés. Ensuite, trois implémentations SLAM représentatives sont évaluées en termes de vitesse, de précision, de mémoire et d'utilisation du processeur. Cette évaluation vise à démontrer les possibilités d'implémentation d'un benchmark SLAM unifié avec différents plugins SLAM.
L'exécution d'un système SLAM nécessite généralement des flux de données de capteurs et les configurations correspondantes. Afin de permettre aux développeurs de se concentrer sur le développement des principaux plug-ins SLAM, GSLAM fournit une interface d'ensemble de données standard, et les développeurs n'ont pas besoin de se soucier de l'entrée SLAM. L'entrée du capteur en ligne et les données hors ligne sont fournies via différents plug-ins d'ensemble de données. Le plug-in correct sera chargé dynamiquement en fonction du suffixe de chemin d'ensemble de données donné. La mise en œuvre de l'ensemble de données doit fournir tous les flux de capteurs demandés ainsi que la configuration associée, de sorte qu'aucune configuration supplémentaire n'est requise pour les différents ensembles de données. Tous les différents flux de capteurs sont publiés via Messenger, en utilisant des noms de sujet et des formats de données standard.
GSLAM a implémenté plusieurs plugins d'ensembles de données visuels SLAM populaires, comme le montre le tableau 4. Les utilisateurs peuvent également très facilement implémenter un plugin d'ensemble de données basé sur le noyau GSLAM réservé aux en-têtes, le publier en tant que plugin et le compiler avec l'application.
La figure 2 montre quelques captures d'écran des plugins open source SLAM et SfM exécutés à l'aide du visualiseur Qt intégré. Le framework prend en charge les systèmes SLAM de différentes architectures, notamment les méthodes directes, les méthodes semi-directes, les méthodes basées sur les fonctionnalités et même les méthodes SfM. Les implémentations DSO doivent publier des résultats tels que des nuages de points, des poses de caméra, des trajectoires et des cartes de pose pour une visualisation comme les implémentations basées sur ROS. Les utilisateurs peuvent utiliser un framework unifié pour accéder à différents plug-ins SLAM, et il est très pratique de développer des applications basées sur SLAM basées sur les interfaces C++, Python et Node-JS. Étant donné que de nombreux chercheurs utilisent ROS dans le développement, GSLAM fournit également un plug-in de visualisation ROS pour transmettre de manière transparente les messages définis par ROS et permettre aux développeurs d'exploiter Rviz pour l'affichage ou de continuer à développer d'autres applications basées sur ROS.
Étant donné que la plupart des benchmarks existants ne fournissent que des ensembles de données ou n'ont pas de vérité de base permettant aux utilisateurs de mener leurs propres évaluations, GSLAM fournit un plug-in intégré et des outils de script pour l'évaluation des performances informatiques et de la précision.
La séquence nostructure-texture-near-withloop dans l'ensemble de données TUM RGBD est utilisée dans l'article pour démontrer l'exécution de l'évaluation. Les expériences suivantes utilisent trois plug-ins SLAM monoculaires open source DSO, SVO et ORB-SLAM. Dans toutes les expériences, un ordinateur doté d'un processeur i7-6700, d'un GPU GTX 1060 et de 16 Go de RAM exécutant Ubuntu 16.04 64 bits a été utilisé.
L'évaluation des performances informatiques comprend l'utilisation de la mémoire, le nombre de blocs de mémoire alloués, l'utilisation du processeur et le temps statistique pris pour chaque image, comme le montre la figure 3. Les résultats montrent que SVO utilise le moins de ressources mémoire et CPU et atteint la vitesse la plus rapide. Et comme SVO n’est qu’un odomètre visuel et ne conserve qu’une carte locale au sein de l’implémentation, le coût reste stable. DSO alloue moins de blocs de mémoire, mais consomme plus de 100 Mo de mémoire et croît lentement. Un problème avec DSO est que le temps de traitement augmente considérablement lorsque le nombre d'images descend en dessous de 500. De plus, le traitement des images clés prend encore plus de temps. ORB-SLAM utilise le plus de ressources CPU, le temps de calcul est stable, mais l'utilisation de la mémoire augmente rapidement, et il alloue et libère un grand nombre de blocs mémoire car son BA utilise la bibliothèque G2O et n'utilise pas la méthode d'optimisation incrémentielle.
La figure 4 montre les résultats de l'évaluation de la trajectoire d'odométrie. Comme le montre la figure, SVO est plus rapide mais a une dérive plus importante, tandis qu'ORBSLAM atteint la plus grande précision en termes d'erreur d'attitude absolue (APE). Étant donné que l'évaluation complète est une application plug-in enfichable, davantage de mesures d'évaluation, telles que la précision des nuages de points, peuvent être réimplémentées.
Cet article présente une nouvelle plateforme SLAM générale appelée GSLAM, qui propose un accompagnement depuis le développement, l'évaluation jusqu'à l'application. Grâce à cette plateforme, des boîtes à outils couramment utilisées sont fournies sous forme de plug-ins, et les utilisateurs peuvent également développer facilement leurs propres modules. Pour rendre la plateforme plus facile à utiliser, rendez l'interface dépendante uniquement de C++11. De plus, des interfaces Python et JavaScript sont fournies pour mieux intégrer le SLAM traditionnel et le SLAM basé sur le deep learning, ou effectuer des opérations distribuées sur le Web.
Dans la recherche suivante, davantage d'implémentations, de documents et de codes de démonstration SLAM seront fournis pour un apprentissage et une utilisation faciles. De plus, l'intégration du SLAM traditionnel et du SLAM basé sur l'apprentissage profond sera fournie pour explorer davantage les possibilités inconnues des systèmes SLAM.
La page d'accueil de cet ouvrage est la suivante :
GSLAM : Page principale
Cela ressemble à un cadre pour apprendre les principes de chaque partie du SLAM~
Lien original : https://mp.weixin .qq.com/s/ PCxhqhK3t1soN5FI0w9NFw
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!