Exportera till OpenDRIVE / OpenSCENARIO / esmini
drawtonomy omvandlar en handritad scen till ett ASAM
OpenDRIVE (.xodr)
vägnät och ett
OpenSCENARIO (.xosc)
scenario, paketerat i ett enda zip som du kan spela upp direkt i
esmini.
Konverteringen är avsiktligt grundläggande — den täcker de få former som passar rent in i ASAM:s datamodell och lämnar allt annat utanför. Den här sidan dokumenterar exakt vad som konverteras, vad det exporterade fordonet faktiskt gör och vad som inte ingår, så att resultatet aldrig lovar mer än det håller.
Se hela rundturen i video
Section titled “Se hela rundturen i video”Videon nedan är ett enda tagning: rita en korsning, rita en bana, generera
fotavtryck, exportera esmini-zippet och spela sedan upp den exporterade
.xosc-filen i esmini.
Exportera från editorn
Section titled “Exportera från editorn”Det finns ett exportalternativ för ASAM. drawtonomy visar inte separata
menyval för .xodr och .xosc — båda filerna skapas ihop och packas i ett
zip.

- Rita din scen (körfält, en korsning, fordon, en bana…).
- Öppna menyn → Export →
.zip (esmini). - Ange ett basnamn när du blir tillfrågad (standardvärdet är
drawtonomy-<datum>). - En
<namn>.zipladdas ner med<namn>.xodr,<namn>.xoscoch de 3D-modelltillgångar för esmini som scenariot refererar till.
Hela aktuella sidan exporteras — det finns inget läge för att bara exportera ett urval för ASAM-formaten.
Spela upp det
Section titled “Spela upp det”unzip drawtonomy-2026-05-30.zipcd drawtonomy-2026-05-30esmini --osc drawtonomy-2026-05-30.xosc --window 60 60 1024 768
Fordonet kör längs den orangea linjen — den linjen är den
FollowTrajectoryAction som genererats från den bana du ritade.
Vad som konverteras
Section titled “Vad som konverteras”Till OpenDRIVE (.xodr)
Section titled “Till OpenDRIVE (.xodr)”| drawtonomy-form | OpenDRIVE-element | Anteckningar |
|---|---|---|
| Lane | ett <road> | 1 körfält = 1 oberoende väg |
| Traffic light | <signal> på närmaste väg | endast fordons-/gångartyp |
| Crosswalk | <object type="crosswalk"> | placeras vinkelrätt mot vägen |
| Polygon (≥3 punkter) | <object type="patch"> med <outline> | fyller korsningar/ytor visuellt |
Allt annat — fordon, fotgängare, fristående punkter, fria linjer, text,
bilder — skrivs inte till .xodr-filen.
Mer om hur vägarna representeras:
- Geometrin består enbart av räta linjer. Vägmedellinjen samplas från
körfältets vänstra och högra gränser och skrivs som
<line>-segment. Varkenarc,spiralellerpoly3genereras. - Fast körfältslayout. Varje väg får exakt ett vänster körfält (
id=1), ett mittfält (id=0) och ett höger körfält (id=-1), samtliga medtype="driving". Flerfilsvägar och flera körfältssektioner representeras inte. - Vägmarkeringar är hårdkodade till en
solid white 0.13 m-linje. - Inga korsningsnoder. Varje väg bär
junction="-1"och inget<junction>-element genereras någonsin. Korsningar representeras bara via polygonplattan (visuellt) och via föregående/efterföljande länkar härrörande från körfältetsnext/prev-kopplingar (endast första posten). - Ingen höjd- eller tvärfallsprofil —
elevationProfileochlateralProfileskrivs tomma (plana vägar). - Skalan är fast vid 16,67 px/m; geografiskt ursprung är
0.
Till OpenSCENARIO (.xosc)
Section titled “Till OpenSCENARIO (.xosc)”| drawtonomy-form | OpenSCENARIO-element |
|---|---|
| Vehicle | ett <ScenarioObject> (<Vehicle> eller <Pedestrian>) |
| Path footprint (ledfordonet) | en <FollowTrajectoryAction> |
En “pedestrian” är ett fordonsobjekt vars mallnamn matchar ett
fotgängar-/gångmönster — det skrivs som <Pedestrian> i stället för
<Vehicle>. Körfält, övergångsställen, trafiksignaler och fristående linjer
inkluderas inte i .xosc-filen.
Det exporterade scenariot är avsiktligt minimalt:
- Det enda dynamiska beteendet är
FollowTrajectoryAction— en tidsstämplad polylinje. Det finns inga hastighetsstyrningar, körfältsbyten, trafiksignalrespons, kollisionsundvikande eller interaktionsvillkor. - Varje rörlig entitet startar vid
SimulationTime ≥ 0och scenariot har ett fastStopTriggervid 60 s.
Hur ett banfotavtryck blir fordonets rörelse
Section titled “Hur ett banfotavtryck blir fordonets rörelse”Det här är kärnan i den dynamiska exporten och förtjänar en noggrann genomgång.

