OpenSCENARIO là gì
OpenSCENARIO là tiêu chuẩn mở do ASAM xây dựng, mô tả cách phương tiện và các đối tượng tham gia giao thông khác hành xử theo thời gian. Đây là định dạng trao đổi thực tế cho kiểm thử hệ thống tự lái theo kịch bản.
Hai nhánh chính
Phần tiêu đề “Hai nhánh chính”Dù cùng mang tên “OpenSCENARIO”, thực chất có hai đặc tả gần như độc lập:
- OpenSCENARIO 1.x — dựa trên XML, đã được sử dụng lâu năm và ổn định. Phiên bản 1.3 là mục tiêu vận hành thực tế hiện tại.
- OpenSCENARIO 2.0 / DSL — ngôn ngữ chuyên dụng cho phép viết kịch bản trừu tượng và xác suất. Đặc tả mới hơn, số công cụ hỗ trợ đang dần tăng.
Hai nhánh không tương thích với nhau. Các simulator và hạ tầng kiểm thử SOTIF / ISO 21448 chủ yếu tiêu thụ nhánh 1.x.
Cấu trúc file 1.x
Phần tiêu đề “Cấu trúc file 1.x”Một file OpenSCENARIO 1.x thường bao gồm:
- RoadNetwork — thường tham chiếu đến file
.xodrcủa OpenDRIVE, kèm file scene graph.osgbnếu cần. - Entities — phương tiện, người đi bộ và các đối tượng xuất hiện trong kịch bản.
- Storyboard — chuỗi Act, Maneuver, Event theo thời gian.
- Init — vị trí, tốc độ ban đầu và giá trị tham số khởi tạo.
Với kịch bản nhỏ, viết XML trực tiếp vẫn dễ đọc. Nhưng khi số lượng biến thể tăng, chi phí quản lý XML tăng nhanh — đó là lý do nhiều công cụ tạo kịch bản và DSL ra đời.
Các cách tạo kịch bản phổ biến
Phần tiêu đề “Các cách tạo kịch bản phổ biến”Trong thực tế, người ta thường kết hợp nhiều cách:
- Viết XML tay — phù hợp với nhóm nhỏ cần ground truth fixture.
- DSL hoặc sinh mã — xuất XML từ OpenSCENARIO 2.0 DSL, Scenic hoặc script nội bộ.
- Thư viện Python — scenariogeneration (tiền thân là
pyoscx/pyodrx) bao phủ phần lớn OpenSCENARIO V1.0–V1.3.1. - Engine kịch bản đi kèm simulator — CARLA ScenarioRunner hỗ trợ Python interface và OpenSCENARIO 1.0 / 2.0.
- Công cụ GUI — MathWorks RoadRunner, Truevision Designer, Blender Driving Scenario Creator và drawtonomy.
Trong triển khai thực tế, logic kịch bản thường được viết bằng thư viện Python hoặc DSL, còn mạng đường được dựng bằng công cụ GUI.
Vị trí của drawtonomy
Phần tiêu đề “Vị trí của drawtonomy”drawtonomy là bảng trắng 2D chạy trên trình duyệt, có thể xuất một phần OpenSCENARIO 1.3 và OpenDRIVE 1.8. Theo tài liệu exporter:
- Có thể bố trí làn đường, giao lộ, phương tiện, người đi bộ, đèn giao thông và vạch kẻ đường trên canvas 2D nhìn từ trên xuống.
- Xuất file zip gồm
.xosc+.xodr+run.sh, có thể phát lại cảnh đơn giản bằng esmini.
Tuy nhiên, exporter chỉ bao phủ một phần đặc tả. Các mục chưa được hỗ trợ:
- Phần tử
<junction>trong OpenDRIVE - Xuất biển báo dưới dạng
<signal>trong OpenDRIVE - Profile tăng/giảm tốc, sự kiện dừng, lộ trình liên động với tín hiệu, thay đổi làn, Storyboard phức tạp
- Trigger có điều kiện, quét tham số, controller tùy chỉnh, dòng giao thông dày đặc
Vì vậy, đầu ra OpenSCENARIO từ drawtonomy nên được coi là bản phác thảo — phù hợp làm điểm xuất phát cho XML viết tay hoặc làm hình minh họa kịch bản, chứ không phải công cụ tạo kịch bản chuyên nghiệp.