Ubuntu 18.04下基于RoadRunner与UE4构建高性能CARLA仿真地图全流程

📅 2026/7/16 1:34:56 👁️ 阅读次数 📝 编程学习
Ubuntu 18.04下基于RoadRunner与UE4构建高性能CARLA仿真地图全流程

1. 项目概述与核心价值

如果你正在自动驾驶仿真领域摸爬滚打,尤其是在CARLA平台上折腾自定义地图,那么“UE4崩溃”和“性能瓶颈”这两个词,大概率是你的老朋友了。我经历过无数次在Ubuntu终端前,看着编译进度条走到99%时,UE4编辑器突然闪退,或者辛辛苦苦导入的地图在仿真时帧率暴跌到个位数,那种感觉确实让人想砸键盘。这个项目,就是针对这个痛点的一次系统性梳理和实战。它的核心目标非常明确:在Ubuntu 18.04这个CARLA 0.9.10官方推荐的环境下,利用RoadRunner 2022b这款专业工具,从头到尾制作一张既能保证视觉保真度,又能满足实时仿真高性能要求的地图,并最终无缝集成到CARLA中。

为什么是这套组合?CARLA 0.9.10虽然相对旧一些,但其生态稳定,资料丰富,是很多团队和研究的起点。Ubuntu 18.04是它的“官配”系统,兼容性最有保障。而RoadRunner作为MathWorks旗下的专业自动驾驶仿真场景设计工具,它最大的优势在于工作流的高度集成化——你可以在一个软件里完成道路网络设计、交通标志放置、建筑和植被的布设,并且它能直接导出为UE4引擎完美兼容的资产包,这比用传统建模软件(如Blender、3ds Max)导出FBX再手动导入UE4进行材质、碰撞体处理要高效、规范得多,也从根本上减少了因资产不规范导致的崩溃风险。

简单来说,这个过程就是把专业的地图制作流程(RoadRunner)和强大的游戏引擎(UE4),通过一套标准的“翻译”规则(导出插件和编译脚本),打包成一个自动驾驶仿真引擎(CARLA)能直接“食用”的高性能地图。最终,你得到的不再是一个容易崩溃的“玩具”,而是一个可以在上面稳定运行感知算法、规划控制模块测试的“仿真试验场”。接下来,我会拆解每一个环节,把其中容易踩坑的细节和提升性能的秘诀都摊开来讲。

2. 环境准备:构建稳固的基石

在开始任何创造性工作之前,搭建一个稳定、兼容的基础环境是避免后续无数诡异错误的前提。Ubuntu 18.04、UE4、CARLA、RoadRunner,每一个都是“大块头”,对系统依赖有着苛刻的要求。

2.1 系统基础环境配置

首先,确保你的Ubuntu 18.04系统是最新状态。打开终端,执行标准的更新升级命令是第一步:

sudo apt update sudo apt upgrade -y

接下来,需要安装一系列编译工具和基础库。CARLA和UE4的编译严重依赖这些工具链。

sudo apt install -y build-essential clang-8 lld-8 g++-7 cmake ninja-build libvulkan1 python3-pip python3-dev python3-setuptools libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync

这里有几个关键点:

  • clang-8和lld-8:UE4在Linux上推荐使用Clang进行编译,版本8是与UE4 4.24(CARLA 0.9.10的基础)兼容性较好的一个选择。
  • g++-7:一些底层库可能仍需要GCC编译,安装7版本作为备用。
  • ninja-build:比传统的make更快的构建系统,UE4和CARLA都支持用它来加速编译。

一个重要避坑点:Ubuntu 18.04默认的Python3是3.6版本,这通常没问题。但请务必使用python3pip3命令,避免与系统可能存在的Python 2产生冲突。不要随意升级系统默认的Python 3.6到更高版本,这可能导致一些系统工具失效。

显卡驱动是性能的命门。对于UE4编辑器和最终的CARLA仿真,NVIDIA驱动是必须的。建议通过系统“软件和更新”附加驱动选项卡,选择最新的专有驱动(例如nvidia-driver-470或更高,但需注意与CUDA版本的兼容性)。安装后务必重启。

2.2 UE4引擎源码获取与编译

