Przejdź do głównej zawartości

Czym jest esmini?

esmini to otwartoźródłowy odtwarzacz OpenSCENARIO opracowany przez szwedzką społeczność ADAS. Jest to celowo minimalny odtwarzacz, powszechnie stosowany jako lekka referencja dla OpenSCENARIO 1.x — na tyle mały, by dało się go przeczytać, na tyle szybki, by można go było wbudować, i na tyle przewidywalny, by służył jako test poprawności.

esmini parsuje plik OpenSCENARIO 1.x .xosc, wczytuje sieć drogową OpenDRIVE .xodr, do której ten plik się odwołuje, i wykonuje storyboard — prowadząc uczestników ruchu po trajektoriach lub sterownikach i strumieniując wynikowy stan.

To nie jest pełny symulator fizyczny jak CARLA czy LGSVL. Minimalizm jest tu celem samym w sobie: esmini to otwartoźródłowa linia bazowa odpowiadająca na pytanie „czy ten scenariusz się parsuje i poprawnie odtwarza?”, na którą celuje większość narzędzi OpenSCENARIO.

Ponieważ esmini jest najpowszechniejszym otwartoźródłowym konsumentem OpenSCENARIO 1.x, pytanie „czy działa w esmini?” stało się standardowym testem poprawności dla każdego potoku eksportu OpenSCENARIO. Większość narzędzi produkujących pliki ASAM weryfikuje je względem esmini, zanim ogłosi obsługę OpenSCENARIO — w tym RoadRunner (który eksportuje scenariusze „kompatybilne z dowolnymi symulatorami i odtwarzaczami zgodnymi z OpenSCENARIO, takimi jak CARLA, esmini czy IPG CarMaker”) i wiele innych.

esmini potrzebuje co najmniej:

  • Pliku .xosc (scenariusz OpenSCENARIO).
  • Pliku .xodr (sieć drogowa OpenDRIVE), do którego odwołuje się .xosc.
  • Opcjonalnie pliku .osgb do renderowania w podglądzie 3D lub katalogu Models/ z modelami pojazdów.

Zapakowanie tych elementów w samowystarczalne archiwum zip — nieformalnie nazywane czasem „paczką esmini” — sprawia, że scenariusze łatwo przenosić między maszynami i środowiskami CI.

drawtonomy uruchamia esmini bezpośrednio — skompilowany do WebAssembly — w przeglądarce. Tworzysz storyboard (albo otwierasz istniejący .xosc), naciskasz play, a edytor scenariuszy wykonuje go na stronie: sterowanie odtwarzaniem, przewijanie, kamera śledząca, ślady widma (ghost trails) oraz werdykt PASS / FAIL na podstawie Twoich warunków END i FAIL — bez instalacji, bez osobnego odtwarzacza. Rdzeniem symulacji jest esmini; drawtonomy dokłada wokół niego natywną dla płótna powłokę.

Jeśli wolisz uruchomić scenariusz w natywnej instalacji esmini (dla podglądarki 3D OpenSceneGraph, przeglądów CI albo potoku Python/C++), drawtonomy eksportuje również archiwum zip z .xosc, .xodr i wywołaniem run.sh:

Okno terminala
unzip <nazwa>.zip
esmini --osc <nazwa>/<nazwa>.xosc --window 60 60 1024 768

Warto wiedzieć:

  • Odtwarzacz w przeglądarce czyta OpenSCENARIO 1.x, a eksport ASAM zapisuje OpenSCENARIO 1.0–1.2 / OpenDRIVE 1.8 — oba pokrywają podzbiór specyfikacji: akcje, warunkowe wyzwalacze, fazy i zdarzenia działają, a prymitywy skrzyżowań OpenDRIVE i wpisy <signal> również są emitowane. Skrzyżowania przeniesione bez edycji z zaimportowanego .xodr mają wysoką wierność; skrzyżowania zsyntetyzowane z ręcznie narysowanej sieci pasów nie są jeszcze w pełni wiarygodne. Przeglądy parametrów oraz niestandardowe lub sterowane ML kontrolery nie są dziś emitowane.
  • Modele pojazdów domyślnie korzystają z wbudowanych modeli esmini, więc dodatkowy plik .osgb nie jest wymagany.
  • Do dużych lub sparametryzowanych serii scenariuszy generuj flotę z DSL-a lub biblioteki Python — to pozostaje poza zakresem edytora wizualnego.