def test_maneuver():
    event = OSC.Event('myfirstevent', OSC.Priority.overwrite)
    event.add_trigger(trigger)
    event.add_action('newspeed', speedaction)
    man = OSC.Maneuver('my maneuver')
    man.add_event(event)
    prettyprint(man.get_element())
def test_storyboard_act_input():

    egoname = "Ego"
    targetname = "target"

    init = OSC.Init()
    step_time = OSC.TransitionDynamics(OSC.DynamicsShapes.step,
                                       OSC.DynamicsDimension.time, 1)

    egospeed = OSC.AbsoluteSpeedAction(0, step_time)
    egostart = OSC.TeleportAction(OSC.LanePosition(25, 0, -3, 0))

    targetspeed = OSC.AbsoluteSpeedAction(0, step_time)
    targetstart = OSC.TeleportAction(OSC.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 = OSC.TimeHeadwayCondition(targetname,0.1,OSC.Rule.greaterThan)

    # trigger = OSC.EntityTrigger('mytesttrigger',0.2,OSC.ConditionEdge.rising,trigcond,egoname)
    trigger = OSC.ValueTrigger(
        'starttrigger', 0, OSC.ConditionEdge.rising,
        OSC.SimulationTimeCondition(3, OSC.Rule.greaterThan))
    event = OSC.Event('myfirstevent', OSC.Priority.overwrite)
    event.add_trigger(trigger)

    # sin_time = OSC.TransitionDynamics(OSC.DynamicsShapes.linear,OSC.DynamicsDimension.time,3)
    action = OSC.LongitudinalDistanceAction(-4,
                                            egoname,
                                            max_deceleration=3,
                                            max_speed=50)
    event.add_action('newspeed', action)

    ## create the act,
    man = OSC.Maneuver('my_maneuver')
    man.add_event(event)

    mangr = OSC.ManeuverGroup('mangroup')
    mangr.add_actor(targetname)
    mangr.add_maneuver(man)

    starttrigger = OSC.ValueTrigger(
        'starttrigger', 0, OSC.ConditionEdge.rising,
        OSC.SimulationTimeCondition(0, OSC.Rule.greaterThan))
    act = OSC.Act('my_act', starttrigger)
    act.add_maneuver_group(mangr)

    ## create the storyboard
    sb = OSC.StoryBoard(init)
    sb.add_act(act)

    prettyprint(sb.get_element())
Exemplo n.º 3
0
    def scenario(self, **kwargs):
        road = xosc.RoadNetwork(self.road_file)
        egoname = 'Ego'
        entities = xosc.Entities()
        entities.add_scenario_object(
            egoname, xosc.CatalogReference('VehicleCatalog', 'car_white'))

        catalog = xosc.Catalog()
        catalog.add_catalog('VehicleCatalog', '../xosc/Catalogs/Vehicles')

        init = xosc.Init()

        init.add_init_action(
            egoname, xosc.TeleportAction(xosc.LanePosition(50, 0, -2, 0)))
        init.add_init_action(
            egoname,
            xosc.AbsoluteSpeedAction(
                kwargs['speed'],
                xosc.TransitionDynamics(xosc.DynamicsShapes.step,
                                        xosc.DynamicsDimension.time, 1)))

        event = xosc.Event('my event', xosc.Priority.overwrite)
        event.add_action(
            'lane change',
            xosc.AbsoluteLaneChangeAction(
                -1,
                xosc.TransitionDynamics(xosc.DynamicsShapes.sinusoidal,
                                        xosc.DynamicsDimension.time, 4)))
        event.add_trigger(
            xosc.ValueTrigger(
                'start_trigger ', 0, xosc.ConditionEdge.none,
                xosc.SimulationTimeCondition(4, xosc.Rule.greaterThan)))

        man = xosc.Maneuver('maneuver')
        man.add_event(event)

        sb = xosc.StoryBoard(init,
                             stoptrigger=xosc.ValueTrigger(
                                 'start_trigger ', 0, xosc.ConditionEdge.none,
                                 xosc.SimulationTimeCondition(
                                     13, xosc.Rule.greaterThan), 'stop'))
        sb.add_maneuver(man, egoname)
        sce = xosc.Scenario('my scenario', 'Mandolin',
                            xosc.ParameterDeclarations(), entities, sb, road,
                            catalog)

        return sce
def test_actandstory():
    event = OSC.Event('myfirstevent', OSC.Priority.overwrite)
    event.add_trigger(trigger)
    event.add_action('newspeed', speedaction)
    man = OSC.Maneuver('my maneuver')
    man.add_event(event)
    prettyprint(man.get_element())

    mangr = OSC.ManeuverGroup('mangroup')
    mangr.add_actor('Ego')
    mangr.add_maneuver(man)
    prettyprint(mangr.get_element())

    act = OSC.Act('my act', trigger)
    act.add_maneuver_group(mangr)
    prettyprint(act.get_element())

    story = OSC.Story('mystory')
    story.add_act(act)
    prettyprint(story.get_element())
def test_storyboard_story_input():
    init = OSC.Init()
    TD = OSC.TransitionDynamics(OSC.DynamicsShapes.step,
                                OSC.DynamicsDimension.rate, 1)
    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)))
    init.add_init_action('Target_2', egospeed)
    init.add_init_action(
        'Target_2', OSC.TeleportAction(OSC.WorldPosition(10, 2, 3, 0, 0, 0)))
    prettyprint(init.get_element())

    event = OSC.Event('myfirstevent', OSC.Priority.overwrite)
    event.add_trigger(trigger)
    event.add_action('newspeed', speedaction)
    man = OSC.Maneuver('my maneuver')
    man.add_event(event)
    prettyprint(man.get_element())

    mangr = OSC.ManeuverGroup('mangroup')
    mangr.add_actor('Ego')
    mangr.add_maneuver(man)
    prettyprint(mangr.get_element())

    act = OSC.Act('my act', trigger)
    act.add_maneuver_group(mangr)
    prettyprint(act.get_element())

    story = OSC.Story('mystory')
    story.add_act(act)
    prettyprint(story.get_element())

    sb = OSC.StoryBoard(init)
    sb.add_story(story)
    prettyprint(sb.get_element())
