drawtonomy vs เขียน OpenSCENARIO XML มือ
เขียน OpenSCENARIO XML มือ
หัวข้อที่มีชื่อว่า “เขียน OpenSCENARIO XML มือ”การเขียน OpenSCENARIO XML มือเป็น workflow ที่พบบ่อย และสำหรับหลาย use case ก็เป็นตัวเลือกที่ถูกต้อง
กรณีที่ XML คือทางที่เหมาะสม:
- Scenario ขนาดเล็กและต้องการควบคุมระดับ byte
- สร้าง XML แบบ programmatic จาก DSL หรือ codegen pipeline
- ต้องการ feature ของ spec ที่ drawtonomy ยังไม่ส่งออก เช่น parameter sweep, custom / ML controller, traffic-flow model ที่หนาแน่น, OpenSCENARIO 1.3
- กำลังสร้างโครงข่ายถนนใหม่ที่มี junction ตั้งแต่ต้น และต้องการ
<junction>geometry ระดับ production — การส่งออก junction ของ drawtonomy แม่นยำเมื่อ carry-through ไฟล์.xodrที่ import เข้ามาโดยไม่แก้ไข แต่การสร้าง junction geometry ใหม่จากเลนที่วาดเองยังมีความแม่นยำต่ำ - Collaborate บน catalog ขนาดใหญ่ผ่าน git และต้องการ byte-level diff ของ XML ที่เสถียร
สำหรับกรณีเหล่านี้ XML ที่เขียนมือหรือ codegen คือแนวทางมาตรฐาน แต่สำหรับการ author และรัน scenario เดี่ยวหนึ่งอัน — action, trigger และผลตัดสิน PASS / FAIL — visual editor มักเร็วกว่า
สิ่งที่ drawtonomy แสดงออกได้วันนี้
หัวข้อที่มีชื่อว่า “สิ่งที่ drawtonomy แสดงออกได้วันนี้”Visual editor สำหรับ OpenSCENARIO 1.2 ที่ author storyboard เต็มรูปแบบบน canvas แล้วรันในเบราว์เซอร์ได้เลย — ไม่ต้องพิมพ์ XML สักบรรทัด:
- โครงข่ายถนนแบบ 2D top-down — เลน ทางแยก linestring — ส่งออกเป็น OpenDRIVE 1.8
.xodrพร้อมทั้งวางยานพาหนะ คนเดินเท้า ไฟสัญญาณ และเครื่องหมายบนถนนเป็น entity - Storyboard ครบชุด: phase (act), event, ครบทั้ง 35 action ตาม spec (ความเร็ว เปลี่ยนเลน teleport ตาม trajectory เปิดใช้งาน controller และอื่น ๆ) และ trigger condition ทั้ง 19 แบบ (บวกอีก 6 แบบขั้นสูง) ผสมกันด้วย logic AND / OR
- END และ FAIL condition ที่ให้ผลตัดสิน PASS / FAIL เมื่อรัน scenario
- รันในเบราว์เซอร์ได้ทันทีบน esmini ที่ compile เป็น WebAssembly — มี transport control, seek แบบ frame-accurate, follow camera, ghost trail และ 3D preview (ตัวเลือกเสริม) สำหรับดูผลรัน — ตรวจสอบ scenario ที่กำลังรันได้โดยไม่ต้องออกจากหน้าเว็บ ไฟล์
.xoscเดียวกันนี้ก็รันได้เหมือนเดิมใน esmini แบบ native install - ส่งออกเป็น OpenSCENARIO 1.0, 1.1 หรือ 1.2 ได้ (ยังไม่รองรับ 1.3) พร้อมทั้ง OpenDRIVE
<junction>/<connection>primitive และป้ายจราจรในรูปแบบ<signal>
สิ่งที่ drawtonomy ยังแสดงออกไม่ได้
หัวข้อที่มีชื่อว่า “สิ่งที่ drawtonomy ยังแสดงออกไม่ได้”ช่องว่างจริงที่ยังต้องพึ่ง XML ที่เขียนมือหรือ generate ขึ้นมา:
- ส่งออก OpenSCENARIO 1.3 — รองรับการ import แล้ว แต่ยังไม่เปิดให้เป็น export target
<junction>geometry ของ OpenDRIVE ระดับ production เมื่อสร้างโครงข่ายถนนใหม่ตั้งแต่ต้น การเชื่อมต่อ junction จะ round-trip ได้แม่นยำเมื่อ carry-through ไฟล์.xodrที่ import เข้ามาโดยไม่แก้ไข แต่การสร้าง junction geometry ใหม่จากเลนที่วาดเองยังมีความแม่นยำต่ำ และยังไม่รองรับ clothoid geometry เชิงวิเคราะห์- Parameter sweep, controller ที่กำหนดเองหรือขับเคลื่อนด้วย ML, และ traffic-flow model ที่หนาแน่น
- OpenSCENARIO 2.0 / M-SDL (drawtonomy เล็งเป้าที่ 1.x)
สำหรับสิ่งเหล่านี้ การเขียนหรือ generate XML มือยังคงเป็นทางที่ถูกต้อง
แนวทางผสมที่สมเหตุสมผล
หัวข้อที่มีชื่อว่า “แนวทางผสมที่สมเหตุสมผล”สำหรับ scenario ส่วนใหญ่ที่ author และรันครบวงจรใน drawtonomy — เบราว์เซอร์คือ source of truth ให้หันไปใช้ XML มือเฉพาะกรณีขอบ ๆ เท่านั้น:
- Author ฉากและ storyboard ใน drawtonomy — โครงข่ายเลน participant action trigger เงื่อนไข end / fail — แล้วรันเพื่อยืนยันผลตัดสิน
- หากต้องการ feature ของ spec ที่ drawtonomy ยังไม่ส่งออก (เช่น junction primitive, parameter sweep, custom controller) ให้ส่งออก
.xoscแล้วแก้ไขมือหรือ codegen เฉพาะส่วนนั้น - เมื่อต้องการ byte-level git diff ข้าม catalog ขนาดใหญ่ ให้เก็บ XML ที่เป็นทางการไว้ในโค้ด แล้วใช้ drawtonomy สำหรับ author ตรวจสอบ และ replay scenario แต่ละอันที่เจาะจง
drawtonomy คือที่ที่ author และรัน scenario ส่วน XML ที่เขียนมือยังคงเป็นทางออกสำหรับมุมของ spec ที่ยังไปไม่ถึง
ใน community OpenSCENARIO เดียวกัน
หัวข้อที่มีชื่อว่า “ใน community OpenSCENARIO เดียวกัน”XML ที่เขียนมือคือเส้นทาง authoring พื้นฐานของ OpenSCENARIO — ทุกเครื่องมือใน ecosystem สุดท้ายก็ผลิต XML (หรือ DSL ที่เทียบเท่า) ออกมา ทั้ง exporter ของ drawtonomy, scenariogeneration, Scenic, RoadRunner, Blender DSC และเครื่องมืออื่น ๆ ล้วน emit XML ออกมาในจุดใดจุดหนึ่ง การอ่านและเขียน XML โดยตรงคือสิ่งที่ทำให้มาตรฐานยังคงเป็น มาตรฐาน และเครื่องมือที่ผลิต XML ก็ได้ประโยชน์จาก interoperability ข้ามเครื่องมือที่ community สร้างขึ้นรอบมัน
อ่านเพิ่มเติม
หัวข้อที่มีชื่อว่า “อ่านเพิ่มเติม”- Scenario editor — author action, trigger และเงื่อนไข end / fail ในเบราว์เซอร์
- สร้าง scenario แรกของคุณ — การเปลี่ยนเลนจาก canvas เปล่า
- OpenSCENARIO คืออะไร?
- OpenSCENARIO editor use case
- ส่งออกเป็น ASAM OpenDRIVE / OpenSCENARIO