2. 环境搭建
CARLA作为一款开源的端到端自动驾驶仿真平台,其环境搭建的成败直接决定了后续开发与算法验证的效率。许多初学者在安装过程中遭遇的“黑屏”“崩溃”“版本不兼容”等问题,往往并非源于代码缺陷,而是对系统依赖链、版本匹配规则和编译机制缺乏系统性认知。本章将围绕系统要求、版本选择、依赖配置、安装流程及排障方法五个维度展开,帮助您建立一套可复现、可诊断的CARLA环境搭建方法论。
上图展示了CARLA环境搭建的整体决策链路:从系统要求评估出发,经过版本选择、依赖配置、安装执行,最终通过启动验证进入排障闭环。这张图的核心价值在于揭示了环境搭建并非线性过程,而是一个需要反复迭代的工程系统。接下来,我们将逐一拆解每个环节的具体操作与判断标准。
2.1 系统要求:硬件与操作系统的底线思维
核心原理:CARLA基于Unreal Engine 4构建,其渲染与物理计算对硬件有硬性要求。理解这些要求背后的原理,比死记硬背参数更有价值——例如,显存(VRAM)不仅影响纹理加载,更直接决定仿真中可同时渲染的车辆与行人数量;而内存(RAM)则与地图分块加载、传感器数据缓冲密切相关。
| 硬件/软件项 | 最低要求 | 推荐配置 | 说明 |
|---|---|---|---|
| 操作系统 | Ubuntu 18.04 / 20.04 | Ubuntu 20.04 / 22.04 | Windows仅支持0.9.x部分版本,且功能受限 |
| GPU | NVIDIA GTX 1060 6GB | NVIDIA RTX 2070及以上 | 必须支持Vulkan API;AMD GPU需额外编译 |
| 显存 | 6 GB | 8 GB以上 | 决定最大渲染负载 |
| 内存 | 16 GB | 32 GB | 多传感器仿真时内存消耗显著 |
| 存储 | 30 GB可用空间 | SSD 50 GB以上 | 地图数据与缓存文件占用大 |
| Python | 3.7 | 3.8 / 3.9 | CARLA Python API依赖特定版本 |
判断方法:在终端执行 nvidia-smi 查看GPU驱动与显存信息;执行 lspci | grep -i vga 确认显卡型号;执行 free -h 检查内存。若系统不满足最低要求,建议优先升级GPU驱动或增加内存,而非盲目降低仿真画质——因为CARLA的物理引擎计算不受画质设置影响。
2.2 版本选择:从0.9.x到1.x的演进逻辑
核心原理:CARLA的版本迭代遵循“功能增加—稳定性提升—架构调整”的周期。0.9.x系列是目前最稳定的长期支持版本,适合教学与算法验证;1.x系列引入了新的传感器抽象层和更高效的渲染管线,但部分旧API已被移除。选择版本的本质是权衡“生态兼容性”与“新特性需求”。
| 版本系列 | 特点 | 适用场景 | 已知问题 |
|---|---|---|---|
| 0.9.13 | 最稳定,文档丰富 | 教学、基础研究 | 不支持最新Python 3.10+ |
| 0.9.15 | 修复了部分传感器bug | 多传感器融合实验 | 需手动编译部分组件 |
| 1.0.0 | 新渲染管线,性能提升 | 大规模场景仿真 | API变动大,迁移成本高 |
| 源码版 | 最新特性,可深度定制 | 研究型开发 | 编译耗时2-4小时,依赖复杂 |
操作流程:访问CARLA官方GitHub Releases页面,下载对应版本的压缩包。注意区分“CARLA_0.9.13.tar.gz”(完整包,约20GB)和“Additional Maps”(附加地图包)。下载后校验SHA256哈希值,确保文件完整性。
2.3 依赖配置:Python环境与GPU驱动的精确匹配
核心原理:CARLA的Python API通过Cython绑定底层C++库,因此Python版本必须与预编译的 .so 文件兼容。同时,CARLA依赖NVIDIA驱动提供的Vulkan支持,驱动版本过旧会导致渲染模块崩溃。
# 推荐使用conda创建独立环境
conda create -n carla python=3.8
conda activate carla
# 安装CARLA Python API(以0.9.13为例)
pip install carla==0.9.13
# 验证安装
python -c "import carla; print(carla.__version__)"
判断方法:执行 python --version 确认Python版本;执行 nvidia-smi | grep "Driver Version" 查看驱动版本。CARLA 0.9.13要求NVIDIA驱动≥455.23.05,而1.0版本要求≥525.60.13。若驱动过旧,需从NVIDIA官网下载对应驱动包手动安装。
carla 模块冲突。
2.4 安装执行:包安装与源码编译的抉择
核心原理:预编译包安装简单快捷,但无法修改C++底层代码;源码编译提供最大灵活性,但需要完整的编译工具链。对于绝大多数课程学员,预编译包已足够;仅当需要修改传感器模型或渲染逻辑时,才考虑源码编译。
- 预编译包安装:解压后进入目录,执行
./CarlaUE4.sh -quality-level=Low启动。首次启动会生成缓存文件,耗时约1-2分钟。 - 源码编译:需安装CMake、Clang、Ninja等工具,并配置UE4环境变量。编译过程约需2-4小时,且对内存要求极高(建议32GB以上)。
- Docker方式:适用于无GPU环境或需要快速部署的场景,但性能损失约10%-15%。
~/.bashrc 中的 PYTHONPATH,便于Python脚本直接调用。
2.5 常见安装问题与排障案例
案例背景:某学员在Ubuntu 20.04上安装CARLA 0.9.13,启动后终端无报错,但窗口黑屏且CPU占用率持续100%。
分析过程:首先执行 nvidia-smi 确认驱动正常;接着检查 ~/.config/UnrealEngine/ 下的日志文件,发现Vulkan初始化失败。进一步排查发现,该学员的显卡驱动为470.86,虽满足最低要求,但系统缺少Vulkan运行时库。
解决步骤:
# 安装Vulkan运行时
sudo apt update
sudo apt install libvulkan1 vulkan-utils
# 验证Vulkan支持
vulkaninfo --summary | grep "deviceName"
结果对比:安装Vulkan库后,CARLA正常启动,帧率稳定在60FPS。复盘发现,问题根源并非驱动版本过旧,而是系统缺少Vulkan API的运行时组件——这是Ubuntu Server版或精简版系统的常见问题。
| 错误现象 | 可能原因 | 快速排查命令 |
|---|---|---|
| 启动即崩溃 | 驱动不兼容 / 缺少Vulkan | vulkaninfo --summary |
| Python API导入失败 | Python版本不匹配 | python -c "import carla" |
| 端口2000被占用 | 多实例冲突 | lsof -i:2000 |
| 地图加载缓慢 | 磁盘IO瓶颈 | iotop |
./CarlaUE4.sh -quality-level=Low 进行最小化验证,避免在复杂场景下排查基础问题。