1. 课程导入
欢迎进入《ROS2自动驾驶系统部署与运行管理工程》。在真正动手把感知、定位、规划、控制等模块装进一辆自动驾驶小车之前,我们需要先建立一张"全局地图":这门课到底要学什么、按什么顺序学、最终能交付什么。本节作为课程导入,将帮助你理解整体学习路径、核心能力模型、课程项目与工具链概览,为后续 29 章的学习打下认知框架。
一、为什么自动驾驶系统需要"部署与运行管理"
很多初学者把自动驾驶等同于"写算法":调通一个 YOLO 检测、跑通一个 A* 路径规划,就以为大功告成。但在真实工程中,算法只是系统的一小部分。一个能上车的自动驾驶系统,必须解决以下问题:
- 部署问题:代码如何从开发机迁移到车载计算平台?依赖库、ROS2 版本、驱动如何一致?
- 运行问题:几十个节点如何编排启动?谁先谁后?崩溃了如何自动恢复?
- 管理问题:如何监控 CPU/GPU/内存/网络?如何记录数据、回放复现问题?如何做版本升级与回滚?
这正是本课程的核心:把"能跑的算法"变成"能稳定运行的系统"。ROS2 提供了节点、话题、服务、动作、参数、生命周期、组件容器、DDS 通信等机制,而部署与运行管理则是把这些机制组织成一套可交付、可运维的工程体系。
二、整体学习路径:从环境到运维的五阶段
本课程 30 章按照工程落地顺序组织为五个阶段,形成一条清晰的学习路径。下图展示了这条路径与各阶段的关键能力:
五个阶段并非孤立:环境与基础决定后续能否顺利集成;系统集成决定部署对象是否完整;部署交付决定运行环境是否一致;运行管理决定系统能否长期稳定;运维与迭代则让系统持续进化。学习时建议按阶段推进,但每完成一个阶段都应回到"能否在实车或仿真中跑起来"这一检验标准。
三、核心能力模型:三类能力、九个关键点
本课程希望培养的不是单一技能,而是"工程化交付自动驾驶系统"的综合能力。可归纳为三类能力:
| 能力类别 | 关键能力点 | 对应典型任务 |
|---|---|---|
| 系统构建能力 | ROS2 通信机制、TF 坐标、Launch 编排 | 搭建多节点自动驾驶软件框架 |
| 部署交付能力 | Docker 容器化、依赖管理、参数外置 | 把系统打包到车载平台并一键启动 |
| 运行管理能力 | 生命周期、监控诊断、日志与回放、故障恢复 | 保障系统长时间稳定运行并可复现问题 |
这九个关键点会在后续章节中逐一展开。需要强调的是:部署与运行管理不是"运维人员的事",而是每一位自动驾驶工程师都应具备的基本功。算法工程师如果不懂部署,就无法验证自己的算法在真实平台上的表现;系统工程师如果不懂运行管理,就无法定位偶发故障。
四、课程项目与工具链概览
本课程以一个贯穿始终的课程项目为载体:基于 ROS2 的园区低速自动驾驶小车系统。项目包含感知(相机/激光雷达)、定位(GNSS/IMU/里程计融合)、规划(全局+局部)、控制(底盘 CAN 通信)四大模块,并最终部署到车载计算平台。
项目将分阶段交付:
- 阶段一:在开发机上跑通各模块节点,验证话题通信与 TF 树;
- 阶段二:用 Launch 文件统一编排,实现一键启动;
- 阶段三:用 Docker 打包镜像,部署到车载平台;
- 阶段四:加入生命周期管理与监控,实现异常自恢复;
- 阶段五:通过 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
五、常见误区与学习建议
在多年教学与工程实践中,初学者常陷入以下误区:
- 误区一:只学算法,不学部署。结果算法在开发机跑得通,上车就报依赖缺失、版本冲突。
- 误区二:把所有配置写死在代码里。换一台车就要改代码重新编译,无法快速适配。
- 误区三:忽视日志与数据记录。偶发故障无法复现,只能"重启试试"。
- 误区四:认为运行管理就是"多开几个终端"。没有编排、没有监控、没有守护,系统无法长期稳定。
学习本课程时,建议采用"边学边做"的方式:每学完一个阶段,就在自己的小车或仿真环境中复现一遍。遇到问题先查 ros2 doctor、节点列表、话题频率、TF 树,再逐步定位。随着课程推进,你会逐渐从"会写节点"成长为"能交付稳定自动驾驶系统"的工程师。
现在,让我们从环境与基础开始,正式进入 ROS2 自动驾驶系统部署与运行管理的学习旅程。