9 outils open source géniaux pour gérer vos rosbags
Une sélection faite par les ingénieurs d'Evocargo
Que vous débutiez avec ROS ou que vous soyez déjà un développeur chevronné, vous pouvez penser que certaines choses et opérations peuvent être effectuées plus facilement, plus rapidement ou plus facilement. Vous pourriez même penser à créer un outil pour ROS dès maintenant, par exemple celui qui afficherait les métadonnées de vos sacs dans une belle vue. Avant de faire cela, consultez notre sélection de packages ROS open source - vous trouverez peut-être des solutions prêtes à l'emploi qui vous feront économiser beaucoup de temps et d'efforts.
Dans cet article, nous nous concentrons sur les packages pour les sacs ROS qui vous aident à visualiser et à modifier les données des sacs. Avec certains packages, nous allons plus loin et montrons comment vous pouvez les mettre à niveau pour vos besoins spécifiques en matière de produits.
Les véhicules autonomes génèrent d'énormes quantités de données nécessaires à la perception, à la localisation, à l'évitement des collisions, à l'autodiagnostic et à d'autres tâches essentielles dans une voiture autonome. Ces données sont un atout très précieux car elles sont utilisées pour la formation sur les réseaux de neurones et les enquêtes sur les incidents. Par exemple, la National Highway Traffic Safety Administration des États-Unis a obligé certains constructeurs et opérateurs à signaler certains accidents impliquant des véhicules équipés de systèmes avancés d'aide à la conduite (ADAS) SAE de niveau 2 à 5 afin d'enquêter sur la sécurité des systèmes autonomes et de résumer les résultats dans un rapport d'accident . Cela peut également devenir une pratique courante dans d'autres pays.
Les estimations des données produites peuvent varier pour différents véhicules en raison de l'équipement à bord et des scénarios d'application. Avec plusieurs caméras haute résolution, lidars, radars et autres capteurs à bord, une voiture autonome peut générer jusqu'à 15 To de données pour un trajet de quelques heures. Cela signifie que les robotaxis effectuant des trajets de passagers sans escale pourraient faire soi-disant 450 To par jour (recherchez plus ici et ici ).
Si vous utilisez ROS, toutes les données sont écrites dans des fichiers de sac qui sont enregistrés et stockés afin que vous puissiez ensuite les indexer, les annoter et les lire.
Ainsi, vous vous retrouvez avec une liste impressionnante de fichiers que vous devez parcourir et analyser. Pour vous en sortir, vous pouvez utiliser des packages ROS gratuits que nous avons sélectionnés pour décrire dans cet article. Certains d'entre eux sont inclus dans l' indice ROS , d'autres non. Et certains d'entre eux sont conçus pour ROS 1 uniquement - nous prendrons des notes à ce sujet.
Affichage des sacs dans une belle interface utilisateur
Comme vous pouvez le voir sur la figure 1 , les sacs sont essentiellement des fichiers dans un répertoire. Vous devez utiliser l'interface de ligne de commande pour travailler avec eux, et vous ne pouvez pas faire grand-chose - par défaut, ROS vous permet de lire un fichier de sac, d'afficher des informations sur le sac, sa taille et sa durée, d'afficher des sujets, des types de messages et leur quantité. Plus vous accumulez de données, plus il est difficile de trouver ce dont vous avez besoin.
L' outil Bag Database du Southwest Research Institute offre une interface Web conviviale pour surveiller votre répertoire pour les fichiers de sac ROS. Il vous permet d'afficher de nombreuses métadonnées utiles telles que la date d'enregistrement, l'itinéraire, l'image correspondante, etc.
Votre interaction avec les sacs devient tellement plus facile et efficace !
De plus, Bag Database vous permet d'ajouter divers scripts de post-traitement qui peuvent ensuite être exécutés dans des conteneurs Docker isolés. Par exemple, chez Evocargo, nous avons écrit un bag_indexer
script qui affiche un résumé global du contenu du sac dans une seule image PNG.
D'un coup d'œil, vous pouvez vous faire une idée de ce qui suit :
- La qualité de la voie, la lumière et les conditions météorologiques à travers les vignettes
- Itinéraire de référence et écart par rapport à celui-ci en fonction de l'odométrie, du GNSS et de la localisation
- Vitesse à n'importe quel moment ou à n'importe quelle position
- Mode de contrôle du véhicule, ou combien de temps le véhicule a dû être actionné manuellement
- Distance et durée du trajet
- Nom du sac, et plus encore
Les paramètres des instantanés, tels que la position et les couleurs des blocs d'informations et le nombre de vignettes des images de la caméra, sont définis dans un fichier de configuration.
Dans Bag Database , le bag_indexer
script se présente comme suit :
Pour plus de détails et des exemples de scripts, consultez la documentation Bag Database .
Ajout de métadonnées
Les métadonnées du sac contiennent des détails sur les conditions d'enregistrement du sac, telles que le lieu d'enregistrement, la version du système d'exploitation et du logiciel, les appareils connectés, les conditions météorologiques, la tâche. Normalement, vous stockez ces données dans un fichier séparé. Cependant, certains visualiseurs de sac, par exemple Bag Database , nécessitent l'intégration de métadonnées dans les fichiers de sac.
Pour écrire des métadonnées directement dans les fichiers bag ROS1, vous pouvez utiliser le package rosbag_metadata . Prêt à l'emploi, il enregistre vos commentaires ainsi que des données système telles que la version du package ROS, des informations sur les référentiels git et les hachages git-commit, les variables d'environnement, la configuration du réseau. Toutes ces données sont ajoutées sous forme de texte dans un fichier YAML au sujet /metadata.
Vous pouvez utiliser rosbag_metadata tel quel ou l'adapter pour répondre à vos besoins spécifiques en matière de produits. Par exemple, pour le service logistique d'Evocargo, nous avions besoin d'informations plus spécifiques, telles que le modèle et le numéro de la voiture, des informations d'étalonnage brutes et des cartes. Ainsi, nous avons créé notre propre package basé sur rosbag_metadata , plus adapté à la gestion des véhicules autonomes. Et nous pouvons facilement ajouter plus de champs en cas de besoin.
Lecture et visualisation
L'une des options pour ROS 1 serait Webviz , un outil Web de lecture et de visualisation de sacs développé et open source par les ingénieurs de Cruise . Il vous permet de glisser-déposer des fichiers de sac ROS pour obtenir un aperçu visuel immédiat des données. Aussi simple que cela! De plus, il s'agit d'une application Web, vous n'avez donc pas besoin de déployer d'environnement spécial.
Son interface est personnalisable, ce qui vous permet d'ajouter des panneaux et de voir des données plus pertinentes en un seul endroit. De plus, vous pouvez l'intégrer à d'autres outils - par exemple, vous pouvez ouvrir Webviz directement à partir de la fenêtre Bag Database . (Cette configuration est décrite ici ).
Un autre outil que je voudrais mentionner ici est Foxglove Studio . Il a le même objectif de visualisation et d'analyse en robotique, mais il va plus loin en prenant en charge à la fois ROS 1 et ROS 2 et en offrant un support commercial. Il a commencé comme un fork du projet Webviz de Cruise et est maintenant activement développé et élargit son ensemble de fonctionnalités. Il est disponible à la fois en tant qu'application Web multiplateforme et en tant qu'application de bureau qui déverrouille davantage de fonctionnalités et d'extensions de panneau personnalisées sur les appareils Linux, macOS et Windows.
Vous pouvez en savoir plus sur le développement et les mises à jour de Foxglove Studio dans leur blog sur Medium ou visiter leur site Web .
Édition de sacs
Si vous souhaitez modifier des fichiers de sac dans ROS 1, consultez le rosbag_editor de Davide Faconti . Cet outil ne vous permet pas d'appliquer des modifications par lots aux fichiers de sac, mais il peut être utile pour modifier certains sacs, par exemple pour une démonstration. Son interface utilisateur simple vous permet de renommer et de supprimer manuellement des sujets, de modifier la durée du sac en coupant le début ou la fin du fichier, de modifier le type de compression pour réduire la taille du fichier et de supprimer les transformations.
Chez Evocargo, nous avions besoin d'un outil qui permettrait l'édition par lots des sacs enregistrés dans ROS1, c'est pourquoi notre ingénieur Vladimir Burmistrov a créé le package ros_bag_migration . Il vous permet de modifier le format des messages dans les sacs enregistrés, non seulement de renommer et de supprimer des messages, mais également de diviser un message en deux et d'appliquer des règles définies à certaines versions de message. Ce package fonctionne parfaitement dans les situations où vous décidez d'enregistrer de nouveaux sacs avec un ensemble mis à jour de définitions de messages et que vous souhaitez modifier les anciens sacs en conséquence pour des raisons de compatibilité.
Construire des graphiques
Ensuite, nous allons parler de PlotJuggler , un incroyable constructeur de graphes (un autre package de Davide Faconti ). PlotJuggler vous permet d'analyser toutes les données circulant à l'intérieur de votre système ou de votre robot. Le débogage devient beaucoup plus facile grâce à ses fonctionnalités :
- Vous pouvez créer des graphiques pour les données des sujets ROS soit en temps réel, soit en chargeant un ou plusieurs fichiers .bag dans PlotJuggler .
- L'ajout et la gestion de plusieurs tracés de données sont très conviviaux. Par exemple, vous pouvez créer un onglet XY en saisissant des données 2D et en les traçant pour visualiser les positions 2D pour chaque horodatage.
- Il existe de nombreuses opportunités de transformation de données intégrées pour les tracés, par exemple, vous pouvez supprimer le décalage des données, les mettre à l'échelle, les intégrer, supprimer les valeurs aberrantes, etc. Vous pouvez même créer des combinaisons de transformations, ce qui est très utile pour comparer des données provenant de différentes sources.
- Si vous n'avez pas trouvé de fonction de transformation appropriée, vous pouvez créer la vôtre. Par exemple, vous pouvez écrire une fonction pour extraire et visualiser l'angle de lacet à partir de quaternions.
- Enfin et surtout! La fonctionnalité qui tue : lorsque vous avez affaire à des sacs, vous pouvez activer « ROS Topic Re-Publisher ». Cela signifie que vous pouvez faire glisser le curseur temporel sur le moment de votre choix et PlotJuggler publiera les données de tous les sujets correspondant à un horodatage choisi. Ceci est très utile lorsque vous souhaitez voir les images des caméras à un moment donné, consulter les messages de diagnostic ou même visualiser chaque élément de données dans un autre outil de visualisation comme RVIZ.
Remise des messages
À des fins de test et de débogage, il est important que les résultats de vos expériences soient reproduits de manière stable. Par exemple, lorsque vous testez un algorithme de localisation sur un sac contenant certaines données de capteur, vous vous attendez sûrement au même résultat à chaque fois que vous exécutez cet algorithme. Cependant, la logique de publication-abonnement dans ROS ne peut pas garantir une livraison à 100 % des messages et il est probable que vos nœuds ne traiteront pas tous les messages d'un sac dans le même ordre.
Le package batch_ros pour ROS 1 vous permet de spécifier les rubriques du fichier bag qui sont essentielles à votre tâche. batch_ros attendra l'appel de service de synchronisation après la publication de chaque message de ces rubriques. Il garantit que les messages du fichier bag seront publiés après que votre nœud les aura traités un par un dans l'ordre défini.
Ainsi , batch_ros assure un traitement déterministe et reproductible des sacs.
Statut d'enregistrement
Lorsqu'un sac est en cours d'enregistrement, la configuration par défaut du ROS 1 affiche uniquement le message « Enregistrement… ». Si quelque chose ne va pas, vous ne le saurez que lorsque la tâche est terminée et a échoué. Pour rendre le processus d'enregistrement plus informatif, essayez l' interface de terminal rosbag_fancy pour ROS 1. Il affiche des données utiles en temps réel, telles que les sujets en cours d'enregistrement, l'utilisation de la mémoire, la taille du fichier sac, etc., le tout dans un tableau très simple.
Vous pouvez également voir le nombre de messages supprimés ( Drops ) qui nous amène au problème suivant et à la solution possible.
Merci d'avoir lu jusqu'ici - vous devez aimer améliorer votre expérience avec ROS autant que nous ! Résumons. Dans cet article, nous avons examiné les packages ROS suivants : Bag Database , rosbag_metadata , Webviz , Foxglove Studio , rosbag_editor , ros_bag_migration , PlotJuggler , rosbag_fancy et batch_ros .
Si vous trouvez cette sélection de packages utiles, faites-le nous savoir en applaudissant et en commentant. Nous partagerons volontiers d'autres aperçus de ce type dans notre blog, par exemple, il existe des packages ROS remarquables pour les tests, la simulation, la documentation et à d'autres fins.