Перейти к содержимому

Что такое OpenSCENARIO?

OpenSCENARIO — открытый стандарт ASAM для описания динамических сценариев вождения: как эго-автомобиль и другие участники движения действуют во времени в форме, воспроизводимой симуляторами. Это де-факто формат обмена для сценарного тестирования систем автоматизированного вождения.

Существуют два во многом независимых стандарта, разделяющих одно название:

  • OpenSCENARIO 1.x — на основе XML. Стабильный, широко поддерживаемый. Версия 1.3 — текущая производственная цель для большинства инструментов.
  • OpenSCENARIO 2.0 / DSL — предметно-ориентированный язык для абстрактных, параметрических и вероятностных сценариев. Более новый и выразительный, поддержка инструментами растёт.

Форматы несовместимы между собой, но 1.x — то, что сегодня потребляют большинство симуляторов и конвейеров тестирования по SOTIF / ISO 21448.

Сценарий 1.x обычно состоит из:

  • Блока RoadNetwork — как правило, файл OpenDRIVE .xodr, опционально дополненный файлом сцены .osgb.
  • Блока Entities — транспортные средства, пешеходы и другие объекты.
  • Storyboard — упорядоченные по времени акты, манёвры и события.
  • Блока Init — начальные положения, скорости и назначения параметров.

XML читается естественно для небольшого отдельного сценария, но становится сложным в обслуживании при масштабировании до десятков вариантов. Именно здесь помогают инструменты создания сценариев и DSL.

  • Ручная запись XML. Подходит для небольших команд и эталонных фикстур.
  • DSL / кодогенерация. OpenSCENARIO 2.0 DSL, Scenic или внутренние генераторы выдают XML из описаний высокого уровня.
  • Python-библиотеки. scenariogeneration (бывший pyoscx / pyodrx) предоставляет программный API для OpenSCENARIO + OpenDRIVE с покрытием версий V1.0 — V1.3.1.
  • Движки сценариев симуляторов. CARLA ScenarioRunner определяет и выполняет сценарии для CARLA с поддержкой Python и OpenSCENARIO 1.0 / 2.0.
  • Визуальные редакторы. MathWorks RoadRunner (экспорт XML и DSL), Truevision Designer, Blender Driving Scenario Creator и drawtonomy (браузерная доска с частичным экспортом).

В реальных проектах часто используют комбинацию подходов: Python-библиотека или DSL для самих сценариев плюс визуальный редактор для дорожной сети.

drawtonomy — это браузерная доска с частичным экспортером OpenSCENARIO 1.3 / OpenDRIVE 1.8. По данным документации экспортёра:

  • Разместите полосы, перекрёстки, транспортные средства, пешеходов, светофоры и разметку на двумерном холсте вид сверху.
  • Экспортируйте zip с .xosc + .xodr + run.sh, который воспроизводит простые сцены в esmini.

Экспортёр намеренно покрывает подмножество спецификации. Что он не генерирует сегодня (отмечено как пункты дорожной карты в SDK):

  • Примитивы перекрёстков OpenDRIVE (<junction>).
  • Дорожные знаки как записи OpenDRIVE <signal>.
  • Профили ускорения, события остановки, маршруты с учётом сигналов, действия смены полосы или сложные storyboard с несколькими участниками.
  • Условные триггеры, перебор параметров, нестандартные контроллеры или управляемые ML.

На практике воспринимайте экспорт OpenSCENARIO из drawtonomy как отправную точку-черновик: полезен как база для ручного редактирования или для создания иллюстрации к сценарию, но не как путь к профессиональному созданию сценариев.