9 großartige Open-Source-Tools zur Verwaltung Ihrer Rosbags

Nov 24 2022
Eine Auswahl von Evocargo-Ingenieuren Ob Sie gerade mit ROS beginnen oder bereits ein profunder Entwickler sind, Sie haben vielleicht das Gefühl, dass bestimmte Dinge und Vorgänge einfacher, schneller oder bequemer erledigt werden können. Sie könnten jetzt sogar daran denken, ein Tool für ROS zu erstellen, zum Beispiel eines, das die Metadaten Ihrer Taschen in einer schönen Ansicht anzeigt.

Eine Auswahl von Evocargo-Ingenieuren

Ob Sie gerade erst mit ROS beginnen oder bereits ein profunder Entwickler sind, Sie haben vielleicht das Gefühl, dass bestimmte Dinge und Vorgänge einfacher, schneller oder bequemer erledigt werden können. Sie könnten jetzt sogar daran denken, ein Tool für ROS zu erstellen, zum Beispiel eines, das die Metadaten Ihrer Taschen in einer schönen Ansicht anzeigt. Bevor Sie das tun, sehen Sie sich unsere Auswahl an Open-Source-ROS-Paketen an – vielleicht finden Sie fertige Lösungen, die Ihnen viel Zeit und Mühe sparen.

In diesem Beitrag konzentrieren wir uns auf Pakete für ROS-Taschen, die Ihnen helfen, Taschendaten zu visualisieren und zu bearbeiten. Bei einigen Paketen gehen wir noch weiter und demonstrieren, wie Sie sie für Ihre spezifischen Produktanforderungen aufrüsten können.

Autonome Fahrzeuge erzeugen riesige Datenmengen, die für Wahrnehmung, Lokalisierung, Kollisionsvermeidung, Selbstdiagnose und andere wesentliche Aufgaben in einem autonomen Auto benötigt werden. Solche Daten sind ein äußerst wertvolles Gut, da sie für das Training neuronaler Netze und die Untersuchung von Vorfällen verwendet werden. So hat die US-amerikanische National Highway Traffic Safety Administration einige Hersteller und Betreiber verpflichtet, bestimmte Unfälle mit Fahrzeugen, die mit Advanced Driver Assistance Systems (ADAS) der SAE-Stufe 2-5 ausgestattet sind, zu melden, um die Sicherheit autonomer Systeme zu untersuchen und die Ergebnisse in einem zusammenzufassen Absturzbericht . Dies kann auch in anderen Ländern zur gängigen Praxis werden.

Schätzungen der erzeugten Daten können für verschiedene Fahrzeuge aufgrund der Ausstattung an Bord und der Anwendungsszenarien variieren. Mit mehreren Hi-Res-Kameras, Lidars, Radar und anderen Sensoren an Bord kann ein autonomes Auto bis zu 15 TB an Daten für eine mehrstündige Fahrt zur Arbeit generieren. Das bedeutet, dass Robotaxis, die Passagierfahrten ohne Unterbrechung durchführen, angeblich 450 TB pro Tag schaffen könnten (weitere Informationen finden Sie hier und hier ).

Wenn Sie ROS verwenden, werden alle Daten in Bag-Dateien geschrieben, die aufgezeichnet und gespeichert werden, damit Sie sie später indizieren, kommentieren und abspielen können.

Abbildung 1. Eine Liste von ROS-Bag-Dateien

So erhalten Sie eine beeindruckende Liste von Dateien, die Sie durchsuchen und analysieren müssen. Um damit fertig zu werden, können Sie kostenlose ROS-Pakete verwenden, die wir ausgewählt haben, um sie in diesem Artikel zu beschreiben. Einige von ihnen sind im ROS-Index enthalten , andere nicht. Und einige von ihnen sind nur für ROS 1 konzipiert – wir machen uns Notizen dazu.

Anzeigen von Taschen in einer schönen Benutzeroberfläche

Wie Sie in Abbildung 1 sehen können , sind Taschen im Grunde Dateien in einem Verzeichnis. Sie müssen die Befehlszeilenschnittstelle verwenden, um mit ihnen zu arbeiten, und Sie können nicht viel tun – standardmäßig erlaubt Ihnen ROS, eine Taschendatei abzuspielen, Informationen über die Tasche, ihre Größe und Dauer anzuzeigen, Themen und Typen anzuzeigen von Nachrichten und deren Menge. Je mehr Daten Sie sammeln, desto schwieriger ist es, etwas zu finden, das Sie brauchen.

