User Documentation · v1.1
1. Overview
This catalogue is a set of logical, simulation-ready scenarios derived from the Euro NCAP 2026 test protocols. Each scenario is an ASAM OpenSCENARIO 1.1 (.xosc) file paired with an ASAM OpenDRIVE (.xodr) road network, built to run in the esmini simulator (v2.58.0 or later). It contains 54 scenarios across four functional classes. Each runs standalone at default values, and contains a commented parametric-sweep block that, when enabled, generates the full set of protocol-defined permutations.
Class | Prefix | Scope | Count |
|---|---|---|---|
Forward Collision Avoidance | fca_ | AEB / FCW vs cars, motorcyclists, pedestrians, cyclists | 27 |
Lane Departure Collision | ldc_ | Emergency Lane Keeping vs road edge, cars, motorcyclists | 7 |
Low Speed Collision | lsc_ | Start-from-stop junctions, reverse manoeuvring, dooring | 9 |
Adaptive Cruise Control | acc_ | ACC performance, cut-in/out, steering & lane-change assist | 11 |
Status: a derived, simulation-oriented catalogue built from protocol analysis. It is not the official Euro NCAP catalogue and carries no Euro NCAP endorsement.
2. Source protocols and standards
Derived from the Euro NCAP v1.1 (October 2025) protocols, in force January 2026:
Crash Avoidance — Frontal Collisions (all fca_ scenarios)
Crash Avoidance — Lane Departure Collisions (all ldc_ scenarios)
Crash Avoidance — Low Speed Collisions (all lsc_ scenarios)
Safe Driving — Vehicle Assistance (ACC, steering & lane-change assist)
Assisted Driving (ACC safety-backup scenarios)
Supporting Protocol — Virtual Testing (v1.0, simulation qualification & KPI criteria)
Supporting standards: ISO 19206 (test target specs — pedestrian, vehicle, bicyclist, motorcyclist), ASAM OpenSCENARIO / OpenDRIVE / OpenLABEL, and ISO 8855 (vehicle coordinate system, defines the nearside/farside convention).
3. Scenario nomenclature
Filenames follow the pattern <class>_<group>_<protocol-code>_scenario.xosc.
Example: fca_ped_cpncoday_scenario → Forward Collision Avoidance · pedestrian · CPNCO (child obstructed) · day.
Scenario (code) | Plain-language description |
|---|---|
acc_c2c_ccrs | Cruise control: approaching a stationary car ahead |
acc_c2c_ccrm | Cruise control: approaching a slower-moving car ahead |
acc_c2m_cmrs | Cruise control: approaching a stationary motorcyclist |
acc_c2m_cmrm | Cruise control: approaching a slower-moving motorcyclist |
acc_c2m_cmrb | Cruise control: approaching a braking motorcyclist |
acc_cut_cutin | Cruise control: a vehicle cuts in to the lane ahead |
acc_cut_cutout | Cruise control: lead vehicle pulls away, revealing a stationary vehicle |
acc_lca_emt | Cruise control: lane-change assist with a motorcyclist alongside |
acc_steer_sbend | Cruise control: steering assist through an S-bend |
acc_vru_cpla | Cruise control: following a pedestrian ahead |
acc_vru_cbla | Cruise control: following a cyclist ahead |
fca_c2c_ccrs | Emergency braking: stationary car ahead |
fca_c2c_ccrm | Emergency braking: slower-moving car ahead |
fca_c2c_ccrb | Emergency braking: braking car ahead |
fca_c2c_ccfhos | Emergency braking: oncoming car drifts head-on (straight road) |
fca_c2c_ccfhol | Emergency braking: oncoming car head-on during an overtake |
fca_c2c_ccftap | Emergency braking: turning across an oncoming car at a junction |
fca_c2c_cccscp | Emergency braking: car crossing at a junction |
fca_cmr_cmrs | Emergency braking: stationary motorcyclist ahead |
fca_cmr_cmrb | Emergency braking: braking motorcyclist ahead |
fca_cmf_cmftap | Emergency braking: turning across an oncoming motorcyclist |
fca_cmc_cmcscp | Emergency braking: motorcyclist crossing at a junction |
fca_ped_cpladay / cplanight | Emergency braking: pedestrian walking ahead in lane (day / night) |
fca_ped_cpnaday / cpnanight | Emergency braking: pedestrian crossing from the near side (day / night) |
fca_ped_cpfaday / cpfanight | Emergency braking: pedestrian running from the far side (day / night) |
fca_ped_cpncoday / cpnconight | Emergency braking: child crossing from behind parked cars (day / night) |
fca_ped_cptafs_ns | Emergency braking: turning into a crossing pedestrian (same direction) |
fca_ped_cptafo_no | Emergency braking: turning into a crossing pedestrian (opposite direction) |
fca_cyc_cbla | Emergency braking: cyclist riding ahead in lane |
fca_cyc_cbna | Emergency braking: cyclist crossing from the near side |
fca_cyc_cbnao | Emergency braking: cyclist crossing from the near side, view obstructed |
fca_cyc_cbfa | Emergency braking: cyclist crossing from the far side |
fca_cyc_cbtafs_ns | Emergency braking: turning into a crossing cyclist (same direction) |
fca_cyc_cbtafo_no | Emergency braking: turning into a crossing cyclist (opposite direction) |
ldc_elk_re | Lane-keeping: drifting off the road edge |
ldc_elk_on_c2c | Lane-keeping: drifting toward an oncoming car |
ldc_elk_on_c2m | Lane-keeping: drifting toward an oncoming motorcyclist |
ldc_elk_ov_c2c_unintentional | Lane-keeping: unintended drift toward an overtaking car |
ldc_elk_ov_c2c_intentional | Lane-keeping: deliberate lane change toward an overtaking car |
ldc_elk_ov_c2m_unintentional | Lane-keeping: unintended drift toward an overtaking motorcyclist |
ldc_elk_ov_c2m_intentional | Lane-keeping: deliberate lane change toward an overtaking motorcyclist |
lsc_sfs_cccscp | Low speed: pulling away into a crossing car |
lsc_sfs_ccftap | Low speed: pulling away, turning across an oncoming car |
lsc_sfs_cmcscp | Low speed: pulling away into a crossing motorcyclist |
lsc_sfs_cmftap | Low speed: pulling away, turning across an oncoming motorcyclist |
lsc_sfs_cbnao | Low speed: pulling away into an obstructed crossing cyclist |
lsc_man_cpmrcm | Low speed: reversing toward a moving child |
lsc_man_cpmrcs | Low speed: reversing toward a stationary child |
lsc_man_cpmfc | Low speed: pedal-error protection with a child in front |
lsc_door_cbda | Low speed: opening a door into a passing cyclist (dooring) |
4. Units and conventions
All values in the scenario files are in SI units. This is the most important thing to know before reading or editing a file.
Quantity | Unit in file | Example | Human equivalent |
|---|---|---|---|
Speed | metres / second | 15.2778 | 55 km/h |
Position / offset | metres | 124.917 | — |
Time gap / time | seconds | 1.5 | — |
Sun elevation / azimuth | radians | 1.308997 | 75° |
Wind speed | metres / second | 0.1 | near-calm |
Conversion: km/h ÷ 3.6 = m/s (30 km/h = 8.3333, 60 = 16.6667, 80 = 22.2222).
Side convention: nearside/farside (offside) follow ISO 8855. These files are authored for Left-Hand Traffic (nearside = left of the vehicle); for Right-Hand Traffic the lateral geometry mirrors.
5. Prerequisites and file dependencies
esmini v2.58.0 or later installed and on your PATH.
The matching .xodr road file present in the same folder as the .xosc.
The Controller_Catalog directory present at the path referenced in the file (provides the ACC controller).
Fix the 3D model paths for your machine. Each entity references a model via a relative path such as ../../../esmini-master/resources/models/car_white.osgb. This path is machine-specific and will not resolve unmodified — update the File filepath entries to point at your esmini resources/models/ directory, or models will fail to load.
6. Running a single scenario (default values)
Each scenario runs immediately at its default speeds, positions and (daytime) lighting:
esmini --window 60 60 1024 576 --osc acc_vru_cbla_scenario.xosc
Use this to confirm a scenario loads before sweeping.
7. Running parametric variations (the sweep)
Every file ends with a commented-out <ParameterValueDistribution> block defining the protocol-relevant permutations — speed ranges, position ranges, and the locked day/night environment pair.
1. Enable the sweep. Delete the comment delimiters (<!-- and -->) around the block, and save.
2. Count the permutations:
esmini --osc acc_vru_cbla_scenario.xosc \
--param_dist acc_vru_cbla_scenario.xosc \
--return_nr_permutations
3. Run a specific permutation (0-indexed):
esmini --window 60 60 1024 576 \
--osc acc_vru_cbla_scenario.xosc \
--param_dist acc_vru_cbla_scenario.xosc \
--param_permutation 0
4. Run the full sweep by looping the index from 0 to (count − 1), logging results on each run.
How permutations are counted
The total is the product of each swept parameter's step count, times the locked environment pair:
<DistributionRange> → floor((upper − lower) / step) + 1 values.
<DistributionSet> → the number of <Element> entries (often 1 = fixed).
Day/night <ValueSetDistribution> → ×2 (the four environment parameters are swept as a locked pair, not combinatorially).
Targeted sweeps: to test a subset, narrow the <Range> limits or replace a range with a <DistributionSet> of just the values you want, before counting and running.
8. Capturing results
Log per-frame state for offline analysis, and run headless for fast batch sweeps:
esmini --osc <file> --param_dist <file> --param_permutation N \
--csv_logger results_permN.csv --headless
Each scenario's stop trigger is a collision condition plus a 30-second timeout, so a run ends at impact or at the time limit. The presence or absence of a collision event is the primary pass/fail signal; residual impact speed comes from the entity speed channels in the CSV.
9. Quick-start checklist
Confirm esmini v2.58.0+ is installed.
Keep each .xosc with its .xodr and the Controller_Catalog.
Fix the model filepath entries for your esmini install (Section 5).
Run at defaults to confirm it loads (Section 6).
Read values as SI units — m/s, metres, radians, seconds (Section 4).
To sweep: uncomment the block, count, then run permutations (Section 7).
Narrow the range or set for targeted testing before full runs.
Log to CSV and check the collision condition for pass/fail (Section 8).