CARLA教程-02-构建UE4与CARLA
02 构建 UE4 与 CARLA
CARLA 0.9.16 基于 UE4.26(CARLA 的 fork)。先编 UE4,再编 CARLA。整个过程较长(数小时),且本教程环境踩了 4 个坑,都配有修复。
2.1 构建 Unreal Engine 4.26
CARLA 用的是 UE4.26 的专用 fork(含 CARLA 补丁)。需要 GitHub 账号关联 Epic Games 组织。
1 | git clone --depth 1 -b carla https://github.com/CarlaUnreal/UnrealEngine.git ~/carla_project/UnrealEngine_4.26 |
⚠️ 不要用
make -j$(nproc),会失败。Clang 会自动用满核心。
验证:cd Engine/Binaries/Linux && ./UE4Editor 能打开编辑器即可。
设置环境变量(加到 ~/.bashrc / ~/.zshrc):
1 | export UE4_ROOT=~/carla_project/UnrealEngine_4.26 |
2.2 克隆 CARLA 0.9.16
1 | git clone -b 0.9.16 https://github.com/carla-simulator/carla.git ~/carla_project/carla |
下载 CARLA 资源(地图/车辆/行人,约几 GB):
1 | ./Update.sh |
2.3 ⚠️ 构建 CARLA 前的 4 处修复
当前环境编 0.9.16 会踩 4 个坑,需先改源码/脚本。升级或换分支时注意保留这些修改。
修复 1:libpng 下载地址 404
Util/BuildTools/Setup.sh 里 libpng 的 sourceforge URL 已失效(404)。改成可用镜像:
1 | - LIBPNG_REPO=https://sourceforge.net/projects/libpng/files/libpng16/${LIBPNG_VERSION}/libpng-${LIBPNG_VERSION}.tar.xz |
修复 2:PROJ 头文件 std::int64_t 找不到
PROJ 7.2.1 的 Build/proj-src/src/proj_json_streaming_writer.hpp 用了 std::int64_t 却没 #include <cstdint>,新 libstdc++ 下报错。
在该文件 #include <string> 后加一行:
1 |
同时在 Util/BuildTools/Setup.sh 的 PROJ 段加守卫,避免重编时重新解压 tarball 覆盖补丁:
1 | if [[ -d ${PROJ_SRC_DIR} ]] ; then |
⚠️
make clean会删Build/,PROJ 源码重新解压后补丁会丢失,需重新加#include <cstdint>。
修复 3:StreetMap 插件 git fetch 失败
Util/BuildTools/BuildUE4Plugins.sh 每次构建会 git fetch StreetMap。若 GitHub 不可达会卡住。StreetMap 已在正确 commit,fetch 是空操作,关掉即可:
1 | - GIT_PULL=true |
修复 4:MDL/SimReady 禁用
构建会下载 MDL SDK(NVIDIA packman),但该版本已下架,导致 mi/mdl_sdk.h 缺失。MDL/SimReady 转换器用于导出 USD/MDL(Omniverse 用),与跑仿真无关,构建时加 --no-simready 跳过。
2.4 编译 Python API 客户端
1 | cd ~/carla_project/carla |
生成的 wheel 在 PythonAPI/carla/dist/,装到 conda 的 carla 环境:
1 | conda activate carla |
2.5 编译并启动服务端
1 | make launch ARGS="--no-simready" |
首次启动会编译着色器(较慢),编辑器打开后按 Play 开始仿真。用示例脚本测试:
1 | conda activate carla |
能看到画面里有车和人,说明 CARLA 构建成功。
日常没改代码时,可直接跑 editor 二进制启动(跳过 make 检查,更快):
1
2 ~/carla_project/UnrealEngine_4.26/Engine/Binaries/Linux/UE4Editor \
~/carla_project/carla/Unreal/CarlaUE4/CarlaUE4.uproject -vulkan