ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

CARLA 0.9.15 Windows 环境搭建与首次运行指南

2026/10/3 3:41:45 拓冰建站 浏览量
CARLA 0.9.15 Windows 环境搭建与首次运行指南 1. 环境准备动手前先把底子打牢1.1 为什么选择 CARLA 0.9.15 这个版本我接触 CARLA 的时间不算短从最早的 0.8 系列一路用到现在。坦白说0.9.15 这个版本在 Windows 下的综合体验是相当稳的。它在 0.9.14 的基础上修正了一批和光照、传感器有关的 Bug同时引入了一些对后续算法调试友好的接口改动。很多人会有个误区觉得版本号越新越好。但 CARLA 这个项目比较特殊它的 API 一直在演进部分旧脚本在升级后会直接跑不起来。0.9.15 处在 0.9.x 这条稳定主线上Python API 的调用方式和前几个小版本基本一致社区资料、教程、Stack Overflow 上的问答覆盖度也很高遇到问题很容易搜到答案。对于刚入门或者做课程项目、课题研究的人来说这个版本是被验证过足够多次的。还有一个很关键的点0.9.15 的预编译包对硬件要求相对友好。相比后来的 0.9.16 和 0.10.x它对显存和内存的压力没那么极端中端显卡也能跑得动。这在 Windows 这个“配置参差不齐”的环境里是很大的优势。1.2 硬件配置要求先看看你的机器能不能带得动CARLA 本质上是基于 Unreal Engine 4 构建的仿真器它的运行本质是实时渲染一个完整的城市场景。所以硬件门槛不是“能开机就行”而是必须达到能流畅跑 3D 游戏的水准。以我实测下来的经验下面这张表可以作为参考配置项最低要求推荐配置备注CPU6 核 / 12 线程8 核 / 16 线程以上物理仿真、车辆动力学、AI 交通流都会吃 CPU内存16 GB32 GB加载 Town 地图时 16GB 勉强够但开多传感器会爆显卡GTX 1660 6GBRTX 3060 / 3080 及以上显存 6GB 是底线低于这个数字基本进不了 4K 分辨率的场景硬盘50 GB 可用空间NVMe SSD 100 GB解压后的文件很大读取速度直接影响启动时间系统Windows 10 2004Windows 11系统版本太老会导致 UE4 运行库不全这里有一条硬性建议你的显卡驱动一定要更新到比较新的版本。CARLA 0.9.15 的渲染模块对驱动版本有隐性的要求我遇到过很多次机器配置看起来达标、但启动后画面撕裂、崩溃最后发现是驱动太老。提示如果你的显卡是 N 卡建议直接到官网下载 Game Ready 或 Studio 驱动尽量不要用 Windows 自动推送的驱动版本后者在某些机型上会莫名导致 UE4 的 D3D 初始化失败。1.3 软件依赖梳理Windows 系统下必须有这些环境除了硬件软件环境也需要提前准备好。CARLA 在 Windows 上运行会依赖不少底层库漏掉任何一个都可能在启动时报错Microsoft Visual C Redistributable 2019 或更新版本这个是最常见的坑系统缺少它的话CarlaUE4.exe 会直接报缺少 DLL 文件。Python 3.7 及以上版本推荐 3.8 或 3.9。CARLA 0.9.15 的 Python API 编译目标主要是这两个版本。.NET Framework 4.8Win10 一般自带但老版本系统要确认一下。DirectX 12UE4 在 Windows 上的渲染依赖 DX12Win10 原版系统都自带了但精简版系统要留意。这些依赖看起来琐碎但没有提前准备好的话后面启动的时候会出现各种“不明原因”的崩溃排查起来非常费劲。我自己的习惯是先花十分钟检查这些东西再开始下载安装包。2. 下载与解压拿到正确的文件比什么都重要2.1 去哪下载下载哪种包CARLA 0.9.15 在 GitHub Releases 页面可以找到对应版本。官方提供了两种形态的发布物完整安装包文件名通常类似CARLA_0.9.15.zip里面有完整的模拟器本体和 Python API。附加地图包文件名类似AdditionalMaps_0.9.15.zip包含更多可选的城镇地图。下载的时候我建议直接把两个包都拿下来一次性补齐。单独下本体只包含基础的 Town01 到 Town10HD 里的一部分地图到了后期做不同场景的算法验证时会发现地图不够用再补就很麻烦。还有一点要注意下载时尽量使用稳定可靠的网络环境。CARLA 完整包体积比较大通常有几个 GB即使宽带很快也要下载一段时间。中途断掉就需要重新开始很折磨人。注意不要从第三方网盘下载所谓“绿色版”“破解版”“精简版”这些包往往修改过内部文件可能会出现奇怪的问题而且你无法确认里面干了什么安全问题也完全不可控。2.2 解压之后目录结构你要认识清楚下载完成后把压缩包解压到一个路径中不含中文和空格的目录。这个说法我已经强调过无数次但还是不断有人踩坑。UE4 引擎在启动时会扫描资源路径如果路径里出现中文字符或者特殊符号有概率导致资源加载失败。解压完成后你会看到类似这样的目录结构CARLA_0.9.15/ ├── CarlaUE4.exe # 服务端入口 ├── CarlaUE4/ # 游戏本体目录 ├── PythonAPI/ │ ├── carla/ │ ├── examples/ │ └── util/ ├── Maps/ # 地图相关文件 ├── Tools/ └── Unreal/CarlaUE4/ # 源码相关一般用不到这里面最常用到的是CarlaUE4.exe和PythonAPI目录。前者负责启动仿真服务端后者是我们要用的 Python 客户端库。换句话说一个是“模拟世界”一个是“控制方式”。顺带一提如果你下载了附加地图包解压后大概率会生成一个AdditionalMaps文件夹里面是各种.umap文件。你需要把这些文件按照说明复制到本体对应的Content目录下这样在客户端里才能用load_world()加载那些地图。2.3 不要忽略的“运行环境检测”步骤在真正启动之前我建议你先检查一下系统里是否缺少运行库。一个非常快的检测方法是直接双击CarlaUE4.exe。如果系统缺少 VC 运行库会弹出类似“缺少 VCRUNTIME140.dll”的错误提示。看到这个提示别慌去微软官网下载 Visual C Redistributable 2019 x64 版本安装后重试即可。如果双击后没有任何反应也没有报错弹窗可能就有其他层面的问题。这时候去 Windows 事件查看器里找应用程序频道下的错误日志通常会看到UE4-CarlaUE4的崩溃事件关键字会告诉你具体是哪个 DLL 或哪个环节出了问题。3. Python API 环境搭建让客户端和服务端能对上话3.1 创建独立的虚拟环境别污染系统 PythonCARLA 0.9.15 的 Python API 依赖了numpy、Pillow、pygame这些库如果直接往系统环境里装时间久了包版本冲突会很麻烦。我强烈建议你为 CARLA 单独建一个虚拟环境。命令很简单# 创建虚拟环境 py -3.8 -m venv carla_venv # 激活虚拟环境 carla_venv\Scripts\activate为什么用 Python 3.8因为 CARLA 0.9.15 的预编译.pyd文件也就是 carla Python API 的核心扩展是针对特定 Python 版本编译的。虽然源码上兼容 3.7 到 3.10但 3.8 是官方测试最充分的版本。这也是一个“能跑但没必要冒险”的原则用 3.8 可以省掉很多潜在的 ABI 兼容问题。3.2 安装依赖包在激活虚拟环境后需要安装指定版本的依赖库pip install numpy pygame Pillow这里有一个版本需要特别留意pygame是 CARLA 官方示例代码中常用的可视化库但新版本的pygame在 Windows 上可能存在音频初始化的 bug导致打开仿真画面时崩溃。我个人实测下来pygame2.1.2这个版本在 CARLA 0.9.15 上表现最稳你可以优先锁定它。安装命令pip install pygame2.1.23.3 把 CARLA 的 Python API 路径加入环境变量CARLA 的 Python API 不像普通的 pip 包那样直接安装到site-packages它是“本地引用”的模式。你需要在虚拟环境中引用它的时候把它的路径加到搜索范围里。两种方式第一种在 Python 脚本里临时指定import sys sys.path.append(E:/CARLA_0.9.15/PythonAPI/carla/dist/) sys.path.append(E:/CARLA_0.9.15/PythonAPI/carla/)第二种设置系统环境变量PYTHONPATHset PYTHONPATHE:\CARLA_0.9.15\PythonAPI\carla\dist;E:\CARLA_0.9.15\PythonAPI\carla这个路径一定要解压出 CARLA 的本体目录为准不要直接套用我这里的示例路径。配置好之后可以在 Python 交互环境里测试一下import carla print(carla.__version__)如果能正常输出版本号0.9.15说明 API 已经可以正常导入了。3.4 验证客户端能不能和服务端连上服务端启动之后默认在localhost:2000端口监听客户端只要连接这个地址即可。最快的方式是运行PythonAPI/examples目录下的样例脚本python manual_control.py这条命令会弹出一个带键盘控制的车载视角画面你可以用 WASD 控制车辆行驶鼠标转动视角。如果这个能跑起来说明你的环境和整条链路都是通的。注意在运行脚本之前必须保证CarlaUE4.exe已经启动并加载完成地图。启动 CARLA 服务端后你会在窗口左上角看到地图名称等待左下角出现加载完成的日志提示后再运行客户端脚本否则连接会被拒绝。4. 第一次启动从黑屏到自由驾驶4.1 服务端的正确启动姿势找到CarlaUE4.exe双击运行。首次启动会经历一段相对较长的加载时间这和你的硬盘速度直接相关。在 SSD 上通常 30 秒到 1 分钟内可以进入场景在机械硬盘上则可能需要 3 分钟以上所以如果跑起来感觉很久没反应先别急着关闭给它一点耐心。启动完成后你会看到 CARLA 自带的默认地图场景通常是 Town10HD 或其他基础图。默认视角是在空中往下俯瞰的这一屏能看到密密麻麻的建筑和道路模型这就是服务端在工作。值得留意的是直接双击运行默认使用的是窗口模式分辨率不高。如果你想自定义分辨率和画质可以在启动时带命令行参数。例如CarlaUE4.exe -windowed -ResX1280 -ResY720分辨率参数在后面的传感器测试中还是很重要的因为摄像头的输出分辨率和你窗口的分辨率没有直接关系但窗口分辨率太低会影响目标检测效果的直观感受。4.2 用 Python 创建一辆车验证仿真闭环服务端跑起来后我们再回到客户端环境执行一个最简单的脚本import carla # 连接服务端 client carla.Client(localhost, 2000) client.set_timeout(10.0) # 加载默认地图 world client.get_world() # 获取蓝图库 blueprint_library world.get_blueprint_library() # 从蓝图库中选择一辆车 vehicle_bp blueprint_library.filter(vehicle.tesla.model3)[0] # 放到地图上找一个坐标点 spawn_points world.get_map().get_spawn_points() vehicle world.try_spawn_actor(vehicle_bp, spawn_points[0]) if vehicle: print(车辆生成成功: , vehicle.id) else: print(车辆生成位置可能被占用尝试其他点)这段脚本的核心逻辑是连接服务端、获取地图、从蓝图库中挑一个车型、找一个生成点、生成车辆。如果你能看到成功打印出车辆 ID说明整个 CARLA 的“服务端-客户端”链路已经完整跑通。此时你可以继续加一句控制import time # 控制车辆开始运动 vehicle.apply_control(carla.VehicleControl(throttle0.5, steer0.0, brake0.0)) time.sleep(3)执行后你会看到场景中的车辆开始缓缓向前行驶这说明仿真闭环已经完全建立。4.3 对“无服务器模式”的浅析与取舍CARLA 还有一种启动方式叫“无服务器模式”也就是服务端以-nullrhi或类似参数运行时不渲染画面只做物理计算和通信。这种模式的好处是效率高、不占显卡渲染资源适合跑批量训练。但坏处是你看不到场景调试传感器数据时不太直观。对于刚入门的朋友我建议先用带渲染的模式把逻辑跑通再去考虑无服务器模式。很多人一上来就尝试无服务器跑大规模并行结果各种参数对不上排查问题的成本反而翻倍。5. 常见问题与排查技巧实录5.1 启动即崩溃或闪退这个问题出现频率非常高我自己和周围同行都踩过。原因通常集中在以下几个方面现象可能原因处理方式启动时提示缺少 DLLVisual C 运行库缺失安装 VC Redistributable 2019 x64启动后闪退显卡驱动太老到显卡官网更新最新驱动卡在加载界面永远不进入硬件不满足要求或路径有中文检查路径、检查内存占用情况启动时提示 D3D 相关错误DirectX 或显卡不支持 DX12更新系统、检查显卡是否支持 DX12另外一个很隐蔽的问题笔记本用户要注意是否有双显卡切换机制。CARLA 启动时可能会默认使用核显而不是独显。在 N 卡控制面板里手动把CarlaUE4.exe指定为“高性能 NVIDIA 处理器”是最直接的解决办法这个坑我见过不少 IntelNVIDIA 组合的电脑栽在上面。5.2 客户端连不上服务端carla.Client(localhost, 2000)连不上时先确认以下几点CarlaUE4.exe是否已经启动并完成了地图加载过程。加载完成前端口是不会开放的。系统防火墙是否拦截了2000端口。如果开了防火墙默认规则可能会把 UE4 的网络通信拦截掉需要在 Windows Defender 防火墙中给CarlaUE4.exe放行。客户端和服务端是否在同一个网络环境。如果你用远程连接需要把localhost改成服务端的实际 IP。在这里额外提一句CARLA 默认只监听 IPv4 的本地回环地址。如果你确实需要局域网访问在服务端启动时加上-carla-rpc-port2000的端口参数是可以换端口的但绑定的 IP 一般不轻易改动保持默认最稳妥。5.3 Python API 导入时报 ABI 错误如果import carla报错提示类似ModuleNotFoundError: No module named carla或ImportError: DLL load failed通常是因为 Python 版本和 .pyd 文件不匹配。解决方案很简单切换到 Python 3.8 版本再试。如果你机器上装了多个 Python 版本记得用py -3.8明确指定。Windows 上最容易出现的问题就是默认python命令指向了某个不兼容的版本导致怎么装都报错。5.4 显存不足导致渲染画质异常当你在客户端里打开摄像头传感器时如果画面出现明显的卡顿或者大块贴图丢失多半是显存不够用了。CARLA 在默认设置下会启用较高的渲染资源即使你没有主动调用传感器服务端也会完整渲染整个场景。应对方式是启动时调整渲染等级CarlaUE4.exe -quality-levelLow这个参数能显著降低 GPU 的压力。如果是做传感器验证Low级别完全够用如果是做视觉感知相关的任务再考虑调回High或Epic。5.5 跟 ROS 联合使用时端口冲突很多做研究的人会把 CARLA 接到 ROS 上。CARLA 0.9.15 提供了carla_ros_bridge的早期版本支持。但在 Windows 上跑 ROS 本身就是一件相对折腾的事通常大家会选择 WSL2 或者双系统的方式来运行 ROS 侧而 CARLA 跑在 Windows 原生环境。这时候要注意网络两个系统之间的通信是否通畅以及端口转发是否配置好了。我在实际项目里遇到最多的问题就是 WSL2 默认 NAT 模式下访问 Windows 宿主机的端口需要特殊处理不能直接写localhost。如果你打算走 ROS CARLA 的路线建议先把 ROS 放在一个单独的机器或虚拟机里然后用局域网 IP 访问 CARLA 服务端。这样虽然看起来多了一步但避开了 WSL2 网络栈带来的一系列不确定性。6. 一些使用习惯上的建议6.1 写脚本时尽量用try-spawn而不是spawn这是 CARLA 开发中一个很小的代码习惯但对长期使用影响很大。地图上的生成点有时候会被其他车辆占用如果强制生成会发生碰撞就会失败。try_spawn_actor返回None而不是直接抛出异常代码逻辑上更优雅。一个更稳妥的写法是多次尝试不同的生成点vehicle None for spawn_point in spawn_points[:50]: vehicle world.try_spawn_actor(vehicle_bp, spawn_point) if vehicle: break这样能显著提高生成成功率尤其是在做大规模多车辆协同仿真的场景。6.2 善用客户端超时设置client.set_timeout(10.0)这个参数很多人直接抄过去了但并不知道它的实际意义。它控制的是当客户端向服务端发送请求后等待响应的最长时间。网络状况不太好的时候10 秒可能不够在本地环回环境下 10 秒绰绰有余。我建议在局域网模式下把它调到 30 秒甚至更久避免明明服务端在处理、但客户端因为超时报错。6.3 记录日志是个好习惯CARLA 的服务端默认不会输出所有通信细节但如果你在启动时加上-carla-server-debug或-log参数会有更多调试信息输出。这些日志在排查传感器数据不对、地图加载不全的问题时非常有用。比如CarlaUE4.exe -carla-rpc-port2000 -log我看到太多人遇到问题就抓瞎其实日志信息已经告诉了你原因。7. 写在后面啰嗦了这么多其实整套环境如果顺利的话从下载到跑起第一辆车半小时内就能完成。最花时间的往往不是安装本身而是各种隐藏的细节——路径里的空格、驱动版本不对、Python 版本不匹配、防火墙拦截、显存不够。这些坑单看每一个都不难解决但叠加在一起就很容易让人崩溃。我个人通常建议第一次跑通之后专门花一点时间把快捷键和几个重要的启动参数搞清楚。比如切换视角视角快捷键、暂停仿真、单帧步进这些功能在后续调试传感器的时候能省不少力气。CARLA 官方的文档在这些方面其实写得很全面但它是英文的很多人都没有耐心去翻。这正好是这个系列教程想要填补的空白。在这个系列里我会把 0.9.15 在 Windows 下的完整使用路径分几篇拆开这一篇先把环境装好、把第一辆车跑起来后面再逐个深入去拆传感器配置、地图加载、交通流控制、以及与外部算法的对接方式。安装永远只是起点真正有意思的是仿真器后面那一整套可操作的场景和测试链路。