匯出為 OpenDRIVE / OpenSCENARIO / esmini 格式
drawtonomy 可將手繪場景轉換為 ASAM
OpenDRIVE(.xodr)
道路網路,加上一份
OpenSCENARIO(.xosc)
情境描述,並打包成單一 zip,可直接在
esmini 重播。
轉換範圍刻意保持精簡,只涵蓋能夠對應到 ASAM 資料模型的少數圖形,其餘一律略去。本頁明確說明哪些內容會被轉換、匯出後車輛實際執行什麼動作,以及哪些功能目前超出範圍,讓輸出結果不會給你錯誤的期待。
完整流程示範
Section titled “完整流程示範”以下影片一鏡到底:繪製路口、畫出路徑、產生車輛足跡、匯出 esmini zip,最後在 esmini 中重播匯出的 .xosc。
從編輯器匯出
Section titled “從編輯器匯出”ASAM 格式只有一個匯出入口。drawtonomy 不提供獨立的 .xodr / .xosc 選單項目,兩份檔案會同時產生並打包成一個 zip。

- 繪製場景(車道、路口、車輛、路徑……)。
- 開啟選單 → Export →
.zip (esmini)。 - 出現提示時輸入基底名稱(預設為
drawtonomy-<日期>)。 - 下載
<名稱>.zip,其中包含<名稱>.xodr、<名稱>.xosc,以及情境所參照的 esmini 3D 模型資產。
匯出範圍涵蓋目前畫布上的所有圖形,ASAM 目標不支援「僅匯出選取範圍」的模式。
重播匯出檔案
Section titled “重播匯出檔案”unzip drawtonomy-2026-05-30.zipcd drawtonomy-2026-05-30esmini --osc drawtonomy-2026-05-30.xosc --window 60 60 1024 768
車輛會沿橘色路線行駛,那條線就是根據你所畫路徑產生的 FollowTrajectoryAction。
轉換內容說明
Section titled “轉換內容說明”轉入 OpenDRIVE(.xodr)
Section titled “轉入 OpenDRIVE(.xodr)”| drawtonomy 圖形 | OpenDRIVE 元素 | 備註 |
|---|---|---|
| Lane | 一條 <road> | 1 條車道 = 1 條獨立道路 |
| Traffic light | 最近道路上的 <signal> | 僅限車輛/行人類型 |
| Crosswalk | <object type="crosswalk"> | 垂直於道路放置 |
| Polygon(≥3 個節點) | 附帶 <outline> 的 <object type="patch"> | 用於路口與區域的視覺填充 |
其餘圖形——車輛、行人、獨立節點、自由線段、文字、圖片——不會寫入 .xodr。
各道路的轉換細節如下:
- 幾何形狀只有直線。 道路參考線從車道左右邊界採樣,以
<line>線段輸出,不產生arc、spiral或poly3幾何。 - 固定車道佈局。 每條道路固定包含一條左車道(
id=1)、一條中心車道(id=0)、一條右車道(id=-1),全部為type="driving",不支援多車道或多段車道。 - 道路標線固定為
solid white 0.13 m。 - 無路口元素。 每條道路均標記
junction="-1",不產生任何<junction>元素。路口只以多邊形面片(視覺)以及從車道next/prev連接推導出的前驅/後繼連結呈現(僅取第一個條目)。 - 無高程/超高程——
elevationProfile與lateralProfile輸出為空(平坦道路)。 - 比例固定為 16.67 px/m,地理原點為
0。
轉入 OpenSCENARIO(.xosc)
Section titled “轉入 OpenSCENARIO(.xosc)”| drawtonomy 圖形 | OpenSCENARIO 元素 |
|---|---|
| Vehicle | <ScenarioObject>(<Vehicle> 或 <Pedestrian>) |
| Path footprint(前導車輛) | <FollowTrajectoryAction> |
「行人」是指模板名稱符合 pedestrian/walk 模式的車輛圖形,會輸出為 <Pedestrian> 而非 <Vehicle>。車道、斑馬線、紅綠燈和自由線段不會輸出至 .xosc。
匯出的情境刻意保持最小化:
- 唯一的動態行為是
FollowTrajectoryAction,即時間戳記多折線。不包含速度動作、換道、號誌回應、碰撞迴避或任何互動條件。 - 每個移動實體從
SimulationTime ≥ 0開始,情境設有StopTrigger於 60 秒結束。
路徑足跡如何轉換為車輛動作
Section titled “路徑足跡如何轉換為車輛動作”這是動態匯出的核心,值得仔細說明。

