דלגו לתוכן

מה זה OpenSCENARIO?

OpenSCENARIO הוא תקן פתוח של ASAM לתיאור תרחישי נהיגה דינמיים — מה שרכב האגו ושאר משתתפי התנועה עושים לאורך זמן, בפורמט שסימולטורים יודעים להריץ מחדש. זהו פורמט חילופי הנתונים המקובל בפועל לבדיקות מבוססות-תרחישים של מערכות נהיגה אוטומטיות.

מאחורי השם המשותף מסתתרות למעשה שתי מפרטים עצמאיים כמעט לגמרי:

  • OpenSCENARIO 1.x — מבוסס XML, יציב ונתמך בהרחבה. גרסה 1.3 היא יעד הייצור הנוכחי של רוב הכלים.
  • OpenSCENARIO 2.0 / DSL — שפה ייעודית לתרחישים מופשטים, פרמטריים והסתברותיים. חדשה יותר, עוצמתית יותר, ותמיכת הכלים בה הולכת וגדלה.

שני הפורמטים אינם בני-החלפה, אבל כיום רוב הסימולטורים וצינורות הבדיקה של SOTIF / ISO 21448 עובדים עם 1.x.

תרחיש 1.x טיפוסי בנוי מ:

  • הפניית RoadNetwork — לרוב קובץ OpenDRIVE מסוג .xodr, לעיתים יחד עם קובץ scene-graph כמו .osgb.
  • בלוק Entities — הרכבים, הולכי הרגל ושאר האובייקטים בסצנה.
  • Storyboard — הפעולות, התמרונים והאירועים המסודרים בציר זמן שהישויות מבצעות.
  • פעולות Init — מיקומי התחלה, מהירויות והגדרת פרמטרים.

ה-XML קריא בקלות עבור תרחיש קצר בודד, אבל הופך לקשה לתחזוקה כשעוברים לעשרות וריאציות. כאן נכנסים לתמונה כלי כתיבה ו-DSL.

  • XML כתוב ידנית. נפוץ בצוותים קטנים ובקבצי ייחוס (ground truth).
  • 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, עם תצוגה מקדימה תלת-ממדית (מצלמות מעקב / מבט-על / נהג) לצד הקנבס הדו-ממדי.
  • ייבוא זוג קיים של .xosc + .xodr ועריכתו, או ייצוא הזוג להרצה על התקנת esmini רגילה.
  • יצירת תרחיש מתיאור בשפה טבעית: drawtonomy מנסח טיוטת storyboard, בודק אותה מול ארבעה שערי אימות (כולל הרצה אמיתית של esmini), ומיישם אותה על הקנבס.

המייצא כיום פולט גם מבני OpenDRIVE מסוג <junction> / <connection> / <laneLink> וגם רשומות <signal> — זה כבר לא סעיף בתוכנית העתידית. הפער החשוב באמינות: כבישים שעוברים ללא עריכה מקובץ .xodr מיובא שומרים על טופולוגיית הצמתים המקורית שלהם ברמת דיוק גבוהה, אבל צמתים שנוצרים מנתיבים שרישמת מאפס עדיין לא אמינים דיים. מה שעדיין חסר: מעבר פרמטרים (parameter sweep) ובקרים מותאמים אישית או מבוססי-ML.

צי תרחישים — אצוות גדולות ופרמטריות — עדיין עדיף להפיק מ-DSL או מספריית Python; זה נשאר מחוץ לטווח של העורך הוויזואלי. מה ש-drawtonomy מוסיפה הוא נתיב ויזואלי מהיר מרעיון (או פרומפט בשפה טבעית) לתרחיש רץ וניתן לסקירה.