diff --git a/PythonAPI/util/performance_benchmark.py b/PythonAPI/util/performance_benchmark.py index 56eb7062c..032f1f9a9 100755 --- a/PythonAPI/util/performance_benchmark.py +++ b/PythonAPI/util/performance_benchmark.py @@ -280,53 +280,55 @@ def create_environment(world, sensors, n_vehicles, n_walkers, spawn_points, clie # some settings percentagePedestriansRunning = 0.0 # how many pedestrians will run percentagePedestriansCrossing = 0.0 # how many pedestrians will walk through the road - # 1. take all the random locations to spawn - spawn_points = [] - for i in range(n_walkers): - spawn_point = carla.Transform() - loc = world.get_random_location_from_navigation() - if (loc != None): - spawn_point.location = loc - spawn_points.append(spawn_point) - # 2. we spawn the walker object - batch = [] - walker_speed = [] - for spawn_point in spawn_points: - # set as not invincible - if walker_bp.has_attribute('is_invincible'): - walker_bp.set_attribute('is_invincible', 'false') - # set the max speed - if walker_bp.has_attribute('speed'): - # walking - walker_speed.append(walker_bp.get_attribute('speed').recommended_values[1]) - else: - print("Walker has no speed") - walker_speed.append(0.0) - batch.append(SpawnActor(walker_bp, spawn_point)) - results = client.apply_batch_sync(batch, True) - walker_speed2 = [] - for i in range(len(results)): - if results[i].error: - logging.error(results[i].error) - else: - walkers_list.append({"id": results[i].actor_id}) - walker_speed2.append(walker_speed[i]) - walker_speed = walker_speed2 - # 3. we spawn the walker controller - batch = [] - walker_controller_bp = world.get_blueprint_library().find('controller.ai.walker') - for i in range(len(walkers_list)): - batch.append(SpawnActor(walker_controller_bp, carla.Transform(), walkers_list[i]["id"])) - results = client.apply_batch_sync(batch, True) - for i in range(len(results)): - if results[i].error: - logging.error(results[i].error) - else: - walkers_list[i]["con"] = results[i].actor_id - # 4. we put altogether the walkers and controllers id to get the objects from their id - for i in range(len(walkers_list)): - all_id.append(walkers_list[i]["con"]) - all_id.append(walkers_list[i]["id"]) + if n_walkers > 0: + # 1. take all the random locations to spawn + spawn_points = [] + for i in range(n_walkers): + spawn_point = carla.Transform() + loc = world.get_random_location_from_navigation() + if (loc != None): + spawn_point.location = loc + spawn_points.append(spawn_point) + # 2. we spawn the walker object + batch = [] + walker_speed = [] + for spawn_point in spawn_points: + # set as not invincible + if walker_bp.has_attribute('is_invincible'): + walker_bp.set_attribute('is_invincible', 'false') + # set the max speed + if walker_bp.has_attribute('speed'): + # walking + walker_speed.append(walker_bp.get_attribute('speed').recommended_values[1]) + else: + print("Walker has no speed") + walker_speed.append(0.0) + batch.append(SpawnActor(walker_bp, spawn_point)) + results = client.apply_batch_sync(batch, True) + walker_speed2 = [] + for i in range(len(results)): + if results[i].error: + logging.error(results[i].error) + else: + walkers_list.append({"id": results[i].actor_id}) + walker_speed2.append(walker_speed[i]) + walker_speed = walker_speed2 + # 3. we spawn the walker controller + batch = [] + walker_controller_bp = world.get_blueprint_library().find('controller.ai.walker') + for i in range(len(walkers_list)): + batch.append(SpawnActor(walker_controller_bp, carla.Transform(), walkers_list[i]["id"])) + results = client.apply_batch_sync(batch, True) + for i in range(len(results)): + if results[i].error: + logging.error(results[i].error) + else: + walkers_list[i]["con"] = results[i].actor_id + # 4. we put altogether the walkers and controllers id to get the objects from their id + for i in range(len(walkers_list)): + all_id.append(walkers_list[i]["con"]) + all_id.append(walkers_list[i]["id"]) + all_actors = world.get_actors(all_id) # ensures client has received the last transform of the walkers we have just created @@ -507,7 +509,7 @@ def main(args): try: client = carla.Client(args.host, int(args.port)) - client.set_timeout(60.0) + client.set_timeout(150.0) pygame.init() records = {} @@ -521,6 +523,7 @@ def main(args): for town in maps: world = client.load_world(town) + time.sleep(5) # set to async mode set_world_settings(world)