更新时间:2024-07-03 GMT+08:00
分享

FollowLeadVehicleEmergencyBrake

简述:主车Ego和正前方33.33m的头车lead_vehicle按照相同的初始速度匀速行驶,前车突然刹车,10000s后激活Ego的controller,40s后停止场景(激活时间与场景停止时间可修改)。

osc2.0场景

import standard

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

    # parameter
    Ego_InitPosition_LaneId: string = '-4'
    m_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 == m_odr)
    Ego_InitSpeed_Ve0: speed = 16.66666667mps
    LeadVehicle_InitDistance_dx0: length = 33.33333333m
    LeadVehicle_BrakeRate_Gx_max: acceleration = 6.0mpss
    m_rate_profile: dynamics_shape = linear
    Duration: time = 40s

    # entity
    Ego_Name: string = "Audi_A3_2009_black"
    LeadVehicle_Name: string = "Audi_A3_2009_red"
    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 == LeadVehicle_Name)

    # storyboard
    do parallel(duration: Duration):
        # init
        Ego.assign_init_position(position: Ego_InitPosition)
        Ego.assign_init_speed(Ego_InitSpeed_Ve0)
        lead_vehicle.assign_init_position() with:
            lane(same_as: Ego)
            position(LeadVehicle_InitDistance_dx0, ahead_of: Ego)
        lead_vehicle.assign_init_speed(Ego_InitSpeed_Ve0)

        # act1: ActivateALKSControllerAct
        serial:
            wait elapsed(10000s)
            Ego.activate_controller(true, true) # args: lateral, longitudinal
        # act2: BrakeAct
        # VaryingSpeedEvent
        serial:
            wait elapsed(10s)
            lead_vehicle.change_speed(target: 0.0mps, rate_profile: m_rate_profile, rate_peak: LeadVehicle_BrakeRate_Gx_max)

转化结果

