इसे छोड़कर कंटेंट पर जाएं

OpenSCENARIO क्या है?

OpenSCENARIO ASAM का एक ओपन स्टैंडर्ड है जो डायनामिक ड्राइविंग सिनारियो का वर्णन करता है — ego वाहन और बाकी ट्रैफ़िक प्रतिभागी समय के साथ क्या करते हैं, इस रूप में कि कोई भी सिम्युलेटर उसे रीप्ले कर सके। ऑटोमेटेड ड्राइविंग सिस्टम की सिनारियो-आधारित टेस्टिंग के लिए यही de-facto एक्सचेंज फ़ॉर्मैट है।

OpenSCENARIO के दो परिवार

Section titled “OpenSCENARIO के दो परिवार”

एक ही नाम की छतरी तले दो लगभग स्वतंत्र स्पेक हैं:

  • OpenSCENARIO 1.x — XML-आधारित। स्टेबल और व्यापक रूप से सपोर्टेड। ज़्यादातर टूल आज भी 1.3 रिविज़न को अपना प्रोडक्शन टारगेट मानते हैं।
  • OpenSCENARIO 2.0 / DSL — एब्स्ट्रैक्ट, पैरामीट्रिक और प्रोबैबिलिस्टिक सिनारियो के लिए एक डोमेन-स्पेसिफ़िक लैंग्वेज। नई, ज़्यादा एक्सप्रेसिव, और टूलिंग सपोर्ट लगातार बढ़ रहा है।

दोनों फ़ॉर्मैट आपस में बदले नहीं जा सकते, लेकिन आज ज़्यादातर सिम्युलेटर और SOTIF / ISO 21448 टेस्टिंग पाइपलाइन 1.x पर ही चलती हैं।

OpenSCENARIO 1.x फ़ाइल में क्या होता है

Section titled “OpenSCENARIO 1.x फ़ाइल में क्या होता है”

एक 1.x सिनारियो आमतौर पर इनसे बनता है:

  • एक RoadNetwork रेफ़रेंस — आमतौर पर एक OpenDRIVE .xodr फ़ाइल, चाहें तो .osgb जैसी scene-graph फ़ाइल के साथ।
  • एक Entities ब्लॉक — वाहन, पैदल यात्री, और बाकी ऑब्जेक्ट।
  • Storyboard — वे टाइम-ऑर्डर्ड acts, maneuvers, और events जो entities करती हैं।
  • Init actions — शुरुआती पोज़िशन, स्पीड, और पैरामीटर असाइनमेंट।

एक छोटे सिनारियो के लिए यह XML पढ़ने में सहज लगता है, लेकिन जैसे ही आप दर्जनों वेरिएंट तक स्केल करते हैं, इसे मेंटेन करना मुश्किल हो जाता है। यहीं ऑथरिंग टूल और DSL काम आते हैं।

  • हाथ से लिखा XML। छोटी टीमों और ग्राउंड-ट्रुथ फ़िक्स्चर के लिए आम।
  • DSL / codegen। OpenSCENARIO 2.0 DSL, Scenic, या इन-हाउस जेनरेटर हाई-लेवल विवरण से XML emit करते हैं।
  • Python लाइब्रेरी। scenariogeneration (पहले pyoscx / pyodrx) OpenSCENARIO + OpenDRIVE के लिए एक प्रोग्रामैटिक API देती है, और OpenSCENARIO V1.0 से V1.3.1 तक कवर करती है।
  • सिम्युलेटर-बंडल्ड scenario engine। 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 भी:

  • 2D टॉप-डाउन कैनवस पर लेन, इंटरसेक्शन, वाहन, पैदल यात्री, ट्रैफ़िक लाइट, और रोड मार्किंग रखें।
  • स्टोरीबोर्ड को विज़ुअली बनाएँ — फ़ेज़, इवेंट, 35 actions, और 19 ट्रिगर कंडीशन — और इसे ब्राउज़र में esmini पर चलाएँ, जो WebAssembly में कंपाइल है, साथ ही 2D कैनवस के बगल में 3D प्रीव्यू (Chase / bird’s-eye / driver कैमरा) भी मिलता है।
  • मौजूदा .xosc + .xodr जोड़ी इम्पोर्ट करके एडिट करें, या नेटिव esmini रन के लिए वह जोड़ी एक्सपोर्ट करें।
  • नेचुरल-लैंग्वेज विवरण से सिनारियो जेनरेट करें: drawtonomy एक स्टोरीबोर्ड ड्राफ़्ट करता है, उसे चार validation gate (जिसमें एक वास्तविक esmini रन भी शामिल है) पर जाँचता है, और फिर उसे कैनवस पर अप्लाई कर देता है।

अब एक्सपोर्टर OpenDRIVE <junction> / <connection> / <laneLink> स्ट्रक्चर और <signal> एंट्री भी emit करता है — यह अब कोई रोडमैप आइटम नहीं, बल्कि मौजूदा फ़ीचर है। यहाँ जो सटीकता का फ़र्क समझना ज़रूरी है: किसी इम्पोर्ट किए गए .xodr से बिना एडिट किए आगे ले जाई गई रोड अपनी मूल junction टोपोलॉजी को उच्च फ़िडेलिटी के साथ बरक़रार रखती हैं, लेकिन शुरू से हाथ से खींची गई लेन से synthesize किए गए junction अभी उतने भरोसेमंद नहीं हैं। अभी भी बाकी: parameter sweep और custom या ML-driven controller।

सिनारियो फ़्लीट — बड़े पैमाने के पैरामीटराइज़्ड बैच — अभी भी किसी DSL या Python लाइब्रेरी से जेनरेट करना ही बेहतर तरीका है; यह विज़ुअल एडिटर के दायरे से बाहर है। drawtonomy जो जोड़ता है वह है किसी आइडिया (या नेचुरल-लैंग्वेज प्रॉम्प्ट) से एक रन-करने-योग्य, रिव्यू-करने-योग्य सिनारियो तक पहुँचने का तेज़ विज़ुअल रास्ता।