9 niesamowitych narzędzi open source do zarządzania Twoimi rosbagami
Wybór dokonany przez inżynierów Evocargo

Niezależnie od tego, czy dopiero zaczynasz z ROS, czy już jesteś zaawansowanym programistą, możesz mieć wrażenie, że pewne rzeczy i operacje można wykonać łatwiej, szybciej lub wygodniej. Możesz nawet pomyśleć o stworzeniu jakiegoś narzędzia dla ROS już teraz, na przykład takiego, które pokazywałoby metadane twoich toreb w ładnym widoku. Zanim to zrobisz, sprawdź naszą ofertę pakietów ROS typu open source — możesz znaleźć gotowe rozwiązania, które pozwolą Ci zaoszczędzić mnóstwo czasu i wysiłku.
W tym poście skupimy się na pakietach do toreb ROS, które pomogą Ci wizualizować i edytować dane toreb. W przypadku niektórych pakietów idziemy dalej i pokazujemy, w jaki sposób można je ulepszyć pod kątem określonych potrzeb produktu.
Pojazdy autonomiczne generują ogromne ilości danych potrzebnych do percepcji, lokalizacji, unikania kolizji, autodiagnostyki i innych niezbędnych zadań w samochodzie autonomicznym. Takie dane są bardzo cennym zasobem, ponieważ są wykorzystywane do uczenia sieci neuronowych i badania incydentów. Na przykład amerykańska Krajowa Administracja ds. Bezpieczeństwa Ruchu Drogowego zobowiązała niektórych producentów i operatorów do zgłaszania niektórych wypadków z udziałem pojazdów wyposażonych w zaawansowane systemy wspomagania kierowcy (ADAS) poziomu 2-5 SAE w celu zbadania bezpieczeństwa systemów autonomicznych i podsumowania wyników w postaci raport o awarii . Może to stać się powszechną praktyką również w innych krajach.
Szacunki wygenerowanych danych mogą się różnić dla różnych pojazdów ze względu na wyposażenie na pokładzie i scenariusze zastosowań. Dzięki wielu kamerom wysokiej rozdzielczości, lidarom, radarom i innym czujnikom na pokładzie jeden autonomiczny samochód może wygenerować do 15 TB danych na kilka godzin dojazdów. Oznacza to, że robotaxis wykonujący przejazdy pasażerskie non-stop mógłby rzekomo wykonać 450 TB dziennie (więcej poszukaj tutaj i tutaj ).
Jeśli korzystasz z systemu ROS, wszystkie dane są zapisywane w plikach worków, które są rejestrowane i przechowywane, dzięki czemu można je później indeksować, dodawać adnotacje i odtwarzać.

W rezultacie otrzymujesz imponującą listę plików, które musisz przeglądać i analizować. Aby sobie z tym poradzić, możesz skorzystać z bezpłatnych pakietów ROS, które wybraliśmy do opisania w tym artykule. Niektóre z nich są uwzględnione w Indeksie ROS , inne nie. A niektóre z nich są przeznaczone tylko dla ROS 1 — zrobimy na ten temat notatki.
Wyświetlanie toreb w ładnym interfejsie użytkownika
Jak widać na rysunku 1 , torby to w zasadzie pliki w katalogu. Aby z nimi pracować, musisz użyć interfejsu wiersza poleceń i niewiele możesz zrobić — domyślnie ROS umożliwia odtwarzanie pliku torby, przeglądanie informacji o torbie, jej rozmiarze i czasie trwania, przeglądanie tematów, typów wiadomości i ich ilość. Im więcej danych gromadzisz, tym trudniej jest znaleźć coś, czego potrzebujesz.
Narzędzie Bag Database opracowane przez Southwest Research Institute oferuje przyjazny interfejs sieciowy do monitorowania katalogu pod kątem plików toreb ROS. Pozwala wyświetlić wiele przydatnych metadanych, takich jak data nagrania, trasa, odpowiedni obraz i wiele innych.
Twoja interakcja z torbami staje się o wiele łatwiejsza i wydajniejsza!

Co więcej, Bag Database umożliwia dodawanie różnych skryptów post-processingu, które następnie można uruchamiać w izolowanych kontenerach Docker. Na przykład w Evocargo napisaliśmy bag_indexer
skrypt, który wyświetla ogólne podsumowanie zawartości torby w jednym obrazie PNG.

Jednym rzutem oka można wywnioskować, co następuje:
- Jakość toru, oświetlenie i warunki pogodowe w miniaturach
- Trasa referencyjna i odchylenie od niej na podstawie odometrii, GNSS i lokalizacji
- Prędkość w dowolnym momencie lub pozycji
- Tryb sterowania pojazdem, czyli ile czasu pojazd musiał być obsługiwany ręcznie
- Dystans i czas trwania jazdy
- Nazwa torby i nie tylko
Parametry migawek, takie jak położenie i kolory bloków informacyjnych oraz liczba miniaturek z obrazów z kamer, są definiowane w pliku konfiguracyjnym.
W Bag Database skrypt bag_indexer
wygląda następująco:

