Added generation to manual_control and generate_traffic

This commit is contained in:
Daniel Santos-Olivan 2021-07-28 17:47:15 +02:00 committed by bernat
parent 63227ba665
commit bb8e6b08c5
2 changed files with 58 additions and 3 deletions

View File

@ -29,6 +29,25 @@ import argparse
import logging
from numpy import random
def get_actor_blueprints(world, filter, generation):
bps = world.get_blueprint_library().filter(filter)
if generation == "All":
return bps
try:
int_generation = int(generation)
# Check if generation is in available generations
if int_generation in [1, 2]:
bps = [x for x in bps if int(x.get_attribute('generation')) == int_generation]
return bps
else:
print(" Warning! Actor Generation is not valid. No actor will be spawned.")
return []
except:
print(" Warning! Actor Generation is not valid. No actor will be spawned.")
return []
def main():
argparser = argparse.ArgumentParser(
description=__doc__)
@ -64,11 +83,21 @@ def main():
metavar='PATTERN',
default='vehicle.*',
help='Filter vehicle model (default: "vehicle.*")')
argparser.add_argument(
'--generationv',
metavar='G',
default='All',
help='restrict to certain vehicle generation (values: "1","2","All" - default: "2")')
argparser.add_argument(
'--filterw',
metavar='PATTERN',
default='walker.pedestrian.*',
help='Filter pedestrian type (default: "walker.pedestrian.*")')
argparser.add_argument(
'--generationw',
metavar='G',
default='2',
help='restrict to certain pedestrian generation (values: "1","2","All" - default: "2")')
argparser.add_argument(
'--tm-port',
metavar='P',
@ -152,8 +181,8 @@ def main():
settings.no_rendering_mode = True
world.apply_settings(settings)
blueprints = world.get_blueprint_library().filter(args.filterv)
blueprintsWalkers = world.get_blueprint_library().filter(args.filterw)
blueprints = get_actor_blueprints(world, args.filterv, args.generationv)
blueprintsWalkers = get_actor_blueprints(world, args.filterw, args.generationw)
if args.safe:
blueprints = [x for x in blueprints if int(x.get_attribute('number_of_wheels')) == 4]

View File

@ -156,6 +156,26 @@ def get_actor_display_name(actor, truncate=250):
name = ' '.join(actor.type_id.replace('_', '.').title().split('.')[1:])
return (name[:truncate - 1] + u'\u2026') if len(name) > truncate else name
def get_actor_blueprints(world, filter, generation):
bps = world.get_blueprint_library().filter(filter)
if generation == "All":
return bps
try:
int_generation = int(generation)
# Check if generation is in available generations
if int_generation in [1, 2]:
bps = [x for x in bps if int(x.get_attribute('generation')) == int_generation]
return bps
else:
print(" Warning! Actor Generation is not valid. No actor will be spawned.")
return []
except:
print(" Warning! Actor Generation is not valid. No actor will be spawned.")
return []
# ==============================================================================
# -- World ---------------------------------------------------------------------
# ==============================================================================
@ -184,6 +204,7 @@ class World(object):
self._weather_presets = find_weather_presets()
self._weather_index = 0
self._actor_filter = args.filter
self._actor_generation = args.generation
self._gamma = args.gamma
self.restart()
self.world.on_tick(hud.on_world_tick)
@ -213,7 +234,7 @@ class World(object):
cam_index = self.camera_manager.index if self.camera_manager is not None else 0
cam_pos_index = self.camera_manager.transform_index if self.camera_manager is not None else 0
# Get a random blueprint.
blueprint = random.choice(self.world.get_blueprint_library().filter(self._actor_filter))
blueprint = random.choice(get_actor_blueprints(self.world, self._actor_filter, self._actor_generation))
blueprint.set_attribute('role_name', self.actor_role_name)
if blueprint.has_attribute('color'):
color = random.choice(blueprint.get_attribute('color').recommended_values)
@ -1235,6 +1256,11 @@ def main():
metavar='PATTERN',
default='vehicle.*',
help='actor filter (default: "vehicle.*")')
argparser.add_argument(
'--generation',
metavar='G',
default='2',
help='restrict to certain actor generation (values: "1","2","All" - default: "2")')
argparser.add_argument(
'--rolename',
metavar='NAME',