CARLA 0.9.10构建在Unreal Engine 4.24版本之上。我们不能使用Epic Games启动器安装的二进制版本,必须使用源码进行编译,因为CARLA需要修改引擎源码并重新编译。

  1. 注册Epic账户并关联GitHub:前往Unreal Engine官网,用Epic账户登录,并按照指引将其与你的GitHub账户关联。这是获取源码的必经之路。
  2. 克隆UE4源码:在你的工作目录(例如~/Development)下,克隆指定版本的引擎代码。这是一个巨大的仓库,请耐心等待。
    git clone --depth 1 -b 4.24 https://github.com/EpicGames/UnrealEngine.git ~/UnrealEngine_4.24
    使用--depth 1只克隆最新提交,可以节省大量时间和磁盘空间。
  3. 运行安装脚本:进入目录,运行提供的安装脚本,它会下载必要的二进制组件。
    cd ~/UnrealEngine_4.24 ./Setup.sh
  4. 编译引擎:这是最耗时的一步,可能需要数小时,取决于你的CPU核心数和性能。
    ./GenerateProjectFiles.sh make

    注意:编译过程内存消耗极大,建议系统拥有至少16GB物理内存,并准备足够的交换空间(Swap)。如果编译过程中因内存不足被杀死(Killed),你需要增加交换空间。可以创建一个8GB的交换文件:

    sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 为了永久生效,将 /swapfile swap swap defaults 0 0 添加到 /etc/fstab
  5. 验证安装:编译成功后,在~/UnrealEngine_4.24/Engine/Binaries/Linux/下会生成UE4Editor可执行文件。可以尝试运行它,能打开编辑器界面即表示成功。

2.3 CARLA 0.9.10 源码获取与依赖安装

CARLA的安装同样基于源码。

  1. 克隆CARLA仓库
    git clone https://github.com/carla-simulator/carla.git ~/carla cd ~/carla git checkout 0.9.10 # 切换到0.9.10版本标签
  2. 获取资产和更新子模块:CARLA需要额外的资源文件(如车辆模型、材质)。
    ./Update.sh
    Update.sh脚本会下载大约10GB的预编译资产,并初始化子模块。请确保网络通畅。
  3. 安装Python依赖:CARLA提供了丰富的Python API,需要安装相关依赖。
    pip3 install --user -r PythonAPI/requirements.txt

2.4 RoadRunner 2022b 的安装与配置

RoadRunner是商业软件,你需要从MathWorks官网获取安装包(通常是一个.tar.gz文件)和有效的许可证。

  1. 解压与安装
    tar -xzf roadrunner-2022b.tar.gz -C ~/ cd ~/roadrunner-2022b ./install
    跟随图形安装向导完成安装。建议安装路径选择/opt或你的家目录下,避免权限问题。
  2. 配置UE4导出插件:这是RoadRunner与UE4联动的桥梁。在RoadRunner安装目录或启动后的界面中,找到“Unreal Engine Plugin”相关选项。你需要指定之前编译好的UE4引擎根目录(~/UnrealEngine_4.24)。RoadRunner会向该引擎目录安装一个导出插件。
  3. 验证插件:启动UE4编辑器(编译好的那个),在新建或打开任意项目后,点击菜单栏的“编辑” -> “插件”,在搜索框中输入“RoadRunner”,应该能看到已安装的RoadRunner导入插件,并确保其是启用状态。

至此,一个包含地图制作(RoadRunner)、场景渲染(UE4)、仿真逻辑(CARLA)的完整工具链基础环境就搭建完毕了。这个过程看似步骤繁多,但每一步都是在为后续的顺畅和稳定扫清障碍。我强烈建议你在完成每一步后都做一个简单的验证,比如UE4编辑器能否打开,CARLA的Update.sh是否成功下载资产,RoadRunner能否启动,这样可以及时定位问题,避免错误累积到最后无从下手。

3. RoadRunner地图设计与优化要点

环境就绪后,我们进入核心创作环节——使用RoadRunner设计地图。这里不仅仅是画几条路那么简单,我们需要时刻考虑最终在CARLA中仿真的性能。

3.1 项目设置与道路网络构建

启动RoadRunner,新建一个项目。第一件事是设置正确的项目单位坐标系。CARLA和UE4默认使用厘米(cm)作为单位,坐标系为Z轴向上。在RoadRunner的项目设置中,务必将其调整为“厘米”和“Z-Up”。这一步如果错了,后续导入UE4时会导致比例严重失调和模型方向错误。

