1. Carla概述与环境搭建

大家好,欢迎来到《Carla交通场景搭建与脚本控制》的第一章。

说实话,我第一次接触Carla的时候,也被它的安装流程折腾过。但别担心,我会把那些坑都指出来。这一章,咱们就把Carla跑起来。

1.1 Carla仿真器简介

Carla是什么?简单说,它是一个开源的自动驾驶仿真平台。专门用来测试感知、规划、控制算法。

我个人的理解是——它就像一个虚拟的驾驶考场。你可以在里面放车、放人、放红绿灯,甚至模拟下雨和夜晚。所有传感器数据,比如摄像头、激光雷达、GPS,它都能模拟出来。

为什么选Carla?因为它免费、开源,而且社区活跃。我见过不少团队用它做算法验证,效果不错。

1.2 应用场景

Carla能做什么?我列几个常见的:

  • 算法验证:比如车道保持、避障、路径规划。在仿真里跑通了,再上车实测。
  • 传感器仿真:测试不同传感器配置对感知效果的影响。
  • 极端场景测试:比如突然冲出来的行人、大雾天气。这些在真实道路很难复现。
  • 多车协同:模拟多辆自动驾驶车在交叉口的交互。

我记得有个项目,客户需要在雨天测试感知算法。真实道路测试成本太高,最后全在Carla里搞定了。嗯,这就是仿真的价值。

1.3 系统要求

跑Carla对硬件有要求。我直接给个表格,方便你对照:

组件 最低配置 推荐配置
操作系统 Windows 10 / Ubuntu 18.04 Windows 11 / Ubuntu 20.04
CPU Intel i5 4代 / AMD Ryzen 3 Intel i7 8代 / AMD Ryzen 5
GPU NVIDIA GTX 960 (4GB) NVIDIA RTX 2060 (6GB)
内存 8GB 16GB
存储 20GB 空闲 50GB SSD
注意:如果你用集成显卡,基本跑不动。Carla依赖CUDA,N卡是首选。我曾经试过用A卡,折腾了半天还是放弃了。

1.4 安装与配置

安装分Windows和Linux。我两种都装过,分别说说。

Windows安装

  1. 去Carla官网下载预编译包(.zip文件)。
  2. 解压到纯英文路径。切记,不要有中文!我见过有人放桌面,结果路径带中文名,启动报错。
  3. 安装Python 3.7或3.8。Carla对Python版本有要求,别用最新的3.11。
  4. 安装依赖库:pip install numpy pygame

Linux安装

  1. 下载Linux版压缩包。
  2. 解压后,进入Carla文件夹。
  3. 运行 ./CarlaUE4.sh 启动。
  4. 如果报错缺少库,安装一下:sudo apt install libomp5
小技巧:Linux下我习惯把Carla路径加到.bashrc里,方便随时启动。比如:export CARLA_ROOT=/home/user/Carla

1.5 启动Carla服务器

Carla采用客户端-服务器架构。服务器负责渲染和物理模拟,客户端通过Python API控制。

启动服务器很简单:

  • Windows:双击 CarlaUE4.exe
  • Linux:终端运行 ./CarlaUE4.sh

你会看到一个3D城市窗口弹出来。嗯,这就说明服务器跑起来了。

常用启动参数:

# 窗口模式启动
./CarlaUE4.sh -windowed

# 指定分辨率
./CarlaUE4.sh -ResX=800 -ResY=600

# 无渲染模式(省资源)
./CarlaUE4.sh -RenderOffScreen

我个人建议,调试阶段用窗口模式。正式跑批量测试时,用无渲染模式,能省不少显存。

1.6 客户端连接测试

服务器启动后,我们来写个简单的客户端脚本,测试连接是否正常。

import carla
import random

# 连接Carla服务器
client = carla.Client('localhost', 2000)
client.set_timeout(10.0)

# 获取世界对象
world = client.get_world()

# 获取所有蓝图
blueprint_library = world.get_blueprint_library()

# 选择一辆车
vehicle_bp = blueprint_library.filter('model3')[0]

# 获取一个生成点
spawn_point = random.choice(world.get_map().get_spawn_points())

# 生成车辆
vehicle = world.spawn_actor(vehicle_bp, spawn_point)

print("车辆生成成功!")
print(f"车辆位置: {vehicle.get_location()}")

# 让车辆动起来
vehicle.set_autopilot(True)

# 等待5秒
import time
time.sleep(5)

# 清理
vehicle.destroy()
print("测试完成。")

运行这段代码,如果看到控制台打印出车辆位置,说明连接成功。

避坑指南:我曾经遇到过客户端连不上服务器的情况。排查步骤:
  • 检查服务器是否真的启动了(看窗口有没有弹出来)。
  • 检查端口号,默认是2000,别搞错。
  • 检查防火墙,有时候会拦截Carla的通信。

1.7 本章小结

这一章我们做了几件事:

  • 了解了Carla是什么、能干什么。
  • 确认了你的电脑能不能跑。
  • 完成了安装和配置。
  • 启动了服务器,并写了一个客户端测试脚本。

说实话,环境搭建是最枯燥的部分。但这一步走稳了,后面学起来就顺畅了。下一章,我们会深入Carla的世界,学习如何控制车辆和传感器。

嗯,咱们下章见。