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

Что такое 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 (фокус на OpenDRIVE), Blender Driving Scenario Creator (надстройка для Blender) и drawtonomy (создаёт полноценные storyboard OpenSCENARIO 1.x и запускает их прямо в браузере на esmini-WASM).

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

drawtonomy — это среда для создания и запуска OpenSCENARIO 1.x прямо в браузере: доска, на которой нарисованная сцена превращается в исполняемый storyboard. Она импортирует OpenSCENARIO 1.x и экспортирует OpenSCENARIO 1.0–1.2 (1.3 скоро появится), а также OpenDRIVE 1.8:

  • Размещайте полосы, перекрёстки, транспортные средства, пешеходов, светофоры и дорожную разметку на двумерном холсте вид сверху.
  • Собирайте storyboard визуально — фазы, события, 35 действий и 19 условий срабатывания — и запускайте его в браузере на esmini, скомпилированном в WebAssembly, с 3D-превью (камеры Chase / вид сверху / от водителя) рядом с 2D-холстом.
  • Импортируйте существующую пару .xosc + .xodr и редактируйте её, либо экспортируйте пару для нативного запуска в esmini.
  • Генерируйте сценарий из описания на естественном языке: drawtonomy набрасывает storyboard, проверяет его через четыре проверочных шлюза (включая реальный прогон в esmini) и применяет результат к холсту.

Экспортёр теперь генерирует структуры OpenDRIVE <junction> / <connection> / <laneLink> и записи <signal> — это больше не пункт дорожной карты. Важен разрез по точности: дороги, перенесённые без изменений из импортированного .xodr, сохраняют исходную топологию перекрёстков с высокой точностью, а вот перекрёстки, синтезированные из полос, нарисованных с нуля, пока недостаточно надёжны. Из нереализованного остаются перебор параметров (parameter sweep) и кастомные или управляемые ML контроллеры.

Флоты сценариев — большие параметризованные пакеты — по-прежнему лучше генерировать из DSL или Python-библиотеки; это осознанно вне области визуального редактора. Что даёт drawtonomy — быстрый визуальный путь от идеи (или текстового промпта) до исполняемого, проверяемого сценария.