Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Faciliter le développement d'applications SLAM visuelles

La localisation et la cartographie simultanées (SLAM) décrivent le processus par lequel un appareil, tel qu'un robot, utilise les données des capteurs pour créer une image de son environnement et déterminer simultanément sa position dans cet environnement. Il existe de nombreuses manières différentes de mettre en œuvre le SLAM, à la fois en termes d'algorithmes logiciels déployés et de capteurs utilisés, qui peuvent inclure des caméras, un sonar, un radar, un LiDAR et des données de position de base, à l'aide d'une unité de mesure inertielle (IMU).

La disponibilité de petites caméras bon marché a stimulé la popularité des systèmes SLAM visuels monoculaires, qui utilisent une seule caméra standard pour effectuer les fonctions de localisation et de cartographie. Ces systèmes SLAM visuels peuvent être trouvés dans une large gamme de robots, y compris les rovers et atterrisseurs de Mars , robots de terrain dans l'agriculture, drones et, potentiellement, véhicules autonomes. Les systèmes Visual SLAM offrent également des avantages là où le GPS n'est pas disponible, par exemple dans les zones intérieures ou dans les grandes villes, où l'obstruction par les bâtiments réduit la précision du GPS.

Cet article décrit le processus SLAM visuel de base, couvrant les modules et les algorithmes impliqués dans la reconnaissance et le suivi d'objets et la correction d'erreurs. Les avantages de décharger le calcul et la fonctionnalité SLAM vers des DSP dédiés sont discutés et le kit de développement CEVA-SLAM SDK est utilisé comme une illustration des avantages qui peuvent être obtenus en suivant cette voie de développement.

SLAM direct et basé sur les fonctionnalités

Il existe de nombreuses approches différentes pour la mise en œuvre du SLAM visuel, mais toutes utilisent la même méthode globale, en suivant des points de consigne à travers des images de caméra consécutives pour trianguler leur position 3D tout en utilisant simultanément ces informations pour approximer la pose de la caméra. En parallèle, les systèmes SLAM utilisent en permanence des algorithmes complexes pour minimiser la différence entre les points projetés et réels - l'erreur de reprojection.

Les systèmes SLAM visuels peuvent être classés comme directs ou basés sur des fonctionnalités, selon la manière dont ils utilisent les informations d'une image reçue. Les systèmes SLAM directs comparent des images entières les unes aux autres, fournissant des informations riches sur l'environnement, permettant la création d'une carte plus détaillée mais au détriment de l'effort et de la vitesse de traitement. Cet article se concentre sur les méthodes SLAM basées sur les caractéristiques, qui recherchent dans l'image des caractéristiques définies, telles que des coins et des « blobs » et basent l'estimation de l'emplacement et de l'environnement uniquement sur ces caractéristiques. Bien que les méthodes SLAM basées sur les fonctionnalités éliminent des quantités importantes d'informations précieuses de l'image, le compromis est un processus simplifié qui est plus facile à mettre en œuvre sur le plan informatique.


