ASAM OpenDRIVE 1.6 XSD
Every exported .xodr validates against the official ASAM schema with xmllint.
Metromake is a graphical OpenDRIVE editor. You build a road network lane by lane and export OpenDRIVE 1.6 with lanes, lane links, junctions with lane-level connecting roads, roundabouts, elevation, signals and georeference. Every export validates against the ASAM schema.
The logical road network that driving simulators read. Exports ASAM OpenDRIVE 1.6, the format CARLA, RoadRunner and other simulators read.
| Element | How Metromake writes it |
|---|---|
| Reference lines | Smooth paramPoly3 pieces fitted to each road's spline. Positions and headings are exact at every joint; pieces are split until they are within 2 cm of the road. |
| Elevation | Cubic elevation profiles. |
| Lanes | From the cross-section: type, width, direction (right- or left-hand traffic), height and road marks, plus a lane offset when the centre line falls inside a lane. |
| Links | Two roads meeting at a node link road to road, with lane links. |
| Junctions | A connecting road for every movement, lane by lane, with its own geometry. Nodes where no movement is possible get no junction. |
| Roundabouts | One-way ring roads (counter-clockwise), with a junction at each approach holding the entry, exit and through connections. |
| Signals | From junction controls (stop, give way, traffic lights) and from placed signs, each with its OpenDRIVE code (country DE). A programmed junction gets a light per signal group, limited to the lanes whose turns it controls, and a controller per group. |
| Road markings | Lane boundaries as road marks; stop lines, give-way lines and turn arrows as signals (294, 341, 297) on their lanes; crosswalks as crosswalk objects. |
| Barriers and tunnels | Guard rails, concrete barriers, walls and fences as repeated barrier objects; tunnels as tunnel records. |
| Lane surfaces | A material per lane: surface and friction. |
| Georeference | A geoReference PROJ string (local transverse Mercator, UTM or Web Mercator) and a header offset placing the map's local origin in it. Set by OpenStreetMap import or by hand. |
Drop one road end onto another to make a junction. Metromake builds the surface and, on export, a connecting road for every movement, lane by lane.
The same checks run in CI on every build (tools/validate_simulators.py and the test suite).
Every exported .xodr validates against the official ASAM schema with xmllint.
Scenarios on the exported network run to the end in esmini, with vehicles staying on the road network. Also checked on a real OpenStreetMap area of central Amsterdam.
An independent reader checks geometry against the spline (within 2 cm), lane widths, junction connectivity and every link.
Program a signalised junction stage by stage: what every signal group shows, for how long, and when.
Signal groups for vehicles, pedestrians or bicycles, over any approaches and turns. Each stage gives every group a state: red, red-amber, green, amber, flashing amber or off.
A cycle offset for coordinated junctions. Actuated stages run only when a detector calls them, with minimum and maximum green and a gap extension.
Conflicting greens, a green going straight to red, and pedestrian greens too short to cross are flagged. Stages export to OpenSCENARIO traffic-signal controllers.
Templates to start from: two phases, two phases with a pedestrian phase, protected left turns, one approach at a time, and an actuated side road. Actuated stages are exported at their nominal duration; the full program, with detectors, is kept in the .xodr as userData.
Problems are found in the editor, not in the simulator.
Lanes with no successor, roads meeting head-on, roads crossing without a junction or with too little clearance, conflicting signal greens, tight curves, steep grades. Click one to fly to it. Re-checked as you edit.
The map is exported and read back with libOpenDRIVE: gaps between linked roads, lane links to lanes that do not exist, reference lines that stray from their roads.
Ids, links, planView geometries, elevation, lane sections and lanes, objects and signals, as an independent reader sees them. Hover a row to see it on the map.
The scenario export is described on the OpenSCENARIO generator page. To build a map from a real street layout, see how to convert OpenStreetMap to OpenDRIVE.
Metromake exports ASAM OpenDRIVE 1.6, the format CARLA, esmini, RoadRunner and other simulators read. Use it to build ADAS test road networks, driving-simulator maps and custom maps for esmini experiments. Command-line export makes it scriptable: --export map.json out.xodr (see command-line export in the docs).
If you are evaluating a RoadRunner alternative for OpenDRIVE maps, compare the exported features listed above with your requirements.
OpenDRIVE 1.6, validated against the ASAM schema.
Yes. The road assets are CC0 and the exports are yours. Maps imported from OpenStreetMap must credit OpenStreetMap contributors (ODbL).
Yes. Activating it needs the internet once per computer; after that it works fully offline, with no account. During early access it sends usage statistics and crash reports (never your maps); the full release asks first.
Yes; roads come back with their lanes and signs, and junctions are rebuilt.
Metromake 0.9.0 is in early access for macOS and Windows: download it, activate it with a free early-access key, and tell us what to improve. For team licences for a simulation group, contact us.