Das Tool „ Bag Database “ des Southwest Research Institute bietet eine benutzerfreundliche Weboberfläche, um Ihr Verzeichnis auf ROS-Bag-Dateien zu überwachen. Sie können viele nützliche Metadaten wie das Aufnahmedatum, die Route, das entsprechende Bild und mehr anzeigen.

Ihre Interaktion mit Taschen wird so viel einfacher und effizienter!

Abbildung 2. Taschen in der Taschendatenbank anzeigen

Darüber hinaus können Sie mit Bag Database verschiedene Nachbearbeitungsskripte hinzufügen, die dann in isolierten Docker-Containern ausgeführt werden können. Zum Beispiel haben wir bei Evocargo ein bag_indexerSkript geschrieben, das eine umfassende Zusammenfassung des Tascheninhalts in einem einzigen PNG-Bild anzeigt.

Abbildung 3. Gepäckzusammenfassung, die mit dem Skript in der Gepäckdatenbank generiert wurde

Mit einem Blick auf das Auge können Sie sich Folgendes vorstellen:

  • Die Spurqualität, Licht- und Wetterbedingungen durch die Miniaturansichten
  • Referenzroute und Abweichung davon basierend auf Odometrie, GNSS und Lokalisierung
  • Geschwindigkeit zu jeder Zeit oder Position
  • Fahrzeugsteuerungsmodus oder wie lange das Fahrzeug manuell bedient werden musste
  • Entfernung und Dauer der Fahrt
  • Taschenname und mehr

Parameter der Schnappschüsse, wie Position und Farben von Infoblöcken und die Anzahl der Vorschaubilder von Kamerabildern, werden in einer Konfigurationsdatei definiert.

In Bag Databasebag_indexer sieht das Skript wie folgt aus:

Abbildung 4. Das Fenster zum Hinzufügen von Nachbearbeitungsskripten

Weitere Einzelheiten und Beispiele für Skripte finden Sie in der Bag Database- Dokumentation .

Metadaten hinzufügen

Taschenmetadaten enthalten Details zu Taschenaufnahmebedingungen wie Aufnahmeort, Betriebssystem- und Softwareversion, angeschlossene Geräte, Wetterbedingungen, Aufgabe. Normalerweise speichern Sie solche Daten in einer separaten Datei. Einige Taschenvisualisierer, z. B. Bag Database , erfordern jedoch die Integration von Metadaten in die Taschendateien.

Um Metadaten direkt in ROS1-Bag-Dateien zu schreiben, können Sie das Paket rosbag_metadata verwenden . Standardmäßig speichert es Ihre Kommentare zusammen mit Systemdaten wie ROS-Paketversion, Informationen zu Git-Repositories und Git-Commit-Hashes, Umgebungsvariablen, Netzwerkkonfiguration. All diese Daten werden als Text in einer YAML-Datei zum Thema /metadata hinzugefügt.

Sie können rosbag_metadata so verwenden, wie es ist, oder es Ihren speziellen Produktanforderungen anpassen. Für den Logistikservice von Evocargo benötigten wir beispielsweise spezifischere Informationen wie Fahrzeugmodell und -nummer, Rohkalibrierungsinformationen und Karten. Daher haben wir unser eigenes Paket basierend auf rosbag_metadata erstellt , das besser an die Verwaltung autonomer Fahrzeuge angepasst ist. Und wir können bei Bedarf problemlos weitere Felder hinzufügen.

Abbildung 8. Hinzufügen produktspezifischer Metadaten zu Tüten

Wiedergabe und Visualisierung

Eine der Optionen für ROS 1 wäre Webviz , ein von Cruise - Ingenieuren entwickeltes und quelloffenes Webtool zur Wiedergabe und Visualisierung von Taschen. Sie können ROS-Beuteldateien ziehen und ablegen, um einen sofortigen visuellen Einblick in die Daten zu erhalten. So einfach ist das! Darüber hinaus handelt es sich um eine Web-App, sodass Sie keine spezielle Umgebung bereitstellen müssen.