Exemplo n.º 6
0
targetspeed = xosc.AbsoluteSpeedAction(40, step_time)
targetstart = xosc.TeleportAction(xosc.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 = xosc.TimeHeadwayCondition(targetname, 0.4, xosc.Rule.greaterThan)

trigger = xosc.EntityTrigger('mytesttrigger', 0.2, xosc.ConditionEdge.rising,
                             trigcond, egoname)

event = xosc.Event('myfirstevent', xosc.Priority.overwrite)
event.add_trigger(trigger)

positionlist = []
positionlist.append(xosc.RelativeLanePosition(0, 0, 0, targetname))
positionlist.append(xosc.RelativeLanePosition(20, 0.5, 0, targetname))
positionlist.append(xosc.RelativeLanePosition(40, -0.5, 0, targetname))
positionlist.append(xosc.RelativeLanePosition(60, -1, 0, targetname))

polyline = xosc.Polyline([0, 0.5, 1, 1.5], positionlist)

traj = xosc.Trajectory('my_trajectory', False)
traj.add_shape(polyline)

trajact = xosc.FollowTrajectoryAction(traj, xosc.FollowMode.position,
                                      xosc.ReferenceContext.relative, 1, 0)
Exemplo n.º 7
0
def CCRm(ego_speedvalue, offset):

    # create empty catalog
    catalog = xosc.Catalog()

    # add straight road
    road = xosc.RoadNetwork(roadfile='../xodr/straight_500m.xodr',
                            scenegraph='../models/straight_500m.osgb')

    # create empty paramdeclaration
    paramdec = xosc.ParameterDeclarations()

    egoname = 'Ego'
    targetname = 'Target1'

    ### create vehicles
    ego_width = 2
    target_width = 1.8

    bb = xosc.BoundingBox(ego_width, 5, 1.8, 2.0, 0, 0.9)
    fa = xosc.Axle(0.523598775598, 0.8, 1.68, 2.98, 0.4)
    ba = xosc.Axle(0.523598775598, 0.8, 1.68, 0, 0.4)
    white_veh = xosc.Vehicle('car_white', xosc.VehicleCategory.car, bb, fa, ba,
                             69, 10, 10)

    white_veh.add_property_file('../models/car_white.osgb')
    white_veh.add_property('model_id', '0')

    bb = xosc.BoundingBox(target_width, 4.5, 1.5, 1.3, 0, 0.8)
    fa = xosc.Axle(0.523598775598, 0.8, 1.68, 2.98, 0.4)
    ba = xosc.Axle(0.523598775598, 0.8, 1.68, 0, 0.4)
    red_veh = xosc.Vehicle('car_red', xosc.VehicleCategory.car, bb, fa, ba, 69,
                           10, 10)

    red_veh.add_property_file('../models/car_red.osgb')
    red_veh.add_property('model_id', '2')

    ## create entities
    entities = xosc.Entities()
    entities.add_scenario_object(egoname, white_veh)
    entities.add_scenario_object(targetname, red_veh)

    # create init (0 starting speed)
    init = xosc.Init()
    step_time = xosc.TransitionDynamics(xosc.DynamicsShapes.step,
                                        xosc.DynamicsDimension.time, 1)

    # caluclate correct offset based on target vehicle width
    cal_offset = offset / 100 * target_width

    egospeed = xosc.AbsoluteSpeedAction(0, step_time)
    egostart = xosc.TeleportAction(xosc.LanePosition(25, cal_offset, -1, 1))

    startpos = 25 + (ego_speedvalue - 20) / 3.6 * (acceleration_time +
                                                   ttc_at_speed)

    targetspeed = xosc.AbsoluteSpeedAction(0, step_time)
    targetstart = xosc.TeleportAction(xosc.LanePosition(startpos, 0, -1, 1))

    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 start trigger
    trigger = xosc.ValueTrigger(
        'starttrigger', 0, xosc.ConditionEdge.rising,
        xosc.SimulationTimeCondition(1, xosc.Rule.greaterThan))

    # accelerate cars to wanted velocity
    eventego = xosc.Event('egospeedchange', xosc.Priority.overwrite)
    eventego.add_trigger(trigger)

    ego_action = xosc.AbsoluteSpeedAction(
        ego_speedvalue / 3.6,
        xosc.TransitionDynamics(xosc.DynamicsShapes.linear,
                                xosc.DynamicsDimension.time,
                                acceleration_time))
    eventego.add_action('newspeed', ego_action)

    event_tar = xosc.Event('targetspeedchange', xosc.Priority.overwrite)
    event_tar.add_trigger(trigger)

    target_action = xosc.AbsoluteSpeedAction(
        20 / 3.6,
        xosc.TransitionDynamics(xosc.DynamicsShapes.linear,
                                xosc.DynamicsDimension.time,
                                acceleration_time))
    event_tar.add_action('targetspeed', target_action)

    # create maneuvers/maneuvergroups
    ego_man = xosc.Maneuver('ego man')
    ego_man.add_event(eventego)

    tar_man = xosc.Maneuver('target man')
    tar_man.add_event(event_tar)

    egomangr = xosc.ManeuverGroup('egomangr')
    egomangr.add_actor(egoname)
    egomangr.add_maneuver(ego_man)

    tarmangr = xosc.ManeuverGroup('tarmangr')
    tarmangr.add_actor(targetname)
    tarmangr.add_maneuver(tar_man)

    # create act
    act = xosc.Act(
        'ccrm act',
        xosc.ValueTrigger(
            'starttrigger', 0, xosc.ConditionEdge.rising,
            xosc.SimulationTimeCondition(0, xosc.Rule.greaterThan)))

    act.add_maneuver_group(egomangr)
    act.add_maneuver_group(tarmangr)

    # create story
    story = xosc.Story('mystory')
    story.add_act(act)

    ## create the storyboard
    sb = xosc.StoryBoard(
        init,
        xosc.ValueTrigger(
            'stop_simulation', 0, xosc.ConditionEdge.rising,
            xosc.SimulationTimeCondition(ttc_at_speed * 2 + acceleration_time,
                                         xosc.Rule.greaterThan), 'stop'))
    sb.add_story(story)

    ## create and return the scenario
    sce = xosc.Scenario('CCRm_v: ' + str(ego_speedvalue) + ', offset: ' +
                        str(offset),
                        'Mandolin',
                        paramdec,
                        entities=entities,
                        storyboard=sb,
                        roadnetwork=road,
                        catalog=catalog)
    return sce
        30,
        xosc.TransitionDynamics(xosc.DynamicsShapes.step,
                                xosc.DynamicsDimension.time, 1)))

