Skip to content
Method

UK roundabout scene pack

How Lancing Manor Roundabout was compiled from open data into three simulator formats, how it was checked, and what the pack is not. Back to the roundabout.

The verdict

Drives clockwise in esmini; CARLA's map reader agrees.

Compiled from OpenStreetMap, OS Open Roads and Environment Agency LiDAR by rules fixed before the compiler was written. The OpenDRIVE passes the ASAM checker with 0 errors, traffic keeps left on every road and circulates clockwise, 4 of 4 esmini cars drove in, round the ring clockwise and out, and CARLA's map reader agrees (21 lane connections). No car was driven in CARLA. Lane widths are modelled, not measured.

Since this verdict: two CARLA server runs, on 24 and 26 Oct 2026.

The verdict above was fixed before either CARLA run, which is why it says no car was driven in CARLA. Both runs since:

The first CARLA server run, on 24 Oct 2026 (CARLA 0.9.16, on one GPU), failed the bar set before it ran: CARLA's Traffic Manager drove 3 of 4 cars correctly, and the car from S took the first exit, W, instead of going on to N. That result stands.

A second pre-registered CARLA run (26 Oct 2026) separated the cause. With no route point placed at a fork, CARLA's Traffic Manager drove 4 of 4 cars clockwise round the ring and out by the right exit, and a scripted waypoint follower drove the same four routes correctly. The 24 Oct wrong exit was Traffic Manager snapping one route point to the wrong branch at a fork. The pack did not change. Run 2 first repeated the 24 Oct route input unchanged, and the car from S left at W again. One of its route points sat 0.16 m past the fork, where the first waypoints of the ring and of the exit lie within 0.1 mm of each other, so a tiny difference in geometry decides which one Traffic Manager snaps to; the evidence is consistent with that snap, which Traffic Manager does not report. The pass rule was the 24 Oct one, unchanged. Three attempts; the first two are reported, not scored.

What it is

Lancing Manor Roundabout joins the A27 (Upper Brighton Road and Old Shoreham Road), the A2025 Grinstead Lane and Manor Road in Lancing, West Sussex. It was compiled from open data only into an ASAM OpenDRIVE 1.7 road network, an OpenUSD stage and an RDS-HQ archive (the scene format named under sources below), all in one local frame: east, north and up in metres at a fixed anchor. 41 roads, 11 junctions, 75 driving lanes, 1.94 lane kilometres.

Left-hand traffic is encoded with the rule attribute of every <road> (ASAM OpenDRIVE 1.7.0, road attributes; the attribute has been in the standard since OpenDRIVE 1.5), set to LHT. One-way roads hold their driving lanes on the left of the reference line, driven along it; the three two-way roads hold outbound lanes on the left and inbound lanes on the right, driven against it. The circulating carriageway is a set of clockwise arcs on the circle fitted to the OpenStreetMap ring (radius 19.88 m), split at 8 junctions where the arms join and leave.

The tests

The v1 tests and thresholds were committed before the compiler existed (the pre-registration, SHA-256 78ecaf39a3f8). They were amended twice, each time before the code the amendment governs: once before the first compiler, when the OpenStreetMap data showed the ring needs a junction wherever an arm joins or leaves it, and once after the first compiler had run and been reviewed independently, before the second compiler, adding the two-way roads, the overlap test T8 and the rule controls. So T8 and the v2 rules came after the v1 compiler, not before it. Readings made after a run are noted in the same file, and the three that followed a failed or doubtful first reading are flagged in the table: the T3 ring centre, the T2 heading at the splits after the first v2 run failed it, and the split roads retuned after the first v2 run failed T8. The rows marked self-check compare the compile with the data it was made from; they are not a measure of accuracy against the ground.

