تخطَّ إلى المحتوى

ما هو OpenSCENARIO؟

OpenSCENARIO هو معيار مفتوح صادر عن ASAM لوصف سيناريوهات القيادة الديناميكية — ما تفعله المركبة الأساسية وسائر المشاركين في حركة المرور عبر الزمن، بصيغة تستطيع المحاكيات إعادة تشغيلها. وهو صيغة التبادل الفعلية لاختبار أنظمة القيادة الآلية.

ثمة مواصفتان مستقلتان تقريبًا تحملان الاسم نفسه:

  • OpenSCENARIO 1.x — مبنية على XML. مستقرة ومدعومة على نطاق واسع. يُعدّ الإصدار 1.3 هدف الإنتاج الحالي لمعظم الأدوات.
  • OpenSCENARIO 2.0 / DSL — لغة متخصصة للسيناريوهات المجردة والمعاملية والاحتمالية. أحدث عهدًا وأكثر تعبيرية، مع دعم أدوات متزايد.

الصيغتان غير قابلتين للتبادل، لكن 1.x هي ما تستهلكه معظم المحاكيات وقنوات اختبار SOTIF / ISO 21448 اليوم.

يتضمن سيناريو 1.x عادةً:

  • مرجع RoadNetwork — عادةً ملف OpenDRIVE بامتداد .xodr، مع ملف مشهد اختياري.
  • كتلة Entities — المركبات والمشاة والكائنات المتنوعة.
  • Storyboard — الأحداث والمناورات المرتبة زمنيًا التي تؤديها الكيانات.
  • إجراءات Init — المواضع الابتدائية والسرعات وتعيينات المعاملات.

يمكن قراءة XML بسهولة في السيناريوهات القصيرة الفردية، لكنه يصبح صعب الصيانة حين تتضاعف الأشكال. هنا يبرز دور أدوات التأليف ولغات DSL.

أساليب التأليف الشائعة

Section titled “أساليب التأليف الشائعة”
  • كتابة XML يدويًا. شائعة في الفرق الصغيرة ولحالات الاختبار المرجعية.
  • DSL / توليد الشيفرة. تُصدر OpenSCENARIO 2.0 DSL وScenic ومولدات داخلية XML من أوصاف عالية المستوى.
  • مكتبات Python. توفر scenariogeneration (المعروفة سابقًا بـ pyoscx / pyodrx) واجهة برمجية لـ OpenSCENARIO + OpenDRIVE، مع تغطية لإصدارات V1.0 حتى V1.3.1.
  • محركات سيناريو مدمجة في المحاكي. يُعرِّف CARLA ScenarioRunner السيناريوهات وينفذها داخل CARLA، مع دعم Python وOpenSCENARIO 1.0 / 2.0.
  • محررات مرئية. MathWorks RoadRunner وTruevision Designer وBlender Driving Scenario Creator وdrawtonomy (سبورة بيضاء في المتصفح مع مُصدِّر جزئي).

يعتمد تأليف السيناريوهات في الإنتاج عادةً على مزيج من هذه الأدوات — في الغالب مكتبة Python أو DSL للسيناريوهات نفسها، إلى جانب محرر مرئي لشبكة الطرق.

drawtonomy سبورة بيضاء في المتصفح مع مُصدِّر جزئي لـ OpenSCENARIO 1.3 / OpenDRIVE 1.8. وفقًا لـتوثيق المُصدِّر:

  • ضع المسارات والتقاطعات والمركبات والمشاة وإشارات المرور وعلامات الطرق على لوحة رسم ثنائية الأبعاد من أعلى.
  • صدِّر ملف .xosc + .xodr + run.sh في أرشيف مضغوط يُشغَّل في esmini.

يغطي المُصدِّر مجموعة فرعية مقصودة من المواصفة. ما لا يُصدِّره حاليًا (مذكور كبنود في خارطة طريق SDK):

  • بنية تقاطع OpenDRIVE (<junction>).
  • إشارات المرور كإدخالات <signal> في OpenDRIVE.
  • ملفات تسارع، وأحداث توقف أو إقامة، ومسارات واعية بالإشارات، وإجراءات تغيير المسار، ولوحات قصة متعددة الممثلين الأكثر ثراءً.
  • المشغّلات الشرطية، وجولات المعاملات، والمتحكمات المخصصة أو المستندة إلى تعلم الآلة.

من الناحية العملية، تعامَل مع تصدير drawtonomy لـ OpenSCENARIO باعتباره نقطة بداية للرسم التخطيطي — مفيد كخط أساس تتولى تحريره يدويًا أو لإنتاج الشكل التوضيحي المرافق للسيناريو، وليس مسارًا لتأليف سيناريوهات الإنتاج.