Figure 1 : SLAM direct ou basé sur les fonctionnalités. (Source :https://vision.in.tum.de/research/vslam/lsdslam)

Le processus SLAM visuel

Les principales étapes du SLAM basé sur les caractéristiques sont l'extraction d'un ensemble de caractéristiques éparses à partir des images d'entrée, la mise en correspondance des caractéristiques obtenues à partir de différentes poses de caméra et la résolution du problème SLAM en minimisant l'erreur de reprojection des caractéristiques (la différence entre l'emplacement suivi d'un point et où on s'attend à ce que l'estimation de la pose de la caméra soit donnée, sur tous les points).

Ces étapes sont accomplies à l'aide d'un ensemble de blocs de construction, décrits ci-dessous, qui sont communs à toutes les implémentations SLAM basées sur les fonctionnalités. Visual SLAM est un domaine en évolution générant d'importantes recherches et divers algorithmes ont été développés et proposés pour chaque module, chacun ayant des avantages et des inconvénients, en fonction de la nature exacte de la mise en œuvre du SLAM. La description ci-dessous mentionne un sous-ensemble des algorithmes actuels les plus populaires.

L'extraction de caractéristiques, figure 2, est un processus qui représente efficacement des informations utiles dans une image, telles que des coins, des bords, des gouttes et des objets plus complexes tels que des portes et des fenêtres en tant que vecteur de caractéristiques compact. Les algorithmes d'extraction de caractéristiques populaires incluent la différence de gaussien (DoG) et les caractéristiques du test de segment accéléré (FAST9), une méthode de détection de coin bien adaptée au traitement vidéo en temps réel en raison de son efficacité de calcul.


Figure 2 :Extraction de caractéristiques SLAM. (Source :https://medium.com/towards-artificial-intelligence/oriented-fast-and-rotated-brief-orb-1da5b2840768)

Dans Feature Description, la région autour de chaque caractéristique extraite est convertie en un descripteur compact qui peut être comparé à d'autres descripteurs. Les caractéristiques peuvent être décrites, par exemple, par leur apparence ou par l'intensité des pixels dans un patch autour du point caractéristique. ORB et FREAK sont des exemples d'algorithmes de descripteur de caractéristiques populaires.

Dans Feature Matching, les entités extraites (descripteurs) sont mises en correspondance sur plusieurs cadres. Les caractéristiques sont mises en correspondance sur deux images en comparant toutes les caractéristiques de la première image à toutes les caractéristiques de la deuxième image. La fonction de distance de Hamming est couramment utilisée dans la mise en correspondance de caractéristiques car elle peut être effectuée efficacement dans le matériel à l'aide des fonctions XoR et count-bits sur des ensembles de bits de données tels que des vecteurs. La distance de Hamming donne une indication du nombre de bits différents dans deux vecteurs, ce qui signifie que plus le score est bas, plus la correspondance est proche.

La fermeture de boucle est l'étape finale du processus SLAM et garantit une solution SLAM cohérente, en particulier lorsque les opérations de localisation et de cartographie sont menées sur une longue période. La fermeture de boucle observe la même scène par trames non adjacentes et ajoute une contrainte entre elles afin de réduire la dérive accumulée dans l'estimation de pose. Comme pour les autres modules SLAM visuels, une variété d'algorithmes ont été développés pour la fermeture de boucle, les plus populaires étant l'ajustement de paquet, le filtrage de Kalman et le filtrage de particules.

Les algorithmes VSLAM sont un domaine de recherche actif et ce qui précède sont des exemples d'un nombre croissant de techniques qui ont émergé ces dernières années. Les méthodes SLAM basées sur les fonctionnalités sont préférables pour les solutions intégrées car elles permettent des vitesses de traitement plus rapides et une utilisation plus efficace de la bande passante mémoire. De plus, les solutions basées sur les fonctionnalités présentent des niveaux de robustesse plus élevés dans un large éventail de conditions, notamment des changements rapides de luminosité, des niveaux de luminosité faibles, des mouvements rapides de caméra et des occlusions.

Le choix d'un algorithme spécifique est déterminé par les caractéristiques de l'application particulière, y compris les types de cartes, les types de capteurs, le degré de précision requis et bien d'autres. De nombreux systèmes SLAM intègrent une combinaison d'algorithmes qui répondent le mieux au plus large éventail de scénarios.

Défis de mise en œuvre du SLAM

Le traitement SLAM visuel est extrêmement gourmand en calculs, imposant des charges élevées sur les implémentations traditionnelles basées sur le processeur, entraînant une consommation d'énergie excessive et des fréquences d'images faibles, avec des impacts conséquents sur la précision et la durée de vie de la batterie. Les développeurs d'applications SLAM émergentes ont besoin de solutions offrant des niveaux d'intégration plus élevés et une consommation d'énergie réduite. Ils utilisent de plus en plus des unités de traitement de vision (VPU) dédiées dans leurs conceptions. Un VPU est un type de microprocesseur avec une architecture conçue spécifiquement pour l'accélération des tâches de vision industrielle, telles que le SLAM, et qui peut être utilisé pour décharger le traitement de la vision du CPU principal de l'application. Les VPU, tels que les CEVA CEVA-XM6, figure 3, incluent des fonctionnalités telles qu'une faible consommation d'énergie, des ALU puissantes, des capacités MAC puissantes, un accès mémoire à haut débit et des instructions de vision dédiées. Les appareils prendront également en charge les puissantes capacités de virgule flottante requises par les applications de traitement d'images.


Figure 3 :Unité de traitement de vision CEVA XM6. (Source :CEVA)

Même avec les VPU, cependant, le développeur visuel SLAM doit encore surmonter plusieurs défis car la création de code efficace pour les différents modules SLAM est une entreprise non triviale et il peut également être difficile d'interfacer le VPU avec le processeur principal.

La création de code efficace est cruciale dans les applications embarquées, où la vitesse d'exécution et la consommation d'énergie doivent être optimisées. Le codage des modules SLAM visuels est une tâche complexe, nécessitant potentiellement la récupération, le stockage et la manipulation de grandes quantités de données. Dans la correspondance de caractéristiques, par exemple, les descripteurs sont stockés en mémoire sous forme de vecteurs de 128 bits et, pour faire correspondre les caractéristiques sur des trames consécutives, 200 caractéristiques doivent généralement être comparées à 2 000 candidats, ce qui conduit à 400 000 opérations de correspondance. L'opération d'appariement nécessite évidemment une grande quantité de mémoire mais aussi, lorsque la taille des données échantillonnées est petite, la surcharge élevée de récupération et de formatage des données peut compromettre l'efficacité de l'algorithme codé.

L'ajustement de paquet est un autre algorithme qui implique une algèbre linéaire complexe, impliquant la manipulation de grandes matrices. Diverses techniques existent pour optimiser le codage de ces modules VSLAM et d'autres, mais la mise en œuvre de ces techniques nécessite un haut niveau d'expertise en codage spécifique à la vision.

La gestion de la mémoire est un autre défi du traitement d'images. Les données capturées à partir d'une image sont généralement chargées dans des emplacements de mémoire consécutifs et travailler avec des patchs aléatoires dans une image signifie traiter des données qui ne sont pas stockées dans des emplacements de mémoire consécutifs. Les routines logicielles, qui effectuent la correspondance des caractéristiques, doivent récupérer des descripteurs à partir d'emplacements de mémoire non consécutifs, ce qui augmente encore la surcharge de configuration.

Outils de développement VSLAM

La vitesse de mise sur le marché étant critique dans l'environnement actuel, il n'est pas toujours pratique pour un développeur de prendre le temps d'acquérir les compétences et les connaissances nécessaires pour mettre en œuvre un code de traitement de vision efficace. Heureusement, un certain nombre d'outils existent pour faciliter l'accélération des applications SLAM rentables; Des kits de développement d'applications sont disponibles et fournissent une combinaison de bibliothèques logicielles spécifiques à la vision, de matériel optimisé et d'outils d'intégration pour permettre au développeur de décharger facilement les tâches spécifiques à la vision du CPU vers le VPU.

Le SDK CEVA SLAM, figure 4, est un exemple majeur d'un tel ensemble d'outils de développement d'applications.


Figure 4 :Le SDK CEVA SLAM. (Source :CEVA)

Basé sur le matériel des processeurs CEVA XM6 DSP et CEVA NeuPro AI, le SDK CEVA SLAM permet l'intégration efficace des implémentations SLAM dans des systèmes embarqués basse consommation. Le SDK comprend un certain nombre de blocs de construction, notamment des bibliothèques de traitement d'images fournissant un code efficace pour la détection et la mise en correspondance des fonctionnalités ainsi que l'ajustement de l'ensemble. Il prend également en charge l'algèbre linéaire, la résolution d'équations linéaires, la résolution rapide d'équations creuses et la manipulation de matrices.

Le matériel CEVA XM6 est optimisé pour le traitement d'images avec des fonctionnalités innovantes telles que l'instruction de chargement parallèle, qui résout le problème d'accès mémoire non consécutif, ainsi qu'une instruction unique et dédiée pour exécuter le calcul de la distance de Hamming. Le SDK comprend également une interface CPU détaillée, permettant au développeur d'intégrer facilement la fonctionnalité de traitement de la vision avec le CPU principal de l'application.

Pour illustrer les performances du SDK en tant qu'outil de développement, une implémentation de référence d'un module de suivi SLAM complet fonctionnant à 60 images par seconde a été mesurée pour avoir une consommation électrique de seulement 86 mW.

Conclusion

Les systèmes SLAM visuels gagnent en popularité dans un large éventail d'applications, telles que les robots agricoles et les drones. Il existe un certain nombre de méthodes alternatives pour la mise en œuvre du SLAM visuel, mais, avec le déploiement croissant dans les applications embarquées, l'efficacité du codage et la faible consommation d'énergie sont des facteurs critiques.

Bien qu'il soit courant pour les développeurs d'utiliser des VPU pour décharger les tâches de traitement de la vision gourmandes en calcul du processeur principal, des défis importants subsistent afin de produire un code efficace et également de gérer l'interface entre le VPU et le processeur.

Le délai de mise sur le marché étant un facteur clé, les développeurs peuvent accélérer le développement de produits en tirant parti des capacités intégrées aux kits d'outils de développement spécifiques au SLAM, tels que le SDK CEVA SLAM.


Embarqué

  1. Le rôle de l'extrusion dans les applications d'impression 3D
  2. Applications d'IA dans la chaîne d'approvisionnement mondiale
  3. Toutes les applications des pigments de phtalocyanine
  4. Toutes les applications des colorants basiques
  5. Toutes les applications du pigment bleu
  6. Le développement des plastiques modernes
  7. Comment sélectionner un contrôleur
  8. Les applications des vibrateurs industriels
  9. Industrie 4.0 :le développement d'une cybersécurité unique