1. 课程导入

欢迎进入《ROS2自动驾驶系统部署与运行管理工程》。在真正动手把感知、定位、规划、控制等模块装进一辆自动驾驶小车之前,我们需要先建立一张"全局地图":这门课到底要学什么、按什么顺序学、最终能交付什么。本节作为课程导入,将帮助你理解整体学习路径、核心能力模型、课程项目与工具链概览,为后续 29 章的学习打下认知框架。

一、为什么自动驾驶系统需要"部署与运行管理"

很多初学者把自动驾驶等同于"写算法":调通一个 YOLO 检测、跑通一个 A* 路径规划,就以为大功告成。但在真实工程中,算法只是系统的一小部分。一个能上车的自动驾驶系统,必须解决以下问题:

  • 部署问题:代码如何从开发机迁移到车载计算平台?依赖库、ROS2 版本、驱动如何一致?
  • 运行问题:几十个节点如何编排启动?谁先谁后?崩溃了如何自动恢复?
  • 管理问题:如何监控 CPU/GPU/内存/网络?如何记录数据、回放复现问题?如何做版本升级与回滚?

这正是本课程的核心:把"能跑的算法"变成"能稳定运行的系统"。ROS2 提供了节点、话题、服务、动作、参数、生命周期、组件容器、DDS 通信等机制,而部署与运行管理则是把这些机制组织成一套可交付、可运维的工程体系。

核心观点:自动驾驶系统的竞争力,不仅在于算法精度,更在于"部署效率 + 运行稳定性 + 问题可复现性"。本课程围绕这三条主线展开。

二、整体学习路径:从环境到运维的五阶段

本课程 30 章按照工程落地顺序组织为五个阶段,形成一条清晰的学习路径。下图展示了这条路径与各阶段的关键能力:

ROS2 自动驾驶部署与运行管理 · 五阶段学习路径 ① 环境与基础 ROS2 安装 / 工作空间 节点·话题·服务 DDS 通信与 QoS ② 系统集成 感知/定位/规划/控制 TF 坐标变换 Launch 编排启动 ③ 部署交付 Docker 容器化 交叉编译 / 依赖管理 参数与配置外置 ④ 运行管理 生命周期节点 监控 / 日志 / 诊断 故障恢复与守护 ⑤ 运维与迭代 数据记录与回放 版本升级/回滚 性能调优 核心能力模型:环境搭建 → 系统集成 → 部署交付 → 运行管理 → 运维迭代 贯穿始终的三条主线:可部署(Deployable)· 可运行(Operational)· 可复现(Reproducible) 工具链概览: ROS2 Humble colcon Docker ros2 launch ros2 bag rqt / rviz2 systemd / 守护 开发机(Ubuntu + ROS2)→ 车载计算平台(Jetson/工控机)→ 实车运行与数据闭环

五个阶段并非孤立:环境与基础决定后续能否顺利集成;系统集成决定部署对象是否完整;部署交付决定运行环境是否一致;运行管理决定系统能否长期稳定;运维与迭代则让系统持续进化。学习时建议按阶段推进,但每完成一个阶段都应回到"能否在实车或仿真中跑起来"这一检验标准。

三、核心能力模型:三类能力、九个关键点

本课程希望培养的不是单一技能,而是"工程化交付自动驾驶系统"的综合能力。可归纳为三类能力:

能力类别 关键能力点 对应典型任务
系统构建能力 ROS2 通信机制、TF 坐标、Launch 编排 搭建多节点自动驾驶软件框架
部署交付能力 Docker 容器化、依赖管理、参数外置 把系统打包到车载平台并一键启动
运行管理能力 生命周期、监控诊断、日志与回放、故障恢复 保障系统长时间稳定运行并可复现问题

这九个关键点会在后续章节中逐一展开。需要强调的是:部署与运行管理不是"运维人员的事",而是每一位自动驾驶工程师都应具备的基本功。算法工程师如果不懂部署,就无法验证自己的算法在真实平台上的表现;系统工程师如果不懂运行管理,就无法定位偶发故障。

四、课程项目与工具链概览

本课程以一个贯穿始终的课程项目为载体:基于 ROS2 的园区低速自动驾驶小车系统。项目包含感知(相机/激光雷达)、定位(GNSS/IMU/里程计融合)、规划(全局+局部)、控制(底盘 CAN 通信)四大模块,并最终部署到车载计算平台。

项目将分阶段交付:

  1. 阶段一:在开发机上跑通各模块节点,验证话题通信与 TF 树;
  2. 阶段二:用 Launch 文件统一编排,实现一键启动;
  3. 阶段三:用 Docker 打包镜像,部署到车载平台;
  4. 阶段四:加入生命周期管理与监控,实现异常自恢复;
  5. 阶段五:通过 ros2 bag 记录数据,回放复现并迭代优化。

配套工具链以 ROS2 Humble 为核心,辅以 colcon 构建、Docker 容器化、ros2 launch 编排、ros2 bag 数据记录、rqt/rviz2 可视化、systemd 守护等。典型的环境检查命令如下:

# 检查 ROS2 环境
source /opt/ros/humble/setup.bash
ros2 doctor

# 查看当前节点与话题
ros2 node list
ros2 topic list -t

# 构建工作空间
colcon build --symlink-install
source install/setup.bash

# 启动系统
ros2 launch autocar_bringup autocar.launch.py
建议在课程开始前准备好 Ubuntu 22.04 + ROS2 Humble 环境,并确保能运行 ros2 doctor 无严重错误。后续章节的实操都基于该环境。

五、常见误区与学习建议

在多年教学与工程实践中,初学者常陷入以下误区:

  • 误区一:只学算法,不学部署。结果算法在开发机跑得通,上车就报依赖缺失、版本冲突。
  • 误区二:把所有配置写死在代码里。换一台车就要改代码重新编译,无法快速适配。
  • 误区三:忽视日志与数据记录。偶发故障无法复现,只能"重启试试"。
  • 误区四:认为运行管理就是"多开几个终端"。没有编排、没有监控、没有守护,系统无法长期稳定。
复盘提示:部署与运行管理的本质是"降低不确定性"。每一次环境不一致、配置硬编码、缺少日志,都会在实车运行时放大为故障。请从第一章起就养成"配置外置、日志留痕、可回放复现"的工程习惯。

学习本课程时,建议采用"边学边做"的方式:每学完一个阶段,就在自己的小车或仿真环境中复现一遍。遇到问题先查 ros2 doctor、节点列表、话题频率、TF 树,再逐步定位。随着课程推进,你会逐渐从"会写节点"成长为"能交付稳定自动驾驶系统"的工程师。

现在,让我们从环境与基础开始,正式进入 ROS2 自动驾驶系统部署与运行管理的学习旅程。