380. Unplanned Standing
The unplanned_standing_checker detects situations where the vehicle is standing still or driving at very low speeds without a valid reason.
It flags situations where the vehicle hesitates, becomes stuck, or slows down unnecessarily, even though it is safe and appropriate to continue driving. This helps detect issues in autonomous driving systems, such as excessive caution or failure to proceed, which can disrupt traffic flow.
380.0.1 Start condition
An interval starts when all of the following conditions are met:
- The vehicle's speed falls below the configured
max_speed_thresholdwhich indicates it is standing still or near-standstill. - The vehicle's speed has been below the
max_speed_thresholdfor a minimum durationdebounce_start_timeto avoid flagging cases where the vehicle has slowed down or stopped normally. - The vehicle's longitudinal acceleration is below the configured
max_acceleration_thresholdto avoid flagging cases where the vehicle slowed or stopped but is already starting to accelerate again. - None of the justification conditions are met.
380.0.2 End condition
The interval ends when any of the following conditions occur:
- The vehicle's speed exceeds the
max_speed_thresholdplus a configurable tolerancespeed_threshold_tolerance. - The vehicle's longitudinal acceleration exceeds the
max_acceleration_threshold, indicating it is starting to move. - Any of the justification conditions are met.
380.1 Attributes
The following attributes define the behavior and characteristics of the evaluator.
| Checker attribute | Description |
|---|---|
| Parent object | vehicle.unplanned_standing |
| Issue category | sut or other |
| Issue kind | unplanned_standing |
| Default severity | warning |
| Trigger condition | Based on unplanned_standing watcher |
| Operation modes | unplanned_standing_checker |
380.2 Configuration parameters
The following parameters can be configured to customize the evaluator's behavior.
| Parameter | Type | Description | Default Value |
|---|---|---|---|
max_speed_threshold |
speed | Very low velocity threshold below which the vehicle is considered standing | 1.0kph |
speed_threshold_tolerance |
speed | Tolerance for speed threshold - interval ends when speed exceeds max_speed_threshold + speed_threshold_tolerance | 0.5kph |
debounce_start_time |
time | Minimum duration the vehicle must be below the max_speed_threshold before starting an interval | 0s |
max_acceleration_threshold |
acceleration | Maximum longitudinal acceleration threshold below which the vehicle is considered to be standing still | 0.3mpsps |
object_detection_range |
length | Detection range for objects ahead | 10.0m |
blocking_object_speed_threshold |
speed | Maximum speed threshold for objects; objects or vehicles below this threshold are considered blocking | 1.0kph |
pedestrian_detection_range |
length | Detection range for pedestrians crossing or about to cross the vehicle's path | 10.0m |
intersection_detection_range |
length | Detection range for an intersection or roundabout | 10.0m |
traffic_control_detection_range |
length | Detection range for traffic control devices (traffic lights, signs) | 10.0m |
380.3 Metrics
The following metrics are recorded and tracked by the evaluator.
| Metric item | Unit / Type | Description |
|---|---|---|
acceleration_at_start |
mpsps | Longitudinal acceleration at the unplanned standing interval start |
interval_duration |
s | Duration of the unplanned standing interval |
end_reason |
enum (no_justification, traffic_blocking, pedestrian_present, traffic_control_device, intersection_navigation, turn_indicator_enabled) |
Reason why standing was justified (if applicable) |
min_speed |
kph | Minimum speed during standing |
max_speed |
kph | Maximum speed during standing |
avg_speed |
kph | Average speed during standing |
min_lon_acceleration |
mpsps | Minimum longitudinal acceleration during standing |
max_lon_acceleration |
mpsps | Maximum longitudinal acceleration during standing |
380.4 Log and Error Messages
| Output Condition | Description | Default Severity |
|---|---|---|
| After the interval ends, a warning is issued. | Vehicle was slower than << ftlx_global_eval_config.ego_unplanned_standing_checker_config.max_speed_threshold >> for longer than << ftlx_global_eval_config.ego_unplanned_standing_checker_config.debounce_start_time >> |
Warning |
380.5 Additional information
Justification conditions
- Traffic Blocking: An object ahead within
object_detection_rangeis stopped or moving slower thanblocking_object_speed_threshold. - Pedestrians: A person is detected ahead near the path within
pedestrian_detection_range. - Control Devices: Presence of a stop sign, yield sign, or red light within
traffic_control_detection_range. - Intersections/Roundabouts: Vehicle is navigating or yielding at junctions or roundabouts within intersection_detection_range.
- Turn Indicators: Any turn signal state other than off is active.
When the vehicle stands still without any valid justification, an interval is triggered and an issue is reported.
Implementation notes:
- Object and pedestrian detection uses
vehicle.global_distance(object, closest_compound, closest_compound)to calculate distances, followed byvehicle.local_distance(object, closest_compound, closest_compound, lon)to determine if objects are ahead of the vehicle (positive local distance indicates ahead). - Intersection detection uses
map.get_route_elements_ahead_of_type(from_pos, intersection_detection_range, path, element_type)to query for internal roads and roundabout elements within the detection range. - Traffic control device detection uses
map.get_signals_on_route(vehicle.state.msp_pos.road_position, vehicle.planned_path, traffic_control_detection_range)to identify stop signs, yield signs, and traffic lights along the planned route.