init.add_init_action(targetname,
                     xosc.TeleportAction(xosc.LanePosition(100, 0, -2, 0)))
init.add_init_action(
    targetname,
    xosc.AbsoluteSpeedAction(
        10,
        xosc.TransitionDynamics(xosc.DynamicsShapes.step,
                                xosc.DynamicsDimension.time, 1)))

### create the action

event = xosc.Event('speedchange', xosc.Priority.overwrite)
event.add_action(
    'speedaction',
    xosc.AbsoluteSpeedAction(
        10,
        xosc.TransitionDynamics(xosc.DynamicsShapes.step,
                                xosc.DynamicsDimension.time, 3)))

# create two trigger conditions
trig_cond1 = xosc.TimeToCollisionCondition(2,
                                           xosc.Rule.lessThan,
                                           entity=targetname)
trig_cond2 = xosc.TimeHeadwayCondition(speedyname, 1, xosc.Rule.greaterThan)

collision_trigger = xosc.EntityTrigger('trigger', 0, xosc.ConditionEdge.none,
                                       trig_cond1, egoname)
Exemplo n.º 9
0
targetspeed = xosc.AbsoluteSpeedAction(15,step_time)
targetstart = xosc.TeleportAction(xosc.RelativeRoadPosition(30,0,egoname))

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 for target

trigcond = xosc.AccelerationCondition(2.9,xosc.Rule.greaterThan)

trigger = xosc.EntityTrigger('mytesttrigger',0.2,xosc.ConditionEdge.none,trigcond,egoname)

event = xosc.Event('myfirstevent',xosc.Priority.overwrite)
event.add_trigger(trigger)

sin_time = xosc.TransitionDynamics(xosc.DynamicsShapes.linear,xosc.DynamicsDimension.time,3.9)
action = xosc.AbsoluteSpeedAction(0,sin_time)
event.add_action('newspeed',action)

## create the maneuver
man = xosc.Maneuver('my_maneuver')
man.add_event(event)

mangr = xosc.ManeuverGroup('mangroup')
mangr.add_actor(targetname)
mangr.add_maneuver(man)

Exemplo n.º 10
0
### create init

init = xosc.Init()

init.add_init_action(egoname,xosc.TeleportAction(xosc.LanePosition(50,0,-2,0)))
init.add_init_action(egoname,xosc.AbsoluteSpeedAction(10,xosc.TransitionDynamics(xosc.DynamicsShapes.step,xosc.DynamicsDimension.time,1)))

init.add_init_action(targetname,xosc.TeleportAction(xosc.LanePosition(30,0,-3,0)))
init.add_init_action(targetname,xosc.AbsoluteSpeedAction(20,xosc.TransitionDynamics(xosc.DynamicsShapes.step,xosc.DynamicsDimension.time,1)))


## target action

tar_action = xosc.AbsoluteSynchronizeAction(egoname,xosc.LanePosition(200,0,-1,0),xosc.LanePosition(200,0,-2,0),10,target_tolerance_master=1,target_tolerance=1)

tar_event = xosc.Event('target_event',xosc.Priority.overwrite)
tar_event.add_trigger(xosc.ValueTrigger('ego_start',0,xosc.ConditionEdge.none,xosc.SimulationTimeCondition(3,xosc.Rule.greaterThan)))
tar_event.add_action('tar_action',tar_action)

tar_man = xosc.Maneuver('target_man')
tar_man.add_event(tar_event)

tar_man_gr = xosc.ManeuverGroup('target_man_gr')
tar_man_gr.add_maneuver(tar_man)
tar_man_gr.add_actor(targetname)


## act
act = xosc.Act('myact',xosc.ValueTrigger('start',0,xosc.ConditionEdge.none,xosc.SimulationTimeCondition(0,xosc.Rule.greaterThan)))

act.add_maneuver_group(tar_man_gr)
Exemplo n.º 11
0
## loop to create cars, init and their reset actions

egoname = 'Ego'

targetname = 'Target'
entities = xosc.Entities()
init = xosc.Init()
act = xosc.Act('indef traffic')