道路网络是地图的骨架。RoadRunner提供了非常直观的道路绘制工具。

  1. 使用“道路”工具:像使用画笔一样绘制道路中心线。初期不必过于纠结细节,先勾勒出主干道、交叉口的整体布局。
  2. 利用“交叉口”工具:在道路交汇处点击,RoadRunner会自动生成规范的路口几何形状,包括车道线、停止线、转弯区域等。这是手动建模几乎无法高效完成的工作。
  3. 精细调整车道:在“车道”面板中,你可以为每条道路段详细定义车道数量、宽度、类型(行车、公交、自行车)、以及车道线样式(实线、虚线、颜色)。这里有一个关键优化点:在非必要的直道区域,尽量减少车道数的变化。频繁的车道增减会导致网格(Mesh)分割更复杂,增加渲染负担。
  4. 添加道路标志和信号:从丰富的库中拖拽交通标志(限速、指示牌)和信号灯模型到场景中,并关联到相应的车道或路口。RoadRunner会自动处理它们的朝向和附着。

3.2 场景资产布置与性能平衡

道路网络完成后,需要添加建筑、植被、街道设施等来丰富场景。这里是性能影响的重灾区。

  1. 建筑布置策略

    • LOD(多层次细节)是关键:确保你从库中拖入的建筑物资产本身包含LOD。在RoadRunner的“场景”窗口或资产管理器中,可以查看资产的LOD层级。好的资产应该有高模(近看)、中模、低模(远看)多个版本。
    • 复用与实例化:不要对每一栋楼都使用独一无二的模型。选择5-10个风格统一的建筑模型,进行旋转、缩放后重复使用。RoadRunner和UE4会对相同的静态网格体进行自动实例化渲染,这能极大降低Draw Call(绘制调用)数量,这是提升帧率最有效的手段之一。
    • 控制密度:在仿真车辆的主要行驶路径两侧,可以布置密集一些的建筑以形成“街道峡谷”感。但在远离道路的区域,尤其是地图边缘,应大幅减少建筑密度,甚至用简单的平面贴图替代。
  2. 植被布置技巧

    • 使用公告板(Billboard)树木:对于中远距离的树木,强烈建议使用公告板类型的资产(即总是面向摄像机的2D图片)。它们的多边形数量极少,但视觉效果在运动中可以接受。
    • 谨慎使用3D高模树木:仅在路旁关键观赏点或停车区附近少量使用,作为视觉点缀。
    • 利用散布(Scatter)工具:RoadRunner的植被散布工具可以快速生成草地、灌木丛。务必调整“密度”和“比例随机”参数,避免过于均匀和密集,那会显得不自然且消耗性能。
  3. 地面与贴图

    • 为不同区域(道路、人行道、泥土、草地)分配不同的材质。使用高质量但尺寸合理的纹理贴图(如2048x2048)。避免使用一张巨大的4096x4096贴图铺满整个地图。
    • 利用RoadRunner的“贴花”(Decal)功能来添加路面磨损、污渍、落叶等细节,它们通常比修改整个地面材质性能开销更小。

3.3 为UE4和CARLA导出做准备

设计完成后,在导出前,我们需要进行一系列针对性设置,确保地图能高效地转换到UE4。

  1. 检查并优化资产:在“场景”窗口中,可以查看整个场景的静态网格体数量、三角形总数估算。一个性能良好的、用于实时仿真的中型城市地图,三角形总数建议控制在200万至500万个以内。如果超标,需要回到上一步,减少高模资产的使用,或增加LOD的使用距离。
  2. 设置导出范围:使用“导出区域”工具,框选你实际需要导出的地图区域,避免将无关的测试性内容一并导出。
  3. 配置UE4导出设置:这是最关键的一步。点击“导出” -> “Unreal Engine...”,会弹出详细设置窗口。
    • 导出路径:选择一个空文件夹,用于存放导出的所有文件(.fbx模型、.png贴图、.uasset资源等)。
    • 网格体选项:勾选“生成碰撞体”(Generate Collision)。RoadRunner会为道路、路缘石等生成简化的碰撞网格,这对于CARLA中的物理模拟至关重要。
    • 材质选项:选择“导出材质”(Export Materials)。RoadRunner会生成基于物理渲染(PBR)的材质球,包含基础色、法线、粗糙度等纹理。
    • LOD选项:确保“导出LOD”(Export LODs)被勾选。这样UE4才能根据距离切换不同细节层次的模型。
    • 世界原点:通常保持默认(0,0,0)。如果你的地图离原点非常远,可以考虑平移,但一般没必要。