Aby uzyskać więcej informacji i przykłady skryptów, zobacz dokumentację Bag Database .
Dodawanie metadanych
Metadane torby zawierają szczegółowe informacje na temat warunków rejestracji torby, takie jak lokalizacja rejestracji, wersja systemu operacyjnego i oprogramowania, podłączone urządzenia, warunki pogodowe, zadanie. Zwykle przechowujesz takie dane w osobnym pliku. Jednak niektóre wizualizatory worków, np. Bag Database , wymagają integracji metadanych z plikami worków.
Aby zapisać metadane bezpośrednio w plikach worka ROS1, możesz użyć pakietu rosbag_metadata . Po wyjęciu z pudełka zapisuje twoje komentarze wraz z danymi systemowymi, takimi jak wersja pakietu ROS, informacje o repozytoriach git i hashach git-commit, zmienne środowiskowe, konfiguracja sieci. Wszystkie te dane są dodawane jako tekst w pliku YAML do tematu /metadata.
Możesz użyć rosbag_metadata w takiej postaci, w jakiej jest, lub dostosować ją do swoich specjalnych potrzeb produktowych. Na przykład w przypadku usługi logistycznej Evocargo potrzebowaliśmy bardziej szczegółowych informacji, takich jak model i numer samochodu, surowe informacje o kalibracji i mapy. Dlatego stworzyliśmy własny pakiet oparty o rosbag_metadata , bardziej dostosowany do zarządzania pojazdami autonomicznymi. W razie potrzeby możemy łatwo dodać więcej pól.

Odtwarzanie i wizualizacja
Jedną z opcji dla ROS 1 byłby Webviz , internetowe narzędzie do odtwarzania i wizualizacji toreb, opracowane i udostępnione przez inżynierów Cruise . Umożliwia przeciąganie i upuszczanie plików worków ROS w celu uzyskania natychmiastowego wizualnego wglądu w dane. Tak proste jak to! Co więcej, jest to aplikacja internetowa, więc nie musisz wdrażać żadnego specjalnego środowiska.

Jego interfejs można dostosować, co pozwala dodawać panele i wyświetlać więcej istotnych danych w jednym miejscu. Co więcej, możesz zintegrować go z innymi narzędziami — na przykład możesz otworzyć Webviz bezpośrednio z okna Bag Database . (Ta konfiguracja jest opisana tutaj ).

Kolejnym narzędziem, o którym chciałbym tu wspomnieć, jest Foxglove Studio . Ma ten sam cel wizualizacji i analizy w robotyce, ale idzie dalej, wspierając zarówno ROS 1, jak i ROS 2 oraz oferując wsparcie komercyjne. Zaczęło się jako rozwidlenie projektu Webviz firmy Cruise, a obecnie jest aktywnie rozwijane i rozszerzane o zestaw funkcji. Jest dostępna zarówno jako wieloplatformowa aplikacja internetowa, jak i jako aplikacja komputerowa, która odblokowuje więcej funkcji i niestandardowych rozszerzeń panelu na urządzeniach z systemem Linux, macOS i Windows.

