9 niesamowitych narzędzi open source do zarządzania Twoimi rosbagami

Nov 24 2022
Wybór dokonany przez inżynierów Evocargo Niezależnie od tego, czy dopiero zaczynasz z ROS, czy już jesteś zaawansowanym programistą, możesz odnieść 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.

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ć.

Rysunek 1. Lista plików worka ROS

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!

Rysunek 2. Przeglądanie worków w Bag Database

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_indexerskrypt, który wyświetla ogólne podsumowanie zawartości torby w jednym obrazie PNG.

Rysunek 3. Podsumowanie worka wygenerowane za pomocą skryptu w Bag Database

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_indexerwygląda następująco:

Rysunek 4. Okno dodawania skryptów post-processingu

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.

Rysunek 8. Dodawanie do toreb metadanych specyficznych dla produktu

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.

Rysunek 5. Ta ilustracja pochodzi z artykułu „Webviz: An Open Source Platform for Robotics Data Visualization” autorstwa Esther S. Weon

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 ).

Rysunek 6. Otwieranie aplikacji internetowej Webviz z menu Bag Database

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.

Rysunek 7. Odtwarzanie torby w interfejsie Foxglove

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 .
  • Rysunek 9. Przesuwanie się przez plik worka
  • 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.

Rysunek 10. Po wysłaniu wiadomości na jeden z tematów odtwarzanie zatrzymuje się i oczekuje na wywołanie usługi wyzwalającej z twojego węzła, która zasygnalizuje odtwarzaczowi, aby kontynuował publikowanie

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.

Rysunek 11. Ta ilustracja pochodzi ze strony rosbag_fancy na githubie

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.