Abbildung 5. Diese Abbildung stammt aus dem Artikel „Webviz: An Open Source Platform for Robotics Data Visualization“ von Esther S. Weon

Die Benutzeroberfläche ist anpassbar, sodass Sie Panels hinzufügen und relevantere Daten an einem Ort anzeigen können. Darüber hinaus können Sie es mit anderen Tools integrieren – zum Beispiel können Sie Webviz direkt aus dem Bag Database - Fenster öffnen. (Diese Einrichtung wird hier beschrieben ).

Abbildung 6. Öffnen der Webviz-Web-App über das Menü in Bag Database

Ein weiteres Tool, das ich hier erwähnen möchte, ist Foxglove Studio . Es hat den gleichen Zweck der Visualisierung und Analyse in der Robotik, geht aber noch weiter, indem es sowohl ROS 1 als auch ROS 2 unterstützt und kommerziellen Support bietet. Es begann als Fork des Webviz - Projekts von Cruise und wird nun aktiv weiterentwickelt und erweitert seinen Funktionsumfang. Es ist sowohl als plattformübergreifende Web-App als auch als Desktop-App verfügbar, die mehr Funktionen und benutzerdefinierte Panel-Erweiterungen auf Linux-, MacOS- und Windows-Geräten freischaltet.

Abbildung 7. Spielen einer Tüte in der Foxglove-Oberfläche

Sie können mehr über die Entwicklung und Updates von Foxglove Studio in ihrem Blog auf Medium lesen oder ihre Website besuchen .

Taschen bearbeiten

Wenn Sie Bag-Dateien in ROS 1 bearbeiten möchten, schauen Sie sich den rosbag_editor von Davide Faconti an . Mit diesem Tool können Sie keine Batch-Änderungen auf Beuteldateien anwenden, aber es kann nützlich sein, um bestimmte Beutel zu bearbeiten, z. B. zu Demonstrationszwecken. Die einfache Benutzeroberfläche ermöglicht es Ihnen, Themen manuell umzubenennen und zu entfernen, die Dauer des Beutels zu ändern, indem Sie den Anfang oder das Ende der Datei abschneiden, den Komprimierungstyp zu ändern, um die Dateigröße zu verringern, und Transformationen zu entfernen.

Bei Evocargo brauchten wir ein Tool, das die Stapelbearbeitung von aufgezeichneten Gepäckstücken in ROS1 ermöglicht, also hat unser Ingenieur Vladimir Burmistrov das Paket ros_bag_migration erstellt. Es ermöglicht Ihnen, das Format von Nachrichten in aufgezeichneten Nachrichten zu ändern – nicht nur Nachrichten umzubenennen und zu löschen, sondern auch eine Nachricht in zwei Teile zu teilen und definierte Regeln auf bestimmte Nachrichtenversionen anzuwenden. Dieses Paket eignet sich perfekt für Situationen, in denen Sie sich entscheiden, neue Gepäckstücke mit einem aktualisierten Satz von Nachrichtendefinitionen aufzuzeichnen, und Sie ältere Gepäckstücke aus Gründen der Kompatibilität entsprechend ändern möchten.

Erstellen von Diagrammen

Als nächstes werden wir über PlotJuggler sprechen , einen unglaublichen Grafikgenerator (ein weiteres Paket von Davide Faconti ). Mit PlotJuggler können Sie alle Daten analysieren, die in Ihrem System oder Roboter fließen. Das Debuggen wird dank seiner Funktionen viel einfacher:

  • Sie können Diagramme für Daten in ROS-Themen entweder in Echtzeit oder durch Laden einer oder mehrerer .bag-Dateien in PlotJuggler erstellen .
  • Abbildung 9. Gleiten durch die Beuteldatei
  • Das Hinzufügen und Verwalten mehrerer Diagramme ist sehr benutzerfreundlich. Beispielsweise können Sie eine XY-Registerkarte erstellen, indem Sie einige 2D-Daten erfassen und grafisch darstellen, um 2D-Positionen für jeden Zeitstempel zu visualisieren.
  • Es gibt viele integrierte Möglichkeiten zur Datentransformation für Diagramme, z. B. können Sie Offsets für Daten entfernen, skalieren, integrieren, Ausreißer entfernen und so weiter. Sie können sogar Kombinationen von Transformationen erstellen, was sehr nützlich ist, um Daten aus verschiedenen Quellen zu vergleichen.
  • Wenn Sie keine passende Transformationsfunktion gefunden haben, können Sie Ihre eigene erstellen. Sie könnten beispielsweise eine Funktion schreiben, um den Gierwinkel aus Quaternionen zu extrahieren und zu visualisieren.
  • Zu guter Letzt! Das Killer-Feature: Wenn Sie es mit Taschen zu tun haben, können Sie „ROS Topic Re-Publisher“ aktivieren. Das bedeutet, dass Sie den Zeitschieber auf einen beliebigen Zeitpunkt ziehen können und PlotJuggler würde Daten aus allen Themen veröffentlichen, die einem ausgewählten Zeitstempel entsprechen. Dies ist sehr nützlich, wenn Sie Bilder von den Kameras für einen bestimmten Moment sehen, Diagnosemeldungen überprüfen oder sogar alle Daten in einem anderen Visualisierungstool wie RVIZ visualisieren möchten.

