不确定性规划总论:从"风险中性"到"五种安全谱"¶
专题定位:本专题是移动机器人规控横切方法论层的"不确定性"专题。它不属于任何单一机器人形态,而是为四足、人形、无人机、机械臂、自动驾驶等所有方向提供一套通用的"如何在不确定下规划与控制"的算法工具箱。四足的地形摩擦未知、无人机的阵风扰动、机械臂的抓取容差、自动驾驶里他车的意图——底层数学是同一套。
读者画像:已完成 SLAM 主线、掌握 C++17 / Eigen / 凸优化(QP/NLP/L-BFGS),并对"规划—控制"闭环(至少用过一种 MPC:acados / OCS2 / CasADi)有实际工程经验的算法工程师。
本专题章节:U0 总论(本篇)→ U1 分支场景 → U2 鲁棒规划与安全滤波 → U3 机会约束 → U4 POMDP 与 Belief 规划 → U5 风险敏感与 CVaR → 附录(综合对比 + 选型决策树)。
本篇性质:导论。它不展开任何单一方法的完整推导(那是 U1–U5 的任务),而是建立全专题共享的**坐标系**:统一符号、五范式主线、与强化学习(Reinforcement Learning, RL)的连接、以及一个贯穿六章的累积项目。读完本篇,你应当能在拿到一个真实的不确定性问题时,先判断"这属于哪一类不确定性、该走哪条安全谱",再决定深入哪一章。
前置自测¶
下面 5 题用于确认你是否已具备进入本专题的基础。答不出 \(\ge 2\) 题,建议先回到对应前置再来。
- 写出离散时间线性系统在 LQR 下的最优反馈律形式,并说明 Riccati 方程在其中扮演什么角色。(不会 → 回最优控制基础)
- 期望值 \(\mathbb{E}[X]\)、方差 \(\mathrm{Var}[X]\) 和分位数(quantile)三者分别刻画了一个随机变量的什么信息?(不会 → 回概率论基础)
- 卡尔曼滤波的"预测—更新"两步里,协方差矩阵 \(P\) 是怎样传播的?它代表什么?(不会 → 回贝叶斯滤波 / EKF 章)
- 一个标准的非线性 MPC(Nonlinear MPC, NMPC)优化问题包含哪几类约束?硬约束 \(g(x)\le 0\) 在求解器里是怎么被处理的?(不会 → 回 MPC 基础)
- 凸优化里"对偶"是什么意思?为什么对偶问题常常比原问题好解?(不会 → 回凸优化基础)
这 5 题对应本专题的五个数学支柱:最优控制(贯穿全专题)、概率与统计(U3/U5)、状态估计与协方差传播(U3/U4)、约束优化(U2/U3)、对偶(U2 的鲁棒重构、U5 的风险度量对偶表示)。
本章目标¶
学完本篇后,你应该能够:
- 用"认知 / 偶然 / 模型 / 环境"四个维度,对一个真实机器人问题中的不确定性来源做系统性归类;
- 说清"五种安全谱"(鲁棒 / 机会约束 / CVaR / POMDP / 分支)各自把安全保证放在了什么位置,以及它们在保守度—计算量—信息需求上的权衡;
- 判断一个给定问题该优先走哪条安全谱(而不是凭直觉抓一个方法就上);
- 区分"鲁棒优化 / 随机优化 / 分布鲁棒优化"三种世界观,理解它们对应不同的不确定性建模假设;
- 说出本专题每条路线与 RL 的连接点(POMDP↔RL、CVaR↔Distributional RL、学习残差↔model-based),从而知道"经典"与"学习"如何互补;
- 在统一的累积项目测试台上,独立搭建一个"风险中性 baseline",并用蒙特卡洛实验定量暴露它的失效——为后续逐章加装不确定性处理建立对照基线。
本章知识导航 ⭐¶
本篇围绕**一条主线**展开:确定性规控默认"模型准、扰动有界、观测全",一旦这三条假设破裂,就需要不同的安全范式来补。整个专题就是这条主线上的五个范式,外加把它们缝在一起的连接线。
确定性规控(风险中性 baseline)
│ 三条假设破裂
▼
┌─────────────────────────────────────────────┐
│ 五种安全谱(本专题主线) │
│ │
│ 保守 ◄──────────────────────────────► 进取 │
│ 鲁棒 ── 机会约束 ── CVaR ── POMDP ── 分支 │
│ (U2) (U3) (U5) (U4) (U1) │
│ 集合 概率δ 尾部 信念 场景树 │
└─────────────────────────────────────────────┘
│
▼
累积项目:统一不确定性导航测试台(六章逐层加装)
│
▼
附录:五范式 Benchmark + 选型决策树
本篇包含的内容块(不展开方法细节,只搭骨架):
| 块 | 主题 | 难度 |
|---|---|---|
| §1 | 为什么需要不确定性规划——风险中性假设的三道裂缝 | ⭐ |
| §2 | 不确定性的来源四分类(认知/偶然/模型/环境) | ⭐⭐ |
| §3 | 五种安全谱——全专题主线 | ⭐⭐ |
| §4 | 三大认知跨越(从确定性到不确定性) | ⭐⭐ |
| §5 | 鲁棒 vs 随机 vs 分布鲁棒——谱系的数学根 | ⭐⭐⭐ |
| §6 | 与强化学习的连接(一条暗线) | ⭐⭐ |
| §7 | 累积项目:统一不确定性导航测试台 | ⭐⭐ |
推荐阅读路径:§1→§2 建立"为什么 + 不确定性长什么样"的直觉;§3 是全专题的地图,务必读透;§4–§5 给出范式背后的世界观;§6 连接 RL;§7 给出贯穿全专题的动手主线。其中 §3 与 §7 是后续每一章都会回看的两节。
前置知识桥接¶
本专题站在确定性规控之上。回顾你已经掌握的两块基础:
回顾——名义 MPC:一个标准 NMPC 在每个控制周期求解 $\(\min_{u_{0:N-1}} \ \sum_{k=0}^{N-1} \ell(x_k, u_k) + \ell_f(x_N) \quad \text{s.t.}\quad x_{k+1}=f(x_k,u_k),\ x_k\in\mathcal{X},\ u_k\in\mathcal{U},\)$ 其中 \(x_k\in\mathbb{R}^n\) 是状态、\(u_k\in\mathbb{R}^m\) 是控制、\(f\) 是动力学、\(\mathcal{X}/\mathcal{U}\) 是状态/控制约束集,\(\ell/\ell_f\) 是阶段/终端代价。你在自动驾驶或无人机方向里求解过它,用的是 acados/OCS2/CasADi。这个问题默认了三件事:\(f\) 完全准确、没有外部扰动、\(x_k\) 完全可测。本专题做的全部事情,就是在逐条放松这三个默认时,重新设计这个优化问题。
回顾——贝叶斯滤波:卡尔曼滤波用"预测—更新"两步维护状态的高斯后验 \(x_k\sim\mathcal{N}(\hat{x}_k, P_k)\),协方差 \(P_k\) 度量"我们对状态知道多少"。本专题的 U3(用 \(P_k\) 收紧约束)和 U4(把整个后验/信念当作规划对象)正是这套思想的直接延伸——区别在于:滤波只是被动地估计不确定性,而本专题要主动地在规划里**利用**它。
本质洞察:确定性规控里"估计"和"规划"是两个解耦的模块(先估计状态、再当它是真值去规划)。本专题的核心转变是把不确定性**贯穿**进规划——规划器不再消费一个点估计,而是消费一个集合、一个分布或一个信念。U4 的 belief-space 规划是这个转变最彻底的形态:决策变量本身就是信念的演化。
如果跳过本专题会怎样¶
不学本专题,你依然能让机器人在"理想条件"下跑起来,但会在以下两类场景反复栽跟头:
场景一:仿真完美、真机翻车。 你在 MuJoCo 里调好的 NMPC 控四足走得很稳,一上真机就在斜坡上打滑摔倒。原因是真机的地形摩擦、电机延迟、负载偏差都偏离了名义模型,而名义 MPC 没有任何"安全余量"机制去吸收这些偏差。U2 的 Tube MPC / CBF 正是为这个场景准备的——它在名义轨迹外围预留一条"管道"或一道"护栏"。
场景二:硬约束让规划器频繁求不出解。 你给自动驾驶规划器加了"距他车 \(\ge 2\) m"的硬约束,结果在拥堵路口它要么求解失败(infeasible)、要么过度保守地急刹。原因是把"概率事件"当成了"确定事件"——他车的未来位置本身是分布,用硬约束去卡一个分布要么不可行、要么牺牲流畅性。U3 的机会约束把它换成"碰撞概率 \(\le \delta\)",U1 的分支规划则为他车的不同意图各准备一条备选轨迹。
这两个场景会在累积项目(§7)里被显式复现,让你亲眼看到风险中性 baseline 怎么崩、以及每种范式怎么救。
预计阅读时间¶
| 阅读方式 | 时间 | 适合谁 |
|---|---|---|
| 精读(含 §5/§6 推敲 + 规划累积项目 baseline) | 4–6 小时 | 第一次系统进入不确定性规划的读者 |
| 速读(抓 §3 五范式表 + §7 项目地图,跳过 §5/§6 推导) | 1.5 小时 | 有相关背景、只需建立全局地图的读者 |
| 速查(只看 §3 的对比表 + 文末符号约定表 + 选型排查) | 20 分钟 | 已在做某一章、回来查范式定位或符号约定 |
§1 为什么需要不确定性规划——风险中性假设的三道裂缝 ⭐¶
动机:一个"完美规划"在真实世界里的崩溃¶
设想一架四旋翼要穿过一条狭窄走廊。你用名义模型 \(f\) 规划了一条贴着走廊中线的最优轨迹——它在仿真里完美无缺,因为仿真里的飞机就是按 \(f\) 飞的。现在把它放到真实走廊:一阵侧风把飞机推向右墙,飞控试图修正,但修正本身有延迟,加上机载估计的位置比真实位置偏左 8 cm,于是飞机在"自以为还在中线"时,右桨已经擦上了墙。
这次撞墙不是规划器算错了,而是规划器**问错了问题**。它问的是"在理想世界里,哪条轨迹代价最小";它该问的是"在一个我无法完全预知的世界里,哪条策略既高效又能容错"。
反面:把风险中性 baseline 推到极限会发生什么¶
名义 MPC 的优化问题(见前置桥接)隐含了三条假设,我们逐条拆开看不学不确定性处理的后果:
| 隐含假设 | 现实中如何破裂 | 不处理的后果 |
|---|---|---|
| 模型准确 \(x_{k+1}=f(x_k,u_k)\) | 简化刚体模型忽略气动/接触柔性;参数(质量、摩擦)有偏差 | 预测轨迹与实际轨迹系统性偏离,越往后偏得越远 |
| 扰动可忽略 | 阵风、地形打滑、负载晃动 | 名义轨迹无安全余量,小扰动即触碰约束边界 |
| 观测完美 \(x_k\) 已知 | 定位有噪声、传感器有遮挡、状态部分不可测 | 拿带噪点估计当真值规划,误差直接进入控制 |
三道裂缝里,**模型 + 扰动**是"动力学端/执行端"的不确定性(U2/U3 主攻),**观测**是"感知端"的不确定性(U4 主攻),而当不确定性来自"别的智能体会怎么动"时,它是"环境端/交互端"的(U1 主攻)。U5 则横切所有端,专门管"我对尾部坏情况有多在意"。
不是 X 而是 Y:不确定性规划**不是**"把名义 MPC 调得更保守一点"(盲目加大安全距离会让机器人寸步难行),而是"为不确定性显式建模,并据此分配恰到好处的保守度"。保守度不是越大越好,而是要和不确定性的真实大小匹配——这正是五种安全谱试图精确做到的事。
⚠️ 本节常见误区¶
💡 概念误区:以为"加大安全裕度"就等于"做了不确定性处理" - 新手想法:"我把避障距离从 0.5 m 改成 2 m,这样不就鲁棒了?" - 现象/后果:在开阔场景看似安全,但在狭窄/拥堵场景下规划器频繁无解或绕大路,行为僵硬;而且固定裕度无法适应"有时风大有时风小"的变化。 - 根本原因:固定裕度是一个**与不确定性脱钩的常数**。真实的不确定性是状态相关、时变的——高速时跟踪误差大、低速时小;风大时扰动集大、风小时小。用一个常数去近似一个时变集合,必然要么过松要么过紧。 - 正确做法:让裕度由不确定性模型**推导**出来——Tube MPC 的裕度来自 RPI 集 \(\Omega\)(U2),机会约束的裕度来自协方差 \(\Sigma\) 经 \(\Phi^{-1}(1-\delta)\) 缩放(U3)。检验方法:当你调大扰动假设时,裕度应当自动随之变大。
🧠 思维陷阱:以为"更复杂的范式总是更好" - 新手想法:"POMDP 是最完整的框架(它处理部分可观测、主动感知一切),那我所有问题都上 POMDP 不就行了?" - 现象/后果:把一个本可以用 Tube MPC 在毫秒级解决的执行端扰动问题,硬塞进 POMDP 求解器,在线计算爆炸,根本跑不到控制频率。 - 根本原因:五种范式不是"谁包含谁"的递进关系,而是**针对不同不确定性结构的不同工具**。POMDP 的强大来自它建模了信念演化,但这份强大的代价是计算量;如果你的问题里状态其实是可测的(只是有扰动),belief 这一层就是纯浪费。 - 正确做法:先用 §2 的四分类判断不确定性的**结构**,再用 §3 的安全谱表选**最轻量够用**的范式。检验方法:问自己"如果去掉这个范式的某个机制(如 belief、如 min-max),我的问题还成立吗?"——如果成立,说明这个机制是多余的。
练习¶
- 拿你自己做过的一个规控项目(任何方向),逐条对照本节的"三条假设"表,写下你的项目里这三条假设各自在多大程度上成立、在什么场景下会破裂。
- 为"四旋翼穿走廊"这个例子,分别构造一个**只有执行端不确定性**、一个**只有感知端不确定性**、一个**只有交互端不确定性**的变体场景,并说明每个变体最适合本专题哪一章。
§2 不确定性的来源四分类(认知 / 偶然 / 模型 / 环境)⭐⭐¶
要选对范式,先得说清不确定性"是哪一种"。学术上有一个被广泛采用的分类,按"不确定性能否通过收集更多信息来消减"作为最深的一刀切开。
| 类别 | 英文 | 含义 | 能否靠更多数据消减 | 机器人实例 | 主攻章 |
|---|---|---|---|---|---|
| 认知不确定性 | epistemic | 因知识/数据不足而产生 | 能(多观测/多采样可减少) | 未知的地形摩擦系数、他车的意图、地图未探索区域 | U4 |
| 偶然不确定性 | aleatoric | 系统固有的随机性 | 不能(再多数据也消不掉) | 传感器测量噪声、阵风的随机脉动、执行器抖动 | U3/U5 |
| 模型不确定性 | model | 模型与真实系统的失配 | 部分能(学残差可缩小) | 简化刚体忽略气动、参数标定偏差、未建模延迟 | U2(GP-MPC) |
| 环境不确定性 | environmental | 外部世界不可预测的变化 | 部分能(预测可缩小) | 动态障碍、其他智能体行为、突发事件 | U1 |
本质洞察:四类里最有指导意义的是**认知 vs 偶然**这一刀。它直接决定"主动收集信息有没有用"。认知不确定性可以靠"去看一眼"来消减——所以面对认知不确定性,最优策略往往包含**主动感知**(绕过去看清楚再决策),这正是 U4(POMDP)里"信息收集型规划"的全部动机。而偶然不确定性是系统的内禀随机性,再怎么观测也消不掉——所以面对偶然不确定性,只能用**鲁棒裕度或概率约束**去容忍它(U2/U3/U5),主动感知对它无能为力。把这两者搞混,是新手在选范式时最常见的方向性错误。
跨领域类比(标边界):认知 vs 偶然的区分,和机器学习里"模型不确定性 vs 数据噪声"的区分是同一个东西——Deep Ensemble / MC Dropout 估计的是认知不确定性(多训几个模型/多采样能让它收窄),而标签本身的噪声是偶然不确定性(再多模型也消不掉)。**相似之处**仅在于"可消减性"这个判据完全一致;**不同之处**在于:机器学习里这两者主要影响预测置信度,而在规控里它们直接改变你该选的安全范式与是否要主动感知。不要把这个类比延伸到"估计方法"上——规控里量化这两类不确定性的工具(集合、协方差、belief)和深度学习里的(dropout、ensemble)是不同的。
一个高频混淆:模型不确定性既有认知成分也有偶然成分¶
模型不确定性常被进一步拆成两部分:参数误差(标定不准,属认知——多做实验能减小)和结构误差/未建模动态(模型形式本身就错,难以靠数据完全消除)。GP-MPC(U2)里用高斯过程(Gaussian Process, GP)学到的残差,其均值修正了系统性偏差,其方差则同时编码了"这块区域数据少(认知)"和"这里本来就噪声大(偶然)"——能不能把这两者分开,是 U2 末尾会讨论的一个开放问题。
⚠️ 本节常见误区¶
💡 概念误区:把"偶然不确定性大"当成"需要更多数据"的信号 - 新手想法:"我的状态估计方差一直降不下来,肯定是数据不够,再多跑几圈采集数据。" - 现象/后果:采了一周数据,方差纹丝不动,白费功夫。 - 根本原因:方差降不下来可能是因为它主要是偶然不确定性(如传感器本身的噪声地板),这部分是数据消不掉的。把偶然误判为认知,会导致用错误的手段(收集数据)去对付一个该用容错手段(鲁棒/概率约束)解决的问题。 - 正确做法:先判断方差的主导成分。一个粗略检验:在同一状态下重复测量,若读数离散度本身就很大,说明偶然成分主导;若多次观测能让后验明显收窄,说明认知成分主导。
练习¶
- 给你所在方向的机器人列出至少 6 个不确定性来源,逐一归入四分类,并对每个标注"主动感知对它有没有用"。
- 选一个你归为"模型不确定性"的来源,尝试把它进一步拆成认知部分和偶然部分,并说明如果用 GP 去学它,GP 的方差会更多反映哪一部分。
§3 五种安全谱——全专题主线 ⭐⭐¶
这是本专题最重要的一节。五条路线本质上是在回答同一个问题——"安全到底意味着什么"——的五种不同答案。把它们排在一条从"最保守"到"最进取"的谱上:
保守 ◄──────────────────────────────────────────────► 进取
│ │ │ │ │
鲁棒规划 机会约束 CVaR/风险敏感 POMDP/Belief 分支/Contingency
(U2) (U3) (U5) (U4) (U1)
│ │ │ │ │
"对所有 "违反概率 "控制最坏 "在信念空间 "为多个可能
扰动都 ≤ δ" α 尾部的 最大化期望, 未来各备
安全" 平均损失" 主动收集信息" 一条策略"
五范式对照表¶
| 维度 | 鲁棒规划 | 机会约束 | CVaR/风险敏感 | POMDP/Belief | 分支/Contingency |
|---|---|---|---|---|---|
| 不确定性表征 | 有界集合 \(w\in\mathcal{W}\) | 概率分布 \(w\sim P\) | 分布 + 风险偏好 \(\alpha\) | 后验信念 \(b(x)\) | 离散场景集 + 概率 |
| 安全保证 | 集合内 100% | 违反概率 \(\le\delta\) | 尾部平均受控 | 期望回报最优 | 各分支可行 |
| 保守度 | 最高 | 中(\(\delta\) 可调) | 可调(\(\alpha\) 调) | 中 | 中—低 |
| 在线计算 | 低(仅名义+裕度) | 中 | 中 | 高(树搜索/belief 更新) | 中(多分支耦合) |
| 信息需求 | 仅 \(\mathcal{W}\) 边界 | 分布 \(P\) | \(P\) + \(\alpha\) | 观测模型 + belief | 场景 + 概率 |
| 主攻不确定性 | 偶然(执行端) | 偶然(执行端) | 偶然(尾部) | 认知(感知端) | 环境(交互端) |
| 典型方法 | Tube MPC、可达性、CBF | CC-MPC、CC-RRT | CVaR-MPC、DR-MPC | POMCP、DESPOT、SARSOP | MPDM、Multi-stage NMPC |
| 锚点论文 | Mayne 2005;Ames 2017 | Blackmore 2011 | Majumdar-Pavone 2017 | Silver-Veness 2010 | Cunningham 2015 |
| 对应章 | U2 | U3 | U5 | U4 | U1 |
| C++ 生态 | 强(acados/OCS2) | 弱(多为研究代码) | 弱(与 RL 交界) | 中(DESPOT/SARSOP 有 C++) | 中(do-mpc/acados 多相) |
锚点论文的精确出处(作者、会议/期刊、年份、卷期页)在文末"延伸阅读"中给出,并已逐一核实。本专题各章引用这些工作时以该清单为准。
怎么读这张表:从一个问题选到一条谱¶
拿到问题后,按下面的逻辑往下走(详细的选型故障排查见文末):
- 不确定性主要是认知的吗(多看一眼能消减)? 是 → 大概率要 POMDP/Belief(U4),因为只有它建模了"主动感知"。
- 是离散多模态的吗(如他车要么变道要么不变道)? 是 → 分支/Contingency(U1)为每个模态备一条。
- 是连续有界扰动,且需要硬安全保证(碰一次都不行)? 是 → 鲁棒规划(U2)。
- 能容忍小概率违反、想换取流畅性? 是 → 机会约束(U3)。
- 特别在意罕见但严重的尾部事件(如翻车、坠机)? 是 → CVaR/风险敏感(U5)。
本质洞察:这五条不是互斥的"选一个",而是可以**叠加**的"工具层"。真实系统常常是:用分支(U1)处理他车意图的离散多模态,每条分支内部用机会约束(U3)处理连续扰动,整体再用 CBF(U2)兜一道瞬时安全底线。本专题分章讲是为了把每件工具讲透,累积项目(§7)则会把它们一层层叠回到同一个系统上——这也是工业级系统的真实形态。
一个贯穿性的权衡:保守度 ↔ 信息需求 ↔ 计算量¶
注意对照表里有一条隐藏规律:越往进取端走,对不确定性模型的信息需求越高、在线计算越重。鲁棒规划只要你给一个扰动集边界就能干活(信息需求最低),但代价是它对最坏情况买单、最保守;POMDP 能做出最聪明的主动感知决策,但它要求你提供完整的观测模型并在线维护信念(信息与计算需求最高)。没有免费的安全——你想要更少的保守度,就得付出更多的建模信息或更多的在线算力。理解这条权衡,比记住任何单个算法都重要。
⚠️ 本节常见误区¶
💡 概念误区:把机会约束的 \(\delta\) 理解成"轨迹整体的失败率" - 新手想法:"我设 \(\delta=0.05\),那这条轨迹有 95% 概率成功。" - 现象/后果:实际失败率远高于 5%,安全验证不通过却找不到原因。 - 根本原因:\(\delta\) 通常是**每步/每约束**的违反概率上界,整条轨迹有 \(N\) 步、多个约束,联合失败概率会通过 union bound 累积放大;此外,把联合机会约束拆成逐项约束时若不做风险分配(risk allocation),会进一步引入保守或乐观偏差。 - 正确做法:分清"逐项机会约束"与"联合机会约束",并用风险分配(U3 的 IRA 方法)把总风险预算合理地分到各步各约束上。检验方法:蒙特卡洛实测整条轨迹的经验失败率,与你的设计目标对比。
🧠 思维陷阱:把 CVaR 和"最坏情况"划等号 - 新手想法:"CVaR 不就是看最坏的那次吗?那和鲁棒(min-max)有啥区别?" - 现象/后果:在该用 CVaR 调节风险偏好的地方,要么退化成过度保守的最坏情况,要么因为理解错而调不出想要的行为。 - 根本原因:\(\text{CVaR}_\alpha\) 是**最坏 \((1-\alpha)\) 比例尾部的平均**,不是单点最坏值。\(\alpha\to 1\) 时 CVaR 才趋向最坏情况,\(\alpha\to 0\) 时趋向期望——它是一条**连续地连接期望与最坏情况的旋钮**。这正是它比鲁棒(永远 min-max)和期望(永远风险中性)都更灵活的原因。 - 正确做法:把 \(\alpha\) 当作"风险厌恶程度"旋钮来理解和调节。检验方法:固定问题、扫 \(\alpha\) 从 0 到 1,观察最优策略从"激进省时"平滑过渡到"保守避险"。
练习¶
- 为"自动驾驶在无保护左转路口汇入车流"这一场景,论证它同时涉及哪几类不确定性,并据此给出一个"分支 + 机会约束 + CBF"三层叠加的范式组合方案(不要求实现,只要求说清每层管什么)。
- 用对照表里"保守度 ↔ 信息需求 ↔ 计算量"的权衡,解释为什么在嵌入式四足实时控制(1 kHz 量级)里,工程上往往首选鲁棒/CBF 而很少直接用 POMDP。
§4 三大认知跨越(从确定性到不确定性)⭐⭐¶
把前三节的转变浓缩成三句"思维方式的升级"。每一句都是后续所有章节反复用到的视角。
跨越一:从"单一最优轨迹"到"分布/集合/策略树上的决策"¶
确定性规控的决策变量是**一条曲线**(最优轨迹/控制序列)。不确定性规控的决策变量变成了别的东西:
- 鲁棒规划:一个**名义轨迹 + 一条管道**(轨迹 \(z\) 加围绕它的 RPI 集 \(\Omega\));
- 机会约束/CVaR:一族轨迹的**概率分布**(决策变量含状态分布的演化);
- POMDP:信念空间里的一个**策略**(从信念到动作的映射);
- 分支规划:一棵**策略树**(一个共同的当前动作 + 随未来观测分叉的多条后续)。
数学上,这意味着优化问题的可行域和目标从"作用在点上"变成"作用在集合/分布/函数上"。**好消息**是:KKT 条件的结构、求解器的骨架基本不变——变的是约束从确定性变成集合性(鲁棒)或概率性(机会/CVaR),目标从代价变成期望或风险度量。你已有的 NMPC 求解经验大部分可以迁移。
跨越二:从"模型已知"到"模型 + 数据混合"¶
确定性规控假设动力学 \(f\) 完美已知。不确定性规控承认 \(f\) 不完美,并用三种方式量化和利用这种不完美:
| 方式 | 做法 | 在本专题哪里出现 |
|---|---|---|
| 物理先验 + GP 残差 | \(x_{k+1}=f_{\text{nom}}(x_k,u_k)+d_k\),\(d_k\sim\mathcal{GP}\) | U2(GP-MPC) |
| 物理先验 + 神经残差 | \(d_k\) 由神经网络拟合,配合不确定性估计 | U2(拓展) |
| 贝叶斯后验 | 用观测更新对状态/参数的信念 | U4(belief update) |
理论—工程桥接:这条跨越的工程核心是"学到的模型如何安全地嵌入优化器"。GP 给的不只是一个更准的均值预测,更关键的是它的方差——方差小的地方信任模型、方差大的地方自动收紧约束。这就是为什么 GP-MPC 不是简单地"用 GP 替换 \(f\)",而是把 GP 的均值喂给动力学、把 GP 的方差喂给机会约束。理解这一点,就理解了"经典模型"与"学习模型"在规控里的正确结合方式——这也是 model-based RL(如 Dreamer 系列)在做的同一件事(见 §6)。
跨越三:从"安全 = 硬约束"到"安全是一个谱"¶
确定性规控用硬约束 \(g(x)\le 0\) 保证安全。不确定性下硬约束往往不可行或过度保守(见 §1 场景二)。五条路线提供了五种"安全的定义",构成 §3 的那条谱。这条跨越的实质是:承认"绝对安全"在不确定世界里要么做不到、要么代价过高,转而去精确地管理"我愿意承担多少、什么样的风险"。
本质洞察:这三条跨越其实是同一件事的三个侧面——都是把"一个确定的点"升级成"一个被不确定性刻画的对象"。决策对象从点升级成集合/分布(跨越一),模型从确定函数升级成带不确定性的预测(跨越二),安全从布尔判定升级成连续的风险度量(跨越三)。抓住"点 → 不确定对象"这个统一的升级,五章内容就有了同一根脊椎。
练习¶
- 对鲁棒、机会约束、POMDP 三种范式,分别写出它们的"决策变量是什么",并说明相比名义 MPC 的"控制序列",决策对象在数学上发生了什么升级。
- 用跨越二的视角解释:为什么"用 GP 学到一个更准的模型,然后当确定模型去做名义 MPC"是一种没有用对 GP 的做法?
§5 鲁棒 vs 随机 vs 分布鲁棒——谱系的数学根 ⭐⭐⭐¶
§3 的五范式背后,其实只有三种"对不确定性的世界观"。把它们讲清楚,能让你在面对一个新方法时立刻判断它属于哪一派。
| 世界观 | 对不确定性的假设 | 优化什么 | 需要什么信息 | 保守度 |
|---|---|---|---|---|
| 鲁棒优化 | \(w\in\mathcal{W}\)(只知集合,不知分布) | 最坏情况 \(\max_{w\in\mathcal{W}}\) | 仅集合 \(\mathcal{W}\) | 最高 |
| 随机优化 | \(w\sim P\)(分布 \(P\) 已知) | 期望或概率 \(\mathbb{E}_{P}\) / \(\Pr_P\) | 准确的分布 \(P\) | 取决于目标 |
| 分布鲁棒优化 | \(P\in\mathcal{P}\)(只知分布属于某个族) | 最坏分布 \(\max_{P\in\mathcal{P}}\) | 模糊集 \(\mathcal{P}\) | 介于两者之间 |
逐条解读:
- 鲁棒优化(Robust Optimization):最保守的世界观。它不假设你知道扰动的分布,只假设扰动落在某个有界集合 \(\mathcal{W}\) 里,然后对集合内的最坏情况买单。Tube MPC、可达性方法都属此派。优点是信息需求最低(只要给个集合边界)、保证最强(集合内 100%);缺点是对"最坏但极少发生"的情况也全额买单,常常过度保守。
- 随机优化(Stochastic Optimization):假设你确切知道扰动的分布 \(P\),于是可以优化期望(风险中性)或约束违反概率(机会约束)。机会约束 MPC、大部分 CVaR 方法在"已知分布"假设下属此派。优点是能精确利用分布信息、保守度可控;**致命弱点**是它对分布假设极其敏感——如果你假设扰动是高斯但实际是重尾的,安全保证会悄悄失效。
- 分布鲁棒优化(Distributionally Robust Optimization, DRO):介于两者之间,也是最贴近现实的世界观。它承认"我不可能确切知道 \(P\)",于是只假设 \(P\) 落在一个**分布族(ambiguity set)** \(\mathcal{P}\) 里(比如"均值方差已知、其余未知的所有分布"),然后对族内最坏分布优化。它既利用了部分分布信息(不像鲁棒那么保守),又对分布失配有抵抗力(不像随机那么脆弱)。
本质洞察:DRO 是"对分布本身做鲁棒"。鲁棒优化对**结果**的不确定性买单,DRO 对**概率模型**的不确定性买单。这恰好对应 §2 的两类不确定性:随机优化处理偶然不确定性(已知分布的内禀随机),DRO 额外处理了"我对分布的认知不确定性"。这也是为什么 U5 把 CVaR 和 DRO 放在一起讲——一个深刻的结论是:CVaR 本身有一个 DRO 的对偶表示,即"优化 CVaR" 等价于"在某个特定分布族上做分布鲁棒优化"。这把"风险敏感"和"分布鲁棒"两个看似不同的概念统一了起来。
跨领域类比(标边界):这三种世界观和机器学习里的训练范式有微妙对应——经验风险最小化(ERM)\(\approx\) 随机优化(信任训练分布),分布鲁棒学习(如 Group DRO)\(\approx\) DRO(对分布偏移做鲁棒),对抗训练 \(\approx\) 鲁棒优化(对最坏扰动做鲁棒)。**相似之处**仅在于"对什么做最坏情况优化"这个结构;**不同之处**在于规控里的对象是动力学约束与轨迹,而学习里是损失函数与参数。不要把这个类比延伸到具体求解方法——规控里的 DRO 常借助矩约束/Wasserstein 球的凸重构,与机器学习里的 Group DRO 在技术上不同。
一个连接点:CVaR 是"一致性风险度量"¶
U5 会详细讲,但这里先埋个伏笔:期望(风险中性)和最坏情况(鲁棒)是两个极端,中间地带由**一致性风险度量(coherent risk measure)** 占据,CVaR 是其中最常用的一个。Majumdar 与 Pavone 的工作(见延伸阅读)用一组公理(单调性、平移不变性、凸性、正齐次性)刻画了"什么样的风险度量才是理性的",并论证了 CVaR 满足这些公理而期望-方差等常见度量不满足。这给"为什么选 CVaR 而不是别的风险度量"提供了公理化的依据——而不是凭工程直觉。
⚠️ 本节常见误区¶
💡 概念误区:以为"随机优化比鲁棒优化更先进,所以更好" - 新手想法:"鲁棒只用集合太粗糙了,随机用了完整分布,肯定更精确更好。" - 现象/后果:在分布未知或会漂移的真实场景里,基于错误分布假设的随机优化给出的安全保证形同虚设,反而不如老老实实用鲁棒。 - 根本原因:随机优化的安全性**完全依赖分布假设的正确性**。"用了更多信息"在信息正确时是优势,在信息错误时是负债。鲁棒优化用的信息少,但它的保证不依赖分布形状,因此更稳。 - 正确做法:根据你对分布的把握程度选派别——分布确实清楚 → 随机;只知边界 → 鲁棒;知道一些但不确定 → DRO。检验方法:故意用错误分布(如把重尾当高斯)跑一遍,看安全保证退化多少。
练习¶
- 写出鲁棒、随机、DRO 三种范式各自的优化问题骨架(用 \(\max_{w\in\mathcal{W}}\) / \(\mathbb{E}_P\) / \(\max_{P\in\mathcal{P}}\) 表达),并指出三者在"对什么取最坏/取期望"上的区别。
- (开放思考)"CVaR 有 DRO 对偶表示"意味着优化 CVaR 等价于在某个分布族上做分布鲁棒。试着用语言描述这个分布族大概长什么样(提示:它和"重新加权尾部"有关),不要求严格推导。
§6 与强化学习的连接(一条暗线)⭐⭐¶
本专题讲的是"经典"不确定性规控,但它和强化学习处处相通。把连接点列清楚,能让你在"经典方法"和"学习方法"之间自由切换,而不是把它们当成两个割裂的世界。
| 经典范式 | RL 对应 | 连接点 |
|---|---|---|
| POMDP(U4) | Recurrent/Belief-based RL(如 R2D2、Dreamer) | POMDP 是部分可观测 MDP;RL 用循环网络或学到的 belief 来近似求解它 |
| CVaR/风险敏感(U5) | Distributional RL(如 C51、QR-DQN) | Distributional RL 学整个回报分布,从而可直接优化 CVaR 等风险度量 |
| 模型 + GP/神经残差(U2/跨越二) | Model-based RL(如 Dreamer、TD-MPC) | 都是"学一个动力学模型,再在模型上规划"——区别只在规划器是 MPC 还是采样 |
| 分支/Contingency(U1) | 多模态/分层策略 | 为不同意图准备不同策略,与分层 RL 的"为不同子目标准备不同子策略"同构 |
理论—工程桥接:这条暗线的实用价值在于——当某条经典路线的经典解法在你的问题上算不动或调不好时,它的 RL 对应往往是一条可行的替代路径。例如 U4 的 POMCP 在高维连续观测下树搜索爆炸,此时用一个 recurrent policy 端到端学一个 belief 表征常常更现实。反过来,当 RL 策略需要安全保证时,经典范式(如 CBF)可以作为安全层套在 RL 策略外面(这正是 G 线"安全证书与 MARL"和近年 Safe RL 的核心思路)。经典与学习不是竞争,而是互为安全网与加速器。
本质洞察:经典不确定性规控和 RL 求解的是**同一个数学问题**(不确定下的序贯决策),区别只在"用模型显式优化"还是"用数据隐式学习"。POMDP 是这个交汇点最清楚的地方——它既是经典规划的对象,也是 RL 的对象。把这两条路线看成一个连续谱(从"全模型 MPC"到"无模型 RL",中间是 model-based RL / 可微 MPC),而不是两个阵营,是这个专题想留给你的最重要的全局观之一。
练习¶
- 对本专题五条路线,各找出它最接近的一种 RL 方法,并用一句话说清它们求解的是不是同一个问题、区别在哪。
- (开放思考)举一个具体场景,说明在其中"用经典 CBF 给 RL 策略兜底"为什么比"纯 RL"或"纯经典 MPC"都更合适。
§7 累积项目:统一不确定性导航测试台 ⭐⭐¶
本专题的累积项目是一条贯穿六章的主线:在同一个测试台上,逐章加装一种安全范式,最后做横向对比。这样你不仅学会每种方法,更能在同一问题上亲眼看到它们的差异——这正是附录"统一 Benchmark + 选型决策树"的素材来源。
测试台设定¶
一个 2D 移动机器人(先用单积分器/双积分器,后续可换差速/Dubins 车模型)在一个带静态障碍的场地里导航到目标点。我们**同时注入三类不确定性**,对应 §2 的不同来源,让每一章都有用武之地:
- 动力学扰动 \(w\in\mathcal{W}\)(偶然/执行端):模拟风/打滑,每步给状态加有界随机扰动;
- 定位噪声(认知/感知端):机器人只能通过带噪声、且在某些区域失效的观测来估计自身位置;
- 动态障碍(环境/交互端):场地里有一个行为带离散意图(如"直行"或"拐弯")的移动障碍。
逐章加装的模块¶
| 章 | 给测试台加什么 | 这一章的项目里程碑 |
|---|---|---|
| U0(本篇) | 搭 baseline——风险中性 NMPC + 测试台 + 蒙特卡洛失效统计 | 跑 1000 次,记录碰撞率/超时率,定量暴露"为什么需要不确定性处理" |
| U1 | 对动态障碍加分支/MPDM 决策层 | 为障碍的"直行/拐弯"各备一条轨迹,碰撞率随意图不确定性的下降 |
| U2 | 对动力学扰动加 Tube MPC + CBF 护栏 | 实际轨迹被约束在管道内;CBF 滤波器实现零碰撞 |
| U3 | 把硬避障约束换成机会约束 \(\Pr(\text{碰撞})\le\delta\) | 量化"保守度下降、流畅性上升",对比不同 \(\delta\) 的轨迹 |
| U4 | 加 belief-space 规划 + 主动感知 | 机器人主动绕行去观测区降低定位不确定性,决策优于 greedy 基线 |
| U5 | 把目标换成 CVaR | 扫 \(\alpha\) 观察策略从"省时激进"到"避险保守"的过渡 |
| 附录 | 在同一测试台上 benchmark 五范式 | 产出对比表 + 选型决策树 |
本质洞察:把五种范式放到**同一个测试台**上,是这个项目设计的关键。孤立地实现每种方法,你只会得到"五个能跑的 demo";放到同一问题上对比,你才能真正体会 §3 那条"保守度 ↔ 信息需求 ↔ 计算量"权衡——同一段路,鲁棒方法绕得最远但从不碰障碍,机会约束贴得更近但偶尔擦边,POMDP 会先绕去看清楚再走。这种"同台对比"的直觉,是任何单章都给不了的。
代码组织建议:项目代码独立成一个目录,各章在公共测试台接口(
Env/Planner抽象)上新增一个Planner子类,保持测试台不变、只替换规划器。这样附录的 benchmark 才能做到"控制变量"——同一环境、同一随机种子、只换范式。本篇先把这个公共接口和 baselinePlanner立起来。
本专题常见误解汇总¶
| 误解 | 正确理解 |
|---|---|
| 不确定性处理 = 把安全裕度调大 | 裕度应由不确定性模型推导,且要随不确定性大小自适应(§1) |
| 范式越复杂越好,POMDP 包打天下 | 五范式针对不同不确定性结构,选最轻量够用的(§1/§3) |
| 认知不确定性和偶然不确定性差不多 | 前者可靠观测消减(→主动感知有用),后者不可(→只能容错)(§2) |
| 机会约束的 \(\delta\) 是整条轨迹的失败率 | 通常是每步/每约束的违反上界,联合失败率会累积(§3) |
| CVaR 就是最坏情况 | CVaR 是尾部平均,是连接期望与最坏情况的连续旋钮(§3) |
| 随机优化比鲁棒优化先进所以更好 | 随机优化的安全性依赖分布假设正确;分布不准时鲁棒/DRO 更稳(§5) |
| 经典规控和 RL 是两个割裂的世界 | 二者求解同一类问题,是从"全模型"到"无模型"的连续谱(§6) |
符号约定表(全专题共享)¶
本表是 U0–U5 各章共用的符号基准。各章引入新符号时以此表为准,不在表外随意改用其他记号;表中标注的歧义消解(尤其 \(\alpha\))务必注意。
| 符号 | 含义 | 类型/取值 | 主要出现 | 备注 |
|---|---|---|---|---|
| \(x\) | 状态 | \(\mathbb{R}^n\) | 全专题 | — |
| \(u\) | 控制输入 | \(\mathbb{R}^m\) | 全专题 | — |
| \(f(x,u)\) | 名义动力学 | \(\mathbb{R}^n\times\mathbb{R}^m\to\mathbb{R}^n\) | 全专题 | "名义"= 不含扰动的理想模型 |
| \(\mathcal{X},\ \mathcal{U}\) | 状态/控制约束集 | 集合 | 全专题 | — |
| \(J,\ \ell,\ \ell_f\) | 总代价 / 阶段代价 / 终端代价 | 标量 | 全专题 | — |
| \(\pi\) | 策略(映射) | \(x\ \text{或}\ b \mapsto u\) | U1/U4 | — |
| \(w\) | 扰动 | \(w\in\mathcal{W}\) | U2/U3 | — |
| \(\mathcal{W}\) | 扰动集(有界) | 集合 | U2 | 鲁棒优化的核心假设对象 |
| \(z,\ v\) | 名义状态 / 名义控制 | \(\mathbb{R}^n,\ \mathbb{R}^m\) | U2 | Tube MPC 的"名义系统"分量 |
| \(e\) | 偏差 \(e=x-z\) | \(\mathbb{R}^n\) | U2 | — |
| \(K\) | tube 反馈增益 | 矩阵 | U2 | 注意:本专题 \(K\) 专指反馈增益,与采样式 MPC 专题里的"样本数 \(K\)"无关 |
| \(\Omega\) | RPI(鲁棒正不变)集 | 集合 | U2 | 偏差 \(e\) 的不变包络 |
| \(h(x)\) | 控制屏障函数 / 安全函数 | \(\mathbb{R}^n\to\mathbb{R}\) | U2 | 安全集 \(\mathcal{C}=\{x:h(x)\ge 0\}\) |
| \(\alpha(\cdot)\) | class-K 函数 | 函数(带参数) | U2 | CBF 条件中的 \(\alpha\),是一个函数 |
| \(b,\ b(x)\) | 信念(belief,状态后验) | 概率分布 | U4 | belief-space 规划的决策对象 |
| \(\delta\) | 风险水平 / 约束违反概率上界 | \([0,1]\) | U3 | 区分逐项 vs 联合(见 §3 误区) |
| \(\Sigma\) | 状态协方差 | 半正定矩阵 | U3, U2(GP-MPC) | 不确定性的二阶刻画 |
| \(P,\ \mathcal{P}\) | 概率分布 / 分布族(模糊集) | — | U3/U5 | DRO 在 \(\mathcal{P}\) 上取最坏 |
| \(\mathrm{VaR}_\alpha,\ \mathrm{CVaR}_\alpha\) | 风险值 / 条件风险值 | 标量 | U5 | \(\alpha\in[0,1]\) 为置信水平 |
| \(\alpha\)(标量) | CVaR 置信水平 | \([0,1]\) | U5 | 与 U2 的 class-K 函数 \(\alpha(\cdot)\) 严格区分:此处 \(\alpha\) 是无参数的标量旋钮 |
| \(\rho\) | (一致性)风险度量 | 泛函 | U5 | 一般的风险度量算子 |
\(\alpha\) 的两义是本专题唯一需要特别小心的记号冲突:在 U2 的 CBF 语境里 \(\alpha(\cdot)\) 是一个 class-K 函数(写成带括号的 \(\alpha(h)\)),在 U5 的风险语境里 \(\alpha\) 是一个 \([0,1]\) 区间内的**标量**置信水平。两章各自语境清晰,但跨章引用时务必按上下文区分,不要混为一谈。
学习路径建议¶
| 路径 | 适合谁 | 章节顺序 |
|---|---|---|
| 工程落地路径 | 想尽快在真机上有安全保障的工程师 | U0 → U2(Tube/CBF,工程生态最强)→ U1(分支决策)→ 附录 |
| 理论纵深路径 | 追求方法理解与可能发论文的读者 | U0 → U3(机会约束)→ U5(CVaR/DRO)→ U4(POMDP,理论最深) |
| 快速建图路径 | 只需建立全局认知的读者 | U0(§3 + §7)→ 附录(对比表) |
并行建议:U2 是工程生态最成熟、复用价值最高的一章(acados/OCS2 直接可用),无论走哪条路径都建议优先。U4/U5 理论密度最高、C++ 生态最薄,建议在对前三章有把握后再进。
延伸阅读¶
以下为本专题五条路线的奠基论文,出处已逐一核实,各章引用以此为准。难度标注:⭐⭐ 可作为入门精读,⭐⭐⭐ 需要相应数学基础,⭐⭐⭐⭐ 研究级。
鲁棒规划(U2) - D. Q. Mayne, M. M. Seron, S. V. Raković. "Robust model predictive control of constrained linear systems with bounded disturbances." Automatica, 41(2):219–224, 2005. DOI: 10.1016/j.automatica.2004.08.019. ⭐⭐⭐(Tube MPC 奠基) - A. D. Ames, X. Xu, J. W. Grizzle, P. Tabuada. "Control Barrier Function Based Quadratic Programs for Safety Critical Systems." IEEE Transactions on Automatic Control, 62(8):3861–3876, 2017. arXiv:1609.06408. ⭐⭐⭐(CBF-QP 安全滤波奠基)
机会约束(U3) - L. Blackmore, M. Ono, B. C. Williams. "Chance-Constrained Optimal Path Planning With Obstacles." IEEE Transactions on Robotics, 27(6):1080–1094, 2011. DOI: 10.1109/TRO.2011.2161160. ⭐⭐⭐
POMDP / Belief(U4) - D. Silver, J. Veness. "Monte-Carlo Planning in Large POMDPs." NeurIPS (Advances in Neural Information Processing Systems 23), pp. 2164–2172, 2010. ⭐⭐⭐(POMCP,在线 POMDP 求解里程碑)
风险敏感 / CVaR(U5) - A. Majumdar, M. Pavone. "How Should a Robot Assess Risk? Towards an Axiomatic Theory of Risk in Robotics." ISRR 2017;扩展版收录于 Springer Proceedings in Advanced Robotics, vol. 10, pp. 75–84, 2020. arXiv:1710.11040. ⭐⭐⭐⭐(风险度量公理化) - R. T. Rockafellar, S. Uryasev. "Optimization of Conditional Value-at-Risk." Journal of Risk, 2:21–41, 2000. ⭐⭐⭐(CVaR 优化的本源)
分支 / Contingency(U1) - A. G. Cunningham, E. Galceran, R. M. Eustice, E. Olson. "MPDM: Multipolicy Decision-Making in Dynamic, Uncertain Environments for Autonomous Driving." ICRA 2015. DOI: 10.1109/ICRA.2015.7139412. ⭐⭐⭐
教材/综述(建立体系,按需查阅) - J. B. Rawlings, D. Q. Mayne, M. M. Diehl. Model Predictive Control: Theory, Computation, and Design(鲁棒/随机 MPC 的标准教材)。⭐⭐⭐ - M. J. Kochenderfer 等. Algorithms for Decision Making(MDP/POMDP/不确定性决策的现代统一教材,开放获取)。⭐⭐
本专题完整大纲¶
前面 §3 把五条路线排在"安全谱"上做了横向对照,这里换一个角度——**纵向**地把整个不确定性规划方向的章节地图铺开,逐章展开每一章讲什么、解决什么问题、核心方法、与其他章的关系。这是整个方向的"目录 + 导读",供你在学习前建立全局观、学习中定位当前位置、学习后回查。
整个方向由**一篇总论(U0,本篇)+ 五条路线章(U1–U5)+ 一篇综合附录**构成,共七章。它们的组织逻辑是:U0 建立全局框架与主线,U1–U5 各深入一条安全谱(一种处理不确定性的范式),附录把五条路线收束成可对照、可选型的统一地图并通向博弈规划。
U0 不确定性规划总论(本篇,导论性质)¶
定位:整个方向的入口与地图。建立"为什么需要不确定性规划"的动机、"不确定性从哪来"的分类、"五种安全谱"的主线、"三大认知跨越"的思维转变,以及贯穿全方向的累积项目。
核心问题:风险中性的经典规划在真实世界为什么不够?不确定性有哪些来源?处理它有哪几条根本不同的路线?它们如何统一在一张地图里?
主要内容:§1 风险中性假设的三道裂缝(动机)→ §2 不确定性的四来源分类(认知 / 偶然 / 模型 / 环境)→ §3 五种安全谱主线(本方向最重要的一节,五范式对照表)→ §4 三大认知跨越(从单一最优到分布 / 集合 / 策略树、从模型已知到模型+数据、从硬约束到安全谱)→ §5 鲁棒 vs 随机 vs 分布鲁棒的数学根 → §6 与强化学习的连接(暗线)→ §7 累积项目(统一不确定性导航测试台)。
与其他章的关系:U0 是 U1–U5 的共同前提——它的五安全谱(§3)对应五条路线章,四来源分类(§2)帮你判断该用哪条路线,累积项目(§7)的五个模块在 U1–U5 逐章加装。读任何一条路线章前,都建议先读 U0 建立框架。
怎么读本篇:§3 五安全谱和 §7 累积项目是两条最该先立起来的主线——前者是"地图",后者是"贯穿练习"。建议第一遍把这两节读透、其余节速读建立全局,之后每学一条路线章再回看 §3 对应列。本篇是导论性质,不必逐字精读,重在建立"五条路线如何统一"的框架。
U1 分支 / 场景规划(环境 / 交互端不确定性)¶
定位:处理**离散多模态**的未来——当未来有几种可枚举的可能(他车左转还是右转、行人过街还是等待),不赌单一最优,而为每种可能各备一条应对。安全谱上最"进取"端(§3 谱图最右)。
核心问题:未来不是单一确定的,而是几种离散场景,每种场景的最优应对不同。如何在一棵"分支树"上同时规划、并随观测逐步确认走哪条分支?
主要内容:场景树的构造与表示 → 在分支树上的策略评估(期望 / min-max)→ 分支与共同前缀的耦合(执行前的决策必须对所有分支都合理)→ 引导式分支(用引导减少分支数爆炸)→ 与 MPC 的结合(multi-stage NMPC)。
代表方法:MPDM(多策略决策)、EUDM、EPSILON(引导式分支的完整系统)、Multi-stage NMPC。奠基论文:Cunningham et al., MPDM, ICRA 2015。C++ 生态:中(EPSILON 等有开源)。
典型陷阱:分支数随时间步指数爆炸——盲目枚举所有场景 \(\times\) 所有时刻会让问题不可解;实战靠引导式分支(只展开有希望的分支)控制规模。另一个易错点是忽略"共同前缀约束":执行前必须立刻做的决策对所有分支都得合理,不能为每个分支假设不同的当前动作。
累积项目模块:给测试台的动态障碍加分支 / MPDM 决策层——为障碍的"直行 / 拐弯"各备一条轨迹,观察碰撞率随意图不确定性的下降。
与其他章的关系:U1 的"多模态离散未来"是理解 U4(POMDP 的 belief tree)的认知铺垫;它与 U4 结合可处理"意图既多模态又需推断"的问题(如 EPSILON 本质是 POMDP + 引导分支);它是通向博弈规划的直接前置(分支树升级为博弈树)。
U2 鲁棒规划与安全滤波(执行端有界扰动)¶
定位:处理**有界但任意**的扰动(风扰、地面不平、负载变化),用集合论语言把所有扰动装进一个有界集,追求"对集合内所有扰动都安全"的硬保证。安全谱上最"保守"端。工程生态最成熟的一章,建议优先学。
核心问题:系统受有界扰动,需要可证明的安全保证(碰一次都不行)。如何在不确定扰动下保证约束始终满足,同时不过度保守?
主要内容:扰动集与不变集(invariant set)→ Tube MPC(名义轨迹 + 误差管道,把名义系统与扰动解耦)→ 控制障碍函数 CBF 与安全滤波(把任意标称控制投影到安全集,CBF-QP)→ 可达性分析(FaSTrack 等)→ GP-MPC(用高斯过程学模型残差,应对模型不确定)→ 多层安全栈(MPC + CBF + 全身控制)→ 从 Python 原型到 C++ 部署(acados / OCS2)。
代表方法:Rigid/Robust Tube MPC、CBF-QP、FaSTrack、GP-MPC。奠基论文:Mayne et al., Tube MPC, Automatica 2005;Ames et al., CBF-QP, IEEE TAC 2017。C++ 生态:强(acados、OCS2、Crocoddyl、TinyMPC)。
典型陷阱:把无界扰动(如高斯噪声)硬塞进有界集,会导致 tube 无限膨胀、问题不可行——无界扰动应交给 U3/U5。另一个常见误区是过度保守:对最坏情况买单导致机器人寸步难行,此时该评估是否真需要 100% 硬保证、还是可退到机会约束。
累积项目模块:给测试台的动力学扰动加 Tube MPC + CBF 护栏——实际轨迹被约束在管道内,CBF 滤波器实现零碰撞。
与其他章的关系:U2 是 RL 的对照基线(模型已知侧);它与 U5 结合得到 CVaR-CBF(把硬安全条件软化为风险敏感);它的 tube 思想与 U3 的概率约束是同一动力学端入口的"硬保证 vs 高概率"两种态度。
U3 机会约束规划(执行端概率扰动)¶
定位:处理**有概率分布**的扰动、且任务**能容忍小概率违反**,把硬约束松弛成概率约束,用风险水平 \(\delta\) 把"最坏情况"和"期望"光谱化。安全谱上居中。
核心问题:要求"对所有扰动都安全"(鲁棒)太保守、甚至不可行(无界扰动),但又不能完全不管。如何要求"高概率安全"(违反概率 \(\le\delta\)),并把概率约束转化为可求解的形式?
主要内容:从硬约束到概率约束 \(\Pr(g(x)>0)\le\delta\) → 高斯假设下的解析收紧(用分位数 \(\Phi^{-1}\) 把概率约束变确定性约束)→ 迭代风险分配 IRA(把总违反概率预算分配到多个约束 / 多个时刻)→ 逐项 vs 联合机会约束(union bound)→ 协方差导引(主动控制状态不确定性的演化)→ CC-RRT(机会约束融入采样规划)→ 分布鲁棒机会约束(连分布都不确定时)。
代表方法:解析 CC-MPC、IRA、CC-RRT、Covariance Steering、Wasserstein DR-CC。奠基论文:Blackmore et al., Chance-Constrained Path Planning, IEEE T-RO 2011。C++ 生态:弱(多为研究代码 / 通用凸优化工具)——原创空间大。
典型陷阱:把"逐项违反概率 \(\delta\)"误当成"轨迹整体失败率"——\(N\) 个时刻各自 \(\delta\) 的约束,整条轨迹的失败率可能远高于 \(\delta\);需用 union bound 或风险分配重算预算。另一个易错点是分布假设错误:高斯解析收紧只在扰动近似高斯时有效,重尾 / 多峰分布下会失真。
累积项目模块:把测试台的硬避障约束换成机会约束 \(\Pr(\text{碰撞})\le\delta\)——量化"保守度下降、流畅性上升",对比不同 \(\delta\) 的轨迹。
与其他章的关系:U3 是 Safe RL 的 CMDP 的对照(桥 1);它的 IRA 对应 RL 的拉格朗日风险分配(桥 2);U5 的 CVaR 是 U3 的"公理化升级"(从控违反概率到控尾部严重程度)。
U4 POMDP / Belief 空间规划(感知端认知不确定性)¶
定位:处理**感知端**而非动力学端的不确定性——状态本身看不清(而非已知但有扰动),把规划对象从状态空间提升到 belief(信念)空间,显式权衡"行动"与"为了看清而主动收集信息"。理论最厚的一章。
核心问题:机器人看不清自己 / 环境的真实状态(遮挡、传感器受限、噪声大)。如何在"对状态的概率信念"上做决策,并在必要时主动探索以减少不确定性?
主要内容:从 MDP 到 POMDP(引入观测模型与 belief)→ belief 更新(贝叶斯滤波)→ belief 空间的价值函数与求解难点(维度灾)→ 离线点基方法(SARSOP)→ 在线树搜索(POMCP、DESPOT,用采样场景破维度灾)→ 主动感知 / 信息收集的建模 → 与 SLAM 的衔接(状态估计提供 belief)→ 风险敏感 POMDP(与 U5 结合)。
代表方法:POMCP、DESPOT、SARSOP、HyP-DESPOT(GPU 并行)、POMCPOW(连续空间)。奠基论文:Silver & Veness, POMCP, NeurIPS 2010。C++ 生态:中—强(DESPOT、SARSOP 有 C++)。
典型陷阱:把"可测但有扰动"的问题硬塞进 POMDP——状态其实可测时,应退到 Tube/CBF(U2),用 POMDP 会让在线计算跑不到控制频率。另一个易错点是把偶然不确定性误判为认知:只有"多看一眼能消减"的认知不确定性才值得主动感知;对偶然不确定性"绕路去看"反而更差。
累积项目模块:给测试台加 belief-space 规划 + 主动感知——机器人主动绕行去观测区降低定位不确定性,决策优于 greedy 基线。
与其他章的关系:U4 的 belief 对应现代 World Model 的 RSSM(桥 5)、其树搜索对应 Neural MCTS(桥 6);它消费 SLAM / 状态估计的输出;它与 U5 结合得到风险敏感的信念空间规划;它的不完全信息形式是通向博弈规划(贝叶斯博弈)的前置。
U5 风险敏感规划 / CVaR(评估端尾部风险)¶
定位:直接对代价分布的**尾部**建模——既在乎平均、又在乎"最坏不能太差"(罕见但灾难性的尾部事件),用公理化的畸变风险测度(CVaR)度量"最坏 \(1-\alpha\) 的平均"。在"期望"和"最坏"之间提供由 \(\alpha\) 连续调节的中间地带。与 RL 交界最深的一章。
核心问题:期望对罕见灾难"失明"(被平均掉),机会约束对"违反多严重"失明(只看概率)。如何度量并优化代价分布尾部的严重程度?
主要内容:风险度量的公理化(Artzner 四公理 + Majumdar–Pavone 机器人六公理,为什么 VaR 出局、CVaR 入选)→ CVaR 的可算化(Rockafellar–Uryasev 变分公式 → 辅助变量 → 线性规划,保凸)→ 时间一致性与嵌套 CVaR(为什么静态 CVaR 塞不进动态规划、嵌套 CVaR 如何恢复 Bellman)→ 分布式强化学习与 CVaR 的精确关系(C51 / QR-DQN / IQN,学整个回报分布、风险态度后置)→ CVaR-CBF 与 CVaR-MPC(把尾部风险嵌进安全工具)→ 分布鲁棒 CVaR(应对分布本身不确定 / sim-to-real)。
代表方法:CVaR-MPC、嵌套 CVaR 值迭代、IQN(分布式 RL)、CVaR-CMDP、DR-CVaR。奠基论文:Rockafellar & Uryasev, CVaR Optimization, J. of Risk 2000;Majumdar & Pavone, 风险度量公理化, ISRR 2017。C++ 生态:弱(与 RL 交界、偏 Python)——原创空间大。
典型陷阱:把静态 CVaR 直接套进多步动态规划——静态 CVaR 时间不一致,会导致策略"朝令夕改";多步问题需用嵌套 CVaR 恢复 Bellman 结构。另一个易错点是混淆 CVaR 与机会约束:机会约束控"违反概率"(盲于严重程度),CVaR 控"尾部平均严重程度",灾难性后果的问题该用 CVaR。
累积项目模块:把测试台的目标换成 CVaR——扫 \(\alpha\) 观察策略从"省时激进"到"避险保守"的过渡。
与其他章的关系:U5 是 U3 的公理化升级;它与 U2/U4 结合得到 CVaR-CBF / 风险敏感 POMDP;它与 RL 交界最深——CVaR 约束对应 CVaR-CMDP(桥 3)、畸变风险测度对应 IQN 的 \(\tau\) 重采样(桥 4);它的风险敏感可嵌入博弈得到风险敏感均衡。
综合对比与附录(方向收官)¶
定位:把 U1–U5 五条路线收束成一张可对照、可选型、可延伸的统一地图,并把读者送往下一个专题(博弈规划)。不引入新算法,是综合 / 索引性质的收官章。
核心问题:五条路线如何统一理解(而非孤立记忆)?面对一个新问题如何选型?如何组合多条路线?它们与 RL 如何对应?整个方向的边界在哪、往哪走?
主要内容:五条路线的本质对照(按"不确定性入口"统一组织)→ C++ 生态成熟度与选型决策树 → 与强化学习的交界(一张二维图 + 六座桥)→ 三条学习路线(按背景选)→ 组合多条路线(正交叠加 vs 同入口二选一)→ 五条路线的发展弧(两条趋势:风险中性→风险敏感、模型已知→数据驱动)→ Part-U 的边界(策略性交互 / 目标未知 / 极长时域 / 表征问题)→ 一页纸全景速记图 → 论文路线(27 篇)/ 学习路线 / 衔接点 / 开源项目四个附录 → 通向博弈规划(为什么概率模型不够、从"最优"到"均衡")。
与其他章的关系:附录是 U1–U5 的总收束(连成网、做选型、与 RL 对接),也是通向博弈规划方向的桥梁。建议在学完 U1–U5 后通读建立全局观,之后作为索引随时回查。
怎么读本章:它不是"学新东西"而是"把学过的连成网",适合学完 U1–U5 后通读一遍建立全局观,之后当索引回查(选型查决策树、查论文查附录 A、对接 RL 查六座桥)。检验你读懂的标准不是"看完了",而是"面对一个新问题能用它的框架快速选型 / 定位"。
一张表速览全方向¶
| 章 | 定位(处理哪个入口) | 核心范式 | 安全谱位置 | C++ 生态 | 难度 |
|---|---|---|---|---|---|
| U0 总论 | 全局框架与主线 | —(导论) | — | — | ⭐ |
| U1 分支 / 场景 | 环境 / 交互端(离散多模态未来) | 分支树 + 期望 / min-max | 进取端 | 中 | ⭐⭐ |
| U2 鲁棒 / 安全滤波 | 执行端(有界扰动) | Tube MPC / CBF | 最保守端 | 强 | ⭐⭐⭐ |
| U3 机会约束 | 执行端(概率扰动) | 概率约束 + 风险分配 | 居中 | 弱 | ⭐⭐⭐ |
| U4 POMDP / Belief | 感知端(状态不可见) | belief 空间 + 树搜索 | 居中 | 中—强 | ⭐⭐⭐⭐ |
| U5 风险敏感 / CVaR | 评估端(代价尾部) | 畸变风险测度 / CVaR | 可调 | 弱 | ⭐⭐⭐⭐ |
| 综合附录 | 方向收官与索引 | —(综合对比) | 覆盖全谱 | — | ⭐⭐ |
这张表是全方向最紧凑的速览:七章按"处理哪个不确定性入口"组织,覆盖了不确定性进入机器人决策的执行端、感知端、评估端、交互端各个环节。建议把它和 §3 的五范式对照表一起作为本方向的"两张总图"——§3 横向比五条路线的安全语义,这张表纵向列七章的内容地图。
本专题各章关系¶
| 后续章节 | 与本篇的关系 | 本篇哪一节为其铺垫 |
|---|---|---|
| U1 分支场景 | 处理环境/交互端不确定性的离散多模态 | §2 来源分类、§3 安全谱、§7 项目 U1 模块 |
| U2 鲁棒规划与安全滤波 | 处理执行端有界扰动,工程生态最强 | §3 鲁棒列、§4 跨越一/二、§5 鲁棒世界观 |
| U3 机会约束 | 把硬约束换成概率约束 | §3 机会约束列、§5 随机优化、§7 项目 U3 模块 |
| U4 POMDP/Belief | 处理感知端认知不确定性 + 主动感知 | §2 认知 vs 偶然、§3 POMDP 列、§6 RL 连接 |
| U5 风险敏感/CVaR | 控制尾部风险,与 DRO/Distributional RL 交界 | §3 CVaR 列、§5 DRO 与一致性风险度量、§6 |
| 附录 综合对比 | 五范式横向对比 + 选型决策树 | §3 对照表、§7 同台 benchmark |
🔧 选型故障排查¶
不确定性规划里最常见的"故障"不是代码崩溃,而是**选错了范式**——用错工具会导致要么过度保守、要么求解爆炸、要么安全保证失效。下表按"症状"帮你定位该回看哪一节、该走哪条谱。
| 症状 | 可能原因 | 排查/纠正步骤 | 相关章 |
|---|---|---|---|
| 规划器频繁求解失败(infeasible) | 用硬约束去卡概率事件 | 1. 确认约束对象是否本质上是分布;2. 改用机会约束 \(\Pr\le\delta\);3. 若仍紧,做风险分配 | U3 |
| 行为过度保守、寸步难行 | 用了鲁棒/最坏情况,但场景其实容忍小概率违反 | 1. 评估是否真需要 100% 保证;2. 退到机会约束或 CVaR;3. 调 \(\delta\)/\(\alpha\) 旋钮 | U3/U5 |
| 在线计算跑不到控制频率 | 把可测+扰动问题硬塞进 POMDP | 1. 确认状态是否其实可测;2. 若可测,退到 Tube/CBF;3. 仅当部分可观测且需主动感知才用 POMDP | U2/U4 |
| 仿真安全、真机失效 | 名义模型无安全余量,或分布假设错误 | 1. 加 Tube/CBF 安全层;2. 检查扰动/分布假设是否匹配真机;3. 必要时上 DRO | U2/U5 |
| 蒙特卡洛失败率远高于设计 \(\delta\) | 把逐项 \(\delta\) 当成了轨迹整体失败率 | 1. 区分逐项/联合机会约束;2. 用 union bound 或风险分配重算预算 | U3 |
| "多采集数据"后不确定性纹丝不动 | 把偶然不确定性误判为认知 | 1. 用重复测量判断主导成分;2. 偶然主导则改用容错(鲁棒/概率约束)而非收集数据 | §2 / U2 |
| 主动感知"绕路去看"反而更差 | 在偶然不确定性主导的问题上用了信息收集型规划 | 1. 确认不确定性是否认知;2. 偶然主导时去掉主动感知层 | §2 / U4 |
研究与实践建议¶
给第一次进入本专题的工程师:先把 §3 的五范式表和 §7 的累积项目立起来——有了一个能跑的风险中性 baseline 和一张范式地图,后面每一章都是"在 baseline 上加一层、在地图上点亮一格",学习路径会非常清晰。不要一上来就啃 POMDP 或 CVaR 的理论,先在 U2(工程生态最强)建立"不确定性处理真的有用"的体感。
给有经验、想做研究的读者:本专题的开放问题大多集中在"如何把学习到的不确定性(GP/神经网络的 epistemic/aleatoric 分解)形式化地传给经典安全范式(Tube/CBF/机会约束)",以及"经典安全保证如何与 RL 策略融合"。§5 的"CVaR 的 DRO 对偶"和 §6 的"经典—学习连续谱"是两个值得深挖的切入点。各章末尾的"前沿与开放问题"会给出更具体的方向。