TestResult and boundChecked byVerdict
T1 ASAM OpenDRIVE checker0 errors (needs 0); 0 warnings, 0 informationASAM checkerpass
T2 Left-hand, clockwise lanesring turns −6.283 rad (needs −6.409 to −6.158); 21 lane connections in lane orderOur own readerpass, heading read in the direction of travel after the first v2 run failed
T3 Ring against OS Open Roads (independent)centres 0.6 m apart (needs 2.0 m or less), on a reading fixed after the run (the vertex mean, 2.6 m, would fail); radius ratio 0.97 (needs within 15 %)OS Open Roadspass, on a reading fixed after the run
T3 Reference lines against the OSM ways they came fromRMS under 0.1 m, max under 0.2 m (needs RMS 0.30 m and max 0.75 m or less)Self-checkpass
T3 Heights against the DTM they were sampled fromRMS under 0.1 m, max under 0.2 m (needs RMS 0.10 m and max 0.30 m or less); steps under 0.01 m (needs 0.02 m or less)Self-checkpass
T8 No overlapping laneslargest overlap 0.0 m² (needs 0.5 m² or less per pair)Our own readerpass after the split roads were retuned
T4 esmini, four cars straight across4 of 4 drove in, round the ring clockwise and out (needs 4); 3 came in on a two-way road's inbound lanesesmini v3.10.2pass
T5 CARLA's map reader (no car driven)21 lane connections (needs 21); clockwise from both ring lanes; 0 of 370 steps on the two-way roads the wrong wayCARLA 0.9.16 mappass
T6 RDS-HQ archive12 of 12 components, 300 pose frames; camera 120 degrees wide; map vertices under 0.01 m from the OpenDRIVE (needs 0.01 m or less)Our own validatorpass
T7 OpenUSD stage75 lane curves for 75 lanes; 0 validator issues (needs 0)usd-core, usdcheckerpass

The four cars in esmini

Four cars, one per entry, at 11.2 m/s, each routed straight across (seed 20261023); 3 of them start on a two-way road's inbound lanes. Each entered, went clockwise round the centre and reached its exit; the angle swept round the centre is reported, never a rule. The same scenario on the same network with the rule set to RHT, and with the rule removed, is the control: reported only, never a rule.

FromToSwept clockwiseReached the exit
Upper Brighton RoadOld Shoreham Road125 degreesyes, at 25.9 s
Manor RoadGrinstead Lane158 degreesyes, at 27.4 s
Old Shoreham RoadUpper Brighton Road131 degreesyes, at 26.4 s
Grinstead LaneManor Road114 degreesyes, at 25.2 s

Against the common tool

Eclipse SUMO netconvert, the converter CARLA's OpenStreetMap import wraps, turns the same OpenStreetMap clip into OpenDRIVE in one command with --lefthand. Exploratory, never a rule: nothing here scores either output.

WhatThis packnetconvert 1.28.0
OpenDRIVE version written1.71.4
Roads and driving lanes inside the circle41 roads, 75 lanes122 roads, 165 lanes
The road rule attributeLHT on 41 roadsabsent on 372 roads
Driving lanes left and right of the reference line71 left, 4 right0 left, 165 right
Two-way roads30 (each direction a separate road)
Road heightsyes, from the EA DTMno
ASAM OpenDRIVE checker0 errors; 22 of 23 checkers ran0 errors; 10 of 23 checkers ran
esmini, four cars straight across4 of 43 of 4 (Grinstead Lane: route not found)

netconvert's left-hand output carries no rule, gives each direction its own road and puts every lane on the right of its reference line, so keeping left is carried by where the roads are placed, not by the encoding; esmini drove 3 of 4 cars on it. It was not loaded in CARLA. Ours carries rule="LHT" and left lanes, and the controls above show that esmini and CARLA's map reader both honour it. What this pack has that the one-command route does not: tests fixed before the compiler, a byte-reproducible output, one frame across OpenDRIVE, OpenUSD and RDS-HQ, and heights from the Environment Agency. What it lacks against a surveyed digital twin: surveyed widths and kerbs, markings to specification and a rendered 3D world.

Eclipse SUMO (EPL-2.0), run as a tool; nothing from it is in the pack.

The netconvert command

netconvert --osm-files "site.osm" --lefthand --opendrive-output "netconvert/netconvert.xodr" --proj "+proj=tmerc +lat_0=50.836782700 +lon_0=-0.317500300 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs" --offset.disable-normalization --keep-edges.by-vclass passenger --roundabouts.guess --junctions.join --geometry.remove --output.original-names

Widths from the ground, exploratory

36 of 124 cross profiles of the EA 1 m DTM show a kerb on both sides: the ground rising at least 0.06 m over 1.0 m, within 9.0 m of the carriageway's modelled middle. Where both kerbs show, the kerb-to-kerb width reads, against the modelled width: the one-way carriageways 1.23 times (median of 9 of 64 profiles, interquartile 0.96 to 1.40); the two-way roads 1.30 times (median of 15 of 24 profiles, interquartile 1.16 to 1.37); the ring 1.25 times (median of 12 of 36 profiles, interquartile 1.22 to 1.28). Exploratory, never a rule: a 1 m grid good to about 0.15 m in height is near the limit for a kerb, and the modelled widths stay as they are.

So the modelled drivable area is probably too narrow.

