Carla自动驾驶仿真平台环境搭建与性能优化指南

1. Carla仿真平台概述与环境准备

Carla作为开源的自动驾驶仿真平台,基于Unreal Engine构建,为研究人员提供了高度可配置的虚拟测试环境。在Ubuntu 20.04系统上部署Carla需要特别注意硬件配置与软件依赖的匹配性。根据实测经验,建议采用以下基础配置:

  • 硬件要求

    • GPU:NVIDIA RTX 2070及以上(显存≥6GB)
    • CPU:Intel Core i7-9700K或AMD Ryzen 7 3700X
    • 内存:32GB DDR4
    • 存储:NVMe SSD(建议预留150GB空间)
  • 系统环境

    # 验证Ubuntu版本 lsb_release -a # 输出应包含:Distributor ID: Ubuntu / Release: 20.04

关键提示:安装前务必更新系统至最新补丁,避免因内核版本不匹配导致驱动异常。

2. 基础依赖安装与配置

2.1 安装必备工具链

执行以下命令安装编译工具和基础库:

sudo apt-get update && sudo apt-get install -y \ build-essential g++-9 cmake ninja-build \ libvulkan1 python3 python3-dev python3-pip \ python3-venv autoconf wget curl rsync \ unzip git git-lfs libpng-dev libtiff5-dev \ libjpeg-dev

2.2 显卡驱动优化方案

针对NVIDIA显卡的三种安装方式对比:

安装方式命令示例适用场景稳定性
官方仓库sudo apt install nvidia-driver-535快速部署★★★☆☆
PPA源sudo add-apt-repository ppa:graphics-drivers/ppa获取新版★★★★☆
手动安装从NVIDIA官网下载.run文件定制需求★★★★★

推荐使用PPA源安装:

sudo add-apt-repository ppa:graphics-drivers/ppa -y sudo apt update && sudo apt install -y nvidia-driver-535 sudo reboot

验证驱动安装:

nvidia-smi # 应显示类似输出: # +-----------------------------------------------------------------------------+ # | NVIDIA-SMI 535.86.05 Driver Version: 535.86.05 CUDA Version: 12.2 |

3. Unreal Engine定制化编译

3.1 源码获取与准备

git clone --depth 1 -b carla https://github.com/CarlaUnreal/UnrealEngine.git ~/UnrealEngine_4.26 cd ~/UnrealEngine_4.26

3.2 编译过程实战记录

  1. 初始化编译环境:

    ./Setup.sh

    常见问题处理:

    • 若出现clang: error: unsupported option '-fuse-ld=lld',执行:
      sudo apt install lld-12 sudo ln -s /usr/bin/lld-12 /usr/bin/lld
  2. 生成项目文件:

    ./GenerateProjectFiles.sh
  3. 关键编译参数(实测有效配置):

    make CARLA_BUILD_ARGS="-j$(($(nproc)-1))"

    编译耗时约2-4小时(i7-10700K实测3小时12分)

  4. 环境变量永久化:

    echo "export UE4_ROOT=~/UnrealEngine_4.26" >> ~/.bashrc source ~/.bashrc

4. Carla本体构建与调试

4.1 源码获取与初始化

git clone -b ue4-dev https://github.com/carla-simulator/carla cd carla export CARLA_UE4_ROOT=$(pwd)

4.2 资源下载方案对比

下载方式命令优点缺点
脚本下载./Update.sh自动解压无法增量更新
Git LFSgit lfs pull版本可控需配置LFS
手动下载从官网下载tar包断点续传需手动管理

推荐使用脚本下载:

chmod +x Update.sh ./Update.sh

4.3 Python API编译技巧

  1. 创建虚拟环境:

    python3 -m venv carla-env source carla-env/bin/activate
  2. 解决依赖冲突:

    pip install numpy==1.23.5 # 必须指定版本 pip install -r PythonAPI/carla/requirements.txt
  3. 编译优化命令:

    make PythonAPI ARGS="--jobs=$(($(nproc)-1))"

5. 启动与性能调优

5.1 首次启动配置

make launch

启动后需进行关键设置:

  1. 编辑器菜单:Edit → Editor Preferences → Performance

    • 禁用Use Less CPU when in Background
    • 设置Texture Streaming Pool Size为2048MB
  2. 项目设置:Edit → Project Settings → Rendering

    • 关闭Contact Shadows
    • 调整Screen Percentage至100

5.2 实时监控方案

创建监控脚本monitor_perf.sh

#!/bin/bash watch -n 1 "nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv"

授权并运行:

chmod +x monitor_perf.sh ./monitor_perf.sh

6. 典型问题排查指南

6.1 编译错误速查表

错误现象解决方案原理分析
Failed to build UE4检查~/.bashrc中的UE4_ROOT环境变量未生效
PythonAPI编译失败确认numpy版本<2.0API接口不兼容
Editor闪退更新NVIDIA驱动至535+Vulkan兼容性问题

6.2 性能优化参数

编辑Config/DefaultEngine.ini添加:

[ConsoleVariables] r.VSync=0 r.ScreenPercentage=90 r.PostProcessAAQuality=2 r.MotionBlurQuality=0

7. 扩展应用场景

7.1 多传感器配置示例

修改PythonAPI/examples/spawn_npc.py

camera = world.spawn_actor( blueprint_library.find('sensor.camera.rgb'), carla.Transform(carla.Location(x=1.5, z=2.4)), attach_to=vehicle) lidar = world.spawn_actor( blueprint_library.find('sensor.lidar.ray_cast'), carla.Transform(carla.Location(z=2.5)), attach_to=vehicle)

7.2 自定义地图导入流程

  1. 准备OpenDRIVE文件(.xodr)
  2. 放置到Unreal/CarlaUE4/Content/Carla/Maps/OpenDrive
  3. 在编辑器中选择File → Import into Level