点击导出后,RoadRunner会开始处理场景,这个过程可能需要几分钟到十几分钟,取决于场景复杂度。最终,你会在目标文件夹中得到一个.rrdata文件(RoadRunner场景数据)和一系列子文件夹(Meshes,Textures,Materials等),以及一个关键的RoadRunnerScene.uproject文件。这个.uproject文件就是引导UE4导入所有资产的“项目文件”。

4. UE4中的地图导入与材质优化

拿到RoadRunner导出的资源包后,下一步就是在UE4中将其整合成一个可运行的地图,并进行关键的材质和性能优化。

4.1 创建UE4项目与资源导入

  1. 使用导出的.uproject文件:最简单的方法是直接双击RoadRunnerScene.uproject文件。这会启动UE4编辑器,并自动创建一个以此为基础的新项目,所有导出的资产(网格体、材质、纹理)都会自动导入到内容浏览器中。
  2. 手动导入(备用方法):如果你已经有一个现有的CARLA兼容UE4项目,可以将导出文件夹内的Content子目录直接复制到你项目的Content目录下。然后打开UE4编辑器,在内容浏览器中右键点击相应文件夹,选择“重新导入”。
  3. 检查导入结果:打开内容浏览器,你应该能看到一个结构清晰的文件夹,通常以你的地图名命名,里面包含MeshesMaterialsTextures等。打开Meshes文件夹,随意点击一个静态网格体,在细节面板中检查其“碰撞复杂性”(Collision Complexity),应该显示为“使用简单碰撞体”(Use Simple Collision),这表明RoadRunner生成的碰撞体已成功附加。

4.2 材质检查与调整

RoadRunner导出的PBR材质在UE4中通常可以直接使用,但为了性能和兼容性,我们仍需检查。

  1. 打开主要材质:找到用于道路、人行道、建筑墙面的主要材质球,双击打开材质编辑器。
  2. 检查纹理采样器:确保纹理采样器的“Mip值”(Mip Value)模式设置为“From Texture Group”。这允许纹理根据距离进行Mipmap(一种纹理LOD技术)切换,节省显存和带宽。
  3. 简化材质逻辑:观察材质图。RoadRunner生成的材质可能包含一些复杂的混合节点。如果某些混合效果在仿真视角下并不明显(例如微小的污渍层),可以考虑移除它们。每减少一个纹理采样或复杂计算节点,都能为渲染节省一点资源。
  4. 实例化材质参数:如果有多栋建筑使用同一材质但颜色略有不同,不要创建多个材质球。而是创建一个材质实例(Material Instance),通过修改其标量参数(如BaseColor)或向量参数来实现变化。材质实例的渲染开销远低于独立的材质球。

4.3 构建光照与烘焙(Baking)

光照是影响视觉真实感和性能的另一大因素。对于CARLA这样的动态仿真,我们通常使用静态或固定(Stationary)光照,并对阴影进行烘焙。

  1. 放置光源:在场景中放置“定向光源”(Directional Light)模拟太阳,可以再添加一些“天空光照”(Sky Light)来补充环境光。将它们的“移动性”(Mobility)设置为“固定”(Stationary)。
  2. 设置世界场景设置:在“世界场景设置”中,确保“强制无预计算光照”(Force No Precomputed Lighting)未被勾选。
  3. 构建光照:点击工具栏上的“构建”(Build)按钮,选择“仅构建光照”(Build Lighting Only)。UE4将开始计算光照贴图(Lightmap),这个过程可能很长。优化技巧:在构建前,可以在“项目设置”->“渲染”->“光照”中,适当降低“光照贴图分辨率”(Lightmap Resolution)和“间接光照质量”(Indirect Lighting Quality)的预览级别,以加快构建速度。最终构建时再调高。
  4. 检查光照贴图UV:对于自定义导入的静态网格体,需要确保其有第二套UV通道用于光照贴图。RoadRunner导出的模型通常已自动生成。你可以在静态网格体编辑器的“UV”视图中查看“UV通道1”来确认。

完成光照构建后,你的地图在编辑器内应该已经有了基本的光影效果,并且性能会比实时动态阴影好很多。

4.4 地图打包与测试