En bana är en linje du ritar, och fotavtryck är spökkopior av ett fordon utplacerade längs banan (det spår du ser i editorn). Vid export:
- Bara det ledande fotavtrycket (det första) blir ett rörligt
<ScenarioObject>. De efterföljande spökkopiornas roll är att ge en förhandsgranskning i editorn — de tas bort i exporten. Du får ett fordon som kör hela banan, inte en kö. - Banans styrpunkter blir trajektoriehörn i världskoordinater (ENU, meter).
- Varje hörn tilldelas en
time, och resultatet skrivs som en<Trajectory>→<Polyline>av<Vertex time="…">inuti en<FollowTrajectoryAction>.
Hastigheten är fast (den viktigaste begränsningen)
Section titled “Hastigheten är fast (den viktigaste begränsningen)”Trajektorien tidssätts med en hårdkodad 10 m/s (≈ 36 km/h). drawtonomy har inget hastighetsfält någonstans i gränssnittet och exportören åsidosätter aldrig standardvärdet. I esmini rapporterar entiteten ~36 km/h oavsett vad du ritade. Du ställer inte in hastigheten direkt — du styr tajmingen via fotavtryckets placering, som beskrivs nedan.
Två tajmningslägen
Section titled “Två tajmningslägen”Huruvida banans Variable positioning-reglage är aktiverat avgör hur tidpunkterna fördelas längs trajektorien:
- Uniform (reglage AV) — fotavtrycken sitter med lika stort bågavstånd
(Interval) och tid beräknas som
avstånd / 10 m/s. Rörelsen har konstant hastighet. Att ändra Interval påverkar bara hur många hörn som skrivs (samplingsdensitet); banans form och total varaktighet förblir oförändrade. - Variable (reglage PÅ) — varje fotavtryck är förankrat till en position längs banan, och den totala varaktigheten delas upp i lika stora tidsskivor mellan fotavtrycken. Där fotavtrycken sitter tätt rör sig fordonet långsamt; där de är utspridda rör det sig snabbt. Det här är det enda sättet att variera den effektiva hastigheten längs rutten.
Vad du redigerar ↔ vad som ändras i .xosc
Section titled “Vad du redigerar ↔ vad som ändras i .xosc”| Editoråtgärd | Effekt på exporten |
|---|---|
| Flytta en banstyrpunkt | Trajektoriehörnets koordinater + total varaktighet (längden ändras, hastigheten förblir 10 m/s) |
| Dra ett fotavtryck i Variable-läge | Fotavtryckets normaliserade position → time för det hörnet → lokal (effektiv) hastighet för det segmentet |
| Växla Variable positioning | Byter mellan lika-tid- och lika-hastighets-tajmning |
| Ändra Interval (uniform-läge) | Antal hörn enbart — trajektoriens form och hastighet påverkas inte |
| Ändra Anchor | Bara fotavtryckets ritförskjutning — ingen effekt på den exporterade trajektorien |
| Byta fordonsmall | vehicleCategory, 3D-modell, begränsningsboxens höjd, prestandapreset |
| Ändra storlek på fordonet (b, h) | BoundingBox-mått och axelgeometri |
| Rotera fordonet | Startriktning (bara när fordonet saknar trajektorie) |
| Flytta fordonet | Initialt WorldPosition (fästs vid trajektoriens startpunkt om det finns en) |
Kort svar på den vanligaste frågan: ja — att flytta ett fotavtryck längs banan i Variable-läge ändrar hastighetsplanen i exporten, eftersom det omtajmar det segmentet. Att flytta det i Uniform-läge, eller att ändra Anchor, gör det inte.
Hårdkodade värden
Section titled “Hårdkodade värden”För fullständighetens skull: fordonskategori/prestandapresets, 3D-modellsökvägar,
fordonshöjd per kategori, axelgeometri (härledd från storleken),
följningsläge (position), 60 s stop-trigger och — viktigast av allt —
trajektoriehastigheten 10 m/s är alla fasta och kan inte redigeras.
Programmatisk export
Section titled “Programmatisk export”Exportören ingår i @drawtonomy/sdk och körs utan editorn. Till skillnad från
menyn kan du med SDK:t även generera de två filerna separat:
import { exporter, createSnapshot } from '@drawtonomy/sdk'
const snapshot = createSnapshot(shapes)
// Paketerat (samma som menyn):const { blob, baseName } = exporter.buildEsminiZip(snapshot, { baseName: 'my-scene',})
// Eller varje format för sig:const xodr = exporter.exportToOpenDrive(snapshot)const xosc = exporter.exportToOpenScenario(snapshot, { xodrFilename: 'my-scene.xodr',})För det fullständiga API:et och förlängningspunkterna, se Exporter SDK-referens.
Versioner som genereras
Section titled “Versioner som genereras”| Format | Version |
|---|---|
| OpenDRIVE | 1.8 |
| OpenSCENARIO | 1.3 |
Sammanfattning av räckvidd
Section titled “Sammanfattning av räckvidd”Stöds: Rätlinjiga vägar från körfält; signaler, övergångsställen och korsningsplättar som OpenDRIVE-objekt; ett fordon per bana som följer en tidssatt trajektorie; ett fungerande esmini-zip som du kan spela upp direkt.
Stöds ännu inte: OpenDRIVE-korsningsnoder, krökt geometri, flerfilsvägar, väghöjd; OpenSCENARIO-hastighetsstyrningar, körfältsbyten, trafiksignallogik, flerfordonssinteraktion eller individuell hastighetskontroll per fordon.
Se även
Section titled “Se även”- Exportörarkitektur — vad pipelinen gör mellan ögonblicksbild och fil.
- Lägga till ett målformat — koppla in CARLA, SUMO, Unity eller vad som helst annat.