目录
- 0. 简介
- 1.Carla控制方法流程介绍
-
- 1.1 启动CARLA并连接客户端Launching CARLA and connecting the client
- 1.2 加载地图Loading a map
- 1.3 观众导航Spectator navigation
- 1.4 添加NPC Adding NPCs
0. 简介
1.Carla控制方法流程介绍
在本教程中,我们将介绍CARLA中的标准工作流程,从启动服务器和连接客户端,通过添加车辆、传感器和生成用于机器学习的训练数据。本教程旨在简化细节,并尽可能高效地完成使用CARLA生成机器学习训练数据的关键步骤。有关工作流程每个部分的更多详细信息,例如蓝图库中可用的车辆数量或可用的替代传感器类型,请查阅文本中的链接或浏览左侧菜单。
1.1 启动CARLA并连接客户端Launching CARLA and connecting the client
1.启动客户端
cd /carla/root
./CarlaUE4.sh
2.通过Python API操纵CARLA
要通过Python API操纵CARLA,我们需要通过开放端口将Python客户端连接到服务器,客户端通过客户端和世界对象控制模拟器打开Python笔记本或创建新脚本,然后在脚本或main函数的开头添加以下代码:
import carla
import random
# Connect to the client and retrieve the world object
client = carla.Client('localhost', 2000)
world = client.get_world()
这个客户机对象用于维护客户机与服务器的连接,并具有许多应用命令和加载或导出数据的功能。
该端口可以选择为任何可用端口,默认设置为2000,您还可以使用计算机的IP地址选择不同于localhost的主机。这样,CARLA服务器可以在联网机器上运行,而python客户端可以在个人计算机上运行。这对于区分用于运行CARLA模拟器的GPU和用于神经网络训练的GPU特别有用,这两者对图形硬件的要求都很高。
后续假设CARLA在默认的异步模式下运行。如果使用同步模式,以下部分中的某些代码可能无法按预期工作
1.2 加载地图Loading a map
在CARLA API中,世界对象提供了对模拟的所有元素的访问,包括地图、地图中的对象,如建筑物、交通信号灯、车辆和行人。CARLA服务器通常加载默认地图(通常是城镇10)。如果您想使用备用地图启动CARLA,请使用config.py脚本:
./config.py --map Town05
们还可以使用world对象从客户端加载地图:
client.load_world(‘Town05’)
1.3 观众导航Spectator navigation
旁观者是模拟的视图。默认情况下,当您在附加屏幕的计算机上运行CARLA服务器时,旁观者会在新窗口中打开,除非您指定-RenderOffScreen命令行选项。
旁观者有助于可视化您的模拟。使用旁观者,您可以熟悉您加载的地图,并查看您所做的任何更改的结果,例如添加车辆、更改天气、打开/关闭地图的各个层以及用于调试目的。
您可以使用鼠标控制观众视图的俯仰和偏航,并使用QWE-ASD键移动观众:
Q - move upwards (towards the top edge of the window)
Q-向上移动(朝向窗口的上边缘)
E - move downwards (towards the lower edge of the window)
E-向下移动(朝向窗口的下边缘)
W - move forwards
向前移动
S - move backwards
向后移动
A - move left
向左移动
D - move right
向右移动
左键单击并在观众窗口中上下拖动鼠标以控制俯仰,左右拖动以控制偏航。
可以通过Python API访问和操作观察者及其属性:
# Retrieve the spectator object
spectator = world.get_spectator()
# Get the location and rotation of the spectator through its transform
transform = spectator.get_transform()
location = transform.location
rotation = transform.rotation
# Set the spectator with an empty transform
spectator.set_transform(carla.Transform())
# This will set the spectator at the origin of the map, with 0 degrees
# pitch, yaw and roll - a good way to orient yourself in the map
1.4 添加NPC Adding NPCs
现在我们已经加载了地图并且服务器已启动并运行,我们现在需要用一些车辆填充我们的模拟,以模拟具有交通和其他道路使用者或非玩家角色(NPC)的真实环境。
要生成车辆,首先,我们需要从蓝图库中选择我们想要的车辆。
# Get the blueprint library and filter for the vehicle blueprints
vehicle_blueprints = world.get_blueprint_library().filter('*vehicle*')
现在我们有了蓝图,我们需要在地图上找到一些合适的点来生成我们的车辆。每个CARLA地图都提供了预定义的生成点,均匀地分布在地图上的道路上。
# Get the map's spawn points
spawn_points = world.get_map().get_spawn_points()
# Spawn 50 vehicles randomly distributed throughout the map
# for each spawn point, we choose a random vehicle from the blueprint library
for i in range(0,50)