for i in range(20):
    entities.add_scenario_object(targetname+str(i),xosc.CatalogReference('VehicleCatalog','car_yellow'))

    init.add_init_action(targetname+str(i),xosc.TeleportAction(xosc.LanePosition(100+i*20,0,-1,1)))
    init.add_init_action(targetname+str(i),xosc.AbsoluteSpeedAction(60,xosc.TransitionDynamics(xosc.DynamicsShapes.step,xosc.DynamicsDimension.time,1)))

    event = xosc.Event('speedchange',xosc.Priority.overwrite,maxexecution=10)
    event.add_action('restart',xosc.TeleportAction(xosc.LanePosition(0,0,-1,1)))
    
    trig_cond = xosc.EndOfRoadCondition(0)

    event.add_trigger(xosc.EntityTrigger('trigger',0,xosc.ConditionEdge.rising,trig_cond,targetname+str(i)))

    man = xosc.Maneuver('mymaneuver')
    man.add_event(event)


    mangr = xosc.ManeuverGroup('mangr',maxexecution=3)
    mangr.add_maneuver(man)
    mangr.add_actor(targetname+str(i))
    act.add_maneuver_group(mangr)
    
        20,
        xosc.TransitionDynamics(xosc.DynamicsShapes.step,
                                xosc.DynamicsDimension.time, 1)))

init.add_init_action(targetname,
                     xosc.TeleportAction(xosc.LanePosition(50, 0, -2, 0)))
init.add_init_action(
    targetname,
    xosc.AbsoluteSpeedAction(
        10,
        xosc.TransitionDynamics(xosc.DynamicsShapes.step,
                                xosc.DynamicsDimension.time, 1)))

## do lanechange
lc_cond = xosc.ReachPositionCondition(xosc.LanePosition(40, 0, -4, 0), 1)
lc_event = xosc.Event('lanechange', xosc.Priority.parallel)
lc_event.add_action(
    'lanechangeaction',
    xosc.RelativeLaneChangeAction(
        -1, targetname,
        xosc.TransitionDynamics(xosc.DynamicsShapes.sinusoidal,
                                xosc.DynamicsDimension.time, 3)))
lc_event.add_trigger(
    xosc.EntityTrigger('lanechangetrigger', 0, xosc.ConditionEdge.none,
                       lc_cond, egoname))

