drawtonomy बनाम हाथ से लिखा OpenSCENARIO XML
हाथ से लिखा OpenSCENARIO XML
Section titled “हाथ से लिखा OpenSCENARIO XML”OpenSCENARIO XML हाथ से लिखना एक आम वर्कफ़्लो है, और कई मामलों में यही सही तरीका भी है।
XML सही रास्ता कब है:
- सीनारियो छोटा है और आपको बाइट-लेवल कंट्रोल चाहिए।
- आप किसी DSL या codegen पाइपलाइन से प्रोग्रामेटिकली XML जनरेट कर रहे हैं।
- आपको ऐसे स्पेक फ़ीचर चाहिए जो drawtonomy अभी एमिट नहीं करता — parameter sweep, कस्टम/ML कंट्रोलर, घने ट्रैफ़िक-फ़्लो मॉडल, OpenSCENARIO 1.3।
- आप शुरू से एक नया रोड नेटवर्क junctions के साथ बना रहे हैं और आपको प्रोडक्शन-ग्रेड
<junction>ज्योमेट्री चाहिए — drawtonomy का junction एक्सपोर्ट तब सटीक होता है जब कोई इम्पोर्ट की गई, बिना-एडिट की गई.xodrआगे बढ़ाई जाती है, लेकिन हाथ से बनाई गई लेन से नई junction ज्योमेट्री जनरेट करना अभी उतना सटीक नहीं है। - आप git पर एक बड़े catalog पर सहयोग कर रहे हैं जहाँ स्थिर, बाइट-लेवल XML diff मायने रखते हैं।
इन मामलों के लिए हाथ से लिखा या codegen किया गया XML ही मानक तरीका है। लेकिन किसी एक कॉन्क्रीट सीनारियो को ऑथर करने और चलाने के लिए — actions, triggers, और एक PASS/FAIL वर्डिक्ट के साथ — आमतौर पर एक विज़ुअल एडिटर तेज़ पड़ता है।
drawtonomy आज क्या एक्सप्रेस कर सकता है
Section titled “drawtonomy आज क्या एक्सप्रेस कर सकता है”OpenSCENARIO 1.2 के लिए एक विज़ुअल एडिटर, जो पूरा स्टोरीबोर्ड कैनवस पर ऑथर करता है और उसे ब्राउज़र में चलाता है — बिना एक भी लाइन XML टाइप किए:
- एक 2D टॉप-डाउन रोड नेटवर्क — लेन, इंटरसेक्शन, लाइनस्ट्रिंग — जो OpenDRIVE 1.8
.xodrके तौर पर एक्सपोर्ट होता है, साथ ही व्हीकल, पैदल यात्री, ट्रैफ़िक लाइट और रोड मार्किंग को एंटिटी के तौर पर प्लेस करने की सुविधा। - एक पूरा स्टोरीबोर्ड: phases (acts), events, स्पेक के सभी 35 actions (speed, lane change, teleport, follow-trajectory, activate-controller और बाक़ी), और सभी 19 trigger कंडीशन (साथ में 6 एडवांस्ड वाले भी) — जिन्हें AND/OR लॉजिक से जोड़ा जा सकता है।
- END और FAIL कंडीशन, जो सीनारियो चलने पर एक PASS/FAIL वर्डिक्ट देते हैं।
- WebAssembly में कंपाइल किए गए esmini पर इन-ब्राउज़र एग्ज़िक्यूशन — ट्रांसपोर्ट कंट्रोल, फ़्रेम-एक्यूरेट सीक, फ़ॉलो कैमरा, घोस्ट ट्रेल, और रन का एक वैकल्पिक 3D प्रीव्यू — ताकि आप पेज छोड़े बिना ही चल रहे सीनारियो को रिव्यू कर सकें। वही
.xoscकिसी नेटिव esmini इंस्टॉल पर भी बिना किसी बदलाव के चलता है। - OpenSCENARIO 1.0, 1.1, या 1.2 में एक्सपोर्ट (1.3 अभी उपलब्ध नहीं है), साथ ही OpenDRIVE
<junction>/<connection>प्रिमिटिव और ट्रैफ़िक साइन को<signal>एंट्री के तौर पर।
drawtonomy क्या एक्सप्रेस नहीं करता
Section titled “drawtonomy क्या एक्सप्रेस नहीं करता”ये वाकई ऐसे गैप हैं जिनके लिए अभी भी हाथ से लिखा या जनरेट किया हुआ XML ही चाहिए:
- OpenSCENARIO 1.3 एक्सपोर्ट — इम्पोर्ट के लिए यह फ़ॉर्मैट सपोर्टेड है, लेकिन अभी एक्सपोर्ट टारगेट के तौर पर उपलब्ध नहीं है।
- शुरू से बनाए गए रोड नेटवर्क के लिए प्रोडक्शन-ग्रेड OpenDRIVE
<junction>ज्योमेट्री। Junction कनेक्टिविटी तब सटीक तरीके से राउंड-ट्रिप होती है जब कोई इम्पोर्ट की गई, बिना-एडिट की गई.xodrआगे बढ़ाई जाती है; हाथ से बनाई गई लेन से नई junction ज्योमेट्री जनरेट करना अभी कम सटीक है, और एनालिटिकल क्लोथॉइड ज्योमेट्री मॉडल नहीं की जाती। - Parameter sweep, कस्टम या ML-चालित कंट्रोलर, और घने ट्रैफ़िक-फ़्लो मॉडल।
- OpenSCENARIO 2.0 / M-SDL (drawtonomy का टारगेट 1.x है)।
इन मामलों के लिए हाथ से लिखा या जनरेट किया हुआ XML ही सही रास्ता बना रहता है।
एक सटीक हाइब्रिड तरीका
Section titled “एक सटीक हाइब्रिड तरीका”ज़्यादातर सीनारियो जिन्हें आप पूरी तरह drawtonomy में ऑथर और रन करते हैं, उनके लिए ब्राउज़र ही सोर्स ऑफ़ ट्रुथ है। हाथ से लिखे XML का सहारा सिर्फ़ किनारों पर लें:
- drawtonomy में सीन और स्टोरीबोर्ड ऑथर करें — लेन नेटवर्क, पार्टिसिपेंट, actions, triggers, end/fail कंडीशन — और वर्डिक्ट कन्फ़र्म करने के लिए उसे चलाएँ।
- अगर आपको कोई ऐसा स्पेक फ़ीचर चाहिए जो drawtonomy एमिट नहीं करता (एक junction प्रिमिटिव, एक parameter sweep, एक कस्टम कंट्रोलर), तो
.xoscएक्सपोर्ट करें और उस एक हिस्से को हाथ से एडिट या codegen करें। - जब आपको एक बड़े catalog पर बाइट-लेवल git diff चाहिए हों, तो कैनॉनिकल XML कोड में रखें और drawtonomy का इस्तेमाल अलग-अलग कॉन्क्रीट सीनारियो को ऑथर, रिव्यू और रीप्ले करने के लिए करें।
सीनारियो को ऑथर और रन करने की जगह drawtonomy है; जिन स्पेक कोनों तक यह अभी नहीं पहुँचता, उनके लिए हाथ से लिखा XML एक भरोसेमंद एस्केप हैच बना रहता है।
उसी OpenSCENARIO कम्युनिटी का हिस्सा
Section titled “उसी OpenSCENARIO कम्युनिटी का हिस्सा”हाथ से लिखा XML OpenSCENARIO के लिए बुनियादी ऑथरिंग रास्ता है — इकोसिस्टम का हर दूसरा टूल आख़िरकार इसे ही प्रोड्यूस करता है (या इसके DSL इक्विवैलेंट को)। drawtonomy का एक्सपोर्टर, scenariogeneration, Scenic, RoadRunner, Blender DSC, और बाक़ी सब टूल किसी-न-किसी पॉइंट पर वही XML एमिट करते हैं। XML को सीधे पढ़ना और लिखना ही इस स्टैंडर्ड को स्टैंडर्ड बनाए रखता है, और इसे प्रोड्यूस करने वाले टूल उस क्रॉस-टूल इंटरऑपरेबिलिटी से फ़ायदा उठाते हैं जो कम्युनिटी ने इसके इर्द-गिर्द बनाई है।
आगे पढ़ें
Section titled “आगे पढ़ें”- सीनारियो एडिटर — ब्राउज़र में actions, triggers, और end/fail कंडीशन ऑथर करें।
- अपना पहला सीनारियो बनाएँ — खाली कैनवस से एक लेन चेंज।
- OpenSCENARIO क्या है?
- OpenSCENARIO एडिटर यूज़ केस
- ASAM OpenDRIVE / OpenSCENARIO में एक्सपोर्ट करें