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_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())
# 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) trigger.add_conditiongroup(head_group) event.add_trigger(trigger) ## create the storyboard man = pyoscx.Maneuver('mymaneuver') man.add_event(event)
# create two 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 and add them to a ConditionGroup (and logic) andtrigger = pyoscx.ConditionGroup() andtrigger.add_condition(collision_trigger) andtrigger.add_condition(headway_trigger) # add trigger to event event.add_trigger(andtrigger) ## create the storyboard man = pyoscx.Maneuver('mymaneuver') man.add_event(event) sb = pyoscx.StoryBoard( init, pyoscx.ValueTrigger( 'stop_simulation', 0, pyoscx.ConditionEdge.rising, pyoscx.SimulationTimeCondition(20, pyoscx.Rule.greaterThan), 'stop'))
# 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) lane_change_event.add_action( 'lanechangeaction', pyoscx.AbsoluteLaneChangeAction( -3, pyoscx.TransitionDynamics(pyoscx.DynamicsShapes.sinusoidal, pyoscx.DynamicsDimension.time, 3)))