ALKS样例
根据官方提供的ALKS样例,提供了一些osc2.0的场景(osc文件)及其转化结果(xosc文件)。考虑到仿真器的支持程度,建议在转换时选择osc1.0版本。
FreeDriving
简述:主车Ego按照初始速度匀速行驶,10000s后激活controller,300s后停止场景(激活时间与场景停止时间可修改)。
osc2.0场景
import standard scenario FreeDriving: # map map: map map.set_map_file("./ALKS_Road_Different_Curvatures.xodr") # parameter m_odr: odr_point = map.create_odr_point(road_id: '0', lane_id: '-4', s: 5.0m, t: 0.0m) Ego_InitPosition: pose_3d with: keep(it.odr_point == m_odr) Ego_InitSpeed_Ve0: speed = 16.66666667mps Duration: time = 300s # 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) # storyboard do parallel(duration: Duration): # init Ego.assign_init_position(position: Ego_InitPosition) Ego.assign_init_speed(Ego_InitSpeed_Ve0) # act1: ActivateALKSControllerAct serial: wait elapsed(10000s) Ego.activate_controller(true, true) # args: lateral, longitudinal
转化结果
<OpenSCENARIO > <FileHeader author="Octopus/Simulation" date="2022-10-28T07:45:48" 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_Different_Curvatures.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 > </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 > </Actions > </Init > <Story name="FreeDrivingStory" > <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 > </Story > <StopTrigger > <ConditionGroup > <Condition conditionEdge="rising" delay="0" name="story_end" > <ByValueCondition > <SimulationTimeCondition rule="greaterThan" value="300"/ > </ByValueCondition > </Condition > </ConditionGroup > </StopTrigger > </Storyboard > </OpenSCENARIO>
FullyBlockingTarget
简述:主车Ego按照初始速度匀速行驶,正前方495m处有一位行人,10000s后激活Ego的controller,40s后停止场景(激活时间与场景停止时间可修改)。
osc2.0场景
import standard scenario FullyBlockingTarget: # map map: map map.set_map_file("./ALKS_Road.xodr") # parameter Ego_InitPosition_LaneId: string = '-4' 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) TargetBlocking_Odr: odr_point = map.create_odr_point(road_id: '0', lane_id: Ego_InitPosition_LaneId, s: 500.0m, t: 0.0m) TargetBlocking_InitPosition: pose_3d with: keep(it.odr_point == TargetBlocking_Odr) Ego_InitSpeed_Ve0: speed = 16.66666667mps Duration: time = 40s # 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) TargetBlocking: person with: keep(it.name == "Christian") keep(it.model == "male_adult") # storyboard do parallel(duration: Duration): # init Ego.assign_init_position(position: Ego_InitPosition) Ego.assign_init_speed(Ego_InitSpeed_Ve0) TargetBlocking.assign_init_position(position: TargetBlocking_InitPosition) # act1: ActivateALKSControllerAct serial: wait elapsed(10000s) Ego.activate_controller(true, true) # args: lateral, longitudinal
转化结果
<OpenSCENARIO > <FileHeader author="Octopus/Simulation" date="2022-10-28T07:58:37" 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="TargetBlocking" > <Pedestrian mass="80" model="male_adult" name="Christian" pedestrianCategory="pedestrian" > <BoundingBox > <Center x="1.5" y="0" z="0.9"/ > <Dimensions height="2.1" length="4.5" width="1.8"/ > </BoundingBox > <Properties/ > </Pedestrian > </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="TargetBlocking" > <PrivateAction > <TeleportAction > <Position > <LanePosition laneId="-4" offset="0" roadId="0" s="500"/ > </Position > </TeleportAction > </PrivateAction > </Private > </Actions > </Init > <Story name="FullyBlockingTargetStory" > <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 > </Story > <StopTrigger > <ConditionGroup > <Condition conditionEdge="rising" delay="0" name="story_end" > <ByValueCondition > <SimulationTimeCondition rule="greaterThan" value="40"/ > </ByValueCondition > </Condition > </ConditionGroup > </StopTrigger > </Storyboard > </OpenSCENARIO>
PartiallyBlockingTarget
简述:主车Ego按照初始速度匀速行驶,斜前方495米处有一位行人,10000s后激活Ego的controller,40s后停止场景(激活时间与场景停止时间可修改)。
osc2.0场景
import standard scenario PartiallyBlockingTarget: # map map: map map.set_map_file("./ALKS_Road.xodr") # parameter Ego_InitPosition_LaneId: string = '-4' 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) TargetBlocking_InitPosition_Offset: length = -1.5m TargetBlocking_Odr: odr_point = map.create_odr_point(road_id: '0', lane_id: Ego_InitPosition_LaneId, s: 500.0m, t: TargetBlocking_InitPosition_Offset) TargetBlocking_InitPosition: pose_3d with: keep(it.odr_point == TargetBlocking_Odr) Ego_InitSpeed_Ve0: speed = 16.66666667mps Duration: time = 40s # 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) TargetBlocking: person with: keep(it.name == "Christian") keep(it.model == "male_adult") # storyboard do parallel(duration: Duration): # init Ego.assign_init_position(position: Ego_InitPosition) Ego.assign_init_speed(Ego_InitSpeed_Ve0) TargetBlocking.assign_init_position(position: TargetBlocking_InitPosition) # act1: ActivateALKSControllerAct serial: wait elapsed(10000s) Ego.activate_controller(true, true) # args: lateral, longitudinal
转化结果
<OpenSCENARIO > <FileHeader author="Octopus/Simulation" date="2022-10-28T08:09:41" 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="TargetBlocking" > <Pedestrian mass="80" model="male_adult" name="Christian" pedestrianCategory="pedestrian" > <BoundingBox > <Center x="1.5" y="0" z="0.9"/ > <Dimensions height="2.1" length="4.5" width="1.8"/ > </BoundingBox > <Properties/ > </Pedestrian > </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.67"/ > </SpeedActionTarget > </SpeedAction > </LongitudinalAction > </PrivateAction > </Private > <Private entityRef="TargetBlocking" > <PrivateAction > <TeleportAction > <Position > <LanePosition laneId="-4" offset="-1.5" roadId="0" s="500"/ > </Position > </TeleportAction > </PrivateAction > </Private > </Actions > </Init > <Story name="PartiallyBlockingTargetStory" > <Act name="Ego_activate_controller_act" > <ManeuverGroup maximumExecutionCount="1" name="Ego_activate_controller_maneuvers" > <Actors selectTriggeringEntities="false" > <EntityRef entityRef="Ego"/ > </Actors > <Maneuver name="Ego_activate_controller_maneuver" > <Event maximumExecutionCount="1" name="Ego_activate_controller_event" priority="overwrite" > <Action name="Ego_activate_controller" > <PrivateAction > <ActivateControllerAction lateral="true" longitudinal="true"/ > </PrivateAction > </Action > <StartTrigger > <ConditionGroup > <Condition conditionEdge="rising" delay="0" name="Ego_activate_controller_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_condition" > <ByValueCondition > <SimulationTimeCondition rule="greaterThan" value="10000"/ > </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>
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>
CutInNoCollision
简述:主车Ego按照初始速度16.667mps匀速行驶,前方85m右1车道的切入车辆cut_in_vehicle以慢于Ego5.55mps的速度行驶,当两车距离小于30m时,cut_in_vehicle开始以15mps为目标加速(加速动态受到加速度值CutInVehicle_SpeedChange_RatePeak的影响,此处ALKS设置的默认加速度为0.0mps,可以根据需要更改),同时变道切入Ego所在车道,10000s后激活Ego的controller,40s后停止场景(激活时间与场景停止时间可修改)。
osc2.0场景
import standard scenario CutInNoCollision: # map map: map map.set_map_file('./ALKS_Road.xodr') # parameter m_odr: odr_point = map.create_odr_point(road_id: '0', lane_id: '-4', s: 5.0m, t: 0.0m) Ego_InitPosition: pose_3d with: keep(it.odr_point == m_odr) Ego_InitSpeed_Ve0: speed = 16.66666667mps CutInVehicle_InitPosition_RelativeLaneId: int = 1 # -1 for right, 1 for left CutInVehicle_HeadwayDistanceTrigger_dx0: length = 30.0m CutInVehicle_LaneChange_MaxLateralVelocity_Vy: speed = 2.0mps CutInVehicle_SpeedChange_RatePeak: acceleration = 0.0mpss CutInVehicle_Acceleration_Target: speed = 15.0mps m_right: side_left_right = right m_direction: distance_direction = longitudinal m_mode: distance_mode = bounding_boxes m_side: lane_change_side = same m_rate_profile_lane: dynamics_shape = linear m_rate_profile_speed: dynamics_shape = linear Duration: time = 40s # entity Ego_Name: string = "Audi_A3_2009_black" CutInVehicle_Name: string = "Audi_A3_2009_red" Ego_Controller: string = "DefaultDriver" Ego: vehicle with: keep(it.name == Ego_Name) keep(it.initial_bm == Ego_Controller) cut_in_vehicle: vehicle with: keep(it.name == CutInVehicle_Name) # storyboard do parallel(duration: Duration): # init Ego.assign_init_position(position: Ego_InitPosition) Ego.assign_init_speed(target: Ego_InitSpeed_Ve0) cut_in_vehicle.assign_init_position() with: lane(lane: CutInVehicle_InitPosition_RelativeLaneId, side_of: Ego, side: m_right) position(distance: 85.0m, ahead_of: Ego) cut_in_vehicle.assign_init_speed(11.1111mps) # story serial: # act1: ActivateALKSControllerAct wait elapsed(10000s) Ego.activate_controller(lateral: true, longitudinal: true) serial: # act2: CutInAct wait cut_in_vehicle.object_distance(reference: Ego, direction: m_direction, mode: m_mode) < CutInVehicle_HeadwayDistanceTrigger_dx0 parallel: cut_in_vehicle.change_lane(side: m_side, reference: Ego, rate_peak: CutInVehicle_LaneChange_MaxLateralVelocity_Vy, rate_profile: m_rate_profile_lane) cut_in_vehicle.change_speed(target: CutInVehicle_Acceleration_Target, rate_peak: CutInVehicle_SpeedChange_RatePeak, rate_profile: m_rate_profile_speed)
转化结果
<OpenSCENARIO > <FileHeader author="Octopus/Simulation" date="2022-10-28T08:55:16" 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="cut_in_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.67"/ > </SpeedActionTarget > </SpeedAction > </LongitudinalAction > </PrivateAction > </Private > <Private entityRef="cut_in_vehicle" > <PrivateAction > <TeleportAction > <Position > <RelativeLanePosition dLane="-1" ds="85" entityRef="Ego"/ > </Position > </TeleportAction > </PrivateAction > <PrivateAction > <LongitudinalAction > <SpeedAction > <SpeedActionDynamics dynamicsDimension="time" dynamicsShape="step" value="0"/ > <SpeedActionTarget > <AbsoluteTargetSpeed value="11.11"/ > </SpeedActionTarget > </SpeedAction > </LongitudinalAction > </PrivateAction > </Private > </Actions > </Init > <Story name="CutInNoCollisionStory" > <Act name="Ego_activate_controller_act" > <ManeuverGroup maximumExecutionCount="1" name="Ego_activate_controller_maneuvers" > <Actors selectTriggeringEntities="false" > <EntityRef entityRef="Ego"/ > </Actors > <Maneuver name="Ego_activate_controller_maneuver" > <Event maximumExecutionCount="1" name="Ego_activate_controller_event" priority="overwrite" > <Action name="Ego_activate_controller" > <PrivateAction > <ActivateControllerAction lateral="true" longitudinal="true"/ > </PrivateAction > </Action > <StartTrigger > <ConditionGroup > <Condition conditionEdge="rising" delay="0" name="Ego_activate_controller_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_condition" > <ByValueCondition > <SimulationTimeCondition rule="greaterThan" value="10000"/ > </ByValueCondition > </Condition > </ConditionGroup > </StartTrigger > </Act > <Act name="cut_in_vehicle_change_lane_act" > <ManeuverGroup maximumExecutionCount="1" name="cut_in_vehicle_change_lane_maneuvers" > <Actors selectTriggeringEntities="false" > <EntityRef entityRef="cut_in_vehicle"/ > </Actors > <Maneuver name="cut_in_vehicle_change_lane_maneuver" > <Event maximumExecutionCount="1" name="cut_in_vehicle_change_lane_event" priority="overwrite" > <Action name="cut_in_vehicle_change_lane" > <PrivateAction > <LateralAction > <LaneChangeAction > <LaneChangeActionDynamics dynamicsDimension="rate" dynamicsShape="linear" value="2"/ > <LaneChangeTarget > <RelativeTargetLane entityRef="Ego" value="0"/ > </LaneChangeTarget > </LaneChangeAction > </LateralAction > </PrivateAction > </Action > <StartTrigger > <ConditionGroup > <Condition conditionEdge="rising" delay="0" name="cut_in_vehicle_change_lane_condition" > <ByEntityCondition > <TriggeringEntities triggeringEntitiesRule="any" > <EntityRef entityRef="cut_in_vehicle"/ > </TriggeringEntities > <EntityCondition > <DistanceCondition alongRoute="true" freespace="true" rule="lessThan" value="30" > <Position > <RelativeObjectPosition dx="0" dy="0" dz="0" entityRef="Ego" > <Orientation h="0" p="0" r="0" type="absolute"/ > </RelativeObjectPosition > </Position > </DistanceCondition > </EntityCondition > </ByEntityCondition > </Condition > </ConditionGroup > </StartTrigger > </Event > </Maneuver > </ManeuverGroup > <StartTrigger > <ConditionGroup > <Condition conditionEdge="rising" delay="0" name="cut_in_vehicle_change_lane_condition_1" > <ByValueCondition > <SimulationTimeCondition rule="greaterThan" value="0"/ > </ByValueCondition > </Condition > </ConditionGroup > </StartTrigger > </Act > <Act name="cut_in_vehicle_change_speed_act" > <ManeuverGroup maximumExecutionCount="1" name="cut_in_vehicle_change_speed_maneuvers" > <Actors selectTriggeringEntities="false" > <EntityRef entityRef="cut_in_vehicle"/ > </Actors > <Maneuver name="cut_in_vehicle_change_speed_maneuver" > <Event maximumExecutionCount="1" name="cut_in_vehicle_change_speed_event" priority="overwrite" > <Action name="cut_in_vehicle_change_speed" > <PrivateAction > <LongitudinalAction > <SpeedAction > <SpeedActionDynamics dynamicsDimension="rate" dynamicsShape="linear" value="0"/ > <SpeedActionTarget > <AbsoluteTargetSpeed value="15"/ > </SpeedActionTarget > </SpeedAction > </LongitudinalAction > </PrivateAction > </Action > <StartTrigger > <ConditionGroup > <Condition conditionEdge="rising" delay="0" name="cut_in_vehicle_change_speed_condition" > <ByEntityCondition > <TriggeringEntities triggeringEntitiesRule="any" > <EntityRef entityRef="cut_in_vehicle"/ > </TriggeringEntities > <EntityCondition > <DistanceCondition alongRoute="true" freespace="true" rule="lessThan" value="30" > <Position > <RelativeObjectPosition dx="0" dy="0" dz="0" entityRef="Ego" > <Orientation h="0" p="0" r="0" type="absolute"/ > </RelativeObjectPosition > </Position > </DistanceCondition > </EntityCondition > </ByEntityCondition > </Condition > </ConditionGroup > </StartTrigger > </Event > </Maneuver > </ManeuverGroup > <StartTrigger > <ConditionGroup > <Condition conditionEdge="rising" delay="0" name="cut_in_vehicle_change_speed_condition_1" > <ByValueCondition > <SimulationTimeCondition rule="greaterThan" value="0"/ > </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>
CutInUnavoidableCollision
简述:主车Ego按照初始速度16.667mps匀速行驶,前方55m右1车道的切入车辆cut_in_vehicle以慢于Ego5.55mps的速度行驶,当两车距离小于10m时,cut_in_vehicle开始以15mps为目标加速,同时变道切入Ego所在车道,10000s后激活Ego的controller,40s后停止场景(激活时间与场景停止时间可修改)。
osc2.0场景
import standard scenario CutInUnavoidableCollision: # map map: map map.set_map_file("./ALKS_Road.xodr") # parameter m_odr: odr_point = map.create_odr_point(road_id: '0', lane_id: '-4', s: 5.0m, t: 0.0m) Ego_InitPosition: pose_3d with: keep(it.odr_point == m_odr) Ego_InitSpeed_Ve0: speed = 16.66666667mps CutInVehicle_InitPosition_RelativeLaneId: int = 1 # -1 for right, 1 for left CutInVehicle_HeadwayDistanceTrigger_dx0: length = 10.0m CutInVehicle_LaneChange_MaxLateralVelocity_Vy: speed = 3.0mps CutInVehicle_SpeedChange_RatePeak: acceleration = 0.0mpss CutInVehicle_Acceleration_Target: speed = 15.0mps CutInVehicle_SpeedChange_RateProfile: dynamics_shape = linear m_right: side_left_right = right m_direction: distance_direction = longitudinal m_mode: distance_mode = bounding_boxes m_side: lane_change_side = same m_rate_profile_lane: dynamics_shape = linear m_rate_profile_speed: dynamics_shape = linear Duration: time = 40s # entity Ego_Name: string = "Audi_A3_2009_black" CutInVehicle_Name: string = "Audi_A3_2009_red" Ego_Controller: string = "DefaultDriver" Ego: vehicle with: keep(it.name == Ego_Name) keep(it.initial_bm == Ego_Controller) cut_in_vehicle: vehicle with: keep(it.name == CutInVehicle_Name) # storyboard do parallel(duration: Duration): # init Ego.assign_init_position(position: Ego_InitPosition) Ego.assign_init_speed(Ego_InitSpeed_Ve0) cut_in_vehicle.assign_init_position() with: lane(lane: CutInVehicle_InitPosition_RelativeLaneId, side_of: Ego, side: m_right) position(distance: 55.0m, ahead_of: Ego) cut_in_vehicle.assign_init_speed(11.1111mps) # story serial: # act1: ActivateALKSControllerAct wait elapsed(10000s) Ego.activate_controller(true, true) # lateral, longitudinal # act 1: ActivateALKSControllerStory serial: # act2: CutInAct wait cut_in_vehicle.object_distance(reference: Ego, direction: m_direction, mode: m_mode) < CutInVehicle_HeadwayDistanceTrigger_dx0 parallel: cut_in_vehicle.change_lane(side: m_side, reference: Ego, rate_peak: CutInVehicle_LaneChange_MaxLateralVelocity_Vy, rate_profile: m_rate_profile_lane) cut_in_vehicle.change_speed(target: CutInVehicle_Acceleration_Target, rate_peak: CutInVehicle_SpeedChange_RatePeak, rate_profile: m_rate_profile_speed)
转化结果
<OpenSCENARIO > <FileHeader author="Octopus/Simulation" date="2022-10-28T09:18:33" 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="cut_in_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="cut_in_vehicle" > <PrivateAction > <TeleportAction > <Position > <RelativeLanePosition dLane="-1" ds="55" entityRef="Ego"/ > </Position > </TeleportAction > </PrivateAction > <PrivateAction > <LongitudinalAction > <SpeedAction > <SpeedActionDynamics dynamicsDimension="time" dynamicsShape="step" value="0"/ > <SpeedActionTarget > <AbsoluteTargetSpeed value="11.1111"/ > </SpeedActionTarget > </SpeedAction > </LongitudinalAction > </PrivateAction > </Private > </Actions > </Init > <Story name="CutInUnavoidableCollisionStory" > <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="cut_in_vehicle_change_lane_act" > <ManeuverGroup maximumExecutionCount="1" name="cut_in_vehicle_change_lane_maneuvers" > <Actors selectTriggeringEntities="false" > <EntityRef entityRef="cut_in_vehicle"/ > </Actors > <Maneuver name="cut_in_vehicle_change_lane_maneuver" > <Event maximumExecutionCount="1" name="cut_in_vehicle_change_lane_event" priority="overwrite" > <Action name="cut_in_vehicle_change_lane" > <PrivateAction > <LateralAction > <LaneChangeAction > <LaneChangeActionDynamics dynamicsDimension="rate" dynamicsShape="linear" value="3"/ > <LaneChangeTarget > <RelativeTargetLane entityRef="Ego" value="0"/ > </LaneChangeTarget > </LaneChangeAction > </LateralAction > </PrivateAction > </Action > <StartTrigger > <ConditionGroup > <Condition conditionEdge="rising" delay="0" name="cut_in_vehicle_change_lane_condition" > <ByEntityCondition > <TriggeringEntities triggeringEntitiesRule="any" > <EntityRef entityRef="cut_in_vehicle"/ > </TriggeringEntities > <EntityCondition > <DistanceCondition alongRoute="true" freespace="true" rule="lessThan" value="10" > <Position > <RelativeObjectPosition dx="0" dy="0" dz="0" entityRef="Ego" > <Orientation h="0" p="0" r="0" type="absolute"/ > </RelativeObjectPosition > </Position > </DistanceCondition > </EntityCondition > </ByEntityCondition > </Condition > </ConditionGroup > </StartTrigger > </Event > </Maneuver > </ManeuverGroup > <StartTrigger > <ConditionGroup > <Condition conditionEdge="rising" delay="0" name="cut_in_vehicle_change_lane_condition_1" > <ByValueCondition > <SimulationTimeCondition rule="greaterThan" value="0"/ > </ByValueCondition > </Condition > </ConditionGroup > </StartTrigger > </Act > <Act name="cut_in_vehicle_change_speed_act" > <ManeuverGroup maximumExecutionCount="1" name="cut_in_vehicle_change_speed_maneuvers" > <Actors selectTriggeringEntities="false" > <EntityRef entityRef="cut_in_vehicle"/ > </Actors > <Maneuver name="cut_in_vehicle_change_speed_maneuver" > <Event maximumExecutionCount="1" name="cut_in_vehicle_change_speed_event" priority="overwrite" > <Action name="cut_in_vehicle_change_speed" > <PrivateAction > <LongitudinalAction > <SpeedAction > <SpeedActionDynamics dynamicsDimension="rate" dynamicsShape="linear" value="0"/ > <SpeedActionTarget > <AbsoluteTargetSpeed value="15"/ > </SpeedActionTarget > </SpeedAction > </LongitudinalAction > </PrivateAction > </Action > <StartTrigger > <ConditionGroup > <Condition conditionEdge="rising" delay="0" name="cut_in_vehicle_change_speed_condition" > <ByEntityCondition > <TriggeringEntities triggeringEntitiesRule="any" > <EntityRef entityRef="cut_in_vehicle"/ > </TriggeringEntities > <EntityCondition > <DistanceCondition alongRoute="true" freespace="true" rule="lessThan" value="10" > <Position > <RelativeObjectPosition dx="0" dy="0" dz="0" entityRef="Ego" > <Orientation h="0" p="0" r="0" type="absolute"/ > </RelativeObjectPosition > </Position > </DistanceCondition > </EntityCondition > </ByEntityCondition > </Condition > </ConditionGroup > </StartTrigger > </Event > </Maneuver > </ManeuverGroup > <StartTrigger > <ConditionGroup > <Condition conditionEdge="rising" delay="0" name="cut_in_vehicle_change_speed_condition_1" > <ByValueCondition > <SimulationTimeCondition rule="greaterThan" value="0"/ > </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>
CutOutFullyBlocking
简述:主车Ego与同车道前方33.33m的头车lead_vehicle都按照初始速度16.667mps匀速行驶,正前方约500m处有一个行人target_blocking,lead_vehicle在与行人距离小于50m时往左变道躲避行人,10000s后激活Ego的controller,40s后停止场景(激活时间与场景停止时间可修改)。
osc2.0场景
import standard scenario CutOutFullyBlocking: # map map: map map.set_map_file("./ALKS_Road.xodr") # parameter Ego_InitPosition_LaneId: string = '-4' Ego_InitSpeed_Ve0: speed = 16.66666667mps LeadVehicle_InitDistance_dx0: length = 38.33333333m 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) Blocking_Odr: odr_point = map.create_odr_point(road_id: '0', lane_id: Ego_InitPosition_LaneId, s: 500.0m, t: 0.0m) Blocking_InitPosition: pose_3d with: keep(it.odr_point == Blocking_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 = 2.0mps m_direction : distance_direction = longitudinal m_mode : distance_mode = bounding_boxes m_rate_profile: dynamics_shape = linear m_side: lane_change_side = left 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) target_blocking: person with: keep(it.name == "Christian") keep(it.model == "male_adult") 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_blocking.assign_init_position(position: Blocking_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_blocking, 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)
转化结果
<OpenSCENARIO> <FileHeader author="Octopus/Simulation" date="2022-10-29T01:31:30" 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> <ScenarioObject name="target_blocking"> <Pedestrian mass="80" model="male_adult" name="Christian" pedestrianCategory="pedestrian"> <BoundingBox> <Center x="1.5" y="0" z="0.9"/> <Dimensions height="2.1" length="4.5" width="1.8"/> </BoundingBox> <Properties/> </Pedestrian> </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> <LanePosition laneId="-4" offset="0" roadId="0" s="38.33333333"/> </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="target_blocking"> <PrivateAction> <TeleportAction> <Position> <LanePosition laneId="-4" offset="0" roadId="0" s="500"/> </Position> </TeleportAction> </PrivateAction> </Private> </Actions> </Init> <Story name="CutOutFullyBlockingStory"> <Act name="Ego_activate_controller_4_act"> <ManeuverGroup maximumExecutionCount="1" name="Ego_activate_controller_4_maneuvers"> <Actors selectTriggeringEntities="false"> <EntityRef entityRef="Ego"/> </Actors> <Maneuver name="Ego_activate_controller_4_maneuver"> <Event maximumExecutionCount="1" name="Ego_activate_controller_4_event" priority="overwrite"> <Action name="Ego_activate_controller_4"> <PrivateAction> <ActivateControllerAction lateral="true" longitudinal="true"/> </PrivateAction> </Action> <StartTrigger> <ConditionGroup> <Condition conditionEdge="rising" delay="0" name="Ego_activate_controller_4_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_4_condition"> <ByValueCondition> <SimulationTimeCondition rule="greaterThan" value="10000"/> </ByValueCondition> </Condition> </ConditionGroup> </StartTrigger> </Act> <Act name="lead_vehicle_change_lane_act"> <ManeuverGroup maximumExecutionCount="1" name="lead_vehicle_change_lane_maneuvers"> <Actors selectTriggeringEntities="false"> <EntityRef entityRef="lead_vehicle"/> </Actors> <Maneuver name="lead_vehicle_change_lane_maneuver"> <Event maximumExecutionCount="1" name="lead_vehicle_change_lane_event" priority="overwrite"> <Action name="lead_vehicle_change_lane"> <PrivateAction> <LateralAction> <LaneChangeAction> <LaneChangeActionDynamics dynamicsDimension="rate" dynamicsShape="linear" value="2"/> <LaneChangeTarget> <RelativeTargetLane entityRef="lead_vehicle" value="1"/> </LaneChangeTarget> </LaneChangeAction> </LateralAction> </PrivateAction> </Action> <StartTrigger> <ConditionGroup> <Condition conditionEdge="rising" delay="0" name="lead_vehicle_change_lane_condition"> <ByEntityCondition> <TriggeringEntities triggeringEntitiesRule="any"> <EntityRef entityRef="lead_vehicle"/> </TriggeringEntities> <EntityCondition> <DistanceCondition alongRoute="true" freespace="true" rule="lessThan" value="50"> <Position> <RelativeObjectPosition dx="0" dy="0" dz="0" entityRef="target_blocking"> <Orientation h="0" p="0" r="0" type="absolute"/> </RelativeObjectPosition> </Position> </DistanceCondition> </EntityCondition> </ByEntityCondition> </Condition> </ConditionGroup> </StartTrigger> </Event> </Maneuver> </ManeuverGroup> <StartTrigger> <ConditionGroup> <Condition conditionEdge="rising" delay="0" name="lead_vehicle_change_lane_condition_1"> <ByValueCondition> <SimulationTimeCondition rule="greaterThan" value="0"/> </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>
CutOutMultipleBlockingTargets
简述:主车Ego与同车道前方33.33m的头车lead_vehicle都按照初始速度16.667mps匀速行驶,正前方约500m处有一个行人target_blocking1,约515m处有一个障碍车辆target_blocking2,lead_vehicle在与行人target_blocking1距离小于50m时往左变道避障,10000s后激活Ego的controller,40s后停止场景(激活时间与场景停止时间可修改)。
osc2.0场景
import standard scenario CutOutMultipleBlockingTargets: # map map: map map.set_map_file("./ALKS_Road.xodr") # parameter Ego_InitPosition_LaneId: string = "-4" Ego_InitSpeed_Ve0: speed = 16.66666667mps LeadVehicle_InitDistance_dx0: length = 38.33333333m 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 = 2.0mps m_direction : distance_direction = longitudinal m_mode : distance_mode = bounding_boxes m_rate_profile: dynamics_shape = linear m_side: lane_change_side = left Duration: time = 40s # entity Ego_Name: string = "Audi_A3_2009_black" 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)
转化结果
<OpenSCENARIO> <FileHeader author="Octopus/Simulation" date="2022-10-29T01:26:41" 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> <ScenarioObject name="target_blocking1"> <Pedestrian mass="80" model="male_adult" name="Christian" pedestrianCategory="pedestrian"> <BoundingBox> <Center x="1.5" y="0" z="0.9"/> <Dimensions height="2.1" length="4.5" width="1.8"/> </BoundingBox> <Properties/> </Pedestrian> </ScenarioObject> <ScenarioObject name="target_blocking2"> <Vehicle name="Audi_A3_2009_blue" 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> <LanePosition laneId="-4" offset="0" roadId="0" s="38.33333333"/> </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="target_blocking1"> <PrivateAction> <TeleportAction> <Position> <LanePosition laneId="-4" offset="0" roadId="0" s="500"/> </Position> </TeleportAction> </PrivateAction> </Private> <Private entityRef="target_blocking2"> <PrivateAction> <TeleportAction> <Position> <LanePosition laneId="-4" offset="0" roadId="0" s="515"/> </Position> </TeleportAction> </PrivateAction> </Private> </Actions> </Init> <Story name="CutOutMultipleBlockingTargetsStory"> <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_lane_1_act"> <ManeuverGroup maximumExecutionCount="1" name="lead_vehicle_change_lane_1_maneuvers"> <Actors selectTriggeringEntities="false"> <EntityRef entityRef="lead_vehicle"/> </Actors> <Maneuver name="lead_vehicle_change_lane_1_maneuver"> <Event maximumExecutionCount="1" name="lead_vehicle_change_lane_1_event" priority="overwrite"> <Action name="lead_vehicle_change_lane_1"> <PrivateAction> <LateralAction> <LaneChangeAction> <LaneChangeActionDynamics dynamicsDimension="rate" dynamicsShape="linear" value="2"/> <LaneChangeTarget> <RelativeTargetLane entityRef="lead_vehicle" value="1"/> </LaneChangeTarget> </LaneChangeAction> </LateralAction> </PrivateAction> </Action> <StartTrigger> <ConditionGroup> <Condition conditionEdge="rising" delay="0" name="lead_vehicle_change_lane_1_condition"> <ByEntityCondition> <TriggeringEntities triggeringEntitiesRule="any"> <EntityRef entityRef="lead_vehicle"/> </TriggeringEntities> <EntityCondition> <DistanceCondition alongRoute="true" freespace="true" rule="lessThan" value="50"> <Position> <RelativeObjectPosition dx="0" dy="0" dz="0" entityRef="target_blocking1"> <Orientation h="0" p="0" r="0" type="absolute"/> </RelativeObjectPosition> </Position> </DistanceCondition> </EntityCondition> </ByEntityCondition> </Condition> </ConditionGroup> </StartTrigger> </Event> </Maneuver> </ManeuverGroup> <StartTrigger> <ConditionGroup> <Condition conditionEdge="rising" delay="0" name="lead_vehicle_change_lane_1_condition_1"> <ByValueCondition> <SimulationTimeCondition rule="greaterThan" value="0"/> </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>
ForwardDetectionRange
简述:主车Ego按照初始速度16.667mps匀速行驶,右前方(偏移5.25m)约500m处有一个行人target_blocking,10000s后激活Ego的controller,40s后停止场景(激活时间与场景停止时间可修改)。
osc2.0场景
import standard scenario ForwardDetectionRange: # map map: map map.set_map_file("./ALKS_Road.xodr") # parameter Ego_InitPosition_LaneId: string = "-4" 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) Ego_InitSpeed_Ve0: speed = 16.66666667mps TargetBlocking_InitPosition_Offset: length = -5.25m TargetBlocking_Odr: odr_point = map.create_odr_point(road_id: '0', lane_id: Ego_InitPosition_LaneId, s: 500.0m, t: TargetBlocking_InitPosition_Offset) TargetBlocking_InitPosition: pose_3d with: keep(it.odr_point == TargetBlocking_Odr) m_vehicle_catalog: catalog = vehicle_catalog m_target_blocking_catalog: catalog = pedestrian_catalog Duration: time = 40s # 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) target_blocking: person with: keep(it.name == "Christian") keep(it.model == "male_adult") # storyboard do parallel(duration: Duration): # init Ego.assign_init_position(position: Ego_InitPosition) Ego.assign_init_speed(Ego_InitSpeed_Ve0) target_blocking.assign_init_position(position: TargetBlocking_InitPosition) # story serial: # act 1: ActivateALKSControllerStory wait elapsed(10000s) Ego.activate_controller(true, true) # lateral, longitudinal
转化结果
<OpenSCENARIO> <FileHeader author="Octopus/Simulation" date="2022-10-29T01:46:19" 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="target_blocking"> <Pedestrian mass="80" model="male_adult" name="Christian" pedestrianCategory="pedestrian"> <BoundingBox> <Center x="1.5" y="0" z="0.9"/> <Dimensions height="2.1" length="4.5" width="1.8"/> </BoundingBox> <Properties/> </Pedestrian> </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="target_blocking"> <PrivateAction> <TeleportAction> <Position> <LanePosition laneId="-4" offset="-5.25" roadId="0" s="500"/> </Position> </TeleportAction> </PrivateAction> </Private> </Actions> </Init> <Story name="ForwardDetectionRangeStory"> <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> </Story> <StopTrigger> <ConditionGroup> <Condition conditionEdge="rising" delay="0" name="story_end"> <ByValueCondition> <SimulationTimeCondition rule="greaterThan" value="40"/> </ByValueCondition> </Condition> </ConditionGroup> </StopTrigger> </Storyboard> </OpenSCENARIO>
逻辑场景(以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)