event = xosc.Event('speedchange', xosc.Priority.parallel)
event.add_action(
    'speedaction',
    xosc.AbsoluteSpeedAction(
        10,
Exemplo n.º 13
0
init = xosc.Init()

init.add_init_action(egoname,xosc.TeleportAction(xosc.LanePosition(50,0,-2,0)))
init.add_init_action(egoname,xosc.AbsoluteSpeedAction(15,xosc.TransitionDynamics(xosc.DynamicsShapes.step,xosc.DynamicsDimension.time,1)))

# change speed of this to have different outcome
init.add_init_action(speedyname,xosc.TeleportAction(xosc.LanePosition(10,0,-3,0)))
init.add_init_action(speedyname,xosc.AbsoluteSpeedAction(speed_of_outer_car,xosc.TransitionDynamics(xosc.DynamicsShapes.step,xosc.DynamicsDimension.time,1)))

init.add_init_action(targetname,xosc.TeleportAction(xosc.LanePosition(100,0,-2,0)))
init.add_init_action(targetname,xosc.AbsoluteSpeedAction(10,xosc.TransitionDynamics(xosc.DynamicsShapes.step,xosc.DynamicsDimension.time,1)))

### create the "optional" slowdown event

slowdown_event = xosc.Event('speedchange',xosc.Priority.overwrite)
slowdown_event.add_action('speedaction',xosc.AbsoluteSpeedAction(9,xosc.TransitionDynamics(xosc.DynamicsShapes.sinusoidal,xosc.DynamicsDimension.time,1)))

# create two trigger conditions 
ttc_cond = xosc.TimeToCollisionCondition(3,xosc.Rule.lessThan,entity=targetname)
headway_cond = xosc.TimeHeadwayCondition(speedyname,1,xosc.Rule.lessThan)

headway_trigger = xosc.EntityTrigger('trigger',0,xosc.ConditionEdge.none,headway_cond,egoname)

collision_trigger = xosc.EntityTrigger('trigger',0,xosc.ConditionEdge.none,ttc_cond,egoname)

#create the "and" logic
sc_group = xosc.ConditionGroup()
sc_group.add_condition(collision_trigger)
sc_group.add_condition(headway_trigger)
Exemplo n.º 14
0
def test_event():

    event = OSC.Event('myfirstevent', OSC.Priority.overwrite)
    event.add_trigger(trigger)

    event.add_action('newspeed', speedaction)
Exemplo n.º 15
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,
                                            OSC.Rule.equalTo,
                                            True,
                                            freespace=False,
                                            position=OSC.WorldPosition())

    trigger = OSC.EntityTrigger('mytesttrigger', 0.2, OSC.ConditionEdge.rising,
                                trigcond, 'Target_1')

    event = OSC.Event('myfirstevent', OSC.Priority.overwrite)
    event.add_trigger(trigger)

    TD = OSC.TransitionDynamics(OSC.DynamicsShapes.step,
                                OSC.DynamicsDimension.rate, 1)

    lanechangeaction = OSC.AbsoluteLaneChangeAction(1, TD)
    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.Axle(2, 2, 2, 1, 1)
    ba = OSC.Axle(1, 1, 2, 1, 1)
    veh = OSC.Vehicle('mycar', OSC.VehicleCategory.car, 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)
    prettyprint(sce.get_element())
init.add_init_action(egoname, xosc.AbsoluteSpeedAction(30, step_time))
init.add_init_action(egoname,
                     xosc.TeleportAction(xosc.LanePosition(25, 0, -3, 0)))
init.add_init_action(redname, xosc.AbsoluteSpeedAction(40, step_time))
init.add_init_action(redname,
                     xosc.TeleportAction(xosc.LanePosition(15, 0, -2, 0)))
init.add_init_action(yelname, xosc.AbsoluteSpeedAction(30, step_time))
init.add_init_action(yelname,
                     xosc.TeleportAction(xosc.LanePosition(35, 0, -4, 0)))

### create an event for the red car

r_trigcond = xosc.TimeHeadwayCondition(redname, 0.1, xosc.Rule.greaterThan)
r_trigger = xosc.EntityTrigger('redtrigger', 0.2, xosc.ConditionEdge.rising,
                               r_trigcond, egoname)
r_event = xosc.Event('first_lane_change', xosc.Priority.overwrite)
r_event.add_trigger(r_trigger)
r_event.add_action(
    'lane_change_red',
    xosc.AbsoluteLaneChangeAction(
        -4,
        xosc.TransitionDynamics(xosc.DynamicsShapes.sinusoidal,
                                xosc.DynamicsDimension.time, 4)))

## create the act for the red car
r_man = xosc.Maneuver('red_maneuver')
r_man.add_event(r_event)

r_mangr = xosc.ManeuverGroup('mangroup_red')
r_mangr.add_actor(redname)
r_mangr.add_maneuver(r_man)
Exemplo n.º 17
0
        10,
        xosc.TransitionDynamics(xosc.DynamicsShapes.step,
                                xosc.DynamicsDimension.time, 1)))

# create a router

ego_route = xosc.Route('ego_route')
ego_route.add_waypoint(xosc.LanePosition(30, 0, 1, 0),
                       xosc.RouteStrategy.fastest)
ego_route.add_waypoint(xosc.LanePosition(10, 0, -1, 1),
                       xosc.RouteStrategy.fastest)

# create action
ego_action = xosc.AssignRouteAction(ego_route)

ego_event = xosc.Event('ego_event', xosc.Priority.overwrite)
ego_event.add_action('ego_route', ego_action)
ego_event.add_trigger(
    xosc.ValueTrigger('target_start', 0, xosc.ConditionEdge.none,
                      xosc.SimulationTimeCondition(1, xosc.Rule.greaterThan)))

## create the storyboard
ego_man = xosc.Maneuver('ego_man')
ego_man.add_event(ego_event)

sb = xosc.StoryBoard(
    init,
    xosc.ValueTrigger('stop_simulation', 0, xosc.ConditionEdge.rising,
                      xosc.SimulationTimeCondition(10, xosc.Rule.greaterThan),
                      'stop'))
sb.add_maneuver(ego_man, egoname)