Merged spawn pedestrians in spawn npc

This commit is contained in:
Manish 2019-06-14 12:40:30 +02:00 committed by Néstor Subirón
parent 0be4b79c10
commit 4e333b44bd
1 changed files with 67 additions and 1 deletions

View File

@ -47,6 +47,12 @@ def main():
default=10,
type=int,
help='number of vehicles (default: 10)')
argparser.add_argument(
'-w', '--number-of-walkers',
metavar='W',
default=50,
type=int,
help='number of walkers (default: 50)')
argparser.add_argument(
'-d', '--delay',
metavar='D',
@ -117,14 +123,74 @@ def main():
print('spawned %d vehicles, press Ctrl+C to exit.' % len(actor_list))
# Spawn Walkers
print (args.number_of_walkers)
spawn_points = []
for i in range(args.number_of_walkers):
spawn_point = carla.Transform()
spawn_point.location = world.get_random_location_from_navigation()
spawn_points.append(spawn_point)
batch = []
info = []
for spawn_point in spawn_points:
walker_bp = random.choice(world.get_blueprint_library().filter('walker.pedestrian.*'))
batch.append(SpawnActor(walker_bp, spawn_point))
# apply
results = client.apply_batch_sync(batch, True)
for i in range(len(results)):
if results[i].error:
logging.error(results[i].error)
else:
info.append({ "id":results[i].actor_id, "trans":spawn_points[i], "con":None })
# Spawn walker controller
batch = []
walker_controller_bp = world.get_blueprint_library().find('controller.ai.walker')
for i in range(len(info)):
batch.append(SpawnActor(walker_controller_bp, carla.Transform(), info[i]["id"]))
# apply
results = client.apply_batch_sync(batch, True)
for i in range(len(results)):
if results[i].error:
logging.error(results[i].error)
else:
info[i]["con"] = results[i].actor_id
# get whole list of actors (child and parents)
all_id = []
for i in range(len(info)):
all_id.append(info[i]["id"])
all_id.append(info[i]["con"])
all_actors = world.get_actors(all_id)
# initialize each controller and set target to walk to
for i in range(len(all_id)):
# check it if it is a controller or a walker
index = -1
for j in range(len(info)):
if (info[j]["con"] == all_id[i]):
index = j
break
if (index != -1):
# init
all_actors[i].start(info[index]["trans"].location)
# walk to random point
target = world.get_random_location_from_navigation()
all_actors[i].go_to_location(target)
print('spawned %d walkers, press Ctrl+C to exit.' % len(info))
while True:
world.wait_for_tick()
finally:
print('\ndestroying %d actors' % len(actor_list))
print('\ndestroying %d vehicles' % len(actor_list))
client.apply_batch([carla.command.DestroyActor(x) for x in actor_list])
print('\ndestroying %d walkers' % len(info))
client.apply_batch([carla.command.DestroyActor(x) for x in all_id])
if __name__ == '__main__':