Ubuntu 20.04下Carla 0.9.13与UE4.26环境搭建全攻略

发布时间:2026/7/30 5:28:28
Ubuntu 20.04下Carla 0.9.13与UE4.26环境搭建全攻略 1. 项目概述与核心价值如果你正在自动驾驶仿真、数字孪生或者机器人研究领域摸索那么Carla和Unreal Engine 4UE4这套组合拳对你来说绝对不陌生。Carla作为一个开源的自动驾驶仿真平台其逼真的渲染效果和灵活的传感器模拟能力很大程度上依赖于UE4这个强大的游戏引擎作为后端。然而将Carla 0.9.13与UE4.26在Ubuntu 20.04上成功配对这个过程本身就像一场硬核的“系统集成”考试充满了版本依赖、编译陷阱和环境配置的“坑”。我最近为了复现一个多智能体协同驾驶的实验不得不重新搭建这套环境。网上能找到的教程要么年代久远要么步骤跳跃照着做十有八九会卡在某个编译错误或者诡异的依赖缺失上。经过几天的折腾和无数次的虚拟机快照回滚我终于梳理出了一条相对顺畅的安装路径。这篇指南的目的就是把我踩过的坑、验证过的步骤以及关键的避雷点系统地分享出来让你能绕过那些令人头疼的障碍把宝贵的时间用在真正的算法开发和仿真测试上而不是无休止地解决环境问题。简单来说这个指南适合所有需要在Linux环境下特别是Ubuntu 20.04上搭建Carla 0.9.13仿真环境的研究者、开发者和学生。无论你是想跑通官方示例还是进行二次开发一个稳定、正确的底层环境是第一步也是最关键的一步。2. 环境准备与前置条件核查在动手下载任何安装包之前花半小时彻底检查并准备好你的系统环境能为你后续节省数小时甚至数天的排错时间。Ubuntu 20.04是一个长期支持版本社区支持好但针对Carla和UE4这种对系统组件有特定要求的软件仍需精细配置。2.1 系统与硬件要求首先确认你的硬件是否扛得住。UE4编辑器本身就是一个资源消耗大户加上Carla仿真运行时对硬件的要求不低。CPU: 建议至少是6核以上的现代处理器。编译UE4和Carla时多核心能显著加速。内存:绝对不要低于16GB32GB是舒适进行开发的推荐配置。编译UE4源码时内存消耗峰值可能超过10GB如果内存不足编译进程可能会被系统终止报出一些难以理解的错误。显卡: 必须是一块NVIDIA显卡并且需要安装专有的驱动。Carla的传感器渲染如相机、激光雷达严重依赖GPU。集成显卡或AMD显卡在Linux下无法正常运行UE4编辑器或无法获得Carla的最佳性能。我的测试环境是一块RTX 3060。磁盘空间: 准备至少150GB的可用空间。UE4引擎源码及其编译产物就会占用80-100GBCarla本身也要几十GB再加上Swap空间和后续项目文件空间多多益善。对于操作系统我强烈建议在一个物理安装的Ubuntu 20.04.6 LTS上操作而不是虚拟机VMware/VirtualBox。即便你给虚拟机分配了足够的CPU核心和内存并开启了3D加速在虚拟机内编译和运行UE4仍然会遇到无数图形驱动相关的问题成功率极低。如果你只有Windows主机可以考虑使用双系统或者寻找其他变通方案如基于Docker的Carla运行但这仅限于使用预编译的版本无法进行UE4编辑和自定义地图开发。2.2 关键系统组件安装与配置登录你的Ubuntu 20.04系统打开终端我们开始进行一系列关键的安装和配置。更新系统与安装基础工具:sudo apt update sudo apt upgrade -y sudo apt install -y wget curl git software-properties-common apt-transport-https ca-certificates gnupg lsb-release这确保了你的系统是最新的并安装了后续步骤需要的下载、版本管理等工具。安装并配置合适版本的CMake: Carla 0.9.13的编译需要CMake 3.13或更高版本但Ubuntu 20.04默认仓库的版本是3.16.3基本够用。为了保险起见我们安装一个较新的版本。sudo apt install -y cmake cmake --version # 确认版本 3.13安装Python3及Pip: Carla的Python API是其核心接口。Ubuntu 20.04默认自带Python 3.8这正好是Carla 0.9.13推荐使用的版本。我们确保pip也已安装。sudo apt install -y python3 python3-pip python3-dev注意不要随意升级系统默认的Python 3.8到更高版本如3.10这可能导致一些系统工具或后续依赖出现兼容性问题。我们使用Python虚拟环境来隔离项目依赖。安装NVIDIA显卡驱动: 这是整个流程中最容易出错的环节之一。不要使用Ubuntu“软件和更新”附加驱动里推荐的版本也不要用sudo apt install nvidia-driver-xxx这种简单命令因为版本可能不匹配或安装不完整。首先添加官方PPA仓库并安装推荐驱动:sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update ubuntu-drivers devices # 查看推荐的驱动版本假设推荐的是nvidia-driver-535。安装驱动并禁用系统自带的Nouveau驱动:sudo apt install -y nvidia-driver-535安装过程中如果提示禁用Secure Boot请根据提示设置一个密码并在重启后输入。 安装完成后必须重启系统。重启后验证:nvidia-smi如果这个命令能正确输出你的GPU信息、驱动版本和CUDA版本驱动自带一个兼容的CUDA运行时库那么驱动安装就成功了。你会看到类似“CUDA Version: 12.2”的字样这没关系UE4和Carla编译用的是我们后面专门安装的CUDA Toolkit。安装CUDA Toolkit 11.4: UE4.26官方兼容的CUDA版本是11.4。我们必须安装这个特定版本。前往NVIDIA CUDA Toolkit存档网站找到CUDA Toolkit 11.4.4的Linux - x86_64 - Ubuntu - 20.04 - runfile (local)版本。用wget下载。wget https://developer.download.nvidia.com/compute/cuda/11.4.4/local_installers/cuda_11.4.4_470.82.01_linux.run运行安装程序在安装选项中务必取消勾选Driver因为我们已经安装了更新的驱动。sudo sh cuda_11.4.4_470.82.01_linux.run在弹出的文本界面中通过回车键展开“Driver”选项按空格键取消其选中前面的[X]变成[ ]然后移动到“Install”并回车。配置环境变量。编辑~/.bashrc文件nano ~/.bashrc在文件末尾添加export PATH/usr/local/cuda-11.4/bin${PATH::${PATH}} export LD_LIBRARY_PATH/usr/local/cuda-11.4/lib64${LD_LIBRARY_PATH::${LD_LIBRARY_PATH}}保存退出后执行source ~/.bashrc。验证安装nvcc --version应显示11.4。安装其他编译依赖: UE4和Carla的编译需要一大堆开发库。sudo apt install -y build-essential clang-11 clang-11 lld-11 g-9 gcc-9 \ libxerces-c-dev libssl-dev libpng-dev libjpeg-dev libglew-dev \ libglm-dev libjsoncpp-dev libcurl4-openssl-dev libogg-dev \ libvorbis-dev libcairo2-dev libzstd-dev libbz2-dev \ libfreetype6-dev libgtk2.0-dev libgtk-3-dev libasound2-dev \ libpulse-dev libudev-dev libyaml-cpp-dev libopenal-dev \ libsndfile1-dev libboost-all-dev这里特别指定了clang-11和g-9因为UE4.26对这些编译器的版本有明确要求。3. UE4.26 引擎源码编译详解这是整个过程中最耗时、也最容易出错的环节。我们不会使用Epic Games Launcher安装的二进制版本因为Carla需要链接到UE4的特定模块必须从源码编译。3.1 获取UE4源码注册Epic Games账户并关联GitHub前往Epic Games官网注册账户并在账户设置中连接你的GitHub账户。同意许可协议访问Unreal Engine的GitHub页面点击“Sign in”用你的Epic账户登录然后同意开发者许可协议。克隆源码这需要下载约30GB的数据请确保网络稳定。git clone --depth 1 -b 4.26 https://github.com/EpicGames/UnrealEngine.git ~/UnrealEngine_4.26 cd ~/UnrealEngine_4.26使用--depth 1只克隆最新提交节省时间和空间。3.2 配置与编译环境准备UE4提供了一个配置脚本用于下载必要的二进制依赖如.NET Core、Visual Studio编译器等Linux版本。./Setup.sh这个脚本会运行相当长一段时间取决于网速它会检查并下载大约8GB的依赖文件。过程中需要你确认许可协议。完成后生成项目文件并验证配置./GenerateProjectFiles.sh这个步骤会检查你的系统环境如果前面依赖安装有遗漏这里可能会报错。3.3 执行编译这是对CPU、内存和耐心的终极考验。使用make命令进行编译并指定-j参数来利用多核CPU加速。假设你的CPU有8个逻辑核心make -j 8或者使用UE4自带的构建脚本它内部也会调用make./Engine/Build/BatchFiles/Linux/Build.sh Linux Development -j 8编译过程可能持续2到6小时。你会看到终端里飞速滚动的编译信息。在这个过程中请重点关注以下几点内存不足如果编译进程突然大量失败提示“virtual memory exhausted”或“killed”基本是内存或Swap用尽了。尝试减少-j后的数字如改为-j 4或者增加系统的Swap空间。特定模块编译错误有时会卡在某个模块比如ShaderCompileWorker。这可能是由于临时文件问题。可以尝试先清理再单独编译make ShaderCompileWorker -j 8如果还不行搜索具体的错误信息很可能是某个系统库的版本或路径问题。耐心等待只要前期依赖安装正确编译最终应该能成功。最怕的就是在编译了90%之后报错所以一次成功的编译弥足珍贵。编译成功后在~/UnrealEngine_4.26/Engine/Binaries/Linux/目录下会生成UE4Editor可执行文件。你可以运行./UE4Editor来测试编辑器是否能正常启动。第一次启动会进行着色器编译又会等待一段时间。4. Carla 0.9.13 源码编译与集成有了编译好的UE4引擎接下来就是编译Carla并将其与UE4关联起来。4.1 获取Carla源码并更新子模块git clone --depth 1 -b 0.9.13 https://github.com/carla-simulator/carla.git ~/carla cd ~/carla git submodule update --depth 1 --init同样使用--depth 1加速克隆。更新子模块是必须的它包含了RPCLib、Boost.Python等关键依赖。4.2 设置UE4引擎路径Carla的构建系统需要知道我们刚才编译的UE4引擎在哪里。通过环境变量来设置export UE4_ROOT~/UnrealEngine_4.26我建议把这句话也加到你的~/.bashrc里方便后续操作。4.3 编译Carla客户端与服务器Carla的编译分为两部分LibCarla客户端库和Unreal服务器端即UE4插件和资产。编译LibCarlacd ~/carla make PythonAPI -j 8这个命令会编译Carla的C核心库。生成用于Python绑定的carla-*.egg文件。生成的.egg文件会在PythonAPI/carla/dist/目录下。记下这个文件的完整名称例如carla-0.9.13-py3.8-linux-x86_64.egg。编译Unreal引擎端的插件和资产Carla服务器cd ~/carla make launch -j 8这个命令会将Carla插件复制到UE4_ROOT中。编译Carla的UE4插件模块。最终启动UE4编辑器并打开Carla的示例地图Town10。如果一切顺利你将看到UE4编辑器窗口打开并加载一个城市环境。这意味着Carla服务器已经成功运行起来了。4.4 配置Python环境与测试我们不应该将Carla的Python包直接安装到系统Python中。使用虚拟环境是更干净的做法。创建并激活虚拟环境cd ~ python3 -m venv carla-env source carla-env/bin/activate安装Carla的Python包 使用前面编译生成的.egg文件进行安装。你需要先安装pip的一个工具setuptools。pip install -U pip setuptools wheel pip install ~/carla/PythonAPI/carla/dist/carla-0.9.13-py3.8-linux-x86_64.egg实操心得有时直接安装.egg文件可能会因为路径问题失败。一个更稳妥的方法是先将其解压到一个目录然后用pip install -e /path/to/extracted/dir以可编辑模式安装。但直接安装.egg是最标准的方式优先尝试。安装其他依赖 Carla的Python示例脚本还需要一些额外的库。pip install pygame numpy opencv-python运行一个简单的Python客户端测试 保持UE4编辑器运行着Carla服务器即那个城市场景窗口。 在另一个终端激活虚拟环境运行一个示例脚本cd ~/carla source ~/carla-env/bin/activate python3 PythonAPI/examples/manual_control.py如果成功你会看到一个PyGame窗口里面是车辆的第三人称视角并且你可以用方向键或WASD控制车辆在城市里行驶。这标志着从Python客户端到Carla服务器的整个链路完全打通。5. 核心问题排查与解决方案实录即便严格按照上述步骤你也可能遇到一些“特色”问题。下面是我在安装过程中遇到并解决的一些典型难题。5.1 UE4编译过程中的常见错误错误The required library ‘libudev.so.0’ could not be found原因Ubuntu 20.04及更高版本中libudev库的版本是libudev.so.1但UE4的一些第三方依赖仍寻找旧版本。解决创建一个符号链接来“欺骗”系统。sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0然后重新运行./GenerateProjectFiles.sh和make。错误编译ShaderCompileWorker时卡住或失败原因可能是临时文件冲突或资源不足。解决尝试清理后单独编译make ShaderCompileWorker -j 4。如果还不行尝试完全清理UE4中间文件然后从头Setup和GenerateProjectFiles。清理命令在UE4源码根目录make clean或直接删除Engine/Intermediate/和Engine/DerivedDataCache/目录比较粗暴但有效。错误fatal error: ‘asio/ssl.hpp’ file not found或类似Boost库错误原因系统安装的Boost库版本或组件不完整。解决确保安装了libboost-all-dev。如果问题依旧Carla的make脚本其实会自己构建Boost的特定版本。确保你在编译Carla前已经成功运行了git submodule update它下载的依赖里包含了Boost源码。5.2 Carla编译与运行问题问题运行make PythonAPI时卡在Building Boost.Python...很久原因这是正常现象。Carla需要编译一个定制版本的Boost特别是Boost.Python组件这个过程非常耗时可能30分钟以上。请耐心等待只要不报错就不要中断它。问题make launch成功后UE4编辑器打开但地图是空的或者控制台有大量红色错误原因最常见的原因是Carla插件没有正确编译或UE4引擎路径不对。解决确认UE4_ROOT环境变量设置正确并且指向的是你编译成功的UE4根目录。检查~/carla/Unreal/CarlaUE4/目录下的CarlaUE4.uproject文件。用文本编辑器打开它看EngineAssociation字段的值是否是一个有效的引擎版本标识符如4.26。有时需要右键点击这个.uproject文件选择“切换UE4版本”来重新关联。在UE4编辑器的“输出日志”面板中查看具体错误信息。如果是缺少模块可以尝试在Carla目录下运行make clean然后重新make launch。问题Python客户端无法连接到服务器 (timeout错误)原因服务器没启动确保UE4编辑器中的Carla场景正在运行不是处于暂停或编辑模式。端口冲突Carla默认使用2000端口世界端口和2001端口RPC端口。检查是否有其他程序占用。防火墙Ubuntu的UFW防火墙可能阻止了连接。可以临时禁用测试sudo ufw disable测试后记得重新启用sudo ufw enable。解决在Python脚本中创建客户端时指定主机和端口client carla.Client(localhost, 2000) client.set_timeout(10.0) # 设置10秒超时5.3 性能与稳定性优化UE4编辑器运行卡顿在UE4编辑器的“编辑” - “编辑器偏好设置” - “性能”中可以关闭一些实时渲染功能如“实时渲染预览”。将编辑器视口的“显示”模式从“画质”调整为“性能”模式。确保你的NVIDIA驱动设置中性能模式为“最高性能”而不是“自适应”。Carla仿真步进慢在Carla的Python脚本中设置固定的时间步长Fixed Delta Seconds可以提高物理模拟的确定性和性能。在服务器启动时可以通过命令行参数或world.tick()时设置。减少场景中动态物体如车辆、行人的数量它们会显著增加计算负荷。6. 后续开发环境配置建议成功安装并运行Carla后为了更高效地进行开发我建议你配置好以下工具和环境。集成开发环境 (IDE):Visual Studio Code: 轻量且强大通过Python扩展和C扩展可以很好地编写Carla的Python客户端和修改C源码。配置好launch.json和tasks.json可以实现一键运行和调试脚本。CLion 或 Qt Creator: 如果你需要深度修改Carla的C源码或UE4插件这些专业的C IDE在代码导航、重构和调试方面更有优势。需要配置好CMake项目。版本控制: 你对Carla源码的任何本地修改都应该在一个独立的分支上进行。建议fork官方的Carla仓库到你的GitHub账户然后克隆你自己的fork进行开发。这样便于管理自己的修改也方便未来与上游版本同步。Docker辅助开发可选: 如果你需要纯净的编译环境或者需要在不同Carla版本间切换可以考虑使用Carla官方提供的Docker镜像来编译特定的组件如LibCarla。但这通常用于持续集成或特定部署场景对于日常开发直接在宿主机上操作更直观。文档与社区:Carla官方文档: 详细阅读特别是Python API reference和教程。Carla GitHub Issues: 遇到任何奇怪的问题先去这里搜索大概率已经有人遇到并讨论了解决方案。Unreal Engine 官方文档和论坛: 当需要深入理解UE4的Actor、Component、蓝图等概念以扩展Carla时这里是宝库。整个安装过程确实繁琐但一旦环境搭建成功它就成为了一个强大的、可定制的自动驾驶研究沙盒。你可以修改传感器模型、创建新的交通场景、测试不同的控制算法所有这一切都基于一个视觉上极其逼真的仿真平台。记住在Linux下进行这类大型开源项目的编译就是一个不断遇到问题、搜索、尝试和解决问题的过程耐心和细致的记录是你的最佳伙伴。希望这份详尽的指南能帮你扫清障碍顺利开启你的Carla仿真之旅。如果在某个步骤遇到了本指南未涵盖的诡异错误不妨休息一下理清思路从环境变量、依赖版本、日志文件这几个最可能出问题的地方重新检查一遍往往会有新的发现。