Created
October 23, 2023 12:16
-
-
Save sebplorenz/7404c6a0b956593fa3f10f81b6d56344 to your computer and use it in GitHub Desktop.
A very simple example script to spawn and start a vehicle in Carla simulator.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# Copyright (c) 2019 Computer Vision Center (CVC) at the Universitat Autonoma de | |
# Barcelona (UAB). | |
# | |
# This work is licensed under the terms of the MIT license. | |
# For a copy, see <https://opensource.org/licenses/MIT>. | |
import glob | |
import os | |
import sys | |
try: | |
sys.path.append(glob.glob('../carla/dist/carla-*%d.%d-%s.egg' % ( | |
sys.version_info.major, | |
sys.version_info.minor, | |
'win-amd64' if os.name == 'nt' else 'linux-x86_64'))[0]) | |
except IndexError: | |
pass | |
import carla | |
import random | |
import time | |
def main(): | |
actor_list = [] | |
# In this tutorial script, we are going to add a vehicle to the simulation | |
# and let it drive in autopilot. We will also create a camera attached to | |
# that vehicle, and save all the images generated by the camera to disk. | |
try: | |
# First of all, we need to create the client that will send the requests | |
# to the simulator. Here we'll assume the simulator is accepting | |
# requests in the localhost at port 2000. | |
client = carla.Client('localhost', 2000) | |
client.set_timeout(10.0) | |
# Once we have a client we can retrieve the world that is currently | |
# running. | |
world = client.get_world() | |
# The world contains the list blueprints that we can use for adding new | |
# actors into the simulation. | |
blueprint_library = world.get_blueprint_library() | |
# Now let's filter all the blueprints of type 'vehicle' and choose one | |
# at random. | |
bp = random.choice(blueprint_library.filter('vehicle.dodge.charger_2020')) | |
# Now we need to give an initial transform to the vehicle. We choose a | |
# random transform from the list of recommended spawn points of the map. | |
transform = world.get_map().get_spawn_points()[10] | |
# Set the spectator behind the vehicle | |
spectator = world.get_spectator() | |
spec_transform = carla.Transform( | |
location = carla.Location(x = transform.location.x - 10, y = transform.location.y, z = transform.location.z + 5), | |
rotation = transform.rotation | |
) | |
spectator.set_transform(spec_transform) | |
# So let's tell the world to spawn the vehicle. | |
vehicle = world.spawn_actor(bp, transform) | |
# It is important to note that the actors we create won't be destroyed | |
# unless we call their "destroy" function. If we fail to call "destroy" | |
# they will stay in the simulation even after we quit the Python script. | |
# For that reason, we are storing all the actors we create so we can | |
# destroy them afterwards. | |
actor_list.append(vehicle) | |
print('created %s' % vehicle.type_id) | |
# Let's put the vehicle to drive around. | |
vehicle.set_autopilot(True) | |
time.sleep(50) | |
finally: | |
print('destroying actors') | |
client.apply_batch([carla.command.DestroyActor(x) for x in actor_list]) | |
print('done.') | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment