CARLA(Car Learning to Act)是面向自动驾驶研究的高保真开源仿真器,2017 年由西班牙 Computer Vision Center 团队发布,基于 Unreal Engine 构建,提供城市道路、交通流、行人与可配置的多传感器模型。它解决的核心问题是:实车测试成本高且周期长、极端与危险场景难以安全复现、带标签的多模态数据难以规模化采集。通过 CARLA,研究者可以在 Python 脚本中控制车辆、传感器、天气与 NPC 行为,为感知模型生成合成数据、为强化学习提供训练环境、为规划决策提供闭环评测,并可用 Scenario Runner 复现具体交通场景做回归测试。本篇攻略按「速览卡 → 安装配置 → 快速上手 → 核心能力详解 → 生产部署」的顺序展开,覆盖从本地跑通第一个示例到 Docker 多实例批量采集的完整路径,并在末尾给出同类工具对比、版本迭代、常见误区与面试题。
掌握 CARLA 是 AI 从业者进入自动驾驶仿真的核心技能:它直接支撑 RL/端到端算法的数据生产与闭环评测,是量化评估模型在长尾场景下泛化能力的关键基础设施。
目录
速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。
为什么需要 CARLA:实车测试贵、长尾场景无法安全复现
自动驾驶算法验证高度依赖大规模道路测试:一套配备激光雷达与多相机的测试车成本数十万元,百万公里级验证周期以年计,而暴雨、行人鬼探头、高速突现障碍等长尾场景在公开道路上几乎无法安全复现。即使常规场景表现良好的模型,也会因长尾样本采样不足而在真实环境中暴露系统性问题——这是仿真器存在的根本原因。
CARLA 将道路、车辆、行人、天气与传感器全部置于可编程的数字环境中:Python API 可以精确控制每辆车的速度、每个传感器的位置与参数、天气与光照,甚至逐帧推进仿真(同步模式)。同一个场景可以在数百种配置下反复运行,数据的语义标签由仿真器自动生成,成本主要是算力而非人力。
与同类工具相比,CARLA 的气质是「为自动驾驶任务而设计」:从碰撞检测、车道侵入检测等标注型传感器,到 Leaderboard 评测基准,API 语义直接对齐感知、预测、规划、控制四大模块,学术研究与工业预研的使用面最广。
安装与环境配置:3 步就绪
前置条件:独立 GPU(显存 ≥ 6GB,推荐 8GB+)、约 30GB 磁盘空间、Ubuntu 18.04+/Windows 10+、Python 3.8+。集成显卡无法支撑 Unreal Engine 渲染,会导致启动崩溃或极低帧率。
步骤一·下载并解压预编译包:从 carla.org/download 或 GitHub Releases 获取 CARLA_0.9.16 包(Linux 为 .tar.gz,Windows 为 .zip),解压到纯英文无空格路径(如 ~/carla)。包内包含服务端程序 CarlaUE4 与 PythonAPI/examples 示例脚本目录。
步骤二·安装 Python API:执行 pip3 install carla==0.9.16。注意 pip 安装的只是客户端连接库,仿真器本体是独立的服务端程序;0.9.12 之前的版本不通过 pip 分发,需使用包内 PythonAPI/carla/dist 下的 .egg 文件。
步骤三·启动服务端并验证连接:Linux 下运行启动脚本,性能不足时加 -quality-level=Low 降低画质;随后用一条 Python 命令验证客户端能连上服务端并打印双方版本号。
Windows 用户直接运行 CarlaUE4.exe,客户端验证命令相同。输出形如 0.9.16 0.9.16 即安装成功;若两侧版本号不一致,后续连接会报错。
# 解压预编译包(安装包从 https://carla.org/download 下载)tar -xzf CARLA_0.9.16.tar.gz && cd carla # 安装 Python API(客户端连接库)pip3 install carla==0.9.16 # 启动服务端(远程/无显示器环境需追加 -RenderOffScreen)./CarlaUE4.sh -prefernvidia -quality-level=Low -carla-rpc-port=2000 # 新开终端:验证客户端连通性与版本一致性python3 -c "import carla; c=carla.Client('127.0.0.1',2000); c.set_timeout(5); print(c.get_server_version(), c.get_client_version())"
快速上手:10 分钟跑通第一个仿真
核心思路:CARLA 是客户端-服务器架构,服务端负责渲染与物理,客户端脚本负责「连接 → 选蓝图 → 生成车辆 → 挂传感器 → 开车 → 收数据」。先用官方示例验证环境,再运行最小自定义脚本。
1. 启动服务端:按上文命令运行 CarlaUE4,首次启动需要约 1–2 分钟加载地图。
2. 运行官方手控示例:cd PythonAPI/examples && python3 manual_control.py。可用 WASD 键驾驶生成的车辆、按 C 切换相机视角、按 P 切换自动驾驶,验证交互链路正常。
3. 生成 NPC 车流:另开终端运行 python3 spawn_npc.py -n 50 -w 20,生成 50 辆 NPC 车辆与 20 个行人,观察 Traffic Manager 驱动的交通流。
4. 运行自定义采集脚本:新建 demo.py 粘贴以下代码运行,脚本连接 Town01、生成一辆特斯拉 Model 3 并启用 autopilot,同时以回调方式保存 10 秒 RGB 图像与 LiDAR 点云。
运行结束后 out/ 目录下会得到约 200 帧图像与点云。进阶:将 set_autopilot(True) 换成 vehicle.apply_control(carla.VehicleControl(throttle=0.5, steer=0.0)) 即可手动控制油门与转向,这是后续实现你自己的控制策略的入口。
import carla, random, time, osos.makedirs('out/lidar', exist_ok=True) client = carla.Client('127.0.0.1', 2000)client.set_timeout(15.0)world = client.load_world('Town01') # 加载地图bp_lib = world.get_blueprint_library() # 蓝图库:所有可生成对象 # 1) 生成 ego 车辆vehicle_bp = bp_lib.filter('vehicle.tesla.model3')[0]spawn_point = random.choice(world.get_map().get_spawn_points())vehicle = world.spawn_actor(vehicle_bp, spawn_point) # 2) 挂 RGB 相机(1280x720,车后上方视角)cam_bp = bp_lib.find('sensor.camera.rgb')cam_bp.set_attribute('image_size_x', '1280')cam_bp.set_attribute('image_size_y', '720')cam_tf = carla.Transform(carla.Location(x=-6.0, z=3.0), carla.Rotation(pitch=-15.0))camera = world.spawn_actor(cam_bp, cam_tf, attach_to=vehicle)camera.listen(lambda img: img.save_to_disk(f'out/{img.frame_number:06d}.png')) # 3) 挂 32 线 LiDARlidar_bp = bp_lib.find('sensor.lidar.ray_cast')lidar_bp.set_attribute('channels', '32')lidar = world.spawn_actor(lidar_bp, carla.Transform(carla.Location(z=2.5)), attach_to=vehicle)lidar.listen(lambda data: data.save_to_disk(f'out/lidar/{data.frame_number:06d}.ply')) vehicle.set_autopilot(True) # 交给 Traffic Manager 自动驾驶try: time.sleep(10) # 采集 10 秒数据finally: camera.stop(); lidar.stop(); vehicle.destroy()
核心能力详解:4 大支柱
支柱一·多传感器仿真与合成数据生产。传感器通过 JSON 属性配置,官方提供 RGB/深度/语义分割/光流相机、射线 LiDAR 与语义 LiDAR、Radar、GNSS、IMU,另有专门用于自动标注的碰撞检测、车道侵入与障碍物检测传感器。语义分割相机输出 32 类逐像素掩码,可直接作为训练标签。噪声模型比真实传感器简化,需配合 domain randomization(随机天气与光照)缩小 sim-to-real gap。
支柱二·Traffic Manager 与 NPC 交通流。Traffic Manager 是运行在 CPU 端的规则控制器,为 NPC 与设置了 autopilot 的车辆提供跟车、变道、限速、红绿灯等行为;可通过 API 调整全局车间距、忽略红绿灯比例、禁止变道等,用于构造不同拥堵与攻击性水平的交通流。车流密度与行为参数直接决定被测算法的难度,是构建鲁棒性测试数据的关键旋钮。
支柱三·Scenario Runner 与场景化测试。Scenario Runner 是官方场景工具,支持 OpenScenario 与 OpenDRIVE 标准,可在指定地图上定义起点、天气、目标速度、触发条件与事件序列,精确复现「前车急刹」「行人横穿」「匝道汇流」等原子场景。Leaderboard 2.0 在此基础上提供整条路线的闭环评测,按路线完成率与违规扣分计算 Driving Score。
支柱四·仿真控制与数据管道。同步模式(synchronous_mode + fixed_delta_seconds)让物理按固定步长推进,每次 tick 得到与传感器严格对齐的帧,是训练与评测的推荐模式;异步模式适合交互式驾驶。支持 world.start_recorder() 录制与 client.replay_file() 回放、天气参数(云量/降雨/风速)与预设切换、spectator 视角控制。配合批处理脚本可构建「多城镇 × 多天气 × 多车流」的数据矩阵。
生产部署与监控:从上线到运维
部署方式一·Docker 化。官方提供 carlasim/carla 镜像。宿主机安装 nvidia-container-toolkit 后,以 docker run --rm --gpus all -p 2000-2002:2000-2002 carlasim/carla:0.9.16 启动;无显示器的云服务器需在容器内以 -RenderOffScreen 无头渲染模式运行,避免 Vulkan 初始化失败。端口 2000 为 RPC 通信,2001/2002 为传感器数据流。
部署方式二·多实例数据工厂。单实例吞吐受物理步长限制(20Hz 同步模式下每个 tick 内完成物理计算+渲染),客户端多开不会加速。横向扩展的正确方式是启动多个服务端实例:每个实例用 -carla-rpc-port=2000/3000/4000... 指定不同 RPC 端口,或按 GPU 拆分 Docker 容器,各实例固定城镇+天气组合,由调度脚本连接并下发采集任务,数据统一写入共享存储。
可观测性。监控维度包括:①服务端启动日志(地图加载失败、端口占用);②客户端版本一致性(比对 get_server_version 与 get_client_version);③传感器回调帧率(统计每秒递增的 frame_number,连续卡顿即告警);④GPU 利用率与显存占用(nvidia-smi);⑤world.get_snapshot() 获取当前时间步与场景内 actor 数量。录制产生的 .log 文件可事后回放,用于复现与定位问题。
<p class="para-label">避坑清单:</p>
<ul class="dash-list"><li>客户端与服务端版本必须严格一致:0.9.15 的 Python API 连 0.9.16 服务端会直接报错或行为异常,升级时两端同步更换,0.9.12 之前的版本不走 pip 分发、需用 .egg 文件。</li><li>无显示器服务器直接运行会 Vulkan 初始化失败:远程/云主机上必须加 -RenderOffScreen 参数,或用 Docker + nvidia-container-toolkit 无头运行,否则 CarlaUE4 无法启动。</li><li>同步模式忘记 tick 会「假死」:开启 synchronous_mode 后主循环每步必须调用 world.tick() 推进仿真,wait_for_tick() 属于异步模式;两者混用会导致传感器无数据或客户端超时。</li></ul>
| 维度 | CARLA | AirSim | SUMO | NVIDIA DRIVE Sim |
|---|---|---|---|---|
| 定位 | 高保真自动驾驶仿真器,面向传感器数据与场景评测 | 通用机器人/无人机/自动驾驶仿真平台 | 开源交通流仿真器,无传感器模型 | 工业级云仿真平台,面向车企与 Tier1 |
| 编排范式 | 客户端-服务器,Python API 全程控制(同步/异步) | 客户端-服务器,C++/Python API,无人机优先 | TraCI 客户端-服务器 + XML 路网配置 | 云原生,基于 Omniverse 场景图与 API |
| 类型约束 | 传感器类型丰富、属性可 JSON 配置,自动驾驶任务语义对齐 | 城市细节弱于 CARLA,深度偏通用机器人 | 强约束于路网/路权模型,无传感器输出 | 类型约束由 USD 场景图定义,物理与渲染分离 |
| 学习曲线 | 中高:安装包大、GPU 要求高、版本严格匹配 | 中:文档齐全,无人机 DEMO 上手快 | 低-中:接口简单,但只覆盖交通流 | 高:商用平台,需培训与企业协议 |
| 生态集成 | ROS/ROS2 bridge、Scenario Runner、Leaderboard 2.0 | ROS、MavLink、PX4 无人机生态 | TraCI、Python/Matlab、SUMO 路网工具链 | NVIDIA 生态(Omniverse/Isaac/DRIVE OS) |
| 生产部署 | Docker 多实例 + 无头渲染,可并行批量采集 | 本地/集群部署,多机方案需自行搭建 | 批处理友好,低资源占用,适合大规模路网 | 云/数据中心托管,按订阅与算力计费 |
| License | MIT(可商用) | MIT | EPL-2.0 | 商用闭源 |
| 适合谁 | 学术研究、算法团队、RL 训练与仿真测试 | 无人机/多机器人研究者 | 交通规划、路网优化、车流仿真团队 | 车企、Tier1 与高保真验证预算充足的团队 |
选型建议:需要传感器级数据、做端到端或 RL 算法验证,选 CARLA(开源且最贴近自动驾驶任务);主要研究无人机与多机器人,选 AirSim;只做宏观交通流与路网优化,选 SUMO(轻量、无传感器);车企做量产级验证且预算充足,选 NVIDIA DRIVE Sim。实践中最常见的组合是 CARLA 做传感器仿真、SUMO 提供真实路网流量输入。
版本迭代
CARLA 0.9 系列自 2019 年全面重写后保持固定节奏:中间版本(0.9.11–0.9.14)以稳定性、传感器属性与文档改进为主;0.9.15 与 0.9.16 是里程碑式发布,分别引入新地图+车辆物理重构、渲染引擎升级+新版评测基准。(截至训练数据,0.9.16 之后可能有更新版本)
| 版本 | 时间 | 变化 | 提升 |
|---|---|---|---|
| 0.9.0 | 2019-07 | 9 系首个正式版 | 重写仿真核心与 Python API,启用 MIT 开源协议 |
| 0.9.10 | 2021-06 | 新地图 Town10 | 新增大型城区地图 Town10,扩展街道网格与建筑密度 |
| 0.9.15 | 2023-08 | 新地图与车辆物理重构 | 新增 Town12 高速/城乡复合地图,重构轮胎与悬架动力模型 |
| 0.9.16 | 2024-09 | 引擎升级与 Leaderboard 2.0 | 渲染引擎升级至 Unreal Engine 5 管线,配套新评测场景与 API |
CARLA 的版本策略是「主版本内保持 API 相对稳定、小版本迭代地图与物理」。0.9.15 与 0.9.16 之间的跳变较大,涉及地图格式、车辆物理与渲染管线,升级前务必核对 Changelog 与现有脚本的 API 变更。官方未发布跨版本统一的仿真器评分,Leaderboard 的 Route Completion / Infractions / Driving Score 是对参赛智能体模型的评分,不宜用于版本间横向比较。新项目直接采用 0.9.16;需要复用旧教程或特定 ROS2 桥接版本时,先确认社区对应的 0.9.x 镜像与 API 差异。
AI 应用场景
合成数据批量生产与感知模型训练
阶段:数据生产与合成数据
解决的问题:人工标注一帧语义分割图像成本高,雨天、夜间、罕见物体等长尾样本难以规模化采集。CARLA 的多传感器仿真可自动产出逐像素标签(32 类语义分割)与时间对齐的 LiDAR 点云,标签成本几乎为零。
具体案例:典型做法是用 8–16 个 Docker 实例按「城镇 × 天气 × 时段」组合建立数据矩阵,每个 GPU 实例在同步模式下约每秒产出 10–20 帧对齐数据,8 实例集群日均可产数百万帧原始样本;经语义标签过滤后用于分割模型预训练,相比人工标注,单位有效样本成本通常降低约一个数量级。
强化学习与闭环策略评测
阶段:模型训练与闭环评测
解决的问题:强化学习需要百万级交互试错,实车无法承受且实验不可复现。CARLA 同步模式固定物理步长,保证每个训练 step 对应相同仿真时长;跨城镇迁移、随机天气与 NPC 突变等对抗扰动可编程注入。
具体案例:常用协议是在 Town01–05 训练、在未见过的城镇评测泛化能力;或提交到 CARLA Leaderboard 2.0 官方路由,按 Driving Score(路线完成率与违规扣分)排名。典型端到端基线模型在 4×A100 上训练约一周可完成验证(资源量级参考,效果因模型而异)。
安全关键场景回归测试
阶段:仿真测试与安全验证
解决的问题:前车急刹、行人横穿、匝道汇流等危险场景在实车上不可安全复现,人工路测无法频繁执行。Scenario Runner 用 OpenScenario 标准描述场景,可精确重放并自动判定通过/失败。
具体案例:在 CI 流水线中每次代码合并后自动运行「3 镇 × 20 场景」共 60 个用例,约 2 小时内全部完成并输出通过/失败与违规统计,将版本回归周期从周级压缩到小时级;场景库可复用,新增场景只需补充 OpenScenario 描述文件。
常见误区
误区我执行了 pip install carla,import 也成功了,为什么连不上?是不是电脑配置不行?
正解pip 安装的只是客户端 SDK(连接库),仿真器本体是独立的 CarlaUE4 服务端程序(约 20–30GB),必须先下载预编译包或 Docker 镜像并启动服务端,客户端才能连接 2000 端口。另外 0.9.12 之前的版本不通过 pip 分发,需使用包内 PythonAPI/carla/dist 下的 .egg 文件安装,不同版本安装方式不同。
为何常见:「pip install 就是装好了整个软件」是通用错误预期;CARLA 的客户端-服务器分离架构容易被忽略,且各版本官方推荐安装方式不一致。
误区我服务端是 0.9.15,客户端 pip 装了 0.9.16,高版本应该向下兼容吧?
正解CARLA 要求客户端与服务端版本严格一致,0.9.x 小版本之间也不保证 API 与 RPC 协议兼容。版本不匹配时连接会报错或行为异常。升级时两端必须同步升级到同一版本,同时确认 Python 解释器版本与官方要求匹配(0.9.15+ 要求 Python 3.8+,更早版本绑定 3.7)。
为何常见:很多框架允许客户端版本新于服务端;而 CARLA 的 RPC 协议与消息格式与版本强绑定,小版本间经常变动。
误区在 CARLA 里训练好的分割模型,直接拿实车传感器数据应该也能用吧?
正解CARLA 的相机与 LiDAR 是合成渲染输出,噪声模型(气象、反射、材料特性等)远简于真实物理传感器,存在 sim-to-real gap。通常需要用 domain randomization(随机天气、光照、纹理)和 sim-to-real 迁移技术提升实车泛化。CARLA 适合算法开发与趋势验证,不能替代实车标定与硬件在环测试。
为何常见:宣传中的「高保真」图像与真实照片高度相似,容易让人忽略底层噪声模型与真实物理的差异。
误区CARLA 的车会自己开,那它是不是内置了感知+规划算法?
正解autopilot 由 Traffic Manager 提供,是纯规则式控制器(跟车、限速、换道、红绿灯规则),不包含任何视觉/激光感知或学习模块。要做算法研究,需要自己实现感知与规划,或用 Leaderboard 的基准 Agent 作为对比。CARLA 提供的是「仿真环境」而非「可上路的自动驾驶系统」。
为何常见:界面里车辆「自己会开」容易造成误解;实际上底层只是规则跟随,没有任何学习成分。
误区我在一个 CARLA 服务端上多开几个 Python 脚本,数据采集速度就能翻倍吧?
正解一个服务端实例对应单一 world,仿真速度受单实例物理+渲染吞吐限制(同步模式下由 fixed_delta_seconds 与 tick 频率决定),客户端数量不是瓶颈。正确的扩展方式是启动多个服务端实例:分别绑定不同 RPC 端口或 Docker 容器、不同 GPU、不同城镇与天气,再由调度脚本并行分发采集任务。
为何常见:「多线程=并行加速」在 I/O 密集型任务成立;CARLA 的数据生产瓶颈在单实例仿真吞吐,而非客户端连接数。
面试题
Q1. CARLA 服务端基于哪个引擎构建,负责渲染与物理仿真?
- A.Unreal Engine← 正确答案
- B.Unity 引擎
- C.Godot 引擎
- D.OGRE 3D 库
答案:A。CARLA 服务端以 Unreal Engine 为宿主,渲染、物理与场景管理均由 UE 提供,Python 客户端通过 RPC 与之通信。Unity、Godot 是通用游戏引擎但非 CARLA 所用,OGRE 3D 是纯渲染库,不提供物理与场景管理。
Q2. CARLA 服务端默认的 RPC 通信端口是哪一个?
- A.2000← 正确答案
- B.8080
- C.3000
- D.7000
答案:A。CARLA 默认在 2000 端口提供 RPC 服务,2001/2002 用于传感器数据流;多实例部署时用 -carla-rpc-port 分别指定不同端口。8080/3000/7000 分别是 HTTP 代理、Web 开发与文件服务的常见端口,与 CARLA 无关。
Q3. 关于 CARLA 的开源许可证,说法正确的是?
- A.MIT 协议,可自由商用与修改← 正确答案
- B.Apache 2.0,需额外专利授权
- C.GPL-3.0,衍生代码必须开源
- D.双许可,商用必须付费
答案:A。CARLA 自 0.9.0 起采用 MIT 许可证,允许商用、修改与再分发,仅需保留版权声明。Apache 2.0、GPL-3.0 与商业双许可都不是 CARLA 的实际协议,选择时注意区分「开源协议」与「商用支持服务」。
Q4. 在同步模式下,客户端推进仿真一帧的正确方法是?
- A.调用 world.tick()← 正确答案
- B.调用 world.wait_for_tick()
- C.使用 time.sleep() 阻塞线程
- D.调用 client.reload_world()
答案:A。同步模式下服务端只有收到客户端的 tick 请求才推进一个时间步,训练循环每步必须显式调用 world.tick()。B 是异步模式下等待下一次渲染帧的接口,同步模式下会阻塞或超时;C 只阻塞本地线程、不推进仿真;D 会重置整个 world,不能作为逐帧推进手段。
Q5. Traffic Manager(交通管理器)在 CARLA 中的职责是?
- A.生成并控制 NPC 车辆的规则化驾驶行为← 正确答案
- B.管理场景文件的加载与释放
- C.负责传感器数据的采集与存储
- D.解析并执行 OpenScenario 场景脚本
答案:A。Traffic Manager 是 CPU 端规则控制器,为 NPC 与 autopilot 车辆提供跟车、变道、限速、红绿灯等行为,可调车间距与违规比例。场景加载属于 world/地图层,传感器数据属于 sensor API,OpenScenario 解析属于 Scenario Runner,均不是 TM 的职责。
Q6. 在 CARLA 中创建一辆可自动驾驶的轿车,正确的操作顺序是?
- A.获取蓝图→选择出生点→spawn_actor→set_autopilot(True)← 正确答案
- B.load_world→tick→set_autopilot(True)→spawn_actor
- C.直接 connect→set_autopilot(True)→生成行人
- D.spawn_actor→load_world→set_autopilot(False)
答案:A。生成车辆需先从 blueprint_library 选取蓝图(如 vehicle.tesla.model3),再从 get_spawn_points() 取合法出生点,spawn_actor 生成 actor,最后 set_autopilot(True) 交给 Traffic Manager。顺序颠倒会因 actor 不存在、位置非法或未加载 world 而失败。
Q7. 关于 CARLA 传感器数据的获取方式,正确的说法有哪些?
- A.listen() 注册回调并配合队列读取数据← 正确答案
- B.回调中通过队列缓冲避免处理慢丢帧← 正确答案
- C.不注册回调时数据会自动保存到磁盘
- D.必须轮询 get_state() 接口获取最新帧
答案:AB。CARLA 传感器数据流通过 sensor.listen(callback) 下发,官方示例通常配合 queue.Queue 在回调中缓冲、消费端逐帧取出,防止处理速度跟不上时丢帧。未注册回调则不产生任何数据(C 错);API 中不存在通用的 get_state() 轮询接口(D 错)。
Q8. 关于 CARLA 客户端与服务端的版本匹配,正确的理解有哪些?
- A.客户端与服务端版本必须严格一致← 正确答案
- B.可以随意混装任意版本互不干扰
- C.0.9.x 小版本之间 API 可能有破坏性变更← 正确答案
- D.0.9.15 客户端可直接连接 0.9.16 服务端
答案:AC。CARLA 的 RPC 协议与消息格式和版本强绑定,客户端必须与服务端同版本,B 与 D 均违反该要求。0.9.x 之间出现过 API 调整(构造参数、传感器属性等),升级前需阅读 Changelog 并回归测试脚本。
Q9. 同步模式下设置 fixed_delta_seconds=0.05 的作用是?
- A.固定物理步长为 20Hz,保证可复现与数据对齐← 正确答案
- B.提高图像分辨率以获得更清晰的训练数据
- C.降低仿真帧率以减轻客户端计算负载
- D.让相机传感器自动对焦与曝光
答案:A。fixed_delta_seconds=0.05 表示每次 tick 推进 20ms 仿真时间,物理与传感器输出严格对齐同一时间步,RL 训练中每个 step 对应相同仿真时长,保证实验可复现。分辨率由 image_size_x/y 控制,与物理步长无关;该参数也不用于减负或相机控制。
Q10. 在无显示器服务器上并行运行多个 CARLA 实例采集数据,合理的方案有哪些?
- A.Docker 容器各实例映射不同宿主机端口并透传 GPU← 正确答案
- B.多个实例共用 2000 端口以简化配置
- C.使用 -RenderOffScreen 无头模式进行离线渲染← 正确答案
- D.用集成显卡替代独立 GPU 以支持更多实例
答案:AC。多实例扩展的关键是端口隔离(各实例用 -carla-rpc-port 或 Docker 映射 2000/3000/4000 等不同端口)与 GPU 透传(nvidia-container-toolkit);无显示器环境加 -RenderOffScreen 避免 Vulkan 初始化失败。共用端口会导致连接冲突;集成显卡缺独立显存与驱动透传,无法支撑 UE 渲染。
参考来源
- webpageCARLA 官方网站项目介绍、安装包下载入口与官方新闻