9 fantastici strumenti open source per gestire i tuoi rosbag
Una selezione fatta dagli ingegneri di Evocargo
Che tu stia appena iniziando con ROS o che tu sia già un profondo sviluppatore, potresti sentire che certe cose e operazioni possono essere fatte più facilmente, più velocemente o più convenientemente. Potresti anche pensare di creare qualche strumento per ROS in questo momento, ad esempio quello che mostri i metadati delle tue borse in una bella vista. Prima di farlo, dai un'occhiata alla nostra selezione di pacchetti ROS open source: potresti trovare soluzioni già pronte che ti faranno risparmiare un sacco di tempo e fatica.
In questo post, ci concentriamo sui pacchetti per i bagagli ROS che ti aiutano a visualizzare e modificare i dati dei bagagli. Con alcuni pacchetti andiamo oltre e dimostriamo come è possibile aggiornarli per le esigenze specifiche del prodotto.
I veicoli autonomi generano enormi quantità di dati necessari per la percezione, la localizzazione, la prevenzione delle collisioni, l'autodiagnosi e altri compiti essenziali in un'auto autonoma. Tali dati sono una risorsa di grande valore in quanto vengono utilizzati per l'addestramento delle reti neurali e l'indagine sugli incidenti. Ad esempio, la US National Highway Traffic Safety Administration ha obbligato alcuni produttori e operatori a segnalare alcuni incidenti che coinvolgono veicoli dotati di SAE Level 2 -5 Advanced Driver Assistance Systems (ADAS) al fine di indagare sulla sicurezza dei sistemi autonomi e riassumere i risultati in un rapporto di incidente . Questa può diventare una pratica comune anche in altri paesi.
Le stime dei dati prodotti possono variare per i diversi veicoli a causa delle apparecchiature a bordo e degli scenari applicativi. Con più telecamere ad alta risoluzione, lidar, radar e altri sensori a bordo, un'auto autonoma può generare fino a 15 TB di dati per un tragitto giornaliero di poche ore. Ciò significa che i robotaxi che effettuano viaggi passeggeri senza sosta potrebbero presumibilmente fare 450 TB al giorno (cercare di più qui e qui ).
Se si utilizza ROS, tutti i dati vengono scritti in file bag che vengono registrati e archiviati in modo da poterli successivamente indicizzare, annotare e riprodurre.
Quindi, ti ritroverai con un impressionante elenco di file che devi navigare e analizzare. Per farcela, puoi utilizzare i pacchetti ROS gratuiti che abbiamo selezionato per descrivere in questo articolo. Alcuni di essi sono inclusi nell'indice ROS , altri no. E alcuni di loro sono progettati solo per ROS 1 - prenderemo appunti su questo.
Visualizzazione delle borse in una bella interfaccia utente
Come puoi vedere in Figura 1 , i sacchetti sono fondamentalmente file in una directory. Devi utilizzare l'interfaccia della riga di comando per lavorare con loro e non c'è molto che puoi fare: per impostazione predefinita, ROS ti consente di riprodurre un file di borsa, visualizzare informazioni sulla borsa, le sue dimensioni e durata, visualizzare argomenti, tipi di messaggi e la loro quantità. Più dati accumuli, più difficile è trovare qualcosa di cui hai bisogno.
Lo strumento Bag Database del Southwest Research Institute offre un'interfaccia web amichevole per monitorare la tua directory per i file bag ROS. Ti consente di visualizzare molti metadati utili come la data di registrazione, il percorso, l'immagine corrispondente e altro.
La tua interazione con le borse diventa molto più semplice ed efficiente!
Inoltre, Bag Database consente di aggiungere vari script di post-elaborazione che possono quindi essere eseguiti in contenitori Docker isolati. Ad esempio, in Evocargo, abbiamo scritto uno bag_indexer
script che mostra un riepilogo completo del contenuto della borsa in un'unica immagine PNG.
Con uno sguardo, puoi farti un'idea di quanto segue:
- La qualità della corsia, la luce e le condizioni meteorologiche attraverso le miniature
- Rotta di riferimento e deviazione da essa basata su odometria, GNSS e localizzazione
- Velocità in qualsiasi momento o posizione
- Modalità di controllo del veicolo o per quanto tempo il veicolo deve essere azionato manualmente
- Distanza e durata della corsa
- Nome della borsa e altro
I parametri delle istantanee, come la posizione ei colori dei blocchi di informazioni e il numero di miniature delle immagini della telecamera, sono definiti in un file di configurazione.
In Bag Database , lo bag_indexer
script ha il seguente aspetto:
Per ulteriori dettagli ed esempi di script, consultare la documentazione del database Bag .
Aggiunta di metadati
I metadati del bagaglio contengono dettagli sulle condizioni di registrazione del bagaglio come posizione di registrazione, versione del sistema operativo e del software, dispositivi collegati, condizioni meteorologiche, attività. Normalmente, tali dati vengono archiviati in un file separato. Tuttavia, alcuni visualizzatori di borse, ad esempio Bag Database , richiedono l'integrazione dei metadati nei file delle borse.
Per scrivere i metadati direttamente nei file bag ROS1, puoi utilizzare il pacchetto rosbag_metadata . Fuori dagli schemi salva i tuoi commenti insieme ai dati di sistema come la versione del pacchetto ROS, informazioni sui repository git e hash git-commit, variabili ambientali, configurazione di rete. Tutti questi dati vengono aggiunti come testo in un file YAML all'argomento /metadata.
Puoi usare rosbag_metadata così com'è o soddisfarlo per soddisfare le tue esigenze di prodotto speciali. Ad esempio, per il servizio logistico di Evocargo, avevamo bisogno di informazioni più specifiche a portata di mano come il modello e il numero dell'auto, informazioni di calibrazione grezze e mappe. Quindi, abbiamo creato il nostro pacchetto basato su rosbag_metadata , più adatto alla gestione dei veicoli autonomi. E possiamo facilmente aggiungere più campi quando necessario.
Riproduzione e visualizzazione
Una delle opzioni per ROS 1 sarebbe Webviz , uno strumento web per la riproduzione e la visualizzazione di borse sviluppato e reso open source dagli ingegneri di Cruise . Ti consente di trascinare e rilasciare i file di borsa ROS per ottenere una visione visiva immediata dei dati. Così semplice! Inoltre, è un'app Web, quindi non è necessario distribuire alcun ambiente speciale.
La sua interfaccia è personalizzabile e ti consente di aggiungere pannelli e vedere più dati rilevanti in un unico posto. Inoltre, puoi integrarlo con altri strumenti, ad esempio puoi aprire Webviz direttamente dalla finestra Bag Database . (Questa configurazione è descritta qui ).
Un altro strumento che vorrei menzionare qui è Foxglove Studio . Ha lo stesso scopo di visualizzazione e analisi in robotica, ma va oltre supportando sia ROS 1 che ROS 2 e offrendo supporto commerciale. È iniziato come un fork del progetto Webviz di Cruise e ora viene attivamente sviluppato e ampliato il suo set di funzionalità. È disponibile sia come app Web multipiattaforma sia come app desktop che sblocca più funzionalità ed estensioni del pannello personalizzate su dispositivi Linux, macOS e Windows.
Puoi leggere ulteriori informazioni sullo sviluppo e sugli aggiornamenti di Foxglove Studio nel loro blog su Medium o visitare il loro sito web .
Modifica borse
Se vuoi modificare i file di borsa in ROS 1, dai un'occhiata a rosbag_editor di Davide Faconti . Questo strumento non consente di applicare modifiche batch ai file dei bagagli, ma può essere utile per modificare determinati bagagli, ad esempio per dimostrazioni. La sua semplice interfaccia utente ti consente di rinominare e rimuovere manualmente gli argomenti, modificare la durata della borsa tagliando l'inizio o la fine del file, modificare il tipo di compressione per ridurre le dimensioni del file e rimuovere le trasformazioni.
In Evocargo avevamo bisogno di uno strumento che consentisse la modifica in batch delle borse registrate in ROS1, quindi il nostro ingegnere Vladimir Burmistrov ha creato il pacchetto ros_bag_migration . Ti consente di modificare il formato dei messaggi nelle borse registrate, non solo di rinominare ed eliminare i messaggi, ma anche di dividere un messaggio in due e applicare regole definite a determinate versioni del messaggio. Questo pacchetto funziona perfettamente per le situazioni in cui si decide di registrare nuovi bagagli con un insieme aggiornato di definizioni dei messaggi e si desidera modificare i bagagli più vecchi di conseguenza per compatibilità.
Grafici di costruzione
Successivamente, parleremo di PlotJuggler , un incredibile costruttore di grafici (un altro pacchetto di Davide Faconti ). PlotJuggler ti consente di analizzare tutti i dati che scorrono all'interno del tuo sistema o robot. Il debug diventa molto più semplice grazie alle sue caratteristiche:
- Puoi creare grafici per i dati negli argomenti ROS in tempo reale o caricando uno o più file .bag in PlotJuggler .
- L'aggiunta e la gestione di più grafici di dati è molto intuitiva. Ad esempio, puoi creare una scheda XY prendendo alcuni dati 2D e tracciandoli per visualizzare le posizioni 2D per ogni timestamp.
- Esistono molte opportunità di trasformazione dei dati integrate per i grafici, ad esempio è possibile rimuovere l'offset per i dati, ridimensionarli, integrarli, rimuovere valori anomali e così via. Puoi persino creare combinazioni di trasformazioni, molto utili per confrontare dati da fonti diverse.
- Se non hai trovato una funzione di trasformazione adatta, puoi crearne una tua. Ad esempio, potresti scrivere una funzione per estrarre e visualizzare l'angolo di imbardata dai quaternioni.
- Ultimo, ma non per importanza! La funzione killer: quando hai a che fare con le borse puoi abilitare "ROS Topic Re-Publisher". Ciò significa che puoi trascinare il dispositivo di scorrimento temporale su qualsiasi momento desideri e PlotJuggler pubblicherà i dati da tutti gli argomenti corrispondenti a un timestamp scelto. Questo è molto utile quando vuoi vedere le immagini delle telecamere per un momento particolare, controllare i messaggi diagnostici o persino visualizzare ogni dato in qualche altro strumento di visualizzazione come RVIZ.
Consegna del messaggio
Per scopi di test e debug, è importante che i risultati degli esperimenti vengano riprodotti in modo stabile. Ad esempio, quando si testa un algoritmo di localizzazione su una borsa contenente determinati dati del sensore, ci si aspetta sicuramente lo stesso risultato ogni volta che si esegue questo algoritmo. Tuttavia, la logica di pubblicazione-sottoscrizione in ROS non può garantire la consegna del messaggio al 100% ed è probabile che i tuoi nodi non elaborino tutti i messaggi in un sacchetto nello stesso ordine.
Il pacchetto batch_ros per ROS 1 ti consente di specificare gli argomenti nel file bag che sono fondamentali per il tuo compito. batch_ros attenderà la sincronizzazione della chiamata di servizio dopo aver pubblicato ogni messaggio da questi argomenti. Assicura che i messaggi dal file bag vengano pubblicati dopo che il tuo nodo li ha elaborati uno per uno nell'ordine definito.
In tal modo batch_ros garantisce un'elaborazione deterministica e ripetibile delle borse.
Stato della registrazione
Durante la registrazione di un sacchetto, la configurazione predefinita del ROS 1 mostra solo il messaggio "Registrazione in corso...". Se qualcosa va storto, lo scopri solo quando l'attività è completata e fallita. Per rendere il processo di registrazione più informativo, prova l' interfaccia del terminale rosbag_fancy per ROS 1. Visualizza dati utili in tempo reale, come argomenti che vengono registrati, utilizzo della memoria, dimensioni del file di borsa e altro, tutto in una tabella super semplice.
Puoi anche vedere il numero di messaggi rilasciati ( Drops ) che ci porta al problema successivo e alla possibile soluzione.
Grazie per aver letto fino a qui: devi migliorare la tua esperienza con ROS tanto quanto noi! Riassumiamo. In questo post, abbiamo esaminato i seguenti pacchetti ROS: Bag Database , rosbag_metadata , Webviz , Foxglove Studio , rosbag_editor , ros_bag_migration , PlotJuggler , rosbag_fancy e batch_ros .
Se trovi utile questa selezione di pacchetti, faccelo sapere applaudendo e commentando. Condivideremo volentieri altre di queste panoramiche nel nostro blog, ad esempio, ci sono pacchetti ROS degni di nota per test, simulazione, documentazione e altri scopi.