**路徑(Path)**是你畫的一條線段,**足跡(footprints)**則是沿路徑排列的車輛幻影(編輯器中可見的殘影)。匯出時:
- 只有前導足跡(第一個)會成為移動的
<ScenarioObject>,後方的幻影僅用於畫布預覽,匯出時會捨棄。你會得到一輛沿完整路徑行駛的車輛,而非一列車隊。 - 路徑的控制點成為軌跡頂點,以世界座標系(ENU)的公尺表示。
- 每個頂點帶有
time屬性,結果寫成<Trajectory>→<Polyline>的<Vertex time="…">格式,包裹在<FollowTrajectoryAction>中。
速度固定(這是最主要的限制)
Section titled “速度固定(這是最主要的限制)”軌跡時間戳記以固定的 10 m/s(約 36 km/h)計算。drawtonomy 的 UI 中沒有速度欄位,匯出器也不覆寫預設值。在 esmini 中,實體的報告速度一律約為 36 km/h,與你的繪圖無關。你無法設定速度,但可以透過調整足跡排列來影響時序,方法說明如下。
兩種時序模式
Section titled “兩種時序模式”路徑的「Variable positioning」切換開關決定時間如何分配到軌跡各點:
- Uniform(切換 OFF)——足跡以等弧長 Interval 間距排列,時間為
距離 / 10 m/s,運動為等速。調整 Interval 只影響頂點數量(採樣密度),路徑形狀與總時長不變。 - Variable(切換 ON)——每個足跡固定在路徑上的某個位置,總時長平均分配為各足跡之間的等時間片段。足跡密集處車輛行駛較慢,稀疏處則較快。這是唯一能在路線途中改變有效速度的方式。
編輯器操作與 .xosc 的對應
Section titled “編輯器操作與 .xosc 的對應”| 編輯器操作 | 對匯出的影響 |
|---|---|
| 移動路徑控制點 | 軌跡頂點座標與總時長(長度改變,速度維持 10 m/s) |
| 在 Variable 模式下拖曳足跡 | 該足跡的正規化位置 → 頂點的 time → 該段的有效速度 |
| 切換 Variable positioning | 在等時間與等速度時序之間切換 |
| 變更 Interval(Uniform 模式) | 只影響頂點數量,軌跡形狀與速度不變 |
| 變更 Anchor | 僅影響足跡繪製偏移,對匯出軌跡無影響 |
| 變更車輛模板 | vehicleCategory、3D 模型、車身高度、性能預設 |
| 調整車輛尺寸(w, h) | BoundingBox 尺寸與輪軸幾何 |
| 旋轉車輛 | 初始朝向(僅在車輛無軌跡時有效) |
| 移動車輛 | Init WorldPosition(若有軌跡則對齊至軌跡起點) |
直接回答常見問題:是的——在 Variable 模式下將足跡移至路徑中段,會改變匯出的速度計劃,因為這會重新分配該段的時序。在 Uniform 模式下移動足跡,或調整 Anchor,則不會有任何影響。
以下數值來自固定的對應表或常數,無法透過 UI 修改:車輛類別/性能預設、3D 模型路徑、各類別的車身高度、輪軸幾何(由尺寸推算)、跟隨模式(position)、60 秒停止觸發條件,以及最重要的——10 m/s 軌跡速度。
匯出器隨 @drawtonomy/sdk 出貨,不需編輯器即可執行。與選單不同,SDK 還允許單獨輸出兩種格式:
import { exporter, createSnapshot } from '@drawtonomy/sdk'
const snapshot = createSnapshot(shapes)
// 打包 zip(與選單相同):const { blob, baseName } = exporter.buildEsminiZip(snapshot, { baseName: 'my-scene',})
// 或各自輸出:const xodr = exporter.exportToOpenDrive(snapshot)const xosc = exporter.exportToOpenScenario(snapshot, { xodrFilename: 'my-scene.xodr',})完整 API 與擴充點請參閱匯出器 SDK 參考。
| 格式 | 版本 |
|---|---|
| OpenDRIVE | 1.8 |
| OpenSCENARIO | 1.3 |
支援範圍總覽
Section titled “支援範圍總覽”已支援: 從車道產生直線道路;將號誌、斑馬線、路口面片匯出為 OpenDRIVE 物件;每條路徑對應一輛車輛並依時序軌跡行駛;可立即重播的 esmini zip。
尚未支援: OpenDRIVE 路口、曲線幾何、多車道道路、道路高程;OpenSCENARIO 速度動作、換道、號誌邏輯、多主體互動,以及任何個別車輛的速度控制。