Ubuntu 20.04部署Carla 0.9.15:自动驾驶仿真环境搭建全攻略 📅 2026/8/13 2:09:44 1. 项目概述与核心价值最近在折腾自动驾驶仿真Carla这个开源平台是绕不开的。它基于Unreal Engine提供了高保真的物理模拟和传感器数据无论是做感知算法验证、规划控制测试还是端到端学习都是个绝佳的工具。不过Carla的安装过程尤其是特定版本在特定系统上的部署堪称新手劝退指南。我这次的目标是在Ubuntu 20.04 LTS上成功部署Carla 0.9.15版本。选择这个组合是有原因的Ubuntu 20.04作为长期支持版系统稳定性和社区支持都很好而Carla 0.9.15是一个功能相对完善且文档较多的经典版本很多开源项目和论文都基于此版本进行开发生态兼容性更好。如果你也正卡在安装这一步或者被各种依赖冲突、编译错误搞得焦头烂额那这篇记录或许能帮你省下大把时间。我会把从系统准备、依赖安装、源码编译到最终运行测试的完整流程以及我踩过的每一个坑和对应的解决方案都详细地梳理出来。整个过程不仅适用于Carla 0.9.15其中关于Unreal Engine编译、Python API配置的思路对后续其他版本的安装也有参考价值。我们不只是要“安装成功”更要理解每一步在做什么为什么这么做这样出了问题你才知道从哪里下手排查。2. 环境准备与前置条件解析在开始下载任何东西之前我们必须把地基打牢。Carla的安装对系统环境有比较明确的要求盲目开始很容易中途失败。2.1 系统与硬件要求首先确认你的Ubuntu 20.04系统是干净的或者至少没有安装可能冲突的显卡驱动、CUDA版本。我强烈建议在一个新安装的系统或者虚拟机/容器中进行避免环境污染。操作系统 Ubuntu 20.04.6 LTS (Focal Fossa)。这是官方明确支持的版本。虽然其他版本也可能成功但你会面临更多未知的依赖库版本问题。GPU 这是硬性要求。Carla的渲染依赖独立的GPU并且需要足够的显存。我实测下来至少需要一块拥有4GB以上显存的NVIDIA GPU如GTX 1060 6G, RTX 2060等。使用集成显卡或者显存不足的卡要么无法启动要么体验极其卡顿。内存 建议16GB以上。在编译Unreal Engine和Carla的过程中内存消耗巨大8GB会非常吃力容易编译失败。磁盘空间 准备至少150GB的可用空间。这包括了Unreal Engine源码、Carla源码、编译产生的中间文件以及资产库。SSD能显著提升编译速度。2.2 关键依赖安装与配置依赖的安装是第一步也是最容易出错的一步。我们需要安装特定版本的软件而不是简单地apt-get install最新版。第一步更新系统并安装基础工具sudo apt-get update sudo apt-get upgrade -y sudo apt-get install wget software-properties-common apt-transport-https ca-certificates -y这确保了包管理器是最新的并安装了一些后续步骤需要的基础工具。第二步安装特定版本的CMake和PythonCarla 0.9.15对CMake版本有要求而Ubuntu 20.04默认的CMake 3.16可能不够。我们需要安装更高版本。同时确保Python 3.7或3.8已安装20.04默认是3.8这很好。# 安装Python3开发包和pip sudo apt-get install python3 python3-pip python3-dev -y # 通过官方Kitware仓库安装较新版本的CMake wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg /dev/null sudo apt-add-repository deb https://apt.kitware.com/ubuntu/ focal main sudo apt-get update sudo apt-get install cmake -y cmake --version # 确认版本在3.12以上第三步安装NVIDIA驱动和CUDA这是核心中的核心。Carla的渲染器需要NVIDIA驱动而其Python API中的一些功能如深度图生成需要CUDA。首先移除任何可能存在的旧版NVIDIA驱动如果是新系统可跳过sudo apt-get purge *nvidia* -y sudo apt-get autoremove -y安装适合的驱动。访问 NVIDIA驱动下载页面 查找适合你显卡的最新稳定版驱动。或者使用Ubuntu的additional-drivers工具安装推荐版本。这里我使用命令行安装# 添加显卡驱动PPA sudo add-apt-repository ppa:graphics-drivers/ppa -y sudo apt-get update # 安装推荐驱动通常会是最新的稳定版 sudo apt-get install nvidia-driver-535 -y # 你也可以安装特定版本如 sudo apt-get install nvidia-driver-525安装完成后必须重启系统。安装CUDA Toolkit。Carla 0.9.15官方推荐CUDA 10.1或10.2。但考虑到Ubuntu 20.04的兼容性我们安装CUDA 11.0经过实测可行。前往 NVIDIA CUDA Toolkit Archive 下载对应版本的runfile安装包。wget https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_450.51.06_linux.run sudo sh cuda_11.0.3_450.51.06_linux.run在安装界面中取消勾选驱动安装Driver因为我们已经安装了更新的驱动。只安装CUDA Toolkit即可。配置环境变量。将以下内容添加到你的~/.bashrc文件末尾export PATH/usr/local/cuda-11.0/bin${PATH::${PATH}} export LD_LIBRARY_PATH/usr/local/cuda-11.0/lib64${LD_LIBRARY_PATH::${LD_LIBRARY_PATH}}然后执行source ~/.bashrc使其生效。运行nvcc --version验证CUDA安装。注意驱动和CUDA版本的匹配是关键。如果遇到图形界面崩溃、黑屏等问题大概率是驱动问题。可以尝试使用sudo ubuntu-drivers autoinstall让系统自动选择并安装兼容驱动。3. 核心组件获取与编译Carla的安装本质上是两个部分的编译Unreal Engine 4.26Carla 0.9.15所依赖的版本和Carla源码本身。3.1 获取并编译Unreal Engine 4.26Epic Games的Unreal Engine源码需要通过GitHub仓库获取并关联Epic账户。这一步耗时最长网络要求也高。注册Epic Games账户并关联GitHub 前往 Unreal Engine官网 注册账户。在账户设置中将你的GitHub账户与之关联。这是获取源码的必要条件。克隆UE4源码 创建一个专门的工作目录例如~/carla_sim。mkdir ~/carla_sim cd ~/carla_sim git clone --depth 1 -b 4.26 https://github.com/EpicGames/UnrealEngine.git ~/UnrealEngine_4.26--depth 1只克隆最新提交节省时间和空间。这步下载量很大约1.5GB请耐心等待。编译Unreal Engine 进入目录运行编译脚本。cd ~/UnrealEngine_4.26 ./Setup.sh ./GenerateProjectFiles.sh makemake编译过程极其漫长在我的Ryzen 7 5800X 32GB内存的机器上用了近2个小时。期间CPU会满载风扇狂转这是正常的。务必保证电源稳定不要中断进程。实操心得 编译UE4是资源消耗战。如果内存不足可能会在编译过程中被系统杀死进程。可以尝试在编译前关闭所有不必要的应用程序甚至创建一个足够大的swap分区如32GB作为缓冲。命令sudo swapon --show查看现有swap使用dd和mkswap命令可以创建新的swap文件。验证编译成功 编译完成后在~/UnrealEngine_4.26/Engine/Binaries/Linux/目录下会生成UnrealEditor可执行文件。可以尝试运行./UnrealEditor如果能看到虚幻引擎的启动界面说明UE4编译成功。首次启动会进行着色器编译稍等即可。3.2 获取并编译Carla 0.9.15有了UE4这个“引擎”我们现在来安装“车”——Carla。克隆Carla仓库并切换版本cd ~/carla_sim git clone https://github.com/carla-simulator/carla.git cd carla git checkout 0.9.15 # 切换到0.9.15标签同样也可以使用git clone --branch 0.9.15 https://github.com/carla-simulator/carla.git直接克隆指定分支。获取资产和更新子模块 Carla需要额外的资源文件如车辆、行人模型、地图材质等。./Update.sh这个脚本会下载一个名为Assets的压缩包约10GB并解压到Unreal/CarlaUE4/Content/目录下。同时它也会初始化并更新Git子模块。确保网络通畅下载过程不能中断。设置环境变量 告诉Carla构建系统我们编译好的UE4在哪里。export UE4_ROOT~/UnrealEngine_4.26最好也将这行添加到你的~/.bashrc中。编译Carla客户端和服务器 Carla分为两部分服务端负责模拟世界和客户端Python API用于控制。make PythonAPI make launchmake PythonAPI 这会编译生成Python的carla包.egg文件位于PythonAPI/carla/dist/目录下。这是你后续用Python脚本与Carla交互的桥梁。make launch 这会编译Carla的UE4项目并最终启动Unreal Editor打开CarlaUE4项目。这是最关键的步骤也是错误高发区。4. 编译与运行中的疑难杂症实录理论上按照上述步骤就能成功。但现实是你大概率会遇到下面这些问题。我把它们和解决方案整理出来你可以像查字典一样对照。4.1 编译Unreal Engine时的常见错误错误The required librarylibpng12.so.0could not be found原因 Ubuntu 20.04默认使用libpng16但UE4 4.26的某些第三方库依赖旧版的libpng12。解决 手动安装libpng12。wget http://security.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1.1_amd64.deb sudo dpkg -i libpng12-0_1.2.54-1ubuntu1.1_amd64.deb错误 编译过程中clang相关错误或提示C标准版本问题原因 UE4对编译工具链版本有特定要求。解决 确保安装了足够新版本的clang和libstdc。sudo apt-get install clang-10 libstdc-10-dev -y sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-10 100 sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-10 100错误make编译到一半进程被杀死Killed原因 内存不足OOM。编译UE4是内存大户峰值可能超过16GB。解决增加物理内存。增加swap空间。创建一个16GB的swap文件sudo fallocate -l 16G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 永久生效将以下行添加到 /etc/fstab: /swapfile none swap sw 0 0尝试使用make -j 4而不是make来限制并行编译的线程数减少瞬时内存压力。4可以根据你的CPU核心数调整。4.2 编译和运行Carla时的常见错误错误运行make PythonAPI时setup.py报错提示找不到UnrealEngine目录或distutils错误原因UE4_ROOT环境变量未正确设置或者Python虚拟环境/系统Python路径有问题。解决确认echo $UE4_ROOT输出正确的路径。确保你使用的是系统Python/usr/bin/python3而不是conda等虚拟环境中的Python。Carla的构建脚本对Python环境比较敏感。可以临时退出conda环境conda deactivate。尝试手动进入目录编译cd ~/carla_sim/carla export UE4_ROOT~/UnrealEngine_4.26 cd PythonAPI/util python3 setup.py install错误运行make launch时Unreal Editor崩溃日志中出现Vulkan或RHI相关错误原因 显卡驱动不兼容或者UE4项目配置的RHI渲染硬件接口与你的系统不匹配。解决首要检查驱动 运行nvidia-smi确保驱动已加载且显卡被识别。尝试安装更低版本但更稳定的驱动例如nvidia-driver-525。强制使用OpenGL渲染 编辑Unreal/CarlaUE4/Config/DefaultEngine.ini文件在[/Script/WindowsTargetPlatform.WindowsTargetSettings]部分如果没有就添加增加一行TargetedRHIsGLSL_430这告诉UE4使用OpenGL 4.3而不是默认的Vulkan/DX12。保存后重新运行make launch。错误 Unreal Editor能打开但地图一片漆黑或者控制台窗口显示大量LogStreaming错误无法加载地图原因 资产文件Assets.tar.gz下载不完整或解压出错。./Update.sh脚本可能因网络问题中断。解决删除不完整的资产目录rm -rf ~/carla_sim/carla/Unreal/CarlaUE4/Content/Carla手动下载资产包。从Carla的 GitHub Releases 页面找到Assets.tar.gz文件大约10GB用下载工具如wget或aria2稳定下载。将下载好的Assets.tar.gz放置到carla根目录下然后手动解压tar -xzf Assets.tar.gz -C Unreal/CarlaUE4/Content/重新运行make launch。错误 能运行make launch打开编辑器但想用Python脚本连接时import carla失败原因 Python的carla包未正确安装到你的Python环境中。解决找到编译生成的.egg文件ls ~/carla_sim/carla/PythonAPI/carla/dist/你会看到一个类似carla-0.9.15-py3.8-linux-x86_64.egg的文件。使用easy_install安装它pip install可能不适用于.egg文件cd ~/carla_sim/carla/PythonAPI/carla/dist easy_install carla-0.9.15-py3.8-linux-x86_64.egg或者更推荐的方式是将其路径添加到PYTHONPATH中export PYTHONPATH$PYTHONPATH:~/carla_sim/carla/PythonAPI/carla/dist/carla-0.9.15-py3.8-linux-x86_64.egg # 同样加入~/.bashrc永久生效验证安装打开新的终端运行python3 -c import carla; print(carla.__version__)应该能打印出版本号0.9.15。5. 运行测试与基础使用指南当make launch成功Unreal Editor载入了CarlaUE4项目并且Python API也能正常导入后恭喜你最艰难的部分已经过去了。5.1 启动Carla服务器并进行第一次连接Carla采用客户端-服务器架构。我们需要先启动模拟世界服务器再用Python脚本客户端去连接并控制。在Unreal Editor中启动服务器在编辑器中点击顶部工具栏的“播放”按钮或按AltP。你会看到游戏窗口打开显示Carla小镇的俯视图。这意味着服务器已经在默认端口2000上运行了。你也可以在编辑器的“输出日志”窗口看到LogCarlaServer: Carla server started on port 2000的消息。编写一个最简单的Python客户端脚本 在任意位置创建一个test_carla.py文件。#!/usr/bin/env python3 import carla import random import time # 1. 连接到服务器 client carla.Client(localhost, 2000) client.set_timeout(10.0) # 设置连接超时 # 2. 获取世界对象 world client.get_world() # 3. 获取蓝图库和车辆蓝图 blueprint_library world.get_blueprint_library() vehicle_bp blueprint_library.filter(model3)[0] # 选择特斯拉Model3 # 4. 选择一个出生点 spawn_points world.get_map().get_spawn_points() spawn_point random.choice(spawn_points) # 5. 在世界中生成车辆 vehicle world.spawn_actor(vehicle_bp, spawn_point) print(fSpawned vehicle: {vehicle.type_id} at {spawn_point.location}) # 6. 让车辆自动驾驶一段距离简单控制 vehicle.set_autopilot(True) # 等待10秒观察车辆行驶 time.sleep(10) # 7. 清理 vehicle.destroy() print(Test finished.)运行脚本 在终端中确保PYTHONPATH已设置然后运行python3 test_carla.py如果一切正常你应该能在Unreal Editor的游戏窗口中看到一辆特斯拉Model3在某个路口生成并开始自动驾驶遵循地图上的路径点。同时在终端中看到打印的生成和结束信息。5.2 核心操作与配置要点切换地图 Carla 0.9.15默认加载Town10。你可以在编辑器中的“世界场景设置”World Settings里找到“游戏模式重载”GameMode Override选择其他地图如Town01, Town02等然后重新点击播放。传感器配置 Carla的强大之处在于丰富的传感器模拟。通过蓝图库可以添加相机sensor.camera.rgb、激光雷达sensor.lidar.ray_cast、雷达sensor.other.radar等。在Python脚本中你需要将传感器蓝图附加attach_to到车辆上并为其绑定一个回调函数来接收数据。同步模式与异步模式 默认是异步模式世界按照固定时间步长运行客户端脚本的帧率不影响模拟。同步模式下服务器会等待客户端发出“滴答”world.tick()指令才更新一帧这对于需要严格对齐传感器数据的实验至关重要。在脚本中可以通过settings world.get_settings(); settings.synchronous_mode True; world.apply_settings(settings)来开启。性能调优 如果感觉帧率低可以在编辑器播放时的游戏窗口中按键反引号打开控制台输入命令t.MaxFPS 30 限制帧率为30降低GPU负载。r.SetRes 1280x720w 降低渲染分辨率。在项目设置中可以调整阴影质量、后处理效果等来提升性能。6. 项目整合与进阶应用思路成功安装并运行基础示例只是第一步。Carla的真正价值在于作为你自动驾驶算法研发的仿真测试平台。6.1 与ROS/ROS2集成这是最常见的应用场景。Carla提供了官方的ROS/ROS2桥接包carla_ros_bridge。你可以将Carla中的车辆状态、传感器数据图像、点云发布为ROS话题同时订阅ROS控制指令油门、刹车、转向来控制Carla中的车辆。这样你就可以用ROS生态中成熟的SLAM如ORB-SLAM3、感知、规划控制节点在Carla构建的高保真虚拟环境中进行闭环测试。集成步骤通常包括安装ROS Noetic或ROS2 Foxy克隆carla_ros_bridge仓库到你的ROS工作空间并按照其README进行编译和配置。你需要仔细处理坐标变换Carla使用左手系ROS使用右手系和时间同步问题。6.2 用于强化学习或模仿学习训练Carla是训练端到端驾驶模型的理想环境。你可以使用如gym-carla或自己封装的环境将Carla的状态多摄像头图像、激光雷达点云、车辆状态作为观测Observation将车辆控制指令作为动作Action定义奖励函数如沿车道中心线行驶、避免碰撞、遵守交通灯然后使用Stable-Baselines3、Ray RLlib等框架训练强化学习智能体。Carla支持多客户端连接这意味着你可以并行运行多个环境实例大幅加速样本收集和训练过程。这里的关键是设计高效的状态表示、合理的奖励函数以及稳定的环境交互接口。6.3 构建自定义测试场景Carla的Python API允许你动态地、程序化地构建复杂场景。你可以生成交通流 使用world.get_traffic_manager()生成和管理大量AI控制的车辆设置它们的路径、速度、侵略性。控制天气与光照 通过world.get_weather()和world.set_weather()动态改变阳光、云量、雨、雾、水坑等测试算法在不同天气条件下的鲁棒性。放置行人与障碍物 从蓝图库中生成行人并为其设置移动路径。也可以生成静态障碍物如锥桶、箱子来模拟施工路段或突发事故。录制与回放 使用client.start_recorder(recording01.log)录制一段时间的模拟情况然后可以用client.replay_file(recording01.log, start10, duration5)进行精确回放用于复现bug或进行回归测试。6.4 常见工作流与脚本管理在实际研发中你可能会频繁地启动服务器、运行测试脚本、修改代码、再测试。我建议将常用命令写成脚本。start_carla.sh: 用于编译并启动Carla服务器。#!/bin/bash cd ~/carla_sim/carla export UE4_ROOT~/UnrealEngine_4.26 make launchrun_experiment.py: 你的主实验脚本负责连接服务器、设置场景、运行算法、记录数据。使用Docker 对于团队协作或确保环境一致性可以考虑使用Carla官方提供的Docker镜像。这能完美解决“在我机器上能跑”的问题。你需要安装NVIDIA Container Toolkit然后拉取镜像运行。不过Docker方式对显卡透传和性能有一定损耗且调试不如原生环境方便更适合部署和测试阶段。整个安装过程确实繁琐但一旦搭建成功你就拥有了一个功能强大、可高度定制的自动驾驶研发沙盒。从简单的传感器数据采集到复杂的多智能体协同决策测试Carla都能提供支持。遇到问题时多查看Carla官方文档、GitHub Issues以及相关的博客论坛大部分坑都已经有人踩过并提供了解决方案。保持耐心逐步排查你一定能让这个强大的仿真引擎转起来。