2、环境搭建:CARLA安装与配置、Python环境准备、依赖库安装、常见安装问题排查
CARLA作为一款开源的端到端自动驾驶仿真平台,其环境搭建的成败直接决定了后续开发与实验的效率。许多初学者在安装过程中常因版本不匹配、依赖缺失或系统配置不当而陷入困境。本章将围绕CARLA仿真平台的核心安装流程,系统讲解从系统准备、CARLA本体安装、Python环境配置到依赖库管理的完整链路,并结合真实排障案例,帮助你建立一套可复用的环境搭建方法论。
2.1 核心原理:CARLA的架构与版本兼容性
理解CARLA的架构是成功安装的前提。CARLA基于Unreal Engine 4构建,采用客户端-服务器(Client-Server)架构。服务器端负责渲染仿真环境、物理计算和传感器模拟,而客户端通过Python API与服务器通信,发送控制指令并接收传感器数据。这种架构决定了安装过程需要同时关注两个层面:一是服务器端(CARLA本体)的系统依赖,二是客户端(Python API)的库依赖。
版本兼容性是安装中最容易踩坑的环节。CARLA的Python API与服务器端必须严格匹配,例如CARLA 0.9.15版本对应Python 3.8,而0.9.13版本则支持Python 3.7。此外,CARLA对NVIDIA显卡驱动和CUDA版本有明确要求,通常需要驱动版本≥460,CUDA≥11.3。下表列出了常见版本组合的兼容性矩阵:
| CARLA版本 | 推荐Python版本 | NVIDIA驱动 | CUDA版本 | 操作系统 |
|---|---|---|---|---|
| 0.9.15 | 3.8 | ≥460 | 11.3+ | Ubuntu 20.04/22.04 |
| 0.9.13 | 3.7 | ≥450 | 11.0+ | Ubuntu 18.04/20.04 |
| 0.9.11 | 3.6 | ≥450 | 10.2+ | Ubuntu 18.04 |
2.2 操作流程:CARLA本体安装与配置
CARLA本体的安装分为预编译包安装和源码编译两种方式。对于绝大多数开发者,推荐使用预编译包,其安装流程如下:
- 系统准备:确认Ubuntu版本(20.04或22.04),更新系统包管理器:
sudo apt update && sudo apt upgrade。安装必要的系统工具:sudo apt install wget unzip build-essential。 - 显卡驱动验证:运行
nvidia-smi检查驱动是否正常。若未安装,执行sudo apt install nvidia-driver-470(版本可根据显卡型号调整),重启后再次验证。 - 下载CARLA包:从官方GitHub Release页面下载CARLA_0.9.15.tar.gz(约20GB),使用
wget或浏览器下载。下载完成后解压到指定目录:tar -xzf CARLA_0.9.15.tar.gz -C ~/carla。 - 启动测试:进入CARLA目录,运行
./CarlaUE4.sh -quality-level=Low。首次启动会加载着色器,耗时约1-2分钟。看到UE4窗口打开且无报错,说明服务器端安装成功。 - 配置环境变量:编辑
~/.bashrc,添加export CARLA_ROOT=~/carla和export PYTHONPATH=$CARLA_ROOT/PythonAPI/carla/dist/carla-0.9.15-py3.8-linux-x86_64.egg:$CARLA_ROOT/PythonAPI/carla:$PYTHONPATH,然后source ~/.bashrc。
setup.py,也可以使用pip install -e .方式安装,但需注意egg文件路径的优先级。
2.3 Python环境准备与依赖库安装
Python环境的隔离是避免依赖冲突的关键。推荐使用Anaconda创建独立的虚拟环境:
# 创建Python 3.8虚拟环境
conda create -n carla_env python=3.8
conda activate carla_env
# 安装基础依赖
pip install numpy scipy pygame opencv-python
# 安装CARLA Python API(两种方式任选其一)
# 方式一:通过egg文件(推荐,与服务器版本严格匹配)
pip install ~/carla/PythonAPI/carla/dist/carla-0.9.15-py3.8-linux-x86_64.egg
# 方式二:通过setup.py
cd ~/carla/PythonAPI/carla
python setup.py install
依赖库的版本选择需要特别注意。CARLA对numpy有严格限制,0.9.15版本要求numpy≥1.20且<1.24,因为更高版本的numpy会改变数组接口,导致传感器数据解析失败。pygame建议使用2.0+版本,opencv-python则推荐4.5+。下表列出了推荐的依赖库版本组合:
| 依赖库 | 推荐版本 | 用途 | 常见问题 |
|---|---|---|---|
| numpy | 1.21.x | 数组运算、传感器数据处理 | 版本过高导致API不兼容 |
| pygame | 2.1.0 | 可视化窗口、键盘控制 | 版本过低无法显示窗口 |
| opencv-python | 4.5.5 | 图像处理、相机数据 | 与numpy版本冲突 |
| scipy | 1.7.x | 科学计算、路径规划 | 编译依赖问题 |
pip freeze > requirements.txt记录当前环境的依赖版本,便于复现。同时,建议在虚拟环境中安装ipython和jupyter,方便交互式调试CARLA API。
2.4 案例拆解:一次完整的安装排障过程
下面通过一个真实案例,展示从问题出现到解决的完整闭环。某开发者在Ubuntu 20.04上安装CARLA 0.9.15时,遇到以下问题:
初始现象:运行./CarlaUE4.sh后,窗口一闪而过,终端输出Segmentation fault (core dumped)错误。
关键日志分析:查看~/carla/CarlaUE4/Saved/Logs/CarlaUE4.log,发现以下关键信息:
LogRHI: Error: Failed to create GPU device
LogWindows: Error: D3D11 device creation failed with error 0x80070057
LogInit: Error: GPU driver or hardware is not supported
判断过程:错误指向GPU设备创建失败,可能原因包括:显卡驱动版本过旧、显存不足、或UE4引擎与显卡不兼容。运行nvidia-smi发现驱动版本为440,低于CARLA要求的460。
实际操作步骤:
- 卸载旧驱动:
sudo apt purge nvidia-* - 添加NVIDIA官方PPA:
sudo add-apt-repository ppa:graphics-drivers/ppa - 安装新驱动:
sudo apt install nvidia-driver-470 - 重启系统,验证
nvidia-smi显示470版本 - 重新启动CARLA,成功进入UE4界面
结果对比:修复前,CARLA无法启动;修复后,启动时间约30秒,运行稳定。同时,Python API连接测试通过:
import carla
client = carla.Client('localhost', 2000)
client.set_timeout(10.0)
world = client.get_world()
print(f"Connected to CARLA version: {client.get_server_version()}")
复盘经验:CARLA对GPU驱动版本极其敏感,安装前务必检查驱动版本。此外,日志文件是排障的第一手资料,不要只看终端输出。建议在安装前使用nvidia-smi和glxinfo | grep "OpenGL version"验证图形环境。
2.5 常见误区与总结复盘
在CARLA环境搭建过程中,以下误区需要特别注意:
- 误区一:忽略版本匹配。CARLA服务器端、Python API、依赖库三者必须严格对应。例如,使用Python 3.9运行CARLA 0.9.15的egg文件会直接报错,因为egg文件是编译好的二进制,只支持Python 3.8。
- 误区二:使用系统Python直接安装。系统Python往往被多个项目共享,安装CARLA依赖可能破坏其他项目的环境。务必使用虚拟环境隔离。
- 误区三:忽视显存限制。CARLA默认使用较高画质,若显卡显存不足(<6GB),建议启动时添加
-quality-level=Low参数,或修改Engine.ini降低渲染分辨率。 - 误区四:端口冲突。CARLA默认使用2000端口,若被其他进程占用,可通过
./CarlaUE4.sh -carla-rpc-port=3000指定其他端口,Python客户端需同步修改连接端口。