CARLA(Car Learning to Act)是面向自动驾驶研究的高保真开源仿真器,2017 年由西班牙 Computer Vision Center 团队发布,基于 Unreal Engine 构建,提供城市道路、交通流、行人与可配置的多传感器模型。它解决的核心问题是:实车测试成本高且周期长、极端与危险场景难以安全复现、带标签的多模态数据难以规模化采集。通过 CARLA,研究者可以在 Python 脚本中控制车辆、传感器、天气与 NPC 行为,为感知模型生成合成数据、为强化学习提供训练环境、为规划决策提供闭环评测,并可用 Scenario Runner 复现具体交通场景做回归测试。本篇攻略按「速览卡 → 安装配置 → 快速上手 → 核心能力详解 → 生产部署」的顺序展开,覆盖从本地跑通第一个示例到 Docker 多实例批量采集的完整路径,并在末尾给出同类工具对比、版本迭代、常见误区与面试题。

岗位关联

掌握 CARLA 是 AI 从业者进入自动驾驶仿真的核心技能:它直接支撑 RL/端到端算法的数据生产与闭环评测,是量化评估模型在长尾场景下泛化能力的关键基础设施。

目录
  1. 为什么需要 CARLA:实车测试贵、长尾场景无法安全复现
  2. 安装与环境配置:3 步就绪
  3. 快速上手:10 分钟跑通第一个仿真
  4. 核心能力详解:4 大支柱
  5. 生产部署与监控:从上线到运维
  6. 版本迭代
  7. AI 应用场景
  8. 常见误区
  9. 面试题
  10. 参考来源
工具类型
自动驾驶仿真器(开源·基于 Unreal Engine)
开发商
Computer Vision Center(西班牙巴塞罗那,Intel/丰田研究院参与支持)
开源协议
MIT(可商用)
GitHub Stars
无
主要语言
Python(客户端 API)/ C++(服务端)
当前版本
0.9.16(2024-09 发布)
安装方式
下载预编译包(约 25GB)+ pip install carla
下载地址
上手难度
★★★★☆(较难:需独立 GPU 且版本必须匹配)
适合人群
自动驾驶算法工程师、仿真测试工程师、强化学习研究者
同类工具
AirSim · SUMO · NVIDIA DRIVE Sim
托管服务
无

速览卡是工具类内容的固定首屏模块: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 即安装成功;若两侧版本号不一致,后续连接会报错。

bash11 行
# 解压预编译包(安装包从 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)) 即可手动控制油门与转向,这是后续实现你自己的控制策略的入口。

python32 行
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>

维度CARLAAirSimSUMONVIDIA DRIVE Sim
定位高保真自动驾驶仿真器,面向传感器数据与场景评测通用机器人/无人机/自动驾驶仿真平台开源交通流仿真器,无传感器模型工业级云仿真平台,面向车企与 Tier1
编排范式客户端-服务器,Python API 全程控制(同步/异步)客户端-服务器,C++/Python API,无人机优先TraCI 客户端-服务器 + XML 路网配置云原生,基于 Omniverse 场景图与 API
类型约束传感器类型丰富、属性可 JSON 配置,自动驾驶任务语义对齐城市细节弱于 CARLA,深度偏通用机器人强约束于路网/路权模型,无传感器输出类型约束由 USD 场景图定义,物理与渲染分离
学习曲线中高:安装包大、GPU 要求高、版本严格匹配中:文档齐全,无人机 DEMO 上手快低-中:接口简单,但只覆盖交通流高:商用平台,需培训与企业协议
生态集成ROS/ROS2 bridge、Scenario Runner、Leaderboard 2.0ROS、MavLink、PX4 无人机生态TraCI、Python/Matlab、SUMO 路网工具链NVIDIA 生态(Omniverse/Isaac/DRIVE OS)
生产部署Docker 多实例 + 无头渲染,可并行批量采集本地/集群部署,多机方案需自行搭建批处理友好,低资源占用,适合大规模路网云/数据中心托管,按订阅与算力计费
LicenseMIT(可商用)MITEPL-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.02019-079 系首个正式版重写仿真核心与 Python API,启用 MIT 开源协议
0.9.102021-06新地图 Town10新增大型城区地图 Town10,扩展街道网格与建筑密度
0.9.152023-08新地图与车辆物理重构新增 Town12 高速/城乡复合地图,重构轮胎与悬架动力模型
0.9.162024-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 服务端基于哪个引擎构建,负责渲染与物理仿真?

