ข้ามไปยังเนื้อหา

esmini คืออะไร?

esmini คือ OpenSCENARIO player โอเพนซอร์สที่พัฒนาโดยชุมชน ADAS ของสวีเดน ตั้งใจออกแบบให้เรียบง่ายที่สุด และถูกใช้กันอย่างกว้างขวางเป็น reference น้ำหนักเบาสำหรับ OpenSCENARIO 1.x — เล็กพอที่จะอ่านโค้ดได้ทั้งหมด เร็วพอที่จะฝังในระบบอื่น และคาดเดาผลได้พอที่จะใช้เป็นตัวตรวจสอบความถูกต้อง

esmini รับไฟล์ OpenSCENARIO 1.x (.xosc) มา parse โหลดโครงข่ายถนน OpenDRIVE (.xodr) ที่ไฟล์นั้นอ้างอิง แล้ว execute storyboard — ขับ entity ตาม trajectory หรือ controller ที่กำหนด พร้อม stream สถานะที่ได้ออกมา

esmini ไม่ใช่ simulator แบบ physics เต็มรูปแบบอย่าง CARLA หรือ LGSVL ความเรียบง่ายคือจุดเด่นของมัน: esmini คือ baseline โอเพนซอร์สสำหรับตอบคำถาม “สถานการณ์นี้ parse และเล่นได้ถูกต้องหรือไม่?” ที่เครื่องมือ OpenSCENARIO ส่วนใหญ่ใช้อ้างอิง

เพราะ esmini เป็นผู้บริโภค OpenSCENARIO 1.x แบบโอเพนซอร์สที่พบบ่อยที่สุด คำถามที่ว่า “รันบน esmini ได้ไหม?” จึงกลายเป็น sanity check มาตรฐานสำหรับทุก pipeline ที่ส่งออกไฟล์ OpenSCENARIO เครื่องมือส่วนใหญ่ที่ผลิตไฟล์ ASAM จะตรวจสอบกับ esmini ก่อนประกาศว่ารองรับ OpenSCENARIO — รวมถึง RoadRunner (ซึ่งส่งออกสถานการณ์ที่ “เข้ากันได้กับซิมูเลเตอร์และ player ที่รองรับ OpenSCENARIO ทุกตัว เช่น CARLA, esmini และ IPG CarMaker”) และอีกหลายเครื่องมือ

esmini ต้องการขั้นต่ำดังนี้

  • .xosc (สถานการณ์ OpenSCENARIO)
  • .xodr (โครงข่ายถนน OpenDRIVE) ที่ถูกอ้างอิงจาก .xosc
  • ไฟล์ .osgb สำหรับการ render ใน 3D viewer หรือ directory Models/ ของ asset ยานพาหนะ (ไม่บังคับ)

การแพ็คไฟล์เหล่านี้รวมกันเป็น zip ที่พึ่งพาตัวเองได้ — บางครั้งเรียกอย่างไม่เป็นทางการว่า “esmini bundle” — ช่วยให้สถานการณ์พกพาไปใช้บนเครื่องต่าง ๆ และใน CI ได้ง่าย

drawtonomy รัน esmini เองโดยตรง — คอมไพล์เป็น WebAssembly — อยู่ในเบราว์เซอร์เลย สร้าง storyboard (หรือเปิด .xosc ที่มีอยู่แล้ว) กด play แล้ว scenario editor จะ execute มันภายในหน้าเว็บทันที: มีปุ่มควบคุมการเล่น (transport control), seek, follow camera, ghost trail และผลตัดสิน PASS / FAIL จาก END และ FAIL condition ที่ตั้งไว้ — ไม่ต้องติดตั้งอะไรเพิ่ม ไม่ต้องใช้ player แยกต่างหาก แกนจำลองที่ทำงานอยู่จริง ๆ ก็คือ esmini นั่นเอง drawtonomy แค่เพิ่ม shell ที่ผูกกับแคนวาสเข้าไปรอบ ๆ มัน

ถ้าอยากรันสถานการณ์บน esmini ที่ติดตั้งแบบ native (เพื่อใช้ 3D viewer ของ OpenSceneGraph, รัน sweep บน CI หรือต่อกับ pipeline Python/C++) drawtonomy ก็ส่งออก zip ที่มี .xosc, .xodr และคำสั่งเรียกใช้ run.sh ให้ได้เช่นกัน

Terminal window
unzip <name>.zip
esmini --osc <name>/<name>.xosc --window 60 60 1024 768

สิ่งที่ควรรู้เพิ่มเติม

  • ตัวเล่นในเบราว์เซอร์อ่าน OpenSCENARIO 1.x ได้ และตัวส่งออก ASAM เขียนไฟล์ OpenSCENARIO 1.0–1.2 / OpenDRIVE 1.8 — ทั้งสองครอบคลุมสเปกเพียงบางส่วน: action, conditional trigger, phase และ event รันได้ครบ และตอนนี้ส่งออกโครงสร้าง junction ของ OpenDRIVE รวมถึงรายการ <signal> ได้ด้วยแล้ว ทางแยกที่นำเข้าจาก .xodr เดิมโดยไม่แก้ไขจะมีความแม่นยำสูง แต่ทางแยกที่สังเคราะห์ขึ้นจากโครงข่ายเลนที่วาดขึ้นเองยังไม่น่าเชื่อถือเท่า ส่วน parameter sweep และ controller แบบกำหนดเองหรือขับเคลื่อนด้วย ML ยังไม่รองรับการส่งออกในตอนนี้
  • Asset ของยานพาหนะใช้ model built-in ของ esmini เป็นค่าเริ่มต้น จึงไม่จำเป็นต้องมีไฟล์ .osgb เพิ่มเติม
  • สำหรับสถานการณ์ชุดใหญ่แบบมีพารามิเตอร์ (parameter sweep) ให้สร้างฝูงสถานการณ์จาก DSL หรือ Python library แทน ซึ่งเรื่องนี้ยังอยู่นอกขอบเขตของโปรแกรมแก้ไขแบบ visual