MCPcopy Create free account
hub / github.com/AdaCompNUS/summit / do_spawn

Function do_spawn

PythonAPI/examples/gamma_crowd.py:665–791  ·  view source on GitHub ↗
(c)

Source from the content-addressed store, hash-verified

663
664''' ========== MAIN LOGIC FUNCTIONS ========== '''
665def do_spawn(c):
666
667 c.crowd_service.acquire_new_cars()
668 spawn_car = c.crowd_service.spawn_car
669 c.crowd_service.release_new_cars()
670
671 c.crowd_service.acquire_new_bikes()
672 spawn_bike = c.crowd_service.spawn_bike
673 c.crowd_service.release_new_bikes()
674
675 c.crowd_service.acquire_new_pedestrians()
676 spawn_pedestrian = c.crowd_service.spawn_pedestrian
677 c.crowd_service.release_new_pedestrians()
678
679 if not spawn_car and not spawn_bike and not spawn_pedestrian:
680 return
681
682 # Find car spawn point.
683 if spawn_car:
684 aabb_occupancy = carla.OccupancyMap() if c.forbidden_bounds_occupancy is None else c.forbidden_bounds_occupancy
685 for actor in c.world.get_actors():
686 if isinstance(actor, carla.Vehicle) or isinstance(actor, carla.Walker):
687 aabb = get_aabb(actor)
688 aabb_occupancy = aabb_occupancy.union(carla.OccupancyMap(
689 carla.Vector2D(aabb.bounds_min.x - c.args.clearance_car, aabb.bounds_min.y - c.args.clearance_car),
690 carla.Vector2D(aabb.bounds_max.x + c.args.clearance_car, aabb.bounds_max.y + c.args.clearance_car)))
691
692 for _ in range(SPAWN_DESTROY_REPETITIONS):
693 spawn_segments = c.sumo_network_spawn_segments.difference(aabb_occupancy)
694 spawn_segments.seed_rand(c.rng.getrandbits(32))
695
696 path = SumoNetworkAgentPath.rand_path(c.sumo_network, PATH_MIN_POINTS, PATH_INTERVAL, spawn_segments, rng=c.rng)
697 position = path.get_position(c.sumo_network, 0)
698 trans = carla.Transform()
699 trans.location.x = position.x
700 trans.location.y = position.y
701 trans.location.z = 0.2
702 trans.rotation.yaw = path.get_yaw(c.sumo_network, 0)
703
704 actor = c.world.try_spawn_actor(c.rng.choice(c.car_blueprints), trans)
705 if actor:
706 actor.set_collision_enabled(c.args.collision)
707 c.world.wait_for_tick(1.0) # For actor to update pos and bounds, and for collision to apply.
708 c.crowd_service.acquire_new_cars()
709 c.crowd_service.append_new_cars((
710 actor.id,
711 [p for p in path.route_points], # Convert to python list.
712 get_steer_angle_range(actor)))
713 c.crowd_service.release_new_cars()
714 aabb = get_aabb(actor)
715 aabb_occupancy = aabb_occupancy.union(carla.OccupancyMap(
716 carla.Vector2D(aabb.bounds_min.x - c.args.clearance_car, aabb.bounds_min.y - c.args.clearance_car),
717 carla.Vector2D(aabb.bounds_max.x + c.args.clearance_car, aabb.bounds_max.y + c.args.clearance_car)))
718
719
720 # Find bike spawn point.
721 if spawn_bike:
722 aabb_occupancy = carla.OccupancyMap() if c.forbidden_bounds_occupancy is None else c.forbidden_bounds_occupancy

Callers 1

spawn_destroy_loopFunction · 0.85

Calls 15

get_aabbFunction · 0.85
get_steer_angle_rangeFunction · 0.85
acquire_new_carsMethod · 0.80
release_new_carsMethod · 0.80
acquire_new_bikesMethod · 0.80
release_new_bikesMethod · 0.80
OccupancyMapMethod · 0.80
Vector2DMethod · 0.80
append_new_carsMethod · 0.80
append_new_bikesMethod · 0.80

Tested by

no test coverage detected