在将地图交给CARLA之前,最好先在UE4编辑器内进行简单的性能测试和功能验证。

  1. 运行测试:点击“运行”(Play)按钮,在编辑器内以游戏模式查看地图。使用鼠标键盘控制视角移动,观察帧率(按Ctrl+Shift+H显示统计数据)。
  2. 性能分析:按“~”键打开控制台,输入stat unit,可以查看帧时间(Frame time)分解,了解是CPU(Game)还是GPU(Draw)是瓶颈。如果GPU耗时很高,说明需要进一步优化模型、材质或阴影;如果CPU(Game)耗时高,可能是Actor数量过多或蓝图逻辑复杂(对于RoadRunner地图,通常问题在GPU)。
  3. 打包地图:最后,我们需要将整个项目和地图打包成一个CARLA能识别的格式。在UE4编辑器中,选择“文件”->“打包项目”->“Linux”。选择一个输出目录(例如~/carla/Import)。打包过程会生成一个包含所有Cooked(已处理)资源的.pak文件和其他数据文件。

至此,一张为UE4优化过的仿真地图就准备好了。它已经具备了完整的几何、碰撞、材质和光照信息,下一步就是将其“喂”给CARLA仿真器。

5. 集成到CARLA 0.9.10并进行性能调优

这是最后一步,也是将静态地图转化为动态仿真环境的关键一步。

5.1 使用CARLA导入脚本

CARLA提供了专门的Python脚本,用于将打包好的UE4地图资源导入到其资产系统中。

  1. 准备导入目录:在CARLA源码根目录下,有一个Import文件夹。将你上一步UE4打包输出的所有文件(通常是一个LinuxNoEditor文件夹及其内容)复制或移动到~/carla/Import目录下。
  2. 运行导入脚本
    cd ~/carla ./ImportAssets.sh
    这个脚本会自动识别Import目录下的资源,进行解包、转换,并将其移动到CARLA的Unreal/CarlaUE4/Content目录下的相应位置。
  3. 编译CARLA:导入新地图后,需要重新编译CARLA UE4客户端,以将新地图资源链接到最终的二进制文件中。
    make launch
    这个命令会编译UE4客户端(CarlaUE4项目)。第一次编译或地图资源变化后编译,时间会比较长。

5.2 在CARLA中加载与测试地图

编译成功后,运行CARLA服务器和客户端。

  1. 启动服务器
    cd ~/carla ./CarlaUE4.sh -quality-level=Low -carla-server
    这里我添加了-quality-level=Low参数。这是一个非常重要的性能调优起点。它强制UE4使用最低的图形质量预设,关闭了许多昂贵的后期处理效果(如动态模糊、环境光遮蔽),可以立即获得显著的帧率提升。我们后续的调优可以在此基础上,有选择地开启一些必要效果。
  2. 使用Python API加载地图:打开另一个终端,运行Python脚本加载你的新地图。
    cd ~/carla/PythonAPI/examples python3 generate_traffic.py -m YourMapName
    你需要将YourMapName替换为你的地图在UE4中的名称(通常是BaseMapName, 可以在UE4编辑器世界大纲视图中查看主关卡名称)。

5.3 针对CARLA仿真的深度性能调优

现在地图已经跑起来了,但可能帧率还不理想。我们需要在CARLA运行时进行更细致的调优。

  1. 命令行参数调优:在启动CarlaUE4.sh时,可以组合使用以下参数:

    • -quality-level=Low: 如前所述,基础设置。
    • -benchmark -fps=20: 将帧率限制在20FPS。对于自动驾驶仿真,稳定的20-30FPS往往比波动的60FPS更有价值,因为它为传感器数据(如相机图像)提供了稳定的时间间隔。
    • -windowed -ResX=1280 -ResY=720: 以窗口模式运行,并降低分辨率。这是提升帧率最直接粗暴且有效的方法之一。
    • -RenderOffScreen: 无头模式运行,不显示图形界面。如果你只使用RGB相机传感器数据而不需要查看窗口,这个模式可以节省大量GPU资源。
  2. 通过Python API进行运行时设置:在连接CARLA客户端后,可以通过API动态调整一些渲染设置。

    import carla client = carla.Client('localhost', 2000) world = client.get_world() settings = world.get_settings() # 1. 固定时间步长:这对于控制循环和传感器同步至关重要 settings.fixed_delta_seconds = 0.05 # 对应20FPS # 2. 关闭同步模式(除非你需要与外部控制严格同步) settings.synchronous_mode = False # 3. 应用设置 world.apply_settings(settings) # 4. 调整天气和后期处理(对性能影响大) weather = carla.WeatherParameters( cloudiness=10.0, # 降低云量 precipitation=0.0, # 无降水 sun_altitude_angle=70.0, # 调整太阳高度 fog_density=0.0, # 关闭雾效 ) world.set_weather(weather)

    通过Python API,你可以在仿真过程中灵活地切换这些设置,找到画质和性能的最佳平衡点。

  3. 监控与诊断:CARLA服务器运行时,会在终端输出日志。关注是否有警告或错误信息。同时,可以使用nvidia-smi命令监控GPU利用率、显存占用和温度。如果GPU利用率持续在95%以上,说明它已经是瓶颈,需要进一步降低画质或分辨率。

