Configuring vehicles examples
Example: define SUT model and control
OSC2 code: define SUT model and control
import "$FTX/config/sim/sumo_default.osc"
import "$FTX/env/basic/exe_platforms/sumo_dsp/config/sumo_dsp_config.osc"
import "$FTX/env/basic/driver_dut_imps/ACC/acc_drive_imp.osc"
extend test_config:
set map = "$FTX_PACKAGES/maps/straight_long_road.xodr"
set test_drain_time = 0second
extend sut:
keep(car.sp_manager_type == DSP)
keep(car.behavior_manager_type == manual)
keep(car.physical_drive == dynamic)
keep(car.policy.has_dynamic_controller == true)
keep(car.physical.has_dynamic_controller == true)
scenario sut.acc_basic_drive:
acc_speed: speed with:
keep(it in [50..60]kph)
do serial():
pre_acc_drive: sut.car.drive() with:
duration([3..5]second)
speed(speed: acc_speed, at: end)
sut.car.request_ACC_on(cruise_speed: acc_speed)
acc_drive: sut.car.drive() with:
duration([5..7]second)
sut.car.request_ACC_off()
post_acc_drive: sut.car.drive() with:
duration([3..5]second)
extend top.main:
do sut.acc_basic_drive()
Example: ACC basic drive
OSC2 code: ACC basic drive
import "$FTX/config/sim/sumo_default.osc"
import "$FTX/env/basic/exe_platforms/sumo_dsp/config/sumo_dsp_config.osc"
import "$FTX/env/basic/adas_hlm_imps/ACC/acc_hlm_imp.osc"
extend test_config:
set map = "$FTX_PACKAGES/maps/straight_long_road.xodr"
set test_drain_time = 0second
extend sut_vehicle:
def post_plan() is also:
hlm_driver.acc_behavior.acc_behavior_params.max_deceleration = 5mpsps
scenario sut.acc_basic_drive:
acc_speed: speed with:
keep(it in [50..60]kph)
do serial():
sut.car.press_ACC_main_button() # switch from OFF to STANDBY mode
pre_acc_drive: sut.car.drive() with:
duration([3..5]second)
speed(speed: acc_speed, at: end)
sut.car.press_ACC_set_button(cruise_speed: acc_speed)
acc_drive: sut.car.drive() with:
duration([5..7]second)
sut.car.press_ACC_cancel_button()
post_acc_drive: sut.car.drive() with:
duration([3..5]second)
extend top.main:
do sut.acc_basic_drive()
Example: AEB reverse drive and stationary object
OSC2 code: AEB reverse drive and stationary object
import "$FTX/config/sim/sumo_default.osc"
import "$FTX/env/basic/exe_platforms/sumo_dsp/config/sumo_dsp_config.osc"
# import "$FTX/config/sim/carla_default.osc" # From: 'sim: carla' from sim_manually_driven_dynamic_config.tosc
# import "$FTX/env/basic/exe_platforms/carla_dsp/config/carla_dsp_config.osc" # From: 'sim: carla' from sim_manually_driven_dynamic_config.tosc
import "$FTX/env/basic/driver_dut_imps/rear_AEB/rear_aeb_drive_imp.osc"
import "$FTX_PACKAGES/adas/AEB/common/utils/external.osc"
# import "$FTX/env/basic/driver_dut_imps/rear_AEB/rear_aeb_drive_imp.osc"
# import "$FTX_PACKAGES/adas/AEB/common/utils/external.osc"
extend test_config:
set map = "$FTX_PACKAGES/maps/straight_long_road.xodr"
set test_drain_time = 0second
extend sut_vehicle:
def post_plan() is also:
hlm_driver.aeb_behavior.aeb_behavior_params.roi_length_increase = 2.1m
scenario sut.aeb_sut_reverse_drive_and_stationary_object:
stationary_object: plain_object
sut_width: length with:
keep(it == sut.car.get_width())
sut_speed: speed
keep(soft sut_speed in [1..40]kph)
sut_rel_lon_dist_to_stationary_object: length with:
keep(default it in [10..60]m)
overlap_dist: length with:
keep(default it in [0m..sut_width])
lane_num: int with:
keep(default it in [1..3])
stationary_object_pos: msp_position
line_shape_reverse: line_shape_reverse with:
keep(it.lon_speed == sut_speed)
keep(it.offset == sut_rel_lon_dist_to_stationary_object)
top.position_along_drive(stationary_object_pos, sut_reverse_drive
,lon_offset: - (sut_rel_lon_dist_to_stationary_object)
,lat_offset: (sut_width/2) - overlap_dist)
initial_stop_time: time with:
keep(it == 2s)
do aeb_sut_reverse_drive_and_stationary_object:parallel(start_to_start:0s, overlap:any):
sut_drive: serial():
sut.car.request_rear_AEB_mode(state: active)
sut_at_stop: sut.car.drive(duration:initial_stop_time) with:
lane(lane_num, from: curb, at: all)
sut_reverse_speed: speed(0kph, at: all)
override(sut_reverse_speed, run_mode: best_effort)
sut_reverse_drive: sut.car.drive() with:
lane(lane_num, from: curb, at: all)
shape(quantity: position, request: both, shape_object: line_shape_reverse)
stationary_object.exists_at(stationary_object_pos)
extend top.main:
do a:sut.aeb_sut_reverse_drive_and_stationary_object() with:
keep(it.stationary_object.kind == person)
keep(it.sut_speed == 4kph)
keep(it.sut_rel_lon_dist_to_stationary_object == 10m)
keep(it.overlap_dist == 0.40m)
keep(it.lane_num == 2)
Example: normal driver model
OSC2 code: normal driver model
import "$FTX/config/sim/sumo_default.osc"
import "$FTX/env/basic/behavioral_models/sumo/builtin/sumo_builtin_bme.osc"
import "$FTX/env/basic/behavioral_models/sumo/common/sumo_demo_profiles.osc"
extend test_config:
set map = "$FTX_PACKAGES/maps/straight_long_road.xodr"
extend top.main:
random_traffic: random_traffic_car_group with(origin_actor: sut.car)
dm: sumo_idm_normal_driver
for car in random_traffic.cars:
keep(car.initial_bm == dm)
do parallel(overlap:equal):
dut_drive: sut.car.drive(duration: 10second) with:
speed(20kph)
random_traffic.light_highway_traffic()
Example: aggressive driver model
OSC2 code: aggressive driver model
import "$FTX/config/sim/sumo_default.osc"
import "$FTX/env/basic/behavioral_models/sumo/builtin/sumo_builtin_bme.osc"
import "$FTX/env/basic/behavioral_models/sumo/common/sumo_demo_profiles.osc"
extend test_config:
set map = "$FTX_PACKAGES/maps/highway.xodr"
extend top.main:
lead_vehicle: vehicle
sut_cruise_speed: speed with:
keep(default it == 90kph)
hwy: highway
car_group: single_lane_car_group with(reference_car: lead_vehicle):
keep(it.cars.size() == 6)
dm: sumo_idm_aggressive_driver
for car in car_group.cars:
keep(car.initial_bm == dm)
do parallel(overlap:equal):
lead_vehicle.drive() with:
lane(side_of: sut.car)
position(time: [2s..4.5s], ahead_of: sut.car, at: start)
speed(speed: [-sut_cruise_speed+10kph..-sut_cruise_speed+20kph],
faster_than: sut.car, track: projected, at: end)
along(hwy)
sut.car.drive() with:
speed(speed: sut_cruise_speed)
along(hwy)
car_group_start: car_group.group_drive()
with:
duration([10..10]second)