1. 项目概述
作为一名长期从事自动驾驶仿真环境搭建的技术人员,我最近在Ubuntu 20.04系统上完成了CARLA 0.9.14的源码编译工作。整个过程涉及多个关键环节,包括系统环境配置、依赖项安装、Unreal Engine 4.26编译以及最终的CARLA构建。这次经历让我深刻体会到,即使是按照官方文档操作,在实际编译过程中也会遇到各种预料之外的问题。
CARLA作为目前最流行的开源自动驾驶仿真平台,其源码编译过程对于想要进行二次开发或深度定制的开发者而言是必经之路。不同于直接下载预编译版本,源码编译能够获得更灵活的控制权,但同时也意味着需要处理更复杂的依赖关系和编译环境问题。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备
2.1 系统基础配置
在开始编译前,确保你的Ubuntu 20.04系统已经完成以下基础配置:
- 系统更新:
bash复制sudo apt update && sudo apt upgrade -y
- 安装基础开发工具:
bash复制sudo apt install -y build-essential cmake git wget curl unzip
- 设置交换空间(建议8GB以上):
bash复制sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
注意:CARLA编译过程对内存需求较高,特别是在构建Unreal Engine时,充足的交换空间可以防止因内存不足导致的编译失败。
2.2 显卡驱动安装
CARLA需要正确的Nvidia驱动支持才能正常运行3D渲染。以下是驱动安装步骤:
- 查看推荐驱动版本:
bash复制ubuntu-drivers devices
- 安装推荐驱动(以nvidia-driver-470为例):
bash复制sudo apt install -y nvidia-driver-470
- 验证驱动安装:
bash复制nvidia-smi
如果输出中包含显卡信息,说明驱动安装成功。安装完成后需要重启系统使驱动生效。
3. 依赖项安装
3.1 系统级依赖
CARLA编译需要大量系统库支持,执行以下命令安装:
bash复制sudo apt install -y \
clang-8 lld-8 g++-7 \
libomp5 libomp-dev \
python3-dev python3-pip \
libpng-dev libtiff-dev \
libjpeg-dev libxml2-dev \
libssl-dev libffi-dev \
libsqlite3-dev \
libgtest-dev libeigen3-dev \
libboost-all-dev \
libgl1-mesa-dev \
xorg-dev \
libcurl4-openssl-dev
3.2 Python环境配置
CARLA使用Python作为主要的脚本接口,建议使用virtualenv创建隔离环境:
bash复制pip3 install virtualenv
virtualenv -p python3 carla-env
source carla-env/bin/activate
在虚拟环境中安装必要的Python包:
bash复制pip install numpy pygame pyyaml
4. Unreal Engine 4.26编译
4.1 获取Unreal Engine源码
- 注册Epic Games账号并关联GitHub账号
- 同意Unreal Engine的许可协议
- 克隆Unreal Engine源码:
bash复制git clone --depth=1 -b 4.26 https://github.com/EpicGames/UnrealEngine.git ~/UnrealEngine
4.2 编译Unreal Engine
- 进入源码目录:
bash复制cd ~/UnrealEngine
- 运行安装脚本:
bash复制./Setup.sh
- 生成项目文件:
bash复制./GenerateProjectFiles.sh
- 开始编译(此过程可能需要数小时):
bash复制make
提示:编译过程中可能会遇到各种错误,常见问题包括:
- 内存不足:增加交换空间
- 依赖缺失:根据错误提示安装相应库
- 权限问题:确保对目录有读写权限
5. CARLA 0.9.14源码编译
5.1 获取CARLA源码
bash复制git clone --depth=1 -b 0.9.14 https://github.com/carla-simulator/carla.git ~/carla
5.2 更新子模块
bash复制cd ~/carla
git submodule update --init --recursive
5.3 设置环境变量
在~/.bashrc中添加以下内容:
bash复制export UE4_ROOT=~/UnrealEngine
然后执行:
bash复制source ~/.bashrc
5.4 编译CARLA
- 运行构建脚本:
bash复制./Update.sh
- 生成UE4项目文件:
bash复制make launch
- 编译CARLA服务器:
bash复制make PythonAPI
- 编译CARLA客户端:
bash复制make package
6. 常见问题与解决方案
6.1 编译错误排查
-
Unreal Engine编译失败:
- 确保系统有足够的内存和交换空间
- 检查是否安装了所有必要的依赖项
- 尝试清理后重新编译:
make clean && make
-
CARLA编译时找不到Unreal Engine:
- 确认UE4_ROOT环境变量设置正确
- 确保Unreal Engine已成功编译
-
Python API导入错误:
- 检查Python版本是否为3.x
- 确保在虚拟环境中安装了所有必需的Python包
6.2 性能优化建议
-
在低配置机器上编译时:
- 增加交换空间到16GB以上
- 使用
make -j$(nproc)限制并行编译任务数 - 关闭不必要的应用程序释放内存
-
运行时性能优化:
- 在CARLA设置中降低渲染质量
- 使用
-quality-level=Low参数启动服务器 - 关闭不必要的传感器数据采集
7. 测试与验证
7.1 启动CARLA服务器
bash复制cd ~/carla
./CarlaUE4.sh
7.2 运行示例脚本
在新的终端中:
bash复制cd ~/carla/PythonAPI/examples
python3 automatic_control.py
如果能看到车辆在场景中自动行驶,说明安装成功。
8. 后续开发建议
-
自定义地图导入:
- 使用Unreal Editor导入OpenDRIVE格式的地图
- 通过CARLA的Python API控制交通流和天气条件
-
传感器配置:
- 修改PythonAPI/examples中的脚本添加自定义传感器
- 调整传感器参数(分辨率、频率等)以满足特定需求
-
性能监控:
- 使用CARLA提供的性能分析工具
- 监控服务器资源使用情况,优化配置参数
在实际使用过程中,我发现CARLA 0.9.14在Ubuntu 20.04上的稳定性比之前的版本有了显著提升,特别是在长时间运行时的内存管理方面。建议定期查看CARLA的GitHub仓库,获取最新的补丁和更新。
