Beispiel #1
0
step_time = pyoscx.TransitionDynamics(pyoscx.DynamicsShapes.step,
                                      pyoscx.DynamicsDimension.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, 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)
Beispiel #2
0
def test_timeheadwaycondition():
    cond = OSC.TimeHeadwayCondition('Ego', 20, 'equalTo', True, False)
    OSC.prettyprint(cond.get_element())
Beispiel #3
0
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.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)

Beispiel #4
0
### create the action

event = pyoscx.Event('speedchange', pyoscx.Priority.overwrite)
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 the "optional" slowdown event

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)
Beispiel #6
0
step_time = pyoscx.TransitionDynamics('step', 'time', 1)

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,
### 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')))