Ejemplo n.º 1
0
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())
Ejemplo n.º 2
0
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())
Ejemplo n.º 3
0
# 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)))