def test_conditiongroup(): condgr = OSC.ConditionGroup() trig1 = OSC.EntityTrigger('firsttrigger',1,OSC.ConditionEdge.rising,OSC.RelativeDistanceCondition(10,OSC.Rule.greaterThan,'Ego'),'Target') trig2 = OSC.EntityTrigger('secondtrigger',2,OSC.ConditionEdge.rising,OSC.SpeedCondition(2,OSC.Rule.equalTo),'Target') condgr.add_condition(trig1) condgr.add_condition(trig2) OSC.prettyprint(condgr.get_element())
def test_entitytrigger(): trigcond = OSC.TimeToCollisionCondition(10, 'equalTo', True, freespace=False, position=OSC.WorldPosition()) trigger = OSC.EntityTrigger('mytesttrigger', 0.2, 'rising', trigcond, 'Target_1') OSC.prettyprint(trigger.get_element())
def test_trigger(): condgr = OSC.ConditionGroup() trig1 = OSC.EntityTrigger('firsttrigger',1,OSC.ConditionEdge.rising,OSC.RelativeDistanceCondition(10,OSC.Rule.greaterThan,OSC.RelativeDistanceType.longitudinal,'Ego'),'Target') trig2 = OSC.EntityTrigger('secondtrigger',2,OSC.ConditionEdge.rising,OSC.SpeedCondition(2,OSC.Rule.equalTo),'Target') condgr.add_condition(trig1) condgr.add_condition(trig2) condgr2 = OSC.ConditionGroup() trig3 = OSC.EntityTrigger('thirdtrigger',1,OSC.ConditionEdge.rising,OSC.RelativeDistanceCondition(10,OSC.Rule.greaterThan,OSC.RelativeDistanceType.longitudinal,'Ego'),'Target') trig4 = OSC.EntityTrigger('forthtrigger',2,OSC.ConditionEdge.rising,OSC.SpeedCondition(2,OSC.Rule.equalTo),'Target') condgr2.add_condition(trig3) condgr2.add_condition(trig4) trig = OSC.Trigger() trig.add_conditiongroup(condgr) trig.add_conditiongroup(condgr2) OSC.prettyprint(trig.get_element())
def test_scenario(): catalog = OSC.Catalog() catalog.add_catalog('VehicleCatalog', 'Catalogs/VehicleCatalogs') catalog.add_catalog('ControllerCatalog', 'Catalogs/ControllerCatalogs') roadfile = 'Databases/SampleDatabase.xodr' road = OSC.RoadNetwork(roadfile) trigcond = OSC.TimeToCollisionCondition(10, 'equalTo', True, freespace=False, position=OSC.WorldPosition()) trigger = OSC.EntityTrigger('mytesttrigger', 0.2, 'rising', trigcond, 'Target_1') event = OSC.Event('myfirstevent', 'overwrite') event.add_trigger(trigger) TD = OSC.TransitionDynamics('step', 'rate', 1) lanechangeaction = OSC.AbsoluteLaneChangeAction(1, TD) OSC.prettyprint(lanechangeaction.get_element()) speedaction = OSC.AbsoluteSpeedAction(50, TD) event.add_action('newspeed', speedaction) man = OSC.Maneuver('my maneuver') man.add_event(event) mangr = OSC.ManeuverGroup('mangroup') mangr.add_actor('Ego') mangr.add_maneuver(man) act = OSC.Act('my act', trigger) act.add_maneuver_group(mangr) story = OSC.Story('mystory') story.add_act(act) bb = OSC.BoundingBox(2, 5, 1.5, 1.5, 0, 0.2) fa = OSC.Axel(2, 2, 2, 1, 1) ba = OSC.Axel(1, 1, 2, 1, 1) veh = OSC.Vehicle('mycar', 'vehicle', bb, fa, ba, 150, 10, 10) entities = OSC.Entities() entities.add_scenario_object('Ego', veh) entities.add_scenario_object('Target_1', veh) init = OSC.Init() egospeed = OSC.AbsoluteSpeedAction(10, TD) init.add_init_action('Ego', egospeed) init.add_init_action( 'Ego', OSC.TeleportAction(OSC.WorldPosition(1, 2, 3, 0, 0, 0))) init.add_init_action('Target_1', egospeed) init.add_init_action( 'Target_1', OSC.TeleportAction(OSC.WorldPosition(1, 5, 3, 0, 0, 0))) sb = OSC.StoryBoard(init) sb.add_story(story) sce = OSC.Scenario('myscenario', 'Mandolin', OSC.ParameterDeclarations(), entities=entities, storyboard=sb, roadnetwork=road, catalog=catalog) OSC.prettyprint(sce.get_element())
import pytest import pyoscx as OSC TD = OSC.TransitionDynamics(OSC.DynamicsShapes.step, OSC.DynamicsDimension.rate, 1) speedaction = OSC.AbsoluteSpeedAction(50, TD) trigcond = OSC.TimeToCollisionCondition( 10, OSC.Rule.equalTo, position=OSC.WorldPosition(), freespace=False, ) trigger = OSC.EntityTrigger('mytesttrigger', 0.2, OSC.ConditionEdge.rising, trigcond, 'Target_1') def test_event(): event = OSC.Event('myfirstevent', OSC.Priority.overwrite) event.add_trigger(trigger) event.add_action('newspeed', speedaction) def test_maneuver(): event = OSC.Event('myfirstevent', OSC.Priority.overwrite) event.add_trigger(trigger) event.add_action('newspeed', speedaction) man = OSC.Maneuver('my maneuver')
init.add_init_action(egoname, pyoscx.AbsoluteSpeedAction(30, step_time)) init.add_init_action(egoname, pyoscx.TeleportAction(pyoscx.LanePosition(25, 0, -3, 0))) init.add_init_action(redname, pyoscx.AbsoluteSpeedAction(40, step_time)) init.add_init_action(redname, pyoscx.TeleportAction(pyoscx.LanePosition(15, 0, -2, 0))) init.add_init_action(yelname, pyoscx.AbsoluteSpeedAction(30, step_time)) init.add_init_action(yelname, pyoscx.TeleportAction(pyoscx.LanePosition(35, 0, -4, 0))) ### create an event for the red car r_trigcond = pyoscx.TimeHeadwayCondition(redname, 0.1, pyoscx.Rule.greaterThan) r_trigger = pyoscx.EntityTrigger('redtrigger', 0.2, pyoscx.ConditionEdge.rising, r_trigcond, egoname) r_event = pyoscx.Event('first_lane_change', pyoscx.Priority.overwrite) r_event.add_trigger(r_trigger) r_event.add_action( 'lane_change_red', pyoscx.AbsoluteLaneChangeAction( -4, pyoscx.TransitionDynamics(pyoscx.DynamicsShapes.sinusoidal, pyoscx.DynamicsDimension.time, 4))) ## create the act for the red car r_man = pyoscx.Maneuver('red_maneuver') r_man.add_event(r_event) r_mangr = pyoscx.ManeuverGroup('mangroup_red')
egostart = pyoscx.TeleportAction(pyoscx.LanePosition(25,0,-3,0)) targetspeed = pyoscx.AbsoluteSpeedAction(40,step_time) targetstart = pyoscx.TeleportAction(pyoscx.LanePosition(15,0,-2,0)) init.add_init_action(egoname,egospeed) init.add_init_action(egoname,egostart) init.add_init_action(targetname,targetspeed) init.add_init_action(targetname,targetstart) ### create an event trigcond = pyoscx.TimeHeadwayCondition(targetname,0.4,pyoscx.Rule.greaterThan) trigger = pyoscx.EntityTrigger('mytesttrigger',0.2,pyoscx.ConditionEdge.rising,trigcond,egoname) event = pyoscx.Event('myfirstevent',pyoscx.Priority.overwrite) event.add_trigger(trigger) positionlist = [] positionlist.append(pyoscx.RelativeLanePosition(0,0,0,targetname)) positionlist.append(pyoscx.RelativeLanePosition(20,0.5,0,targetname)) positionlist.append(pyoscx.RelativeLanePosition(40,-0.5,0,targetname)) positionlist.append(pyoscx.RelativeLanePosition(60,-1,0,targetname)) polyline = pyoscx.Polyline([0,0.5,1,1.5],positionlist) traj = pyoscx.Trajectory('my_trajectory',False) traj.add_shape(polyline)
event.add_action( 'speedaction', pyoscx.AbsoluteSpeedAction( 10, pyoscx.TransitionDynamics(pyoscx.DynamicsShapes.step, pyoscx.DynamicsDimension.time, 3))) # create two trigger conditions trig_cond1 = pyoscx.TimeToCollisionCondition(2, pyoscx.Rule.lessThan, entity=targetname) trig_cond2 = pyoscx.TimeHeadwayCondition(speedyname, 1, pyoscx.Rule.greaterThan) collision_trigger = pyoscx.EntityTrigger('trigger', 0, pyoscx.ConditionEdge.none, trig_cond1, egoname) headway_trigger = pyoscx.EntityTrigger('trigger', 0, pyoscx.ConditionEdge.none, trig_cond2, egoname) # create two separate condition groups col_group = pyoscx.ConditionGroup() col_group.add_condition(collision_trigger) head_group = pyoscx.ConditionGroup() head_group.add_condition(headway_trigger) # create trigger and add the two conditiongroups (or logic) trigger = pyoscx.Trigger() trigger.add_conditiongroup(col_group)
import pytest import pyoscx as OSC TD = OSC.TransitionDynamics('step', 'rate', 1) speedaction = OSC.AbsoluteSpeedAction(50, TD) trigcond = OSC.TimeToCollisionCondition( 10, 'equalTo', position=OSC.WorldPosition(), freespace=False, ) trigger = OSC.EntityTrigger('mytesttrigger', 0.2, 'rising', trigcond, 'Target_1') def test_event(): event = OSC.Event('myfirstevent', 'overwrite') event.add_trigger(trigger) event.add_action('newspeed', speedaction) def test_maneuver(): event = OSC.Event('myfirstevent', 'overwrite') event.add_trigger(trigger) event.add_action('newspeed', speedaction) man = OSC.Maneuver('my maneuver')
slowdown_event = pyoscx.Event('speedchange', pyoscx.Priority.overwrite) slowdown_event.add_action( 'speedaction', pyoscx.AbsoluteSpeedAction( 9, pyoscx.TransitionDynamics(pyoscx.DynamicsShapes.sinusoidal, pyoscx.DynamicsDimension.time, 1))) # create two trigger conditions ttc_cond = pyoscx.TimeToCollisionCondition(3, pyoscx.Rule.lessThan, entity=targetname) headway_cond = pyoscx.TimeHeadwayCondition(speedyname, 1, pyoscx.Rule.lessThan) headway_trigger = pyoscx.EntityTrigger('trigger', 0, pyoscx.ConditionEdge.none, headway_cond, egoname) collision_trigger = pyoscx.EntityTrigger('trigger', 0, pyoscx.ConditionEdge.none, ttc_cond, egoname) #create the "and" logic sc_group = pyoscx.ConditionGroup() sc_group.add_condition(collision_trigger) sc_group.add_condition(headway_trigger) slowdown_event.add_trigger(sc_group) # create the optional lanechange event lane_change_event = pyoscx.Event('lanechange', pyoscx.Priority.overwrite)
egospeed = pyoscx.AbsoluteSpeedAction(30, step_time) egostart = pyoscx.TeleportAction(pyoscx.LanePosition(25, 0, -3, 0)) targetspeed = pyoscx.AbsoluteSpeedAction(40, step_time) targetstart = pyoscx.TeleportAction(pyoscx.LanePosition(15, 0, -2, 0)) init.add_init_action(egoname, egospeed) init.add_init_action(egoname, egostart) init.add_init_action(targetname, targetspeed) init.add_init_action(targetname, targetstart) ### create an event trigcond = pyoscx.TimeHeadwayCondition(targetname, 0.1, 'greaterThan') trigger = pyoscx.EntityTrigger('mytesttrigger', 0.2, 'rising', trigcond, egoname) event = pyoscx.Event('myfirstevent', 'overwrite') event.add_trigger(trigger) sin_time = pyoscx.TransitionDynamics('linear', 'time', 3) action = pyoscx.LongitudinalDistanceAction(-4, egoname, max_deceleration=3, max_speed=50) event.add_action('newspeed', action) ## create the act, man = pyoscx.Maneuver('my_maneuver') man.add_event(event)
pyoscx.DynamicsDimension.time, 8)) egostart = pyoscx.TeleportAction(pyoscx.LanePosition(25, 0, -3, 0)) targetspeed = pyoscx.AbsoluteSpeedAction(15, step_time) targetstart = pyoscx.TeleportAction(pyoscx.RoadPosition(30, -5, 0)) init.add_init_action(egoname, egospeed) init.add_init_action(egoname, egostart) init.add_init_action(targetname, targetspeed) init.add_init_action(targetname, targetstart) ### create an event trigcond = pyoscx.RelativeSpeedCondition(0, pyoscx.Rule.lessThan, egoname) trigger = pyoscx.EntityTrigger('mytesttrigger', 0.2, pyoscx.ConditionEdge.none, trigcond, targetname) event = pyoscx.Event('myfirstevent', pyoscx.Priority.overwrite) event.add_trigger(trigger) sin_time = pyoscx.TransitionDynamics(pyoscx.DynamicsShapes.linear, pyoscx.DynamicsDimension.time, 5) action = pyoscx.RelativeLaneChangeAction( -8, targetname, pyoscx.TransitionDynamics(pyoscx.DynamicsShapes.linear, pyoscx.DynamicsDimension.time, 6), -10) event.add_action('newspeed', action) ## create the maneuver man = pyoscx.Maneuver('my_maneuver') man.add_event(event)
targetname + str(i), pyoscx.AbsoluteSpeedAction( 60, pyoscx.TransitionDynamics(pyoscx.DynamicsShapes.step, pyoscx.DynamicsDimension.time, 1))) event = pyoscx.Event('speedchange', pyoscx.Priority.overwrite, maxexecution=10) event.add_action('restart', pyoscx.TeleportAction(pyoscx.LanePosition(0, 0, -1, 1))) trig_cond = pyoscx.EndOfRoadCondition(0) event.add_trigger( pyoscx.EntityTrigger('trigger', 0, pyoscx.ConditionEdge.rising, trig_cond, targetname + str(i))) man = pyoscx.Maneuver('mymaneuver') man.add_event(event) mangr = pyoscx.ManeuverGroup('mangr', maxexecution=3) mangr.add_maneuver(man) mangr.add_actor(targetname + str(i)) act.add_maneuver_group(mangr) ## create the storyboard sb = pyoscx.StoryBoard( init, pyoscx.ValueTrigger( 'stop_simulation', 0, pyoscx.ConditionEdge.rising, pyoscx.SimulationTimeCondition(100, pyoscx.Rule.greaterThan), 'stop'))
### create init init = pyoscx.Init() step_time = pyoscx.TransitionDynamics('step','time',1) init.add_init_action(egoname,pyoscx.AbsoluteSpeedAction(30,step_time)) init.add_init_action(egoname,pyoscx.TeleportAction(pyoscx.LanePosition(25,0,-3,0))) init.add_init_action(redname,pyoscx.AbsoluteSpeedAction(40,step_time)) init.add_init_action(redname,pyoscx.TeleportAction(pyoscx.LanePosition(15,0,-2,0))) init.add_init_action(yelname,pyoscx.AbsoluteSpeedAction(30,step_time)) init.add_init_action(yelname,pyoscx.TeleportAction(pyoscx.LanePosition(35,0,-4,0))) ### create an event for the red car r_trigcond = pyoscx.TimeHeadwayCondition(redname,0.1,'greaterThan') r_trigger = pyoscx.EntityTrigger('redtrigger',0.2,'rising',r_trigcond,egoname) r_event = pyoscx.Event('first_lane_change','overwrite') r_event.add_trigger(r_trigger) r_event.add_action('lane_change_red',pyoscx.AbsoluteLaneChangeAction(-4,pyoscx.TransitionDynamics('sinusoidal','time',4))) ## create the act for the red car r_man = pyoscx.Maneuver('red_maneuver') r_man.add_event(r_event) r_mangr = pyoscx.ManeuverGroup('mangroup_red') r_mangr.add_actor(redname) r_mangr.add_maneuver(r_man) act = pyoscx.Act('red_act',pyoscx.ValueTrigger('starttrigger',0,'rising',pyoscx.SimulationTimeCondition(0,'greaterThan'))) act.add_maneuver_group(r_mangr)
pyoscx.AbsoluteSpeedAction( 10, pyoscx.TransitionDynamics(pyoscx.DynamicsShapes.step, pyoscx.DynamicsDimension.time, 1))) ## do lanechange lc_cond = pyoscx.ReachPositionCondition(pyoscx.LanePosition(40, 0, -4, 0), 1) lc_event = pyoscx.Event('lanechange', pyoscx.Priority.parallel) lc_event.add_action( 'lanechangeaction', pyoscx.RelativeLaneChangeAction( -1, targetname, pyoscx.TransitionDynamics(pyoscx.DynamicsShapes.sinusoidal, pyoscx.DynamicsDimension.time, 3))) lc_event.add_trigger( pyoscx.EntityTrigger('lanechangetrigger', 0, pyoscx.ConditionEdge.none, lc_cond, egoname)) event = pyoscx.Event('speedchange', pyoscx.Priority.parallel) event.add_action( 'speedaction', pyoscx.AbsoluteSpeedAction( 10, pyoscx.TransitionDynamics(pyoscx.DynamicsShapes.linear, pyoscx.DynamicsDimension.time, 3))) trig_cond = pyoscx.RelativeDistanceCondition( 5, pyoscx.Rule.lessThan, pyoscx.RelativeDistanceType.lateral, targetname) event.add_trigger( pyoscx.EntityTrigger('trigger', 0, pyoscx.ConditionEdge.none, trig_cond, egoname)) man = pyoscx.Maneuver('mymaneuver')