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

drawtonomy vs ручной XML OpenSCENARIO

Ручная запись XML OpenSCENARIO — распространённый рабочий процесс, и для многих случаев он правильный.

Когда XML — подходящий путь:

  • Сценарий небольшой, и вам нужен контроль на уровне байтов.
  • Вы генерируете XML программно из DSL или конвейера кодогенерации.
  • Нужны возможности спецификации, которые drawtonomy не генерирует, — перебор параметров, кастомные или ML-управляемые контроллеры, плотные модели транспортных потоков, OpenSCENARIO 1.3.
  • Вы строите новую дорожную сеть с перекрёстками с нуля и вам нужна производственная геометрия <junction> — экспорт перекрёстков в drawtonomy точен, когда переносит импортированный, неотредактированный .xodr, но генерация новой геометрии перекрёстков из нарисованных вручную полос пока даёт невысокую точность.
  • Вы совместно работаете над большим каталогом через git, и важны стабильные byte-level diff’ы XML.

Для этих случаев ручной или сгенерированный кодом XML остаётся каноническим подходом. А вот для создания и запуска одного конкретного сценария — действий, условий срабатывания и вердикта PASS / FAIL — визуальный редактор обычно быстрее.

Визуальный редактор для OpenSCENARIO 1.2, который создаёт полный storyboard прямо на холсте и запускает его в браузере — без написания XML вручную:

  • 2D дорожную сеть вид сверху — полосы, перекрёстки, линии — экспортируемую как OpenDRIVE 1.8 .xodr, плюс размещение транспортных средств, пешеходов, светофоров и дорожной разметки как сущностей (entities).
  • Полный storyboard: фазы (акты), события, все 35 действий из спецификации (скорость, смена полосы, телепортация, следование по траектории, активация контроллера и другие), а также все 19 условий срабатывания (плюс 6 продвинутых), комбинируемые логикой AND / OR.
  • Условия END и FAIL, которые дают вердикт PASS / FAIL при прогоне сценария.
  • Выполнение прямо в браузере на esmini, скомпилированном в WebAssembly, — элементы управления воспроизведением, покадровая перемотка, камера слежения, «призрачные» траектории (ghost trails) и опциональное 3D-превью прогона — так что вы можете просмотреть выполнение сценария, не покидая страницу. Тот же .xosc без изменений запускается и в нативной установке esmini.
  • Экспорт в OpenSCENARIO 1.0, 1.1 или 1.2 (1.3 пока недоступна), а также примитивы OpenDRIVE <junction>/<connection> и дорожные знаки как записи <signal>.

Реальные пробелы, которые по-прежнему требуют ручного или сгенерированного XML:

  • Экспорт в OpenSCENARIO 1.3 — формат поддерживается при импорте, но пока не предлагается как цель экспорта.
  • Производственная геометрия OpenDRIVE <junction> при построении дорожной сети с нуля. Связность перекрёстков переносится точно, когда через drawtonomy проходит импортированный, неотредактированный .xodr; генерация новой геометрии перекрёстков из нарисованных вручную полос пока даёт невысокую точность, а аналитическая клотоидная геометрия не моделируется.
  • Перебор параметров, кастомные или ML-управляемые контроллеры и плотные модели транспортных потоков.
  • OpenSCENARIO 2.0 / M-SDL (drawtonomy ориентируется на семейство 1.x).

Для этих задач ручная запись или генерация XML остаётся правильным путём.

Для большинства сценариев, которые вы создаёте и запускаете целиком в drawtonomy, браузер служит источником истины. К ручному XML стоит обращаться только на краях:

  1. Создайте сцену и storyboard в drawtonomy — сеть полос, участников, действия, условия срабатывания, условия end / fail — и запустите, чтобы убедиться в вердикте.
  2. Если нужна возможность спецификации, которую drawtonomy не генерирует (примитив перекрёстка, перебор параметров, кастомный контроллер), экспортируйте .xosc и отредактируйте вручную или сгенерируйте эту часть кодом.
  3. Если вам нужны byte-level diff’ы в git для большого каталога, храните канонический XML в коде, а drawtonomy используйте для создания, ревью и воспроизведения отдельных конкретных сценариев.

drawtonomy — это место, где вы создаёте и запускаете сценарий; ручной XML остаётся запасным путём для тех углов спецификации, до которых drawtonomy пока не дотягивается.

Ручной XML — фундаментальный путь создания OpenSCENARIO: каждый другой инструмент в экосистеме в конечном счёте производит его (или эквивалент на DSL). Экспортёр drawtonomy, scenariogeneration, Scenic, RoadRunner, Blender DSC и остальные — все рано или поздно генерируют XML. Прямое чтение и запись XML — это то, что держит стандарт стандартом, и инструменты, которые его производят, выигрывают от межинструментальной совместимости, выстроенной вокруг него сообществом.