示例#1
0
    def _initialize_actors(self, config):

        # initialize background vehicles
        super(TrainScenario, self)._initialize_actors(config)

        # initialize background pedestrians
        town_amount = {
            'Town01': 150,
            'Town02': 120,
            'Town03': 150,
            'Town04': 200,
            'Town05': 150,
            'Town06': 200,
            'Town07': 120,
            'Town08': 200,
            'Town09': 320,
            'Town10HD': 150,
        }

        amount = town_amount[config.town] if config.town in town_amount else 0

        blueprints = CarlaDataProvider._blueprint_library.filter(
            'walker.pedestrian.*')
        spawn_points = []
        while len(spawn_points) < amount:
            spawn_point = carla.Transform()
            loc = CarlaDataProvider.get_world(
            ).get_random_location_from_navigation()
            if (loc != None):
                spawn_point.location = loc
                spawn_points.append(spawn_point)

        batch = []
        for spawn_point in spawn_points:
            walker_bp = random.choice(blueprints)
            if walker_bp.has_attribute('is_invincible'):
                walker_bp.set_attribute('is_invincible', 'false')
            batch.append(carla.command.SpawnActor(walker_bp, spawn_point))

        pedestrians = CarlaDataProvider.handle_actor_batch(batch)

        batch = []
        walker_controller_bp = CarlaDataProvider._blueprint_library.find(
            'controller.ai.walker')
        for pedestrian in pedestrians:
            batch.append(
                carla.command.SpawnActor(walker_controller_bp,
                                         carla.Transform(), pedestrian))

        pedestrian_controllers = CarlaDataProvider.handle_actor_batch(batch)
        CarlaDataProvider.get_world().set_pedestrians_cross_factor(1.0)
        for controller in pedestrian_controllers:
            controller.start()
            controller.go_to_location(CarlaDataProvider.get_world().
                                      get_random_location_from_navigation())
            controller.set_max_speed(1.2 + random.random())

        for actor in itertools.chain(pedestrians, pedestrian_controllers):
            if actor is None:
                continue

            CarlaDataProvider._carla_actor_pool[actor.id] = actor
            CarlaDataProvider.register_actor(actor)

            self.other_actors.append(actor)

        for scenario in self.list_scenarios:
            self.other_actors.extend(scenario.other_actors)
示例#2
0
    def _initialize_actors(self, config):
        """
        Set other_actors to the superset of all scenario actors
        """
        # Create the background activity of the route
        car_amounts = {
            'Town01': [0, 20, 100],
            'Town02': [0, 15, 70],
        }

        ped_amounts = {
            'Town01': [0, 50, 200],
            'Town02': [0, 50, 150],
        }

        car_amount = car_amounts[self.town_name][self.traffic_idx]
        ped_amount = ped_amounts[self.town_name][self.traffic_idx]

        new_actors = CarlaDataProvider.request_new_batch_actors(
            'vehicle.*',
            car_amount,
            carla.Transform(),
            autopilot=True,
            random_location=True,
            rolename='background')

        if new_actors is None:
            raise Exception(
                "Error: Unable to add the background activity, all spawn points were occupied"
            )

        blueprints = CarlaDataProvider._blueprint_library.filter(
            'walker.pedestrian.*')
        spawn_points = []
        while len(spawn_points) < ped_amount:
            spawn_point = carla.Transform()
            loc = CarlaDataProvider.get_world(
            ).get_random_location_from_navigation()
            if (loc != None):
                spawn_point.location = loc
                spawn_points.append(spawn_point)

        batch = []
        for spawn_point in spawn_points:
            walker_bp = random.choice(blueprints)
            if walker_bp.has_attribute('is_invincible'):
                walker_bp.set_attribute('is_invincible', 'false')
            batch.append(carla.command.SpawnActor(walker_bp, spawn_point))

        pedestrians = CarlaDataProvider.handle_actor_batch(batch)

        batch = []
        walker_controller_bp = CarlaDataProvider._blueprint_library.find(
            'controller.ai.walker')
        for pedestrian in pedestrians:
            batch.append(
                carla.command.SpawnActor(walker_controller_bp,
                                         carla.Transform(), pedestrian))

        pedestrian_controllers = CarlaDataProvider.handle_actor_batch(batch)
        CarlaDataProvider.get_world().set_pedestrians_cross_factor(1.0)
        for controller in pedestrian_controllers:
            controller.start()
            controller.go_to_location(CarlaDataProvider.get_world().
                                      get_random_location_from_navigation())
            controller.set_max_speed(1.2 + random.random())

        for actor in itertools.chain(pedestrians, pedestrian_controllers):
            if actor is None:
                continue

            CarlaDataProvider._carla_actor_pool[actor.id] = actor
            CarlaDataProvider.register_actor(actor)

            self.other_actors.append(actor)