diff --git a/carla_real_traffic_scenarios/artificial_lane_change/lane_change_scenario.py b/carla_real_traffic_scenarios/artificial_lane_change/lane_change_scenario.py index 10e8190..2ee38ee 100644 --- a/carla_real_traffic_scenarios/artificial_lane_change/lane_change_scenario.py +++ b/carla_real_traffic_scenarios/artificial_lane_change/lane_change_scenario.py @@ -115,6 +115,7 @@ def _spawn_env_vehicles(self, n: int): blueprints = self._world.get_blueprint_library().filter('vehicle.*') blueprints = [b for b in blueprints if int(b.get_attribute('number_of_wheels')) == 4] spawn_points = self._world_map.get_spawn_points() + max_ticks = 4 def _get_env_vehicles(): return [ @@ -122,6 +123,14 @@ def _get_env_vehicles(): if v.attributes.get('role_name') != 'hero' and v.is_alive ] + def _wait_for_env_vehicles(total_number, max_ticks): + env_vehicles = _get_env_vehicles() + while len(env_vehicles) < total_number and max_ticks > 0: + self._world.tick() + max_ticks -= 1 + env_vehicles = _get_env_vehicles() + return env_vehicles + env_vehicles = _get_env_vehicles() missing_vehicles = n - len(env_vehicles) while missing_vehicles: @@ -131,7 +140,7 @@ def _get_env_vehicles(): random.sample(spawn_points, k=missing_vehicles)) ] self._client.apply_batch_sync(cmds, do_tick=True) - env_vehicles = _get_env_vehicles() + env_vehicles = _wait_for_env_vehicles(n, max_ticks) missing_vehicles = n - len(env_vehicles) return env_vehicles