6. 常见问题排查与实战心得

即使按照步骤操作,也难免会遇到各种问题。这里我汇总了一些高频问题和解决思路。

6.1 编译与启动类问题

问题现象可能原因排查与解决思路
make编译UE4时内存不足被Kill物理内存和交换空间不足增加交换空间(如之前所述),或尝试使用make -j 2减少并行编译线程数。
运行./CarlaUE4.sh提示缺少.so系统动态链接库缺失使用ldd命令检查可执行文件依赖,例如ldd CarlaUE4.sh,然后使用apt安装缺失的库(如libomp5)。
UE4编辑器打开项目崩溃显卡驱动问题或项目文件损坏更新NVIDIA驱动至最新稳定版。尝试删除项目目录下的IntermediateSavedBinaries文件夹,然后右键点击.uproject文件,选择“Generate Visual Studio project files”(在Windows上),在Linux上则是重新运行./GenerateProjectFiles.shmake
RoadRunner导出时卡住或报错场景中有损坏的资产或路径含中文/特殊字符检查场景中是否有来自第三方的不规范模型,尝试移除。确保项目保存路径和导出路径均为全英文。

6.2 地图导入与显示类问题

问题现象可能原因排查与解决思路
地图导入CARLA后一片漆黑光照未构建或构建失败回到UE4,确保已成功构建光照(查看构建日志无错误)。检查世界设置中是否误开启了“强制无预计算光照”。
地图材质显示为纯白或紫色材质或纹理导入失败,着色器编译错误在UE4内容浏览器中,检查材质球和纹理是否有错误标志(红色叉号)。尝试重新导入有问题的资产。确保UE4使用的是编译了RoadRunner插件的版本。
车辆在地图上“飘”或穿模碰撞体缺失或错误在RoadRunner导出时确认勾选了“生成碰撞体”。在UE4中检查静态网格体的碰撞体是否简单且合理(例如道路应有碰撞,但远处的装饰建筑可能不需要)。
CARLA中帧率极低(<10 FPS)图形设置过高或地图过于复杂从最低画质(-quality-level=Low)和分辨率(1280x720)开始测试。使用UE4的“Stat Unit”和“Stat SceneRendering”命令分析性能瓶颈。考虑返回RoadRunner简化远处建筑和植被的细节。

6.3 性能调优心得

  • 性能是设计出来的,不是调出来的:最大的性能提升来自于RoadRunner设计阶段的克制。在添加每一个高模资产、每一片密集植被前,都问自己:仿真车真的需要看到这个细节吗?
  • LOD是你的朋友:确保所有自定义导入的模型都有至少2-3级LOD。在UE4的静态网格体编辑器中可以检查并调整LOD距离。
  • 阴影开销巨大:定向光的动态阴影是性能杀手。尽可能使用烘焙的光照贴图。如果必须有动态物体阴影,考虑使用更廉价的“接触阴影”(Contact Shadows)或降低阴影分辨率。
  • 分辨率是终极武器:对于纯算法测试,将CARLA窗口缩小到640x480甚至以无头模式运行,能释放出巨大的GPU算力给你的感知模型。
  • 稳定比高帧率更重要:通过-benchmark -fps=20和设置fixed_delta_seconds来锁定帧率,可以确保传感器数据的时间戳间隔均匀,这对于基于时间序列的算法(如目标跟踪、SLAM)至关重要。

整个流程走下来,你会发现从RoadRunner的一张白纸,到CARLA里一个流畅运行的仿真世界,中间每一个环节都环环相扣。环境配置是体力活,需要耐心和细心;地图设计是艺术和工程的结合,需要在视觉真实感和运行效率间做权衡;而最后的集成与调优,则是经验和技巧的体现。这套方法论的价值在于其可重复性和可优化性。你制作的第一张地图可能磕磕绊绊,但当你掌握了这些原则和工具,后续制作第二张、第三张地图时,效率和效果都会大幅提升。最终,你将拥有一个完全可控、高度定制化的仿真环境,这对于自动驾驶算法的研发和测试来说,无疑是一个强大的加速器。