Skip to content

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)