Bỏ qua để đến nội dung

OpenSCENARIO là gì

OpenSCENARIO là tiêu chuẩn mở của ASAM, dùng để mô tả các kịch bản lái xe động — xe ego và các đối tượng giao thông khác làm gì theo thời gian, ở dạng mà simulator có thể phát lại. Đây là định dạng trao đổi thực tế cho kiểm thử hệ thống lái tự động theo kịch bản.

Cùng mang một tên gọi, nhưng thực chất có hai đặc tả gần như độc lập với nhau:

  • OpenSCENARIO 1.x — dựa trên XML, ổn định và được hỗ trợ rộng rãi. Bản sửa đổi 1.3 hiện là mục tiêu vận hành thực tế của phần lớn công cụ.
  • OpenSCENARIO 2.0 / DSL — một ngôn ngữ chuyên dụng cho kịch bản trừu tượng, tham số hóa và xác suất. Mới hơn, biểu đạt phong phú hơn, và số công cụ hỗ trợ đang tăng dần.

Hai định dạng không thể hoán đổi cho nhau, nhưng 1.x vẫn là thứ mà hầu hết simulator cũng như quy trình kiểm thử SOTIF / ISO 21448 sử dụng hiện nay.

Một kịch bản 1.x thường có:

  • Tham chiếu RoadNetwork — thường là file .xodr của OpenDRIVE, có thể đi kèm file scene-graph như .osgb.
  • Khối Entities — phương tiện, người đi bộ và các đối tượng khác trong kịch bản.
  • Storyboard — các act, maneuver và event diễn ra theo thứ tự thời gian.
  • Hành động Init — vị trí, tốc độ ban đầu và giá trị tham số khởi tạo.

Với một kịch bản ngắn, đọc trực tiếp XML vẫn ổn. Nhưng khi số biến thể tăng lên hàng chục, việc duy trì XML bằng tay trở nên khó kiểm soát — đó là lúc các công cụ tạo kịch bản và DSL phát huy tác dụng.

  • Viết XML tay. Phù hợp với nhóm nhỏ hoặc các fixture ground-truth.
  • DSL / sinh mã. OpenSCENARIO 2.0 DSL, Scenic, hoặc công cụ sinh mã nội bộ xuất XML từ mô tả cấp cao hơn.
  • Thư viện Python. scenariogeneration (tên cũ là pyoscx / pyodrx) cung cấp API lập trình cho OpenSCENARIO + OpenDRIVE, bao phủ từ OpenSCENARIO V1.0 đến V1.3.1.
  • Engine kịch bản đi kèm simulator. CARLA ScenarioRunner định nghĩa và chạy kịch bản cho CARLA, hỗ trợ Python lẫn OpenSCENARIO 1.0 / 2.0.
  • Trình chỉnh sửa trực quan. MathWorks RoadRunner (xuất cả XML lẫn DSL), Truevision Designer (tập trung vào OpenDRIVE), Blender Driving Scenario Creator (add-on cho Blender), và drawtonomy (tạo toàn bộ storyboard OpenSCENARIO 1.x và chạy ngay trong trình duyệt trên esmini-WASM).

Trong sản xuất thực tế, người ta thường kết hợp nhiều cách trên — phổ biến là dùng thư viện Python hoặc DSL cho bản thân kịch bản, kèm một trình chỉnh sửa trực quan cho mạng đường.

drawtonomy là môi trường tạo và chạy OpenSCENARIO 1.x ngay trên trình duyệt — một bảng trắng nơi cảnh bạn vẽ trở thành storyboard chạy được. Nó nhập OpenSCENARIO 1.x và xuất OpenSCENARIO 1.0–1.2 (1.3 sắp có), cùng với OpenDRIVE 1.8:

  • Đặt làn đường, giao lộ, phương tiện, người đi bộ, đèn giao thông và vạch kẻ đường lên canvas 2D nhìn từ trên xuống.
  • Dựng storyboard trực quan — phase, event, 35 loại action, và 19 điều kiện trigger — rồi chạy ngay trong trình duyệt trên esmini biên dịch thành WebAssembly, kèm bản xem trước 3D (camera Chase / nhìn từ trên / góc tài xế) song song với canvas 2D.
  • Nhập một cặp .xosc + .xodr có sẵn để chỉnh sửa, hoặc xuất cặp file đó để chạy trên bản cài esmini gốc.
  • Tạo kịch bản từ mô tả ngôn ngữ tự nhiên: drawtonomy soạn một storyboard, kiểm tra qua bốn cổng xác thực (bao gồm một lần chạy esmini thật), rồi áp dụng vào canvas.

Exporter giờ đã xuất được cấu trúc <junction> / <connection> / <laneLink> cùng các mục <signal> của OpenDRIVE — đây không còn là hạng mục trên roadmap nữa. Điểm cần phân biệt về độ chính xác: các road được mang nguyên vẹn từ một file .xodr đã nhập (không chỉnh sửa) giữ được đúng cấu trúc giao lộ gốc với độ tin cậy cao, nhưng giao lộ được tổng hợp từ các làn đường bạn tự vẽ từ đầu thì chưa đủ tin cậy. Những gì vẫn còn thiếu: quét tham số (parameter sweep) và controller tùy chỉnh hoặc điều khiển bằng ML.

Việc tạo cả một đội hình kịch bản — những lô lớn được tham số hóa — vẫn nên dùng DSL hoặc thư viện Python; đây là phạm vi nằm ngoài trình chỉnh sửa trực quan. Điều drawtonomy mang lại là một lối đi trực quan, nhanh chóng từ ý tưởng (hoặc một câu lệnh ngôn ngữ tự nhiên) đến một kịch bản chạy được và có thể rà soát lại.