2、环境搭建:Carla仿真器的安装、系统要求、依赖配置、Python API环境与常用工具链准备
Carla仿真器作为自动驾驶全栈开发的核心验证平台,其环境搭建质量直接决定后续开发效率与实验复现的可靠性。本章将围绕系统选型、依赖管理、Python API环境构建以及工具链整合四个维度展开,帮助读者建立一套稳定、可扩展且便于调试的Carla开发环境。我们将从底层硬件与操作系统要求出发,逐步深入到具体安装步骤、环境变量配置、Python虚拟环境隔离以及常用辅助工具(如ROS Bridge、CARLA Leaderboard、Scenario Runner)的集成方法。通过本章学习,读者应能独立完成从零到可运行Carla仿真并调用Python API控制车辆与传感器的全过程。
上图展示了Carla环境搭建的整体架构。从底层硬件与操作系统,到Carla核心仿真器,再到Python API环境与工具链,每一层都有明确的依赖关系。在实际搭建过程中,我们建议按照“先系统、后核心、再API、最后工具链”的顺序进行,这样能最大程度避免因底层缺失导致的反复返工。接下来,我们将逐一拆解每个环节的具体操作与注意事项。
2.1 系统要求与硬件选型:避免“带不动”的尴尬
核心原理:Carla基于Unreal Engine 4开发,其渲染与物理计算对GPU、CPU和内存有较高要求。不同于传统游戏,Carla需要同时处理多传感器数据流(相机、LiDAR、雷达)和复杂的交通流逻辑,因此硬件瓶颈往往出现在GPU显存和内存带宽上。若硬件配置不足,轻则帧率骤降导致仿真时间失真,重则直接崩溃或出现“黑屏”现象。
判断方法:在安装前,请先对照下表进行硬件自检。我们建议使用nvidia-smi(Linux)或任务管理器(Windows)查看GPU型号与显存,使用free -h(Linux)或系统信息(Windows)查看内存容量。
| 硬件/软件项 | 最低要求 | 推荐配置 | 备注 |
|---|---|---|---|
| GPU | NVIDIA GTX 1060 6GB | RTX 3060 Ti / 3070 8GB+ | 必须支持DX12/Vulkan;AMD GPU暂不支持 |
| CPU | Intel i5-8400 / AMD R5 2600 | i7-10700K / R7 5800X | 多核性能影响交通流与物理计算 |
| 内存 | 16GB DDR4 | 32GB DDR4 3200MHz | 加载大型地图(如Town06)时内存占用超20GB |
| 存储 | 50GB HDD | 100GB NVMe SSD | SSD可显著缩短地图加载时间 |
| 操作系统 | Ubuntu 18.04 / Win10 | Ubuntu 20.04 / 22.04 LTS | Linux下性能更稳定,推荐Ubuntu |
| NVIDIA驱动 | ≥470 | ≥525 | 需支持CUDA 11.x |
nvidia-smi验证驱动生效。
案例拆解:某学员使用一台搭载GTX 1650 4GB显存的笔记本,在加载Town05地图时频繁出现“Out of Video Memory”错误。通过nvidia-smi监控发现,Carla进程占用显存达3.8GB,接近极限。我们建议其降低画质设置(在CarlaUE4启动参数中添加-quality-level=Low),并将地图切换为Town03,问题得到解决。但需注意,低画质会影响传感器仿真精度(如相机图像分辨率),因此若进行视觉算法开发,建议升级硬件。
总结复盘:硬件选型应遵循“GPU优先、内存次之、CPU最后”的原则。对于仅做算法验证的开发者,可考虑使用云GPU服务器(如AutoDL、AWS EC2 G4dn)临时租用,但需注意网络延迟对实时控制的影响。
2.2 Carla仿真器安装:从下载到首次启动
核心原理:Carla提供两种安装方式:预编译包(推荐)和源码编译。预编译包解压即用,适合绝大多数开发场景;源码编译适合需要修改Carla引擎内部逻辑的高级用户,但编译时间长达数小时且依赖复杂。本课程以预编译包为主。
操作流程:以下以Ubuntu 20.04 + Carla 0.9.15为例(Windows操作类似,仅路径不同)。
- 下载安装包:访问Carla官方GitHub Release页面(
https://github.com/carla-simulator/carla/releases),下载Carla_0.9.15.tar.gz(约20GB)和AdditionalMaps_0.9.15.tar.gz(可选,包含Town06-10)。 - 解压与目录结构:将压缩包解压至无中文路径的目录,例如
/opt/carla。解压后目录应包含CarlaUE4.sh、PythonAPI、Import等子目录。 - 安装依赖库:执行以下命令安装Carla运行所需的系统库:
sudo apt-get update
sudo apt-get install -y libomp5 libpng16-16 libtiff5 libjpeg8-dev
# 若提示缺少libcarla,可安装:
sudo apt-get install -y libcarla-0.9.15-dev
- 启动Carla服务端:进入Carla根目录,执行:
cd /opt/carla
./CarlaUE4.sh -quality-level=Low -carla-rpc-port=2000
启动后会出现Unreal Engine窗口,等待约30秒至1分钟,看到“Carla server started”日志即表示成功。
LD_LIBRARY_PATH是否包含Carla的PythonAPI/carla/dist目录。建议在~/.bashrc中添加:
export CARLA_ROOT=/opt/carla
export PYTHONPATH=$PYTHONPATH:$CARLA_ROOT/PythonAPI/carla/dist:$CARLA_ROOT/PythonAPI/carla
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CARLA_ROOT/PythonAPI/carla/dist
常见误区:很多初学者误以为Carla是一个Python库,直接使用pip install carla安装。实际上,Carla的核心是C++编写的服务端程序,Python API只是客户端。因此必须先启动CarlaUE4.sh,再运行Python脚本连接。另外,Carla版本与Python API版本必须严格对应,例如0.9.15版本对应carla-0.9.15-cp37-cp37m-linux_x86_64.whl。
2.3 Python API环境配置:虚拟环境与依赖管理
核心原理:Carla Python API以Wheel包形式提供,支持Python 3.7-3.9。为避免与系统Python环境冲突,强烈建议使用虚拟环境(venv或conda)。虚拟环境可以隔离不同项目的依赖版本,防止因numpy或pygame版本升级导致Carla API行为异常。
操作流程:
- 创建虚拟环境:
conda create -n carla_env python=3.8
conda activate carla_env
- 安装Carla Wheel包:进入Carla的
PythonAPI/carla/dist目录,找到对应Python版本的whl文件,执行:
pip install carla-0.9.15-cp38-cp38-linux_x86_64.whl
- 安装常用依赖:
pip install numpy pygame opencv-python scipy matplotlib
# 若需ROS Bridge,还需安装:
pip install rospkg catkin_pkg
- 验证安装:运行以下Python脚本,若能成功连接并获取世界信息,则环境配置成功。
import carla
client = carla.Client('localhost', 2000)
client.set_timeout(10.0)
world = client.get_world()
print(f"Connected to Carla {world.get_map().name}")
案例拆解:某学员在安装后运行上述脚本,报错ModuleNotFoundError: No module named 'carla'。排查发现,其pip install时使用了系统Python(/usr/bin/python3),而非conda环境。通过which python确认路径后,重新激活conda环境并安装,问题解决。另一个常见错误是carla.Client连接超时,此时应检查Carla服务端是否已启动,以及端口是否被占用(可用netstat -tulpn | grep 2000查看)。
| 依赖包 | 用途 | 版本建议 |
|---|---|---|
| numpy | 数组运算、传感器数据处理 | ≥1.20 |
| pygame | 相机图像显示、键盘控制 | ≥2.0 |
| opencv-python | 图像处理、特征提取 | ≥4.5 |
| scipy | 信号滤波、空间变换 | ≥1.7 |
| matplotlib | 数据可视化、曲线绘制 | ≥3.3 |
2.4 常用工具链准备:ROS Bridge、Scenario Runner与Docker
核心原理:工具链是连接Carla与外部自动驾驶算法栈的桥梁。ROS Bridge允许Carla与ROS/ROS2节点通信,实现传感器数据订阅与车辆控制指令下发;Scenario Runner用于定义和执行复杂交通场景测试;Docker则提供一致的运行环境,便于团队协作与部署。
判断方法:根据项目需求选择工具链。若使用ROS开发,必须安装ROS Bridge;若进行自动驾驶算法评估,需配置Leaderboard;若需复现实验环境,推荐使用Docker。
操作流程(以ROS Bridge为例):
- 安装ROS Noetic(Ubuntu 20.04):参考ROS官方教程,安装ros-noetic-desktop-full。
- 编译Carla ROS Bridge:
cd /opt/carla
git clone https://github.com/carla-simulator/ros-bridge.git
cd ros-bridge
pip install -r requirements.txt
# 设置ROS环境
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 编译
catkin_make
source devel/setup.bash
- 启动Bridge:先启动Carla服务端,再运行:
roslaunch carla_ros_bridge carla_ros_bridge.launch
启动后,可通过rostopic list查看/carla/ego_vehicle/vehicle_info等话题。
案例拆解:在集成ROS Bridge时,我们遇到carla_ros_bridge节点崩溃,日志显示Segmentation fault。通过gdb回溯发现是Carla Python API与ROS的tf2库存在符号冲突。解决方案是在启动Bridge前,先设置环境变量export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6,强制使用系统标准库。此问题在Carla 0.9.13及更早版本中较为常见,升级到0.9.15后已修复。
总结复盘:工具链的安装顺序应为“先核心(Carla)、再API、后工具链”。每安装一个组件,都应进行最小化验证(如ROS Bridge启动后查看话题列表),避免一次性安装多个组件后难以定位问题。对于Docker用户,推荐使用carla-simulator/carla:0.9.15镜像,但需注意容器内无法直接使用GPU渲染,需配置NVIDIA Container Toolkit。
- 硬件选型以GPU显存为第一优先级,推荐RTX 3060 Ti以上。
- Carla安装采用预编译包,解压后需配置
LD_LIBRARY_PATH和PYTHONPATH。 - Python环境必须使用虚拟环境,且Python版本限定为3.7-3.9。
- 工具链按需安装,ROS Bridge与Scenario Runner是核心组件。
- 每次环境变更后,务必运行最小化连接测试脚本验证。