Part-U 综合对比与附录:五条安全谱如何各就其位,以及通向博弈规划¶
Part-U 不确定性规划方向 · 收官章(U6 / 附录) 性质:⚪ 跨方向共享。本章是整个不确定性规划方向(U1–U5)的综合、对照与索引——不引入新算法,而是把五条路线放进一张统一的地图,给出选型、学习路线、与 RL 的交界、论文与开源索引,并把读者送往下一个专题(博弈规划)。
前置自测¶
本章是 U1–U5 的综合,开始前请确认你对五条路线各自的"一句话本质"还有印象。答不出 ≥ 3 题,建议先回到对应章节快速回顾该章的小结。
- **U1 分支/场景规划**的核心对象是什么?它如何表示"未来的多种可能",用什么准则在这些可能上求解?(→ U1)
- **U2 鲁棒规划**用什么数学语言装"不确定性"?"管道(tube)"把名义系统和扰动做了什么处理?(→ U2)
- **U3 机会约束**允许约束以什么方式被违反?它把"最坏情况 vs 期望"光谱化成了什么可调的量?(→ U3)
- U4 POMDP 处理的是哪一端的不确定性(动力学端还是感知端)?规划对象从状态空间提升到了什么空间?(→ U4)
- U5 风险敏感/CVaR 直接对什么建模?它在"期望"和"最坏"之间提供了什么?(→ U5)
- **横跨五章的统一主线**是什么?(提示:五条路线分别处理不确定性进入决策的不同"入口"——执行端、动力学端、感知端、评估端。)
这 6 题对应本章要织进一张网的五条线索 + 一条主线。如果某条线索模糊,本章第一节的"数学本质一段总结"会把五条路线的哲学差异重新点亮,但更深的细节仍建议回到对应章节。
自测结果怎么用:(1) 6 题全清楚 → 你对五条路线的记忆扎实,可以直接进入本章的综合对照,重点放在"它们的关系 / 选型 / RL 交界"上;(2) 答对 4-5 题 → 大体记得,模糊的那一两条在读到本章对应对照时会自然补上,不必专门回去;(3) 答对 3 题以下 → 五条路线的记忆已较淡,建议先花一两小时快速过一遍 U1–U5 各章的小结(不是重读全章,只看小结),重新激活记忆,再读本章——否则本章的"对照"会因为你对被对照的对象不熟而难以吸收。
本章是"连点成网"的综合章——它假设你脑子里已经有了"五个点"(五条路线各自的核心),本章的工作是把这五个点连成网(关系 / 选型 / 交界 / 边界)。如果某些"点"还模糊,网就连不起来。所以这个前置自测不是形式——它真的在检验你是否具备读本章的前提。诚实地评估,按结果决定是先回顾还是直接进入。
本章目标¶
学完本章,你应该能够:
- 用一句话说清 U1–U5 五条路线各自的数学本质,并解释它们分别处理不确定性进入机器人决策的哪个"入口"。
- **在一张二维图上定位**五条路线(横轴"模型已知度"、纵轴"风险态度"),并说明它们与经典 MPC、RL(PPO/SAC、Safe RL、分布式 RL、World Model)的精确对应关系。
- 根据不确定性的结构(有界集合 / 高斯 / 离散意图 / 感知 / 尾部 / 分布本身不确定)快速选出首选路线和代表方法。
- 评估五条路线的 C++ 生态成熟度,识别哪些方向工程生态完备(适合直接上手)、哪些几乎空白(适合做原创贡献)。
- 规划一条适合自己背景的学习路线(速成 / 完整 / RL 优先),并知道每条路线的代表论文与开源项目。
- 建立五条路线与其他专题的衔接认知(SLAM、无人机、四足、机械臂、博弈规划、博士前数学),理解不确定性规划作为横切专题的位置。
- 说清不确定性规划与博弈规划的边界——为什么"把他人当随机过程"在策略性交互下会失效,从而理解下一个专题的动机。
这七个目标分两类:1-4 是**理解与决策**类(看清五条路线的关系、会选型、懂工程权衡、知道与 RL 的对应)——服务你"用好五条路线";5-7 是**规划与定位**类(会规划学习、知道与其他专题的衔接、清楚边界)——服务你"在更大版图里安放 Part-U"。前者让你成为五条路线的熟练使用者,后者让你成为知道何时该跨出去、该往哪走的成熟决策者。
如何使用本章:本章和 U1–U5 的角色不同——前五章是"学新工具",本章是"把工具连成网、学会驾驭"。所以本章不适合"线性精读每一个字",而适合"先通读建立全局观,再按需回查"。具体地:第一次读,按知识导航的"想快速建立全局观"路径通读(数学本质 → 二维图 → 通向博弈规划),获得整体框架;之后把本章当索引——做选型时查 §U6.2、规划学习时查 §U6.4、查论文 / 代码时查附录 A/D、判断边界时查 §U6.7。本章的价值在"反复回查时的实用性",而非"一次读完的信息量"。
本章知识导航¶
本章主线一句话:把 U1–U5 五条路线放进一张统一的地图——按"不确定性从哪个入口进入决策"组织,给出本质对照、选型、学习路线、与 RL 的交界、论文与开源索引,并送读者进入博弈规划。
知识结构(综合 + 索引两大块):
Part-U 综合对比与附录
│
┌───────────┴───────────┐
综合(理解五条路线的关系) 索引(查阅与延伸)
│ │
┌──┴──┬────────┬────────┐ ┌──┴───┬──────┬──────┐
本质 C++生态 选型 学习 附录A 附录B 附录C/D
对照 成熟度 指南 顺序 论文 学习 衔接/
(5种 (哪些 (按不确 (3条 路线 路线 开源
哲学) 空白) 定性选) 路线) (27篇) (3条) 索引
│
与 RL 交界
(二维图 + 6座桥)
│
组合多路线(§U6.5) + 发展弧(§U6.6)
│
通向博弈规划
(为什么概率模型不够)
阅读路径: - 想快速建立全局观:读"数学本质一段总结"(五条哲学)→ "与 RL 交界"的二维图 → "通向博弈规划"。 - 要做选型决策:直接看"适用场景选型指南" + "C++ 生态成熟度对比"。 - 要规划学习:看"推荐学习顺序" + 附录 B(三条学习路线)。 - 要查论文 / 代码:附录 A(27 篇论文路线)+ 附录 D(开源项目表)。 - 要对接其他专题:附录 C(衔接点表)。 - 问题有多种不确定性:看 §U6.5(组合多条路线——正交叠加 vs 同入口二选一)。 - 想理解领域演化与前沿:看 §U6.6(五条路线的发展弧——两条大趋势、前沿在哪)。 - 想知道五条路线的边界:看 §U6.7(Part-U 没覆盖什么——四条边界与如何给问题定位)。 - 想要一张随时回忆的全景图:看 §U6.8(一页纸总览——五条路线的槽位速记 + 给不同读者的一句话)。
难度:本章无新推导,难度在于"融会贯通"——把五章的细节压缩成可对照、可选型的结构化认知。建议在学完 U1–U5 后阅读,作为整个方向的收束与索引。
本章的结构对应两个目的: 前半(§U6.1–§U6.8 八个小节)是"综合"——帮你理解五条路线的关系、会选型、懂工程权衡、知道与 RL 的对应、会组合、知道演化和边界; 后半(四个附录 + 模板节)是"索引"——供你查论文、查代码、查衔接点、查速查表。综合部分适合通读建立全局观, 索引部分适合需要时回查。两部分合起来, 本章既是 Part-U 的"理解收束"(把五章连成网), 又是 Part-U 的"实用手册"(随时回查的索引)。
前置知识桥接¶
本章建立在 U1–U5 全部内容之上。这里用最精炼的方式重新激活五条路线各自的"一句话本质",作为后续对照的基础——每条都浓缩到 2–3 行,细节请回到对应章节。
为什么要先做这个回顾, 而不直接进入对照? 因为本章的所有对照(入口、二维图、六座桥、组合、边界)都建立在"你脑子里有五条路线"这个前提上——如果某条路线的记忆模糊, 涉及它的对照你就跟不上。这个回顾不是重复 U1–U5(那需要数千行), 而是"激活"——用最精炼的一句话点亮每条路线的核心, 让它们在你脑中重新清晰, 为接下来的对照做好准备。如果回顾时发现某条路线连"一句话本质"都想不起来, 那是个信号: 该回那一章快速重温, 否则本章涉及它的部分会读得吃力。
回顾 U1(分支/场景规划):当未来有几种**离散的、可枚举的**可能(他车左转还是右转、行人过街还是等待),U1 不赌单一最优轨迹,而是显式构造一棵分支树——每个分支对应一种未来场景,用期望或 min-max 在树上求解。它最"算法化"(离散、非参数、可枚举),是 MPDM / Contingency Planning / Multi-stage NMPC 的共同骨架。
回顾 U2(鲁棒规划与安全滤波):当扰动**有界但任意**(风扰、地面不平),U2 用集合论语言把所有可能扰动装进一个有界集 \(\mathbb{W}\),通过 invariant tube 把"名义系统"和"扰动"解耦——名义系统在收紧的约束下规划,tube 保证真实状态永远在名义轨迹周围的管道内。它追求 worst-case 可行性的硬保证,C++ 生态最成熟(acados / OCS2 / CBF)。
回顾 U3(机会约束规划):当扰动**有概率分布**(高斯噪声)、且任务**可接受小概率违反**,U3 以概率测度为第一语言,把硬约束 \(g(x)\le0\) 松弛成概率约束 \(\Pr(g(x)>0)\le\delta\)——用风险水平 \(\delta\) 把"最坏情况(\(\delta\to0\))"和"期望(\(\delta\) 大)"光谱化。它是 CC-MPC / IRA / CC-RRT / Covariance Steering 的共同语言,C++ 生态几乎空白。
回顾 U4(POMDP / Belief-space):当不确定性在**感知端**(状态看不清,而非动力学有扰动),U4 把规划对象从状态空间提升到 belief 空间——在"对状态的概率分布"上做决策,显式权衡"行动"与"为了看清而探索(信息收集)"。它理论最厚、C++ 生态也成熟(DESPOT / SARSOP),是 POMDP 树搜索的家园。
回顾 U5(风险敏感 / CVaR):当你既在乎"平均好"、又在乎"最坏不能太差"(尾部灾难),U5 直接对代价分布的**尾部**建模,用公理化的畸变风险测度(CVaR)度量"最坏 \(1-\alpha\) 的平均"——在"期望"和"最坏"之间提供由 \(\alpha\) 连续调节的中间地带。它与 RL 交界最深(分布式 RL),C++ 生态几乎空白。
这五条线索会在本章反复对照。一个统一的记忆抓手:它们分别处理不确定性进入决策的五个入口——U1 执行端(未来分支)、U2 动力学端(有界扰动)、U3 动力学端(概率扰动)、U4 感知端(状态不可见)、U5 评估端(代价尾部)。
为了让回顾更扎实,再补每条路线**最该记住的一个陷阱**(这些陷阱在各章详述,这里汇总激活记忆):
- U1 的陷阱:分支数随未来步数指数爆炸——别盲目增加分支 / 时域,要用引导式分支(EPSILON 的做法)控制规模。
- U2 的陷阱:对无界扰动不可行 / 对所有扰动设防易过度保守——别把高斯噪声(无界)硬塞进有界集,那种情况用 U3。
- U3 的陷阱:盲于"违反多严重"——它只控违反概率,灾难性后果的问题别只用 U3,要叠加 / 改用 U5。
- U4 的陷阱:状态 / belief 空间爆炸、计算最贵——别对本可用 U2/U3 处理的动力学扰动问题大材小用地套 POMDP。
- U5 的陷阱:高 α 时尾部样本少、估计不稳——别盲目调高 α,要保证尾部有效样本 \((1-\alpha)N\) 足够。
这五个陷阱是各章"固有局限"的浓缩(§U6.1 有完整的局限表)。带着对它们的记忆读本章,你会更容易理解"为什么选型要避开某条路线在某场景的局限"——选型的本质,一半是匹配路线的强项,一半是避开它的陷阱。
如果跳过本章会怎样¶
三个具体场景,说明缺了这张"综合地图"会出什么事:
- 场景一(选错路线,南辕北辙):你面对一个机器人不确定性问题,手里学过 U1–U5 五种工具,但没有把它们对照清楚。问题其实是"感知端看不清"(该用 U4 POMDP),你却套用了 U2 鲁棒——把"看不清"误当成"有扰动",用 tube 去裹一个本质是信息不足的问题,结果机器人既不主动探索(不收集信息)、又被迫极度保守(对所有可能状态都防),两头不讨好。综合地图的"选型指南"正是为了避免这种"用错入口"的根本性错误。
-
场景二(看不清 RL 与规划的对应,重复造轮子):你有 RL 背景,想做风险敏感决策,但不知道 U3 的机会约束对应 Safe RL 的 CMDP、U5 的 CVaR 对应 CVaR-CMDP、畸变风险测度对应 IQN 的 τ 重采样。于是你要么在 RL 里从头摸索"怎么加安全约束"(其实规控侧的 IRA 风险分配早已给出对应物),要么在规控里忽略"分布式 RL 已经把风险态度学习化了"。综合地图的"与 RL 交界"那一节正是为了打通这两个世界,让你在任一侧的积累都能迁移到另一侧。
-
场景三(学了就忘,知识不成网):你认真学完了 U1–U5 五章,每章当时都懂了。但半年后回想,五条路线在脑子里成了一盘散沙——记得有"鲁棒""机会约束"这些名词,却说不清它们的关系、何时用哪个、能不能组合。面对一个新问题,你甚至想不起来"我学过的哪条路线适用"。根本原因是:孤立学习的知识不会自动连成网, 也就不会长久留存——没有统一框架把五条路线挂在一起, 它们就是五个迟早会淡忘的孤立条目。综合地图的"入口 / 共同骨架"框架, 正是把五条路线连成网、让它们互相支撑、长久留存的关键。
一句话:缺了这张综合地图,你拥有五件工具却没有使用它们的判断力——可能用错入口、可能重复造轮子、可能看不到本可迁移的跨领域对应、可能学了就忘。
预计阅读时间¶
- 精读(对照五章 + 思考选型 + 规划自己的学习路线):4–6 小时。
- 速读(建立全局观,看懂本质对照与 RL 交界图):1.5–2 小时。
- 速查(查某条路线的选型 / 论文 / 开源项目):直接跳对应的表,10–20 分钟。
本章与 U1–U5 不同——它不是"学新东西",而是"把学过的东西连成网"。建议在完成 U1–U5 后通读一遍建立全局观,之后作为索引随时回查。
也正因为本章是"连网 + 索引"而非"学新知识", 它的阅读方式和前五章不同。前五章每一节都引入新概念、新算法, 需要逐节吃透、动手实现; 本章则是把已知的五条路线放进各种对照框架(入口、二维图、六座桥、边界), 这些对照本身不难(假设你已懂五条路线), 难的是"内化成自己的判断力"。所以本章不必逐字精读求"懂", 而要在读后能"用"——能选型、能讲解、能定位。检验你读懂本章的标准不是"我看完了", 而是"面对一个新问题, 我能不能用本章的框架快速分析"。带着"我要把这些框架用起来"的目的读, 比带着"我要读完"的目的读, 收获大得多。
§U6.1 五条路线的综合对比:不确定性进入决策的五个入口 ⭐⭐⭐¶
动机:五件工具,但它们到底有什么关系¶
学完 U1–U5,你手里有了五件处理不确定性的工具:分支规划、鲁棒 MPC、机会约束、POMDP、CVaR。但"拥有五件工具"和"知道何时用哪件"是两回事。如果不把它们的关系理清,面对一个真实问题时,你会陷入"我学过好几种方法,但不知道这个问题该用哪种"的困境——甚至用错入口(场景一)。
理清关系的关键,是找到一个**统一的组织维度**。本节提出的维度是:不确定性从哪个"入口"进入机器人的决策。机器人的决策闭环可以粗分为几个环节——感知世界(状态估计)→ 预测未来(他者 / 自身演化)→ 评估代价 → 优化执行。不确定性可以从其中任何一个环节进入,而五条路线恰好对应了五个不同的入口:
- 执行端 / 未来分支(U1):未来有几种离散的可能,不确定的是"会走哪个分支"。
- 动力学端 / 有界扰动(U2):系统演化受有界但任意的扰动,不确定的是"扰动具体是多少"。
- 动力学端 / 概率扰动(U3):扰动有概率分布,不确定的是"这一次的随机实现"。
- 感知端 / 状态不可见(U4):状态本身看不清,不确定的是"我现在到底在什么状态"。
- 评估端 / 代价尾部(U5):代价是随机的,不确定的是"会不会落到灾难性的尾部"。
把"不确定性的入口"作为组织维度,五条路线就不再是零散的五件工具,而是一张覆盖决策全流程的地图——每条路线守住一个入口。理解了这一点,选型就变成了"先判断我的不确定性从哪个入口进来,再选守那个入口的工具"。
为什么需要这样一个统一的组织维度,而不是把五条路线当五个独立的方法分别记住?因为**孤立的知识不会迁移**。如果你把 U1-U5 当五个互不相关的算法各自背下来,面对一个新问题时,你只能挨个问"这是 U1 吗?是 U2 吗?"——既慢又容易漏。但如果你掌握了"按入口组织"这个维度,面对新问题你只需问一个问题"不确定性从哪个入口进来?",就能快速定位。一个好的组织维度,把"记住五个孤立的东西"变成"理解一个统一的结构"——前者是负担(要记五份),后者是工具(一个框架生成五个答案)。这正是本综合章的核心价值:不是再讲一遍五条路线(那是 U1-U5 的事),而是给你一个**统一的认知框架**,让五条路线从"五件需要分别记忆的工具"变成"一张可以推理的地图"。整章的所有内容——本质对照、选型、二维图、六座桥、边界——都是在搭建和填充这个统一框架。
数学本质一段总结:五种哲学¶
五条路线代表了"不确定性"进入机器人决策的五种哲学,每种都有自己的第一语言和核心承诺:
U1(分支 / 场景规划) 以离散、非参数的方式**显式枚举**未来的离散分支,用期望或 min-max 在树上求解——它把不确定性当成"有限多个可数的未来",最"算法化"。当未来的可能性确实是离散且可枚举的(他车的有限几种意图),这是最直接的表示。
U2(鲁棒 MPC / Tube MPC) 以**集合论**语言把不确定性装入有界集合 \(\mathbb{W}\),通过 invariant tube 把名义系统与扰动解耦——它把不确定性当成"一个有界但内部任意的集合",追求 worst-case 可行性保证。当你需要硬安全保证、且扰动确实有界时,这是最稳妥的。
U3(机会约束) 以**概率测度**为第一语言,允许约束以小概率违反——它把不确定性当成"有分布的随机量",把"worst-case vs expected"光谱化为风险水平 \(\delta\in(0,1)\)。当扰动有概率结构、且任务能容忍小概率违反时,它比鲁棒更不保守、比期望更安全。
U4(POMDP / Belief-space) 处理**感知端**而非动力学端的不确定性,规划对象从状态空间提升到 belief 空间——它把不确定性当成"对状态的概率信念",并显式权衡行动与信息收集。当问题的本质是"看不清世界"(而非"世界有扰动")时,只有它能正确建模"主动探索以减少不确定性"。
U5(风险敏感 / CVaR) 直接对代价分布的**尾部**建模,用公理化畸变风险测度度量"尾部平均"——它把不确定性当成"代价的整个分布",并聚焦其尾部,在"期望"和"最坏"之间提供可调谱。当罕见但严重的尾部事件足以致命时,它给出比期望(盲于尾部)和机会约束(盲于严重程度)更精细的度量。
把五种哲学并排, 一个共同点浮现出来: 它们都是在回答"现实世界的不确定性, 该用什么数学对象来表达"这个问题, 只是给出了五个不同的答案(分支树 / 集合 / 概率 / belief / 风险测度)。这五个答案没有对错, 只有"对某种不确定性结构是否贴切"——这就引出了下面的核心认识。
本质洞察:五条路线不是五种"算法",而是五种"把不确定性翻译成数学对象"的方式。初学时容易把 U1–U5 当成五个并列的算法去比"谁更强"。但更深的视角是:它们各自选择了一种**把现实世界的不确定性翻译成可优化数学对象**的语言——U1 翻译成分支树(离散枚举)、U2 翻译成有界集合(集合论)、U3 翻译成概率约束(测度论)、U4 翻译成 belief(状态分布)、U5 翻译成代价分布的尾部(畸变风险)。一旦你认识到"选路线 = 选翻译语言",就明白没有"最强"的路线,只有"最匹配你的不确定性结构"的翻译——你的不确定性本质上是离散意图,就用分支树的语言;本质上是有界扰动,就用集合的语言;本质上是看不清状态,就用 belief 的语言。这个"翻译"视角是整个 Part-U 的元认知,它把五章的细节统一成了一个选择问题:你的不确定性,最自然地说哪种语言?
五种哲学的共同骨架:不确定性如何进入"优化"¶
虽然五条路线用五种不同的语言,但它们处理不确定性的方式有一个**共同骨架**——都是在回答"不确定性如何修改原本的确定性优化问题"。原本的确定性优化是:\(\min_u J(x,u)\) 服从 \(g(x,u)\le0\)(最小化代价、满足约束)。不确定性进来后,五条路线分别修改了这个问题的不同部分:
- U1 修改"对未来的假设":把单一未来 \(x\) 换成多个分支 \(\{x^{(i)}\}\),目标变成在分支上的期望或 min-max。
- U2 修改"约束的满足方式":要求约束对扰动集内所有扰动都满足 \(g(x,u,w)\le0,\ \forall w\in\mathbb{W}\)(约束鲁棒化)。
- U3 修改"约束的满足方式"(概率版):要求约束高概率满足 \(\Pr(g(x,u,w)>0)\le\delta\)(约束概率化)。
- U4 修改"决策的对象":决策不再基于状态 \(x\) 而基于 belief \(b\),目标在 belief 空间,且要权衡信息收集。
- U5 修改"目标的度量":把代价的期望 \(\mathbb{E}[J]\) 换成风险度量 \(\mathrm{CVaR}_\alpha[J]\)(目标风险化)。
把这个共同骨架摆出来,五条路线的关系一目了然——它们修改的是同一个优化问题的**不同部件**:U1 改"未来假设"、U2/U3 改"约束(鲁棒 / 概率)"、U4 改"决策对象(状态→belief)"、U5 改"目标度量(期望→风险)"。这也解释了为什么它们能正交组合(§U6.5)——修改不同部件的路线可以叠加(U4 改决策对象 + U5 改目标度量 = belief 上的 CVaR),修改同一部件的路线需二选一(U2 和 U3 都改约束,是鲁棒化还是概率化的二选一)。
本质洞察:五条路线是"不确定性修改确定性优化"的五种方式,组合性由"修改的是否同一部件"决定。这个共同骨架视角比"五种翻译语言"更进一步——它不仅说五条路线用不同语言,还精确指出它们各自修改了优化问题的哪个部件(未来假设 / 约束 / 决策对象 / 目标度量)。像 / 不像:五条路线都从"确定性优化"出发、都让它能处理不确定性;区别是切入的部件不同。这个视角有两个直接的回报:(1) 解释组合性——为什么 U4+U5 能叠加(改不同部件)、U2/U3 要二选一(改同一部件),§U6.5 的正交性判断有了根源;(2) 指导新方法——如果你想发明处理不确定性的新方式,可以系统地问"优化问题还有哪个部件没被'不确定性化'?"。理解"五条路线 = 修改优化问题的五个部件",你就从"记住五个方法"升级到"掌握一个生成五个方法的框架"——这是综合章想给你的最高层次的认知。
一张表看清五条路线¶
前面用文字讲了五种哲学和共同骨架, 现在把它们浓缩成一张可对照、可速查的表。如果说前面的文字帮你"理解"五条路线, 这张表帮你"记住并对照"它们——它是本章最该印在脑子里的一张表, 后面的选型、组合、与 RL 对照都建立在对这张表的熟悉之上。把五条路线的关键维度并排:
| 维度 | U1 分支/场景 | U2 鲁棒/Tube | U3 机会约束 | U4 POMDP | U5 CVaR/风险敏感 |
|---|---|---|---|---|---|
| 不确定性入口 | 执行端(未来分支) | 动力学端(有界扰动) | 动力学端(概率扰动) | 感知端(状态不可见) | 评估端(代价尾部) |
| 第一语言 | 离散枚举(分支树) | 集合论(有界集 \(\mathbb{W}\)) | 概率测度(\(\Pr(\cdot)\le\delta\)) | belief(状态分布) | 畸变风险测度(CVaR) |
| 核心承诺 | 对多种未来都有应对 | worst-case 可行性硬保证 | 高概率满足约束 | 正确权衡行动与探索 | 控制尾部的平均严重程度 |
| 保守程度 | 取决于树上准则 | 最保守(对所有扰动) | 可调(\(\delta\)) | 取决于求解 | 可调(\(\alpha\)) |
| 典型方法 | MPDM / EPSILON / Multi-stage NMPC | Tube MPC / CBF / GP-MPC | CC-MPC / IRA / CC-RRT | DESPOT / POMCP / SARSOP | CVaR-MPC / IQN |
| 与 RL 对应 | MCTS 的控制版 | RL 的对照基线 | CMDP Safe RL | World Model / Neural MCTS | 分布式 RL / CVaR-CMDP |
| C++ 生态 | 中 | 极高 | 极低 | 高 | 极低 |
| 数学难度 | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
光看"核心承诺"会让每条路线显得很美好,但选型还要知道每条的**固有局限**——它擅长什么的另一面,是它对什么失明 / 在什么场景失效:
| 路线 | 擅长 | 固有局限(对什么失明 / 何时失效) |
|---|---|---|
| U1 分支/场景 | 离散多模态未来 | 分支数随未来步数指数爆炸;离散化连续不确定性会失真;分支概率若过时则失准 |
| U2 鲁棒/Tube | 最坏情况硬保证 | 对无界扰动不可行;对所有扰动设防 → 常过度保守;要求扰动集已知 |
| U3 机会约束 | 概率约束、可调保守度 | 盲于"违反多严重"(只看概率);要求知道扰动分布;高维 / 非高斯下求解难 |
| U4 POMDP | 感知不确定、信息价值 | 状态 / belief 空间易爆炸;要求观测 / 转移模型;计算最贵 |
| U5 CVaR/风险敏感 | 尾部严重程度 | 尾部估计需大样本(α 高时更甚);非硬保证(控平均非最坏);C++ 落地空白 |
把"擅长"和"局限"并排看,选型就更清醒——你不只在选"它能做什么",也在接受"它做不到什么"。比如选 U2 你得接受"可能过度保守",选 U3 你得接受"盲于严重程度",选 U4 你得接受"计算贵"。没有免费的午餐,每条路线的强项都伴随对应的代价(选型故障排查手册的多数症状,正是这些固有局限在具体场景里的显现)。
再换一个角度——把五条路线放到几个**共同的相对刻度**上对照(相对高低,非绝对值),能帮你在多个维度上快速权衡:
| 维度 | U1 分支 | U2 鲁棒 | U3 机会约束 | U4 POMDP | U5 CVaR |
|---|---|---|---|---|---|
| 计算成本 | 中(随分支数) | 低-中 | 中 | 高(belief 空间) | 中(随尾部采样) |
| 保守程度 | 可调 | 最高 | 可调(\(\delta\)) | 取决于求解 | 可调(\(\alpha\)) |
| 信息需求 | 分支 + 概率 | 扰动集 \(\mathbb{W}\) | 扰动分布 | 观测 + 转移模型 | 代价分布(尾部) |
| 提供的保证 | 对枚举分支应对 | 硬保证(worst-case) | 概率保证(\(1-\delta\)) | 最优 belief 决策 | 尾部均值保证 |
| 在线 / 离线 | 在线(滚动) | 在线 | 在线 | 在线搜索 / 离线策略 | 在线 |
| 与学习的距离 | 中(MCTS) | 远-中(GP-MPC) | 远(CMDP) | 近(World Model) | 最近(分布式 RL) |
这张相对刻度表补充了前两张表(本质对照、固有局限)——它让你在**单个维度上横向比较**五条路线。比如:算力紧张时避开 U4(计算成本最高);要硬保证时只有 U2(保证最强);信息最少时(连分布都不知道)U2 的扰动集比 U3 的分布更易获得;要和学习结合时 U4/U5 距离最近。选型时,先用决策树(§U6.2)按入口定位,再用这张表在关心的维度(算力 / 保证强度 / 信息 / 学习)上做二次筛选。
五对最易混淆的辨析¶
五条路线里,有几对特别容易混淆——它们表面相似,本质不同。把这几对辨析清楚,是真正分清五条路线的关键:
- U2 鲁棒 vs U3 机会约束(最常混):都处理动力学扰动。U2 对**所有**扰动设防(worst-case,硬保证,无界不可行);U3 对**高概率**设防(允许 \(\delta\) 违反,无界仍可行)。一句话:U2 要"绝对安全",U3 要"基本安全但不那么保守"。
- U3 机会约束 vs U5 CVaR:都用概率 / 风险。U3 控"违反的**概率**"(\(\Pr\le\delta\),盲于严重程度);U5 控"尾部的**平均严重程度**"(CVaR)。一句话:U3 问"会不会出事",U5 问"出事有多惨"。
- U2 鲁棒 vs U5 CVaR:都关心"坏情况"。U2 看**绝对最坏**(worst-case,\(\alpha\to1\) 的极限);U5 看**最坏的平均**(尾部均值,可调 \(\alpha\))。一句话:U2 是"最坏那一个",U5 是"最坏那一批的平均"。
- U1 分支 vs U4 POMDP:都涉及"多种可能"。U1 的多种可能是**已知的离散分支**(枚举 + 固定概率);U4 的多种可能是**对隐状态的连续信念**(belief,需推断、可主动减少)。一句话:U1 枚举已知的几种未来,U4 推断看不清的当前状态。
- U4 看不清状态 vs U2/U3 状态有扰动(最根本):U4 是**感知端**(状态本身未知,看清就解决);U2/U3 是**动力学端**(状态已知,但演化有扰动)。一句话:U4 是"我不知道我在哪",U2/U3 是"我知道我在哪但下一步会被推偏"。
这五对辨析覆盖了五条路线之间最常见的混淆。一个快速自测:能不能用"一句话"把每一对的区别说清?如果能,说明你真正分清了五条路线;如果某一对说不清,回到对应章节辨析。这五对辨析也是选型错误的高发区(§U6.2 选型错误模式)——混淆哪一对,就会在对应的选型上出错。
快速判断入口的三个问题¶
选型的第一步、也是最关键的一步,是判断不确定性从哪个入口进入。给三个快速判断的问题,按顺序问,就能定位主入口:
- "如果我能看清当前状态,问题就解决了吗?" 如果是 → 感知端(U4)。这个问题区分"看不清"(感知端)和"看得清但有别的不确定"。烟雾中导航、遮挡、传感器受限,答案是"是"——核心是看不清,用 U4。
- "不确定性是几种离散的可能,还是连续的扰动 / 噪声?" 离散可枚举(他车几种意图)→ 执行端(U1,分支);连续扰动 → 动力学端(U2/U3)。这个问题区分"多模态离散未来"(U1)和"连续不确定"(U2/U3)。
- "我最担心的是'会不会违反约束',还是'违反了有多严重'?" 担心违反概率、后果都差不多 → 用 U3(机会约束);担心灾难性的严重后果 → 评估端(U5,CVaR)。这个问题区分"控概率"(U3)和"控严重程度"(U5)。
这三个问题覆盖了五条路线的入口判断:问题 1 分出感知端(U4),问题 2 分出执行端(U1)vs 动力学端,问题 3 在动力学 / 评估端内分出 U3(控概率)vs U5(控严重程度);而 U2 vs U3 的进一步区分(硬保证 vs 高概率)靠"扰动有界吗 + 要硬保证吗"(下面的对比块)。把这三个问题(加 U2/U3 的细分)串起来,就是 §U6.2 的选型决策树。实战中,面对一个问题,先快速问这三个问题定位主入口,再用决策树细化、用相对刻度表二次筛选——选型就有了清晰的步骤,而非凭感觉。
注意:很多真实问题对这几个问题的答案是"都有"——既看不清、又有连续扰动、又怕严重后果。那就是多入口问题,需要组合(§U6.5)。这三个问题帮你识别出**所有**相关入口(而非只找一个),为组合设计的第一步(识别入口)服务。
对比性思维:U2 和 U3 守同一个入口(动力学端),却给出截然不同的承诺——一个要"对所有扰动都安全"、一个要"高概率安全"。U2 鲁棒和 U3 机会约束都处理动力学端的扰动,区别在于对扰动的"态度":U2 把扰动当成"有界但任意",要求对集合内**每一个**扰动都安全(worst-case 硬保证);U3 把扰动当成"有分布的随机量",只要求**高概率**安全(允许 \(\delta\) 的违反概率)。像 / 不像:都处理动力学扰动、都收紧名义约束;但 U2 的收紧量由扰动集的"最坏边界"决定(无界扰动下不可行),U3 的收紧量由分位数 / 风险水平决定(高斯扰动下仍可行)。这个区别决定了选择:扰动真有界且要硬保证 → U2;扰动有分布且能容忍小概率违反 → U3。\(\delta\to0\) 时 U3 趋近 U2(机会约束退化为鲁棒)——它们是同一光谱的两端,U3 用 \(\delta\) 把这个光谱连续化了。这也是为什么推荐学习顺序里 U2→U3 是自然过渡:从"硬约束 / 最坏情况"松弛到"概率约束 / 风险水平"。
一个问题,五种翻译:看同一场景如何被五条路线表达¶
抽象地说"选路线 = 选翻译语言"还不够直观。拿**同一个机器人场景**,看五条路线分别会把它翻译成什么,以及哪种翻译最自然。
场景:一辆送货机器人要穿过一个路口,路口有一辆正在接近的车,还有定位漂移和偶发的强风。这个场景里其实**同时**有多种不确定性,五条路线各会抓住其中一种来翻译:
- U1 的翻译:把"对方车会让 / 不让"枚举成两个分支,构造一棵分支树,对每个分支规划应对,按概率加权或取 min-max。它抓住的是"未来的离散可能"。
- U2 的翻译:把"强风 + 定位漂移"的总效应装进一个有界扰动集 \(\mathbb{W}\),用 tube 保证真实轨迹在名义轨迹周围的管道内、管道避开障碍。它抓住的是"有界但任意的扰动"。
- U3 的翻译:把定位漂移建模成高斯噪声,把"撞到障碍"写成概率约束 \(\Pr(\text{碰撞})\le\delta\),在概率约束下规划。它抓住的是"有分布的随机扰动 + 可容忍的小概率违反"。
- U4 的翻译:如果机器人传感器受限、看不清对方车的确切位置 / 速度,就把"对方车状态"作为 belief,在 belief 空间规划,并主动调整视角去看清。它抓住的是"感知端的状态不可见"。
- U5 的翻译:如果撞车的后果是灾难性的(损坏货物 + 伤人),就对碰撞代价的尾部建模,用 CVaR 约束控制"最坏 5% 的平均碰撞代价"。它抓住的是"代价尾部的严重程度"。
哪种翻译"最自然"?取决于这个场景里**哪个不确定性是主导的、最关键的**。如果对方车的意图是最大不确定(路口博弈),U1(甚至博弈,见结尾)最贴切;如果风扰是主导且要硬安全,U2;如果定位噪声是主导且能容忍小概率,U3;如果"看不清"是瓶颈,U4;如果"撞了多严重"是核心顾虑,U5。而真实复杂场景往往需要**组合**(如 U4 看清对方 + U5 控制撞车尾部)。这个走查把"翻译视角"落到了一个具体场景上——同一现实,五种数学表达,匹配度取决于主导不确定性。
多视角理解:五条路线像五种"地图投影"——同一片不确定性地形,每种投影保真某些特征、扭曲另一些。地理学家把球面地球投影到平面时,没有完美的投影——墨卡托投影保角度但扭曲面积,等积投影保面积但扭曲形状,每种投影为某个用途优化、牺牲其他。五条路线对不确定性也是如此:每条把"现实的不确定性"投影到一种数学结构上,保真它擅长的特征、扭曲其他。像 / 不像:U1 投影到分支树——保真"离散多模态"(清晰枚举几种未来),但扭曲"连续扰动"(强行离散化);U2 投影到有界集——保真"最坏情况边界"(硬保证),但扭曲"概率结构"(忽略哪些扰动更可能);U3 投影到概率约束——保真"分布与风险水平",但扭曲"分布的尾部形状"(只看分位点);U4 投影到 belief——保真"感知不确定与信息价值",但代价是状态空间爆炸;U5 投影到代价尾部——保真"严重程度",但扭曲"违反频率"。没有"最准的投影",只有"为你的用途最合适的投影"——要看离散未来用 U1 的投影、要硬安全用 U2 的、要管尾部用 U5 的。理解这个"投影"视角,你选路线时就不会问"哪条最准"(没有最准),而是问"我的场景里哪些不确定性特征最关键、哪种投影最保真它们"——这正是选型的认知核心。
⚠️ 本节常见陷阱¶
💡 概念误区:把"看不清状态"(U4)误当成"状态有扰动"(U2/U3) - 现象 / 后果:遇到感知不确定的问题,套用鲁棒或机会约束——把"不知道自己在哪"当成"知道在哪但有扰动",结果机器人不会主动探索(信息收集),还被迫对所有可能状态过度保守。 - 根本原因:U2/U3 处理的是**动力学端**不确定(状态已知、演化有扰动),U4 处理的是**感知端**不确定(状态本身未知)。两者数学结构根本不同——前者在状态空间优化,后者必须提升到 belief 空间,因为只有 belief 空间才能表示"主动减少不确定性(探索)"这件事。 - 正确做法:先判断不确定性在哪一端。如果"如果我能看清状态,问题就解决了",那是感知端不确定 → U4;如果"我看得清状态,但下一步会被扰动推偏",那是动力学端 → U2/U3。这个判断是选型的第一步(选型指南)。
💡 概念误区:以为 CVaR(U5)和机会约束(U3)是一回事 - 现象 / 后果:把"控制尾部风险"和"控制违反概率"混为一谈,以为用了机会约束就等于管住了尾部。 - 根本原因:机会约束(U3)控制的是"违反的**概率**"(\(\Pr(g>0)\le\delta\)),对"违反时有多严重"失明;CVaR(U5)控制的是"尾部的**平均严重程度**"。两个方案可以有相同的违反概率(U3 认为一样好),但一个轻微违反、一个灾难性违反(U5 能区分)。 - 正确做法:违反后果都差不多严重 → U3(机会约束,更简单);违反后果差异大、有灾难性尾部 → U5(CVaR,看严重程度)。U5 是 U3 的"公理化升级"(CVaR 约束比机会约束更强),详见 U5 进阶专题。
🧠 思维陷阱:以为五条路线必须"选一条",不能组合 - 现象 / 后果:把五条路线当成互斥的单选,面对一个同时有"感知不确定 + 尾部风险"的问题时,强行只选一条,顾此失彼。 - 根本原因:五条路线守的是不同入口,而真实问题的不确定性可能**同时从多个入口进入**——一个在烟雾中导航的机器人,既"看不清"(感知端 U4)、又怕"撞了很严重"(评估端 U5)。这两个入口正交,可以叠加。 - 正确做法:识别问题的所有不确定性入口,组合对应路线。U4 + U5 = 风险敏感的信念空间规划(在 belief 上用 CVaR 目标);U2 + U5 = CVaR-CBF(U5.5);U3 + 分布不确定 = 分布鲁棒机会约束。五条路线是可正交组合的维度,不是单选题。
练习¶
- [B 型·五路线本质复述] 不看本章,凭记忆为 U1–U5 各写一句话,说清:(a) 它处理哪个入口的不确定性;(b) 它的第一语言(把不确定性翻译成什么数学对象);(c) 它的核心承诺。写完后对照本节的表,检查哪些记忆模糊,回到对应章节补齐。
- [思考题·入口判断] 对以下三个机器人场景,判断不确定性主要从哪个入口进入、该选哪条路线(可多选并说明组合理由):(a) 自动驾驶车在路口,前车可能直行也可能左转;(b) 四足机器人在结冰路面行走,打滑力矩有界但方向未知;(c) 水下机器人在浑浊水中找目标,声呐读数噪声大、目标位置看不清。
- [思考题·翻译视角] 本节提出"选路线 = 选把不确定性翻译成数学对象的语言"。请为一个你熟悉的机器人任务,分析它的不确定性"最自然地说哪种语言",并论证为什么另外几种语言会是"别扭的翻译"(即用错路线会强行把问题塞进不匹配的数学结构)。
- [B 型·共同骨架] 本节给了五条路线的"共同骨架"(都在修改确定性优化的某个部件)。请把一个具体的确定性优化问题(如最小化能耗的轨迹优化)写出来,然后分别用五条路线"改造"它一次——写出 U1/U2/U3/U4/U5 各会把这个问题改成什么形式(改未来假设 / 约束 / 决策对象 / 目标度量)。这个练习能让你深刻理解五条路线的统一性与差异。
§U6.2 工程落地视角:C++ 生态成熟度与选型指南 ⭐⭐⭐¶
动机:哪条路线能直接上手,哪条要自己造轮子¶
理解了五条路线的本质(§U6.1)只解决了"该用哪条",还有一个同等重要的工程问题:这条路线有没有成熟的代码能用。一条理论上最匹配你问题的路线,如果 C++ 生态是空白(要从零实现),和一条理论上次优但有现成高质量库的路线,在工程决策里是完全不同的权衡。
这一节给出五条路线的 C++ 生态成熟度对照——这对两类读者都关键:想**快速落地**的工程师需要知道哪条路线能直接拿库用(少踩坑、快出结果);想做**研究 / 开源贡献**的读者需要知道哪条路线是空白(同样的努力,填空白比造重复的轮子价值高得多)。
这一节也提醒一个工程现实, 是纯理论学习容易忽略的: 理论上最优的方法, 不一定是工程上最该选的方法。学术论文里, 评判一个方法看它在理论上是否更优、实验指标是否更好; 但工程落地多了一个维度——有没有成熟、可靠、有文档的实现可用。一个理论稍逊但有顶级开源库支撑的方法, 常常比一个理论最优但要你从零实现数月的方法更适合工程。这不是说理论不重要, 而是说工程决策要同时权衡"理论匹配度"和"工程成熟度"两个维度。本节就是为你补上"工程成熟度"这个维度, 让你的选型不只看理论, 也看落地现实。
C++ 生态成熟度对比¶
把五条路线按"C++ 生态成熟度"和"原创空间"对照(成熟度高则原创空间小,反之亦然——这是一种此消彼长):
| 路线 | C++ 成熟度 | 代表 C++ 库 | 教学推荐度 | 原创空间 |
|---|---|---|---|---|
| U1 分支/场景 | 中 | EPSILON(C++/ROS) | 中 | 中 |
| U2 鲁棒 MPC/CBF | 高 | acados, OCS2, Crocoddyl, TinyMPC | 极高 | 低 |
| U3 机会约束 | 极低 | 仅零星个人项目 | 极高 | 极高 |
| U4 POMDP | 高 | DESPOT, SARSOP, OPPT, TAPIR | 极高 | 低 |
| U5 风险敏感/CVaR | 极低 | 几乎无原生 C++ | 极高 | 极高 |
解读这张表的两条对角线:
成熟的一极(U2、U4):鲁棒 MPC 和 POMDP 是 C++ 生态最完备的两条。U2 有 acados(实时 MPC,前几章反复用到)、OCS2(腿足 MPC)、Crocoddyl、TinyMPC 等;U4 有 DESPOT(NUS AdaComp 的在线 POMDP 求解器)、SARSOP(离线)、OPPT、TAPIR。这两条适合**直接上手、快速出工程结果**——库成熟意味着你能站在巨人肩膀上,把精力放在你的具体问题而非重新实现基础设施。代价是原创空间小(基础已经被做得很好了)。
空白的一极(U3、U5):机会约束和风险敏感的 C++ 生态几乎空白——它们的理论(CC-MPC 的 IRA、CVaR 的 Rockafellar–Uryasev LP)和 Python 原型(CVXPY、OmniSafe)都成熟,但缺少能上实时机器人的高质量 C++ 实现。这两条恰恰是**原创贡献的沃土**:把 IRA 风险分配嵌进 acados、把 CVaR 的辅助变量嵌进实时 QP、把 IQN 的分位函数导出到 C++ 做在线风险敏感贪心——这些都是真实的、有明确用户的开源空白(U3、U5 各自的"从 Python 到 C++"讨论给了具体路径)。
本质洞察:C++ 生态成熟度和原创空间此消彼长,这给了学习者两种截然不同的切入策略。看这张表会发现一个清晰的对角线:U2/U4 成熟度高、原创空间低;U3/U5 成熟度低、原创空间高。这不是巧合——一个方向的工程生态越成熟,意味着越多人已经把基础做完了,留给后来者的"未被填的空白"就越少;反之,生态空白的方向虽然上手难(要自己造基础设施),但也意味着任何高质量的贡献都填补了真实的缺口。这给学习者两种策略:要**快速产出工程价值**(如交付一个项目),选成熟的 U2/U4,站在巨人肩膀上;要**做有影响力的研究 / 开源贡献**,选空白的 U3/U5,填真实的缺口。理解这个权衡,你就能根据自己的目标(产出 vs 创新)选择切入点——而不是盲目追逐"最热"或"最难"的方向。
适用场景选型指南¶
把"不确定性的结构"映射到"首选路线",这是做工程决策时最直接的查询表:
| 不确定性结构 | 首选路线 | 代表方法 |
|---|---|---|
| 有界集合扰动 + 硬安全要求 | U2 鲁棒 | Rigid Tube MPC |
| 高斯扰动 + 可接受小概率违反 | U3 机会约束 | 解析 CC-MPC + IRA |
| 离散意图不确定性(他车 / 他人) | U1 分支 | MPDM / EPSILON |
| 感知不确定性(看不清世界) | U4 POMDP | DESPOT / POMCP |
| 关心尾部风险(灾难性后果) | U5 CVaR | CVaR-MPC / IQN |
| 模型不确定性 + 在线学习 | U2 GP-MPC | Hewing–Zeilinger GP-MPC |
| 分布不确定性(连分布都不知道) | U3 DR-CC 或 U5 DR-CVaR | Wasserstein DR-CC |
比查表更直观的是一棵**选型决策树**——按一系列是 / 否问题逐步缩小到首选路线:
开始:我的机器人面临什么不确定性?
│
├─ Q1: 不确定性来自"会观察我、因我而变的对手"吗?
│ 是 → 超出 U1–U5!需要博弈规划(见本章结尾)
│ 否 → 继续
│
├─ Q2: 问题的瓶颈是"看不清状态"(而非"状态有扰动")吗?
│ 是 → U4 POMDP(提升到 belief 空间、能主动探索)
│ 否 → 继续
│
├─ Q3: 未来有几种"离散的、可枚举的"可能(如他车几种意图)吗?
│ 是 → U1 分支/场景(构造分支树)
│ 否(是连续扰动)→ 继续
│
├─ Q4: 扰动有界且需要"对所有扰动都安全"的硬保证吗?
│ 是 → U2 鲁棒/Tube(最坏情况硬保证)
│ 否(有概率分布、可容忍小概率违反)→ 继续
│
├─ Q5: 违反的"严重程度"差异大、有灾难性尾部吗?
│ 是 → U5 CVaR(控尾部平均严重程度)
│ 否(违反后果都差不多)→ U3 机会约束(控违反概率,更简单)
│
└─ 附加: 模型本身不准 / 连分布都不知道?
模型不准 + 能在线学 → U2 GP-MPC(高斯过程学残差)
连分布都不知道(只有少量样本)→ U3 DR-CC 或 U5 DR-CVaR(分布鲁棒)
多个入口同时存在 → 组合(U4+U5、U2+U5 等正交叠加)
这棵树把选型变成一串清晰的判断:先排除"策略性对手"(Q1,那是博弈的事);再分"感知端 vs 动力学端"(Q2);动力学端再分"离散 vs 连续"(Q3)、"硬保证 vs 概率"(Q4)、"看严重程度 vs 看概率"(Q5)。走到叶子就是首选路线。注意 Q1 放在最前——它是整个 Part-U 的边界,先确认你没站在边界外(否则后面的树都不适用)。
用法:从左列找到最匹配你问题的不确定性结构,右列就是起点。注意最后两行——"模型不确定 + 在线学习"用 GP-MPC(U2 的数据驱动变体,用高斯过程学模型残差);"连分布都不知道"(只有少量样本、分布本身估不准)用分布鲁棒变体(DR-CC / DR-CVaR,对一族分布取最坏)。这两行是 U2/U3/U5 的"进阶入口",对应真实工程里"模型不准"和"sim-to-real 分布偏移"的常见困难。
选型的五种常见错误模式¶
选型出错往往不是因为不懂五条路线,而是因为掉进了一些典型的判断陷阱。把它们列出来,对照检查能避开大多数选型错误:
| 错误模式 | 表现 | 纠正 |
|---|---|---|
| 入口误判 | 把感知不确定当动力学扰动(U4 当 U2/U3) | 问"看清状态就解决吗"——是则感知端(U4) |
| 严重程度盲视 | 用机会约束(U3)处理有灾难尾部的问题 | 问"违反后果差异大吗"——大则用 CVaR(U5) |
| 保守度错配 | 用最坏情况鲁棒(U2)处理可容忍小概率违反的问题 → 过度保守 | 能容忍 δ 违反则用 U3(更不保守) |
| 生态忽视 | 选了 U3/U5 但低估 C++ 从零实现的工作量 | 先查生态(§U6.2),权衡理论匹配 vs 落地速度 |
| 边界外硬用 | 对策略性对手用 U1 固定概率 | 判断对手是否会针对你——是则出界,用博弈 |
用法:做完选型后,拿这五种错误模式逐条自查——"我有没有入口误判?有没有忽视严重程度?保守度配对了吗?生态够用吗?是不是在边界外?"。这个自查只要几分钟,却能拦住大多数选型错误。注意这五种错误模式和"选型故障排查手册"(本章后面)是一体两面——前者是"选之前预防",后者是"选错后诊断"。
选型不是一锤定音:迭代与组合¶
最后一个重要认识:选型往往**不是一次性的**。真实流程更像迭代——先按决策树选一条路线做原型,跑起来观察失效模式(用累积项目那样的测试),发现"哦原来还有个感知不确定的维度没考虑",再叠加 U4,或者发现"鲁棒太保守了",换成 U3……选型是一个"选 → 试 → 调整"的迭代,而非"一次选对"。同样,最终方案常是**组合**而非单条路线(§U6.5)——真实复杂问题很少只有一个干净的入口。所以别把选型当成"必须一次选中唯一正确答案"的压力,而当成"用决策树找一个好起点,再在实践中迭代 / 组合"的过程。这也是为什么本章既给选型决策树(找起点)、又给组合方法(§U6.5)和故障排查(迭代时诊断)——它们共同支撑这个迭代选型的过程。
推荐学习顺序¶
如果你要系统学习全部五条路线,顺序很重要——好的顺序让每一步都为下一步铺垫,坏的顺序会让你在缺乏基础时硬啃难点。推荐顺序:
U2(鲁棒 MPC/CBF)—— 集合论直观,C++ 生态成熟,建立工程直觉
↓
U3(机会约束)—— 从硬约束过渡到概率约束,引入 Φ⁻¹、IRA
↓
U5(CVaR / 风险敏感)—— 在 U3 基础上以 CVaR LP 自然过渡,学公理化理论
↓
U1(分支/场景规划)—— 引入"多模态离散未来"概念,为 POMDP 做准备
↓
U4(POMDP)—— 理论最厚、C++ 代码最成熟,用 DESPOT 作压轴主项目
这个顺序的逻辑:从工程直观走向理论深度,每步衔接自然。先用 U2(集合论最直观、C++ 生态最成熟)建立"处理不确定性"的工程手感;再到 U3,把 U2 的"硬约束 / 最坏情况"松弛成"概率约束 / 风险水平"(自然过渡);再到 U5,在 U3 的概率语言基础上,用 CVaR 的 LP 形式(和 CC 的 LP 形式同源)过渡到风险敏感的公理化理论;再到 U1,引入"多模态离散未来"的概念(为 POMDP 的 belief tree 做认知准备);最后到 U4,理论最厚但 C++ 生态最成熟,用 DESPOT 作压轴主项目。
如果只能选两条深讲:U4(DESPOT 为骨)+ U5(CVaR-MPC 为填空)——前者 C++ 生态完备、算法现代,能做出扎实的工程项目;后者几乎空白,学生可做原创贡献。一"实"一"创",覆盖了"产出"和"创新"两种价值。
如果是三条深讲:再加 U3(CC-RRT + Covariance Steering)——补上机会约束与协方差导引的工程桥梁,让"概率约束"这条线也完整。
需要强调: 上面的"推荐顺序"和"只选几条深讲"都是建议而非教条。它们基于"认知阶梯(从直观到抽象)"和"价值(实用 + 原创)"两个考量, 适合多数人; 但你的具体情况(背景、目标、时间)可能让别的顺序更优——这正是 §U6.4 三条学习路线要解决的。这里的顺序主要服务"系统学全部五条"的场景; 若你只想解决一个具体问题, 按选型决策树直接定位到该用的路线、深入学那一条即可, 不必按这个顺序走全程。顺序是为学习服务的, 不是要束缚你的——理解了为什么是这个顺序(认知阶梯 + 价值), 你就能根据自己的情况灵活调整。
建还是买:每条路线的工程决策¶
"C++ 生态成熟度"最终落到一个具体的工程决策上——这条路线的能力,是直接用现成库(买),还是自己实现(建)?这个决策因路线而异,下表给出建议:
| 路线 | 买(用现成库) | 建(自己实现) | 建议 |
|---|---|---|---|
| U1 分支 | EPSILON(自驾场景)/ do-mpc(多阶段) | 简单分支逻辑可自建 | 自驾用 EPSILON;通用场景自建分支逻辑(不复杂) |
| U2 鲁棒 | acados / OCS2 / Crocoddyl(成熟) | 几乎不必自建 | 买——生态太成熟,自建是浪费 |
| U3 机会约束 | 无专门库,只有 CVXPY/CasADi 基础 | IRA / 收紧逻辑需自建 | 半建半买——用 CVXPY 解凸问题、自建 CC 收紧逻辑 |
| U4 POMDP | DESPOT / SARSOP(成熟) | 几乎不必自建 | 买——求解器成熟,自建极难 |
| U5 风险敏感 | OmniSafe(RL 侧)/ CVXPY(LP) | 实时 CVaR-MPC 需自建 | 半建半买——RL 侧用 OmniSafe、实时 MPC 自建 |
这张表把抽象的成熟度落成了行动:U2/U4 是**纯买**(生态成熟,自建无意义且极难);U1 是**看场景**(自驾买 EPSILON、通用自建);U3/U5 是**半建半买**(基础数学用现成凸优化 / RL 库,但"机会约束收紧""实时 CVaR-MPC"这些专门部分得自建——这正是它们的 C++ 空白)。一个清醒的工程师会按这张表分配精力:把时间花在必须"建"的部分(U3/U5 的专门逻辑),而不是重新实现已经能"买"的部分(U2/U4 的成熟求解器)。
本质洞察:"建 vs 买"的分界线,恰好是"通用基础设施 vs 专门逻辑"的分界线——基础设施买、专门逻辑建。仔细看上表会发现一条清晰的分界:凡是**通用基础设施**(QP 求解器、NLP 求解器、凸优化建模、POMDP 树搜索引擎),都该买(acados、CVXPY、DESPOT)——它们被大量人打磨过,自建既浪费又难超越;凡是**你的问题特有的专门逻辑**(机会约束的收紧方式、CVaR 嵌进 MPC 的具体形式、你的分支结构),往往需要建——因为它们太具体,没有现成的通用实现。U2/U4 之所以是"纯买",是因为它们的核心恰好是通用基础设施(MPC 求解、POMDP 搜索);U3/U5 之所以"半建半买",是因为它们的核心是"在通用凸优化之上的专门处理"(CC 收紧、CVaR 嵌入)——基础设施部分能买(CVXPY),专门部分得建。理解这条分界,你做任何工程的"建 vs 买"决策都有了准绳:先分清什么是通用基础设施(买)、什么是你的专门逻辑(建),把宝贵的工程时间集中在后者。这也是 U3/U5 "原创空间大"的另一种表述——它们的"专门逻辑"还没有人做成可复用的库,谁做了谁就填了空白。
五条路线的典型应用领域¶
最后从"应用领域"的角度看五条路线——哪些机器人 / 场景最常用哪条。这能帮你从"我做的是什么领域"快速联想到"该关注哪条路线":
| 路线 | 典型应用领域 | 为什么 |
|---|---|---|
| U1 分支 | 自动驾驶(意图预测)、多机器人交互 | 他车 / 他人有离散的几种意图,天然适合分支 |
| U2 鲁棒 | 腿足机器人、无人机、工业机械臂 | 有界扰动(地形 / 风 / 负载)+ 需硬安全,且模型较准 |
| U3 机会约束 | 航天、无人机航迹、移动机器人导航 | 高斯噪声(定位 / 风)+ 可容忍小概率违反 |
| U4 POMDP | 服务机器人、自动驾驶(遮挡)、水下 / 太空探索 | 感知受限、状态看不清、需主动信息收集 |
| U5 风险敏感 | 安全攸关的所有领域(医疗、载人、高价值操作) | 罕见但灾难性的后果(伤人 / 损坏高价值物) |
注意很多领域**同时**出现在多条路线里(自动驾驶在 U1 和 U4、无人机在 U2 和 U3)——因为真实领域的不确定性往往是多入口的(§U6.5)。这张表给的是"最典型"的关联,不是排他的。用法:从你的领域出发,看它最常关联哪条 / 哪几条路线,作为深入学习的起点;但记住真实问题可能需要组合多条。
多视角理解:同一条路线,可以从"入口""数学语言""应用领域""C++生态""RL对应"五个角度认识,每个角度服务不同需求。本章对五条路线给了多张表——入口对照、本质语言、固有局限、相对刻度、应用领域、C++生态、RL对应。这不是重复,而是从不同角度照亮同一组对象:(1) 入口角度(§U6.1)服务"理解关系 / 选型"——按不确定性来源组织;(2) 数学语言角度(§U6.1)服务"理解本质"——按翻译成什么数学对象;(3) 应用领域角度(本节)服务"从我的领域找路线"——按谁常用它;(4) C++生态角度(§U6.2)服务"工程落地决策"——按能否快速用;(5) RL对应角度(§U6.3)服务"跨领域迁移"——按与 RL 的桥。像 / 不像:五个角度描述的是同一组五条路线,但每个角度为不同的使用场景优化——选型看入口、理解看语言、找起点看领域、落地看生态、迁移看 RL。一个真正掌握的人,会根据手头任务在这五个角度间自由切换:要选型就调出入口表,要落地就调出生态表,要从自己领域入手就调出应用表。理解"同一对象的多角度认识各有所长",比记住任何单一角度都更有力——这也是为什么本章不厌其烦地从多个角度对照五条路线:给你一套可按需调用的多棱镜,而非单一视角。
工程落地的整体心法¶
把本节关于工程落地的几点(生态成熟度、建 vs 买、应用领域、选型迭代)整合成一个心法,帮你在真实工程里少走弯路:
- 先验证再投入:用 Python(CVXPY / do-mpc / pomdp_py)快速原型验证你的选型和方法是否对路,再决定是否投入 C++ 实现。原型阶段几天就能验证的事,不要一开始就花数月做 C++。这对 U3/U5(C++ 空白、自建成本高)尤其重要——先用 Python 确认 CVaR / CC 方法在你的问题上有效,再考虑 C++。
- 站在巨人肩上:通用基础设施(求解器 / 树搜索引擎)一律用成熟库(acados / DESPOT / CVXPY),把你的工程时间集中在你的"专门逻辑"上。重新实现一个 QP 求解器或 POMDP 引擎几乎总是错误的——它们被打磨多年,你难超越且浪费时间。
- 从保守起步:部署时先用保守设置(§工具速查的调参原则),确认安全 / 正确,再逐步放松换性能。安全攸关系统宁可先慢,不要先激进。
- 选型是迭代的:别指望一次选对,按"选起点 → 试 → 调整 / 组合"迭代(§U6.2 迭代选型)。真实方案常是组合而非单条路线。
- 落地优先用成熟方向:时间紧 / 要快速产出,优先用 C++ 生态成熟的 U2/U4;要做原创 / 有充裕时间,才投入 U3/U5 的空白。按你的目标(产出 vs 创新)选方向。
这个心法的核心是**务实**——在"理论最优"和"工程现实"之间,工程落地要兼顾两者:选理论对路的方法(用选型框架),但落地时尊重工程现实(生态、时间、风险)。一个只懂理论不懂工程现实的人,会选了理论最优却落不了地;一个只懂工程不懂理论的人,会用顺手的工具硬套不合适的问题。两者兼顾,才能既选对方法、又落得了地。这也是本章既讲选型(理论对路)、又讲生态 / 建vs买 / 迭代(工程现实)的原因——它们共同支撑"既对路又落地"的工程决策。
对比性思维:学习顺序"U2→U3→U5"是沿着"不确定性语言"的难度递增,而非沿着章节编号。注意推荐顺序不是 U1→U2→U3→U4→U5 的编号顺序,而是 U2→U3→U5→U1→U4。为什么?因为编号是按"不确定性入口"组织的(执行 / 动力学 / 感知 / 评估),而学习难度是按"数学语言的抽象度 + 工程生态的成熟度"排的。像 / 不像:两种顺序都覆盖全部五章;但编号顺序是"逻辑分类顺序"(便于理解五条路线的关系),学习顺序是"认知阶梯顺序"(便于循序渐进地掌握)。U2 集合论最直观、生态最成熟,适合入门;U3 在 U2 基础上松弛到概率,自然过渡;U5 在 U3 的概率语言上加公理化,水到渠成;U1 引入离散多模态,为 U4 的 belief tree 铺垫;U4 理论最厚放最后。这个区别提醒你:组织知识的维度(分类)和学习知识的顺序(阶梯)可以不同——理解关系用分类,循序掌握用阶梯。
多视角理解:一条路线的"成熟度"可以从库的数量、文档质量、社区活跃度三个角度看,三者未必一致。判断一条路线的 C++ 生态成熟度,不是单一指标。可以看三个角度:(1) 库的数量与覆盖——有几个能用的库、覆盖了多少子问题(U2 有 acados/OCS2/Crocoddyl/TinyMPC,覆盖线性 / 非线性 / 腿足 / 嵌入式;U3 几乎没有专门库);(2) 文档与示例质量——库好不好上手、有没有教程和例子(acados 文档完善、有大量示例;某些研究代码只有论文配套的最小复现);(3) 社区活跃度——还在不在维护、issue 响应快不快、有没有持续更新(成熟项目持续迭代,弃坑项目停在几年前)。像 / 不像:三个角度都衡量"生态好不好",但可能给出不一致的结论——一个库数量多但文档差的方向(上手难),和一个只有一个库但文档极好的方向(上手易),在"库数量"上前者赢、在"可用性"上后者赢。这给选型一个更细的视角:别只数"有几个库",还要看"文档能不能让你快速上手""社区是否还活着"。本章的成熟度评级(U2/U4 高、U3/U5 低)综合了三者,但你具体选某个库时,要亲自核对这三个角度(附录 D 的 ★ 评级已综合考虑,但 GitHub 上的最新状态仍需你确认)。这也是为什么 §U6.2 练习 1 让你亲手读一个项目的 README 和示例——纸面的"成熟度高"和你实际能否快速用起来,要自己验证。
⚠️ 本节常见陷阱¶
💡 编程陷阱:因为某条路线"理论最匹配"就硬上,忽略 C++ 生态是空白 - 现象 / 后果:判断出问题该用 U3 机会约束或 U5 CVaR(理论最匹配),就直接在 C++ 里从零实现,低估了工作量——没有成熟库意味着你要自己实现 IRA 迭代 / CVaR 辅助变量 / 实时 QP 集成,踩遍所有坑。 - 根本原因:U3/U5 的 C++ 生态几乎空白,"理论匹配"不等于"工程可快速落地"。从零实现一个生产级的 CC-MPC 或 CVaR-MPC 是数月的工作,远超调用现成库。 - 正确做法:工程决策要同时权衡"理论匹配度"和"生态成熟度"。时间紧、要快速出结果 → 优先有成熟库的路线(即使理论上次优),或在 Python 里用 CVXPY 原型验证再决定是否投入 C++。时间充裕、要做贡献 → 才值得啃 U3/U5 的 C++ 空白(且这本身就是有价值的开源贡献)。
💡 概念误区:把"教学推荐度"等同于"工程实用度" - 现象 / 后果:看到 U3/U5 教学推荐度"极高",以为它们在工程上也最该用,忽略了它们生态空白的现实。 - 根本原因:教学推荐度高,部分原因恰恰是它们"理论优美 + 有原创空间"(适合学习和研究),但这与"能否快速工程落地"是两个维度。U3/U5 教学价值高但工程生态空白;U2/U4 既教学价值高又工程成熟。 - 正确做法:分清"学习价值"和"落地速度"。做学习 / 研究,U3/U5 的高教学推荐度是好事(值得深入);做工程交付,要额外看生态成熟度(U2/U4 更稳妥)。
🧠 思维陷阱:以为"原创空间大"就一定值得投入 - 现象 / 后果:看到 U3/U5 原创空间"极高"就盲目投入,没考虑自己是否有足够的理论功底和时间去填这个空白。 - 根本原因:原创空间大意味着"空白真实存在",但填空白需要扎实的理论基础(CVaR 的凸优化、CC 的概率几何)+ 工程能力(实时 C++、QP 求解器集成)+ 时间。空白大不等于容易填——恰恰相反,空白大往往因为它难。 - 正确做法:评估原创方向时,既看"空白是否真实"(U3/U5 确实空白),也看"自己是否具备填它的条件"(理论 + 工程 + 时间)。对初学者,更稳妥的是先在成熟生态(U2/U4)建立能力,再逐步挑战空白方向;对有基础的研究者,U3/U5 的空白是真正的机会。
练习¶
- [B 型·开源项目调研] 从附录 D 的开源项目表里,为 U2 和 U4 各选一个项目(如 acados、DESPOT),花一小时阅读它的 README 和一个示例,写一份半页笔记:它解决什么问题、怎么安装、一个最小示例长什么样。亲手感受"成熟生态"意味着什么。
- [思考题·选型权衡] 你的团队要在 3 周内为一个无人机做"风扰下的安全避障"。理论上 U2(鲁棒)和 U3(机会约束)都适用。考虑到 U2 有 acados 等成熟库、U3 的 C++ 生态空白,你会怎么选?如果时间是 6 个月、且团队想发表一篇工程论文呢?分别说明理由。
- [思考题·原创方向评估] 假设你想填补 U5 的 C++ 空白(实现一个 CVaR-MPC 的 C++ 库)。列出你需要具备的三类条件(理论 / 工程 / 资源),并诚实评估:以你当前的水平,这个项目是"踮脚够得着"还是"需要先补很多基础"?这个评估练习本身就是研究选题的重要一环。
- [思考题·建 vs 买] 对你关心的一个机器人不确定性问题,确定该用哪条路线后,用本节的"建 vs 买"分析判断:这条路线的能力,哪些部分该用现成库(通用基础设施)、哪些部分需要自己实现(你的专门逻辑)?把它落到具体的库(附录 D)和具体的"专门逻辑"上。
§U6.3 与强化学习的交界:一张二维图与六座桥 ⭐⭐⭐⭐¶
动机:规控的"安全"和 RL 的"安全"是同一件事吗¶
不确定性规划(U1–U5)来自控制 / 优化传统,强化学习(RL)来自机器学习传统。两个社区长期平行发展,各自有一套处理不确定性 / 安全的方法——规控有鲁棒 MPC、机会约束、CVaR-MPC,RL 有 Safe RL、分布式 RL、World Model。一个自然的问题:它们是各说各话的两套东西,还是同一些思想在两个社区的不同表述?
这个问题对两类读者都重要。有 RL 背景的读者想知道:我熟悉的 CMDP、CVaR-CMDP、IQN,对应规控侧的什么?有规控背景的读者想知道:我学的 IRA 风险分配、CVaR 约束,在 RL 侧有没有对应物?打通这两个世界,意味着你在任一侧的积累都能迁移——而不是在另一侧重复造轮子(场景二)。
这个打通还有一层更深的价值: 它让你不被"门派"所限。机器人学界长期有"控制派"和"学习派"的某种隔阂——控制背景的人可能轻视 RL("不就是黑盒调参"), 学习背景的人可能轻视控制("不就是老一套的优化")。但这种隔阂是认知的局限, 不是事实——二维图和六座桥会证明, 两派处理的是同一组问题、用的是同构的思想, 只是工具传统不同。跨过这层隔阂, 你能从两个传统里各取所长, 而非困在一个门派里。在机器人领域, 最强的往往不是纯控制派或纯学习派, 而是两边都懂、能融合的人——这一节就是帮你成为这样的人。
这一节用一张二维图给五条路线和 RL 方法做精确定位,再用六座"桥"点明最深的对应关系。
一张二维图:模型已知度 × 风险态度¶
想象一张二维图,两个轴: - 横轴 = 模型已知度:最左是"模型完全已知"(经典 MPC,你有精确的动力学方程),最右是"纯数据驱动"(model-free RL,从交互中学,不假设知道模型)。 - 纵轴 = 不确定性处理方式 / 风险态度:最下是"确定性 / 风险中性"(只优化期望,不管尾部),最上是"风险敏感"(关心尾部 / 最坏情况)。
五条路线和 RL 方法在这张图上的位置:
风险敏感 ↑
│ 左上区 右上区
│ Covariance Steering(U3) CVaR-CMDP, WCSAC,
│ 嵌套 CVaR-MPC(U5) Risk-Conditioned DSAC
│ (U5 的 RL 版)
│ 左中偏上 右偏中
│ Tube MPC(U2) CC-MPC(U3) Distributional RL
│ CVaR-MPC(U5) 分支 MPC(U1) (C51/QR-DQN/IQN)
│ (U5 的学习化实现)
│ 中央
│ BetaZero/Neural-guided DESPOT
│ (U4 + RL 的融合)
│ 右中: CMDP Safe RL (CPO, PPO-Lagrangian) ← U3 的 RL 版
│
风险中性 │ 左下区 右下区
│ 经典 MPC / iLQR PPO / SAC / TD3
│ (风险中性、模型已知) (风险中性 RL)
└──────────────────────────────────────────────→
模型已知 纯数据驱动
逐区解读: - 左下(模型已知 + 风险中性):经典 MPC、iLQR——规控的"基线",假设模型准、只优化期望。 - 左中偏上(模型已知 + 风险敏感):U2 Tube MPC、U3 CC-MPC、U5 CVaR-MPC、U1 分支 MPC——本方向的主体,都在"模型已知"的左侧,但纵轴上比经典 MPC 更靠风险敏感。 - 左上(模型已知 + 更风险敏感):Covariance Steering(U3,主动控制状态协方差)、嵌套 CVaR-MPC(U5,时间一致的风险敏感)——风险敏感程度更高的规控方法。 - 右下(数据驱动 + 风险中性):PPO、SAC、TD3——标准 model-free RL,风险中性(最大化期望回报)。 - 右中(数据驱动 + 带约束):CMDP Safe RL(CPO、PPO-Lagrangian)——RL 侧的"安全",约束期望代价,正是 U3 机会约束的 RL 版。 - 右上(数据驱动 + 风险敏感):CVaR-CMDP、WCSAC、Risk-Conditioned DSAC——RL 侧的风险敏感,正是 U5 的 RL 版。 - 右偏中(数据驱动 + 学整个分布):分布式 RL(C51 / QR-DQN / IQN)——学整个回报分布,是 U5 风险敏感的"学习化实现"。 - 中央(模型 + 数据融合 + 感知不确定):BetaZero、Neural-guided DESPOT——U4 POMDP 树搜索与神经网络的融合。
读这张图时, 注意纵轴(风险态度)是规控和 RL **共享**的, 而横轴(模型已知度)是区分两者的——这个设计本身就传达了核心信息: 规控和 RL 的差异主要在"用模型还是用数据"(横轴), 而在"如何对待风险 / 不确定"(纵轴)上, 两者面对的是同一组层次(风险中性 / 带约束 / 风险敏感)。换句话说, 把规控和 RL 分开的不是"它们关心的问题不同", 而是"它们解决问题的手段不同(模型 vs 数据)"。这也是为什么同一纵轴高度上, 左右两边总能找到对应的方法(下面的对照表)——它们在解同一层次的问题, 只是一个用模型、一个用数据。
这张图的价值:它让你看到**规控和 RL 不是两个孤岛,而是同一张图的左右两半**——左半"模型已知"是规控的家园,右半"数据驱动"是 RL 的家园,但纵轴(风险态度)是两边共享的。同一个纵轴高度上,左边的规控方法和右边的 RL 方法往往在解决同一个问题(只是一个用模型、一个用数据)。
把"同一纵轴高度上的规控 ↔ RL 对应"列成一张具体方法对照表,能看得更清楚:
| 纵轴高度(风险态度) | 左半(规控,模型已知) | 右半(RL,数据驱动) | 它们共同解决的问题 |
|---|---|---|---|
| 风险中性 | 经典 MPC / iLQR | PPO / SAC / TD3 | 最大化期望表现 |
| 带安全约束 | CC-MPC(U3) | CMDP(CPO / PPO-Lagrangian) | 满足安全约束下优化 |
| 风险敏感(尾部) | CVaR-MPC(U5) | CVaR-CMDP / WCSAC | 控制代价尾部 |
| 学整个分布 | (CVaR-MPC 对采样场景) | Distributional RL(C51/QR/IQN) | 用完整分布算任意风险 |
| 主动控制不确定性 | Covariance Steering(U3) | (较少,新兴) | 主动塑造状态分布 |
| 感知不确定 + 前瞻 | POMDP 树搜索(U4) | World Model + Neural MCTS | 看不清下的前瞻决策 |
| 多模态未来 | 分支 MPC(U1) | MCTS / 基于模型 RL | 离散多种未来的决策 |
这张表是二维图的"方法级"细化——每一行是一个纵轴高度(一种风险态度 / 决策需求),左右两列是规控和 RL 在这个高度上的代表方法,最右列是它们共同解决的问题。读它你会有一个强烈的印象:几乎每个规控方法都有一个 RL 对应、反之亦然——它们成对地解决同一类问题,区别只在"用模型解优化"还是"从数据学策略"。这种成对性不是巧合,而是因为两个领域面对的是同一组决策问题(如何在不确定 / 有约束 / 风险敏感下决策),只是工具传统不同。
本质洞察:规控和 RL 处理不确定性的方法,是"同一些思想"在"模型已知"和"数据驱动"两种设定下的镜像。初看规控的 CVaR-MPC 和 RL 的 CVaR-CMDP 像两个领域的两个方法,但二维图揭示它们在同一个纵轴高度(风险敏感)、只是横轴位置不同(模型已知 vs 数据驱动)。这不是表面相似——它们处理的是**同一个数学问题**(如何优化代价分布的尾部),只是一个假设知道动力学模型(于是能解优化)、一个从交互中学(于是用策略梯度)。这个镜像关系意味着:风险敏感、安全约束这些**思想是设定无关的**,可以在模型已知和数据驱动之间迁移。理解这一点,你就不会把规控和 RL 当成要二选一的对立阵营,而是看成"同一套不确定性处理思想的两种实现路径"——你的问题模型已知就走左边(规控),纯数据驱动就走右边(RL),思想是通的。这也是为什么本方向(规控传统)和 RL 方向能深度交界。
六座桥:最深的对应关系¶
二维图给了全局定位,但有六个对应关系深到值得单独点明——它们是规控某个具体机制和 RL 某个具体机制的**精确对应**(不只是"都处理风险"的泛泛相似):
| 桥 | 规控侧(本方向) | RL 侧 | 对应的本质 |
|---|---|---|---|
| 1 | CC 约束(U3) | CMDP 约束 | 都把"安全"写成"约束(期望)代价 ≤ 阈值" |
| 2 | IRA 风险分配(U3) | Lagrangian 乘子(PPO-L) | 都在"如何把总风险预算分配到各约束 / 各步"上做对偶 |
| 3 | CVaR 约束(U5) | CVaR-CMDP(Safe RL) | 都把约束从"期望代价"升级为"代价的 CVaR" |
| 4 | 畸变风险测度(U5) | IQN 的 τ 重采样 | 都通过对分位重加权实现任意风险态度 |
| 5 | Belief update(U4) | Dreamer 的 RSSM encoder | 都在维护"对(隐)状态的概率信念"并随观测更新 |
| 6 | POMDP 树搜索(U4) | BetaZero / Sampled MuZero | 都用搜索在 belief / 隐状态上做前瞻规划 |
先做一个具体的"跨桥翻译"走查,体会桥不是泛泛的类比、而是可操作的互译。
走查:把"CVaR 风险敏感避障"从规控侧翻译到 RL 侧(用桥 3 + 桥 4)。规控侧你有一个 CVaR-MPC:对扰动采样 N 条场景,用 Rockafellar–Uryasev 辅助变量把"碰撞代价的 CVaR ≤ 阈值"写成 QP 约束,每个控制周期解 QP(U5.5)。现在把它翻译到 RL 侧——
- 目标翻译(桥 3):规控的"CVaR 约束 ≤ 阈值"翻译成 RL 的 CVaR-CMDP——最大化期望回报,同时约束碰撞代价的 CVaR ≤ 阈值。两者都是"带 CVaR 约束的优化",且都能用 RU 公式把 CVaR 约束化成"期望约束 + 辅助变量",于是 CMDP 的拉格朗日求解器原样可用。
- 风险态度的实现翻译(桥 4):规控里 CVaR 靠"对采样场景的辅助变量"算;RL 里靠分布式 critic(IQN)学整个回报分布、再对 τ 在 \([0,\alpha]\) 上重采样取均值得到 CVaR。规控的"畸变 = 对场景加权"翻译成 RL 的"畸变 = 对 τ 重采样"。
- 模型 vs 数据的差异:规控版需要显式扰动模型(采样场景),RL 版从交互 / 仿真中学(不需显式模型)。这是横轴(模型已知度)的差异——同一个 CVaR 思想,规控在左侧(用模型解 QP)、RL 在右侧(从数据学策略)。
翻译完成:规控的 CVaR-MPC ↔ RL 的 CVaR-CMDP + 分布式 critic,目标同构(桥 3)、风险态度实现同构(桥 4)、只在"用模型还是用数据"上不同。这个走查说明六座桥是**可操作的互译规则**——给你规控侧的一个方法,你能沿桥把它翻译成 RL 侧的对应方法(反之亦然),而不只是说"它们都处理风险"。
逐桥点明:逐桥点明: - 桥 1(CC ↔ CMDP):U3 把安全写成 \(\Pr(g>0)\le\delta\)(约束违反概率),CMDP 把安全写成 \(\mathbb{E}[\text{cost}]\le d\)(约束期望代价)——两者都是"带约束的优化",求解机器(拉格朗日 / 对偶)相通。 - 桥 2(IRA ↔ Lagrangian):U3 的 IRA(迭代风险分配)解决"总违反概率 \(\delta\) 如何分配到多个约束 / 多个时刻",本质是在风险预算上做对偶迭代;PPO-Lagrangian 的乘子 \(\lambda\) 同样在"约束满足"上做对偶——两者是同一个对偶思想。 - 桥 3(CVaR 约束 ↔ CVaR-CMDP):U5 把约束从期望升级为 CVaR(看尾部),Safe RL 的 CVaR-CMDP 做同样的升级——而且都能用 Rockafellar–Uryasev 把 CVaR 约束化成"期望约束 + 辅助变量",于是 CMDP 的求解器原样可用(U5 进阶专题)。 - 桥 4(畸变测度 ↔ IQN τ 重采样):U5 的畸变风险测度通过对分位函数加权实现任意风险态度,IQN 通过改 \(\tau\) 的采样分布实现同样的事——这是最精确的一座桥,畸变函数 \(g\) 就是 IQN 里对 \(\tau\) 的重加权(U5.4)。 - 桥 5(Belief ↔ RSSM):U4 的 belief 是"对状态的概率分布",随观测做贝叶斯更新;Dreamer 等 World Model 的 RSSM(循环状态空间模型)编码器维护一个隐状态分布,随观测更新——两者都在做"维护并更新对隐状态的信念"(U4 与 World Model 的交界)。 - 桥 6(POMDP 树搜索 ↔ Neural MCTS):U4 的 DESPOT 在 belief tree 上做前瞻搜索,BetaZero / Sampled MuZero 用神经网络引导的 MCTS 在隐状态上做同样的前瞻——POMDP 树搜索是 Neural MCTS 的"感知不确定版"。
实操判断:何时用规控(左半)、何时用 RL(右半)¶
理解了对应关系,还有一个实操问题:面对一个具体问题,你该走左半(规控)还是右半(RL)?给一个判断框架——看三个条件:
- 你有可靠的模型吗? 有精确动力学模型(如机械臂、已知质量的无人机)→ 倾向规控(左半),用模型解优化更高效、更可解释、有保证;模型未知 / 难建(如复杂接触、柔性体、视觉输入)→ 倾向 RL(右半),从数据 / 仿真学。
- 你有海量交互 / 仿真吗? RL 需要大量交互数据或高保真仿真器(百万级样本);如果没有(真机交互昂贵、无好仿真器)→ 倾向规控(不需海量数据);如果有(好仿真器、能大量采样)→ RL 可行。
- 你需要硬保证吗? 安全攸关、需要可证明的保证(如载人系统)→ 倾向规控(U2 的 worst-case 保证、CBF 的安全滤波);可接受"统计上安全"(如游戏、容错场景)→ RL 也可。
三个条件的组合给出倾向:有模型 + 数据少 + 需保证 → 强烈倾向规控;无模型 + 数据多 + 容错 → 强烈倾向 RL;中间情况 → 考虑**融合**(用 RL / World Model 学模型,用规控 / MPC 做有保证的规划——这正是二维图"中央"的融合区,也是很多现代系统的做法)。
一个重要提醒:这不是"规控 vs RL 谁更好"的站队,而是"哪个更适合你当前的条件"。同一个团队、同一类问题,条件变了(拿到了好仿真器、或需要上安全认证)选择就可能变。成熟的做法是**两手都懂**——知道何时用哪个、以及如何融合,而非只会一种、强行套到所有问题上。这也是本节强调六座桥的实践意义:懂了对应关系,你才能在规控和 RL 之间自如切换、按条件选择、甚至融合二者。
多视角理解:六座桥可以从"问题""机制""实现"三个角度看,每个角度揭示一层对应。同样是"规控 ↔ RL"的对应,可以看三层:(1) 问题层——双方在解同一个问题(桥 1/3 的"安全约束"、桥 5 的"状态估计"),只是一个有模型、一个数据驱动;(2) 机制层——双方用同构的数学机制(桥 2 的"对偶分配"、桥 4 的"分位重加权"),换个符号就能互译;(3) 实现层——双方的代码模块可以互相替换 / 启发(桥 6 的"树搜索"、桥 5 的"belief 编码器")。像 / 不像:六座桥都连接规控和 RL,但连接的"深度"不同——桥 1/3 是问题层(同一问题的两种设定)、桥 2/4 是机制层(同构的数学)、桥 5/6 是实现层(可互换的模块)。理解这三层,你就能判断一个"规控 ↔ RL"的类比有多深:泛泛地"都处理不确定性"是最浅的,"同一问题的两种设定"深一层,"同构的数学机制"更深,"可互换的代码模块"最深。本方向和 RL 的交界,在这六座桥上达到了"机制同构"甚至"实现互换"的深度——这远超表面相似。
为什么规控背景和 RL 背景的人都值得学对面¶
六座桥的深度对应,给一个实际的建议:无论你是规控背景还是 RL 背景,都值得花力气学对面——因为对面不是"另一个领域",而是"你已知思想的另一种实现",学习成本比想象的低、回报比想象的高。
- 规控背景的人学 RL:你已经懂 MPC、CVaR、POMDP,学 RL 时会发现 CMDP 就是带约束的 MPC 的数据驱动版、IQN 就是 CVaR 的学习化、World Model 就是 belief 的神经化(六座桥)。你不是从零学一个陌生领域,而是把已知的规控思想"翻译"成 RL 语言。回报:当你的问题模型未知 / 高维感知(规控的短板),你有 RL 这个工具;且你能做规控 + RL 的融合(用 RL 学模型、用 MPC 做有保证的规划)。
- RL 背景的人学规控:你已经懂 PPO、Safe RL、分布式 RL,学规控时会发现 tube MPC 给了你 RL 没有的硬保证、CC 的 IRA 给了风险分配的精确方法、POMDP 的精确 belief 更新补了 World Model 的原则性。你不是丢掉 RL 学对立面,而是给已知的 RL 思想补上"模型已知时的高效精确版"。回报:当你的问题模型已知 / 需硬保证 / 数据稀缺(RL 的短板),你有规控这个工具;且你能做 RL + 规控的融合。
共同的回报是**两手都懂、能按条件选择和融合**(§U6.3 的"规控 vs RL 实操判断")。在机器人领域,纯规控或纯 RL 都有明显的适用边界(规控需模型、RL 需数据 / 仿真),而两者结合往往是最强的——这正是为什么现代很多机器人系统是"学习 + 规控"的混合(World Model + MPC、RL 预训练 + MPC 微调)。学好六座桥,你就具备了驾驭这种混合的基础。这也是本章花大力气讲 RL 交界的根本原因:不是为了让你选边站,而是为了让你成为"两个世界都懂、能自如切换和融合"的人。
规控 + RL 融合的几种典型模式¶
"融合"不是含糊的口号,有几种具体的、已被验证的模式。了解它们,你就知道融合具体怎么做:
- 模式一:RL 学模型,规控做规划(World Model + MPC)。用 RL / 自监督从数据学一个世界模型(动力学 / 观测),再用 MPC / 规划在这个学到的模型上做有保证的规划。这解决了"规控需要模型但模型难建"的痛点——模型从数据学(RL 的强项),规划用 MPC(规控的强项、有保证)。Dreamer 系 + MPC 是这个方向的代表。
- 模式二:RL 预训练,规控做安全层(RL + 安全滤波)。用 RL 学一个高性能但不保证安全的策略,再用规控的安全滤波(CBF-QP,U2)在它输出上做投影,保证安全。这解决了"RL 性能好但无保证"的痛点——性能靠 RL、安全靠规控的滤波层。
- 模式三:规控提供结构,RL 填空(结构化 RL)。用规控的结构(如 MPC 的优化结构、分支树的结构)作为框架,用 RL 学其中难以手工设计的部分(如 MPC 的代价函数、分支的价值估计)。这结合了规控的结构性和 RL 的学习能力。
- 模式四:RL 做高层,规控做底层(分层)。RL 做高层决策(如选择子目标 / 行为模式),规控做底层执行(如 MPC 跟踪)。高层用 RL 的灵活、底层用规控的精确与保证。
这四种模式覆盖了规控 + RL 融合的主要思路——它们的共性是**让 RL 和规控各做自己擅长的**:RL 擅长从数据学(模型、高维感知、复杂策略),规控擅长有保证的优化(约束满足、安全、精确执行)。融合不是把两者简单拼接,而是按各自的强项分工。理解这四种模式,你面对一个"既需要学习、又需要保证"的问题时,就知道如何设计一个融合方案——而不是非此即彼地只用一种。这也是为什么"两个世界都懂"如此有价值:只有都懂,你才能设计出让两者各展所长的融合。
桥 5 / 6 深入:POMDP 与 World Model / Neural MCTS 的交界¶
六座桥里,桥 5(belief ↔ RSSM)和桥 6(POMDP 树搜索 ↔ Neural MCTS)连接的是 U4 与一整个现代 RL 子方向——基于模型的 RL / World Model。这个交界足够重要、足够深,值得单独展开。
桥 5(belief ↔ RSSM)的深入:U4 的核心是维护 belief——对(看不清的)状态的概率分布,随观测做贝叶斯更新。现代 World Model(如 Dreamer 系列)的核心是 RSSM(Recurrent State Space Model)——一个循环网络,把历史观测压缩成一个隐状态分布,随新观测更新。两者做的是**同一件事**:维护并更新"对隐状态的信念"。区别在实现——U4 的 belief 是显式的概率分布(用贝叶斯公式更新,要求知道观测模型 \(O(o\mid s)\) 和转移模型 \(T\)),RSSM 的隐状态是神经网络学出来的(从数据中学观测模型和转移,不要求显式给定)。所以 RSSM 可以看成"belief 的神经化、数据驱动版"——它把 U4 需要手工指定的模型,换成了从数据学的模型。
桥 6(POMDP 树搜索 ↔ Neural MCTS)的深入:U4 的 DESPOT 在 belief tree 上做前瞻搜索(用采样场景)。AlphaZero / MuZero 系的 Neural MCTS 用神经网络(策略网络 + 价值网络)引导蒙特卡洛树搜索。BetaZero、Sampled MuZero 等把这两者融合——在 belief(或学出的隐状态)上做神经网络引导的树搜索。融合点:DESPOT 的"采样场景 + 树搜索"提供了 POMDP 的处理框架,Neural MCTS 的"网络引导"提供了在大空间里高效搜索的能力。BetaZero 正是"用神经网络引导 belief 上的 MCTS"——POMDP 树搜索的现代化、学习化版本。
这两座桥的意义:它们把 U4(POMDP,规控 / 决策传统)和 World Model / Neural MCTS(深度 RL 传统)连成一体。一个做 World Model 的研究者会发现,他的 RSSM 就是 belief 的神经版、他的 MuZero 就是 POMDP 树搜索的神经版;一个做 POMDP 的研究者会发现,深度 RL 给了他"从数据学模型"和"网络引导搜索"两件他原本没有的利器。这是 U4 与现代 RL 交界最富有成果的地方——也是为什么二维图的"中央"(模型 + 数据融合 + 感知不确定)是 BetaZero / Neural-guided DESPOT。
对比性思维:U4 的 belief tree 和 Neural MCTS,是"显式模型 + 精确贝叶斯"与"学出模型 + 神经引导"在同一个'树搜索'框架下的两端。两者都在一棵"前瞻树"上搜索好的决策序列;区别在树节点上的两件事——"如何表示 / 更新对隐状态的信念"和"如何引导搜索往有希望的方向"。U4 经典做法:belief 用显式概率分布(贝叶斯精确更新,需手工模型),搜索用采样场景 + 启发式(DESPOT 的正则化)。Neural MCTS 做法:隐状态用神经网络(从数据学,无需手工模型),搜索用学出的策略 / 价值网络引导。像 / 不像:都是"树上前瞻搜索 + 维护隐状态信念",但一个"精确但需模型"、一个"近似但能从数据学"。这个对比揭示了一条融合路径(BetaZero 走的路):用神经网络替换 U4 里"需要手工指定"的部分(模型、启发式),保留 U4 的"belief + 树搜索"框架——两全其美。理解这个对比,你就看到 U4 不是一个会被深度 RL 取代的"老方法",而是一个可以被深度 RL **增强**的框架(用网络补上它的短板:手工模型、大空间搜索),这正是当前 POMDP + 深度 RL 融合研究的核心思路。
六座桥的双向启发:从对应关系到研究方法论¶
六座桥不只是"理解工具",更是**研究方法论**——每座桥都能**双向**启发:规控的成熟成果可以启发 RL,RL 的新进展也可以回流规控。这是产生新研究想法的一个系统性来源:找一座桥,把一侧的成果往另一侧搬。
逐桥举双向启发的例子:
- 桥 1(CC ↔ CMDP):规控→RL:CC 里成熟的"约束收紧"技术(用分位数把概率约束变确定性约束)可启发 CMDP 用更紧的约束代理;RL→规控:CMDP 的拉格朗日自适应(自动调乘子)可启发 CC-MPC 自动调风险水平 \(\delta\)。
- 桥 2(IRA ↔ Lagrangian):规控→RL:IRA 的"迭代风险分配"(把总风险预算在多约束 / 多步间最优分配)可启发 Safe RL 更精细地分配约束预算;RL→规控:策略梯度里乘子的在线更新可启发 IRA 做在线风险再分配。
- 桥 3(CVaR 约束 ↔ CVaR-CMDP):规控→RL:Rockafellar–Uryasev 的辅助变量技巧(把 CVaR 约束变成期望约束 + 辅助变量)让 CVaR-CMDP 能复用标准 CMDP 求解器;RL→规控:CVaR-CMDP 的"风险条件策略"(把 α 作为输入)可启发 CVaR-MPC 做"一个控制器覆盖多个 α"。
- 桥 4(畸变测度 ↔ IQN τ 重采样):规控→RL:畸变风险测度的完整理论(谱风险、各种畸变函数)可启发 IQN 设计更丰富的风险态度;RL→规控:IQN 的"学整个分位函数"可启发规控用神经网络表示 CVaR-MPC 的值函数(而非每步解 LP)。
- 桥 5(belief ↔ RSSM):规控→RL:POMDP 的精确 belief 更新(贝叶斯)可启发 World Model 加入更有原则的不确定性量化;RL→规控:RSSM 的"从数据学隐状态"可启发 POMDP 用神经网络学观测 / 转移模型(免去手工建模)。
- 桥 6(POMDP 树搜索 ↔ Neural MCTS):规控→RL:DESPOT 的"确定化场景 + 正则化"可启发 Neural MCTS 减少方差;RL→规控:AlphaZero 的"网络引导搜索"可启发 POMDP 用学出的策略 / 价值网络引导 belief tree 搜索(BetaZero 正是如此)。
这十二个方向(六桥 × 两向)里,很多已经是真实的研究工作(BetaZero 走桥 6 的 RL→规控、CVaR-CMDP 走桥 3 的规控→RL),还有一些是潜在的、尚未充分探索的方向。这给你一个产生研究想法的**系统方法**:不要凭空想新点子,而是站在一座桥上,问"这一侧有什么成熟的好东西,对面还没有?"——把它搬过去,往往就是一个有价值的新工作。
本质洞察:六座桥作为"双向启发"的通道,揭示了一种跨领域产生创新的系统方法——在两个有深层对应的领域间搬运成果。很多人以为创新靠灵光一现,但跨领域的创新往往有迹可循:当两个领域存在深层对应(如规控与 RL 的六座桥,都是"机制同构"级别的对应),一个领域里成熟的成果,搬到对面常常就是对面的新东西——因为两个领域虽然底层思想相通,但各自发展出了对方还没有的技术。像 / 不像:这和"类比推理"相似(都靠两个领域的相似性),但比泛泛的类比更可靠——因为六座桥是"机制同构 / 实现可互换"级别的对应(§U6.3 三层深度的最深两层),搬运的成功率远高于基于表面相似的类比。理解这个方法,你产生研究想法就有了一个系统来源:维护一张"领域间深层对应"的清单(如这六座桥),定期问"哪一侧有成熟成果、对面还缺?"。这不保证每次都成功(搬运需要适配两边的不同前提,§U6.3 陷阱),但它把"想新点子"从撞运气变成了有方向的搜索。这也是为什么本章花大力气讲清六座桥——它们不只帮你理解规控与 RL 的关系,更是一套可复用的创新方法论。
⚠️ 本节常见陷阱¶
💡 概念误区:把"规控"和"RL"当成对立、要二选一的阵营 - 现象 / 后果:认为做规控就不用学 RL、做 RL 就不用懂规控,错过两个领域可迁移的对应关系,在一侧重复另一侧已有的成果。 - 根本原因:二维图揭示规控(左半,模型已知)和 RL(右半,数据驱动)是同一张图的两半,纵轴(风险态度)共享——它们是"同一思想的两种实现路径",不是对立阵营。 - 正确做法:把规控和 RL 当成互补工具:问题模型已知、要硬保证 → 规控(左半);纯数据驱动、高维感知 → RL(右半);很多实际系统两者结合(如 World Model 学模型 + MPC 规划)。学一侧时主动找另一侧的对应(六座桥),加速迁移。
💡 概念误区:以为分布式 RL(IQN 等)就是"风险敏感 RL" - 现象 / 后果:把"学整个回报分布"(分布式 RL)等同于"风险敏感决策",以为用了 IQN 就自动风险敏感了。 - 根本原因:分布式 RL 学的是整个分布,但**风险态度是事后施加的**——默认按期望贪心(仍是风险中性),只有显式改成按 CVaR / 畸变期望贪心才风险敏感(桥 4)。学分布是"必要条件"(有了分布才能算风险),不是"充分条件"(还要选风险态度)。 - 正确做法:分清"学分布"(分布式 RL)和"用分布做风险敏感决策"(改贪心 / 改策略改进信号为畸变期望)。IQN 提供了分布,风险敏感需要你额外施加畸变(U5.4)。
🧠 思维陷阱:以为六座桥意味着规控和 RL 可以无脑互换 - 现象 / 后果:因为有对应关系,就以为任何规控方法都能直接换成对应的 RL 方法(或反之),忽略两者的适用前提不同。 - 根本原因:六座桥是"思想 / 机制"的对应,不是"适用条件"的等同。规控(左半)需要模型,RL(右半)需要大量交互数据 / 仿真——同一个思想,但落地前提不同。模型已知时规控更高效(不用海量交互),纯数据驱动时 RL 更通用(不用建模)。 - 正确做法:用桥理解"思想相通",但选方法时仍看适用前提——有可靠模型 → 规控侧(高效);无模型、有仿真器 / 数据 → RL 侧(通用);两者兼有 → 融合(如 World Model + MPC)。桥帮你迁移理解,不替你做适用性判断。
练习¶
- [B 型·定位你的方法] 选一个你正在用或熟悉的不确定性 / 安全方法(规控或 RL 任一侧),在本节的二维图上定位它(横轴模型已知度、纵轴风险态度),并找出它在另一侧的对应方法(用六座桥之一)。写两句话说明这个对应的"深度"(问题层 / 机制层 / 实现层)。
- [思考题·桥的方向] 六座桥大多可以"双向"启发——规控的成果启发 RL,RL 的成果也启发规控。请为桥 4(畸变测度 ↔ IQN τ 重采样)举例说明:(a) 规控的畸变风险测度理论如何帮助理解 IQN 的风险敏感变体;(b) 反过来,IQN 的"学整个分位函数"如何启发规控侧"用神经网络表示 CVaR-MPC 的值函数"。
- [思考题·融合点] 二维图的"中央"是 BetaZero / Neural-guided DESPOT(U4 + RL 融合)。请设想另一个"规控 + RL 融合"的点:把本方向某条路线(U1–U5 任选)与某个 RL 方法结合,说明这个融合解决了单独哪一方解决不了的问题(提示:模型已知的部分用规控、需要从数据学的部分用 RL)。
- [B 型·走一遍翻译] 仿照本节"把 CVaR 风险敏感避障从规控翻译到 RL"的走查,选另一座桥(如桥 1 的 CC↔CMDP、桥 5 的 belief↔RSSM),把一侧的一个具体方法翻译到另一侧——写出目标如何翻译、机制如何翻译、模型 vs 数据的差异在哪、翻译会损失什么。
§U6.4 三条学习路线:按背景选择你的路径 ⭐⭐¶
动机:同一片知识,不同背景该走不同的路¶
§U6.2 给了"系统学全部五条路线"的推荐顺序,但不是每个人都要从头学全部、也不是每个人的起点相同。一个已有 MPC 经验的工程师、一个有 RL 背景的研究者、一个零基础但时间充裕的学生,应该走不同的路径——用同一个顺序要求所有人,要么让有基础的人重复已知、要么让没基础的人卡在难点。
这背后是一个朴素但常被忽视的学习原理:学习路径应该从学习者的已有知识出发, 而非从知识体系的"逻辑起点"出发。知识体系有它内在的逻辑顺序(如先基础后应用), 但学习者不是白纸——他们带着各自的背景而来。对一个已经精通 MPC 的人, 强迫他从"什么是优化"讲起是浪费; 对一个零基础的人, 直接讲 POMDP 的 belief 空间会让他崩溃。好的学习路线因人而异: 同一片知识, 不同背景的人有不同的最优进入顺序。这一节给三条针对典型背景的路线, 但更重要的是教你**如何根据自己的背景裁剪出属于你的路线**——因为再多的标准路线也覆盖不了所有人, 学会裁剪才是关键。
这一节给三条针对不同背景的学习路线。每条都标注了适合谁、各阶段学什么、可以跳过什么——你可以直接选最匹配自己的一条,或混合裁剪。
速成路线(约 6 周,全职)¶
适合:已有 MPC 经验、想快速掌握核心的工程师。你已经懂优化、QP、轨迹优化,缺的是"如何把不确定性加进来"。
Week 1: U2 前半(Tube MPC 理论 + acados 实践)
Week 2: U2 后半(CBF + GP-MPC)
Week 3: U3(CC-MPC + IRA + CC-RRT)
Week 4: U4 前半(POMDP 理论 + DESPOT 运行)
Week 5: U4 后半(DESPOT 精读 + Active SLAM 实践)
Week 6: U5(CVaR 理论 + CVaR-MPC 实现)
跳过:U1(分支规划)——它的"多模态离散未来"概念可以在需要时(如做自动驾驶意图预测)再补,对其他方向不是必需。这条路线聚焦"动力学端 + 感知端 + 评估端"三个最常用的入口,用最短时间建立可工程落地的能力。
为什么速成路线敢跳过 U1, 而不跳过别的? 因为对"已有 MPC 经验、想快速建立不确定性处理能力"的工程师, U2/U3/U5(动力学端 + 评估端)是 MPC 的直接升级(在你已会的 MPC 上加鲁棒 / 概率 / 风险), U4(感知端)是另一个高频且重要的入口——这四条覆盖了工程中最常遇到的不确定性。而 U1(分支)主要用于多智能体交互 / 意图预测, 对很多工程场景(如四足、机械臂、单机导航)不是首要的, 可以按需后补。这个取舍体现了速成路线的设计原则: 在有限时间里, 优先覆盖对目标人群最高频、最直接的内容, 把不那么通用的留到按需补充。注意这是针对"MPC 背景 + 快速落地"这个特定目标的取舍——换个目标(如做自动驾驶), U1 就成了必需, 不该跳。
完整路线(约 12–15 周,全职)¶
适合:零基础但时间充裕、想系统掌握全部五条路线的学生 / 研究者。
按大纲编号顺序 U1→U2→U3→U4→U5 完整学习。这条路线最全面,每章都不跳,适合作为"系统教育"。注意:编号顺序便于理解五条路线的逻辑关系(按入口分类),但如果你更看重循序渐进的认知阶梯,也可以采用 §U6.2 的"U2→U3→U5→U1→U4"顺序——两者都覆盖全部内容,前者重"分类清晰"、后者重"难度递增"。
RL 优先路线(约 8 周,全职)¶
适合:已有 RL 背景、想理解不确定性规划与 RL 交界的工程师 / 研究者。你懂 PPO/SAC、懂策略梯度,缺的是"规控侧如何处理不确定性"以及"两者如何对应"。
Week 1: U2(鲁棒 MPC——理解 RL 的对照基线)
Week 2: U5 前半(CVaR + Distributional RL——与 RL 交界最深)
Week 3: U5 后半(IQN-CVaR 实验 + CVaR-MPC 对比)
Week 4-5: U4(POMDP + Dreamer-as-POMDP——与 World Model 交界)
Week 6: U3(CC-MPC——理解 Safe RL 的对照基线)
Week 7: U1(分支规划——理解 MCTS 的控制版)
Week 8: 自选深入(BetaZero 复现 / CVaR-MPC-cpp 原创)
这条路线的逻辑:从与 RL 交界最深的地方切入,把规控当成 RL 的"对照镜像"来学。先用 U2 建立"规控如何处理不确定性"的基线认知(对照你已知的 RL);再直奔 U5(与 RL 交界最深——分布式 RL 就是 U5 的学习化实现,桥 3/4);再到 U4(与 World Model 交界——RSSM 就是 belief 的神经化,桥 5/6);再回头补 U3(Safe RL 的对照基线,桥 1/2)、U1(MCTS 的控制版);最后自选深入。对有 RL 背景的人,这条路线让你不断地"把新学的规控方法挂到已知的 RL 概念上",迁移效率最高。
这条路线和速成路线形成有趣的对照: 速成路线对"MPC 背景"的人, 从最像 MPC 的 U2 起、按工程实用度排序; RL 优先路线对"RL 背景"的人, 从与 RL 交界最深的 U5/U4 起、按与 RL 的距离排序。同样是学 Part-U, 两类人的最优顺序几乎相反——这正印证了"从已知锚点出发"的原则: MPC 背景的人锚在 MPC(从 U2 进), RL 背景的人锚在 RL(从 U5/U4 进)。没有放之四海皆准的"最佳顺序", 只有"针对你的已知最高效的顺序"。这也是为什么本章给三条不同的路线、并教你裁剪——因为学习路径本质上是个性化的, 取决于你从哪里来。
一个个性化裁剪走查¶
三条路线是模板,真实的你需要裁剪。举个具体例子说明怎么裁。
假设你是一个**做过无人机 MPC、懂一点 RL(用过 PPO)、目标是把风险敏感避障做成能发表的工作、可投入 10 周**的工程师。三条标准路线都不完全匹配你——你有 MPC 基础(像速成路线的起点)、有 RL 背景(像 RL 优先路线)、但目标明确是"风险敏感 + 可发表"(指向 U5 + 原创)。怎么裁?
- 起点(利用已有 MPC 基础):跳过 U2 的大部分(你已懂 MPC),只快速过 U2 的 tube / CBF 概念(1 周)——你需要它作为风险敏感的对照基线,但不用从零学 MPC。
- 重心(对准目标 U5 + 利用 RL 背景):U5 全章深学(3 周)——它是你目标的核心,且与你的 RL 背景交界最深(分布式 RL、CVaR-CMDP,桥 3/4 你能快速理解)。
- 必要支撑(U5 依赖 U3):U3 选学(1.5 周)——CVaR 是机会约束的升级,你需要 U3 的概率约束语言作为 U5 的基础,但不用学全 U3 的所有变体。
- 按需略过:U1(1 周快速过概念)、U4(1 周快速过,除非你的避障涉及感知不确定)——它们不是你目标的核心。
- 原创冲刺(对准"可发表"):剩余 2.5 周做原创——基于 acados 实现一个 CVaR-MPC(填 U5 的 C++ 空白,§U6.2),用你的无人机做实验,对比 CVaR-MPC vs 机会约束 MPC 的尾部控制(累积项目的核心实验)。这正是一篇工程论文的雏形。
裁剪后的路线:U2 概念(1)→ U5 深学(3)→ U3 支撑(1.5)→ U1/U4 速过(2)→ 原创冲刺(2.5)= 10 周。它不是三条标准路线中的任何一条,而是按你的"已有基础(MPC+RL)× 明确目标(风险敏感 + 可发表)× 时间预算(10 周)"裁出来的。这就是 §U6.4 练习 1 要你做的——把模板裁成你自己的路线。
对比性思维:三条路线的差异,本质是"从哪个已知锚点出发"——MPC 经验、零基础、RL 背景。三条路线覆盖的知识大体相同(U1–U5),区别在起点和顺序:速成路线从"MPC 经验"这个锚点出发(先 U2,因为它最接近你已知的 MPC),跳过最不相关的 U1;完整路线没有预设锚点(零基础),按分类顺序系统学;RL 优先路线从"RL 经验"这个锚点出发(先与 RL 交界最深的 U5/U4),把规控当 RL 的镜像学。像 / 不像:三条都通向"掌握五条路线",但路径由你的已知锚点决定——人总是从已知通向未知最快。这给一个学习方法论的启示:学新知识时,先找到它与你已知之间的桥,从那座桥出发。有 MPC 基础就从 U2(最像 MPC)进、有 RL 基础就从 U5(最像分布式 RL)进——而不是机械地从"第一章"开始。选对起点,事半功倍。
三条路线的共同核心与差异,以及一份学习自检清单¶
三条路线(速成 / 完整 / RL 优先)覆盖的知识大体相同,但侧重不同。把它们的"共同核心"和"差异部分"拆开,能帮你抓住"无论走哪条都该优先掌握"的内容。
共同核心(三条路线都较早安排、都不跳过): - U2 鲁棒 MPC——三条都放在前面(速成 Week 1–2、RL 优先 Week 1、完整路线 U2 在 U1 之后紧接)。原因:它集合论最直观、C++ 生态最成熟,是建立"处理不确定性"工程手感的最佳起点。 - U5 的 CVaR 核心——三条都包含(即使速成放在最后一周、RL 优先放在很前)。原因:CVaR 是连接规控与 RL 最深的一环(桥 3/4),且公理化理论优美、原创空间大。
差异部分(不同路线的独特侧重): - 速成路线**跳过 U1**(分支规划按需后补),聚焦动力学 + 感知 + 评估三端。 - RL 优先路线**大调顺序**(U5/U4 提前到最前),把规控当 RL 的镜像学,并强调与 World Model / Distributional RL 的交界。 - 完整路线**不跳不调**,按编号系统学,适合零基础打全基础。
一份学习自检清单(无论走哪条路线,学完每一章后自问): - [ ] 我能用一句话说清这章处理哪个不确定性入口吗? - [ ] 我能说清它的"第一语言"(把不确定性翻译成什么数学对象)吗? - [ ] 我跑通了这章累积项目的模块吗(亲手实现 / 调通,而非只读)? - [ ] 我能说出这章方法的固有局限 / 失效场景吗(什么时候不该用它)? - [ ] 我能把这章方法在 RL 侧的对应找出来吗(如果有桥)?
这份清单把"学了"和"学会了"区分开——能勾上五项,才算真正掌握一章,而非只是读过。
本质洞察:三条学习路线的"共同核心"(U2 + CVaR)揭示了整个方向最该优先的两块——一个最易上手、一个交界最深。为什么三条针对完全不同背景的路线,都把 U2 和 U5 的 CVaR 放在重要位置?因为它们各自占据一个特殊地位:U2 是"认知上最易进入"的——集合论直观、生态成熟,是任何背景的人建立不确定性处理手感的最佳跳板;U5 的 CVaR 是"连接最广"的——它向上承接 U3(机会约束的公理化升级)、向外桥接 RL(分布式 RL、CVaR-CMDP)、且原创空间最大。一个是"最好的入口",一个是"最好的枢纽"。这给一个超越具体路线的学习启示:学一个新领域时,优先找到它的"最易入口"(降低启动成本)和"最深枢纽"(最大化连接收益)——前者让你快速上手、建立信心,后者让你的学习辐射到最多相关领域。在不确定性规划里,这两块是 U2 和 CVaR;在你学的任何领域里,都值得先识别出这两类节点,优先投入。这也是为什么"只能选两条深讲"的建议是 U4(最实)+ U5(最创)——它换了一个维度(产出 vs 创新),但同样体现"找到特殊地位的节点优先投入"的元策略。
学习节奏:理论与动手如何交替¶
无论走哪条路线,一个常见的失败是"只读不做"或"只做不读"。给一个理论与动手交替的节奏建议:
- 每章先读后做:先读该章的理论(建立"为什么 / 是什么"),再跑该章累积项目的模块(验证"怎么工作")。理论给你框架,动手给你直觉——两者缺一不可。只读理论你会"看起来懂了但不会用",只跑代码你会"调通了但不知道为什么"。
- 动手分两层:第一层"跑通现成"(用附录 D 的库跑通示例,确认环境 + 理解输入输出);第二层"改 / 实现核心"(自己实现该章的核心算法,如 CVaR 的 RU 公式、belief 更新)。第一层建立工程手感,第二层建立算法理解。时间紧只做第一层,要深入做第二层。
- 理论卡住时去动手:读理论卡在某个推导时,往往跑一下对应的代码、看具体数字,会豁然开朗(抽象的公式在具体数字上变直观)。反之,代码行为不解时,回去读理论往往找到原因。理论与动手互为解药。
学习中的三个常见误区¶
- 误区一:追求"读完所有论文 / 跑通所有项目"。27 篇论文、22 个项目不是要全部消化的清单,而是按需查阅的索引。贪多求全会让你疲于奔命却不深入。正解:按你的学习路线(§U6.4)和目标,深入少数核心(一条路线的必读篇 + 一两个核心项目),其余作索引。
- 误区二:跳过"为什么需要"直接学"怎么做"。直接背 CVaR 的公式、tube 的构造,而不理解"为什么期望不够""为什么要管道"——这样学的知识是脆的,换个场景就不会用。正解:每个方法先搞懂它解决的问题(动机)、它相比朴素做法的进步(反面),再学怎么做。这正是各章"动机 → 反面 → 理论"的顺序。
- 误区三:孤立地学每条路线,不建立联系。把 U1-U5 当五个独立知识块各自啃,学完一盘散沙。正解:用本章的综合视角(入口 / 翻译语言 / 二维图 / 六座桥)把五条路线连成网——这正是本综合章存在的意义。学完每章,回到本章对照它在全局中的位置。
学习资源类型指南:什么阶段用什么资源¶
不同学习阶段适合不同类型的资源,用错类型会低效——初学时啃论文会迷失,进阶时只看教程会停滞不前。给一个阶段-资源对应:
- 建立直觉阶段:看**教程 / 博客 / 综述的引言**——它们用直白语言讲"为什么 / 是什么",适合零基础建立第一印象。别一上来就读论文原文(太密、假设你已有背景)。
- 理解机制阶段:看**论文的方法部分 + 配套代码**——理解"怎么工作"。论文给精确定义,代码给可运行的具体。两者对照(公式 ↔ 代码行)是理解机制的最快路径。
- 动手实现阶段:看**开源项目的示例 + API 文档**(附录 D)——从跑通示例到改 / 实现核心。这阶段的关键资源是"能运行的代码",而非更多理论。
- 深入研究阶段:看**论文的实验 / 局限 / 相关工作 + 顺引用链**——理解"还有什么没解决""前人怎么走过来的"。这阶段要批判地读(论文的局限、未说的假设),而非全盘接受。
- 跟踪前沿阶段:看**最新会议论文 + 实验室主页 + 预印本**(arXiv)——保持不掉队。这阶段资源更新快、质量参差,需要前面阶段练就的判断力(附录 A 的"四个问题")去筛。
用法:判断你当前在哪个阶段,用对应类型的资源。一个常见错误是"阶段错配"——初学就啃前沿论文(迷失)、或进阶了还只看入门教程(停滞)。按阶段选资源类型,学习效率会高得多。本方向的资源里:教程 / 综述适合建直觉,附录 A 的论文适合理解机制 / 深入,附录 D 的项目适合动手——按阶段取用。
一个贯穿始终的学习闭环¶
把前面的建议(理论与动手交替、配项目、维护速记图、按阶段选资源、检验里程碑)整合成一个可执行的学习闭环,每章重复:
- 读动机与反面(理论,建直觉):先搞懂这章解决什么问题、相比朴素做法的进步——用教程 / 章节引言。
- 读理论核心(理论,懂机制):理解这章方法的数学核心——用章节正文 / 论文方法部分。
- 跑通现成(动手,建手感):用附录 D 的库跑通示例,确认环境、理解输入输出。
- 实现核心(动手,懂细节):自己实现这章方法的核心(如 CVaR 的 RU 公式),或在你的贯穿项目上用这章方法解一次。
- 填速记图 + 检验里程碑(巩固,连成网):把这章填进全景速记图的槽位,做 §U6.4 的学习自检清单——三项都过才进入下一章。
这个五步闭环把"理论 / 动手 / 巩固"整合在每一章里——读懂为什么和怎么(1-2)、动手验证和实现(3-4)、巩固并连入全局(5)。每章走一遍这个闭环,学完五章你不仅掌握了五条路线,还(通过步骤 5)把它们连成了网、亲手构建了速记图。这比"先把五章理论全读完、再统一动手"高效得多——后者会让理论和动手脱节、学完前面忘前面。闭环式的"边学边做边连",是吸收本方向(乃至任何工程方向)的最佳节奏。
给学习者的几句心态建议¶
最后几句关于学习心态的话,它们影响你能否坚持学完并真正掌握:
- 接受"暂时不懂":U4/U5 的理论(POMDP 的 belief 空间、CVaR 的公理化)初学时会觉得抽象、难懂——这正常。不要因为一遍没懂就气馁,理论往往要"读一点 → 动手一点 → 再回头读"反复几次才透。允许自己暂时不完全懂,在动手和回顾中逐步清晰。
- 重理解轻记忆:不要试图背公式、背选型表。理解了"为什么"(动机)和"怎么工作"(机制),公式和选型是自然推得的。本章的所有框架(入口 / 骨架 / 二维图)都是为了帮你理解而非记忆——理解了,记忆是副产品。
- 动手是检验真懂的唯一标准:能跑通、能实现、能解决一个具体问题,才算真懂。只读不做会产生"我懂了"的错觉,动手才暴露你不会的地方。本方向尤其如此——它是工程方向,纸上谈兵远远不够。
- 建立全局观再深入细节:先用本章建立"五条路线是什么、什么关系"的全局观,再深入每条路线的细节。有全局观,细节才有挂靠的位置;没有全局观,细节是散的、容易忘。这也是为什么建议在学 U1-U5 之前或之后都读读本章——它提供那个全局框架。
这些心态建议的共同点是**务实而有耐心**——务实(重理解、靠动手、建全局),有耐心(接受暂时不懂、允许反复)。学一个有深度的工程方向,急不得也虚不得。带着这样的心态,配合前面的学习闭环和路线选择,你能扎实地掌握 Part-U——不是浅尝辄止地"听说过五条路线",而是真正"会用、能选、可迁移"。
⚠️ 本节常见陷阱¶
💡 概念误区:以为"速成路线跳过 U1"意味着 U1 不重要 - 现象 / 后果:看到速成路线跳过 U1,就认为分支规划是可有可无的边缘内容,永远不补。 - 根本原因:速成路线跳过 U1 是因为它对"快速建立动力学 / 感知 / 评估端能力"不是必需,不是因为它不重要。U1 的"多模态离散未来"对自动驾驶意图预测、多智能体交互是核心,且是理解 U4 belief tree 的认知铺垫。 - 正确做法:把"跳过"理解为"按需后补"而非"永久忽略"。做需要多模态推理的方向(自驾、人机交互)时,U1 是必需的,要回来补。速成是为了快速起步,不是为了永久缺一块。
🧠 思维陷阱:严格照搬路线的周数,不按自己的实际进度调整 - 现象 / 后果:把"Week 1: U2 前半"当成硬性指标,到点没学完就焦虑或硬推进,或学得快时不敢提前。 - 根本原因:周数是基于"全职 + 特定背景"的估计,每个人的实际速度差异很大(取决于基础、投入度、是否跑代码)。把估计当硬指标会扭曲学习节奏。 - 正确做法:把周数当"相对比例参考"(如 U4 比 U3 难、需更多时间),而非绝对指标。按"是否真的掌握"(能跑通代码、能复述本质、能做练习)推进,而非按日历。学习深度比速度重要。
练习¶
- [思考题·选你的路线] 诚实评估你的背景(MPC 经验 / 零基础 / RL 背景),选一条最匹配的学习路线,并根据你的实际情况(可投入时间、是否要跑代码、目标是工程还是研究)裁剪它——写出你的个性化版本(哪些章重点、哪些略读、哪些跳过、预计每章花多久)。
- [思考题·锚点迁移] 本节提出"从已知锚点出发"的学习方法论。请回顾你过去学某个复杂主题的经历,分析你当时是否(无意识地)从某个已知锚点出发、那个锚点是什么、它如何加速(或因为没找到锚点而拖慢)了你的学习。把这个反思应用到本方向的学习上。
- [B 型·路线对照] 对照三条路线,列出它们的"共同核心"(三条都包含、且都较早学的内容)和"差异部分"(不同路线的独特侧重)。共同核心很可能是本方向最该优先掌握的——它是什么?为什么三条不同背景的路线都把它放在前面?
- [思考题·设计你的学习闭环] 本节给了一个"读动机→读理论→跑通→实现→填速记图"的五步学习闭环。请为你自己设计一个适配你情况的学习闭环——你会怎么安排理论与动手的交替?用什么资源?如何检验每章是否学到位?把它写成一个你能实际执行的、针对你的闭环。
§U6.5 组合多条路线:当不确定性从多个入口同时进入 ⭐⭐⭐¶
动机:真实问题很少只有一种不确定性¶
前四节大多在讨论"选哪一条路线",但 §U6.1 的陷阱已经点出:五条路线不是单选题,真实问题的不确定性常**同时从多个入口进入**。一个在烟雾中导航、要避开移动障碍、且撞击后果严重的机器人,同时面临感知不确定(U4)、离散意图不确定(U1)、尾部风险(U5)——硬选一条会顾此失彼。这一节讲如何**组合**多条路线。这是从"会用单条路线"走向"能解决真实问题"的关键一跃——真实机器人问题几乎从不只有一个干净的不确定性入口。
关键认识:五条路线守的是**不同入口**,而不同入口的不确定性在数学上往往**正交**——它们可以叠加,而非互斥。下面给几个有代表性的组合,说明组合的方式和它解决的问题。
在讲具体组合之前,先澄清一个重要观念:组合是真实问题的常态,单条路线够用反而是教学简化。教学里为了讲清每条路线,会给"干净"的单入口例子(纯感知不确定、纯有界扰动)——但真实机器人问题几乎总是多入口的。一辆自动驾驶车同时面临:他车意图(执行端)、定位噪声(动力学端)、感知遮挡(感知端)、撞车后果(评估端)——四个入口同时存在。如果你以为"学会五条路线 = 会处理真实问题",却不会组合,你会在真实问题前卡住(每条单独用都不够)。所以组合不是"进阶选修",而是"把五条路线用于真实问题"的必备能力。这一节的目标,就是让你从"会用单条路线"升级到"会组合多条路线处理真实的多入口问题"——这才是 Part-U 工具真正落地的样子。
几个有代表性的组合¶
组合一:U4 + U5 = 风险敏感的信念空间规划。U4 处理"看不清状态"(belief),U5 处理"尾部风险"。组合方式:在 belief 空间做规划,但目标 / 约束不用期望,而用 CVaR——对"belief 的不确定性 + 未来转移的随机性"联合施加 CVaR。直觉:把 U5 的 risk-averse Bellman 里的状态换成 belief、期望换成"对 belief + 转移的一步 CVaR"。它解决的问题:机器人既"知道自己看不清"(维护 belief),又"对看不清导致的尾部后果厌恶"(CVaR)——烟雾中导航的机器人既主动探索看清障碍、又对"belief 错误导致撞击"的尾部设防。这是 U4 进阶(风险敏感 POMDP)与 U5 的交汇。
组合二:U2 + U5 = CVaR-CBF / CVaR-Tube。U2 的 CBF / tube 处理有界扰动的安全,U5 的 CVaR 处理尾部。组合方式:把 CBF 的安全条件从"确定性的 \(h\ge0\)"或"最坏情况"换成"CVaR 意义下的裕量损失受控"(U5.5 的 CVaR-CBF)。它解决的问题:当扰动无界(最坏情况 CBF 不可行)、但又想要比"期望安全"更强的保证时,CVaR-CBF 在"对所有扰动安全"(鲁棒)和"高概率安全"(机会约束)之间给出可行的中间档。这是 U2 的安全工具与 U5 的风险度量的融合。
组合三:U1 + U5 = 风险感知的分支规划(如 MARC)。U1 枚举离散未来分支,U5 度量尾部风险。组合方式:在分支树上求解时,不用"期望代价",而用"分支上的 CVaR"——对"哪个分支会发生 + 分支内的随机性"施加风险敏感度量。它解决的问题:自动驾驶枚举他车意图分支时,不只看平均代价,还对"小概率但灾难性的分支"(如他车突然切入)加权——MARC(推荐篇 15)正是这个组合。
组合四:U3 + 分布不确定 = 分布鲁棒机会约束(DR-CC)。U3 假设知道扰动分布,但现实常连分布都估不准。组合方式:不对单一名义分布算机会约束,而对"离名义分布不超过某距离的一族分布"取最坏(Wasserstein DR-CC,选型表最后一行)。它解决的问题:sim-to-real 的分布偏移——训练时的扰动分布和部署时不一样,DR-CC 对这个偏移鲁棒。
组合五:U1 + U4 = 分支与 belief 的结合(如 EPSILON)。U1 枚举离散意图分支,U4 处理感知不确定(belief)。组合方式:在 belief 空间里做引导式分支——对方意图既是"离散多模态"(U1 的分支),又"看不清需要推断"(U4 的 belief)。EPSILON(必读 9)正是这个组合的代表:它形式上是 POMDP(U4),但用引导式分支(U1)在动作 + 观测空间高效求解,避免朴素 POMDP 的指数爆炸。它解决的问题:自动驾驶里"对方意图既多模态、又需从观测推断"——单用 U1(忽略推断)或单用 U4(不利用离散结构)都不如组合高效。
组合六:U2 + U3 的"半二选一"——分层使用。U2 和 U3 守同一入口(动力学端),通常二选一(§U6.1)。但它们也可以**分层**使用而非严格互斥:对"绝对不能违反的硬约束"(如不撞墙)用 U2 鲁棒(硬保证),对"可容忍偶尔违反的软约束"(如舒适性、能耗)用 U3 机会约束(不那么保守)。这不是在同一约束上叠加(那才是矛盾的),而是**对不同约束用不同路线**——硬约束鲁棒化、软约束概率化。这是 U2/U3 "二选一"的一个精细化:不是整个问题二选一,而是按约束的"硬度"分别选。
这六个组合覆盖了正交叠加(一、二、三、四)、感知+离散结合(五)、同入口分层(六)几种模式。它们共同说明:真实机器人问题的不确定性几乎总是多入口的,组合是常态而非例外——单条路线"够用"的干净问题,更多是教学里的简化。掌握组合,才算真正能处理真实问题。
组合的一般原则¶
不是任意两条路线都能简单叠加。组合的可行性取决于它们守的入口是否正交:
- 正交入口可叠加:感知端(U4)与评估端(U5)正交——"看不清"和"怕尾部"是两个独立维度,可叠加(组合一)。动力学端安全(U2)与评估端(U5)也可叠加(组合二)。
- 同入口需融合而非简单叠加:U2 和 U3 守同一个入口(动力学端),它们不是"叠加"而是"二选一或光谱过渡"(§U6.1 对比块——\(\delta\to0\) 时 U3 趋近 U2)。
- 风险度量(U5)是通用的"修饰符":U5 的 CVaR 可以作为目标 / 约束的风险度量,叠加到几乎任何其他路线上(U1+U5、U2+U5、U4+U5)——因为"用什么风险度量"是一个与"处理哪个入口"正交的选择。这是 U5 组合性最强的原因。
本质洞察:组合的可行性由"修改的是否优化问题的同一部件"决定——这把 §U6.1 的共同骨架直接用成了组合的判据。§U6.1 揭示五条路线各自修改优化问题的不同部件(U1 改未来假设、U2/U3 改约束、U4 改决策对象、U5 改目标度量)。这个共同骨架不只是个理解视角,它直接给出了组合的判据:改不同部件的路线可叠加,改同一部件的路线需二选一。U4(改决策对象)+ U5(改目标度量)可叠加,因为它们动的是优化问题的不同部分,互不冲突;U2 和 U3 都改"约束",是同一部件的两种改法(鲁棒化 vs 概率化),所以二选一而非叠加。U5 组合性最强,正因为"目标度量"这个部件相对独立——把期望换成 CVaR,不影响别的路线对未来 / 约束 / 决策对象的修改,所以 CVaR 能叠加到几乎任何路线上当"修饰符"。这个判据让"哪些路线能组合"从经验直觉变成了有依据的判断:看它们改的是不是同一部件。理解这一点,你设计组合时就不必死记"哪些能组合",而能从"它们改优化问题的哪个部件"推导出来——这正是 §U6.1 共同骨架视角的实用回报:它不仅帮你理解五条路线的统一性,还直接指导你如何组合它们。
组合的代价:复杂度从哪里来¶
组合不是免费的。把两条路线融合,求解的复杂度通常**乘性叠加**而非加性——这是组合前必须权衡的代价。
- U4 + U5(belief 上的 CVaR)的代价:单独 U4 已经面临 belief 空间爆炸(状态分布的维度),单独 U5 的 CVaR 需要对足够多的尾部样本估计。组合后,你要在 belief 树的每个节点上算 CVaR——belief 的不确定性和代价的随机性两层叠加,采样量 / 计算量是两者的乘积。这解释了为什么"风险敏感 POMDP"在理论上优雅、在大规模问题上却难——两个本就昂贵的东西相乘。
- U2 + U5(CVaR-CBF)的代价相对温和:CVaR-CBF 只是把 CBF 的安全条件换成 CVaR 形式(多了辅助变量 \(z\) 和 \(N\) 个场景变量),仍是一个凸 QP(U5.5)。它的代价是"原 QP + \(N+1\) 行约束",加性而非乘性——这是为什么 U2+U5 比 U4+U5 更易落地。
- 一般规律:组合的代价取决于两条路线的"复杂度来源是否相互放大"。U4 的复杂度来自状态 / belief 空间,U5 的来自尾部采样——它们相互放大(乘性);U2 的复杂度来自 QP 规模,U5 的辅助变量只是给 QP 加几行——不相互放大(加性)。组合前先判断:两条路线的复杂度来源会相乘还是相加?
这个"复杂度相乘还是相加"的判断, 直接影响组合的可行性。相加的组合(如 U2+U5)通常仍能实时求解, 可以放心用; 相乘的组合(如 U4+U5)可能爆炸到无法实时, 往往需要近似(采样、分解、降维)才能落地。所以面对一个多入口问题, 识别出该组合哪些路线后, 下一步就该判断这个组合的复杂度类型——相加则直接实现, 相乘则要预备近似手段。这个判断让你对组合的工程难度有提前的预期, 而非实现到一半才发现"算不动了"。
一个组合设计的决策流程¶
面对一个多入口问题,如何系统地设计组合方案?给一个流程:
- 识别所有入口:用选型决策树(§U6.2)逐个判断,列出问题**实际**存在的所有不确定性入口(不是所有可能的入口)。
- 判断入口正交性:检查这些入口是否正交(感知端 vs 评估端正交;动力学端内部 U2 vs U3 不正交,需二选一)。
- 选基础框架:选一条路线作为"主框架"——通常是最难处理、最核心的那个入口对应的路线(如感知是瓶颈就以 U4 为主框架)。
- 叠加修饰:把其他入口的工具作为"修饰"嵌进主框架——最常见的是把 U5 的 CVaR 作为主框架的风险度量(因为它组合性最强)。
- 评估代价:判断组合的复杂度是加性还是乘性(上一段),决定是否可行 / 需要近似。
举例:烟雾中导航(感知 U4 + 尾部 U5)——识别出感知端和评估端两个正交入口(步骤 1-2);感知是瓶颈,以 U4 为主框架(步骤 3);把 U5 的 CVaR 作为 belief 空间规划的风险度量(步骤 4);意识到这是乘性复杂度、需要采样近似(步骤 5)。流程走完,组合方案就定了。
一个三入口组合的完整走查¶
上面的例子是两入口(U4+U5)。再走一个更复杂的**三入口**例子,体会组合设计在复杂问题上如何展开。
场景:一辆自动驾驶车在繁忙路口左转——(a) 对向有车,意图(让 / 不让)不确定且离散;(b) 自车定位 + 对向车速度估计有高斯噪声;(c) 撞车后果灾难性。三类不确定性,三个入口。
走查(按五步流程): 1. 识别入口:(a) 是执行端的离散意图(U1 分支);(b) 是动力学端的概率噪声(U3 机会约束);(c) 是评估端的尾部(U5 CVaR)。三个入口。 2. 判断正交性:执行端(U1)、动力学端(U3)、评估端(U5)两两正交——它们改的是优化问题的不同部件(U1 改未来假设、U3 改约束、U5 改目标度量,§U6.1 共同骨架)。三者可叠加。 3. 选基础框架:对向意图的离散多模态是这个问题的核心结构,以 U1 分支为主框架——枚举"对向让 / 不让"两个分支,对每个分支规划。 4. 叠加修饰:在每个分支内,(i) 用 U3 把"碰撞"写成概率约束处理定位 / 速度噪声;(ii) 用 U5 的 CVaR 作为分支上的代价度量(而非期望),对"小概率但灾难"的分支加权(呼应组合三 MARC)。于是每个分支是一个 CC + CVaR 的优化,分支间用 CVaR 聚合。 5. 评估代价:U1 的分支数小(两个意图),U3 的概率约束是凸的,U5 的 CVaR 用辅助变量也是凸的——三者叠加后,每个分支是一个凸优化(CC + CVaR),分支数少。复杂度可控(不是 U4+U5 那种乘性爆炸),实时可行。
最终方案:分支树(U1)+ 每分支内 CC 避障(U3)+ 分支上 CVaR 聚合(U5)——一个三入口组合,对应自动驾驶里"意图多模态 + 噪声 + 灾难尾部"的真实复杂性。这个走查展示了组合设计在复杂问题上的完整展开:识别所有入口、确认正交、选主框架、叠加修饰、评估代价。MARC(推荐篇 15)正是这类"分支 + 风险敏感"组合的代表工作。
值得注意的是,这个方案**没有**用 U2(鲁棒)和 U4(POMDP)——因为这个场景里扰动不是"有界需硬保证"(是高斯噪声,U3 更合适)、状态也不是"看不清需推断"(假设传感器能看到对向车,只是有噪声,不是 POMDP 的感知盲区)。这呼应了组合的陷阱二:只组合问题真实存在的入口,不堆叠所有工具——这个场景是 U1+U3+U5 三入口,强加 U2/U4 只会增加无谓复杂度。
⚠️ 本节常见陷阱¶
💡 编程陷阱:组合实现时, 把两条路线的代码模块简单串联调用, 而非在一个优化问题里统一表达 - 现象 / 后果:实现 U4+U5 组合时, 写成"先调 POMDP 规划器得到一个动作, 再用 CVaR 模块调整它"这样的串联代码——两个模块各自优化各自的目标, 拼出来的结果既不是最优的 belief 决策, 也不是最优的风险敏感决策。 - 根本原因:组合的正确实现是在**一个统一的优化问题**里同时表达两条路线的修改(如 belief 空间上以 CVaR 为目标的优化), 而非两个独立优化的串联。串联实现里, 第一个模块不知道第二个模块的目标, 优化方向不一致, 拼接处会冲突。 - 正确做法:把组合表达成单一优化问题——确定决策变量、统一的目标(如 belief 上的 CVaR)、统一的约束, 用一个求解器解。代码结构上, 不是"模块 A 的输出喂给模块 B", 而是"构造一个同时包含 A 和 B 修改的优化问题, 一次求解"。这呼应了下面的概念误区(数学层融合 vs 结果层拼接), 但更具体到代码实现层面。
💡 概念误区:以为组合两条路线就是"分别跑两个规划器取交集" - 现象 / 后果:想组合 U4 + U5,就分别跑一个 POMDP 规划器和一个 CVaR 规划器,试图把结果拼起来——得到不一致甚至冲突的决策。 - 根本原因:正确的组合是在**数学层面融合**(如在 belief 空间用 CVaR 目标),而非在结果层面拼接。两个独立规划器各自优化不同目标,结果没有理由一致。 - 正确做法:组合 = 把一条路线的工具嵌进另一条的框架(U5 的 CVaR 度量嵌进 U4 的 belief 空间优化),形成一个**统一的优化问题**,而非两个独立问题的事后拼接。
🧠 思维陷阱:以为组合越多路线越好,盲目堆叠 - 现象 / 后果:想"全面覆盖",把 U1+U2+U3+U4+U5 全堆上,结果问题极度复杂、无法求解、也无必要。 - 根本原因:组合应该**只针对问题真实存在的不确定性入口**。如果你的问题只有感知端和评估端不确定,就只需 U4+U5;强加 U1(分支)、U2(鲁棒)只会增加无谓的复杂度。 - 正确做法:用选型决策树(§U6.2)识别问题**实际有哪些入口**,只组合对应的路线。组合的目的是覆盖真实存在的多个入口,不是"用上所有工具"。少即是多。
练习¶
- [思考题·设计组合] 为本节开头的"烟雾中导航 + 移动障碍 + 撞击严重"场景,设计一个完整的组合方案:用哪几条路线、它们各守哪个入口、如何在数学上融合(而非拼接)、最终是一个什么样的统一优化问题。
- [思考题·正交性判断] 判断以下组合是"正交可叠加"还是"同入口需二选一",并说明理由:(a) U2 鲁棒 + U4 POMDP;(b) U3 机会约束 + U5 CVaR;(c) U1 分支 + U4 POMDP。
- [B 型·组合的文献] MARC(推荐篇 15)是 U1+U5 的组合,CVaR-CBF(U5.5)是 U2+U5 的组合。请查阅其一,分析它具体如何在数学层面融合两条路线(不是拼接),并说明这个组合解决了单条路线解决不了的什么问题。
- [思考题·组合的代价] 本节指出 U4+U5 是乘性复杂度(难)、U2+U5 是加性复杂度(易)。请分析另一个组合(如 U1+U3、U1+U4)的复杂度是加性还是乘性——它们的复杂度来源(U1 的分支数、U3 的约束、U4 的 belief 空间)会相互放大吗?据此判断这个组合好不好求解。
§U6.6 五条路线的发展弧:从经典控制到 RL 交界 ⭐⭐¶
动机:理解一个领域,要看它从哪里来、往哪里去¶
前面的对照都是"横切面"的——五条路线此刻是什么样。但理解一个领域还需要"纵切面"——它如何演化至今、又往哪里去。看清发展弧,你就明白为什么五条路线长成现在的样子,也能判断它们的前沿在哪。
不确定性规划的五条路线有不同的"出生年代"和"成熟轨迹"。把代表性工作按时间排开,能看出整个领域的两条大趋势:从确定性走向风险敏感、从模型已知走向数据驱动——正是 §U6.3 二维图的两个轴在历史上的展开。
为什么要花一节看"发展弧",而不只看五条路线此刻的样子?因为**只看静态快照,你会误以为五条路线是"天生如此、彼此孤立"的**——但发展弧揭示它们是同一个领域在"逐步松绑理想假设 + 与学习融合"两条力量下演化出的产物,彼此有共同的演化逻辑。看清这一点有三个实际好处:判断一个方法的"现代位置"(它是奠基还是前沿、还有什么没解决)、预判领域往哪走(前沿在两条趋势的交汇)、识别机会(每条路线"未解决"的瓶颈就是机会)。静态快照告诉你"现在能用什么", 发展弧告诉你"领域往哪走、我能做什么"——后者对想做研究或长期投入这个方向的人尤其重要。
五条路线的发展时间线¶
把本章引用的代表工作按时间与路线排开(均为已核实的代表性节点):
| 年代 | 路线 | 代表工作 | 里程碑意义 |
|---|---|---|---|
| 1998 | U4 | Kaelbling–Littman–Cassandra POMDP 形式化 | POMDP 的标准数学框架 |
| 1999 | U5 | Artzner 等 一致性风险测度四公理 | 风险度量的公理化革命 |
| 2000 | U5 | Rockafellar–Uryasev CVaR 变分公式 | CVaR 可算化(LP) |
| 2005 | U2 | Mayne–Seron–Raković Rigid Tube MPC | tube MPC 理论奠基 |
| 2008 | U3 | Ono–Williams IRA 风险分配 | 机会约束求解的关键技术 |
| 2010 | U3 / U5 | Blackmore CC 路径规划;Ruszczyński 嵌套风险 | CC 系统化应用;时间一致 CVaR |
| 2013–17 | U4 | DESPOT(NeurIPS 2013 → JAIR 2017) | 在线 POMDP 的现代主力 |
| 2017 | U2 / U5 | Ames CBF-QP;Majumdar–Pavone 机器人风险六公理 | 安全滤波标准范式;风险度量机器人化 |
| 2017 | U5 | Bellemare 等 C51 分布式 Bellman | 分布式 RL 的开端(风险敏感学习化) |
| 2018 | U5 | Dabney 等 IQN;Chow 等 CVaR-CMDP | 分布式 RL 与风险敏感 RL 的交界 |
| 2020–22 | U2 / U1 | Hewing GP-MPC;Ding EPSILON | 数据驱动 MPC;交互式规划完整系统 |
| 2021 | U2 | Grandia 多层安全(MPC+CBF+WBC) | 腿足机器人的工程安全栈 |
两条大趋势¶
从这条时间线能读出整个领域演化的两条主线:
趋势一:从确定性 / 风险中性走向风险敏感。早期的规划与控制(经典 MPC、iLQR)是风险中性的——只优化期望,假设模型准。随着机器人进入安全攸关的真实场景,风险敏感成为刚需:U2(2005,对最坏情况鲁棒)、U3(2008,对违反概率设防)、U5(1999/2000 理论,2017+ 机器人化与学习化,对尾部设防)。这条趋势对应二维图的**纵轴上移**——越来越关心"不只是平均好,还要最坏不太差"。
趋势二:从模型已知走向数据驱动。早期方法都假设知道精确模型(tube 需要扰动集、POMDP 需要观测模型、CVaR-MPC 需要扰动分布)。随着深度学习兴起,数据驱动的变体涌现:GP-MPC(2020,用数据学模型残差)、分布式 RL(2017+,从交互学回报分布)、World Model(RSSM,从数据学 belief)、Neural MCTS(从数据学搜索引导)。这条趋势对应二维图的**横轴右移**——从"用手工模型解优化"到"从数据学一切"。
这两条趋势的**交汇处**正是当前最活跃的研究前沿:既风险敏感、又数据驱动(二维图右上)——CVaR-CMDP、WCSAC、Risk-Conditioned DSAC、分布鲁棒 RL。理解了这两条趋势,你就明白本方向的前沿不在某条单一路线的内部,而在"风险敏感 × 数据驱动"的交汇——这也是 §U6.3 六座桥(尤其桥 3/4/5/6)通向的地方。
这两条趋势背后有共同的深层动因: 机器人正从"受控的实验室 / 工厂环境"走向"开放的真实世界"。在受控环境里, 理想假设大致成立(模型准、扰动小、平均表现够), 经典风险中性、模型已知的方法就够用; 但真实世界充满了不确定(未知地形、突发扰动、罕见但严重的事故)和难以建模的复杂(接触、柔性、视觉)——这逼着方法变得风险敏感(应对真实世界的尾部风险)、变得数据驱动(应对难以手工建模的复杂)。两条趋势, 本质是机器人方法对"走向真实世界"这一大方向的响应。理解这个动因, 你就明白这两条趋势不是偶然的学术时尚, 而是机器人落地真实世界的必然要求——它们会持续, 因为真实世界的挑战不会消失。
每条路线的成熟轨迹¶
除了横跨五条路线的两条大趋势,每条路线**内部**也有自己的成熟轨迹——从最初的理论 / 简单版本,到现代的高效 / 通用版本。看清单条路线的内部演进,能帮你判断它"成熟到什么程度、还有什么没解决"。
- U1 分支:从手工枚举固定场景(早期 contingency planning)→ MPDM 的多策略评估(2015)→ EUDM/EPSILON 的引导式分支(2020-22,用引导减少分支爆炸)。轨迹:从"暴力枚举"到"智能引导",核心是对抗分支数爆炸。未解决:如何处理连续意图空间(不只离散几种)。
- U2 鲁棒:从 min-max 鲁棒 MPC(保守)→ tube MPC(2005,名义+管道解耦,降保守)→ CBF(2017,安全滤波)→ GP-MPC(2020,数据驱动降保守)→ 多层安全栈(2021,工程集成)。轨迹:从"过度保守"一路降保守、并工程化。未解决:无界扰动下的可行性、与学习的深度结合。
- U3 机会约束:从单约束 CC → IRA(2008,多约束风险分配)→ CC-RRT(2010,采样规划)→ 协方差导引(2018,主动控制不确定性)→ 分布鲁棒 CC(近年,应对分布不确定)。轨迹:从"单点概率约束"到"主动塑造不确定性 + 对分布鲁棒"。未解决:高维非高斯下的高效求解、C++ 生态。
- U4 POMDP:从精确求解(不可扩展)→ 点基方法 SARSOP(离线)→ 在线搜索 POMCP/DESPOT(2013-17,采样破维度灾)→ GPU 并行 HyP-DESPOT(2018)→ 神经引导 BetaZero(近年,深度 RL 融合)。轨迹:从"不可扩展"到"采样 + 并行 + 神经引导"步步突破规模。未解决:极大状态 / 观测空间、长时域。
- U5 风险敏感:从指数效用 LEQG(1972,γ 不直观)→ CVaR 公理化(1999-2000)→ 嵌套 CVaR(2010,时间一致)→ 机器人六公理(2017)→ 分布式 RL 学习化(2017+)→ CVaR-CMDP/DSAC(2018+,RL 融合)。轨迹:从"不直观的旋钮"到"公理化 + 可算化 + 学习化"。未解决:实时 C++ 部署、高 α 的尾部估计。
把五条轨迹并排,会发现一个共同模式:每条路线都经历了"理论奠基 → 对抗各自的扩展性瓶颈(分支爆炸 / 过度保守 / 求解难 / 维度灾 / 不直观)→ 与数据驱动 / 学习融合"的三段式演进。它们各自的瓶颈不同,但都在"变得更可扩展、更贴近真实、更与学习结合"的方向上前进。
对比性思维:横切面看五条路线(§U6.1-U6.5)是"此刻它们是什么样",纵切面看(§U6.6)是"它们怎么来、往哪去"——两个切面回答不同的问题。理解一个领域有两个互补的切面。横切面(前五节)是"静态快照"——此刻五条路线各是什么、如何对照、怎么选、怎么组合,回答"是什么 / 怎么用";纵切面(本节)是"动态演化"——它们从哪里来、各自的瓶颈、往哪里去,回答"怎么来的 / 往哪去"。像 / 不像:两个切面描述的是同一组五条路线,但视角正交——横切面固定时间看全貌(适合选型和应用),纵切面沿时间看演化(适合判断前沿和机会)。一个只有横切面认知的人,知道"此刻怎么用"但不知道"前沿在哪、领域往哪走"(容易停在当下、错过机会);一个只有纵切面认知的人,知道"历史脉络"但可能不擅长"具体选型"(纸上谈兵)。两个切面合起来,才是对一个领域的立体把握——既能用好当下的工具(横切面),又能判断未来的方向、找到机会(纵切面)。这也是为什么本章既有大量横切面的对照(§U6.1-U6.5),又专门有一节纵切面的发展弧(§U6.6)——它们共同给你对 Part-U 的完整认知。学任何领域都值得有这两个切面:既问"此刻是什么样",又问"怎么来的、往哪去"。
从历史预判未来:三个可能的方向¶
看清了演化模式,能帮你预判这个领域往哪走。基于"逐步松绑假设 + 与学习融合"的两条趋势,三个可能的方向:
- 方向一:风险敏感 × 数据驱动的深化。当前前沿(CVaR-CMDP、分布鲁棒 RL)还相对初步——理论保证(样本复杂度、收敛性)、更一般的风险测度(超越 CVaR 的谱风险)、连续控制的风险敏感(DSAC 的成熟)都在发展中。这条线会继续深化,把规控侧成熟的风险理论(畸变测度、对偶表示)和 RL 侧的学习能力更紧密地结合。
- 方向二:基础模型 / 大模型的引入。机器人领域正在经历"基础模型"浪潮。不确定性规划可能的变化:用大模型做不确定性下的高层决策(如从语言指令推断意图分支)、用学到的世界模型替代手工的动力学 / 观测模型(U2/U4 的模型来源从手工变成学习)、用大模型的常识缩小不确定性(如"这个场景下行人大概率会等待")。这会模糊"模型已知 vs 数据驱动"的二分。
- 方向三:从中立不确定性走向交互不确定性。随着多机器人系统、人机协作的普及,"对手 / 伙伴会反应"的交互不确定性越来越重要——这正是博弈规划的疆域。不确定性规划的工具会越来越多地与博弈结合(风险敏感博弈、不完全信息博弈的高效求解),本方向与博弈规划的边界会越来越多地被跨越。
这三个方向不是确定的预言,而是基于演化趋势的合理外推。它们的共同点是:不确定性规划不会停在"五条孤立路线",而会继续与学习融合、与博弈融合、被大模型重塑。理解这一点,你学 Part-U 时就不会把它当成一套封闭的、学完就定的知识,而是一个**正在演化、与多个领域交融的活的领域**——你学的五条路线是基础,但它们的边界和与其他领域的结合点,才是最活跃、最有机会的地方。
发展弧给学习者的两个启示¶
看清五条路线的发展弧,对你的学习有两个具体启示:
启示一:学经典,但要知道它的现代位置。五条路线的奠基工作(Mayne tube、Kaelbling POMDP、Rockafellar CVaR)是必学的——它们是理解后续一切的基础。但学它们时要知道它们在发展弧上的位置:它们是"起点",后续有大量发展(并行化、神经化、与 RL 融合)。只学奠基不知现代,你会停在历史;只追现代不懂奠基,你会根基不稳。正确的姿势是"以奠基为根、知现代为势"——学透经典,同时知道它演化到了哪。
启示二:机会在"未完成"处。发展弧上每条路线都有"未解决"的瓶颈(U1 的连续意图、U2 的无界扰动、U3/U5 的 C++ 空白、U4 的极大空间、U5 的尾部估计)。这些"未完成"正是机会所在——研究的机会(解决瓶颈)、工程的机会(填生态空白)。学习时留意每条路线的"未解决",你就知道了这个领域的"前沿在哪、我能做什么"。这比只学"已经解决的"更重要——已解决的是知识,未解决的是机会。
把发展弧和前面的横切面对照(§U6.1-U6.5 是"此刻五条路线是什么样",§U6.6 是"它们怎么来的、往哪去"),你就有了对 Part-U 的**立体认知**——既知道当下的全貌(横切面),也知道演化的脉络(纵切面)。横切面帮你选型和应用,纵切面帮你判断前沿和机会。两者合起来,才是对一个领域的完整把握。
本质洞察:五条路线的发展弧,是"机器人决策不断把更多不确定性纳入考量"的历史——从假设理想(模型准、风险中性)到逐步松绑每个理想假设。把时间线连起来看,整个领域的演化有一个清晰的方向:不断松绑"理想世界"的假设。最初的经典 MPC 假设了一个理想世界——模型精确、扰动可忽略、只需优化平均。然后每条路线松绑一个假设:U1 松绑"未来唯一"(承认多种可能)、U2 松绑"无扰动"(承认有界扰动)、U3 松绑"扰动可忽略"(建模概率扰动)、U4 松绑"状态可见"(承认看不清)、U5 松绑"只看平均"(关注尾部);再然后数据驱动变体松绑"模型已知"(从数据学)。像 / 不像:每条路线 / 每个变体都在松绑某个理想假设,让决策更贴近真实世界的不完美;区别是松绑的是哪个假设(哪个入口的理想化)。这个"逐步松绑理想假设"的视角,把五条路线和它们的数据驱动变体统一成一部历史——机器人决策从"在理想世界里求最优"一步步走向"在不完美的真实世界里做稳健决策"。理解这个方向,你不仅懂了五条路线的过去,也能预判未来:还有哪些"理想假设"没被充分松绑?(如"对手是中立的"——这正是博弈规划要松绑的,见结尾。)
⚠️ 本节常见陷阱¶
💡 概念误区:以为"更新的方法"一定"更好"、应该取代旧方法 - 现象 / 后果:看到发展弧上数据驱动方法(分布式 RL、World Model)比经典方法(tube MPC、POMDP)新,就以为新的更好、旧的过时该弃用。 - 根本原因:发展弧是"松绑假设"而非"取代"——数据驱动方法松绑了"模型已知"假设,但代价是需要大量数据 / 仿真、失去硬保证。在模型已知、要硬保证的场景,经典方法(tube MPC)仍是更好的选择,没有被取代。 - 正确做法:把新旧方法看成"适用不同设定"而非"优劣"。模型已知 + 要保证 → 经典方法(高效、有保证);无模型 + 有数据 → 数据驱动(通用)。发展弧增加了你的工具箱,不是让你扔掉旧工具。
🧠 思维陷阱:把"前沿在交汇处"误解为"只该学交汇处的方法" - 现象 / 后果:听说前沿在"风险敏感 × 数据驱动"的交汇(二维图右上),就只想学 CVaR-CMDP、WCSAC 等前沿方法,跳过基础的 tube MPC、POMDP、CVaR。 - 根本原因:交汇处的方法**建立在两条线的基础之上**——CVaR-CMDP 需要你同时懂 CVaR(U5)和 CMDP(Safe RL);不懂基础,前沿方法对你只是黑盒。 - 正确做法:前沿是"目标",基础是"路径"。要到达"风险敏感 × 数据驱动"的交汇,你得先分别掌握风险敏感(U5)和数据驱动(RL 基础),再到交汇。跳过基础直奔前沿,会卡在"知其然不知其所以然"。
练习¶
- [思考题·定位前沿] 本节说当前前沿在"风险敏感 × 数据驱动"的交汇(二维图右上)。请选一个你感兴趣的具体问题(如四足在未知地形行走),分析:它的"风险敏感"需求是什么、"数据驱动"需求是什么,以及一个同时满足两者的方法会是什么样(提示:参考桥 3/4 的 CVaR-CMDP / 分布式 RL)。
- [思考题·下一个被松绑的假设] 本节提出"逐步松绑理想假设"的视角。除了结尾要讲的"对手是中立的",你能想到机器人决策里还有哪些"理想假设"尚未被充分松绑吗?(如"奖励 / 代价函数已知准确"?"环境是静态的"?)选一个,设想松绑它会催生什么样的新方法。
- [B 型·画你自己的时间线] 从附录 A 的 27 篇里,选你最关心的一条路线,把它的相关论文(必读 + 推荐)按时间排成一条该路线的"内部发展线",标注每篇相对前一篇的进步是什么。这能帮你看清单条路线是如何一步步成熟的。
- [思考题·两条趋势的交汇点] 本节说前沿在"风险敏感 × 数据驱动"的交汇。请找一个具体的交汇方法(如 CVaR-CMDP、WCSAC、分布鲁棒 RL 之一),分析:它如何同时体现了"风险敏感"(哪条规控路线的思想)和"数据驱动"(哪种 RL 的能力),以及它相比纯规控 / 纯 RL 的优势在哪。
§U6.7 Part-U 的边界:五条路线没覆盖什么 ⭐⭐⭐¶
动机:知道工具的边界,和知道工具本身一样重要¶
前六节讲了五条路线能做什么、怎么选、怎么组合。但一个成熟的认知还需要知道它们**不能**做什么——Part-U 的边界在哪里。知道边界有两个价值:避免在边界外硬用五条路线(会失效)、知道边界外的问题该去哪个专题找答案。很多人学完一套方法后会有一种"它无所不能"的错觉, 倾向于把所有问题都往这套方法上套——这是危险的。一个真正掌握了某方法论的人, 标志之一恰恰是清楚它的边界: 知道在哪里它强大、在哪里它失效、失效后该转向什么。这一节就是为 Part-U 划清这条边界, 让你既充分用好它的强项, 又不在它的盲区里栽跟头。
这一节诚实地列出 Part-U 没有充分覆盖、或根本超出其范围的几类不确定性问题,并指出它们的归属。
边界一:策略性交互(→ 博弈规划)¶
这是最重要的边界,本章结尾会详谈。一句话:五条路线都把不确定性的来源当成**中立的自然**(不会因你而变),但当来源是**会观察你、针对你的对手**时,概率模型不够,需要博弈规划(把"最优"换成"均衡")。匝道博弈、机器人追逃、多机竞争资源、会适应你的人机协作——都在这条边界外。
边界二:模型 / 奖励本身的深层不确定(部分超出)¶
五条路线大多假设你知道"在优化什么"——代价 / 奖励函数是给定的。但有一类不确定性是**关于目标本身**的: - 奖励不确定 / 需要学:你不确定真正的目标是什么(如从人类示范中推断意图)——这是逆强化学习(IRL)/ 偏好学习的领域。U5 的风险敏感 IRL(U5 进阶)触及一点,但系统处理超出 Part-U。 - 模型结构未知:U2 的 GP-MPC 处理"模型参数 / 残差不确定",但假设模型结构已知(如已知是刚体动力学、只是参数不准)。如果连结构都未知(不知道该用什么方程),需要系统辨识 / 基于模型的 RL 的更深内容。
边界三:极长时域 / 层次化决策(部分超出)¶
五条路线大多面向"中短时域"的规划(MPC 的预测时域、POMDP 的有限前瞻)。对**极长时域**或**层次化**的决策: - 极长时域:随时域增长,分支爆炸(U1)、belief 空间爆炸(U4)、嵌套 CVaR 的复合保守(U5)都会恶化。极长时域常需层次化分解(高层目标 + 低层执行),这超出单层规划的范围。 - 层次化不确定性:不同层次(任务规划 / 运动规划 / 控制)有不同的不确定性,如何在层次间传递和处理不确定性,Part-U 没有系统覆盖(它聚焦单层)。
边界四:感知 / 表征本身(→ 感知与 SLAM 专题)¶
U4 处理"状态看不清",但它假设你已经有了一个**状态表征**和**观测模型**(\(O(o\mid s)\))。"如何从原始传感器数据得到状态表征""如何建观测模型"本身——属于感知、状态估计、SLAM 的领域。U4 站在它们的输出之上(belief 来自状态估计),但不覆盖如何产生这个表征。附录 C 的"SLAM → U4"衔接走查正是这条边界的接口。这条边界体现了机器人系统的一个普遍分工: 感知负责"理解世界是什么样", 规划 / 决策负责"基于这个理解该怎么做"。U4(以及整个 Part-U)处在"决策"这一侧——它消费感知的输出(状态估计 / belief / 观测模型), 据此做决策, 但不负责产生这些输出。把"感知"和"决策"分开, 是机器人系统设计的常见模块化——它让两边可以各自专注、各自发展。理解这条边界, 你就知道当问题出在"看不准 / 表征不对"时, 该去优化感知(SLAM / 状态估计)而非规划; 当感知没问题但"基于看到的该怎么做"出错时, 才是 Part-U 的事。分清是感知问题还是决策问题, 是排查机器人系统问题的第一步。
边界的意义:定位你的问题¶
把四条边界画出来,你就能给任何不确定性问题定位:
你的不确定性问题
│
├─ 来源是会针对你的对手? → 出界,去【博弈规划】
├─ 不确定的是"目标 / 奖励是什么"? → 部分出界,去【IRL / 偏好学习】
├─ 不确定的是"该用什么模型结构"? → 部分出界,去【系统辨识 / 基于模型 RL】
├─ 是极长时域 / 层次化决策? → 部分出界,需【层次化规划】
├─ 是"如何从传感器得到状态表征"? → 出界,去【感知 / SLAM】
└─ 是"已知模型 / 表征下,如何对中立不确定性做稳健决策"? → 正中 Part-U!用五条路线
最后一行才是 Part-U 的"主场"——已知模型 / 表征的前提下,对中立的(非策略性的)不确定性做稳健决策。五条路线在这个主场里威力强大;一旦你的问题落到前面几行(策略性对手、目标未知、模型结构未知、极长时域、表征问题),就该意识到你站在了 Part-U 的边界上,需要别的专题的工具。
边界外专题速览:出界了去哪¶
知道边界还不够,还要知道边界外的每片疆域大致是什么、解决什么。给一个速览(不展开,只让你知道"去哪找"):
- 博弈规划(最近的邻居):处理策略性交互——对手会观察你、针对你。核心从"最优"变"均衡"。本方向的工具会迁移升级(分支→博弈树、POMDP→贝叶斯博弈、CVaR→风险敏感均衡,见结尾)。这是 Part-U 最重要、最直接的延伸。
- 逆强化学习 / 偏好学习:处理"目标 / 奖励本身不确定"——从示范或反馈中推断真正的目标。当你不确定"在优化什么"(而非"如何在不确定下优化")时去这里。U5 的风险敏感 IRL 是两者的交点。
- 系统辨识 / 基于模型 RL:处理"模型结构未知"——不只是参数不准(U2 的 GP-MPC 能处理),而是连用什么方程都不知道。从数据中学动力学模型本身。
- 层次化规划 / 任务与运动规划(TAMP):处理极长时域 / 多层次决策——把"任务级目标"分解到"运动级执行",不同层次有不同的不确定性。当单层规划(MPC / POMDP 的有限前瞻)不够长 / 不够分层时去这里。
- 感知 / 状态估计 / SLAM:处理"如何从原始传感器得到状态表征"——产生 U4 所需的 belief 和观测模型。它在 U4 的"上游"(U4 消费它的输出)。
这个速览的作用:当本节的定位流程告诉你"出界了",你不仅知道"不该用五条路线",还知道"该去哪个专题"。机器人决策是一个大拼图,Part-U 是其中重要的一块(中立不确定性下的稳健决策),上面这些是相邻的几块——它们拼起来才是完整的"机器人在不确定、交互、未知目标的真实世界里如何决策"。
一个统一的视角:所有这些专题都在松绑某个"理想假设"¶
§U6.6 提到整个领域的演化是"逐步松绑理想假设"。把边界外的专题也纳入这个视角,会看到一个更大的统一图景——机器人决策的各个专题,本质是在松绑经典最优控制的不同理想假设:
| 被松绑的理想假设 | 对应专题 |
|---|---|
| 未来唯一 / 无扰动 / 状态可见 / 只看平均 | Part-U 五条路线(本方向) |
| 对手是中立的 | 博弈规划 |
| 目标 / 奖励已知 | 逆强化学习 / 偏好学习 |
| 模型结构已知 | 系统辨识 / 基于模型 RL |
| 单层 / 短时域 | 层次化规划 / TAMP |
| 状态表征已给定 | 感知 / SLAM |
这张表把机器人决策的众多专题统一成"松绑不同理想假设"的一个大家族。Part-U 松绑了"未来 / 扰动 / 感知 / 风险"四组假设(对应五条路线),其他专题松绑其余假设。理解这个统一视角,你就有了一张机器人决策的"全景地图"——知道每个专题在松绑什么、它们如何互补,也知道当你的问题违反某个理想假设时,该去哪个专题。这是比"掌握 Part-U"更高一层的认知:把 Part-U 放进机器人决策的整个版图里。
多视角理解:Part-U 的"边界"可以从"适用范围""与其他专题的接口""理想假设的松绑"三个角度看,每个角度给边界一层不同的意义。"边界"听起来是个限制,但从三个角度看,它有三层不同的意义:(1) 适用范围角度——边界划定了 Part-U 在哪里有效(主场:中立不确定性 + 已知模型 / 表征),让你知道何时信任这套工具、何时不滥用;(2) 接口角度——边界是 Part-U 与其他专题的衔接处(U4 接 SLAM、结尾接博弈),让你知道出界后去哪、如何与相邻专题协作;(3) 理想假设角度——边界对应"还没松绑的理想假设"(对手中立、目标已知、表征给定),让你看到 Part-U 在"逐步松绑假设"的大版图里的位置、以及下一步往哪松绑。像 / 不像:三个角度都在描述 Part-U 的"边界",但侧重不同——适用范围角度服务"会用不滥用"、接口角度服务"出界知道去哪"、理想假设角度服务"看清在版图里的位置"。一个成熟的认知会综合这三个角度看边界:它既是范围(信任 / 不滥用的依据)、又是接口(与其他专题协作的衔接)、又是版图坐标(在松绑假设的大家族里的位置)。理解"边界的多重意义",你就不会把边界当成消极的"限制",而看成积极的"定位"——它定位了 Part-U 能做什么、与谁协作、在更大图景里处于何处。这正是从"会用一个专题"到"理解一个专题在领域中的位置"的认知升级。
边界不是缺陷,而是清晰的适用范围¶
一个重要的认知调整:Part-U 有边界,不是它的"缺陷",而是它有**清晰的适用范围**——这恰恰是一个成熟方法论的标志。没有哪个方法论能解决所有问题;好的方法论知道自己的范围、在范围内做到最好、在范围外诚实地交给别的工具。Part-U 在"中立不确定性下的稳健决策"这个范围内是强大而完备的(五条路线覆盖了这个范围的各个入口),范围外它清楚地指向博弈、IRL、SLAM 等专题。
这种"有清晰边界"的认知,对你实际用 Part-U 很重要:它让你**既充分信任、又不滥用**这套工具。充分信任——在主场内(已知模型 / 表征、中立不确定性),放心用五条路线,它们经过了充分的理论和工程检验;不滥用——一旦问题越界(策略性对手、目标未知、表征问题),不硬套五条路线(会得到前提错误的答案,§U6.7 陷阱二),而是识别出"这超出 Part-U 了",转向正确的专题。
知道一个工具的边界,和知道工具本身同样重要——甚至更重要。因为"知道工具能做什么"让你会用它,"知道工具不能做什么"让你不会误用它、不会在它失效时还浑然不觉。很多实际的失败不是因为不会用工具,而是因为在工具失效的场景里还在用它而不自知。Part-U 的这一节(边界)、以及结尾(最重要的边界:博弈),就是为了让你对这套工具的范围有清醒的认识——这是从"会用工具"到"善用工具"的关键一步。
⚠️ 本节常见陷阱¶
💡 概念误区:把"Part-U 没覆盖"误解为"这些问题不重要" - 现象 / 后果:因为本方向不讲博弈 / IRL / 层次规划,就以为它们是次要的、可忽略的。 - 根本原因:Part-U 的范围是"中立不确定性下的稳健决策"这一个(虽然重要的)切片,不代表切片外的问题不重要——恰恰相反,策略性交互、目标学习等是同等重要、甚至更前沿的领域,只是属于别的专题。 - 正确做法:把 Part-U 看成机器人决策大图景的一块,而非全部。它的边界外有同样重要的疆域(博弈、IRL、层次规划),由其他专题覆盖。知道边界是为了知道何时该跨出去找别的工具,不是贬低边界外的问题。
🧠 思维陷阱:在边界外硬用五条路线,得到"看起来能跑但本质错误"的方案 - 现象 / 后果:遇到策略性交互(该用博弈),硬用 U1 分支套一个固定概率,得到一个能跑出数字、但在对手真实反应下表现很差的方案——而且因为它"能跑",你可能意识不到它本质错了。 - 根本原因:五条路线在边界外不会"报错",它们会给你一个**形式上合法但前提不成立**的答案(如给策略性对手赋固定概率,数学上能算,但那个概率本就不该是固定的)。能跑 ≠ 正确。 - 正确做法:先判断问题是否在 Part-U 主场内(用本节的定位流程)。如果在边界外,意识到"硬用五条路线会得到前提错误的答案",转向正确的专题。判断边界,是用对工具的前提。
练习¶
- [思考题·给你的问题定位] 拿一个你关心的真实机器人不确定性问题,走一遍本节的定位流程。它落在 Part-U 主场内,还是某条边界外?如果在边界上(部分出界),说明它哪部分能用五条路线、哪部分需要别的专题。
- [思考题·识别"形式合法但前提错误"] 本节陷阱二提到"在边界外硬用五条路线会得到形式合法但前提错误的答案"。请举一个具体例子(除了匝道博弈):一个本质在某条边界外的问题,被硬套某条路线后,会在什么前提上出错、导致什么实际后果。
- [B 型·边界的接口] 边界不是隔离墙,而是接口——Part-U 常与边界外的专题协作(如 U4 接 SLAM 的状态估计、U5 的风险敏感 IRL 接 IRL)。选一条边界,说明 Part-U 的工具如何与边界外专题的工具**协作**(谁提供什么、谁消费什么),而非互相取代。
- [思考题·松绑的下一步] 本节的统一视角把众多机器人决策专题看成"松绑经典最优控制的不同理想假设"。请选一个 Part-U 已松绑的假设(如"状态可见"→U4),分析:在它被松绑后,是否又引入了新的理想假设(如 U4 假设"观测模型已知")?这个新假设又对应哪个专题去松绑?体会"松绑一个假设、常又依赖另一个假设"的层层递进。
§U6.8 一页纸总览:五条路线的全景速记 ⭐⭐¶
动机:把整个方向压缩到一张能随时回忆的图¶
学完六个综合小节,知识量已经不小。这一节做一件事:把整个 Part-U 压缩成一张**能随时在脑海里调出的全景图**——当你面对一个新问题、或要给别人讲清五条路线时,能凭这张图快速回忆全貌。好的"速记"不是省略细节,而是给细节一个紧凑的、可展开的索引结构。
为什么压缩成一张图如此重要?因为**人的工作记忆有限**——你没法同时在脑子里展开五条路线的所有细节。但你可以记住一个紧凑的"索引结构"(几十行的速记图),需要某条路线的细节时,从对应槽位"展开"到完整内容(回对应章节)。这就像目录之于书——你不背全书, 但记住目录就能快速定位任何内容。速记图就是 Part-U 的"目录 + 关键词":它本身很小、能整个装进脑子, 但每个槽位都是通往完整内容的索引。掌握它, 你就有了一个随身的、可快速调用的 Part-U 全景——这比"读过但记不全"或"要用时现翻"都强得多。
全景速记图¶
不确定性规划(Part-U)= 在"中立自然"的不确定性下做稳健决策
│
│ 统一组织维度:不确定性从哪个【入口】进入决策?
│ 统一骨架:不确定性修改确定性优化的哪个【部件】?
│
├─ U1 分支/场景 ┃ 入口=执行端(未来分支) ┃ 改"未来假设" ┃ 语言=分支树
│ ┃ 何时用=离散可枚举意图 ┃ 代表=EPSILON ┃ 局限=分支爆炸
│ ┃ RL 桥=MCTS ┃ C++=中
│
├─ U2 鲁棒/Tube ┃ 入口=动力学端(有界扰动) ┃ 改"约束(鲁棒化)" ┃ 语言=有界集
│ ┃ 何时用=有界扰动+硬保证 ┃ 代表=Tube MPC/CBF ┃ 局限=过保守/无界不可行
│ ┃ RL 桥=对照基线 ┃ C++=高(acados/OCS2)
│
├─ U3 机会约束 ┃ 入口=动力学端(概率扰动) ┃ 改"约束(概率化)" ┃ 语言=概率约束
│ ┃ 何时用=有分布+容忍小概率违反 ┃ 代表=CC-MPC/IRA ┃ 局限=盲于严重程度
│ ┃ RL 桥=CMDP ┃ C++=极低(原创空间)
│
├─ U4 POMDP ┃ 入口=感知端(状态不可见) ┃ 改"决策对象(→belief)" ┃ 语言=belief
│ ┃ 何时用=看不清+需主动探索 ┃ 代表=DESPOT ┃ 局限=计算最贵
│ ┃ RL 桥=World Model/Neural MCTS ┃ C++=高(DESPOT/SARSOP)
│
└─ U5 CVaR ┃ 入口=评估端(代价尾部) ┃ 改"目标度量(→风险)" ┃ 语言=畸变风险
┃ 何时用=灾难性尾部 ┃ 代表=CVaR-MPC/IQN ┃ 局限=尾部估计难/部署空白
┃ RL 桥=分布式RL/CVaR-CMDP ┃ C++=极低(原创空间)
组合:正交入口可叠加(U4+U5);同入口二选一(U2/U3);CVaR 是通用修饰符
边界:策略性对手→博弈;目标未知→IRL;表征→SLAM
两条趋势:风险中性→风险敏感;模型已知→数据驱动;前沿在交汇(右上)
这张图把每条路线压缩成六个关键槽位:入口 / 改哪个部件 / 语言 / 何时用 / 代表 / 局限 / RL桥 / C++成熟度。记住这个槽位结构,你就能对任意一条路线快速回忆它的全部关键信息——而不是记一堆零散事实。
注意这张图的"分层"设计: 主体是五条路线各自的槽位(每条一行), 底部三行是"跨路线"的信息(组合规则、边界、趋势)。这个分层对应了本章的认知结构——先理解每条路线(主体), 再理解它们之间的关系(组合 / 边界)和整体的演化(趋势)。当你调用这张图时, 也按这个层次: 先在主体里定位到相关路线(选型), 需要时再查底部的跨路线信息(要不要组合? 是否出界? 前沿在哪?)。这种"个体 + 关系"的分层, 让一张紧凑的图同时承载了"五条路线各是什么"和"它们如何构成一个整体"两层信息。
给不同读者的一句话总结¶
- 给工程师:先用选型决策树(§U6.2)按入口定位,再看 C++ 生态(能买就买 U2/U4,要建就建 U3/U5 的专门逻辑),别在边界外(策略性对手)硬用五条路线。
- 给研究者:原创空间在 U3/U5 的 C++ 空白、在"风险敏感 × 数据驱动"的交汇(六座桥的双向启发是产生想法的系统方法)。
- 给学生:从已知锚点出发选学习路线(§U6.4),理论与动手交替,用本章的综合视角(入口 / 骨架 / 二维图 / 六座桥)把五条路线连成网而非散学。
- 给所有人:五条路线的本质是"不确定性修改确定性优化的五个部件",它们守不同入口、可正交组合、有共同边界(中立自然 vs 策略性对手)。
速记图的三种实战用法¶
这张全景速记图不是用来背的,而是用来"调用"的。三个典型的实战场景:
- 场景一:面对新问题做选型。在脑海里调出速记图,沿"入口"这一行扫——我的不确定性从哪个入口进来?定位到对应路线后,看它的"何时用 / 局限"槽位确认匹配,看"C++"槽位判断落地难度。整个过程几十秒,比翻查文档快得多。这是速记图最高频的用法。
- 场景二:向别人讲清五条路线。无论是面试、组会还是教学,被问"不确定性规划有哪些方法、怎么选",你可以照着速记图的结构讲——先讲"按入口组织"的框架(让听者有个挂靠结构),再逐条讲每条路线的几个槽位。有结构的讲解远比罗列方法清晰。
- 场景三:定位一篇新论文 / 一个新方法。读到一个不在五条路线里的新方法,用速记图给它定位——它守哪个入口?改优化的哪个部件?和哪条路线最近?有没有 RL 桥?是不是在边界上?这样新方法就被纳入你已有的结构,而非孤立的新信息。
三种用法的共性:速记图提供了一个**稳定的挂靠结构**,让"选型 / 讲解 / 定位新知识"都有章可循。这就是为什么值得花力气记住它——它不是又一堆要背的事实,而是一个能反复调用、辅助思考的工具。
如何真正记住这张图:主动重构而非被动重读¶
记住速记图的最好方法不是反复看它,而是**主动重构**:合上本章,自己凭理解把它默画出来(§U6.8 练习 1)。默画时卡住的槽位,正是你理解的薄弱点——回去补那个点,而非整张重读。重复几次"默画 → 查漏 → 补缺",这张图就刻进了你的认知,且因为是你亲手重构的、记得格外牢。这比被动重读有效得多——被动重读会产生"我看过、我懂了"的错觉,主动重构才暴露你真正不会的地方。这个"主动重构"的方法不只适用于这张图,也适用于本章所有的对照表和框架——学习的检验标准是"能不能自己重建",而非"看着眼熟"。
多视角理解:全景速记图可以当"选型工具""讲解脚本""学习检查表"三种东西用,同一张图服务三种不同的需求。这张速记图不是单一用途的——它能从三个角度被使用:(1) 当**选型工具**——面对新问题时调出它,沿入口行扫、看槽位、查边界,几十秒得出选型起点(前面的演练);(2) 当**讲解脚本**——要向别人讲清五条路线时,照它的结构讲(先讲入口框架、再逐条讲槽位),有条理不遗漏;(3) 当**学习检查表**——学习时用它检查"我还有哪个槽位填不出"(默画练习),暴露薄弱点。像 / 不像:三种用途用的是同一张速记图,但服务不同需求——选型时它是"决策辅助"、讲解时它是"表达框架"、学习时它是"自检清单"。这揭示了好的知识结构的一个特点:它是多用途的——一个真正抓住领域骨架的结构,能在选型、讲解、学习等多个场景被反复调用,而非只在单一场景有用。这也是为什么值得花力气构建并内化这张图——它不是一次性的笔记,而是一个能在你职业生涯里反复服务多种需求的工具。一张图,三种用途,这就是结构化知识的复利。
用速记图做一次完整选型的演练¶
把速记图用起来——演练一次完整的"调用速记图做选型",看它实战中如何工作。
问题:一个仓库 AGV(自动导引车)在有人走动的仓库里运货,需要避开工人,定位靠地面二维码(较准但偶有读数丢失),撞到人不可接受。
调用速记图(在脑海里,几十秒): 1. 扫"入口"行:工人走动 → 有移动障碍。是离散意图(U1)还是连续不确定?工人的运动更接近"连续不确定 + 偶发变向",不是几种清晰的离散意图,所以不强是 U1。定位偶有丢失 → 短暂的感知缺失,但不是持续看不清(U4 的 belief 是针对持续的状态不可见),更像偶发噪声。撞人不可接受 → 评估端的灾难尾部(U5)。 2. 定位主入口:核心是"撞到人不可接受"(评估端,U5)+ "工人运动 / 定位有不确定"(动力学端的概率扰动,U3)。 3. 看"何时用 / 局限"槽位确认:U5 适合"灾难尾部"✓;U3 适合"概率扰动 + 可容忍小概率"——但这里"撞人不可接受"接近硬要求,U3 的"高概率"可能不够,要么用很小的 \(\delta\)、要么叠加 U5 控尾部严重程度。 4. 看"C++"槽位判断落地:U3/U5 都是 C++ 空白——意识到要么用 CVXPY 原型、要么自己在 acados 上实现(§U6.2)。 5. 看"边界":工人会不会"针对" AGV 博弈?一般仓库工人不会刻意和 AGV 博弈(不是策略性对手),所以在 Part-U 主场内,不需博弈。
选型结论(几十秒得出):以 U3 机会约束为基础(处理工人 / 定位的概率不确定)+ 叠加 U5 的 CVaR(因为撞人是灾难尾部,要控严重程度而非只控概率);落地上先用 CVXPY 原型验证,再考虑 C++ 实现;问题在 Part-U 主场内。
整个过程几十秒,全靠脑海里的速记图——不用翻文档、不用查表。这就是速记图的实战价值:把选型从"翻资料的查找"变成"调结构的推理"。熟练后,面对任何不确定性问题,你都能在几十秒内用速记图走一遍、得出一个可靠的选型起点。这种"内化的结构 + 快速调用",正是从"学过"到"会用"的标志。
对比性思维:用速记图选型 vs 翻查文档选型——前者是"调用内化结构",后者是"外部查找",效率与可靠性天差地别。同样是做选型,两种方式截然不同:翻查文档 / 表格是"外部查找"——遇到问题去翻资料、对照条目、拼凑答案,慢且容易遗漏(没翻到的就想不到);用速记图是"调用内化结构"——问题一来,脑海里的结构自动展开(扫入口行、看槽位、查边界),快且全面(结构保证不漏关键维度)。像 / 不像:两者都能得出选型结论;但外部查找依赖"资料在手 + 逐条对照"(慢、可能不全),内化结构依赖"结构在脑 + 自动展开"(快、系统)。更深的区别是:外部查找时你是"资料的搬运工"(找到什么用什么),内化结构时你是"结构的驾驭者"(主动用框架分析)。这个对比解释了为什么本章花力气让你**内化**速记图(§U6.8 练习的"默画 + 主动重构"),而非只是提供一张可查的表——可查的表谁都能用,但只有内化成脑海里的结构,才能在面对真实问题时快速、系统、不遗漏地分析。从"会查表"到"有结构",正是从初学者到熟练者的分水岭。这也适用于本章所有的框架(入口判断、六座桥、边界定位)——它们的价值不在"作为资料被查阅",而在"被内化为思考的结构"。
本质洞察:能把一个方向压缩成一张"槽位结构"的速记图,是真正掌握它的标志——掌握不是记住所有细节,而是拥有一个能生成 / 索引所有细节的紧凑结构。很多人以为"学会"是记住了大量事实,但事实会忘、会过时。真正的掌握是拥有一个**紧凑的结构**,能从中重新生成或快速索引细节——就像这张速记图,它本身只有几十行,但每个槽位(入口 / 部件 / 语言 / 局限 / 桥)都是一个可展开的索引,指向对应章节的完整内容。像 / 不像:速记图和"知识点清单"都试图浓缩知识;但清单是扁平的事实堆叠(记住就是全部),速记图是有结构的索引(每项可展开、且项与项之间有关系——入口决定部件、部件决定组合性)。理解这个区别,你学任何方向都该问:我能把它压缩成一张有结构的速记图吗?如果能,说明你抓住了它的骨架;如果只能列出一堆不相关的事实,说明你还停在记忆而非理解。这张全景速记图,就是 Part-U 的"骨架"——记住它,五条路线的所有细节都能从中调出。
练习¶
- [B 型·默画速记图] 不看本节,凭记忆默画一遍五条路线的全景速记图(至少填出每条路线的"入口 / 语言 / 何时用 / 局限"四个槽位)。画完对照,检查哪些槽位模糊——模糊的地方就是你理解的薄弱点,回到对应章节补。
- [思考题·你的一句话总结] 本节给了工程师 / 研究者 / 学生的一句话总结。请写出**属于你自己**的一句话总结——基于你的背景和目标,你从整个 Part-U 最该带走的一句话是什么?
- [思考题·速记结构迁移] 本节的"槽位结构速记"是一种通用的知识压缩方法。请为你学过的另一个领域(任意)设计一张类似的槽位结构速记图,并反思:设计这张图的过程,是否帮你发现了那个领域里你原本没注意到的结构 / 关系?
- [B 型·用速记图做选型] 仿照本节"用速记图做一次完整选型的演练",为一个你自己设想的机器人不确定性场景,用速记图走一遍完整选型(识别入口 → 定位主入口 → 确认匹配 → 判断落地 → 检查边界),写出几十秒能得出的选型结论。这是检验你是否真的把速记图内化为可调用工具的最直接练习。
附录 A:论文精读路线(按重要性排序)¶
这是一份按重要性排序的精读清单。它不是穷举式的文献综述,而是一条"从奠基到前沿"的路线——读完必读的 12 篇,你就掌握了五条路线各自的理论根基;再读推荐的 15 篇,你就触及了每条路线的现代发展与交叉。每篇都标注了它属于哪条路线、解决了什么核心问题。
为什么给一份"精选 + 排序"的清单, 而非完整的文献列表? 因为完整列表对初学者是负担而非帮助——面对成百上千篇论文, 你不知道从哪读起、哪些是根基、哪些是枝节。一份精选清单的价值在于它替你做了筛选和排序: 27 篇覆盖了五条路线的奠基(必读)和现代发展(推荐), 按"先根基后前沿"排列, 让你有限的阅读时间花在最有价值的论文上。这不是说其他论文不值得读, 而是说这 27 篇是高效进入这个领域的"主干道"——读完它们, 你有了坚实的骨架, 再按需扩展到其他论文就轻松了。
必读论文(12 篇)¶
这 12 篇是五条路线的"奠基石",每条路线 2–3 篇,覆盖其核心思想的源头。
按路线分组的精读顺序(不要从 1 到 12 线性读,按你的学习路线挑对应组):
- U1 分支组:EPSILON(9,完整系统,先读它建立全局)→ 配合推荐篇 MPDM(13)、EUDM(14)理解演进。
- U2 鲁棒组:Mayne tube(1,理论奠基)→ Ames CBF(2,安全滤波)→ Grandia 多层安全(11,工程集成)→ 配合 GP-MPC(10)理解数据驱动变体。
- U3 机会约束组:Ono IRA(3,风险分配)→ Blackmore CC 路径(4,应用)→ 配合 CC-RRT(20)、协方差导引(19)。
- U4 POMDP 组:Kaelbling(5,标准形式化)→ Somani DESPOT(6,现代主力)→ 配合 HyP-DESPOT(21)、POMCPOW(23)理解扩展。
- U5 风险敏感组:Artzner 四公理(7,理论根基)→ Rockafellar CVaR(8,可算化)→ Majumdar–Pavone 机器人六公理(12)→ Ruszczyński 嵌套(24,多步)→ 配合 CVaR-CMDP(25)、IQN(27)理解 RL 桥。
这个分组让你能"沿一条路线读透"——而不是横跨五条路线跳读,那样容易因缺乏单条路线的连贯理解而事倍功半。先按你选的学习路线(§U6.4)读对应组,再按兴趣扩展到其他组。
- Mayne, Seron, Raković(Automatica 2005) — Rigid Tube MPC 奠基。把"名义系统 + 不变管道"的思想形式化,是 U2 鲁棒 MPC 的理论起点。读它理解"如何把扰动装进有界集、用管道解耦"。
- Ames, Xu, Grizzle, Tabuada(IEEE TAC 2017) — CBF-QP 安全滤波器奠基。把控制障碍函数与 QP 结合,成为 U2 安全滤波的标准范式。读它理解"如何把安全条件写成 QP 约束、投影任意标称控制到安全集"。
- Ono & Williams(AAAI 2008) — IRA 迭代风险分配。解决"总违反概率如何分配到多个约束",是 U3 机会约束求解的关键技术。读它理解"风险预算的对偶分配"(桥 2 的规控侧)。
- Blackmore, Ono, Williams(IEEE T-RO 2011) — 机会约束最优路径规划。把机会约束系统地用于路径规划,是 U3 的代表性应用。读它理解"如何在概率约束下规划最优路径"。
- Kaelbling, Littman, Cassandra(AIJ 1998) — POMDP 标准形式化。POMDP 的经典定义与理论框架,是 U4 的理论基石。读它理解"belief 空间、观测模型、belief update 的标准形式"。
- Somani, Ye, Hsu, Lee(JAIR 2017) — DESPOT。在线 POMDP 求解的里程碑(确定化稀疏 belief tree + 正则化),是 U4 的现代主力、C++ 生态的核心。读它理解"如何用采样场景把 POMDP 树搜索做得实时可行"。 6′. (DESPOT 早期版本发表于 NeurIPS 2013,JAIR 2017 为期刊完整版,arXiv:1609.03250。)
- Artzner, Delbaen, Eber, Heath(Math. Finance 1999) — 一致性风险测度四公理。把"什么样的风险度量讲道理"公理化,是 U5 的理论根基。读它理解"单调 / 平移不变 / 正齐次 / 次可加四公理、为什么 VaR 出局"。
- Rockafellar & Uryasev(J. Risk 2000) — CVaR 变分公式。把 CVaR 写成可优化的凸形式(辅助变量 → LP),是 U5 可算化的关键。读它理解"如何把 CVaR 嵌进优化而不破坏凸性"。
- Ding, Zhang, Chen, Shen(IEEE T-RO 2022) — EPSILON 完整系统。一个基于 POMDP 的交互式驾驶规划系统,用引导式分支高效求解,是 U1/U4 的工程集大成。读它理解"如何把分支 / POMDP 思想做成能上路的完整系统"。
- Hewing, Kabzan, Zeilinger(IEEE TCST 2020) — GP-MPC(Cautious MPC)。用高斯过程学模型残差、嵌进 MPC,是 U2 应对"模型不确定 + 在线学习"的代表。读它理解"如何用数据驱动地修正模型并保持谨慎"。
- Grandia, Taylor, Ames, Hutter(ICRA 2021) — Multi-Layered Safety(MPC + CBF + WBC)。把 MPC、CBF、全身控制组成多层安全栈,是 U2 在腿足机器人上的工程范式。读它理解"如何分层组合不同时间尺度的安全机制"。
- Majumdar & Pavone(ISRR 2017) — 机器人风险评估六公理。把 Artzner 四公理扩展到机器人序贯决策(加共单调可加 + 律不变),是 U5 的机器人化理论。读它理解"机器人语境下风险度量该满足的额外公理、畸变风险测度"。
推荐论文(15 篇)¶
这 15 篇是每条路线的现代发展与交叉,读完它们你就从"懂奠基"走到"知前沿"。
- Cunningham, Galceran, Eustice, Olson(ICRA 2015) — MPDM(多策略决策)。U1 分支规划的代表,把决策建模成在有限策略集上的前瞻评估。
- Zhang, Ding, Chen, Shen(ICRA 2020) — EUDM。在 MPDM 基础上引入引导式分支,是 EPSILON 的前身。U1。
- Li, Zhang, Liu, Shen(RA-L 2023) — MARC。风险感知的多模态规划,把风险度量融入分支规划。U1 与 U5 的交叉。
- Lucia & Engell(J. Proc. Control 2013) — Multi-stage NMPC(多阶段 NMPC)。用场景树处理不确定性的 NMPC,是 U1 在过程控制的代表。
- Herbert 等(CDC 2017 / TAC 2021) — FaSTrack。用可达性分析做"快速规划 + 慢速安全追踪"的解耦,是 U2 可达性方法的代表。
- Torrente, Kaufmann, Foehn, Scaramuzza(RA-L 2021) — 四旋翼的数据驱动 MPC。用高斯过程补偿空气动力学,是 U2 GP-MPC 在无人机的落地。
- Okamoto, Goldshtein, Tsiotras(IEEE CSL 2018) — 机会约束 + 协方差导引。把 CC 与协方差控制结合,是 U3 协方差导引的代表。
- Luders, Kothari, How(AIAA GNC 2010) — CC-RRT。把机会约束融入 RRT 采样规划,是 U3 在采样规划的代表。
- Cai, Luo, Hsu, Lee(RSS 2018) — HyP-DESPOT。DESPOT 的 GPU 并行版,是 U4 大规模在线 POMDP 的代表。
- Lee, Cai, Hsu(RSS 2021) — MAGIC。学习 macro-action 加速 POMDP 规划,U4 与学习的交叉。
- Sunberg, Kochenderfer(ICAPS 2018) — POMCPOW。处理连续观测 / 动作空间的 POMDP 在线求解,是 U4 在连续空间的代表。
- Ruszczyński(Math. Programming 2010) — Markov 风险测度。把 CVaR 做成时间一致的嵌套形式(risk-averse Bellman),是 U5 多步风险的理论核心。
- Chow, Ghavamzadeh, Janson, Pavone(JMLR 2018) — CVaR-CMDP。把 CVaR 约束融入 MDP 的策略优化,是 U5 与 Safe RL 的桥(桥 3)。
- Bellemare, Dabney, Munos(ICML 2017) — C51 分布式 Bellman。学整个回报分布的开端,是 U5 学习化(分布式 RL)的起点。
- Dabney, Ostrovski, Silver, Munos(ICML 2018) — IQN。学整个分位函数、通过 τ 重采样实现任意风险态度,是 U5 与分布式 RL 交界最深处(桥 4)。
怎么读这些论文:三遍法 + 抓主线¶
27 篇是不小的量,盲目逐字读会效率低下。给一个适配本方向的读法。
三遍法:第一遍只读摘要 + 引言 + 结论 + 图,目标是回答"它解决什么问题、属于哪条路线、核心想法一句话是什么"(10-15 分钟);第二遍读方法和实验,目标是理解"它的核心机制怎么工作、和同路线前作比进步在哪"(1-2 小时);第三遍逐式推导 + 对照代码(如果有),目标是"能自己复现 / 实现核心"(半天到数天,只对你要深入的少数论文做)。绝大多数论文做到第二遍即可,只对你的研究 / 项目核心的几篇做第三遍。
抓主线:读每篇时,主动把它挂到本章的结构上——它守哪个入口(§U6.1)?它的第一语言是什么?它在该路线的成熟轨迹上处于哪一段(§U6.6)?它和 RL 有没有桥(§U6.3)?带着这四个问题读,你不会读完就忘——每篇都被定位到你已有的知识网里。
读的顺序:按"按路线分组的精读顺序"(本附录前面)沿单条路线读,而非从 1 到 27 线性读。先把你最关心的一条路线(按学习路线 §U6.4 选)的必读篇读到第二遍,建立这条路线的连贯理解,再扩展到其他路线。
一个具体的"读论文笔记模板"(每篇记五行):(1) 一句话问题;(2) 守哪个入口 + 第一语言;(3) 核心机制(一段);(4) 相比前作的进步;(5) 有无 RL 桥 / 局限。按这个模板记,27 篇读完你就有了一份结构化的、可随时回查的文献笔记——而非一堆读过就忘的 PDF。
怎么判断一篇论文的分量:四个问题¶
文献海量,不是每篇都值得深读。读到一篇本清单之外的新论文时,用四个问题快速判断它的分量、决定投入多少时间:
- 它解决的问题真实且重要吗? 是真实的痛点(如 CVaR 实时部署),还是为了发表造的伪问题?真问题的论文值得深读。
- 它的进步是"实质"还是"增量"? 是开辟新思路 / 大幅提升(如 DESPOT 让在线 POMDP 可行),还是在已有方法上调参 / 小改?实质进步值得深读,纯增量看看摘要即可。
- 它的假设 / 适用范围是什么? 很多论文的"提升"建立在很强的假设上(如只对线性系统 / 高斯噪声)。看清假设才知道它在你的问题上是否适用——假设太强 / 不匹配你的场景,再漂亮也用不上。
- 它有没有可复现的代码 / 实验? 有开源代码、实验充分的论文更可信、更易上手;纯理论无验证的要谨慎(可能有未暴露的实践问题)。
这四个问题(真问题?实质进步?假设?可复现?)能帮你在文献海里快速筛选——把深读的时间留给"真问题 + 实质进步 + 假设匹配你 + 可复现"的论文,其余快速扫过。这对做研究尤其重要:读得多不如读得准,把精力集中在真正有分量、且与你相关的工作上。
这份清单之外:如何持续跟踪¶
本清单截至 2026 年初,但领域在演进。持续跟踪的建议:(1) 盯几个核心实验室 / 会议——本方向的核心组(致谢里列的 NUS AdaComp、Stanford ASL、ETH 等)和会议(RSS、CoRL、ICRA、L4DC、NeurIPS / ICML 的相关 workshop);(2) 顺着引用链——找到一篇你关心的近期论文,看它引用了谁(往前追根基)、被谁引用(往后看发展);(3) 关注综述——领域每隔几年会有综述(如机器人不确定性规划、Safe RL 的综述),是快速更新全局认知的捷径。跟踪不求全,求"在你关心的方向上不掉队"。
用这份清单服务不同目标¶
同一份 27 篇清单,不同目标的读者该用得不同:
- 想快速上手做项目:只读你选的路线的必读篇(2-3 篇)的第一、二遍,配合附录 D 的代码动手。不必读推荐篇、不必读其他路线——快速上手不需要全面,需要的是"够用且能动手"。
- 想系统掌握整个方向:按"按路线分组的精读顺序"读完全部必读篇(12 篇)的第二遍,推荐篇按兴趣选读。这给你五条路线的完整理论骨架。
- 想做研究:把你方向的必读 + 推荐篇都读到第二遍、核心几篇读第三遍(能复现),并用"四个问题"持续筛选跟踪最新论文。研究需要深度 + 前沿跟踪。
- 想教学 / 讲解:读必读篇建立全局,重点理解每篇"解决什么问题、核心想法",这样你能用"问题 → 想法"的方式讲清每个方法,而非堆砌公式。
这份清单不是"必须全读"的任务,而是"按目标取用"的资源。明确你的目标(上手 / 系统 / 研究 / 教学),按上面的建议取用对应的部分和深度——读得准比读得多重要。一个常见的错误是不分目标地"想把 27 篇都读完读透",结果耗时巨大却不聚焦;正确的做法是按目标聚焦在该读的部分上。
> 本质洞察:这 27 篇按"五条路线 × 从奠基到前沿"组织,读完就有了 Part-U 的完整文献骨架。一份好的阅读清单不是论文的堆砌,而是一张有结构的地图——这 27 篇的结构是"五条路线,每条从奠基(必读)到现代发展(推荐)"。必读 12 篇给你五条路线的理论根基(Mayne 的 tube、Ames 的 CBF、Ono 的 IRA、Kaelbling 的 POMDP、Artzner 的公理、Rockafellar 的 CVaR……);推荐 15 篇给你每条路线的现代发展与交叉(HyP-DESPOT 的并行、CVaR-CMDP 的 RL 桥、IQN 的分布式实现……)。按这个结构读,你不会迷失在文献海里——每读一篇,你都知道它在"五条路线 × 发展阶段"的二维网格里的位置。这也呼应全章的组织哲学:用结构化的地图(而非线性的列表)来组织知识,让每个知识点都有可定位的坐标。建议读法:先按你选的学习路线(§U6.4)读对应路线的必读篇,再按需读推荐篇——而不是从 1 到 27 线性读。¶
附录 B:推荐学习路线(速查)¶
三条学习路线(速成 6 周 / 完整 12–15 周 / RL 优先 8 周)的详细安排已在 §U6.4 给出,包含每条路线适合谁、各周学什么、跳过什么、以及背后的"从已知锚点出发"方法论。这里仅作速查索引:
| 路线 | 时长 | 适合 | 起点 | 跳过 |
|---|---|---|---|---|
| 速成 | 约 6 周 | 已有 MPC 经验 | U2(最接近已知的 MPC) | U1(按需后补) |
| 完整 | 约 12–15 周 | 零基础、时间充裕 | U1(按编号系统学) | 无 |
| RL 优先 | 约 8 周 | 已有 RL 背景 | U5/U4(与 RL 交界最深) | 无(但顺序大调) |
详细周安排与裁剪建议见 §U6.4。一个共同核心:三条路线都把 U2(鲁棒 MPC) 放在较前——它集合论最直观、C++ 生态最成熟,是建立"处理不确定性"工程手感的最佳起点(§U6.4 练习 3 让你思考为什么)。
三条路线的取舍对照(帮你在选路线时一眼看清差异):
| 维度 | 速成(6 周) | 完整(12–15 周) | RL 优先(8 周) |
|---|---|---|---|
| 前提 | 已有 MPC 经验 | 零基础 / 时间充裕 | 已有 RL 背景 |
| 起点 | U2(最像已知的 MPC) | U1(按编号) | U5/U4(与 RL 交界最深) |
| 顺序逻辑 | 按工程实用度 | 按逻辑分类 | 按与 RL 的距离 |
| 覆盖 | 跳过 U1 | 全覆盖 | 全覆盖但顺序大调 |
| 适合产出 | 快速工程能力 | 系统教育 | 打通规控-RL |
| 风险 | 缺 U1(多模态) | 耗时长 | 规控基础可能不牢 |
如何在三条之间选:(1) 你已经懂 MPC、想快速上手 → 速成;(2) 你零基础、有充裕时间想系统学 → 完整;(3) 你懂 RL、想理解规控并打通两者 → RL 优先。三者不是非此即彼——更常见的是以一条为主、借鉴另一条(如以速成为主,但补上 RL 优先路线强调的"六座桥"对照)。§U6.4 的个性化裁剪走查给了一个混合裁剪的完整例子。
学习路线之外的两个通用建议:(1) 配一个动手项目贯穿始终——选一个你关心的机器人场景(如一个 2D 导航 / 一个无人机避障),每学一章就用该章的方法解决它一次,到最后你就有了五个版本的对比(这就是累积项目的精神);(2) 维护一份"速记图"(§U6.8)——每学完一章,把它填进全景速记图的对应槽位,学完五章你就有了一张亲手构建的、记得牢的全景图。
学习中的里程碑检验:怎么知道自己学到位了?给几个可检验的里程碑——
- 学完单章的里程碑:能跑通该章累积项目的模块、能复述该章方法的"动机 → 反面 → 核心"、能说出它的固有局限(什么时候不该用)。三者都做到,这一章才算过关(这正是 §U6.4 学习自检清单的内容)。
- 学完三章的里程碑:能对照已学的几条路线说清它们的区别(用 §U6.1 的五对辨析检验)、能对一个新问题判断该用已学的哪条。能做到说明你不只在"积累孤立知识",而在"建立路线间的联系"。
- 学完全部的里程碑:能做本章小结的"六件事"(讲清关系、做选型、建vs买决策、规控-RL迁移、规划学习、放进版图)。这是整个方向的掌握标志。
这些里程碑让"我学到哪了"变得可检验——而非凭"我读过了"的模糊感觉。每到一个里程碑做一次检验,没过的地方就是该回补的地方。
学习常见问题答疑:(1) 没有 C++ / ROS 基础能学吗? 理论部分能学(本方向的数学不依赖特定语言),但动手部分(尤其 U2/U4 的 C++ 项目)会吃力——建议先补 C++ / ROS 基础,或先用 Python 项目(do-mpc / pomdp_py)动手。(2) 数学基础要多好? 需要凸优化、概率、线性代数的基础(前置假设里有),U4/U5 还需一点测度 / 分布的概念——不足的地方边学边补即可,不必等数学全通了再开始。(3) 学完能做什么? 能为机器人不确定性问题选型、能用成熟工具(U2/U4)落地、能在 U3/U5 的空白处做原创、能与 RL 打通——具体看你走哪条路线、投入多深。
附录 C:与其他大纲的衔接点¶
不确定性规划是**横切(cross-cutting)专题**——它不属于任何单一方向,而是为所有方向提供"如何处理不确定性"的通用工具。这张表列出五条路线与项目内其他专题 / 方向的衔接点,帮你把本方向的知识接到你已有或将学的其他内容上。
| 大纲 | 衔接章节 | 衔接说明 |
|---|---|---|
| v8 SLAM 主线(NLS 求解) | U2, U3 | Ceres NLS vs OSQP QP vs SOCP:同一套"约束优化求解器"谱系,SLAM 的非线性最小二乘与 MPC 的 QP、CC 的 SOCP 共享底层数值方法 |
| v8 SLAM 主线(因子图) | U2, U4 | GTSAM 因子图的块三对角结构 ≅ MPC 的 KKT 块三对角 ≅ POMDP 的 belief tree——稀疏结构的同构 |
| v8 SLAM 主线(状态估计) | U4 | SLAM 的状态估计本质就是 belief update 的工程实现——卡尔曼 / 因子图维护的就是对状态的信念 |
| 无人机方向(MPC 增量) | U2 | 无人机的 rpg_mpc → 加 GP 残差 = GP-MPC;加 tube 约束收紧 = Tube MPC——本方向 U2 是无人机 MPC 的"不确定性升级" |
| 无人机方向(RL 增量) | U5 | 无人机的 PPO 基线 → Distributional PPO + CVaR → Risk-Sensitive RL——本方向 U5 是无人机 RL 的"风险敏感升级" |
| 四足方向(OCS2 / legged_control) | U2 | 四足的 OCS2 MPC → Grandia 的 CBF + MPC 三层安全栈(必读 11)——本方向 U2 是四足 MPC 的"安全层" |
| 机械臂方向(MoveIt2) | U3, U4 | 机械臂的抓取不确定性 → CC 避障(U3)/ Grasping POMDP(U4)——本方向为机械臂提供处理抓取 / 避障不确定性的工具 |
| 博弈规划(横切专题二) | U1, U3 | 贝叶斯博弈 = 不完全信息下的 POMDP 的博弈版;CVaR 可嵌入博弈目标——本方向是博弈规划的"前置"(见本章结尾) |
| 博士前数学专题(李群) | U2 | SO(3)/SE(3) 李群用于 CBF 的相对度计算——数学专题为 U2 的 CBF 提供几何工具 |
| 博士前数学专题(流形概率) | U4, U5 | 李群上的概率分布 → belief(U4)的几何表示、风险度量(U5)在流形上的推广 |
本质洞察:不确定性规划作为横切专题,它的价值在于"一套工具服务所有方向"——衔接点越多,越说明它是通用基础设施而非孤立专题。看这张表会发现,五条路线几乎接到了项目里每一个方向(SLAM、无人机、四足、机械臂、博弈)和数学专题。这不是巧合——不确定性是所有机器人系统的共性问题(四足的地形、无人机的风扰、机械臂的抓取、自驾的意图),底层数学工具是同一套。这正是把不确定性规划设为"横切专题"而非"某方向的子章节"的原因:与其在每个方向里各讲一遍"如何处理不确定性",不如抽出来讲一次通用的,再让各方向接进去。理解这个"横切"定位,你就明白本方向的学习投资回报极高——它不服务单一方向,而是给你一套能迁移到任何机器人问题的不确定性处理能力。这也是为什么本方向的衔接点如此密集:通用基础设施天然连接万物。
两个具体的衔接走查,让"横切"不停留在抽象:
走查一:把 SLAM 的状态估计接到 U4 的 belief。如果你学过 v8 SLAM 主线,你已经在用卡尔曼滤波 / 因子图维护"对机器人位姿的估计 + 不确定性(协方差)"。这恰恰就是 U4 的 belief——只是 SLAM 通常只估计、不做"主动收集信息的规划"。把 SLAM 的状态估计(belief 的来源)接上 U4 的 belief-space 规划(基于 belief 决策、主动探索),你就从"被动估计"走到了"主动感知规划"——这是 Active SLAM 的核心,也是 SLAM 主线与本方向 U4 的精确接口(附录 C 第三行)。
走查二:把无人机 MPC 升级成 U2 的 GP-MPC / Tube MPC。如果你做过无人机的 MPC(如 rpg_mpc),你有一个名义动力学模型 + MPC 求解器。本方向 U2 给你两条升级:(a) 加 tube 约束收紧 = Tube MPC——让 MPC 对有界风扰有硬保证;(b) 加高斯过程学模型残差 = GP-MPC——让 MPC 自动修正"名义模型和真实空气动力学的差"。两条升级都不推翻你已有的 MPC,而是在它上面加一层不确定性处理(附录 C 第四行)。这说明本方向的工具是"即插即用的升级包",接到你已有的方向能力上即可。
这两个走查印证了横切专题的工作方式:不是另起炉灶,而是给你已有的方向能力(SLAM 估计、无人机 MPC)装上不确定性处理的升级。你在某个方向的积累越多,本方向的工具能接的点就越多、回报就越大。
再补三个衔接走查,覆盖更多方向:
走查三:把四足的 OCS2 MPC 升级成多层安全栈(→ U2)。如果你做过四足(OCS2 / legged_control),你有一个 MPC 在规划质心 / 足端轨迹。本方向 U2 给你 Grandia 的多层安全升级(必读 11)——在 MPC 之上加 CBF 层(保证状态约束)、再加 WBC(全身控制执行)。三层各管不同时间尺度的安全:MPC 管中期轨迹、CBF 管即时安全裕量、WBC 管力矩级执行。这不推翻你的 OCS2 MPC,而是在它上下各加一层,组成完整的安全栈(附录 C 第六行)。
走查四:把机械臂抓取的不确定性接到 U3 / U4。如果你做过机械臂抓取(MoveIt2),抓取有两类不确定性:物体位姿不确定(感知端,接 U4 的 Grasping POMDP——在"物体在哪"的 belief 上规划抓取,必要时换视角看清)、运动过程的避障不确定(动力学端,接 U3 的 CC 避障——把"碰撞"写成概率约束)。一个抓取任务可能同时用到两者(U4 处理"抓哪""怎么抓"的感知不确定,U3 处理"移动过程"的避障)——这又是一个多入口组合(§U6.5)的实例(附录 C 第七行)。
走查五:把分支 / POMDP 接到博弈规划(→ 下一专题)。如果你学完本方向,U1 的分支和 U4 的不完全信息 POMDP 是通向博弈规划的直接接口——博弈把 U1 的分支升级成博弈树(分支概率→对方策略)、把 U4 的 POMDP 升级成贝叶斯博弈(状态不确定→对方类型不确定)。这个衔接是本章结尾"通向博弈规划"详谈的(附录 C 第八行)——它说明本方向不只接"上游"的方向(SLAM / 无人机 / 四足 / 机械臂),也接"下游"的专题(博弈)。
五个衔接走查覆盖了 SLAM、无人机、四足、机械臂、博弈——印证了附录 C 表格的密集衔接点:不确定性规划作为横切专题,向上接各方向的已有能力(给它们装不确定性升级)、向下接博弈等后续专题(做它们的前置)。它在整个项目的知识图谱里是一个高度连接的枢纽节点,这正是横切专题的本质。
衔接的双向性:你带来什么、你获得什么¶
衔接是双向的——从其他方向 / 专题来到 Part-U,你带来已有能力;从 Part-U 回到它们,你获得不确定性处理的升级。把这个双向关系理清,能帮你规划"先学什么、后学什么":
- 从 SLAM 来 → 你带来"状态估计 / belief",获得"基于 belief 的主动规划"(U4)。SLAM 给你 belief 的来源,U4 教你在 belief 上决策。学过 SLAM 再学 U4,事半功倍(belief 概念已熟)。
- 从某方向的 MPC 来 → 你带来"MPC 求解能力",获得"不确定性下的 MPC"(U2/U3/U5)。你已会解 MPC,U2/U3/U5 教你给它加鲁棒 / 概率 / 风险。学过 MPC 再学这三条,是直接的升级。
- 从 RL 来 → 你带来"策略学习",获得"规控侧的对照与桥"(§U6.3)。你已会 RL,本方向教你规控侧的对应、以及如何在两者间迁移。
- 去博弈规划 → 你带来"分支 / POMDP / CVaR",获得"策略性交互下的升级版"(结尾)。你在 Part-U 学的会迁移升级到博弈。
这个双向关系给一个学习规划的启示:Part-U 最好在"已有某个方向的规划-控制经验"之后学(前置假设也这么要求)——因为那时你有可衔接的已有能力(MPC / 状态估计),Part-U 的工具能接上去、立刻产生价值;反之,没有任何方向经验就学 Part-U,工具悬空、不知道接到哪。同样,Part-U 最好在博弈规划**之前**学——它是博弈的前置(分支 / POMDP / CVaR 会升级到博弈)。所以 Part-U 在学习路径上的位置是:"至少一个方向经验之后、博弈规划之前"——这正是它作为横切专题、衔接上下游的定位决定的。
衔接表怎么用:从你的背景出发¶
这张衔接表(附录 C 开头)不是用来通读的,而是用来"从你的背景定位入口"的。具体用法:
- 你做过 SLAM → 看 SLAM 相关的衔接行,发现 U4(belief = 你已熟悉的状态估计的规划版)是你最自然的入口。
- 你做过某方向的 MPC(无人机 / 四足)→ 看 MPC 相关的衔接行,发现 U2/U3/U5(给你的 MPC 加鲁棒 / 概率 / 风险)是直接的升级。
- 你做过 RL → 看 RL 相关的衔接行,发现 §U6.3 的六座桥是你理解规控的钥匙。
- 你要学博弈规划 → 看博弈相关的衔接行,发现 U1/U4 是博弈的前置,该先学。
用法的核心是**反查**——不是从"五条路线"出发问"它们接到哪",而是从"你已有的背景 / 你要去的方向"出发问"我该从哪条路线入手"。这张表是一个双向索引:既能从 Part-U 查到它接哪些方向,也能从你的背景查到该学 Part-U 的哪部分。后一种用法(从你的背景反查)对规划学习更实用——它直接告诉你"以你的起点,Part-U 的哪条路线最该先学、最容易上手"。
衔接表的更大意义在于:它让你看到 Part-U 不是孤立的一座知识岛,而是机器人技能网络里的一个枢纽——它连接着你已有的方向能力(上游)和你将去的专题(下游)。学它不是学一个孤立的东西,而是在你的机器人技能网络里补上一个高连接度的枢纽节点,让你已有的能力(SLAM / MPC / RL)通过它互相连通、并向上生长(到博弈等高级专题)。这正是横切专题的价值——它是网络的枢纽,连得越多,你的整个技能网络就越强。
附录 D:开源项目快速参考表¶
这张表按优先级列出五条路线的代表开源项目,供你动手实践时快速定位。优先级(★)综合考虑了项目质量、社区活跃度、文档完善度和教学价值。理论学得再透,不动手永远停在"知道"而非"会做"——而动手的第一步是找到对的代码起点。这张表的作用就是把你从"想动手但不知道用什么"直接带到"这个项目、这个语言、对应这一章"。
说明:下表的"语言""License""对应章节"是相对稳定的信息;项目的活跃度、星标数等会随时间变化,且本项目的调研截至 2026 年初——动手前请到对应 GitHub 仓库核对最新状态。这里不列具体星标数(它们变化快且容易过时),改用相对的优先级与活跃度描述。
| 优先级 | 项目 | 仓库(org/repo) | 语言 | License | 对应章节 |
|---|---|---|---|---|---|
| ★★★★★ | DESPOT | AdaCompNUS/despot | C++ | GPL-3.0 | U4 |
| ★★★★★ | acados | acados/acados | C / Python / MATLAB | BSD-2 | U2 |
| ★★★★★ | OCS2 | leggedrobotics/ocs2 | C++ | BSD-3 | U2 |
| ★★★★★ | EPSILON | HKUST-Aerial-Robotics/EPSILON | C++ / ROS | GPLv3 | U1 |
| ★★★★☆ | POMDPs.jl | JuliaPOMDP/POMDPs.jl | Julia | MIT | U4 |
| ★★★★☆ | do-mpc | do-mpc/do-mpc | Python | LGPL | U1, U2 |
| ★★★★☆ | legged_control | qiayuanl/legged_control | C++ / ROS | BSD | U2 |
| ★★★★☆ | Crocoddyl | loco-3d/crocoddyl | C++ / Python | BSD-3 | U2 |
| ★★★★☆ | OmniSafe | PKU-Alignment/omnisafe | Python | Apache-2 | U5 |
| ★★★★☆ | SARSOP | AdaCompNUS/sarsop | C++ | GPL | U4 |
| ★★★☆☆ | HyP-DESPOT | AdaCompNUS/hyp-despot | C++ / CUDA | GPL-3.0 | U4 |
| ★★★☆☆ | TinyMPC | TinyMPC(CMU / MIT) | C++ | MIT | U2 |
| ★★★☆☆ | MPCC | alexliniger/MPCC | C++ / MATLAB | Apache-2 | U2 |
| ★★★☆☆ | CasADi | casadi/casadi | C++ / Python / MATLAB | LGPL | U2, U3 |
| ★★★☆☆ | CVXPY | cvxpy/cvxpy | Python | Apache-2 | U3, U5 |
| ★★★☆☆ | highway-env | Farama-Foundation/HighwayEnv | Python / Gym | MIT | U1 |
| ★★★☆☆ | OPPT | RDLLab/oppt | C++ | MIT | U4 |
| ★★★☆☆ | pomdp_py | h2r/pomdp-py | Python / Cython | MIT | U4 |
| ★★★☆☆ | hj_reachability | StanfordASL/hj_reachability | JAX | MIT | U2 |
| ★★☆☆☆ | Safety-Gymnasium | PKU-Alignment/safety-gymnasium | Python | MIT | U5 |
| ★★☆☆☆ | Drake | RobotLocomotion/drake | C++ / Python | BSD-3 | U3 |
| ★★☆☆☆ | TAPIR | RDLLab/tapir | C++ | MIT | U4 |
用法:按你正在学的章节(最右列)筛选,从 ★★★★★ 开始上手。注意优先级与 §U6.2 的 C++ 生态成熟度一致——U2(acados / OCS2 / Crocoddyl)和 U4(DESPOT / SARSOP / OPPT)项目最多最成熟,U3(几乎只有通用凸优化工具 CasADi / CVXPY,没有专门的 CC 库)和 U5(OmniSafe / Safety-Gymnasium 偏 RL 侧,没有原生 CVaR-MPC 的 C++ 库)的专门项目稀少——这再次印证 U3/U5 的 C++ 空白与原创空间。
对比性思维:开源项目的分布印证了 §U6.2 的判断——U2/U4 项目密集、U3/U5 项目稀疏,且 U3/U5 的项目偏 Python / RL 侧而非 C++ 实时侧。数一数各章对应的项目:U2 和 U4 各有四五个高质量项目(含多个 ★★★★★),U3 几乎只能借用通用凸优化工具(CasADi、CVXPY、Drake——没有一个是"专门做机会约束"的),U5 的项目(OmniSafe、Safety-Gymnasium)都偏 RL / Python 侧、没有原生的实时 C++ CVaR-MPC。像 / 不像:五条路线都有"对应的开源项目",但 U2/U4 的项目是"专门、成熟、C++ 实时"的,U3/U5 的项目是"通用、偏原型、Python"的。这个分布不是随机的——它精确反映了 §U6.2 的成熟度判断(U2/U4 高、U3/U5 低),也指向同一个原创机会(U3/U5 缺的正是"专门的、实时 C++ 的"实现)。从"有哪些开源项目"这个具体角度,你能独立验证 §U6.2 那张抽象的成熟度表——证据是一致的:想填空白,就去做 U3/U5 缺的那种"专门 + 实时 C++"项目。
如何选你的第一个动手项目:面对二十多个项目,初学者容易不知从何下手。给一个简单的决策:
- 目标是"快速建立能力、跑出结果" → 从 ★★★★★ 且文档完善的项目起:acados(U2,MPC 的事实标准,教程多)或 DESPOT(U4,在线 POMDP,有清晰示例)。这两个是"安全的第一选择"——成熟、有文档、社区活跃,不会让你卡在环境配置上。
- 目标是"理解算法细节" → 选轻量、可读的:do-mpc(Python,U1/U2,代码清晰易读,适合理解多阶段 / 鲁棒 MPC 的实现)或 pomdp_py(Python,U4,POMDP 概念清晰)。轻量项目让你能读懂全部代码,而非淹没在大型框架里。
- 目标是"做原创贡献" → 不是选现成项目,而是去填 U3/U5 的空白:基于 CasADi/acados(U2 的基础设施)实现一个机会约束或 CVaR 的 MPC,或基于 OmniSafe(U5 的 RL 侧)做风险敏感 RL 的工程化。这类项目难,但填的是真实缺口。
无论选哪个,第一步都一样:先把它的官方示例跑通(不改任何代码),确认环境配置正确、你能复现作者的结果,再开始改 / 读 / 扩展。跳过这一步直接改代码,是初学者最常见的挫败来源——你会分不清"是我改错了"还是"环境本来就没配好"。
项目的上手难度梯度:不同项目的上手难度差异很大,按"从易到难"排个梯度,帮你循序渐进而非一上来就啃最难的:
| 难度 | 代表项目 | 难在哪 | 适合阶段 |
|---|---|---|---|
| 入门 | do-mpc, pomdp_py, CVXPY | 纯 Python、文档好、概念清晰 | 刚接触,先建立概念 |
| 中等 | acados(Python 接口), DESPOT | 需配 C++ 环境,但有教程 | 有基础,要做实际 MPC/POMDP |
| 中高 | OCS2, Crocoddyl, legged_control | 大型 C++/ROS 框架,配置复杂 | 做腿足 / 复杂机器人 |
| 高 | HyP-DESPOT(CUDA), 自建 CC/CVaR-MPC | 需 GPU / 从零实现专门逻辑 | 性能优化 / 原创贡献 |
建议路径:从入门级的 Python 项目(do-mpc / pomdp_py)建立概念 → 中等级的 acados / DESPOT 做实际项目 → 按方向需要上中高级框架(腿足用 OCS2)→ 最后才碰高难度的 GPU 优化或自建专门库(原创)。不要一上来就啃 OCS2 或自建 CVaR-MPC——那是有了前面基础后的进阶,直接上会卡在环境 / 工程细节上,消磨信心。
一个常见的环境配置避坑清单:(1) 严格按项目 README 的版本要求装依赖(C++ 项目尤其对编译器 / 库版本敏感);(2) 优先用项目提供的 Docker / conda 环境(如果有),避免污染系统环境;(3) 先跑最小示例、再跑复杂示例,逐步确认;(4) 遇到编译 / 运行错误,先查项目的 issue(大概率别人遇到过),而非自己硬调。这些不是本方向特有的,但 U2/U4 的 C++ 项目对环境格外敏感,值得提前知道。
怎么判断一个开源项目值不值得用¶
GitHub 上同类项目常有多个,怎么挑?除了本表的 ★ 评级,自己评估时看几个信号:
- 最近更新时间:还在维护吗?最后一次提交是几个月前还是几年前?活跃维护的项目遇到问题有人管、跟得上依赖更新。停更几年的项目(即使曾经很好)可能与现代环境不兼容、issue 无人回。
- 文档与示例:有没有清晰的安装文档、API 文档、可运行的示例?文档质量直接决定你的上手成本——一个算法再好但文档缺失的项目,可能让你花数倍时间在"搞懂怎么用"上。
- issue / PR 活跃度:issue 有人回吗?回得及时吗?这反映社区是否健康、你遇到问题能否得到帮助。
- 被引用 / 被依赖情况:有多少其他项目 / 论文用它?被广泛使用的项目通常更可靠、更经得起检验(很多人踩过坑并修复了)。
- License 是否符合你的用途:GPL(传染性,衍生作品也要开源)vs MIT/BSD/Apache(宽松,可商用)——做商业产品要特别注意 License(如 DESPOT 是 GPL-3.0,OCS2 是 BSD-3)。
把这几个信号综合起来,你就能在同类项目里挑出最值得投入的。一般规律:优先选"还在活跃维护 + 文档好 + 被广泛使用"的,即使它在某个单一指标(如算法新颖性)上不是最强——因为对使用者来说,"能顺利用起来、遇到问题有支持"比"算法最前沿"更重要。前沿但无人维护、文档缺失的项目,留给有能力啃源码的研究者;多数使用者应选成熟可靠的。
一个常见的取舍:用成熟但老的,还是新但不稳的? 成熟项目(如 acados)稳定、文档好,但可能不含最新方法;新项目可能有最新算法,但不稳定、文档少、可能弃坑。建议:工程落地用成熟的(稳定压倒一切),研究探索可试新的(但要做好啃源码、踩坑的准备,并有"它可能弃坑"的预案)。这个取舍和"建 vs 买"(§U6.2)、"成熟生态 vs 原创空间"(§U6.2)是一脉相承的——都是在"稳妥 / 快速"和"前沿 / 创新"之间按你的目标权衡。
本章常见误解汇总¶
把贯穿 U1–U5 的全局性误解集中澄清——这些误解往往不是某一章内部的,而是"没把五条路线对照清楚"导致的跨章误解。
| 误解 | 正确理解 |
|---|---|
| 五条路线是并列的算法,可以比"谁更强" | 它们各守一个不确定性入口,没有"最强",只有"最匹配你的不确定性结构"(§U6.1) |
| 处理不确定性必须从五条里"选一条" | 不确定性可同时从多个入口进入,五条路线可正交组合(U4+U5、U2+U5 等) |
| "看不清状态"(U4)和"状态有扰动"(U2/U3)是一回事 | 前者是感知端(须提升到 belief 空间、能主动探索),后者是动力学端(在状态空间优化) |
| CVaR(U5)就是机会约束(U3)的另一种写法 | 机会约束控违反概率(盲于严重程度),CVaR 控尾部平均严重程度;CVaR 约束更强 |
| 规控和 RL 是对立的、要二选一 | 它们是"同一思想在模型已知 / 数据驱动两种设定下的镜像",六座桥精确对应(§U6.3) |
| 分布式 RL(IQN)= 风险敏感 RL | 学分布是必要条件,风险态度要事后施加(改贪心 / 改策略信号为畸变期望) |
| "理论最匹配"的路线就该直接上 C++ 实现 | 还要看 C++ 生态成熟度——U3/U5 理论匹配但生态空白,从零实现是数月工作(§U6.2) |
| 学习要从"第一章"按编号顺序开始 | 从你的已知锚点出发更快——有 MPC 基础从 U2 进、有 RL 基础从 U5 进(§U6.4) |
| 不确定性规划是某个方向的子专题 | 它是横切专题,一套工具服务所有方向(附录 C) |
| 把他人 / 环境都当随机过程就够了 | 当不确定性来自他者的"策略性最优行为"时,概率模型不够——需要博弈(见结尾) |
| 选型必须一次选对唯一正确答案 | 选型是"选起点 → 试 → 迭代 / 组合"的过程,不是一锤定音(§U6.2) |
| 组合多条路线 = 分别跑两个规划器取交集 | 组合是数学层融合(一条路线的工具嵌进另一条的框架),非结果层拼接(§U6.5) |
| 更新的方法一定更好、该取代旧方法 | 新旧方法适用不同设定(模型已知用经典、无模型用数据驱动),非优劣(§U6.6) |
| 掌握 = 记住所有细节 | 掌握 = 拥有能生成 / 索引细节的紧凑结构(如速记图),而非死记事实(§U6.8) |
这些误解的共同根源,多是**没有把五条路线放进一个统一的框架去理解**——孤立地看每条路线,就容易在"它们的关系""何时用哪个""能不能组合""边界在哪"上犯错。本章的全部努力,就是提供这个统一框架(入口 / 共同骨架 / 二维图 / 六座桥 / 边界),让这些误解不再发生。如果你读完本章后还对某条误解将信将疑,回到对应小节(每条误解都标了出处)重新理解。
综合练习¶
本章是 Part-U 的综合,这里给一组**贯穿全方向**的综合题,检验你是否把五条路线连成了网、能否驾驭整个方向。这些题和各小节末的练习不同——小节练习检验你是否掌握了那一节的内容,综合练习检验你是否能**调动整个方向的知识**解决一个完整问题(选型 + 组合 + 落地 + 迁移 + 定位)。做这些题时,你会需要反复在五条路线、二维图、六座桥、边界之间穿梭——这种穿梭本身就是"把五条路线连成网"的训练。建议在通读全章后认真做几道,它们是检验你真正掌握 Part-U 的最好方式。
-
[全方向·选型 + 组合 + 落地] 给一个完整场景:一辆配送机器人在繁忙人行道上导航——行人会动(且可能突然改变方向)、机器人定位有漂移、传感器视野受限看不清远处行人、撞到人后果严重。请:(a) 用选型决策树(§U6.2)识别这个场景的所有不确定性入口;(b) 设计一个组合方案(§U6.5),说明用哪几条路线、如何在数学层面融合;(c) 评估每条路线的 C++ 生态、给出"建 vs 买"的工程决策(§U6.2);(d) 指出这个方案是否触及 Part-U 的边界(§U6.7),如果是,哪部分需要别的专题。
-
[全方向·规控 ↔ RL 翻译] 你的同事用 RL 做了一个风险敏感避障——训练了一个 IQN,部署时用 CVaR 贪心。但他的方法需要海量仿真、且无安全保证,不满足你们要上真机 + 需保证的需求。请用六座桥(§U6.3)把它"翻译"到规控侧:(a) 它对应规控侧的什么方法?(b) 翻译后如何获得安全保证和"不需海量数据"的好处?(c) 翻译会损失什么(RL 侧的什么优势)?(d) 有没有可能融合两者(二维图中央)?
-
[全方向·边界判断] 给三个场景,判断它们在 Part-U 主场内还是边界外,边界外的指出该去哪个专题(§U6.7):(a) 两个机器人在狭窄走廊相遇,都想先过,会根据对方的动作调整自己;(b) 机器人要在未知动力学(柔性机械臂,方程难建)下做轨迹跟踪;(c) 机器人要从人类的几次示范中学会"什么样的抓取算好",再在抓取时处理物体位姿不确定。
-
[全方向·发展脉络] 本章 §U6.6 给了五条路线的发展弧和两条趋势(风险中性→风险敏感、模型已知→数据驱动)。请:(a) 选一条路线,画出它从奠基到现代的内部发展线(用附录 A 的论文);(b) 分析它当前的瓶颈是什么;(c) 基于两条趋势,预判它下一步可能往哪走。
-
[全方向·教学设计] 假设你要给一个有 MPC 背景、零 RL 背景、想做风险敏感控制的工程师,设计一条 8 周的学习计划。请:(a) 基于三条标准路线(§U6.4)裁剪出个性化版本;(b) 说明每周学什么、为什么这个顺序;(c) 配一个贯穿始终的动手项目;(d) 指出这条路线相比标准路线的取舍。
-
[全方向·一句话掌握] 不看本章,凭理解完成:(a) 用一句话说清整个 Part-U 是做什么的(提示:在什么前提下、对什么、做什么);(b) 用一句话说清五条路线的统一组织维度;(c) 用一句话说清 Part-U 的边界(它和博弈规划的分界)。这三句话是整个方向的"压缩"——能流畅说出,说明你真正掌握了全局。
本章小结¶
本章是整个不确定性规划方向(U1–U5)的综合、对照与索引。核心不是学新算法,而是**把五条路线连成一张可对照、可选型、可延伸的网**。
一条贯穿全章的主线:五条路线分别处理不确定性进入机器人决策的五个入口——U1 执行端(未来分支)、U2 动力学端(有界扰动)、U3 动力学端(概率扰动)、U4 感知端(状态不可见)、U5 评估端(代价尾部)。理解了"入口"这个组织维度,选型就从"我学过好几种方法不知道用哪个"变成了"先判断不确定性从哪个入口来,再选守那个入口的工具"。
本章的几张关键地图:(1) 五路线本质对照表(§U6.1)——一张表看清五条路线的入口、第一语言、核心承诺、保守程度;(2) C++ 生态成熟度表(§U6.2)——U2/U4 成熟(适合上手)、U3/U5 空白(适合原创);(3) 选型指南表(§U6.2)——把不确定性结构映射到首选路线;(4) 与 RL 交界的二维图 + 六座桥(§U6.3)——规控与 RL 是同一思想的两种实现;(5) 三条学习路线(§U6.4)——按背景选起点;(6) 论文 / 开源索引(附录 A/D)——延伸阅读与动手实践。此外,§U6.5 讲如何**组合**多条路线(正交叠加),§U6.6 讲五条路线的**发展弧**(两条趋势与前沿),§U6.7 系统列出 Part-U 的四条边界(策略性交互 / 目标未知 / 极长时域 / 表征问题),结尾的**通向博弈规划**则详谈最重要的那条边界。
学完本章你应该能做的事¶
综合章的价值不在"学了多少新事实",而在"获得了什么能力"。学完本章,检验你是否真的掌握,看你能否做到这几件事:
- 凭记忆讲清五条路线的关系——不是孤立地讲每条,而是用"入口 / 共同骨架 / 二维图"的框架讲清它们如何分工、为何能组合、共同边界在哪(§U6.1、§U6.8)。
- 给一个新问题做选型——用决策树按入口定位,再用相对刻度表 / 固有局限表二次筛选,识别是否需要组合,判断是否在边界外(§U6.2、§U6.5、§U6.7)。
- 做工程的"建 vs 买"决策——判断每条路线该用现成库还是自己实现,把精力花在"专门逻辑"而非重造"通用基础设施"(§U6.2)。
- 在规控和 RL 之间迁移 / 选择——用六座桥把一侧的方法翻译到另一侧,按"模型 / 数据 / 保证"三条件选择走哪边或融合(§U6.3)。
- 规划自己的学习与研究——按背景选学习路线并裁剪,识别有价值的研究 / 开源切入点(§U6.4、研究建议)。
- 把 Part-U 放进更大的版图——知道它在机器人决策全景里的位置、它的边界外是哪些专题、如何与它们协作(§U6.7)。
如果这六件事你都能做到,说明你不只"学过" Part-U 的五条路线,而是真正"掌握"了这个方向——拥有了选型、落地、迁移、规划、定位的综合能力。这正是综合章想带给你的:不是更多的知识点,而是驾驭整个方向的判断力。
用一句话概括整个 Part-U¶
如果要把整个不确定性规划方向压缩成一句话, 它是: 在"对手 / 环境是中立的、不会针对你"的前提下, 机器人如何对各种来源的不确定性(未来分支、有界扰动、概率噪声、感知盲区、代价尾部)做出稳健的决策。 这句话里, "中立的不确定性"划定了范围(策略性对手出界, 归博弈), "各种来源"对应五个入口(五条路线), "稳健决策"是共同目标(在不确定下既不冒进、也不过度保守)。
这句话也揭示了 Part-U 的内在统一性——五条路线看似各异(分支树 / 集合 / 概率 / belief / 风险), 但它们服务同一个目标(中立不确定性下的稳健决策)、共享同一个组织维度(入口)、遵循同一个骨架(修改确定性优化的某个部件)。它们不是五个不相干的方法, 而是同一个问题(如何在中立不确定性下稳健决策)从五个入口给出的五个互补的答案。理解了这层统一性, 你对 Part-U 的掌握就从"记住五个方法"升华为"理解一个统一的方向"——这是本综合章最想带给你的认知跃迁。
带着这个统一的理解、这套连成网的工具、以及对边界的清醒认识, 你就完整地掌握了不确定性规划。下一步, 是跨过最重要的那条边界, 进入对手会思考的世界——博弈规划。
术语速查表¶
本章(作为综合章)引入或强调的统合性术语:
| 术语 | 一句话定义 |
|---|---|
| 不确定性入口(uncertainty entry point) | 不确定性进入决策闭环的环节——执行 / 动力学 / 感知 / 评估端,本章组织五条路线的核心维度 |
| 横切专题(cross-cutting topic) | 不属于单一方向、为所有方向提供通用工具的专题,不确定性规划即是 |
| C++ 生态成熟度 | 一条路线有无成熟可用的 C++ 库——决定"快速上手"还是"自己造轮子" |
| 原创空间 | 一条路线尚未被填补的研究 / 开源缺口——与生态成熟度此消彼长 |
| 模型已知度 | RL 交界二维图的横轴——从"模型完全已知"(经典 MPC)到"纯数据驱动"(model-free RL) |
| 六座桥 | 规控与 RL 之间六个精确对应关系(CC↔CMDP、IRA↔Lagrangian、CVaR↔CVaR-CMDP 等) |
| 策略性交互(strategic interaction) | 不确定性来自他者的最优行为(而非随机噪声)——博弈规划处理的对象,本方向的边界 |
知识点总表¶
| 编号 | 知识点 | 核心要点 | 对应节 | 难度 |
|---|---|---|---|---|
| G1 | 五个不确定性入口 | U1 执行 / U2 动力学有界 / U3 动力学概率 / U4 感知 / U5 评估 | §U6.1 | ⭐⭐⭐ |
| G2 | 五种翻译语言 | 分支树 / 有界集 / 概率约束 / belief / 畸变风险 | §U6.1 | ⭐⭐⭐ |
| G3 | U2 vs U3 同入口不同承诺 | 都处理动力学扰动;U2 worst-case 硬保证、U3 高概率(\(\delta\) 可调) | §U6.1 | ⭐⭐⭐ |
| G4 | C++ 生态成熟度 | U2/U4 高(上手)、U3/U5 极低(原创);与原创空间此消彼长 | §U6.2 | ⭐⭐⭐ |
| G5 | 选型指南 | 不确定性结构 → 首选路线(有界集 / 高斯 / 离散意图 / 感知 / 尾部 / 分布不确定) | §U6.2 | ⭐⭐⭐ |
| G6 | 推荐学习顺序 | U2→U3→U5→U1→U4(认知阶梯),≠ 编号顺序(逻辑分类) | §U6.2 | ⭐⭐ |
| G7 | RL 交界二维图 | 横轴模型已知度 × 纵轴风险态度;规控(左)与 RL(右)是镜像 | §U6.3 | ⭐⭐⭐⭐ |
| G8 | 六座桥 | CC↔CMDP、IRA↔Lagrangian、CVaR↔CVaR-CMDP、畸变↔IQN、belief↔RSSM、树搜索↔Neural MCTS | §U6.3 | ⭐⭐⭐⭐ |
| G9 | 桥的三层深度 | 问题层 / 机制层 / 实现层——判断"规控↔RL"类比有多深 | §U6.3 | ⭐⭐⭐⭐ |
| G10 | 三条学习路线 | 速成(MPC 背景)/ 完整(零基础)/ RL 优先(RL 背景),从已知锚点出发 | §U6.4 | ⭐⭐ |
| G11 | 横切专题定位 | 一套工具服务所有方向(SLAM / 无人机 / 四足 / 机械臂 / 博弈) | 附录 C | ⭐⭐ |
| G12 | 通向博弈的边界 | 概率模型把他人当随机过程;策略性交互须用博弈(均衡 ≠ 最优) | 结尾 | ⭐⭐⭐ |
| G13 | 组合多条路线 | 正交入口可叠加(U4+U5);同入口需二选一(U2/U3);CVaR 是通用修饰符 | §U6.5 | ⭐⭐⭐ |
| G14 | 五路线发展弧 | 两条趋势:风险中性→风险敏感、模型已知→数据驱动;前沿在二者交汇 | §U6.6 | ⭐⭐ |
| G15 | Part-U 的四条边界 | 策略性交互 / 目标未知 / 极长时域 / 表征问题——出界须转其他专题 | §U6.7 | ⭐⭐⭐ |
| G16 | 全景速记图 | 每条路线压缩成槽位(入口/部件/语言/何时用/局限/桥/C++);掌握=拥有可索引的结构 | §U6.8 | ⭐⭐ |
| --- |
累积项目:五安全谱统一测试台的收束¶
贯穿 U1–U5 的累积项目是一个**统一不确定性导航测试台**——一个 2D 双积分器机器人在带不确定性的环境里导航,每章给它装上对应路线的模块:U1 的分支备选、U2 的鲁棒 tube / CBF、U3 的机会约束、U4 的 POMDP belief、U5 的 CVaR 尾部约束。本章作为收官,不再新增模块,而是把五个模块**对齐到同一个框架下做总对比**——这是整个累积项目的收束。
为什么要做这样一个"总对比"的收束实验, 而不是让五个模块各自停在自己章节里? 因为**分散的实现无法回答"何时用哪个"这个最关键的问题**。你在每章实现了一个模块、看它在自己的场景里工作——但你没看过它在别的场景里如何失败, 也没和别的模块直接比过。而选型的本质恰恰是"比较和取舍": 这个场景该用哪个模块? 用错了会怎样? 组合起来如何? 这些问题只有把五个模块放到同一个测试台上交叉对比才能回答。所以这个收束实验不是锦上添花, 而是把五章分散的实现升华为"选型能力"的关键一步——它让你从"会实现每条路线"走到"会比较和选择路线"。
收束实验设计:在同一个测试台上,设计一组能让五条路线都"上场"的场景,做横向对比。
- 统一接口:五个模块都实现成"给定当前状态 / belief + 环境不确定性描述 → 输出控制"的规划器接口,可在同一仿真循环里热插拔。
- 分场景对比:设计五类场景,每类突出一个入口的不确定性——(1) 前方有"会动 / 不会动"两种障碍(执行端,U1 分支上场);(2) 有界风扰推机器人(动力学端有界,U2 上场);(3) 高斯定位噪声(动力学端概率,U3 上场);(4) 传感器只能看到局部、目标位置未知(感知端,U4 上场);(5) 重尾扰动 + 灾难性碰撞代价(评估端,U5 上场)。
- 交叉测试:把每条路线放到"不是它主场"的场景里,观察失效模式——如把 U2 鲁棒放到感知不确定场景(场景 4),看它如何因不会探索而失败(呼应 §U6.1 陷阱"看不清误当扰动");把 U3 机会约束放到重尾场景(场景 5),看它如何因盲于严重程度而留下灾难尾部(呼应 U3 vs U5 的区别)。
该测什么(评估维度):(1) 主场表现——每条路线在自己的入口场景里是否如理论预期地工作;(2) 失效模式——每条路线在非主场场景里如何失败、失败的根源是否正是"用错了入口";(3) 组合增益——把正交的路线组合(如场景 4+5 用 U4+U5 的风险敏感信念空间规划),是否解决了单条路线解决不了的问题;(4) 选型验证——§U6.2 选型指南表的每一行,是否能在测试台上被实验证实("这种不确定性结构确实该用这条路线")。
统一接口怎么设计(让五条路线可热插拔):要在同一仿真循环里对比五条路线,关键是把它们抽象成一个统一接口。一个可行的设计:每个规划器实现 plan(state_or_belief, uncertainty_desc) -> control 这样一个方法——输入当前状态(或 belief,对 U4)和环境不确定性的描述(扰动集 / 分布 / 分支 / 观测模型,视路线而定),输出控制量。仿真主循环不关心内部用的是哪条路线,只反复调 plan 并推进动力学。这样五条路线就成了可替换的"策略对象",换一行代码(实例化不同的规划器)就能切换路线、跑同一组场景。
评估指标怎么量化:除了定性的"主场 / 失效",要可比就得有定量指标。建议至少测:(1) 任务完成率(到达目标的比例);(2) 碰撞率 / 约束违反率(安全性);(3) 碰撞代价的 CVaR(尾部严重程度——这个指标能区分"违反频率"和"违反严重程度",正是 U3 vs U5 的关键);(4) 平均代价 / 绕路(保守性的代价);(5) 单步计算时间(实时性——U4 在这项上会明显劣于其他)。把这五个指标在五条路线 × 五场景上跑出来,你就有了一张完整的定量对比矩阵,能实证支撑本章所有的定性判断(选型、固有局限、计算成本刻度)。
这个项目的收束意义:单独看每章的累积项目模块,它们是五个孤立的实现;放到统一测试台上交叉对比,它们才显现出"五条路线如何分工、如何失效、如何组合"的完整图景。这正是"综合章"作为收束的价值——把分散在五章的实现,收拢成一个能回答"何时用哪条"的统一实验平台。跑完它,你对整个 Part-U 的理解就从"分章节的知识"变成了"可对比、可选型的整体能力"。
从这个统一实验中你能学到的三件事:跑完五条路线 × 五场景的交叉对比,三个收获是其他方式难以获得的——
- 亲眼看到"用错入口"的代价。读"U2 在感知不确定场景会失败"是一回事,亲眼看到 U2 控制的机器人在看不清的场景里因不会探索而卡住、撞墙,是另一回事。实验把抽象的"固有局限"变成可观测的失效——这种"看到代价"的体验,比记住选型表牢固得多。
- 量化感受路线间的权衡。选型表说"U2 保守、U3 不那么保守",但保守多少?实验给你具体数字(U2 绕路 X 米、U3 绕路 Y 米、碰撞率各多少)——你对"保守度"有了量化的、而非定性的感受。同样,U4 的"计算贵"在实验里是具体的"每步多少毫秒",你对它的实时代价有了切身体会。
- 发现组合的必要性。当你看到没有任何单条路线能在"既看不清、又怕撞"的场景(场景 4+5 混合)里同时做好,你就真切地理解了为什么需要组合(§U6.5)——不是理论上说"可以组合",而是实验逼着你组合(单条都不够)。这种"被问题逼出来的组合需求",比抽象地学组合更有说服力。
这三个收获指向同一点:统一实验把 Part-U 的核心论点(入口匹配、固有局限、组合必要)从"读到的道理"变成"做出来的体验"。这正是累积项目作为整个方向收束的最高价值——不是又写一些代码,而是把五章学到的一切,在一个可运行、可观测的平台上验证、量化、内化。强烈建议真正动手跑一遍:读十遍选型表,不如亲手看一次五条路线在五个场景里的交叉表现。
预期的交叉对比结果(定性,作为你跑实验时的对照):跑完五类场景 × 五条路线的交叉测试,你应当观察到类似下表的结构——每条路线在自己的主场(对角线)表现最好,在别人的主场以可解释的方式退化:
| 路线 场景 | 场景1 离散意图 | 场景2 有界风扰 | 场景3 高斯噪声 | 场景4 感知不清 | 场景5 重尾灾难 |
|---|---|---|---|---|---|
| U1 分支 | ✓ 主场 | 离散化失真 | 离散化失真 | 不会探索 | 盲于尾部 |
| U2 鲁棒 | 难枚举意图 | ✓ 主场 | 过度保守 | 不会探索 | 盲于尾部 |
| U3 机会约束 | 难枚举意图 | 可用偏保守 | ✓ 主场 | 不会探索 | 盲于严重程度 |
| U4 POMDP | 可建模 | 大材小用 | 大材小用 | ✓ 主场 | 盲于尾部 |
| U5 CVaR | 难枚举意图 | 可用 | 可用 | 不会探索 | ✓ 主场 |
读这张表的两个方向:(1) 对角线——每条路线在自己的主场(入口匹配)表现最好,验证了"入口匹配"的选型原则;(2) 非对角线——每条路线在别人的主场以**特定的、可预测的方式**退化(U2/U3/U5 在感知不清场景"不会探索"、U1/U2/U4/U5 在重尾场景"盲于尾部"、机会约束在重尾场景"盲于严重程度")。这些退化模式不是随机的,正是每条路线"固有局限"(§U6.1 局限表)在不匹配场景下的显现。跑出这张表,你就把"入口匹配"从一句口号变成了一组可观测的实验证据。
> 本质洞察:把五条路线放到同一个测试台上交叉测试,是验证"入口"组织框架的最有力方式——理论说的"用错入口会失败",在这里变成可观测的失效模式。整个 Part-U 的核心论点是"五条路线各守一个不确定性入口,选型 = 匹配入口"(§U6.1)。这个论点听起来合理,但最有说服力的验证是**让它在统一测试台上接受交叉测试**:把每条路线放到自己的主场(应该成功)和别人的主场(应该以特定方式失败)。当你亲眼看到 U2 鲁棒在感知不确定场景里因"不会探索"而卡住、U3 机会约束在重尾场景里因"盲于严重程度"而留下灾难尾部,你就从"理论上理解入口"升级到"实证上确信入口"——你看到了用错入口的真实代价。这也是累积项目作为收束的价值:它不是又一个孤立的实现,而是把整个方向的核心论点(入口匹配)做成一个可运行、可观测、可证伪的统一实验。跑完它,你对"何时用哪条路线"的判断就有了实验支撑,而非仅凭记忆背选型表。¶
🔧 选型故障排查手册¶
和前面各章的"故障排查手册"针对代码 / 数值错误不同, 综合章的"故障"是更高层的——它发生在选型和应用层面, 表现为"方法选了、跑起来了, 但行为不对"。这类问题往往比代码 bug 更隐蔽(代码能跑、不报错), 也更根本(选错了路线, 调参再多也救不回来)。
综合章的"故障"不是代码报错,而是**选型 / 应用层面的典型失败模式**——你选了一条路线,但行为不符预期。这张表帮你从症状反推根因(通常是"用错入口"或"忽略某条路线的固有局限")。
| 症状 | 可能原因 | 排查 / 修正 | 相关 |
|---|---|---|---|
| 机器人极度保守、寸步难行 | 用了 U2 鲁棒但扰动其实无界(或集设得过大);或嵌套 CVaR 的 α 过高、时域过长 | 1. 确认扰动是否真有界(无界用 U3/U5 而非 U2)2. 缩小扰动集 / 降低 α / 缩短施加 CVaR 的步长 | §U6.1, U2, U5 |
| 机器人不会主动探索、在感知不确定下卡住 | 把"看不清状态"(感知端)误当"状态有扰动"(动力学端),用了 U2/U3 而非 U4 | 1. 判断不确定性在哪一端("看清就解决"→ 感知端)2. 改用 U4 POMDP(能主动收集信息) | §U6.1 陷阱, U4 |
| 达标率合格但偶发灾难性后果 | 用了 U3 机会约束(只控违反概率、盲于严重程度),但问题有灾难性尾部 | 1. 检查违反后果是否差异大 2. 改用 / 叠加 U5 CVaR(控尾部严重程度) | §U6.1 陷阱, U5 |
| 多步规划行为抖动 / 朝令夕改 | 用静态 CVaR + 每步重优化(时间不一致);或分支树概率假设过时 | 1. 改用嵌套 CVaR(时间一致)2. 在线更新分支概率 | U5, U1 |
| 把对方车当固定概率,实际交互中频频被"欺负" | 用 U1 分支(固定概率)处理了本质是策略性交互的问题 | 1. 判断对方是否会观察你、因你而变 2. 若是,超出 U1–U5 范围,需博弈规划(见结尾) | 结尾 |
| 选了"理论最匹配"的路线但迟迟无法落地 | 该路线 C++ 生态空白(U3/U5),低估了从零实现的工作量 | 1. 评估生态成熟度(§U6.2)2. 先用 Python(CVXPY)原型验证,或换有成熟库的路线 | §U6.2 |
| RL 侧重复实现了规控侧已有的成果(或反之) | 没意识到六座桥的对应关系 | 1. 查 §U6.3 六座桥 2. 把已知一侧的方法沿桥翻译到另一侧,避免重造 | §U6.3 |
用法:从症状(最左列)出发,看"可能原因"——综合章的失败几乎都能归到"用错入口"(前四行)、"忽略路线局限"(达标但灾难)、"忽略生态现实"(无法落地)、"忽略 RL 对应"(重复造轮子)、或"超出范围"(策略性交互需博弈)。修正方向都指向本章某节。
更多选型 / 应用层面的失效场景:
| 症状 | 可能原因 | 排查 / 修正 | 相关 |
|---|---|---|---|
| 组合两条路线后结果矛盾、行为混乱 | 在"结果层"拼接了两个独立规划器,而非"数学层"融合 | 把一条路线的工具嵌进另一条的框架,形成统一优化问题(§U6.5) | §U6.5 |
| 组合后问题无法求解 / 极慢 | 组合了复杂度相乘的两条路线(如 U4+U5)且未做近似 | 判断复杂度是加性还是乘性;乘性则需采样 / 分解近似 | §U6.5 |
| CVaR 估计每次跑都跳、约束失真 | α 太高、尾部样本太少(如 α=0.99 但只采几十样本) | 提高样本量使 (1-α)N≥几十,或降低 α | U5, §U6.6 |
| 学了五条路线但面对新问题仍不会选 | 把五条路线孤立记忆,没建立"入口"组织框架 | 用入口 / 共同骨架(§U6.1)重新组织,按决策树选(§U6.2) | §U6.1, §U6.2 |
| 想做研究但找不到有价值的题 | 没用"领域间对应"系统找题 | 用六座桥的双向搬运、或填 U3/U5 的 C++ 空白(§U6.3, §U6.2) | §U6.3 |
综合章的调试方法论:选型 / 应用出问题时,按这个顺序排查——(1) 入口对吗(最常见的错误,前四行):重新判断不确定性从哪个入口进入;(2) 路线的局限触发了吗:是不是撞上了所选路线的固有局限(§U6.1 局限表);(3) 生态够用吗:是不是低估了 C++ 实现的工作量(§U6.2);(4) 是不是出界了:是不是问题本就在 Part-U 边界外(§U6.7)。这四步覆盖了综合章绝大多数的"选型 / 应用失败"——它们几乎都是这四类之一。
五路线核心工具速查表¶
学一条路线, 最终要落到"它的核心数学工具是什么、用什么代码起步"。综合章不引入新代码,这里把五条路线各自的"核心数学工具 + 代表 C++/Python 入口"汇成一张速查表,供你动手时快速定位每条路线最该掌握的工具。这张表和附录 D(完整开源项目表)互补——附录 D 是"有哪些项目可选", 这里是"每条路线最核心的工具和起点", 更聚焦。
| 路线 | 核心数学工具 | 关键公式 / 对象 | 代表代码入口 |
|---|---|---|---|
| U1 分支/场景 | 场景树 + 期望 / min-max | 分支树上的策略评估 | EPSILON(引导式分支)/ do-mpc(多阶段) |
| U2 鲁棒/Tube | 不变集 + 集合运算 + CBF-QP | \(X_{k+1}=AX_k\oplus\mathbb{W}\);\(\dot h+\alpha h\ge0\) | acados(实时 MPC)/ OCS2(腿足) |
| U3 机会约束 | 分位数收紧 + IRA + SOCP | \(\Pr(g>0)\le\delta\Rightarrow\) 收紧约束 + \(\Phi^{-1}\) | CVXPY / CasADi(无专门 CC 库) |
| U4 POMDP | belief 更新 + 树搜索 | \(b'(s')\propto O(o\mid s')\sum_s T b(s)\) | DESPOT(在线)/ SARSOP(离线) |
| U5 CVaR/风险敏感 | RU 变分公式 + 畸变测度 | \(\mathrm{CVaR}_\alpha=\min_z\{z+\frac{1}{1-\alpha}\mathbb{E}[(X-z)_+]\}\) | OmniSafe(RL 侧)/ CVXPY(LP) |
用法:选定路线后,中间两列是你必须吃透的数学核心(每条路线对应章节有详细推导),最右列是动手时的代码起点(详见附录 D)。注意 U3/U5 的"代表代码入口"是通用工具(CVXPY/CasADi)而非专门库——再次印证它们的 C++ 空白(§U6.2、附录 D)。
每条路线的**关键参数 / 旋钮**(动手调参时最该关注的):
| 路线 | 关键旋钮 | 含义 / 影响 | 调参方向 |
|---|---|---|---|
| U1 分支 | 分支数 / 时域 | 越多越全但越慢(指数爆炸) | 用引导减少分支;时域不宜过长 |
| U2 鲁棒 | 扰动集大小 \(\mathbb{W}\) / CBF 系数 \(\alpha_{\text{cbf}}\) | 集越大越保守;\(\alpha_{\text{cbf}}\) 控裕量衰减率 | 集取真实扰动的紧界;\(\alpha_{\text{cbf}}\) 平衡安全与灵活 |
| U3 机会约束 | 风险水平 \(\delta\) | 违反概率上限;越小越保守 | 按任务可容忍的违反率取(如 \(\delta=0.05\)) |
| U4 POMDP | 搜索深度 / 粒子数 / 场景数 | 越多越准但越慢 | 实时约束下权衡;DESPOT 的场景数取几十到上百 |
| U5 CVaR | 尾部水平 \(\alpha\) / 场景数 \(N\) | \(\alpha\) 越高越关注极端尾部、越需大 \(N\) | 安全攸关 \(\alpha\in[0.9,0.99]\);保证 \((1-\alpha)N\) 够 |
这张表是动手调参的速查——选定路线后,最该调的就是这几个旋钮。注意几个旋钮的共性:它们大多是"保守 ↔ 激进"或"精度 ↔ 速度"的权衡旋钮(扰动集大小、\(\delta\)、\(\alpha\)、搜索深度),没有"免费"的设置——调向一边总要牺牲另一边。这呼应了五条路线的共同主题:处理不确定性总是在"安全 / 鲁棒"和"性能 / 效率"之间权衡,旋钮就是这个权衡的具体控制点。
一个跨路线的调参原则:从"保守端"起步,逐步放松。无论哪条路线,初次部署时先取保守设置(大扰动集 / 小 \(\delta\) / 高 \(\alpha\) / 深搜索),确认安全 / 正确,再逐步放松以换取性能——而非反过来(从激进起步,撞了再收紧,可能已经出事)。安全攸关系统尤其如此:宁可先慢 / 保守、确认无误后再优化,也不要先激进、出问题再补救。
研究实践建议¶
研究和工程实践不是学完理论后才开始的"下一步", 而应该和学习交织进行——边学边做, 学到的才扎实, 做出来的才有方向。这一节按"从入门到研究"的层次, 给出把本章综合视角转化为实际行动的建议。无论你的目标是快速落地一个项目, 还是做有影响力的研究 / 开源贡献, 都能在下面找到对应的切入点。
分层次的上手 / 深入建议,把本章的综合视角落到行动上:
- 入门(建立全局观):通读 §U6.1(五路线本质)+ §U6.3 的二维图,做 §U6.1 练习 1(凭记忆复述五条路线)。目标是能向别人讲清"五条路线各守哪个入口、何时用哪条"。
- 选型实践:拿一个你手头的真实机器人不确定性问题,用 §U6.2 选型指南判断该用哪条(或哪几条组合),并诚实评估对应路线的 C++ 生态是否够用(要不要自己造轮子)。这个练习把"知道五条路线"变成"会选路线"。
- 动手(成熟生态):从附录 D 的 ★★★★★ 项目里选一个(acados 做 U2、DESPOT 做 U4),跑通示例、读核心代码。先在成熟生态建立工程能力。
- 动手(填空白):若有理论 + 工程 + 时间,挑 U3/U5 的 C++ 空白做原创——把 IRA 嵌进 acados、把 CVaR 辅助变量嵌进实时 QP、把 IQN 分位函数导出到 C++。这是真实的开源 / 研究机会(§U6.2)。
- 打通 RL:若有 RL 背景,按 §U6.3 的六座桥,把你已知的 RL 方法(CMDP、IQN、Dreamer)逐一对应到规控侧,反之亦然。目标是让两个世界的积累互相迁移。
- 规划学习:按 §U6.4 选一条最匹配你背景的学习路线,裁剪成个性化版本(做 §U6.4 练习 1)。
- 避坑:牢记本章常见误解汇总——尤其"看不清 ≠ 有扰动"(选错入口)、"CVaR ≠ 机会约束"(盲于严重程度)、"理论匹配 ≠ 能快速落地"(看生态)、"规控与 RL 不是二选一"(是镜像)。
按路线的具体研究 / 工程切入点(如果你想做有价值的工作,这些是相对明确的方向):
- U1 分支:连续意图空间的高效分支(不只离散几种);分支概率的在线学习 / 更新;分支规划与博弈的衔接(分支→博弈树,本章结尾)。
- U2 鲁棒:无界扰动下的可行性(鲁棒太保守时的折中);GP-MPC 等数据驱动鲁棒的理论保证;多层安全栈在更多机器人形态上的工程化。
- U3 机会约束:高维非高斯下的高效求解;实时 C++ 的 CC-MPC 库(填生态空白,把 IRA 嵌进 acados);分布鲁棒 CC 的可算化。
- U4 POMDP:极大状态 / 观测空间的可扩展求解;神经引导的 belief tree 搜索(BetaZero 方向的深化);POMDP 与 World Model 的更深融合(桥 5/6)。
- U5 风险敏感:实时 C++ 的 CVaR-MPC 库(最明确的空白,把 RU 辅助变量嵌进 acados、IQN 分位函数导出到 C++);高 α 下的尾部估计(重要性采样 / 极值理论);风险敏感 RL 的样本复杂度理论。
- 跨路线:六座桥的"双向搬运"(§U6.3,把一侧成熟成果搬到对面);多入口组合的高效求解(§U6.5,对抗乘性复杂度);五条路线在统一测试台上的系统对比(累积项目的扩展,目前缺乏这样的公开基准)。
这些切入点里,标粗的两个(实时 C++ 的 CC-MPC 和 CVaR-MPC 库)是**最明确、最有把握的开源贡献机会**——空白确实存在、用户确实有(做实时风险敏感控制的机器人团队)、路径也清楚(基于成熟的 acados)。如果你想做一个"有人用、填真空"的项目,从这两个起步是稳妥的。
给不同目标的研究建议:(1) 想发论文——选"风险敏感 × 数据驱动"交汇的前沿(CVaR-CMDP 改进、分布鲁棒 RL),或六座桥的未探索方向;(2) 想做开源——填 U3/U5 的 C++ 空白(明确、有用户);(3) 想做工程落地——在成熟生态(U2/U4)上解决你的具体问题,不必追前沿。三个目标对应不同的切入点,别用一种目标的标准要求另一种。
如何开始一个研究 / 开源项目:有了切入点,怎么真正启动?给一个务实的流程:
- 从复现开始,而非从创新开始。选一篇你关心方向的代表论文(附录 A),先复现它的核心结果(用它的开源代码,或自己实现核心)。复现的过程会让你真正理解这个方法、暴露它的细节和局限——这是产生真正创新的前提。直接想"我要创新"而不先复现,往往会重新发明已有的东西、或在不理解的地方想当然。
- 在复现中找痛点。复现时你会遇到具体的困难 / 不满——它太慢、它的假设在我的场景不成立、它缺一个我需要的功能。这些痛点就是改进的起点,且因为是你亲手碰到的,比凭空想的"研究问题"真实得多。
- 小步改进,而非推倒重来。从一个具体痛点出发做一个具体改进(让它更快 / 放松一个假设 / 加一个功能),而非一上来就想颠覆整个方法。小改进容易做出、容易验证、也容易积累成更大的贡献。
- 早做实验、早对比。改进要有对比才有说服力——和你改进前的版本比、和已有方法比(用累积项目那样的统一测试)。早做实验能尽早发现"我的改进到底有没有用",避免在没用的方向上投入太久。
这个"复现 → 找痛点 → 小步改进 → 早对比"的流程,比"凭空想大创新"务实得多——它让你的工作扎根于真实的理解和真实的痛点,而非空中楼阁。本方向尤其适合这个流程:U2/U4 有成熟代码可复现(容易起步),U3/U5 的空白本身就是"复现 Python 原型 → 发现缺 C++ 实现 → 填空白"的天然痛点。
对开源贡献的额外建议:填 U3/U5 的 C++ 空白时,(1) 站在成熟基础设施上(基于 acados / CasADi,而非从零造求解器)——把精力花在"专门逻辑"(CC 收紧 / CVaR 嵌入)而非重造轮子;(2) 重视文档和示例——一个有好文档的中等项目,比一个无文档的强项目对社区价值更大(§D 的项目评估);(3) 从最小可用版本开始,逐步完善——先做出一个能跑的简单版本发布,再迭代,而非憋一个完美的大版本。
版本信息速查¶
本节汇总本章的版本信息与适用范围, 便于回查。
| 项目 | 版本 / 状态 |
|---|---|
| 本章定位 | Part-U 不确定性规划方向收官章(综合对比与附录) |
| 涵盖路线 | U1 分支 / U2 鲁棒 / U3 机会约束 / U4 POMDP / U5 CVaR |
| 论文索引 | 附录 A:必读 12 篇 + 推荐 15 篇(共 27 篇) |
| 开源索引 | 附录 D:22 个代表项目(按优先级与对应章节) |
| 调研基准 | 截至 2026 年初;开源项目活跃度 / 星标请到 GitHub 核对最新 |
| 下一专题 | 博弈规划(处理策略性交互,见结尾"通向博弈规划") |
Part-U 不确定性规划方向回顾:到本章为止,整个不确定性规划方向(U1–U5 + 本综合章)完整呈现。回顾这个方向的整体设计——它从一个共同的出发点(经典规划 / 控制是"风险中性"的,假设模型准、扰动可忽略、状态可见、只看平均)出发,沿着"不确定性从哪个入口进入决策"这条主线,依次松绑了四组理想假设:
- U1(执行端):松绑"未来唯一"——承认未来有多种离散可能,用分支树应对。
- U2、U3(动力学端):松绑"无扰动 / 扰动可忽略"——U2 用集合鲁棒化处理有界扰动、U3 用概率约束处理随机扰动。
- U4(感知端):松绑"状态可见"——承认看不清,提升到 belief 空间、主动收集信息。
- U5(评估端):松绑"只看平均"——关注代价尾部,用 CVaR 度量严重程度。
五条路线各守一个入口,共同覆盖了"中立不确定性"进入决策的所有主要环节。本综合章(U6)则把它们连成网——给出本质对照、选型、学习路线、与 RL 的交界、论文与开源索引,并指出整个方向的边界(策略性交互超出范围,需博弈规划)。
这个方向的学习价值在于:它给你一套**能迁移到任何机器人的、处理不确定性的通用工具**(横切专题的本质),以及**在更大的机器人决策版图里定位问题的判断力**(知道何时用哪条、何时该跨出去)。掌握了它,你面对任何"机器人在不确定下如何决策"的问题,都有了系统的分析框架和工具箱——这正是整个 Part-U 想带给你的。
Part-U 致谢:本方向的科研脉络梳理参考了以下核心实验室与研究者的公开论文和开源代码(按方向):NUS AdaComp(David Hsu, Wee Sun Lee,POMDP / DESPOT)、HKUST Aerial Robotics(Wenchao Ding, Shaojie Shen,分支规划 / EPSILON)、ETH IDSC(Melanie Zeilinger,GP-MPC / 鲁棒 MPC)、ETH RSL(Marco Hutter, Ruben Grandia,腿足多层安全)、Stanford ASL(Marco Pavone, Thomas Lew,机器人风险评估)、Stanford SISL(Mykel Kochenderfer, Robert Moss,POMDP)、MIT CSAIL MERS(Brian Williams, Masahiro Ono,机会约束 / IRA)、MIT ACL(Jonathan How, Brett Lopez,CC-RRT)、Caltech AMBER(Aaron Ames,CBF)、UC Berkeley(Claire Tomlin, Jaime Fisac,可达性)、Georgia Tech(Panagiotis Tsiotras,协方差导引)、Freiburg syscop(Moritz Diehl,acados / 实时 MPC)、TU Dortmund DYN(Sergio Lucia, Sebastian Engell,多阶段 NMPC)、UMich APRIL(Ryan Eustice, Edwin Olson,MPDM)、UZH RPG(Davide Scaramuzza, Lukas Hewing,数据驱动 MPC)、CMU REx(Zachary Manchester,TinyMPC)、DeepMind(Marc Bellemare, Will Dabney,分布式 RL)、Technion(Shie Mannor, Aviv Tamar,风险敏感 RL)。论文引用与项目状态截至 2026 年初。
本章与后续章节的关系¶
本章是 Part-U 不确定性规划方向的收官章, 它和"后续"的关系有两个方向——回指本方向已学的内容、前指接下来的专题。
回指(对 U1–U5 的收束): 本章不引入新算法, 而是把前五章(U1 分支 / U2 鲁棒 / U3 机会约束 / U4 POMDP / U5 CVaR)连成网。如果你是按章节顺序学到这里的, 本章帮你把五章分散的知识整合成"按入口组织、可对照、可选型、可组合"的统一认知; 如果你跳着学了某几章, 本章的对照表(§U6.1)和速记图(§U6.8)能帮你快速补全没学的路线在全局中的位置。
前指(通往后续专题): 本章的附录 C 给了 Part-U 与所有相关方向 / 专题的衔接点——向上接 SLAM、无人机、四足、机械臂(给它们装不确定性升级), 向下接博弈规划(做它的前置)。其中最重要、最直接的后续是**博弈规划**: 当不确定性的来源从"中立的自然"变成"会思考的对手"时, 五条路线就到了边界, 需要博弈。本章最后一节专门讲这个过渡——它既是 Part-U 的收尾, 也是博弈规划的开篇引子。下面就进入这个过渡。
通向博弈规划:当不确定性的来源是另一个会思考的对手¶
读到这里, 你已经掌握了在中立不确定性下做稳健决策的全套工具。但任何方法论的真正成熟, 都体现在知道它的边界——这最后一节, 要讲清 Part-U 最重要的那条边界, 并以此作为通向下一个专题的桥梁。
不确定性规划(U1–U5)有一个共同的、深藏的前提,贯穿五条路线却很少被明说出来:它们都把不确定性的来源当成可以用概率模型描述的"自然"——一个不会因为你的行为而改变自己行为的过程。
回看五条路线,这个前提无处不在。U1 分支规划枚举他车的几种意图,但每个分支的"概率"是预先给定的、固定的——他车不会因为你选了某个分支而改变它转左还是转右的倾向。U2 把扰动装进有界集 \(\mathbb{W}\),但风扰不会"针对"你——它是中立的自然。U3 假设扰动服从某个分布,U4 用观测模型描述传感器噪声,U5 对代价分布的尾部建模——所有这些"不确定性",本质上都是**中立的随机过程**:它有分布、有统计规律,但它不会观察你的策略、不会为了对付你而调整自己。
这个前提对很多问题是对的——风扰、传感器噪声、地面摩擦,确实是中立的自然,用概率模型描述恰如其分。但有一类极其重要的不确定性,这个前提**根本不成立**:当不确定性的来源不是噪声,而是**另一个会思考、会反应、有自己目标的智能体**时。
考虑一个具体场景:自动驾驶车在匝道汇入主路,旁边有另一辆人类驾驶的车。你可以用 U1 的分支规划枚举"它让行 / 它不让行"两个分支,给每个分支一个概率。但这里有一个分支规划无法捕捉的关键事实——对方会观察你的行为并据此调整。如果你表现出强势汇入的意图,理性的对方可能选择让行;如果你犹豫,对方可能加速占住车道。对方的"让 / 不让"不是一个固定概率的随机变量,而是**对你的策略的最优回应**。你的策略影响对方的策略,对方的策略又影响你的最优策略——这是一个相互依赖的循环,不是一个单向的"自然产生不确定性、你来应对"。
把这种"策略性对手"硬塞进概率模型会出什么问题?你给对方的行为赋一个固定分布(如"70% 让行"),但这个分布其实**依赖于你自己的策略**——你越强势,让行概率越高。用固定分布,你要么高估要么低估对方的反应,得到的"最优"策略在对方真正的策略性反应面前可能很糟。更根本的是,"最优"这个概念本身在这里变得模糊:你的最优依赖对方的策略,对方的最优依赖你的策略——到底什么是"最优"?
用一个最小的数字例子,看"固定概率"在策略性交互下如何失效。回到匝道汇入:你有两个动作(强势汇入 / 让行),对方也有两个(让行 / 抢行)。代价矩阵(你的代价,越小越好)大致是:你强势 + 对方让 = 你省时(代价 1);你强势 + 对方抢 = 险些碰撞(代价 10);你让 + 对方让 = 都慢(代价 4);你让 + 对方抢 = 你更慢但安全(代价 5)。
用 U1 分支(固定概率)的做法:你给对方赋一个固定概率,比如"70% 让、30% 抢"。那么你强势的期望代价 = \(0.7\times1+0.3\times10=3.7\);你让行的期望代价 = \(0.7\times4+0.3\times5=4.3\)。于是你选强势(3.7 < 4.3)。但这里的致命问题是——那个"70% 让"的概率,本身依赖于你的选择。理性的对方看到你强势,会算自己的账:如果对方让,对方代价假设是 \(b_1\);如果对方抢且你强势,双方险些碰撞,对方代价很高 \(b_2\gg b_1\)。所以你越强势,对方越倾向让(抢的代价太高)——对方的"让"概率不是固定的 70%,而是**你强势时升高、你让行时未必**。用固定 70% 要么高估、要么低估了对方的策略性反应。
博弈的做法:不给对方赋固定概率,而是假设对方也理性地最小化自己的代价、并且会根据你的策略调整。求解的是一个**均衡**——一组(你的策略,对方的策略),使得在对方策略不变时你无法通过单方改变变好、反之亦然。在这个均衡里,"对方让的概率"是从对方的最优反应中**内生导出**的,而非外部拍定。这样得到的策略,在对方真正的策略性反应面前是稳健的——而固定概率的"最优"可能在对方的真实反应下表现很差(你以为对方 70% 让,结果你的强势让对方判断抢的风险可接受,于是抢,你撞上代价 10)。
博弈规划正是处理这种策略性交互的方法论。 它做了一个根本的概念替换:把优化的"最优(optimal)"替换为博弈论的"均衡(equilibrium)"。在单方优化里,"最优"是明确的——给定环境,找使你的目标最好的策略。但当环境里有会反应的对手时,没有单方的"最优",只有**均衡**——一组策略,使得在对方保持其策略的前提下,没有一方能通过单方改变策略而变得更好(纳什均衡的直觉)。博弈规划把"预测对方 + 然后规划自己"这种单向的两步,统一成"预测即均衡"——你对对方的预测和你自己的规划,必须在均衡里自洽(你预测的对方行为,正是对方对你的规划的最优回应)。
本质洞察:从不确定性规划到博弈规划,是从"应对中立的自然"到"博弈策略性的对手"——核心概念从"最优"变成"均衡"。这是两个专题最根本的分界。不确定性规划的世界观是"我 vs 自然"——自然产生不确定性(噪声、扰动、未知状态),但自然是中立的、不会针对我,所以我可以用概率模型描述它、然后求我的单方最优。博弈规划的世界观是"我 vs 对手"——对手会观察我、会针对我、会最优回应我,所以不存在我的单方最优,只存在我们策略相互自洽的均衡。像 / 不像:两者都处理"未来的不确定性",都要在不确定下做决策;但不确定性规划的不确定性是**外生的、中立的**(自然给定,与我的策略无关),博弈规划的不确定性是**内生的、策略性的**(对手的行为依赖我的策略,反之亦然)。这个区别决定了数学工具的根本不同:不确定性规划用概率 + 优化(求单方最优),博弈规划用博弈论 + 均衡求解(求多方自洽)。理解这条分界,你就知道何时该跨出 U1–U5:只要你的"不确定性"来源会观察你、会因你而变,概率模型就不够了,该进入博弈规划的世界。
这也精确地标出了 U1–U5 的**适用边界**。它们在"不确定性是中立自然"时威力强大——风扰、噪声、未知状态、固定意图分布,五条路线各擅胜场。但一旦不确定性变成"策略性对手"——博弈式的交通汇入、机器人之间的追逃、多机器人对有限资源的竞争、人机协作中对方会适应你的行为——你就站到了它们的边界上。此时把对方当随机过程,是一种会失效的近似。
接下来的**博弈规划专题**正是为跨过这条边界而设。它会把本方向的一些工具带过去并升级:U1 的分支会变成博弈树(每个分支不再是固定概率,而是对方的策略性选择);U4 的不完全信息 POMDP 会变成贝叶斯博弈(对方的"类型"未知,但对方会根据类型最优行动);U5 的 CVaR 可以嵌入博弈目标(风险敏感的均衡)。换句话说,博弈规划不是抛弃不确定性规划,而是在"对手会思考"这个更难的设定下,重新审视"如何在不确定下决策"——把"最优"升级为"均衡",把"预测—然后—规划"统一为"预测即均衡"。
具体地,本方向的哪些工具会"迁移并升级"到博弈规划?给一个对照,让你看到 Part-U 不是终点而是跳板:
- U1 分支 → 博弈树:U1 枚举他车的离散意图分支、赋固定概率。博弈把分支升级——每个分支不再是"自然以固定概率产生",而是"对方的策略性选择",分支上的值由对方的最优反应决定。U1 的分支枚举技术(如何高效构造 / 剪枝分支树)会迁移,但分支的"概率"变成"对方的均衡策略"。
- U4 不完全信息 POMDP → 贝叶斯博弈:U4 处理"我看不清状态"。博弈处理"我看不清对方的类型(意图 / 偏好)"——这是不完全信息博弈,形式上是 POMDP 的博弈版(贝叶斯博弈 / 部分可观测随机博弈)。U4 的 belief 更新、belief 空间规划会迁移,但 belief 现在是"对对方类型的信念",且对方也在根据它对你的信念行动。
- U5 CVaR → 风险敏感均衡:U5 的风险敏感是单方的(我对我的代价尾部厌恶)。博弈里可以有风险敏感的均衡——每一方都对自己的代价风险敏感地求均衡。U5 的 CVaR 度量、Rockafellar–Uryasev 可算化会迁移,嵌进博弈的均衡求解。
- U2/U3 的鲁棒 / 概率思想 → 鲁棒博弈 / 随机博弈:U2 的最坏情况、U3 的概率约束也有博弈对应——鲁棒博弈(对对方策略的不确定鲁棒)、随机博弈(带随机转移的博弈)。
这个对照说明:你在 Part-U 学的五套工具——分支枚举、集合鲁棒、概率约束、belief 推理、风险度量——没有一套会作废,它们都会以"升级版"出现在博弈规划里,只是从"我 vs 中立自然"的设定,搬到"我 vs 策略性对手"的设定。所以学好 Part-U 不只是掌握了不确定性规划,也为博弈规划打下了直接的基础——下一个专题会反复用到"这一招在不确定性规划里是这样,在博弈里升级成那样"的对照。
"均衡"到底是什么:一个直觉¶
"把最优换成均衡"是博弈规划的核心,但"均衡"对没接触过博弈论的人可能抽象。给一个直觉。
单方优化里的"最优"是:固定环境,找让我的目标最好的策略——环境不会因我而变,所以"最好"是明确的、单方面的。但有策略性对手时,环境(对手的策略)会因我而变,"我的最优"依赖"对手的策略",而"对手的最优"又依赖"我的策略"——这是一个循环,没有单方面的"最好"。
纳什均衡**是这个循环的"自洽解":一组策略(我的 + 对手的),使得**在对方策略不变的前提下,没有任何一方能通过单方改变自己的策略而变得更好。直觉上,均衡是一个"谁都不想单方偏离"的稳定点——我的策略是对你策略的最优回应,你的策略也是对我策略的最优回应,两者相互印证、自洽。回到匝道博弈:均衡可能是"我以某概率强势、你以某概率让行",且这组概率相互最优——我不想改(改了我更差)、你也不想改。这就是均衡:不是"我的单方最优",而是"我们策略的相互自洽"。
理解了均衡,就理解了博弈规划和不确定性规划的根本差异:不确定性规划求"我对中立环境的单方最优",博弈规划求"我和策略性对手的相互自洽(均衡)"。前者环境给定、解单方优化;后者环境会反应、解多方均衡。
博弈带来的新难点(预告)¶
把"最优"换成"均衡"不是免费的——它带来一系列新难点,这些正是博弈规划专题要处理的:
- 均衡的存在性 / 唯一性 / 计算:均衡是否一定存在?可能有多个均衡(选哪个)?怎么算?这些比单方优化的"求最优"复杂得多。
- 对手的理性假设:均衡假设对手也理性地求最优回应。但真实对手(人类司机)未必完全理性——如何处理"有限理性"的对手?
- 信息结构:谁知道什么?对手的目标 / 类型是否已知(不完全信息博弈 = 贝叶斯博弈,U4 POMDP 的博弈版)?信息结构极大影响均衡。
- 动态博弈:交互是多步的(不只一次决策),如何在序贯交互中求均衡(动态博弈 / 随机博弈)?
这些难点说明博弈规划是一个比不确定性规划更复杂的领域——但它处理的是不确定性规划处理不了的、极其重要的一类问题(策略性交互)。带着 Part-U 打下的基础(尤其 U1 的分支、U4 的不完全信息、U5 的风险敏感会迁移升级),你已经准备好进入这个领域了。
为什么这条边界值得单独、详细地讲¶
§U6.7 列了 Part-U 的四条边界,为什么唯独"策略性交互"这条在结尾被详细展开?三个原因:
- 它最常被忽视、最容易出错。把对手当随机过程(固定概率)是一个极其自然、极其常见的错误——因为它"能跑"(数学上合法),错得不明显。很多实际系统在交互场景里用了固定概率而不自知其前提错误(§U6.7 陷阱二)。详细讲清这条边界,是为了让你警觉这个隐蔽的错误。
- 它是 Part-U 最直接的延伸。其他边界(目标未知、表征问题)通向相对独立的专题(IRL、SLAM),而博弈规划与 Part-U 共享大量工具(分支 → 博弈树、POMDP → 贝叶斯博弈、CVaR → 风险敏感均衡)——它是 Part-U 的"自然下一步",本方向的学习直接为它铺路。
- 它在现代机器人中越来越重要。随着多机器人系统、人机协作、自动驾驶(与人类司机交互)的普及,"对手 / 伙伴会反应"的交互越来越普遍。策略性交互从一个"小众的边界情况"变成了"主流的、必须处理的"问题。详细讲它,是因为它的重要性在上升。
这三个原因——最易错、最直接延伸、越来越重要——使得"策略性交互"这条边界值得在 Part-U 的收尾单独、详细地讲,并作为通向下一专题(博弈规划)的桥梁。其他边界点到为止(§U6.7 速览),这一条则展开成完整的"为什么概率不够 + 均衡是什么 + 工具如何迁移"——为你进入博弈规划做好认知准备。
回望整个 Part-U, 它给你的不只是五个处理不确定性的方法, 更是一种**面对不确定性的系统思维**: 先问"不确定性从哪个入口进来"(定位), 再问"它最自然地说哪种数学语言"(选路线), 再问"是否多入口需要组合"(组合), 再问"工程上能否落地"(生态 / 建vs买), 最后问"是否在边界外需要别的工具"(定位边界)。这套思维, 比任何单一方法都更持久、更可迁移——方法会过时、会被新方法取代, 但"系统地分析不确定性、匹配工具、知道边界"的思维方式不会过时。这才是 Part-U 想真正留给你的: 不是五把锤子, 而是一套看待和处理不确定性的方法论。
至此,Part-U 不确定性规划方向(U1–U5 + 本综合章)全部完成。你已经有了一整套在"中立自然"的不确定性下做安全决策的工具——分支、鲁棒、机会约束、POMDP、CVaR,以及把它们连成网、做选型、与 RL 对接的全局视角。带着这套工具和"何时它们会失效"的清醒认识,我们进入下一个专题:当不确定性的来源开始思考、开始针对你时,如何博弈。