{
  "name": "bench2drive object list",
  "version": "1",
  "source": "Both halves of this file have one author: this adapter's. The hazards are the CARLA Autonomous Driving Leaderboard's infraction list (https://leaderboard.carla.org/evaluation_v2_1/), taken unchanged from catalogues/av-object-list.json, which is also the list Bench2Drive's statistics manager records. The faults are the subset of that catalogue's operators this adapter expresses against PDM-Lite's actor list and control output, at magnitudes cut to what a $6 campaign can afford.",
  "notes": "Bench2Drive counts a route a success when it is completed with no infraction but a minimum-speed one, so min_speed is declared and no check maps to it: the leaderboard records it, Bench2Drive's Success Rate ignores it, and no route here can fail through it. A route that did not finish fails through route_timeout, tick_runtime, agent_blocked, route_deviation or route_incomplete, all mapped to what they are. Nothing in this catalogue makes a vehicle run a stop sign or fail to yield on purpose; those hazards are reached, if at all, as a side effect of a planner seeing less.",
  "hazards": [
    {"id": "collision_pedestrian", "name": "Collision with a pedestrian", "gate": "fail"},
    {"id": "collision_vehicle", "name": "Collision with another vehicle", "gate": "fail"},
    {"id": "collision_static", "name": "Collision with a static element", "gate": "fail"},
    {"id": "red_light", "name": "Ran a red light", "gate": "fail"},
    {"id": "stop_sign", "name": "Ran a stop sign", "gate": "fail"},
    {"id": "yield_emergency_vehicle", "name": "Failed to yield to an emergency vehicle", "gate": "fail"},
    {"id": "route_deviation", "name": "Deviated more than 30m from the assigned route", "gate": "fail"},
    {"id": "agent_blocked", "name": "Stopped moving and did not resume", "gate": "fail"},
    {"id": "scenario_timeout", "name": "The route or its scenario did not complete in its budget", "gate": "fail"},
    {"id": "min_speed", "name": "Failed to maintain the minimum speed", "gate": "fail"},
    {"id": "off_road", "name": "Drove outside the route's lanes", "gate": "fail"},
    {"id": "route_completed", "name": "The route was completed", "gate": "pass"}
  ],
  "operators": [
    {"name": "blind", "kind": "blind", "magnitudes": [0.5, 0.9],
     "reaches": ["collision_vehicle", "collision_pedestrian", "red_light"],
     "rationale": "Vehicles and walkers past 50 m x (1 - m) are not in the list PDM-Lite plans on: 25 m and 5 m."},
    {"name": "lag", "kind": "lag", "magnitudes": [0.3, 0.6],
     "reaches": ["collision_vehicle", "collision_pedestrian"],
     "rationale": "The list's poses and velocities are 0.3 s and 0.6 s old."},
    {"name": "coarse", "kind": "coarse", "magnitudes": [0.25, 0.5],
     "reaches": ["off_road", "collision_static", "scenario_timeout", "min_speed"],
     "rationale": "Steer, throttle and brake rounded to a grid."},
    {"name": "unsteady", "kind": "unsteady", "magnitudes": [0.1, 0.3],
     "reaches": ["off_road", "collision_static", "collision_vehicle"],
     "rationale": "Gaussian noise on steer and throttle."},
    {"name": "object-dropout", "kind": "dropout", "windows": [{"start_ms": 3000, "for_ms": 5000}],
     "reaches": ["collision_vehicle", "collision_pedestrian", "collision_static"],
     "rationale": "The list is empty for five seconds, three seconds into the route."},
    {"name": "object-suppress", "kind": "occlude-target", "magnitudes": [1],
     "reaches": ["collision_vehicle", "collision_pedestrian"],
     "rationale": "The nearest vehicle or walker is never reported."}
  ],
  "checks": {
    "collision_pedestrian": ["collision_pedestrian"],
    "collision_vehicle": ["collision_vehicle"],
    "collision_layout": ["collision_static"],
    "red_light": ["red_light"],
    "stop_sign": ["stop_sign"],
    "yield_to_emergency_vehicle": ["yield_emergency_vehicle"],
    "outside_route_lanes": ["off_road"],
    "route_deviation": ["route_deviation"],
    "agent_blocked": ["agent_blocked"],
    "scenario_timeout": ["scenario_timeout"],
    "route_timeout": ["scenario_timeout"],
    "tick_runtime": ["scenario_timeout"],
    "route_incomplete": ["scenario_timeout"]
  }
}
