ما هو OpenSCENARIO؟
OpenSCENARIO معيار مفتوح صادر عن ASAM لوصف سيناريوهات القيادة الديناميكية — ما تفعله المركبة الأساسية وسائر المشاركين في حركة المرور عبر الزمن، بصيغة تستطيع المحاكيات إعادة تشغيلها. وهو صيغة التبادل الفعلية لاختبار أنظمة القيادة الآلية القائم على السيناريوهات.
عائلتا OpenSCENARIO
Section titled “عائلتا OpenSCENARIO”ثمة مواصفتان مستقلتان تقريبًا تحملان الاسم نفسه:
- OpenSCENARIO 1.x — مبنية على XML. مستقرة ومدعومة على نطاق واسع، والمراجعة 1.3 هي هدف الإنتاج الحالي لمعظم الأدوات.
- OpenSCENARIO 2.0 / DSL — لغة متخصصة للسيناريوهات المجردة والمعاملية والاحتمالية. أحدث عهدًا وأكثر تعبيرية، مع دعم أدوات متزايد.
الصيغتان غير قابلتين للتبادل، لكن 1.x هي ما تستهلكه معظم المحاكيات وقنوات اختبار SOTIF / ISO 21448 اليوم.
محتوى ملف OpenSCENARIO 1.x
Section titled “محتوى ملف OpenSCENARIO 1.x”يتضمن سيناريو 1.x عادةً:
- مرجع RoadNetwork — عادةً ملف OpenDRIVE بامتداد
.xodr، مع ملف مشهد اختياري بصيغة.osgb. - كتلة 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 (يُصدِّر XML وDSL)، وTruevision Designer (مُركَّز على OpenDRIVE)، وBlender Driving Scenario Creator (إضافة Blender)، وdrawtonomy (يؤلف لوحات قصة OpenSCENARIO 1.x كاملة ويشغّلها في المتصفح على esmini-WASM).
يعتمد تأليف السيناريوهات في الإنتاج عادةً على مزيج من هذه الأدوات — غالبًا مكتبة Python أو DSL للسيناريوهات نفسها، إلى جانب محرر مرئي لشبكة الطرق.
مكانة drawtonomy
Section titled “مكانة drawtonomy”drawtonomy بيئة تأليف وتشغيل لـ OpenSCENARIO 1.x في المتصفح — سبورة بيضاء يتحول فيها المشهد الذي ترسمه إلى لوحة قصة قابلة للتشغيل. يستورد OpenSCENARIO 1.x ويُصدِّر OpenSCENARIO من 1.0 حتى 1.2 (1.3 قادم قريبًا)، إلى جانب OpenDRIVE 1.8:
- ضع المسارات والتقاطعات والمركبات والمشاة وإشارات المرور وعلامات الطرق على لوحة رسم ثنائية الأبعاد من أعلى.
- ابنِ لوحة القصة مرئيًا — الأفعال (المراحل) والأحداث و35 فعلًا و19 شرط تشغيل — وشغّلها في المتصفح على esmini المُصرَّف إلى WebAssembly، مع معاينة ثلاثية الأبعاد (كاميرات Chase / منظور علوي / السائق) إلى جانب اللوحة الثنائية الأبعاد.
- استورد زوج
.xosc+.xodrقائمًا وعدِّله، أو صدِّر الزوج لتشغيله في نسخة esmini أصلية. - ولِّد سيناريو من وصف بلغة طبيعية: يصوغ drawtonomy لوحة قصة، ويتحقق منها عبر أربع بوابات تحقق (من بينها تشغيل فعلي على esmini)، ثم يطبِّقها على اللوحة.
لم يعد المُصدِّر يقتصر على ما هو مُخطَّط له مستقبلًا: فهو يُصدِر الآن بنى OpenDRIVE من <junction> و<connection> و<laneLink> وكذلك إدخالات <signal>. الفارق الذي يهم هنا هو الدقة: الطرق التي تُنقَل دون تعديل من ملف .xodr مستورَد تحافظ على طوبولوجيا تقاطعها الأصلية بدقة عالية، أما التقاطعات المُركَّبة من مسارات ترسمها من الصفر فليست موثوقة بعد. ولا يزال غائبًا: جولات المعاملات (parameter sweeps) والمتحكمات المخصصة أو المستندة إلى تعلم الآلة.
أما أساطيل السيناريوهات — الدفعات المعاملية الكبيرة — فالأفضل توليدها من DSL أو مكتبة Python؛ يبقى ذلك خارج نطاق المحرر المرئي. ما يضيفه drawtonomy هو مسار مرئي سريع من فكرة (أو وصف بلغة طبيعية) إلى سيناريو قابل للتشغيل والمراجعة.
قراءة ذات صلة
Section titled “قراءة ذات صلة”- محرر السيناريو — ألِّف المراحل والأحداث والأفعال والشروط في المتصفح، ثم شغّلها.
- بناء أول سيناريو — تغيير مسار من لوحة فارغة.
- مصطلحات RoadRunner وOpenSCENARIO — جدول ترجمة بين المفردتين.
- ما هو OpenDRIVE؟
- ما هو esmini؟
- مقارنة: drawtonomy مقابل كتابة OpenSCENARIO XML يدويًا