The arms against OpenStreetMap

Self-check: the compile against the data it was made from, not accuracy: each arm's reference line against the OpenStreetMap way it was made from.

RoadOSM wayRMS and max (self-check)Verdict
Upper Brighton Road, entry19069526under 0.1 m, under 0.1 mpass
Upper Brighton Road, exit972005982under 0.1 m, under 0.1 mpass
Manor Road, entry793839414under 0.1 m, under 0.1 mpass
Manor Road, exit180959399under 0.1 m, under 0.2 mpass
Old Shoreham Road, entry293197149under 0.1 m, under 0.1 mpass
Old Shoreham Road, exit3176149under 0.1 m, under 0.1 mpass
Grinstead Lane, entry793839413under 0.1 m, under 0.1 mpass
Grinstead Lane, exit155589137under 0.1 m, under 0.1 mpass
Upper Brighton Road, two-way3175700under 0.1 m, under 0.1 mpass
Manor Road, two-way8150645under 0.1 m, under 0.1 mpass
Grinstead Lane, two-way180959393under 0.1 m, under 0.1 mpass

Sources and licences

SourceUsed forLicence and credit
OpenStreetMap (Geofabrik West Sussex, 2026-10-20)The ring, the arms, lane counts and speed limits© OpenStreetMap contributors, ODbL 1.0
OS Open RoadsThe independent check of where the ring sitsContains OS data © Crown copyright and database right 2026, Open Government Licence v3.0
Environment Agency LiDAR Composite DTM 2022, 1 m (tiles E518000_N104000, E518000_N106000)Road heights and the ground contoursContains Environment Agency information © Environment Agency and/or database right, licensed under the Open Government Licence v3.0
RDS-HQ formatThe archive's layoutA scene format documented in NVIDIA/cosmos-framework (that documentation is licensed OpenMDW 1.1)

Tools and versions

  • esmini: esmini v3.10.2 (v3.10.2-0-d1d4423b)
  • asam qc opendrive: asam-qc-opendrive 1.0.0, asam-qc-baselib 1.1.0
  • carla: carla 0.9.16 (Python 3.11.17, client-side map, no server)
  • usd core: usd-core 26.11
  • usdchecker: Apple USD Tools 0.25.2
  • pyproj: pyproj 3.7.2

Assumed, not measured

Lane widths 3.65 m on the arms and two-way roads and 4.5 m round the ring (defaults, not measured). Manor Road has no OpenStreetMap lanes tag, so 1 lane in and 1 out. Kerbs, markings and give way lines sit where the model puts them; the kerbs drawn here are 0.12 m upstands for the picture only, and the pack has no kerb heights, refuges, signs, side roads or crossfall.

The one-way split carriageways are compiled to where each split ends, then the two-way road each pair becomes, out to 150 m; Old Shoreham Road has no split inside the circle and is clipped at 150 m. Lanes of different roads overlap by 0.5 m² or less per pair (T8, largest 0.0 m²). Side roads inside the circle are not compiled and are drawn hatched. Not modelled: kerb heights, footways, refuges, splitter-island shapes, signs other than give way, lighting, crossfall, entry flares, side roads.

What the pack is not

It is not a survey: nothing here was measured by MapMap, and the lane widths are defaults; the EA ground reads the ring about 25% wider than modelled (exploratory, above). It says nothing about collisions or risk at this junction, and it must not be used to judge them.

The pack

lancing-manor-roundabout-v2.1.zip (1.1 MB, SHA-256 406195032eaa), under the Open Database Licence 1.0 with the OS and Environment Agency attributions.

FileBytes
LICENCE.md1,020
README.md9,903
lancing-manor.xodr115,162
method/PREREGISTRATION.md816
scene.usda2,876,426
scene.usdc510,821
sim/lancing-manor.xosc12,254
rds-hq/ (12 tars)962,560

What runs outside MapMap

Three things run on the pack alone, with public tools: T1, the ASAM OpenDRIVE checker (asam-qc-opendrive 1.0.0 on lancing-manor.xodr); loading it in CARLA's map reader with no server (carla.Map in the 0.9.16 wheel, on Linux with Python 3.11); and an esmini drive, esmini --window 60 60 1280 720 --osc sim/lancing-manor.xosc, run from the pack's sim/ folder.

The pipeline that compiled the pack and runs T2 to T8 is MapMap's own source and is not in the pack, so the pack cannot be rebuilt or fully rechecked outside MapMap. The pack gives the SHA-256 and commit of the rules it was tested against, in method/PREREGISTRATION.md.