<OpenSCENARIO > 
    <FileHeader author="Octopus/Simulation" date="2022-10-28T08:12:34" description="" revMajor="1" revMinor="0"/ > 
    <CatalogLocations > 
        <VehicleCatalog > 
            <Directory path="Distros/Current/Config/Players/Vehicles"/ > 
        </VehicleCatalog > 
        <ControllerCatalog > 
            <Directory path="Distros/Current/Config/Players/driverCfg.xml"/ > 
        </ControllerCatalog > 
        <PedestrianCatalog > 
            <Directory path="Distros/Current/Config/Players/Pedestrians"/ > 
        </PedestrianCatalog > 
        <MiscObjectCatalog > 
            <Directory path="Distros/Current/Config/Players/Objects"/ > 
        </MiscObjectCatalog > 
    </CatalogLocations > 
    <RoadNetwork > 
        <LogicFile filepath="./ALKS_Road.xodr"/ > 
        <SceneGraphFile filepath=""/ > 
    </RoadNetwork > 
    <Entities > 
        <ScenarioObject name="Ego" > 
            <Vehicle name="Audi_A3_2009_black" vehicleCategory="car" > 
                <BoundingBox > 
                    <Center x="1.5" y="0" z="0.9"/ > 
                    <Dimensions height="2.1" length="4.5" width="1.8"/ > 
                </BoundingBox > 
                <Performance maxAcceleration="8" maxDeceleration="8" maxSpeed="60"/ > 
                <Axles > 
                    <FrontAxle maxSteering="0.5" positionX="3.1" positionZ="0.3" trackWidth="1.8" wheelDiameter="0.6"/ > 
                    <RearAxle maxSteering="0" positionX="0" positionZ="0.3" trackWidth="1.8" wheelDiameter="0.6"/ > 
                </Axles > 
                <Properties > 
                    <Property name="control" value="external"/ > 
                </Properties > 
            </Vehicle > 
            <ObjectController > 
                <Controller name="DefaultDriver" > 
                    <Properties/ > 
                </Controller > 
            </ObjectController > 
        </ScenarioObject > 
        <ScenarioObject name="lead_vehicle" > 
            <Vehicle name="Audi_A3_2009_red" vehicleCategory="car" > 
                <BoundingBox > 
                    <Center x="1.5" y="0" z="0.9"/ > 
                    <Dimensions height="2.1" length="4.5" width="1.8"/ > 
                </BoundingBox > 
                <Performance maxAcceleration="8" maxDeceleration="8" maxSpeed="60"/ > 
                <Axles > 
                    <FrontAxle maxSteering="0.5" positionX="3.1" positionZ="0.3" trackWidth="1.8" wheelDiameter="0.6"/ > 
                    <RearAxle maxSteering="0" positionX="0" positionZ="0.3" trackWidth="1.8" wheelDiameter="0.6"/ > 
                </Axles > 
                <Properties/ > 
            </Vehicle > 
        </ScenarioObject > 
    </Entities > 
    <Storyboard > 
        <Init > 
            <Actions > 
                <Private entityRef="Ego" > 
                    <PrivateAction > 
                        <TeleportAction > 
                            <Position > 
                                <LanePosition laneId="-4" offset="0" roadId="0" s="5"/ > 
                            </Position > 
                        </TeleportAction > 
                    </PrivateAction > 
                    <PrivateAction > 
                        <LongitudinalAction > 
                            <SpeedAction > 
                                <SpeedActionDynamics dynamicsDimension="time" dynamicsShape="step" value="0"/ > 
                                <SpeedActionTarget > 
                                    <AbsoluteTargetSpeed value="16.66666667"/ > 
                                </SpeedActionTarget > 
                            </SpeedAction > 
                        </LongitudinalAction > 
                    </PrivateAction > 
                </Private > 
                <Private entityRef="lead_vehicle" > 
                    <PrivateAction > 
                        <TeleportAction > 
                            <Position > 
                                <RelativeLanePosition dLane="0" ds="33.33333333" entityRef="Ego"/ > 
                            </Position > 
                        </TeleportAction > 
                    </PrivateAction > 
                    <PrivateAction > 
                        <LongitudinalAction > 
                            <SpeedAction > 
                                <SpeedActionDynamics dynamicsDimension="time" dynamicsShape="step" value="0"/ > 
                                <SpeedActionTarget > 
                                    <AbsoluteTargetSpeed value="16.66666667"/ > 
                                </SpeedActionTarget > 
                            </SpeedAction > 
                        </LongitudinalAction > 
                    </PrivateAction > 
                </Private > 
            </Actions > 
        </Init > 
        <Story name="FollowLeadVehicleEmergencyBrakeStory" > 
            <Act name="Ego_activate_controller_7_act" > 
                <ManeuverGroup maximumExecutionCount="1" name="Ego_activate_controller_7_maneuvers" > 
                    <Actors selectTriggeringEntities="false" > 
                        <EntityRef entityRef="Ego"/ > 
                    </Actors > 
                    <Maneuver name="Ego_activate_controller_7_maneuver" > 
                        <Event maximumExecutionCount="1" name="Ego_activate_controller_7_event" priority="overwrite" > 
                            <Action name="Ego_activate_controller_7" > 
                                <PrivateAction > 
                                    <ActivateControllerAction lateral="true" longitudinal="true"/ > 
                                </PrivateAction > 
                            </Action > 
                            <StartTrigger > 
                                <ConditionGroup > 
                                    <Condition conditionEdge="rising" delay="0" name="Ego_activate_controller_7_condition_1" > 
                                        <ByValueCondition > 
                                            <SimulationTimeCondition rule="greaterThan" value="0"/ > 
                                        </ByValueCondition > 
                                    </Condition > 
                                </ConditionGroup > 
                            </StartTrigger > 
                        </Event > 
                    </Maneuver > 
                </ManeuverGroup > 
                <StartTrigger > 
                    <ConditionGroup > 
                        <Condition conditionEdge="rising" delay="0" name="Ego_activate_controller_7_condition" > 
                            <ByValueCondition > 
                                <SimulationTimeCondition rule="greaterThan" value="10000"/ > 
                            </ByValueCondition > 
                        </Condition > 
                    </ConditionGroup > 
                </StartTrigger > 
            </Act > 
            <Act name="lead_vehicle_change_speed_1_act" > 
                <ManeuverGroup maximumExecutionCount="1" name="lead_vehicle_change_speed_1_maneuvers" > 
                    <Actors selectTriggeringEntities="false" > 
                        <EntityRef entityRef="lead_vehicle"/ > 
                    </Actors > 
                    <Maneuver name="lead_vehicle_change_speed_1_maneuver" > 
                        <Event maximumExecutionCount="1" name="lead_vehicle_change_speed_1_event" priority="overwrite" > 
                            <Action name="lead_vehicle_change_speed_1" > 
                                <PrivateAction > 
                                    <LongitudinalAction > 
                                        <SpeedAction > 
                                            <SpeedActionDynamics dynamicsDimension="rate" dynamicsShape="linear" value="6"/ > 
                                            <SpeedActionTarget > 
                                                <AbsoluteTargetSpeed value="0"/ > 
                                            </SpeedActionTarget > 
                                        </SpeedAction > 
                                    </LongitudinalAction > 
                                </PrivateAction > 
                            </Action > 
                            <StartTrigger > 
                                <ConditionGroup > 
                                    <Condition conditionEdge="rising" delay="0" name="lead_vehicle_change_speed_1_condition_1" > 
                                        <ByValueCondition > 
                                            <SimulationTimeCondition rule="greaterThan" value="0"/ > 
                                        </ByValueCondition > 
                                    </Condition > 
                                </ConditionGroup > 
                            </StartTrigger > 
                        </Event > 
                    </Maneuver > 
                </ManeuverGroup > 
                <StartTrigger > 
                    <ConditionGroup > 
                        <Condition conditionEdge="rising" delay="0" name="lead_vehicle_change_speed_1_condition" > 
                            <ByValueCondition > 
                                <SimulationTimeCondition rule="greaterThan" value="10"/ > 
                            </ByValueCondition > 
                        </Condition > 
                    </ConditionGroup > 
                </StartTrigger > 
            </Act > 
        </Story > 
        <StopTrigger > 
            <ConditionGroup > 
                <Condition conditionEdge="rising" delay="0" name="story_end" > 
                    <ByValueCondition > 
                        <SimulationTimeCondition rule="greaterThan" value="40"/ > 
                    </ByValueCondition > 
                </Condition > 
            </ConditionGroup > 
        </StopTrigger > 
    </Storyboard > </OpenSCENARIO>
分享:

    相关文档

    相关产品