更新时间:2024-05-13 GMT+08:00
分享

逻辑场景(以CutOutMultipleBlockingTargets为例)

逻辑场景的ALKS样例,本文只介绍CutOutMultipleBlockingTargets,更多参数介绍,请查看官方文档。

osc2.0场景

import standard

scenario CutOutMultipleBlockingTargets:
    # map
    map: map
    map.set_map_file("./ALKS_Road.xodr")

    # parameter
    Ego_InitPosition_LaneId: string = ['-4', '-1']
    Ego_InitSpeed_Ve0: speed = [20mps, 40mps, 60mps, 80mps]
    LeadVehicle_InitDistance_dx0: length = [40m..80m]
    Ego_Odr: odr_point = map.create_odr_point(road_id: '0', lane_id: Ego_InitPosition_LaneId, s: 5.0m, t: 0.0m)
    Ego_InitPosition: pose_3d with:
        keep(it.odr_point == Ego_Odr)
    Blocking1_Odr: odr_point = map.create_odr_point(road_id: '0', lane_id: Ego_InitPosition_LaneId, s: 500.0m, t: 0.0m)
    Blocking1_InitPosition: pose_3d with:
        keep(it.odr_point == Blocking1_Odr)
    Blocking2_Odr: odr_point = map.create_odr_point(road_id: '0', lane_id: Ego_InitPosition_LaneId, s: 515.0m, t: 0.0m)
    Blocking2_InitPosition: pose_3d with:
        keep(it.odr_point == Blocking2_Odr)
    LeadVehicle_Odr: odr_point = map.create_odr_point(road_id: '0', lane_id: Ego_InitPosition_LaneId, s: LeadVehicle_InitDistance_dx0, t: 0.0m)
    LeadVehicle_InitPosition: pose_3d with:
        keep(it.odr_point == LeadVehicle_Odr)
    FrontOfLead_Distance_dx0_f: length = 50.0m
    Lateral_Velocity_Vy: speed = [0.1mps..1.0mps]
    m_direction : distance_direction = longitudinal
    m_mode : distance_mode = bounding_boxes
    m_rate_profile: dynamics_shape = [step, linear]
    m_dimension: dynamics_dimension = rate
    m_side: lane_change_side = [left, right]
    Duration: time = [30s, 40s, 50s]

    # entity
    Ego_Name: string = ["Audi_A3_2009_black", "Audi_A3_2009_red"]
    LeadVehicle_Name: string = "Audi_A3_2009_red"
    TargetBlocking2_Name: string = "Audi_A3_2009_blue"
    Ego_Controller: string = "DefaultDriver"
    Ego: vehicle with:
        keep(it.name == Ego_Name)
        keep(it.initial_bm == Ego_Controller)
    target_blocking1: person with:
        keep(it.name == "Christian")
        keep(it.model == "male_adult")
    target_blocking2: vehicle with:
        keep(it.name == TargetBlocking2_Name)
    lead_vehicle: vehicle with:
        keep(it.name == LeadVehicle_Name)

    # storyboard
    do parallel(duration: Duration):
        # init
        Ego.assign_init_position(position: Ego_InitPosition)
        Ego.assign_init_speed(Ego_InitSpeed_Ve0)
        target_blocking1.assign_init_position(position: Blocking1_InitPosition)
        target_blocking2.assign_init_position(position: Blocking2_InitPosition)
        lead_vehicle.assign_init_position(position: LeadVehicle_InitPosition)
        lead_vehicle.assign_init_speed(Ego_InitSpeed_Ve0)

        serial:
            # act1: ActivateALKSControllerAct
            wait elapsed(10000s)
            Ego.activate_controller(true, true)  # lateral, longitudinal
        serial:
            # act2: CutOutAct
            wait lead_vehicle.object_distance(reference: target_blocking1, direction: m_direction, mode: m_mode) < FrontOfLead_Distance_dx0_f
            lead_vehicle.change_lane(number_of_lanes: 1, side: m_side, reference: lead_vehicle, rate_peak: Lateral_Velocity_Vy, rate_profile: m_rate_profile, dimension: m_dimension)
分享:

    相关文档

    相关产品