1. 课程导入

欢迎进入《Apollo 自动驾驶运行时与模块治理工程》。在动手写第一行治理代码之前,我们需要先建立一张"全局地图":Apollo 到底由哪些部分组成?"运行时"和"模块治理"分别解决什么问题?它们在整个自动驾驶系统中处于什么位置?本节将回答这些问题,并给出后续 29 章的学习路径。

一、Apollo 平台是什么:从"能跑"到"跑得稳"

Apollo 是百度开源的自动驾驶平台,它并不是一个单一程序,而是一套围绕"感知—预测—规划—控制"构建的软件栈,外加一整套工程基础设施。可以把它理解为三层:

  • 算法层:感知、定位、预测、规划、控制等核心模块,决定车"会不会开"。
  • 运行时层:Cyber RT 通信框架、调度、内存管理、组件生命周期,决定车"跑得顺不顺"。
  • 治理层:模块配置、参数校验、健康监控、故障隔离、版本与灰度,决定车"跑得稳不稳、可不可维护"。

很多初学者只关注算法层,结果系统在实车上频繁出现"模块卡死、消息丢失、参数写错、启动顺序混乱"等问题。本课程的重点正是后两层——运行时与模块治理,它们是让算法真正落地的工程骨架。

核心判断:一个自动驾驶系统能否上车,算法决定上限,运行时与治理决定下限。本课程聚焦"下限工程"。

二、核心概念:运行时、模块、治理

在 Apollo 中,模块(Module)是功能封装的基本单位,例如 perception、planning、control。每个模块通常以组件(Component)形式运行在 Cyber RT 之上,通过 Channel 收发消息。

运行时(Runtime)指模块实际执行时所依赖的环境与机制:节点调度、通信中间件、线程模型、内存池、时间同步等。它决定了模块之间的数据如何流动、任务如何被调度。

模块治理(Module Governance)则是对模块全生命周期的管理:配置加载、参数校验、依赖顺序、健康检查、异常恢复、资源限制、版本控制。治理的目标是让系统"可观测、可控制、可恢复"。

三者关系可以用一句话概括:模块是砖,运行时是水泥,治理是施工规范。

三、整体框架:一张图看懂运行时与治理的位置

下图展示了 Apollo 从硬件到应用的分层结构,以及运行时与治理工程所处的位置。请重点观察:治理层如何横向贯穿所有模块,运行时如何承上启下。

Apollo 自动驾驶平台分层结构 算法层 · 功能模块 感知 Perception 定位 Localization 预测 Prediction 规划 Planning 控制 Control HMI / 交互 运行时层 · Cyber RT 节点 / 组件调度 Channel 通信 内存池 / 零拷贝 时间同步 线程 / 协程模型 治理层 · 模块治理工程 配置与参数校验 依赖与启动顺序 健康监控 故障隔离恢复 版本 / 灰度发布 硬件层 · 计算平台与传感器 车载计算单元 激光雷达 / 相机 毫米波 / GNSS 线控底盘 数据流方向 治理贯穿 抽象层级升高

四、学习路径:30 章如何展开

本课程按"认知—运行时—治理—实战"四阶段推进,建议按顺序学习:

  1. 认知阶段(第 1–4 章):平台概览、目录结构、构建系统、Cyber RT 初识。
  2. 运行时阶段(第 5–14 章):节点与组件、Channel 通信、调度策略、内存管理、时间同步、日志与监控。
  3. 治理阶段(第 15–24 章):模块配置、参数校验、依赖管理、健康检查、故障隔离、灰度与版本。
  4. 实战阶段(第 25–30 章):综合案例、性能调优、排障复盘、工程规范。

五、案例场景:一次"模块启动失败"的复盘

某团队在实车上启动 Apollo,发现 planning 模块反复崩溃。排查过程如下:

# 查看模块状态
cyber_monitor
# 输出片段
planning    [FAILED]   restart_count=3
perception  [OK]       freq=10Hz
control     [WAITING]  dependency=planning

# 查看日志
tail -f /apollo/data/log/planning.INFO
# 关键错误
[ERROR] Failed to load config: planning_config.pb.txt
[ERROR] Param 'default_cruise_speed' out of range: -1.0

根因是配置文件被误改,参数越界导致模块启动失败,而 control 因依赖 planning 一直等待。这个案例同时暴露了三个治理问题:参数校验缺失、依赖顺序不明确、健康状态不可观测。这正是本课程要解决的核心问题。

常见误区:把模块崩溃当成"算法 bug"。实际上,大量实车故障源于配置错误、依赖混乱、资源竞争等治理问题,而非算法本身。

六、核心概念速查清单

概念 含义 典型对象 治理关注点
模块 Module 功能封装的基本单位 perception、planning 配置、依赖、生命周期
组件 Component 模块在 Cyber RT 中的运行实体 PlanningComponent 调度、线程、消息触发
Channel 模块间消息通信通道 /apollo/planning 频率、延迟、丢包
运行时 Runtime 模块执行所依赖的环境与机制 Cyber RT、调度器 资源、时序、稳定性
治理 Governance 模块全生命周期管理 配置中心、监控 可观测、可控制、可恢复
学习建议:每学一个概念,都问自己三个问题——它在哪一层?它和谁通信?它出问题时会表现为什么现象?带着这三个问题进入后续章节,理解会快很多。

本节建立了 Apollo 平台的分层认知,明确了运行时与模块治理的位置和重要性,并给出了 30 章的学习路径。接下来,我们将从 Apollo 的目录结构与工程组织开始,真正走进这套系统的内部。