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())
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
entities.add_scenario_object( egoname, xosc.CatalogReference('VehicleCatalog', 'car_white')) entities.add_scenario_object( redname, xosc.CatalogReference('VehicleCatalog', 'car_red')) entities.add_scenario_object( yelname, xosc.CatalogReference('VehicleCatalog', 'car_yellow')) ### create init init = xosc.Init() step_time = xosc.TransitionDynamics(xosc.DynamicsShapes.step, xosc.DynamicsDimension.time, 1) 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(
egoname = 'Ego' targetname = 'Target' entities = xosc.Entities() entities.add_scenario_object(egoname, white_veh) entities.add_scenario_object(targetname, red_veh) ### create init init = xosc.Init() step_time = xosc.TransitionDynamics(xosc.DynamicsShapes.step, xosc.DynamicsDimension.time, 1) egospeed = xosc.AbsoluteSpeedAction(30, step_time) egostart = xosc.TeleportAction(xosc.LanePosition(25, 0, -3, 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)
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
speedyname = 'speedy_gonzales' targetname = 'Target' entities = xosc.Entities() entities.add_scenario_object( egoname, xosc.CatalogReference('VehicleCatalog', 'car_white')) entities.add_scenario_object( speedyname, xosc.CatalogReference('VehicleCatalog', 'car_blue')) entities.add_scenario_object( targetname, xosc.CatalogReference('VehicleCatalog', 'car_yellow')) ### 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( 15, xosc.TransitionDynamics(xosc.DynamicsShapes.step, xosc.DynamicsDimension.time, 1))) init.add_init_action(speedyname, xosc.TeleportAction(xosc.LanePosition(10, 0, -3, 0))) init.add_init_action( speedyname, xosc.AbsoluteSpeedAction( 30, xosc.TransitionDynamics(xosc.DynamicsShapes.step, xosc.DynamicsDimension.time, 1)))
egoname = 'Ego' targetname = 'Target' entities = xosc.Entities() entities.add_scenario_object(egoname,white_veh) entities.add_scenario_object(targetname,red_veh) ### create init init = xosc.Init() step_time = xosc.TransitionDynamics(xosc.DynamicsShapes.step,xosc.DynamicsDimension.time,1) egospeed = xosc.AbsoluteSpeedAction(3,step_time) egostart = xosc.TeleportAction(xosc.LanePosition(25,0,-3,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)
paramdec = xosc.ParameterDeclarations() ## create entities egoname = 'Ego' targetname = 'Target' entities = xosc.Entities() entities.add_scenario_object(egoname,xosc.CatalogReference('VehicleCatalog','car_red')) entities.add_scenario_object(targetname,xosc.CatalogReference('VehicleCatalog','car_blue')) ### 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')
### create parameters paramdec = xosc.ParameterDeclarations() ## 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)
def test_laneposition(): pos = OSC.LanePosition(1, 2, lane_id='lane1', road_id='road1') prettyprint(pos.get_element()) pos = OSC.RelativeLanePosition(1, 2, lane_id=1, entity='Ego') prettyprint(pos.get_element())
egoname = 'Ego' speedyname = 'speedy_gonzales' targetname = 'Target' entities = xosc.Entities() entities.add_scenario_object(egoname,xosc.CatalogReference('VehicleCatalog','car_white')) entities.add_scenario_object(speedyname,xosc.CatalogReference('VehicleCatalog','car_blue')) entities.add_scenario_object(targetname,xosc.CatalogReference('VehicleCatalog','car_yellow')) ### 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(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
egoname = 'Ego' egoref = 'Egofake' targetname = 'Target' entities = xosc.Entities() entities.add_scenario_object( egoname, xosc.CatalogReference('VehicleCatalog', 'car_white')) entities.add_scenario_object( targetname, xosc.CatalogReference('VehicleCatalog', 'car_yellow')) ### create init init = xosc.Init() init.add_init_action(egoname, xosc.TeleportAction(xosc.LanePosition(10, 0, -4, 0))) init.add_init_action( egoname, xosc.AbsoluteSpeedAction( 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)))
## create entities egoname = 'Ego' targetname = 'Target' entities = xosc.Entities() entities.add_scenario_object( egoname, xosc.CatalogReference('VehicleCatalog', 'car_red')) ### create init init = xosc.Init() init.add_init_action(egoname, xosc.TeleportAction(xosc.LanePosition(50, 0, 1, 0))) init.add_init_action( egoname, xosc.AbsoluteSpeedAction( 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)