▸ 为什么环境单独成一个模块
很多人转行失败不是因为算法难,而是倒在环境上——装了三天 CUDA 还没跑通, 意志力就消耗光了。这个模块的目标是:用一周时间一次性解决所有环境问题, 之后专注算法。
决策一:要不要用 CARLA?
结论:必须要。而且它是你项目和别人拉开差距的关键。
你手上有 nuScenes 这样的公开数据集,为什么还需要仿真器?核心原因是—— nuScenes 只能做开环评测。
| 开环评测(nuScenes) | 闭环评测(CARLA) | |
|---|---|---|
| 怎么评 | 模型输出轨迹,和人类真实轨迹比对打分 | 车真的开起来,看它能否安全到达 |
| 误差累积 | 看不到——每一帧都用真实历史重置 | 能看到——开偏了就一直偏下去 |
| 能否交互 | 不能,其他车辆是录像回放 | 能,其他车会对你的行为做出反应 |
| 简历表述 | 「我在数据集上训了个模型」 | 「我的模型在仿真环境中自主驾驶了 X 公里」 |
▸ 论文依据
你读过的 UniAD 和 VAD 都诚实指出了开环评测的局限—— nuScenes 上的规划指标是开环的,和真实闭环驾驶差距不小。后来 Bench2Drive 等工作专门做 CARLA 闭环评测来补这个短板。
所以这不是我的个人偏好,是这个领域公认的评测演进方向。
除了评测,CARLA 还解决三个实际问题:
- 数据可定制——你想要雨夜行人横穿的数据?直接生成。nuScenes 里没有就是没有。
- 标注免费——仿真器知道每个物体的精确位置,3D 框自动生成,不用花钱标注。
- 危险场景可复现——想测试紧急避障?随便撞,不会有人受伤。
决策二:ROS2 放在哪一层?
结论:要用,但不是第一天就用。这个位置放错了会浪费你大量时间。
▸ 但本模块仍有一节讲 ROS2
第 1.4 节会讲 ROS2 的集成方案设计——包括你之前踩过的 CARLA ros-bridge 在 Ubuntu 24.04 / ROS2 Jazzy 上的版本坑,以及 Docker 解法。
这一节可以先读不做,等推进到 M5 时再回来实操。 放在这里是为了让你在设计阶段就知道最终形态。
决策三:怎么绕开版本地狱
自动驾驶技术栈的版本兼容性极其糟糕,这是客观事实。你会遇到的典型冲突:
| 冲突点 | 问题 | 本课程的对策 |
|---|---|---|
| CUDA 12.6 vs mmcv 1.x | BEVFormer 依赖老版 mmcv,对新 CUDA 支持差 | Docker 隔离 + 指定兼容版本组合 |
| CARLA vs ROS2 版本 | 官方 ros-bridge 主线针对 Foxy | 你的 22.04 可原生装 Humble,用社区 Humble 分支;Docker 变为备选 |
| 多项目依赖冲突 | BEVFormer / VAD / VLA 各需不同 torch 版本 | 独立 conda 环境,互不干扰 |
| 共享 GPU | L20 上有别人的进程,不能随便占满显存 | 显存限制 + 礼貌用法(1.1 节详解) |
▸ 核心原则:隔离
不要试图在一个环境里装下所有东西。每个项目一个 conda 环境,跨版本的东西用 Docker。 多花 10 分钟做隔离,能省掉后面几十小时的排查。
本模块六节课
LESSON 1.1
L20 开发环境准备
Conda 环境、PyTorch 安装、共享 GPU 的礼貌用法、显存限制、远程开发配置。
LESSON 1.2
CARLA 仿真器部署
安装、无头模式、同步模式原理、传感器队列、第一个完整的采集脚本。
LESSON 1.3
nuScenes 数据集
下载与组织、关系型结构解析、四层坐标系、3D 框投影验证。
LESSON 1.4 · 新增
多传感器标定基础
内参外参、CARLA 坐标系陷阱、点云投影验证、误差敏感性实验。工程岗必备。
LESSON 1.5
ROS2 集成方案
Humble 原生安装、自写轻量桥接、rviz2 可视化。可先读不做。
完成本模块的验收标准
四节课做完后,你应该能勾掉下面每一项(点击可标记完成,本地保存):
nvidia-smi能看到 L20,且你知道当前有多少显存可用- conda 环境
ad已建立,torch.cuda.is_available()返回 True - CARLA 能以无头模式启动,Python 客户端能连上并生成车辆
- 能用 Python 脚本让 CARLA 里的车动起来,并保存一张相机图像
- nuScenes mini 数据集已下载,devkit 能正常读取并渲染一帧
- 标定验证工具能跑,理解旋转误差为何比平移误差危险
- 理解 ROS2 的引入时机,知道 M6 时该怎么做
本节小结
- CARLA 必须要——它提供闭环评测能力,是简历上「模型自主驾驶」这句话的来源
- ROS2 后置到 M5——算法阶段用它只增加负担,部署阶段用它才是加分项
- 用隔离对抗版本地狱——每项目独立 conda 环境,跨版本用 Docker
- 本模块目标是一周内一次性解决环境问题,之后专注算法
▸ 关联论文
本节涉及的评测方法论,可回看:
⑤ UniAD 第 8 节讲了开环评测的局限,以及为什么需要 CARLA 闭环评测 → ⑥ VAD 第 6 节的 FPS 对比说明了实时性为何重要,也解释了硬件条件对结论的影响 →