128. Ego bypassing object checker and stopper
Checker location:
$FTX_PACKAGES/base_scenarios/common/metrics_checks/ego_bypassing_object_check.osc
Stopper location:
$FTX_PACKAGES/base_scenarios/common/metrics_checks/object_scenario_stopper.osc
128.1 Ego bypassing object checker
This checker module checks whether the Ego has successfully bypassed:
- A single stationary object, or
- A group of stationary objects
It raises an issue if the Ego fails to bypass within a specified distance threshold.
128.1.1 Issue kinds
issue_kind: [ego_did_not_bypass_object, ego_did_not_bypass_object_group]
-
ego_did_not_bypass_object: Triggered when the Ego fails to bypass a single object.
-
ego_did_not_bypass_object_group: Triggered when the Ego fails to bypass a group of objects.
The parameters you can constrain for this checker are as follows:
| Parameter | Description | Range |
|---|---|---|
ego_bypassing_object_distance |
The minimum required distance to consider an object as bypassed. | 1m |
ego_bypassing_object_check_severity |
The severity level to report when a bypass check fails. | warning |
| --- |
128.2 Ego bypassing object & object group scenario stoppers
This module defines scenario stoppers that automatically terminate a simulation scenario when the Ego:
- Bypasses a stationary object or a group of objects by a specified distance, or
- Remains stopped below a speed threshold for longer than a specified duration.
These stoppers are commonly used in simulation phases to control scenario flow based on the Ego’s motion behavior near obstacles.
128.3 object_scenario_stopper
Monitors a single stationary object and ends the scenario if the Ego:
- Bypasses it by a configured distance, or
- Remains stopped for longer than a specified duration.
The parameters you can constrain for this checker are as follows:
| Parameter | Type | Default | Description |
|---|---|---|---|
object_position |
msp_position | - | Position of the single object |
ego_bypassing_object_end_distance |
length | 10m | Distance beyond which object is considered bypassed |
time_delay |
time | 10s | Time Ego must remain below speed threshold to trigger stop |
standstill_threshold |
speed | 1kph | Speed under which Ego is considered stopped |
| --- |
128.3.0.1 Events
ego_bypassed: Triggers when the Ego crosses the object byego_bypassing_object_end_distance.ego_stopped: Detects transition from motion to stop.ego_stopped_for_time: Confirms Ego remained stopped fortime_delay.ego_stops_and_moves: Resets the stop tracking when the Ego starts to move.
128.4 object_group_scenario_stopper
The object_group_scenario_stopper scenario module is designed to terminate a scenario when the Ego:
- Bypasses the last object in a group of static objects by a specified distance, or
- Remains stopped below a speed threshold for longer than a specified duration.
This is useful for verifying bypass behavior around multiple obstacles and detecting stalls or deadlocks during complex navigation.
This stopper is typically used in scenarios involving multiple static obstacles like parked vehicles, roadblocks, or traffic barriers. It is integrated into test phases to stop the simulation once the test objective is met or fails.
The parameters you can constrain for this stopper are as follows:
| Parameter | Type | Default | Description |
|---|---|---|---|
object_group |
plain_object_group | - | Group of stationary objects to monitor |
ego_bypassing_object_end_distance |
length | 10m | Distance beyond which the Ego is considered to have bypassed the last object |
max_time_ego_stops |
time | 10s | Maximum duration the Ego can remain below the standstill threshold |
standstill_threshold |
speed | 3kph | Speed under which the Ego is considered "stopped" |
scenario_stoppers_enabled |
bool | true | Flag to toggle stopper logic dynamically |
128.4.1 Events
-
clock
Samples position and object states each tick, ensuring events trigger only when valid states are available. -
ego_bypassed
Triggers when Ego's distance to the last object in the group is less than-ego_bypassing_object_end_distance. -
standstill_watcher
Tracks how long the Ego remains under the standstill speed threshold. -
ego_stops_for_max_time
Triggered when standstill duration exceedsmax_time_ego_stops.
128.4.1.1 Design Constraints
-
The last object in the group is used as the bypass reference.
-
Conditions are gated with scenario_stoppers_enabled, enabling user to turn off the logic dynamically.
-
Uses
ego_standstill_watcher.oscto avoid manual timing code and ensure robustness.