CARLA 是一个开源的自动驾驶研究模拟器,基于 Unreal Engine 开发。它为研究人员提供了一个灵活的平台,用于开发、训练和验证自动驾驶系统。CARLA 支持多种传感器模拟,如摄像头、激光雷达和雷达,并提供丰富的城市地图、车辆和行人等数字资产。用户可以通过 Python API 或 C++ 控制仿真环境,调整天气、交通和场景等条件。CARLA 的设计目标是支持复杂交通场景的测试和多智能体交互研究,广泛应用于学术界和工业界。它的开源特性让用户可以免费使用并贡献代码,适合自动驾驶算法开发和测试。
功能列表
- 传感器模拟:支持多种传感器,如 RGB 摄像头、激光雷达、雷达、深度传感器和 GPS,生成逼真的感知数据。
- 交通场景生成:提供城市、郊区、高速公路等多种地图,支持动态交通流和行人行为模拟。
- 灵活的 API:通过 Python 和 C++ API 控制仿真环境,包括车辆、行人、天气和交通规则。
- 地图编辑:支持基于 ASAM OpenDRIVE 标准的自定义地图创建,可通过 RoadRunner 等工具生成。
- 场景录制与回放:允许录制仿真过程并精确回放,方便比较不同配置的结果。
- 多客户端架构:支持多个客户端同时控制不同智能体,适合多智能体研究。
- ROS 集成:通过 ROS 桥接与机器人操作系统无缝连接,支持 AutoWare 等框架。
- 交通管理:内置 Traffic Manager 控制 NPC(非玩家角色)行为,模拟真实交通挑战。
- 物理模拟:集成 Chrono 库,支持高精度的车辆动力学和多体动力学模拟。
使用帮助
安装流程
要在本地使用 CARLA,用户需要安装并配置环境。以下是针对 Ubuntu 系统的安装步骤,Windows 用户可参考官方文档。
- 检查系统要求
CARLA 支持 Unreal Engine 4.26 或 5.5 版本。推荐硬件配置为 Intel i7/i9(9-11代)或 AMD Ryzen 7/9,显卡需支持 DirectX 11 或以上,至少 16GB 内存和 50GB 磁盘空间。 - 下载 CARLA
用户可以选择从 GitHub 下载预编译包或源码编译:- 预编译包:访问 CARLA 官网(http://carla.org)或 GitHub 发布页面(https://github.com/carla-simulator/carla/releases),下载最新版本(如 0.9.15)。解压后即可使用。
- 源码编译:克隆 GitHub 仓库:
git clone -b ue5-dev https://github.com/carla-simulator/carla.git CarlaUE5
需要先关联 GitHub 账户与 Epic Games 以访问 Unreal Engine 5.5 仓库。
- 安装依赖
进入 CARLA 根目录,运行安装脚本:cd CarlaUE5 sudo -E env GIT_LOCAL_CREDENTIALS=github_username@github_token ./CarlaSetup.sh
脚本会自动下载 Unreal Engine 5.5 和依赖项,可能需要输入 GitHub 凭据。Windows 用户需使用 Visual Studio 2022 的 x64 Native Tools 命令提示符运行类似命令。
- 编译 CARLA
在 CARLA 根目录运行:cmake -G Ninja -S . -B Build --toolchain=$PWD/CMake/Toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_ROS2=ON
编译完成后,运行
./CarlaUE4.sh
启动模拟器。 - 安装 Python 客户端库
CARLA 提供 Python API,需安装客户端库:pip3 install carla
推荐在虚拟环境中安装,避免版本冲突。支持 Python 2.7、3.6、3.7 和 3.8。
使用主要功能
- 启动模拟器
运行./CarlaUE4.sh -quality-level=epic
(高质量)或-quality-level=low
(低配硬件)。模拟器启动后显示城市视角,等待客户端连接。 - 运行示例脚本
CARLA 提供多个 Python 示例脚本,位于PythonAPI/examples
目录。例如:- 生成交通:运行
python3 generate_traffic.py
,在模拟器中生成动态车辆和行人。 - 手动控制:运行
python3 manual_control.py
,通过键盘和鼠标控制车辆,WASD 键移动,鼠标调整视角。 - 传感器数据采集:运行
python3 03_RGB_camera.py
,从 RGB 摄像头获取图像数据并保存。
- 生成交通:运行
- 操作 Traffic Manager
Traffic Manager 控制 NPC 行为。示例:tm = client.get_trafficmanager() tm.set_desired_speed(vehicle, 30.0) # 设置车辆速度为 30 km/h tm.set_percentage_random_left_lanechange(vehicle, 20.0) # 20% 概率随机左换道
可通过 API 设置 NPC 的速度、换道行为等。
- 自定义地图
用户可通过 RoadRunner 或 OpenDRIVE 创建地图。导入地图到 CARLA:python3 import_map.py --path /path/to/your_map.xodr
然后在模拟器中加载新地图。
- 录制与回放
启动录制:client.start_recorder("recording01.log")
回放录制:
client.replay_file("recording01.log", start_time=0.0, duration=60.0)
- ROS 集成
安装 ROS 桥接(https://github.com/carla-simulator/ros-bridge):git clone https://github.com/carla-simulator/ros-bridge.git
启动 ROS 节点后,CARLA 可与 AutoWare 等框架交互。
特色功能操作
- 传感器配置:通过 Python API 添加传感器到车辆。例如,添加 RGB 摄像头:
blueprint_library = world.get_blueprint_library() camera_bp = blueprint_library.find('sensor.camera.rgb') camera = world.spawn_actor(camera_bp, carla.Transform(carla.Location(x=1.5, z=1.4))) camera.listen(lambda image: image.save_to_disk('output/%06d.png' % image.frame))
- 多智能体模拟:通过多客户端架构,多个 Python 脚本可同时控制不同车辆。每个客户端连接到模拟器端口(默认 2000-2002)。
- Chrono 物理模拟:启用 Chrono 库后,车辆动力学更真实,适合研究车辆控制和动态响应。配置方法参考官方文档(https://carla.readthedocs.io/en/latest/adv_chrono/)。
应用场景
- 自动驾驶算法开发
研究人员使用 CARLA 测试感知、规划和控制算法。例如,通过模拟激光雷达和摄像头数据,训练深度学习模型进行目标检测和路径规划。 - 交通场景测试
开发者可在 CARLA 中创建复杂交通场景,如交叉路口碰撞测试或恶劣天气下的驾驶,验证自动驾驶系统的鲁棒性。 - 教育与培训
高校和培训机构使用 CARLA 教授自动驾驶原理。学生通过 Python API 实现简单控制算法,学习传感器数据处理和车辆控制。 - 多智能体研究
CARLA 的多客户端架构适合研究多车辆协同驾驶,模拟车队通信或竞争性驾驶场景。
QA
- CARLA 支持哪些操作系统?
CARLA 官方支持 Ubuntu 18.04 和 20.04,Windows 7 及以上版本。MacOS 暂无官方支持,但社区有部分非官方解决方案。 - 如何解决编译过程中的依赖问题?
确保安装所有依赖(如 CMake、Ninja)。运行CarlaSetup.sh
脚本会自动安装缺失依赖。若失败,检查官方 FAQ(https://carla.readthedocs.io/en/latest/faq/)。 - 可以离线运行 CARLA 吗?
是的,CARLA 支持离线运行。下载预编译包或编译源码后,无需联网即可运行模拟器和脚本。 - 如何获取更多地图?
下载额外地图包(如 Town06、Town07)或使用 RoadRunner 创建自定义地图,导入 OpenDRIVE 文件到 CARLA。