36. Keep long distance with VRU (KLD-L1-3)
The ego_keep_long_distance_vru matcher scenario (KLD-L1-3) detects intervals where the Ego regulates its longitudinal motion (maintains speed, decelerates, creeps, or stops) to preserve a safe forward gap to a VRU that is in, entering, or close enough to the Ego's intended path to constrain forward progress.
This is a LogIQ C++ matcher scenario used in the NVIDIA evaluation pipeline. It complements the FTLX shadow scenario sut.keep_long_distance (defined in keep_long_distance_h.osc). The matcher struct is named sut.ego_keep_long_distance_vru to avoid a compile-time redefinition conflict with the FTLX scenario.
Scenario location: $FTX/env/nvidia/nvdx_lib/matcher/ego_keep_long_distance_vru/
Match label: keep_long_distance_vru
Pipeline registration: env/nvidia/evaluation_pipeline/config/all_scenarios.osc
Base scenario: $FTX/env/nvidia/nvdx_lib/matcher/common/ego_keep_long_distance_object_matcher_base.osc
36.1 Actors
| Actor | Description | Type |
|---|---|---|
sut.car |
Vehicle under test (Ego) | vehicle |
object |
VRU ahead on the Ego lane | person, cyclist, motorcycle (also bicycle via object kind) |
36.2 Scenario essence
The core interval (excluding padding) lasts at least minimum_scenario_duration. During this interval:
Ego: The Ego drives in a lane at a speed ≥ ego_vehicle_min_moving_speed, behind the VRU at a road longitudinal gap of at most maximum_forward_gap_threshold, and yields (decelerates to standstill_speed).
VRU: The VRU is ahead of the Ego in the same lane, moving or stationary.
Note
minimum_forward_gap_threshold is recorded in KPIs only. The longitudinal_position modifier enforces a maximum gap (road gap ≤ maximum_forward_gap_threshold), not a minimum.
36.2.1 Match modifiers (essence phase)
| Actor | Modifiers |
|---|---|
| Ego | speed, keep_lane, longitudinal_position (behind VRU, road gap ≤ max), yields |
| VRU | (implicit via object actor — on Ego lane, ahead) |
36.3 Relationship to other keep-long-distance matchers
| Variant | Struct | Contender | Match criterion | Base |
|---|---|---|---|---|
| K0 | sut.ego_keep_long_distance |
Same-lane lead vehicle | Time gap | Lane-following base |
| Oncoming in path | sut.ego_keep_long_distance_with_oncoming_in_path |
Oncoming vehicle | Physical distance + heading | Lane-following base |
| VRU (this scenario) | sut.ego_keep_long_distance_vru |
Person / cyclist / motorcycle | Forward road gap + yield | Object base |
See also Keep long distance — K0 and oncoming in path
36.4 Parameters
Production defaults (from all_scenarios.osc):
| Parameter | Description | Default |
|---|---|---|
minimum_scenario_duration |
Minimum essence interval duration | 2s |
minimum_forward_gap_threshold |
Minimum forward gap from the Ego to the VRU, recorded in coverage | 2m |
maximum_forward_gap_threshold |
Maximum forward road gap above which the VRU no longer constrains the Ego | 50m |
max_acceleration_for_yield |
Maximum (most negative) longitudinal acceleration to quality as a yield. Values less than or equal to this threshold indicate yielding |
-1mpsps |
standstill_speed |
Speed below which the Ego is considered to be creeping or at a standstill in response to a VRU | 5kph |
min_padding_duration |
Minimum time buffer (padding) added to the start or end of a mined scenario clip | 0s |
max_padding_duration |
Maximum time buffer (padding) allowed for a mined scenario clip | 3s |
ego_vehicle_min_moving_speed |
Speed threshold above which the Ego is considered actively moving | 1kph |
lane_departure_threshold |
Maximum distance the Ego is permitted to cross over the lane boundary line before a lane departure event is triggered | 1m |
kinds |
VRU object kinds | [person, cyclist, motorcycle] |
36.5 Regression tests
| Test | Clip | Expected |
|---|---|---|
keep_long_distance_vru1_nv_test |
Person on ego lane clip (object_on_ego_lane/test_1) |
One KLD-L1-3 interval (~18.8s–28.7s) |
keep_long_distance_vru2_nv_test |
Cyclist crossing clip (cyclist_crossing_test) |
Six KLD-L1-3 intervals |
Test scripts:
$FTX/qa/regression/mfr/tests/nvidia/keep_long_distance_vru/keep_long_distance_vru1.sh$FTX/qa/regression/mfr/tests/nvidia/keep_long_distance_vru/keep_long_distance_vru2.sh
36.6 Metrics
36.6.1 Coverage
[Click] Coverage items defined in sut.ego_keep_long_distance_vru
| Item | Description | Range | Unit/Type |
|---|---|---|---|
ego_min_forward_gap_to_vru |
Minimum forward gap from the Ego to the VRU during the interval | [0..50), every: 5 | m |
36.6.2 KPIs and records
[Click] Records defined in sut.ego_keep_long_distance_vru
| Item | Description | Unit/Type |
|---|---|---|
ego_speed_at_kld_vru_end |
Ego speed at end of the KLD-VRU essence phase | speed |
ego_avg_speed_during_kld_vru |
Ego average speed during the KLD-VRU interval | speed |
ego_max_speed_during_kld_vru |
Ego maximum speed during the KLD-VRU interval | speed |
ego_min_speed_during_kld_vru |
Ego minimum speed during the KLD-VRU interval | speed |
ego_max_lon_acceleration_during_kld_vru |
Ego maximum longitudinal acceleration during the KLD-VRU interval | acceleration |
ego_min_lon_acceleration_during_kld_vru |
Ego minimum longitudinal acceleration during the KLD-VRU interval | acceleration |
[Click] Records inherited from sut.logiq_base_scenario and object-base scenarios
| Item | Description | Unit/Type |
|---|---|---|
ego_speed_at_start |
Speed of the Ego at the start of the interval | speed |
ego_max_speed |
Ego maximum speed over the interval | speed |
ego_min_speed |
Ego minimum speed over the interval | speed |
ego_avg_speed |
Ego average speed over the interval | speed |
ego_max_lon_acceleration |
Ego maximum longitudinal acceleration during the interval | acceleration |
ego_min_lon_acceleration |
Ego minimum longitudinal acceleration during the interval | acceleration |
ego_distance_traveled_during_interval |
Total distance travelled by the Ego during the interval | m |
interval_duration |
Interval duration | s |