课程首页 › M1 环境搭建

模块总览与架构决策

动手之前,先把三个关键决策想清楚:要不要 CARLA、ROS2 放在哪一层、 怎么绕开版本地狱。这一节不写代码,但它决定了后面每一节的顺畅程度。

课程 6 节 预计 1.5 周 难度 ★★☆☆☆ 产出 可运行的开发环境
▸ 为什么环境单独成一个模块

很多人转行失败不是因为算法难,而是倒在环境上——装了三天 CUDA 还没跑通, 意志力就消耗光了。这个模块的目标是:用一周时间一次性解决所有环境问题, 之后专注算法。

决策一:要不要用 CARLA?

结论:必须要。而且它是你项目和别人拉开差距的关键。

你手上有 nuScenes 这样的公开数据集,为什么还需要仿真器?核心原因是—— nuScenes 只能做开环评测。

开环评测(nuScenes)闭环评测(CARLA)
怎么评 模型输出轨迹,和人类真实轨迹比对打分 车真的开起来,看它能否安全到达
误差累积 看不到——每一帧都用真实历史重置 能看到——开偏了就一直偏下去
能否交互 不能,其他车辆是录像回放 能,其他车会对你的行为做出反应
简历表述 「我在数据集上训了个模型」 「我的模型在仿真环境中自主驾驶了 X 公里」
▸ 论文依据

你读过的 UniAD 和 VAD 都诚实指出了开环评测的局限—— nuScenes 上的规划指标是开环的,和真实闭环驾驶差距不小。后来 Bench2Drive 等工作专门做 CARLA 闭环评测来补这个短板。

所以这不是我的个人偏好,是这个领域公认的评测演进方向。

除了评测,CARLA 还解决三个实际问题:

  • 数据可定制——你想要雨夜行人横穿的数据?直接生成。nuScenes 里没有就是没有。
  • 标注免费——仿真器知道每个物体的精确位置,3D 框自动生成,不用花钱标注。
  • 危险场景可复现——想测试紧急避障?随便撞,不会有人受伤。

决策二:ROS2 放在哪一层?

结论:要用,但不是第一天就用。这个位置放错了会浪费你大量时间。

✗ 错误做法:一开始就套 ROS2 配 ROS2 环境 卡 3 天 配 ros-bridge 版本地狱,再卡 3 天 意志力耗尽 还没开始写算法 ✓ 正确做法:算法先行,工程后置 Python 直连 CARLA 1 小时搞定 M2-M4 专注算法 训模型、跑闭环 M5 再引入 ROS2 此时你已有可部署的模型 节点化 + 车云部署 工程化差异优势 核心逻辑:ROS2 的价值在「工程化和部署」,不在「算法学习」 算法阶段用它只会增加调试负担,部署阶段用它才是加分项
图 · ROS2 的正确引入时机。M1-M4 用纯 Python,M5 才做节点化改造。
▸ 但本模块仍有一节讲 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 分钟做隔离,能省掉后面几十小时的排查。

本模块六节课

完成本模块的验收标准

四节课做完后,你应该能勾掉下面每一项(点击可标记完成,本地保存):

  • nvidia-smi 能看到 L20,且你知道当前有多少显存可用
  • conda 环境 ad 已建立,torch.cuda.is_available() 返回 True
  • CARLA 能以无头模式启动,Python 客户端能连上并生成车辆
  • 能用 Python 脚本让 CARLA 里的车动起来,并保存一张相机图像
  • nuScenes mini 数据集已下载,devkit 能正常读取并渲染一帧
  • 标定验证工具能跑,理解旋转误差为何比平移误差危险
  • 理解 ROS2 的引入时机,知道 M6 时该怎么做

本节小结

  • CARLA 必须要——它提供闭环评测能力,是简历上「模型自主驾驶」这句话的来源
  • ROS2 后置到 M5——算法阶段用它只增加负担,部署阶段用它才是加分项
  • 用隔离对抗版本地狱——每项目独立 conda 环境,跨版本用 Docker
  • 本模块目标是一周内一次性解决环境问题,之后专注算法