2、环境搭建:Carla仿真器的安装、系统要求、依赖配置、Python API环境与常用工具链准备

Carla仿真器作为自动驾驶全栈开发的核心验证平台,其环境搭建质量直接决定后续开发效率与实验复现的可靠性。本章将围绕系统选型、依赖管理、Python API环境构建以及工具链整合四个维度展开,帮助读者建立一套稳定、可扩展且便于调试的Carla开发环境。我们将从底层硬件与操作系统要求出发,逐步深入到具体安装步骤、环境变量配置、Python虚拟环境隔离以及常用辅助工具(如ROS Bridge、CARLA Leaderboard、Scenario Runner)的集成方法。通过本章学习,读者应能独立完成从零到可运行Carla仿真并调用Python API控制车辆与传感器的全过程。

Carla仿真环境搭建总体架构与依赖关系 硬件与操作系统层 NVIDIA GPU (≥8GB VRAM) Ubuntu 20.04/22.04 或 Win11 32GB RAM / 100GB SSD Carla Simulator 核心 CarlaUE4.sh (服务端) CarlaServer (0.9.x) 地图与资源包 (Town01-10) Python API 环境 Carla Python Wheel (0.9.x) conda/venv 虚拟环境 numpy / pygame / opencv 常用工具链与扩展组件 ROS Bridge (ROS1/ROS2) Scenario Runner (场景测试) Leaderboard (评估) Rviz / Foxglove Sumo (交通流) Docker (容器化) 硬件在环 (HIL) 与实车部署 嵌入式控制板 (STM32/ROS2节点) → 执行器 → 传感器回环 关键依赖关系: 1. GPU驱动 → CUDA → Carla渲染引擎 2. Python版本 (3.7-3.9) → Carla Wheel → API调用 3. 工具链通过TCP/UDP端口 (2000-2002) 与Carla通信

上图展示了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)查看内存容量。

硬件/软件项最低要求推荐配置备注
GPUNVIDIA GTX 1060 6GBRTX 3060 Ti / 3070 8GB+必须支持DX12/Vulkan;AMD GPU暂不支持
CPUIntel i5-8400 / AMD R5 2600i7-10700K / R7 5800X多核性能影响交通流与物理计算
内存16GB DDR432GB DDR4 3200MHz加载大型地图(如Town06)时内存占用超20GB
存储50GB HDD100GB NVMe SSDSSD可显著缩短地图加载时间
操作系统Ubuntu 18.04 / Win10Ubuntu 20.04 / 22.04 LTSLinux下性能更稳定,推荐Ubuntu
NVIDIA驱动≥470≥525需支持CUDA 11.x
风险提示:若使用笔记本双显卡(集显+独显),务必在NVIDIA控制面板中将CarlaUE4进程指定为高性能独显运行,否则Carla会默认使用集显导致严重卡顿。此外,Ubuntu下安装驱动后需重启并执行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操作类似,仅路径不同)。

  1. 下载安装包:访问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)。
  2. 解压与目录结构:将压缩包解压至无中文路径的目录,例如/opt/carla。解压后目录应包含CarlaUE4.sh、PythonAPI、Import等子目录。
  3. 安装依赖库:执行以下命令安装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
  1. 启动Carla服务端:进入Carla根目录,执行:
cd /opt/carla
./CarlaUE4.sh -quality-level=Low -carla-rpc-port=2000

启动后会出现Unreal Engine窗口,等待约30秒至1分钟,看到“Carla server started”日志即表示成功。

经验提醒:若启动时出现“libcarla.so: cannot open shared object file”错误,请检查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行为异常。

操作流程:

  1. 创建虚拟环境:
conda create -n carla_env python=3.8
conda activate carla_env
  1. 安装Carla Wheel包:进入Carla的PythonAPI/carla/dist目录,找到对应Python版本的whl文件,执行:
pip install carla-0.9.15-cp38-cp38-linux_x86_64.whl
  1. 安装常用依赖:
pip install numpy pygame opencv-python scipy matplotlib
# 若需ROS Bridge,还需安装:
pip install rospkg catkin_pkg
  1. 验证安装:运行以下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
风险提示:不要使用Python 3.10及以上版本,Carla 0.9.15的Wheel包不支持。若必须使用高版本Python,需从源码编译API,但过程复杂且容易出错。建议直接使用Python 3.8,这是Carla官方测试最充分的版本。

2.4 常用工具链准备:ROS Bridge、Scenario Runner与Docker

核心原理:工具链是连接Carla与外部自动驾驶算法栈的桥梁。ROS Bridge允许Carla与ROS/ROS2节点通信,实现传感器数据订阅与车辆控制指令下发;Scenario Runner用于定义和执行复杂交通场景测试;Docker则提供一致的运行环境,便于团队协作与部署。

判断方法:根据项目需求选择工具链。若使用ROS开发,必须安装ROS Bridge;若进行自动驾驶算法评估,需配置Leaderboard;若需复现实验环境,推荐使用Docker。

操作流程(以ROS Bridge为例):

  1. 安装ROS Noetic(Ubuntu 20.04):参考ROS官方教程,安装ros-noetic-desktop-full。
  2. 编译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
  1. 启动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是核心组件。
  • 每次环境变更后,务必运行最小化连接测试脚本验证。