OpenSCENARIO คืออะไร?
OpenSCENARIO คือมาตรฐานเปิดของ ASAM สำหรับอธิบายสถานการณ์ขับขี่แบบไดนามิก คือพฤติกรรมของยานพาหนะหลัก (ego) และผู้เข้าร่วมจราจรรายอื่นตามลำดับเวลา ในรูปแบบที่ซิมูเลเตอร์นำไปเล่นซ้ำได้ ปัจจุบันถือเป็นรูปแบบไฟล์แลกเปลี่ยนมาตรฐานสำหรับการทดสอบระบบขับขี่อัตโนมัติบนฐานสถานการณ์
สองตระกูลของ OpenSCENARIO
หัวข้อที่มีชื่อว่า “สองตระกูลของ OpenSCENARIO”มีสเปกสองชุดที่ใช้ชื่อเดียวกันแต่เป็นอิสระต่อกันเกือบทั้งหมด
- OpenSCENARIO 1.x — รูปแบบ XML เสถียรและรองรับกว้างขวาง เวอร์ชัน 1.3 คือเป้าหมาย production หลักของเครื่องมือส่วนใหญ่ในปัจจุบัน
- OpenSCENARIO 2.0 / DSL — ภาษาเฉพาะโดเมนสำหรับสถานการณ์แบบ abstract, parametric และ probabilistic ใหม่กว่า มีความสามารถสูงกว่า และเริ่มมีเครื่องมือรองรับมากขึ้นเรื่อย ๆ
สองรูปแบบนี้ใช้แทนกันไม่ได้ แต่ 1.x คือสิ่งที่ซิมูเลเตอร์และไปป์ไลน์ทดสอบ SOTIF / ISO 21448 ส่วนใหญ่ใช้อยู่ในปัจจุบัน
โครงสร้างไฟล์ OpenSCENARIO 1.x
หัวข้อที่มีชื่อว่า “โครงสร้างไฟล์ OpenSCENARIO 1.x”ไฟล์ 1.x โดยทั่วไปประกอบด้วย
- การอ้างอิง RoadNetwork — มักชี้ไปยังไฟล์ OpenDRIVE
.xodrและอาจมาพร้อมไฟล์ scene-graph เช่น.osgb - ส่วน Entities — ยานพาหนะ คนเดินเท้า และวัตถุอื่น ๆ
- Storyboard — act, maneuver และ event ที่แต่ละ entity ดำเนินการตามลำดับเวลา
- Init action — ตำแหน่งเริ่มต้น ความเร็ว และค่าพารามิเตอร์
XML อ่านง่ายเมื่อเป็นสถานการณ์เดียวที่สั้น แต่พอขยายไปหลายสิบตัวแปรก็ดูแลรักษายาก ตรงนี้เองที่เครื่องมือสร้างสถานการณ์และ DSL เข้ามาช่วย
แนวทางสร้างสถานการณ์ที่พบบ่อย
หัวข้อที่มีชื่อว่า “แนวทางสร้างสถานการณ์ที่พบบ่อย”- เขียน XML ด้วยมือ — พบบ่อยในทีมขนาดเล็กและ fixture สำหรับ ground-truth
- DSL / codegen — OpenSCENARIO 2.0 DSL, Scenic หรือ generator ที่พัฒนาขึ้นเองภายในองค์กร สร้าง XML จาก description ระดับสูงกว่า
- Python library — scenariogeneration (เดิมชื่อ
pyoscx/pyodrx) มี API แบบเขียนโปรแกรมสำหรับ OpenSCENARIO + OpenDRIVE ครอบคลุมตั้งแต่ OpenSCENARIO V1.0 ถึง V1.3.1 - Scenario engine ในตัวซิมูเลเตอร์ — CARLA ScenarioRunner สร้างและรันสถานการณ์สำหรับ CARLA รองรับทั้ง Python และ OpenSCENARIO 1.0 / 2.0
- โปรแกรมแก้ไขแบบ visual — MathWorks RoadRunner (ส่งออกทั้ง XML และ DSL), Truevision Designer (เน้น OpenDRIVE), Blender Driving Scenario Creator (add-on ของ Blender) และ drawtonomy (สร้าง storyboard OpenSCENARIO 1.x แบบเต็มรูปแบบและรันในเบราว์เซอร์ผ่าน esmini-WASM)
การสร้างสถานการณ์ในระดับ production มักใช้หลายแนวทางร่วมกัน — บ่อยครั้งเป็น Python library หรือ DSL สำหรับตัวสถานการณ์เอง ควบคู่กับโปรแกรมแก้ไขแบบ visual สำหรับโครงข่ายถนน
บทบาทของ drawtonomy
หัวข้อที่มีชื่อว่า “บทบาทของ drawtonomy”drawtonomy คือ สภาพแวดล้อมสร้างและรัน OpenSCENARIO 1.x บนเบราว์เซอร์ — ไวท์บอร์ดที่ฉากซึ่งวาดขึ้นกลายเป็น storyboard ที่รันได้จริง รองรับทั้งการนำเข้า OpenSCENARIO 1.x และส่งออก OpenSCENARIO 1.0–1.2 (1.3 กำลังจะตามมา) พร้อมกับ OpenDRIVE 1.8
- วางเลน ทางแยก ยานพาหนะ คนเดินเท้า สัญญาณไฟจราจร และเครื่องหมายบนถนน ลงบนแคนวาส 2D แบบมองจากด้านบน
- สร้าง storyboard แบบ visual — phase, event, action ทั้ง 35 แบบ และ trigger condition ทั้ง 19 แบบ — แล้วรันในเบราว์เซอร์ผ่าน esmini ที่คอมไพล์เป็น WebAssembly พร้อมพรีวิว 3D (กล้อง Chase / มุมสูงแบบนก / คนขับ) ควบคู่ไปกับแคนวาส 2D
- นำเข้าคู่ไฟล์
.xosc+.xodrที่มีอยู่แล้วมาแก้ไข หรือส่งออกคู่ไฟล์นี้เพื่อรันบน esmini แบบ native - สร้างสถานการณ์จากคำอธิบายภาษาธรรมชาติได้: drawtonomy ร่าง storyboard ขึ้นมา ตรวจสอบผ่าน validation gate สี่ชั้น (รวมถึงการรัน esmini จริง) แล้วนำไปใช้กับแคนวาสให้อัตโนมัติ
ตัวส่งออกตอนนี้สร้างโครงสร้าง OpenDRIVE <junction> / <connection> / <laneLink> และรายการ <signal> ได้แล้ว — ไม่ใช่สิ่งที่อยู่ใน roadmap อีกต่อไป ส่วนที่ต้องแยกแยะเรื่องความแม่นยำคือ: ถนนที่นำเข้าจาก .xodr เดิมโดยไม่ได้แก้ไข จะคงโทโพโลยีทางแยกดั้งเดิมไว้ได้อย่างแม่นยำสูง แต่ทางแยกที่สังเคราะห์ขึ้นจากเลนที่วาดขึ้นใหม่เองยังไม่น่าเชื่อถือเท่า สิ่งที่ยังขาดอยู่คือ parameter sweep และ controller แบบกำหนดเองหรือขับเคลื่อนด้วย ML
ฝูงสถานการณ์ (scenario fleet) — ชุดพารามิเตอร์ขนาดใหญ่ — ยังคงเหมาะกับการสร้างจาก DSL หรือ Python library มากกว่า ซึ่งอยู่นอกขอบเขตของโปรแกรมแก้ไขแบบ visual สิ่งที่ drawtonomy เพิ่มเข้ามาคือเส้นทางแบบ visual ที่รวดเร็วจากไอเดีย (หรือ prompt ภาษาธรรมชาติ) ไปสู่สถานการณ์ที่รันได้และตรวจสอบได้
อ่านเพิ่มเติม
หัวข้อที่มีชื่อว่า “อ่านเพิ่มเติม”- Scenario editor — สร้าง phase, event, action และ trigger ในเบราว์เซอร์ แล้วรันได้ทันที
- สร้างสถานการณ์แรกของคุณ — การเปลี่ยนเลนจากแคนวาสเปล่า
- คำศัพท์ RoadRunner กับ OpenSCENARIO — ตารางเทียบคำศัพท์ระหว่างสองระบบ
- OpenDRIVE คืออะไร?
- esmini คืออะไร?
- เปรียบเทียบ: drawtonomy กับการเขียน OpenSCENARIO XML ด้วยมือ