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

drawtonomy và viết tay OpenSCENARIO XML

Viết tay XML OpenSCENARIO là một workflow phổ biến, và với nhiều trường hợp đó vẫn là lựa chọn đúng.

Khi XML là con đường phù hợp:

  • Kịch bản nhỏ và bạn muốn kiểm soát từng byte.
  • Bạn đang sinh XML tự động từ một DSL hoặc pipeline codegen.
  • Bạn cần những tính năng của đặc tả mà drawtonomy chưa xuất được — quét tham số, controller tùy chỉnh / điều khiển bằng ML, mô hình dòng giao thông dày đặc, OpenSCENARIO 1.3.
  • Bạn đang dựng một mạng lưới đường mới có junction từ đầu và cần hình học <junction> chất lượng sản xuất — phần xuất junction của drawtonomy chính xác khi mang nguyên vẹn một file .xodr đã nhập qua, nhưng tạo hình học junction mới từ các làn đường tự vẽ tay thì vẫn còn thiếu chính xác.
  • Bạn đang cộng tác trên một catalog lớn qua git và cần diff XML ổn định ở mức byte.

Với những trường hợp đó, XML viết tay hoặc sinh từ code là cách tiếp cận chuẩn. Còn với việc dựng và chạy một kịch bản cụ thể, đơn lẻ — action, trigger, và kết quả PASS / FAIL — thì một trình chỉnh sửa trực quan thường nhanh hơn.

Những gì drawtonomy biểu diễn được hiện nay

Phần tiêu đề “Những gì drawtonomy biểu diễn được hiện nay”

Một trình chỉnh sửa trực quan cho OpenSCENARIO 1.2, dựng toàn bộ storyboard ngay trên canvas và chạy nó trong trình duyệt — không cần gõ XML:

  • Một mạng lưới đường 2D nhìn từ trên xuống — làn, giao lộ, linestring — được xuất thành .xodr OpenDRIVE 1.8, cùng với việc đặt phương tiện, người đi bộ, đèn giao thông và vạch kẻ đường như các entity.
  • Một storyboard đầy đủ: phase (act), event, toàn bộ 35 loại action trong đặc tả (tốc độ, đổi làn, dịch chuyển tức thời, follow-trajectory, activate-controller, và nhiều hơn nữa), và toàn bộ 19 điều kiện trigger (cộng thêm 6 điều kiện nâng cao) kết hợp với logic AND / OR.
  • Điều kiện END và FAIL tạo ra kết quả PASS / FAIL khi kịch bản chạy.
  • Thực thi ngay trong trình duyệt trên esmini biên dịch thành WebAssembly — điều khiển phát lại, tua chính xác từng khung hình, camera bám theo, vệt bóng ma, và tùy chọn xem trước 3D của lượt chạy — để bạn rà soát kịch bản đang chạy mà không cần rời trang. File .xosc cũng chạy được nguyên vẹn trên một bản cài esmini gốc.
  • Xuất sang OpenSCENARIO 1.0, 1.1, hoặc 1.2 (1.3 chưa có), cùng với cấu trúc <junction>/<connection> của OpenDRIVE và biển báo dưới dạng <signal>.

Những gì drawtonomy chưa biểu diễn được

Phần tiêu đề “Những gì drawtonomy chưa biểu diễn được”

Những khoảng trống thực sự vẫn cần đến XML viết tay hoặc sinh tự động:

  • Xuất OpenSCENARIO 1.3 — định dạng này được hỗ trợ khi nhập nhưng chưa phải là đích xuất.
  • Hình học <junction> chất lượng sản xuất của OpenDRIVE khi dựng mạng lưới đường từ đầu. Kết nối junction round-trip chính xác khi mang nguyên vẹn một file .xodr đã nhập qua; tạo hình học junction mới từ các làn đường tự vẽ tay thì vẫn còn thiếu chính xác, và hình học clothoid giải tích chưa được mô hình hóa.
  • Quét tham số, controller tùy chỉnh hoặc điều khiển bằng ML, và mô hình dòng giao thông dày đặc.
  • OpenSCENARIO 2.0 / M-SDL (drawtonomy nhắm tới 1.x).

Với những nhu cầu đó, viết tay hoặc sinh XML vẫn là con đường đúng.

Với phần lớn kịch bản bạn dựng và chạy hoàn toàn trong drawtonomy — trình duyệt chính là nguồn dữ liệu gốc (source of truth). Chỉ nên dùng đến XML viết tay ở những chỗ rìa:

  1. Dựng cảnh và storyboard trong drawtonomy — mạng lưới làn, đối tượng tham gia, action, trigger, điều kiện end / fail — rồi chạy thử để xác nhận kết quả.
  2. Nếu cần một tính năng đặc tả mà drawtonomy chưa xuất (một cấu trúc junction, một quét tham số, một controller tùy chỉnh), xuất .xosc rồi chỉnh tay hoặc sinh code cho riêng phần đó.
  3. Khi cần diff XML ổn định ở mức byte trên một catalog lớn, giữ XML chuẩn trong code và dùng drawtonomy để dựng, rà soát, phát lại từng kịch bản cụ thể.

drawtonomy là nơi bạn dựng và chạy kịch bản; XML viết tay vẫn là lối thoát cho những góc của đặc tả mà nó chưa vươn tới.

XML viết tay là con đường tạo kịch bản nền tảng cho OpenSCENARIO — mọi công cụ khác trong hệ sinh thái, cuối cùng, đều sinh ra nó (hoặc dạng DSL tương đương). Exporter của drawtonomy, scenariogeneration, Scenic, RoadRunner, Blender DSC, và phần còn lại đều xuất ra XML tại một thời điểm nào đó. Việc đọc và ghi XML trực tiếp là cách để tiêu chuẩn này vẫn giữ được là một tiêu chuẩn, và các công cụ tạo ra nó đều hưởng lợi từ khả năng liên thông giữa các công cụ mà cộng đồng đã xây dựng xung quanh nó.