carla
开源自动驾驶仿真平台,基于 Unreal Engine 5 提供逼真的虚拟城市环境,用于训练和验证自
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
开源自动驾驶仿真平台,基于 Unreal Engine 5 提供逼真的虚拟城市环境,用于训练和验证自
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你正在训练一辆无人车在城市街道上行驶。如果让它直接在真实马路上学习,一次判断失误可能意味着交通事故——代价是真实的生命和财产。那么,有没有办法让无人车先在一个「平行世界」里撞个够,等它真的学会了再上路?
CARLA(Car Learning to Act)就是这样一个虚拟训练场。它是自动驾驶研究领域最流行的开源模拟器之一,可以让研究者在逼真的虚拟城市中训练、测试和验证自动驾驶算法,而不必承担任何真实风险。
图1:CARLA Unreal Engine 5 版本渲染效果
2016 年,巴塞罗那计算机视觉中心和 Intel 实验室的研究人员发表了 CARLA 的初代论文。彼时,自动驾驶算法正在快速演进,但训练数据的获取方式却非常有限:要么花巨资购买真实路测数据,要么在封闭场地进行有限测试。这两种方式都有明显的瓶颈——真实数据成本高、覆盖场景有限,而封闭测试又无法复现复杂多变的真实路况。
CARLA 的出现填补了这个空白。它提供了一个可控的、可重复的仿真环境,研究者可以:- 精确控制天气、光照、时间等环境条件- 模拟各类极端场景(暴雨、夜间、逆光、传感器故障)- 生成无限多样的交通参与者行为- 自由修改地图结构和道路规则 到 2026 年,CARLA 已成为自动驾驶仿真领域引用量最高的开源项目之一,被全球数百所高校和科技公司采用。它不仅是一个工具,更形成了一个围绕仿真测试的完整生态。
如果你学过开车,一定知道「模拟器训练」的价值——新手可以在没有风险的环境中反复练习泊车、紧急制动等高难度操作。CARLA 就是自动驾驶系统的「飞行模拟器」。
民航飞行员在拿到执照之前,要在模拟器中经历无数次引擎失效、暴风雪降落等极端场景。同理,自动驾驶算法在部署到真实车辆之前,也需要在虚拟环境中经历各类 Corner Case(极端案例):行人突然冲出、遮挡信号灯、大型车辆近距离Cut-in……这些场景在真实世界中很难遇到,或者遇到时代价太大,但在仿真器中可以批量生成、无限重复。
图2:CARLA 仿真器客户端界面
CARLA 的功能覆盖了自动驾驶系统的完整数据链路。
传感器仿真是 CARLA 最核心的能力之一。它支持多种虚拟传感器的模拟,包括:- RGB 相机:模拟前置、侧方、后置摄像头,支持焦距、FOV 等参数配置- 深度相机:输出每个像素到相机的距离,用于 3D 重建和深度估计- 语义分割相机:为图像中每个像素标注类别(车辆、行人、道路、天空等),是感知算法训练的核心数据来源- LiDAR:激光雷达点云仿真,支持 128 线高精度激光雷达,可配置扫描频率和点云密度- 雷达(Radar):模拟毫米波雷达回波,含多普勒速度信息- IMU/GPS:车辆运动传感器数据,用于定位和惯性导航
图3:CARLA 雷达传感器仿真输出示意
**交通管理器(Traffic Manager)**是 CARLA 另一个关键组件。它负责模拟道路上其他交通参与者的行为,可以配置行人、自行车、机动车的跟车、变道、交规遵守程度,生成真实感强的交通流。高级用户还可以接入 ROS-bridge 与机器人操作系统对接,用 ROS 生态的工具来控制 CARLA 中的车辆。
地图与资产库方面,CARLA 提供了 10+ 张预制地图(Town),涵盖城市、高速、郊区、住宅区等多种场景。资产库包含数百种车辆蓝图(从轿车到卡车、公交车)、行人模型、建筑物、道路设施。通过 OpenDRIVE 标准导入自定义地图,还可以用 RoadRunner 工具生成高精度地图。
CARLA 的底层渲染引擎基于 Unreal Engine 5.5(UE5-dev 分支),相比早期版本支持了 Nanite 虚拟几何体、Lumen 全局光照等前沿渲染技术。这也是为什么 CARLA 的画面质量在同类仿真器中处于领先水平。
核心代码由两部分组成:1. C++ 仿真核心(LibCarla/source/):处理物理仿真、传感器数据生成、交通管理、路径规划等底层逻辑2. Python API(PythonAPI/carla/):提供客户端接口,封装了与仿真器通信的 RPC 协议,开发者用 Python 即可控制仿真器、获取传感器数据、施加控制指令
支持 Python 3.8+,典型使用方式:
import carla
client = carla.Client('localhost', 2000)
world = client.get_world()
blueprint = world.get_blueprint_library().filter('vehicle.*')[0]
spawn_point = world.get_map().get_spawn_points()[0]
vehicle = world.spawn_actor(blueprint, spawn_point)
图4:Epic 画质下的 CARLA 渲染效果
坦率地说,CARLA 的部署门槛不低。官方推荐的配置是:Intel i7/i9 第 9-11 代或 AMD Ryzen 7/9 + 32GB 内存 + NVIDIA RTX 3070/3080/3090/4090/5090(16GB+显存)。显存不足的显卡无法承载高精度传感器的实时渲染。
好在 CARLA 提供了 Docker 镜像,用户无需从源码编译,直接 Pull 即可运行:
docker pull carlasim/carla:0.10.0
docker run --device=nvidia.com/gpu=all --net=host carlasim/carla:0.10.0 bash CarlaUnreal.sh -RenderOffScreen
不过,源码构建(从零编译 Unreal Engine 项目)对普通用户基本不可行——需要 Epic Games 账号并获取 UE5 源码授权,还需要 ~100GB 磁盘空间和强大的编译能力。Docker 方式是大多数用户的实际选择。
CARLA 并非银弹,其局限性值得正视。
**仿真-现实差距(Sim-to-Real Gap)**是最核心的挑战。虚拟环境中的感知算法在真实传感器数据上往往性能下降,因为仿真器中的材质、天气、光照模型与真实世界仍有差异。CARLA 团队持续在缩小这一差距(如引入物理准确的材质响应、随机化参数),但无法完全消除。
大规模仿真效率也是瓶颈。单台机器只能运行有限数量的仿真实例,想要批量生成训练数据需要集群化部署。CARLA 提供了 Asynchronous 模式(多客户端并发连接)和 Multi-GPU 支持,但在超大规模场景下仍需配合外部调度系统。
对硬件的强依赖使 CARLA 无法在普通开发机上有良好体验,严重限制了其在学术资源匮乏场景中的普及。
CARLA 的意义远超一个仿真工具——它构建了一个围绕自动驾驶验证的完整生态:
2023 年 CARLA 正式引入 Unreal Engine 5 分支后,渲染质量有了质的飞跃,也为基于图像的端到端自动驾驶算法提供了更逼真的数据来源。未来,随着 CARLA 与大语言模型、视觉-语言模型结合,它在自动驾驶数据合成领域的角色还将继续扩展。
简而言之,如果你在研究自动驾驶、机器人感知、强化学习或计算机视觉,CARLA 是绕不开的基础设施——它是你在虚拟街道上安全试错的「第一课堂」。