Nachrichtenübermittlung

Für Test- und Debugging-Zwecke ist es wichtig, dass die Ergebnisse Ihrer Experimente stabil reproduziert werden. Wenn Sie beispielsweise einen Lokalisierungsalgorithmus an einer Tasche testen, die bestimmte Sensordaten enthält, erwarten Sie sicherlich jedes Mal das gleiche Ergebnis, wenn Sie diesen Algorithmus ausführen. Die Publish-Subscribe-Logik in ROS kann jedoch keine 100-prozentige Nachrichtenzustellung garantieren, und es ist wahrscheinlich, dass Ihre Knoten nicht alle Nachrichten in einem Paket in derselben Reihenfolge verarbeiten.

Mit dem Paket batch_ros für ROS 1 können Sie die Themen in der Bag-Datei angeben, die für Ihre Aufgabe entscheidend sind. batch_ros wartet auf die Synchronisierung des Dienstaufrufs, nachdem jede Nachricht aus diesen Themen veröffentlicht wurde. Es stellt sicher, dass Nachrichten aus der Bag-Datei veröffentlicht werden, nachdem Ihr Knoten sie einzeln in der definierten Reihenfolge verarbeitet hat.

Abbildung 10. Nachdem eine Nachricht zu einem der Themen gesendet wurde, stoppt die Wiedergabe und wartet darauf, dass ein Triggerdienst von Ihrem Knoten aufgerufen wird, der dem Player signalisiert, mit der Veröffentlichung fortzufahren

Dadurch gewährleistet batch_ros eine deterministische und wiederholbare Verarbeitung von Beuteln.

Aufnahmestatus

Während eine Tasche aufgezeichnet wird, zeigt die Standardkonfiguration von ROS 1 nur die Meldung „Aufzeichnung…“ an. Wenn etwas schief geht, erfahren Sie es erst, wenn die Aufgabe abgeschlossen und fehlgeschlagen ist. Um den Aufzeichnungsprozess informativer zu gestalten, probieren Sie die Terminalschnittstelle rosbag_fancy für ROS 1 aus. Sie zeigt nützliche Daten in Echtzeit an, wie z. B. aufgezeichnete Themen, Speichernutzung, Taschendateigröße und mehr – alles in einer supereinfachen Tabelle.

Abbildung 11. Diese Illustration stammt von der rosbag_fancy-Seite auf github

Sie können auch die Anzahl der verworfenen Nachrichten ( Drops ) sehen, was uns zum nächsten Problem und einer möglichen Lösung führt.

Vielen Dank, dass Sie bis hierher gelesen haben – Sie müssen Ihre Erfahrung mit ROS genauso gerne verbessern wie wir! Fassen wir zusammen. In diesem Beitrag haben wir uns die folgenden ROS-Pakete angesehen: Bag Database , rosbag_metadata , Webviz , Foxglove Studio , rosbag_editor , ros_bag_migration , PlotJuggler , rosbag_fancy und batch_ros .

Wenn Sie diese Auswahl an Paketen nützlich finden, lassen Sie es uns wissen, indem Sie klatschen und kommentieren. Wir teilen gerne weitere solcher Übersichten in unserem Blog, zum Beispiel gibt es bemerkenswerte ROS-Pakete zum Testen, Simulieren, Dokumentieren und für andere Zwecke.