Что такое OpenSCENARIO?
OpenSCENARIO — открытый стандарт ASAM для описания динамических сценариев вождения: как эго-автомобиль и другие участники движения действуют во времени, в форме, которую могут воспроизвести симуляторы. Это де-факто формат обмена для сценарного тестирования систем автоматизированного вождения.
Две семьи OpenSCENARIO
Заголовок раздела «Две семьи OpenSCENARIO»Под одним названием скрываются два во многом независимых стандарта:
- OpenSCENARIO 1.x — на основе XML. Стабильный, широко поддерживаемый. Текущая производственная цель для большинства инструментов — редакция 1.3.
- OpenSCENARIO 2.0 / DSL — предметно-ориентированный язык для абстрактных, параметрических и вероятностных сценариев. Новее, выразительнее, поддержка инструментами растёт.
Форматы несовместимы между собой, но сегодня именно 1.x потребляют большинство симуляторов и конвейеров тестирования по SOTIF / ISO 21448.
Что входит в файл OpenSCENARIO 1.x
Заголовок раздела «Что входит в файл OpenSCENARIO 1.x»Сценарий 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 в этой картине
Заголовок раздела «Место drawtonomy в этой картине»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 — быстрый визуальный путь от идеи (или текстового промпта) до исполняемого, проверяемого сценария.
Дополнительное чтение
Заголовок раздела «Дополнительное чтение»- Редактор сценариев — создавайте фазы, события, действия и условия срабатывания в браузере, затем запускайте их.
- Создайте свой первый сценарий — смена полосы с пустого холста.
- Термины RoadRunner и OpenSCENARIO — таблица соответствия между двумя терминологиями.
- Что такое OpenDRIVE?
- Что такое esmini?
- Сравнение: drawtonomy vs ручной XML OpenSCENARIO