Esempio 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())
Esempio n. 2
0
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())
Esempio n. 3
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())
Esempio n. 4
0
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())
Esempio n. 5
0
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')
Esempio n. 6
0
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')
Esempio n. 7
0
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)
Esempio n. 8
0
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)
Esempio n. 9
0
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)
Esempio n. 11
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.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)
Esempio n. 12
0
                              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)
Esempio n. 13
0
        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'))
Esempio n. 14
0
### 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)
Esempio n. 15
0
    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')