Możesz przeczytać więcej o rozwoju i aktualizacjach Foxglove Studio na ich blogu na Medium lub odwiedzić ich stronę internetową .
Edycja toreb
Jeśli chcesz edytować pliki worków w ROS 1, sprawdź rosbag_editor autorstwa Davide Faconti . To narzędzie nie pozwala na wsadowe wprowadzanie zmian do plików toreb, ale może być przydatne do edytowania niektórych toreb, np. w celu demonstracji. Jego prosty interfejs użytkownika pozwala ręcznie zmieniać nazwy i usuwać tematy, zmieniać czas trwania torby, odcinając początek lub koniec pliku, zmieniać typ kompresji, aby zmniejszyć rozmiar pliku i usuwać przekształcenia.
W Evocargo potrzebowaliśmy narzędzia, które umożliwiłoby wsadową edycję zarejestrowanych toreb w ROS1, dlatego nasz inżynier Vladimir Burmistrov stworzył pakiet ros_bag_migration . Pozwala zmieniać format wiadomości w nagranych torbach — nie tylko zmieniać nazwy i usuwać wiadomości, ale także dzielić wiadomość na dwie części i stosować określone reguły do niektórych wersji wiadomości. Ten pakiet doskonale sprawdza się w sytuacjach, gdy zdecydujesz się zarejestrować nowe torby ze zaktualizowanym zestawem definicji komunikatów i chcesz odpowiednio zmienić starsze torby w celu zapewnienia kompatybilności.
Budowanie wykresów
Następnie porozmawiamy o PlotJuggler , niesamowitym kreatorze wykresów (kolejny pakiet autorstwa Davide Faconti ). PlotJuggler pozwala analizować dowolne dane przepływające wewnątrz twojego systemu lub robota. Debugowanie staje się znacznie łatwiejsze dzięki jego funkcjom:
- Możesz tworzyć wykresy dla danych w tematach ROS w czasie rzeczywistym lub ładując jeden lub kilka plików .bag do PlotJuggler .
- Dodawanie i zarządzanie wieloma wykresami danych jest bardzo przyjazne dla użytkownika. Na przykład możesz utworzyć kartę XY, przechwytując dane 2D i wykreślając je, aby zwizualizować pozycje 2D dla każdego znacznika czasu.
- Istnieje wiele wbudowanych możliwości transformacji danych dla wykresów, np. można usunąć przesunięcie danych, skalować je, zintegrować, usunąć wartości odstające i tak dalej. Możesz nawet tworzyć kombinacje transformacji, co jest bardzo przydatne do porównywania danych z różnych źródeł.
- Jeśli nie znalazłeś odpowiedniej funkcji przekształcającej, możesz utworzyć własną. Na przykład możesz napisać funkcję wyodrębniającą i wizualizującą kąt odchylenia z kwaternionów.
- Nie mniej ważny! Zabójcza funkcja: kiedy masz do czynienia z torbami, możesz włączyć „ROS Topic Re-Publisher”. Oznacza to, że możesz przeciągnąć suwak czasu na dowolny moment, a PlotJuggler opublikuje dane ze wszystkich tematów odpowiadających wybranemu znacznikowi czasu. Jest to bardzo przydatne, gdy chcesz zobaczyć obrazy z kamer w określonym momencie, sprawdzić komunikaty diagnostyczne lub nawet zwizualizować każdy fragment danych w innym narzędziu do wizualizacji, takim jak RVIZ.

Dostarczanie wiadomości
Do celów testowania i debugowania ważne jest, aby wyniki eksperymentów były odtwarzane stabilnie. Na przykład, kiedy testujesz algorytm lokalizacji na torbie zawierającej określone dane z czujników, z pewnością oczekujesz tego samego wyniku za każdym razem, gdy uruchamiasz ten algorytm. Jednak logika publikowania-subskrybowania w ROS nie może zagwarantować 100% dostarczenia wiadomości i jest prawdopodobne, że twoje węzły nie będą przetwarzać wszystkich wiadomości w worku w tej samej kolejności.
Pakiet batch_ros dla ROS 1 umożliwia określenie tematów w pliku bag, które są krytyczne dla twojego zadania. Batch_ros będzie oczekiwał na wezwanie usługi synchronizacji po opublikowaniu każdej wiadomości z tych tematów. Zapewnia, że wiadomości z pliku bag zostaną opublikowane po tym, jak Twój węzeł przetworzy je jeden po drugim w określonej kolejności.

Dzięki temu batch_ros zapewnia deterministyczną i powtarzalną obróbkę worków.
Stan nagrywania
Podczas rejestrowania worka domyślna konfiguracja ROS 1 wyświetla tylko komunikat „Recording…”. Jeśli coś pójdzie nie tak, dowiesz się o tym dopiero wtedy, gdy zadanie zostanie zakończone i zakończy się niepowodzeniem. Aby proces nagrywania był bardziej informacyjny, wypróbuj interfejs terminala rosbag_fancy dla ROS 1. Wyświetla on przydatne dane w czasie rzeczywistym, takie jak nagrywane tematy, wykorzystanie pamięci, rozmiar pliku torby i inne — wszystko w bardzo prostej tabeli.

Możesz także zobaczyć liczbę porzuconych wiadomości ( Drops ), co prowadzi nas do następnego problemu i możliwego rozwiązania.
Dziękujemy, że doczytałeś do tego momentu — na pewno lubisz ulepszać swoje doświadczenia z ROS tak samo jak my! Podsumujmy. W tym poście przyjrzeliśmy się następującym pakietom ROS: Bag Database , rosbag_metadata , Webviz , Foxglove Studio , rosbag_editor , ros_bag_migration , PlotJuggler , rosbag_fancy i batch_ros .
Jeśli uznasz ten wybór pakietów za przydatny, daj nam znać, klaszcząc i komentując. Chętnie udostępnimy więcej takich przeglądów na naszym blogu, na przykład, są godne uwagi pakiety ROS do testowania, symulacji, dokumentacji i do innych celów.