Metromake / OpenDRIVE editor
ASAM OpenDRIVE 1.6 · .xodr

OpenDRIVE editor: draw roads, export valid .xodr

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.

What is exported

What goes into the .xodr

The logical road network that driving simulators read. Exports ASAM OpenDRIVE 1.6, the format CARLA, RoadRunner and other simulators read.

ElementHow Metromake writes it
Reference linesSmooth 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.
ElevationCubic elevation profiles.
LanesFrom 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.
LinksTwo roads meeting at a node link road to road, with lane links.
JunctionsA connecting road for every movement, lane by lane, with its own geometry. Nodes where no movement is possible get no junction.
RoundaboutsOne-way ring roads (counter-clockwise), with a junction at each approach holding the entry, exit and through connections.
SignalsFrom 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 markingsLane 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 tunnelsGuard rails, concrete barriers, walls and fences as repeated barrier objects; tunnels as tunnel records.
Lane surfacesA material per lane: surface and friction.
GeoreferenceA 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.
Not exported todayStreet-furniture objects (poles, lamps), superelevation and crossfall, multiple lane sections per road, and spirals.
OpenDRIVE junction editor

How junctions are exported

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.

  • 6 controls: priority, traffic signals, all-way stop, give way, uncontrolled, roundabout
  • The Junction Editor shows every lane connection and conflict point; connect lanes by hand where the automatic result is not what you want
  • Connecting roads meet their roads within 2 cm with continuous heading
  • Roundabouts size themselves to their roads and export as one-way rings
reference lineroad (approach)junctionconnecting roads,one per movementlane links: within 2 cm,continuous heading
Diagram Connecting roads from one approach of a four-way junction. Screenshot of the same junction in Metromake to follow.
How it is validated

How the OpenDRIVE export is checked

The same checks run in CI on every build (tools/validate_simulators.py and the test suite).

Schema

ASAM OpenDRIVE 1.6 XSD

Every exported .xodr validates against the official ASAM schema with xmllint.

Simulator

Runs in esmini

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.

Geometry

Read back with libOpenDRIVE

An independent reader checks geometry against the spline (within 2 cm), lane widths, junction connectivity and every link.

Traffic signals

Traffic-signal programs

Program a signalised junction stage by stage: what every signal group shows, for how long, and when.

Groups and stages

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.

Cycle, offset, actuation

A cycle offset for coordinated junctions. Actuated stages run only when a detector calls them, with minimum and maximum green and a gap extension.

Checked and exported

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.

Before export

Validation and the OpenDRIVE inspector

Problems are found in the editor, not in the simulator.

Validation

Errors, warnings, notes

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.

Deep check

Exported and read back

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.

Inspector

The .xodr, road by road

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.

Next

Related pages

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.

Simulator maps

Custom maps for driving simulators

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.

FAQ

OpenDRIVE export questions

Which OpenDRIVE version does Metromake export?

OpenDRIVE 1.6, validated against the ASAM schema.

Can I use my exported maps commercially?

Yes. The road assets are CC0 and the exports are yours. Maps imported from OpenStreetMap must credit OpenStreetMap contributors (ODbL).

Does it work offline?

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.

Can I import existing OpenDRIVE files?

Yes; roads come back with their lanes and signs, and junctions are rebuilt.

Availability

Early access

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.