单选题 · easy

  • 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 通信端口是哪一个?

单选题 · easy

  • 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 的开源许可证,说法正确的是?

单选题 · easy

  • 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. 在同步模式下,客户端推进仿真一帧的正确方法是?

单选题 · mid

  • 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 中的职责是?

单选题 · mid

  • A.生成并控制 NPC 车辆的规则化驾驶行为← 正确答案
  • B.管理场景文件的加载与释放
  • C.负责传感器数据的采集与存储
  • D.解析并执行 OpenScenario 场景脚本

答案:A。Traffic Manager 是 CPU 端规则控制器,为 NPC 与 autopilot 车辆提供跟车、变道、限速、红绿灯等行为,可调车间距与违规比例。场景加载属于 world/地图层,传感器数据属于 sensor API,OpenScenario 解析属于 Scenario Runner,均不是 TM 的职责。

Q6. 在 CARLA 中创建一辆可自动驾驶的轿车,正确的操作顺序是?

单选题 · mid

  • 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 传感器数据的获取方式,正确的说法有哪些?

多选题 · mid

  • A.listen() 注册回调并配合队列读取数据← 正确答案
  • B.回调中通过队列缓冲避免处理慢丢帧← 正确答案
  • C.不注册回调时数据会自动保存到磁盘
  • D.必须轮询 get_state() 接口获取最新帧

答案:AB。CARLA 传感器数据流通过 sensor.listen(callback) 下发,官方示例通常配合 queue.Queue 在回调中缓冲、消费端逐帧取出,防止处理速度跟不上时丢帧。未注册回调则不产生任何数据(C 错);API 中不存在通用的 get_state() 轮询接口(D 错)。

Q8. 关于 CARLA 客户端与服务端的版本匹配,正确的理解有哪些?

多选题 · hard

  • 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 的作用是?

单选题 · hard

  • A.固定物理步长为 20Hz,保证可复现与数据对齐← 正确答案
  • B.提高图像分辨率以获得更清晰的训练数据
  • C.降低仿真帧率以减轻客户端计算负载
  • D.让相机传感器自动对焦与曝光

答案:A。fixed_delta_seconds=0.05 表示每次 tick 推进 20ms 仿真时间,物理与传感器输出严格对齐同一时间步,RL 训练中每个 step 对应相同仿真时长,保证实验可复现。分辨率由 image_size_x/y 控制,与物理步长无关;该参数也不用于减负或相机控制。

Q10. 在无显示器服务器上并行运行多个 CARLA 实例采集数据,合理的方案有哪些?

多选题 · extreme

  • A.Docker 容器各实例映射不同宿主机端口并透传 GPU← 正确答案
  • B.多个实例共用 2000 端口以简化配置
  • C.使用 -RenderOffScreen 无头模式进行离线渲染← 正确答案
  • D.用集成显卡替代独立 GPU 以支持更多实例

答案:AC。多实例扩展的关键是端口隔离(各实例用 -carla-rpc-port 或 Docker 映射 2000/3000/4000 等不同端口)与 GPU 透传(nvidia-container-toolkit);无显示器环境加 -RenderOffScreen 避免 Vulkan 初始化失败。共用端口会导致连接冲突;集成显卡缺独立显存与驱动透传,无法支撑 UE 渲染。

参考来源