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

straight

简述:地图场景为直道.lead_vehicle和主车Ego在主道上一前一后行驶,初始速度均为0,Ego设定了目标在主道右2车道上的目标点Target_position,仿真开始后Ego开始加速(直到车速到达Ego_InitSpeed_Ve0),同时激活控制器(控制器会影响Ego去往Target_position的寻路算法).从车lead_vehicle在Ego车速大于1kph时开始加速,直到车速到达40kph.

地图文件(odr)

scenario Straight:
    m_scene: scenery

    lane_width: length = [3m..4m]
    right_lane_num: int = [2, 3]
    bikeway: bool = [true, false]
    sidewalk: bool = [true, false]
    main_speed: speed = 60kph
    road_length: length = [550m, 600m]

    straight_1: straight with:
        keep(it.lane_width == lane_width)
        keep(it.left_lane_num == 0)
        keep(it.right_lane_num == right_lane_num)
        keep(it.bikeway == bikeway)
        keep(it.sidewalk == sidewalk)
        keep(it.main_speed == main_speed)
        keep(it.road_length == road_length)

场景文件(osc)

import standard

scenario Straight:
    # map
    map: map
    map.set_map_file("./straight.odr")

    # parameter
    Ego_InitSpeed_Ve0: speed = [55kph..60kph]
    Ego_InitPosition_LaneId: string = ['-1', '-2']
    Ego_InitPosition_s: length = [0m..30m]
    Ego_Odr: odr_point = map.create_odr_point(road_id: '1', lane_id: Ego_InitPosition_LaneId, s: Ego_InitPosition_s, t: 0.0m)
    Ego_InitPosition: pose_3d with:
        keep(it.odr_point == Ego_Odr)
    m_distance: length = [50m..80m]
    LeadVehicle_Odr: odr_point = map.create_odr_point(road_id: '1', lane_id: '-1', s: m_distance, t: 0.0m)
    LeadVehicle_InitPosition: pose_3d with:
        keep(it.odr_point == LeadVehicle_Odr)
    Target_xyz: xyz_point = map.create_xyz_point(x: 450m, y: -4.5m ,z: 0.0m)
    Target_position: pose_3d with:
        keep(it.xyz_point == Target_xyz)
    m_profile: dynamics_shape = linear
    Duration: time = 100s

    # entity
    Ego_Name: string = "Audi_A3_2009_black"
    Ego_Controller: string = "DefaultDriver"
    Ego: vehicle with:
        keep(it.name == Ego_Name)
        keep(it.initial_bm == Ego_Controller)
    lead_vehicle: vehicle with:
        keep(it.name == "Audi_A3_2009_red")

    # storyboard
    do parallel(duration: Duration):
        # init
        Ego.assign_init_position(position: Ego_InitPosition)
        lead_vehicle.assign_init_position(position: LeadVehicle_InitPosition)

        Ego.activate_controller(true, true)
        Ego.acquire_position(target: Target_position)

        Ego.change_speed(target: Ego_InitSpeed_Ve0, rate_profile: m_profile, rate_peak: 3mpss)
        serial:
            wait Ego.speed > 1kph
            lead_vehicle.change_speed(target: 40kph, rate_profile: m_profile, rate_peak: 2mpss)
分享:

    相关文档

    相关产品