深度指南:Ubuntu 20.04系统下Carla 0.9.14源码编译全流程解析

自动驾驶仿真平台Carla的源码编译一直是开发者面临的挑战之一,尤其是在较新的操作系统和Python环境下。本文将详细介绍在Ubuntu 20.04 LTS系统中从源码编译Carla 0.9.14的完整流程,特别针对Python 3.8环境配置和常见编译错误提供解决方案。

1. 环境准备与系统配置

在开始编译Carla之前,确保系统环境满足基本要求至关重要。Ubuntu 20.04默认使用较新的软件包版本,这既带来了优势也引入了新的兼容性问题。

1.1 基础依赖安装

首先更新系统并安装必要的开发工具:

sudo apt update && sudo apt upgrade -y
sudo apt install build-essential clang-8 lld-8 g++-9 cmake ninja-build \
    libomp-dev libpng-dev libjpeg-dev libtiff-dev libssl-dev \
    python3-dev python3-pip python3-setuptools python3-wheel \
    libgl1-mesa-dev libglu1-mesa-dev xorg-dev freeglut3-dev

注意:Ubuntu 20.04默认使用clang-8而非clang-6,这是与早期版本的主要区别之一

1.2 Python环境管理

Carla 0.9.14官方推荐使用Python 3.8环境。建议使用conda创建独立环境:

conda create -n carla python=3.8 -y
conda activate carla
pip install --upgrade pip
pip install numpy pygame setuptools nose2

为验证环境配置正确,执行以下检查:

  • Python版本: python --version 应显示3.8.x
  • GCC版本: gcc --version 应显示9.x.x
  • Clang版本: clang --version 应显示8.x.x

2. Unreal Engine 4.26安装与配置

Carla 0.9.14需要Unreal Engine 4.26支持,以下是详细安装步骤:

2.1 获取Unreal Engine源码

  1. 注册Epic Games账户并关联GitHub账号
  2. 接受Epic Games组织邀请
  3. 克隆指定版本的Unreal Engine仓库:
git clone -b 4.26 https://github.com/EpicGames/UnrealEngine.git ~/UnrealEngine-4.26

2.2 编译Unreal Engine

进入源码目录执行编译:

cd ~/UnrealEngine-4.26
./Setup.sh
./GenerateProjectFiles.sh
make -j$(nproc)

编译过程可能需要数小时,取决于硬件配置。完成后验证:

~/UnrealEngine-4.26/Engine/Binaries/Linux/UE4Editor

2.3 环境变量配置

将以下内容添加到 ~/.bashrc 文件末尾:

export UE4_ROOT=~/UnrealEngine-4.26
export PATH="$UE4_ROOT/Engine/Binaries/Linux:$PATH"

执行 source ~/.bashrc 使配置生效。

3. Carla 0.9.14源码编译

3.1 获取Carla源码

克隆Carla仓库并切换到0.9.14版本:

git clone https://github.com/carla-simulator/carla.git ~/carla
cd ~/carla
git checkout 0.9.14

3.2 解决依赖问题

执行以下命令安装Carla特定依赖:

sudo apt install libboost-all-dev libxerces-c-dev libproj-dev \
    libgeos++-dev libopenscenegraph-dev libtinyxml2-dev

对于Ubuntu 20.04特有的依赖冲突,可能需要手动调整:

sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-8 100
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-8 100

3.3 编译流程

Carla编译分为几个关键步骤:

  1. 基础构建

    make setup
    make PythonAPI
    
  2. 核心组件编译

    make LibCarla
    make CarlaUE4Editor
    
  3. 打包发布

    make package
    

完整编译可能需要4-8小时,建议使用 -j$(nproc) 参数并行编译。

4. 常见问题与解决方案

4.1 Python相关错误

问题1 ImportError: libboost_python38.so.1.72.0: cannot open shared object file

解决方案:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/carla/Build/boost-1.72.0-install/lib

问题2 :Python API编译失败

检查并确保:

  • conda环境已激活
  • Python版本为3.8.x
  • 已安装所有Python依赖

4.2 Unreal Engine集成问题

问题 :CarlaUE4项目无法正确加载

解决方案:

  1. 确认UE4_ROOT环境变量设置正确
  2. 检查Unreal Engine版本是否为4.26
  3. 重新生成项目文件:
    cd ~/carla/Unreal/CarlaUE4
    ../../../UnrealEngine-4.26/Engine/Build/BatchFiles/Linux/GenerateProjectFiles.sh
    

4.3 图形驱动问题

对于NVIDIA显卡用户,确保安装最新驱动:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-450

5. 运行与验证

完成编译后,可通过以下方式启动Carla:

  1. 服务器模式

    cd ~/carla/Unreal/CarlaUE4/Binaries/Linux
    ./CarlaUE4 -quality-level=Epic -carla-server
    
  2. Python客户端

    cd ~/carla/PythonAPI/examples
    python3 manual_control.py
    

关键验证点:

组件 验证方法 预期结果
服务端 查看终端输出 显示地图加载信息
客户端 运行示例脚本 可连接并控制车辆
PythonAPI 导入carla模块 无报错,功能正常

6. 性能优化建议

  1. 编译参数调整

    • 使用 make -j$(nproc) 充分利用多核CPU
    • 对于内存不足的情况,减少并行任务数
  2. 运行时优化

    ./CarlaUE4 -quality-level=Low -benchmark -fps=20
    
  3. 资源管理

    • 关闭不必要的图形效果
    • 使用 -nosound 参数禁用音频
    • 考虑使用无头模式运行

在实际项目中,我们发现使用SSD存储可以显著提升场景加载速度,特别是在处理大型地图时。另外,保持系统swap空间充足(建议至少16GB)能够避免因内存不足导致的崩溃问题。

更多推荐