146. Vehicle lane hugger
Scenario location: $FTX_PACKAGES/base_scenarios/scenarios/adjacent_vehicles/vehicle_lane_hugger/
In the vehicle_lane_hugger scenario, the other vehicle driving in the same direction in the adjacent lane to the Ego approaches the line dividing the two lanes.
146.1 Actors
The actors associated with this scenario are as follows:
| Actor | Description | Type | Depiction |
|---|---|---|---|
ego |
Vehicle under test | vehicle |
![]() |
lane_hugger_vehicle |
Vehicle that drives close to the line dividing two lanes | vehicle |
![]() |
146.2 Prerequisites
Environmental requirements: A road with at least two lanes.
146.3 Scenario essence
146.3.1 phase_essence
146.3.1.1 phase_essence_vehicle_approaching_ego
Ego: The Ego drives in the same lane along the road.
lane_hugger_vehicle: Drives in the lane_hugger_side lane, from an initial position of intent_lane_hugger_vehicle_position_at_phase_essence_vehicle_approaching_ego_start to a final position of intent_assist_lane_hugger_vehicle_position_at_phase_essence_vehicle_approaching_ego_end.
146.3.1.2 phase_essence_vehicle_driving_closely_to_ego
Ego: In this phase the Ego drives in the same lane along the road.
lane_hugger_vehicle: At the start of the phase, the lane_hugger_vehicle drives in the lane_hugger_side lane of the Ego and is positioned at intent_lane_hugger_vehicle_position_at_phase_essence_vehicle_approaching_ego_start. By the end of this phase, it is positioned at intent_assist_lane_hugger_vehicle_position_at_phase_essence_vehicle_approaching_ego_end, maintaining a lateral position of intent_lane_hugger_vehicle_lateral_at_phase_essence_vehicle_driving_closely_to_ego_end along the road.
146.4 Scenario Main phases
The test scenario vehicle_lane_hugger_main is structured into three distinct phases:
146.4.1 phase_ego_warm_up
The phase_ego_warm_up phase invokes the neighbor_vehicles_ego_warm_up scenario.
146.4.2 phase_essence
The phase_essence invokes the phase_essence.
146.4.3 phase_post
The phase_post invokes the neighbor_vehicles_post scenario.
146.5 Parameters
The paths to the CSV file and the main CSV file are as follows:
$FTX_PACKAGES/base_scenarios/test_suites/test_suite_definitions/adjacent_vehicles/vehicle_lane_hugger.csv
$FTX_PACKAGES/base_scenarios/test_suites/test_suite_definitions/adjacent_vehicles/vehicle_lane_hugger_main.csv
$FTX_PACKAGES/base_scenarios/test_suites/test_suite_definitions/adjacent_vehicles/ego_drive_and_neighbor.csv
| Parameter | Description | Range |
|---|---|---|
gen_lane_hugger_side |
The side of the Ego that the lane_hugger_vehicle hugs | left, right |
gen_lane_hugger_vehicle_speed_at_start |
The lane_hugger_vehicle speed at the start of the scenario | [0..150]kph |
gen_vehicle_closing_in_from_side |
The side on which the lane_hugger_vehicle will approach the Ego | left, right, center |
gen_vehicle_approaching_ego_lateral_distance |
The lane_hugger_vehicle's lateral distance during the approaching phase | [0..0.2]m |
gen_lane_hugger_vehicle_min_distance_to_ego |
Min distance between the lane_hugger_vehicle and the Ego | [-2..0]m |
gen_lane_hugger_vehicle_max_distance_to_ego |
Max distance between the lane_hugger_vehicle and the Ego | [0..2]m |
gen_ego_speed_at_start |
Input speed of the Ego at the start of the scenario | [0..150]kph |
The scenario sut.ego_drive_and_neighbor is included in the scenario sut.vehicle_lane_hugger, with the option to constrain the following input parameters:
| Parameter | Description | Range |
|---|---|---|
gen_neighbor_vehicle_rel_thw_to_ego_at_start |
Relative time gap of the neighbor_vehicle to the Ego at the start | [-5..5]s |
gen_neighbor_vehicle_rel_thw_to_ego_at_end |
Relative time gap of the neighbor_vehicle to the Ego at the end | [-5..5]s |
gen_neighbor_vehicle_side |
Generated side of the neighbor_vehicle relative to the Ego | left, right |
gen_neighbor_vehicle_speed |
Speed of the neighbor_vehicle at the start of the scenario | [0..150]kph |
gen_ego_speed_at_start |
Input speed of the Ego at the start of the scenario | [0..150]kph |
146.6 Metrics
Metrics collected during test execution are given below.
146.6.1 Coverage
The coverage metrics are given below.
146.6.1.1 Coverage items
The multi-dimensional situations captured during the test execution are as follows:
| Item | Description | Range | Unit/Type |
|---|---|---|---|
ego_min_lat_distance_to_lane_hugger_vehicle |
Minimum lateral distance between cars throughout the scenario | [0..0.2), [0.2..0.4), [0.4..0.6), [0.6..0.8), [0.8..1), [1..1.2), [1.2..1.4), [1.4..1.6), [1.6..1.8), [1.8..2), [2..2.2), [2.2..2.4), [2.4..2.6), [2.6..2.8), [2.8..3), [3..3.20) | m |
lane_hugger_min_lat_distance_to_lane |
Minimum lateral distance between the vehicle and the lane border throughout the scenario | [0..0.1), [0.1..0.2), [0.2..0.3), [0.3..0.4), [0.4..0.5), [0.5..0.6), [0.6..0.7), [0.7..0.8), [0.8..0.9), [0.9..1) | m |
hug_duration |
Duration of lane hugging (s). Measured from the moment the lane hugger vehicle is first close to the lane border (lateral distance from border is at most 10% of the lane width) | [0..2), [2..4), [4..6), [6..8), [8..10) | s |
lane_hugger_vehicle_min_distance_to_ego |
Min distance between the lane_hugger_vehicle and the Ego | [-2..0), every: 0.5 | m |
lane_hugger_vehicle_max_distance_to_ego |
Max distance between the lane_hugger_vehicle and the Ego | [0..2), every: 0.5 | m |
road_curvature |
Curvature of the road | other, straightish, soft_left, hard_left, soft_right, hard_right | curvature |
lane_hugger_vehicle_kind |
Other lane hugger vehicle category | sedan, van, bus, box_truck, semi_trailer_truck, full_trailer_truck, motorcycle, bicycle | vehicle_category |
gen_lane_hugger_side |
The side of the Ego that the lane_hugger_vehicle hugs | left, right | av_side |
gen_lane_hugger_vehicle_speed_at_start |
The lane_hugger_vehicle speed at the start of the scenario | [0..150), every: 10.0 | kph |
lane_hugger_vehicle_speed_at_start |
The lane_hugger_vehicle speed at the start of the scenario | [0..150), every: 10.0 | kph |
gen_vehicle_closing_in_from_side |
The side on which the lane_hugger_vehicle will approach the Ego | left, right, center | line |
gen_vehicle_approaching_ego_lateral_distance |
The lane_hugger_vehicle's lateral distance during the approaching phase | [0..0.2), every: 0.1 | m |
gen_lane_hugger_vehicle_min_distance_to_ego |
Min distance between the lane_hugger_vehicle and the Ego | [-2..0), every: 0.5 | m |
gen_lane_hugger_vehicle_max_distance_to_ego |
Max distance between the lane_hugger_vehicle and the Ego | [0..2), every: 0.5 | m |
lane_hugger_side |
The side of the Ego that the lane_hugger_vehicle hugs | left, right | av_side |
vehicle_closing_in_from_side |
The side on which the lane_hugger_vehicle will approach the Ego | left, right, center | line |
vehicle_approaching_ego_lateral_distance |
The lane_hugger_vehicle's lateral distance during the approaching phase | [0..0.2), every: 0.1 | m |
[Click] The coverage items inherited from the sut.generic_base scenario are as follows:
| Item | Description | Range | Unit/Type |
|---|---|---|---|
gen_ego_speed_at_start |
Input speed of the Ego at the start of the scenario | [0..150), every: 10.0 | kph |
ego_speed_at_start |
Actual speed of the Ego at the start of the scenario | [0..150), every: 10.0 | kph |
[Click] The scenario sut.ego_drive_and_neighbor is included in the scenario sut.vehicle_lane_hugger, with the following coverage items:
| Item | Description | Range | Unit/Type |
|---|---|---|---|
| -- | -- | -- | -- |
[Click] The scenario sut.adjacent_vehicles_family_base is included in the scenario sut.ego_drive_and_neighbor, with the following coverage items:
| Item | Description | Range | Unit/Type |
|---|---|---|---|
neighbor_vehicle_speed_at_passing_by |
Speed of the neighbor_vehicle while the two cars are passing by | [0..150), every: 10.0 | kph |
gen_neighbor_vehicle_rel_thw_to_ego_at_start |
Relative time gap of the neighbor_vehicle to the Ego at the start | [-5..5), every: 1.0 | s |
gen_neighbor_vehicle_rel_thw_to_ego_at_end |
Relative time gap of the neighbor_vehicle to the Ego at the end | [-5..5), every: 1.0 | s |
gen_neighbor_vehicle_side |
Generated side of the neighbor_vehicle relative to the Ego | left, right | av_side |
gen_neighbor_vehicle_speed |
Speed of the neighbor_vehicle at the start of the scenario | [0..150), every: 10.0 | kph |
neighbor_vehicle_rel_speed_to_ego_at_start_cover |
Relative speed of the neighbor_vehicle to the Ego at the start of the scenario | [-20..110), every: 20.0 | kph |
ego_rel_lon_dist_to_neighbor_vehicle_at_start |
Relative longitudinal distance from the Ego to the neighbor_vehicle at the start of the scenario | [-6..38), every: 4.0 | m |
neighbor_vehicle_lat_offset_at_start |
Lateral lane offset of the neighbor_vehicle at the start of the scenario | [-1..1), every: 0.5 | m |
ego_lat_offset_at_start |
Lateral lane offset of the Ego at the start of the scenario | [-1..1), every: 0.5 | m |
neighbor_vehicle_side |
Side of the neighbor_vehicle relative to the Ego | left, right | av_side |
neighbor_vehicle_speed |
Speed of the neighbor_vehicle | [0..150), every: 10.0 | kph |
neighbor_vehicle_rel_speed_to_ego_at_end_cover |
Relative speed of the neighbor_vehicle to the Ego at the end of the scenario | [-20..110), every: 20.0 | kph |
neighbor_vehicle_lat_offset_at_end |
Lateral lane offset of the neighbor_vehicle at the end of the scenario | [-1..1), every: 0.5 | m |
ego_lat_offset_at_end |
Lateral lane offset of the Ego at the end of the scenario | [-1..1), every: 0.5 | m |
ego_rel_lon_time_dist_to_neighbor_vehicle_at_start |
Time distance from the Ego to the neighbor_vehicle at the start of the scenario | [1..5), every: 0.5 | s |
max_road_curvature_radius |
Maximum curvature of the road | [0..100), [100..150), [150..200), [200..300), [300..400), [400..600), [600..800), [800..1000), [1000..1200), [1200..1400), [1400..1600), [1600..1800), [1800..2000), [2000..2400), [2400..2800), [2800..3200), [3200..3600), [3600..4000), [4000..5000), [5000..6000), [6000..8000), [8000..10000), [10000..20000) | m |
neighbor_vehicle_rel_thw_to_ego_at_start |
Relative time gap of the neighbor_vehicle to the Ego at the start | [-5..5), every: 1.0 | s |
neighbor_vehicle_rel_thw_to_ego_at_end |
Relative time gap of the neighbor_vehicle to the Ego at the end | [-5..5), every: 1.0 | s |
146.6.1.2 Cross coverage items
The test execution data for the combination of multiple coverage items is as follows:
| Item | Description | Referred coverage items |
|---|---|---|
| -- | -- | -- |
[Click] The cross coverage items inherited from the sut.generic_base scenario are as follows:
| Item | Description | Referred coverage items |
|---|---|---|
| -- | -- | -- |
[Click] The scenario sut.ego_drive_and_neighbor is included in the scenario sut.vehicle_lane_hugger, with the following cross coverage items:
| Item | Description | Referred coverage items |
|---|---|---|
| -- | -- | -- |
[Click] The scenario sut.adjacent_vehicles_family_base is included in the scenario sut.ego_drive_and_neighbor, with the following cross coverage items:
| Item | Description | Referred coverage items |
|---|---|---|
cross_ego_rel_lon_dist_to_neighbor_vehicle_at_start_X_neighbor_vehicle_rel_speed_to_ego_at_start_cover |
Cross cover of relative distance to neighbor_vehicle's relative speed | ego_rel_lon_dist_to_neighbor_vehicle_at_start, neighbor_vehicle_rel_speed_to_ego_at_start_cover |
146.6.2 KPI
The key performance indicators are given below.
146.6.2.1 Record items
The performance metrics and the data items captured during the test execution are as follows:
| Item | Description | Range | Unit/Type |
|---|---|---|---|
ego_lat_distance_to_lane_hugger_vehicle_record |
Minimum absolute lateral distance between the two cars (meters). Measured only when the longitudinal distance from Ego car to other car is in the [gen_lane_hugger_vehicle_min_distance_to_ego..gen_lane_hugger_vehicle_max_distance_to_ego] range. | m | |
lane_hugger_vehicle_max_lat_acceleration_record |
Maximum lateral acceleration of other car (mpsps). | mpsps |
[Click] The KPIs inherited from the sut.generic_base scenario are as follows:
| Item | Description | Range | Unit/Type |
|---|---|---|---|
| -- | -- | -- | -- |
[Click] The scenario sut.ego_drive_and_neighbor is included in the scenario sut.vehicle_lane_hugger, with the following KPIs:
| Item | Description | Range | Unit/Type |
|---|---|---|---|
| -- | -- | -- | -- |
[Click] The scenario sut.adjacent_vehicles_family_base is included in the scenario sut.ego_drive_and_neighbor, with the following KPIs:
| Item | Description | Range | Unit/Type |
|---|---|---|---|
mean_road_curvature |
Mean curvature of the road on which the Ego is driving, calculated as the average curvature of the road | m | |
max_road_curvature |
Maximum curvature of the road | m | |
ego_lat_dist_to_neighbor_vehicle_at_passing_by |
Lateral center-to-center distance between the Ego and the neighbor_vehicle when passing each other | m | |
neighbor_vehicle_length |
Length of the neighbor_vehicle | m | |
neighbor_vehicle_width |
Width of the neighbor_vehicle | m | |
neighbor_vehicle_height |
Height of the neighbor_vehicle | m |
146.6.3 Checks
The captured problematic behavior or conditions are as follows:
| Default severity | Description | Issue kind | Threshold |
|---|---|---|---|
error |
The scenario fails if the lane_hugger_vehicle does not get laterally closer to the Ego | 1m | |
error |
The lane_hugger_vehicle performed lane change | adjacent_vehicle_lane_change | lane_hugger_vehicle switch lane end bool is true |

