非线性 MPC 稳定性理论¶
前置自测¶
📋 前置自测(答不出 ≥ 2 题 → 先回前置章节复习)
- 写出离散时间 Lyapunov 稳定性定理的三条件:\(V\) 需满足什么性质才能证明原点渐近稳定?
- 什么是 \(\mathcal{K}_\infty\) 函数?给出一个例子并说明它与 \(\mathcal{K}\) 函数的区别。
- 什么是 ISS(输入到状态稳定性)?写出 ISS-Lyapunov 函数的定义不等式。
- 什么是 KKT 条件?对一个带等式和不等式约束的优化问题,写出完整的一阶最优性条件。
- 解释 Bellman 最优性原理的核心思想,并写出离散时间 DP 方程。
本章目标¶
学完本章后,你应能够:
- 从公理层面理解 Mayne-Rawlings-Rao-Scokaert 2000 的四条件框架,能独立复述证明并解释每条假设保证了什么;
- 机械化地设计终端代价和终端集:给定任何可线性化系统,通过 DARE → LQR → 椭圆切约束的流水线产出满足四条件的 \((V_f, X_f, \kappa_f)\);
- 判断无终端约束 MPC 何时可行:利用 Grüne-Pannek 的 \(\alpha_N\) 公式估算最小预测步数 \(N^\ast\);
- 理解 economic MPC 的旋转代价技巧:区分跟踪型 MPC 与经济型 MPC,并能验证 strict dissipativity;
- 设计 tube MPC:对线性系统计算 mRPI、执行约束收紧、编写名义 MPC。
知识树总览¶
非线性 MPC 稳定性
├── §1 标准形式与递归可行性 ⭐
│ ├── OCP_N 定义
│ ├── Receding horizon 反馈律
│ └── 递归可行性 = 一切稳定性的前提
├── §2 四条件框架 ⭐⭐(核心中的核心)
│ ├── (A1) 终端集正不变
│ ├── (A2) 终端代价 = 局部 CLF
│ ├── (A3) 阶段代价正定下界
│ ├── (A4) 终端代价上界
│ └── 证明:候选序列构造 → Lyapunov 下降
├── §3 终端代价设计 ⭐⭐
│ ├── DARE → P → K → 椭圆
│ ├── Chen-Allgöwer 1998 非线性推广
│ └── LMI/SOS 自动化验证
├── §4 无终端约束 MPC ⭐⭐
│ ├── Jadbabaie-Hauser 2005
│ ├── Grüne-Pannek α_N 公式
│ └── 最小预测步数估算
├── §5 Economic MPC ⭐⭐⭐
│ ├── Strict dissipativity
│ ├── Rotated cost 变换
│ └── Turnpike 等价性
├── §6 Tube MPC ⭐⭐
│ ├── RPI 集合
│ ├── 约束收紧
│ └── 鲁棒递归可行性
├── §7 ISS-MPC ⭐⭐⭐
│ └── V_N* 作 ISS-Lyapunov 函数
├── §8 MPC 与 CLF/CBF 统一 ⭐⭐⭐
│ ├── V_N* 即 CLF
│ ├── CBF 作安全约束
│ └── N=1 退化为 CBF-QP
└── 选学
├── §A Stochastic MPC ⭐⭐⭐⭐
├── §B 输出反馈 MPC ⭐⭐⭐
├── §C 可行性恢复 ⭐⭐⭐
├── §D Turnpike 理论 ⭐⭐⭐⭐
├── §E 实时 MPC (RTI + Suboptimal) ⭐⭐⭐
├── §F 采样数据 MPC ⭐⭐⭐⭐
└── §G 计算验证 (LMI/SOS/MPT3) ⭐⭐⭐
§1 MPC 标准形式、Receding Horizon 与递归可行性 ⭐¶
动机:为什么 MPC 的稳定性不是"天然的"¶
考虑一个直觉问题:你有一个预测模型,你在每个时刻对未来 \(N\) 步做最优规划,然后只执行第一步——为什么这样的策略不一定稳定?
答案令人惊讶:有限时域最优性不等于无限时域最优性。想象你站在悬崖边用导航 app 规划路线——如果 app 的"规划视野"只有前方 100 米,它可能把你引到一条局部最短但最终通向死路的路径。MPC 面临完全相同的困境:\(N\) 步"最优"不保证无限步"好"。
本质洞察:MPC 的稳定性不是求解器给你的——它是终端代价、终端集、阶段代价、预测步数四个设计要素共同构造出的 Lyapunov 函数所保证的。
这一节建立问题的精确数学形式。
如果不关心稳定性理论会怎样¶
在机器人实践中,忽视稳定性理论的三类典型"崩盘"场景:
| 场景 | 症状 | 理论根源 |
|---|---|---|
| 预测步数 \(N\) 太短、无终端代价 | 逆摆在远离平衡点时永远回不去 | Grüne-Pannek \(\alpha_N < 0\) |
| SLAM 估计跳变推状态出可行域 | OCP infeasible → 控制器沉默 → 更远 | 递归可行性破坏 |
| RL warm-start 不验 Lyapunov | "平均更好、最坏崩掉" | Scokaert 1999 suboptimal 条件未满足 |
严格定义¶
考虑离散时间动态系统
其中 \(\mathbb{X}, \mathbb{U}\) 为包含原点的闭集。有限时域最优控制问题 \(\mathrm{OCP}_N(x)\) 为
受约束
这里每个符号的物理意义需要明确:
| 符号 | 含义 | 设计自由度 |
|---|---|---|
| \(\ell(x,u)\) | 阶段代价,衡量"偏离目标多少" | 选取正定函数,通常 \(x^\top Q x + u^\top R u\) |
| \(V_f(x)\) | 终端代价,补偿有限视野的损失 | 核心设计对象——选错则不稳 |
| \(X_f\) | 终端集,状态必须最终进入的安全区 | 核心设计对象——选大则不安全 |
| \(N\) | 预测步数 | 越大可行域越大,但计算越贵 |
设 \(\mathbf{u}^\ast(x) = (u_0^\ast, \dots, u_{N-1}^\ast)\) 为最优解。**Receding-horizon 反馈律**只取第一项:
记**可行域** \(X_N := \{x \in \mathbb{X} : \mathrm{OCP}_N(x) \text{ 有解}\}\)。
为什么只用第一步?这是 receding horizon 的核心思想:(1) 第一步的决策基于最新测量,信息量最大;(2) 未来的决策基于预测模型,随时间推移误差累积;(3) 下一时刻可以用新测量重新规划,获得反馈效果。这与"一次规划、全程执行"的开环策略有本质区别——receding horizon 把规划变成了**隐式反馈控制器**。
递归可行性:一切稳定性证明的前提¶
定义:称 MPC 具有**递归可行性 (recursive feasibility)**,若
即:如果当前 OCP 有解,执行最优第一步后,下一时刻的 OCP 仍有解。
为什么这不是显然的?因为 \(X_N\) 的形状取决于动态约束和终端约束的交互作用。一个简单反例:考虑双积分器 \(x_{k+1} = x_k + u_k\),\(|u| \le 1\),\(|x| \le 5\),\(N = 1\)。若当前 \(x = 4.5\),最优 \(u_0^\ast = -1\)(朝原点走),一步后 \(x^+ = 3.5 \in X_1\)。但若 \(N = 1\) 且终端约束要求 \(x_1 = 0\),则 \(x = 4.5\) 时 OCP 就不可行(\(|u| \le 1\) 无法一步到达 0)。这说明终端约束的设计直接决定递归可行性。
反事实推理:如果不保证递归可行性会怎样?第 \(k\) 步 OCP 求解成功、施加 \(u_0^\ast\);第 \(k+1\) 步 OCP infeasible——此时控制器没有输出。实际工程中通常保持上一次的控制输入或切到紧急模式,但状态可能因此更加远离可行域。这是 MPC "阵亡"的最常见模式。
DP 递归方程¶
定理 1.1(MPC 值函数的 DP 递归) 最优值函数满足
边界条件 \(V_0^\ast(x) = V_f(x)\),\(x \in X_f\)。
证明:这是 Bellman 最优性原理的直接推论。将 \(N\) 步问题拆成"第一步 + 剩余 \(N-1\) 步":
内层最小化恰好是以 \(f(x, u_0)\) 为初始状态的 \((N-1)\) 步 OCP,即 \(V_{N-1}^\ast(f(x, u_0))\)。\(\blacksquare\)
可行域嵌套:由 DP 递归立刻得到
\(N\) 越大,MPC 能"救回来"的初始状态越多。但 \(X_\infty\)(无限步可行域)才是理论极限。
工程含义¶
- DP 方程是所有稳定性证明的起点。后续 §2 的核心不等式正是从"构造候选序列 → 用 DP 递归界代价"得出。
- **可行域单调性**告诉工程师:如果 \(N\) 太小,部分工况不可行。增大 \(N\) 能扩大可行域,但每增一步,计算量增加 \(O((n_x + n_u)^3)\)。
- 从无限维到有限维的代价:截断时域引入了"终端近视"——这正是终端代价 \(V_f\) 要补偿的东西。
跨领域类比¶
MPC 的 receding horizon 策略可以类比为**国际象棋中的有限深度搜索**:AI 引擎用 alpha-beta 搜索探索未来 \(N\) 步,但只走当前最优的一步,然后重新搜索。终端代价 \(V_f\) 相当于位置评估函数——它用一个启发式估计替代了无法穷举的未来。如果评估函数太差(\(V_f\) 不满足 Lyapunov 条件),AI 会走出"短视最优但全局很差"的棋步。
⚠️ 常见陷阱¶
| # | 陷阱 | 后果 | 对策 |
|---|---|---|---|
| 1 | 混淆"OCP 有解"与"闭环稳定" | 以为求解成功就万事大吉 | 有解 ≠ 稳定,还需 Lyapunov 下降 |
| 2 | 终端约束 \(X_f\) 取太小导致可行域 \(X_N\) 太小 | 大量工况 OCP infeasible | 用 §3 的椭圆最大化方法 |
| 3 | 误以为 \(N\) 越大一定越好 | 计算超时,反而降低控制频率 | 匹配系统时间常数,\(N \cdot T_s \approx 3\tau\) |
练习¶
- 概念题:给出一个例子说明递归可行性与渐近稳定性是两个独立性质(可以有递归可行但不稳定的 MPC)。
- 推导题:对线性系统 \(x^+ = Ax + Bu\),\(X_f = \{0\}\)(终端等式约束),推导 \(X_N\) 的解析形式。提示:考虑可达集的 Minkowski 和。
- 编程题:用 Python + CasADi 实现双积分器的 \(\mathrm{OCP}_N\),分别取 \(N = 5, 10, 20\),画出可行域 \(X_N\) 的边界。
§2 Mayne-Rawlings-Rao-Scokaert 2000:稳定性的四条件框架 ⭐⭐¶
动机:从零散结论到统一公理¶
在 2000 年之前,MPC 稳定性理论是碎片化的:Keerthi-Gilbert 1988 要求终端等式 \(x_N = 0\)(太强);Michalska-Mayne 1993 用双模式控制器(复杂);Chen-Allgöwer 1998 用 quasi-infinite horizon(需要精细的非线性分析)。这些结论各有适用范围,但缺乏统一框架。
Mayne, Rawlings, Rao, Scokaert (2000),Constrained model predictive control: Stability and optimality,Automatica 36(6):789-814,DOI: 10.1016/S0005-1098(99)00214-9,用四条假设 (A1)-(A3)(加上导出的 A4)统一了所有已知结果。这篇论文迄今被引用超过 10000 次,是 MPC 领域的"北极星"。
历史背景:David Mayne(1930-2024)是控制理论的泰斗,从 1960 年代的最优控制到 2000 年代的鲁棒 MPC,贡献跨越半个世纪。他于 2024 年 5 月辞世,这一理论体系的命脉由新一代工程师接续。
四条件严格表述¶
以下与 Rawlings-Mayne-Diehl 2017(Nob Hill 第二版)§2.4.2 一致:
(A1) 终端集正不变 + 终端反馈容许:存在闭集 \(X_f \subseteq \mathbb{X}\)(\(0 \in X_f\))和局部反馈 \(\kappa_f: X_f \to \mathbb{U}\),使得
直觉:一旦状态进入终端集,局部控制器能"兜住"它,不让它跑出去。这是"安全网"——MPC 的 \(N\) 步规划负责把状态引向 \(X_f\),进入后 \(\kappa_f\) 接管。
(A2) 终端代价是局部 CLF(Lyapunov 下降不等式):\(V_f: X_f \to \mathbb{R}_{\ge 0}\) 连续,\(V_f(0) = 0\),且
直觉:终端代价 \(V_f\) 在终端反馈 \(\kappa_f\) 下单调递减,且递减速率不低于阶段代价。这意味着 \(V_f\) 是"无限时域代价的局部上界"——从 \(X_f\) 内出发用 \(\kappa_f\),总代价不超过 \(V_f(x)\)。
本质洞察:(A2) 的深层含义是:\(V_f\) 扮演了"无穷步 tail 代价的代理"。MPC 只规划 \(N\) 步,\(V_f\) 用来补偿 \(N\) 步之后的无限未来。如果 \(V_f\) 恰好等于 \(\kappa_f\) 下的无限时域代价(即 \(V_f(x) = \sum_{k=0}^\infty \ell(x_k, \kappa_f(x_k))\)),则有限时域 MPC 等价于无限时域最优。
(A3) 阶段代价正定下界:\(\ell\) 连续,\(\ell(0,0) = 0\),且存在 \(\mathcal{K}_\infty\) 函数 \(\alpha_\ell\) 使
直觉:阶段代价能"看到"状态偏离原点的程度。如果 \(\ell\) 不依赖 \(x\)(例如 \(\ell = u^\top R u\)),则 A3 失效,MPC 可能让状态停在非零稳态。
(A4) 终端代价是真值函数的局部上界(由 A1+A2 导出):
这不是独立假设,而是 A1+A2 的推论:对 (A2) 两边求和——\(V_f(x_{k+1}) - V_f(x_k) \le -\ell(x_k, \kappa_f(x_k))\),telescope 求和得 \(0 - V_f(x_0) \le -\sum_{k=0}^\infty \ell(\cdot)\),即 \(V_f(x_0) \ge V_\infty^{\kappa_f}(x_0)\)。
核心定理及完整证明¶
定理 2.1(MPC 闭环渐近稳定性,Mayne 2000 Thm 1) 在 (A1)-(A3) 下:
- \(X_N\) 对闭环 \(x^+ = f(x, \kappa_N(x))\) 正不变(递归可行);
- \(V_N^\ast\) 是闭环 Lyapunov 函数,原点在 \(X_N\) 上**渐近稳定**;
- 若 \(\alpha_\ell(r) = c r^2\) 且 \(V_f\) 有二次上界,则**指数稳定**。
完整证明(6 步,不跳步):
记最优序列 \(\mathbf{u}^\ast(x) = (u_0^\ast, \dots, u_{N-1}^\ast)\),对应最优轨迹 \(x_0^\ast = x, x_1^\ast, \dots, x_N^\ast\)。
Step 1(候选序列构造)
一步之后状态为 \(x^+ = f(x, u_0^\ast) = x_1^\ast\)。构造候选控制序列:
为什么这样构造?前 \(N-1\) 项直接沿用原最优序列(它们仍然满足动力学和约束),第 \(N\) 项用终端反馈 \(\kappa_f\) "兜底"。
Step 2(候选可行性 → 递归可行性)
验证 \(\tilde{\mathbf{u}}\) 是 \(\mathrm{OCP}_N(x^+)\) 的可行解:
- 前 \(N-1\) 步的动力学和约束:沿用原最优轨迹的 \(x_2^\ast, \dots, x_N^\ast\),已知满足 \((x_k^\ast, u_k^\ast) \in \mathbb{X} \times \mathbb{U}\);
- 第 \(N\) 步的终端约束:新的终端状态为 \(\tilde{x}_N = f(x_N^\ast, \kappa_f(x_N^\ast))\)。由 (A1),\(x_N^\ast \in X_f\) 意味着 \(f(x_N^\ast, \kappa_f(x_N^\ast)) \in X_f\)。
因此 \(\tilde{\mathbf{u}} \in \mathcal{U}_N(x^+)\),\(x^+ \in X_N\)。递归可行性证毕。\(\square\)
Step 3(候选代价计算)
计算 \(\tilde{\mathbf{u}}\) 对应的代价:
整理得:
Step 4(用 A2 消去终端项)
由 (A2) 的 Lyapunov 下降不等式:
因此终端项 \(\le -\ell(x_N^\ast, \kappa_f) + \ell(x_N^\ast, \kappa_f) = 0\)。这是整个证明中最关键的一步——(A2) 的作用在此完全显现。
Step 5(核心 Lyapunov 下降不等式)
由最优性 \(V_N^\ast(x^+) \le V_N(x^+, \tilde{\mathbf{u}})\)(最优不劣于任何可行解),结合 Step 3-4:
这就是 MPC 的 Lyapunov 下降不等式。注意 \(\kappa_N(x) = u_0^\ast\)。
Step 6(Lyapunov 结论)
由 (A3):\(V_N^\ast(x^+) - V_N^\ast(x) \le -\ell(x, \kappa_N(x)) \le -\alpha_\ell(\|x\|)\)。
同时,\(V_N^\ast\) 满足: - 正定性:\(V_N^\ast(x) \ge \ell(x, \kappa_N(x)) \ge \alpha_\ell(\|x\|)\)(取 \(V_N^\ast\) 的第一项下界); - 有界性:\(V_N^\ast(x) \le \alpha_2(\|x\|)\)(由 \(\ell, V_f\) 的连续性和有界性,存在 \(\mathcal{K}_\infty\) 上界 \(\alpha_2\))。
由标准 Lyapunov 直接定理(离散时间版本),原点在 \(X_N\) 上渐近稳定。\(\blacksquare\)
证明的"建筑学"解读¶
把证明想象成搭积木:
| 积木 | 作用 | 对应假设 |
|---|---|---|
| 候选序列 shift + 终端反馈 | 保证"下一步有解" | (A1) |
| 终端代价 Lyapunov 下降 | 让候选代价不增 | (A2) |
| 最优性原则 | 从"候选可行"推到"最优更好" | 优化基本性质 |
| 阶段代价正定 | 让 \(V_N^\ast\) 满足 Lyapunov 正定性 | (A3) |
如果去掉 (A1):Step 2 失败,候选序列不可行,递归可行性无法保证。
如果去掉 (A2):Step 4 无法消去终端项,\(V_N^\ast(x^+) - V_N^\ast(x)\) 可能为正,Lyapunov 下降不成立。
如果去掉 (A3):Step 6 中 \(V_N^\ast\) 不再正定(可能在非零点为零),Lyapunov 定理不适用。
反事实推理:如果终端代价 \(V_f\) 设为零(即 \(V_f \equiv 0\))会怎样?(A2) 变成 \(0 - 0 \le -\ell(x, \kappa_f(x))\),即 \(\ell(x, \kappa_f(x)) \le 0\),这对正定的 \(\ell\) 只在 \(x = 0\) 成立。因此 \(X_f = \{0\}\)——终端集退化为单点,这就回到了 Keerthi-Gilbert 1988 的终端等式约束。可行域极小,实用价值低。
四条件的口诀与诊断¶
记忆口诀:"正不变 + CLF + 正定 + 容许"(A1 正不变、A2 CLF 下降、A3 正定下界、A1 容许)。
故障诊断映射:
| MPC 症状 | 最可能被破坏的条件 | 修复方向 |
|---|---|---|
| 闭环缓慢漂移不收敛 | (A3) — 阶段代价不含 \(x\) | 加状态权重 \(Q \succ 0\) |
| 第二拍 OCP infeasible | (A1) — 终端集不正不变 | 检查 \(\kappa_f(x) \in \mathbb{U}\)、\(f(x,\kappa_f) \in X_f\) |
| 控制输出振荡不衰减 | (A2) — 终端代价 \(P\) 不满足 DARE | 重新解 DARE |
| 可行域太小工况受限 | \(X_f\) 太小 | 增大 \(N\) 或用 §4 无终端约束 |
与其他稳定性理论的关系¶
| 理论 | 核心思想 | 与四条件的关系 |
|---|---|---|
| LQR | 无限时域、无约束最优控制 | MPC 的终端代价 \(V_f = x^\top P_{\text{DARE}} x\) 就是 LQR 值函数 |
| CLF(Sontag 1989) | 存在 \(u\) 使 \(\Delta V < 0\) | MPC 的 \(V_N^\ast\) 本身就是 CLF |
| Lyapunov 直接法 | \(V\) 正定 + 沿轨迹递减 | MPC 证明正是构造 \(V = V_N^\ast\) 后验证这两条 |
| Bellman DP | 值函数满足递归方程 | §1 的 DP 递归是 Step 5 的前置工具 |
⚠️ 常见陷阱¶
💡 概念误区:认为"OCP 求解成功 = MPC 稳定"
- 新手想法:IPOPT 返回
Optimal_Solution_Found,说明控制器在工作。 - 实际上:求解成功只保证当前 OCP 有解。闭环稳定性需要 (A1)-(A3) 共同保证 \(V_N^\ast\) 是 Lyapunov 函数。极端情况下,OCP 每步都成功但闭环状态发散——这发生在 \(V_f\) 不满足 (A2) 时。
- 自检方法:画出 \(V_N^\ast(x_k)\) 随 \(k\) 的变化曲线。如果它不单调递减,说明 Lyapunov 条件被破坏。
🧠 思维陷阱:认为"终端代价越大越安全"
- 新手想法:加大 \(V_f\) 的权重,让 MPC "更重视终端",应该更稳定。
- 实际上:\(V_f\) 过大会让 MPC 过于保守(所有精力都在"到达终端"而非"沿途节省"),可能导致:(a) 约束被过早激活;(b) 最优轨迹不光滑;(c) 更严重的是,如果 \(V_f\) 增大但不满足 (A2) 的不等式方向,反而破坏稳定性。
- 正确做法:\(V_f\) 的选取不是"调参",而是满足 (A2) 的数学约束。唯一安全的方法是用 DARE 解出的 \(P\) 矩阵。
练习¶
- 推导题:假设阶段代价为 \(\ell(x,u) = x^\top Q x + u^\top R u\)(\(Q \succ 0, R \succ 0\)),证明 (A3) 成立并给出 \(\alpha_\ell\) 的具体形式。
- 反例构造:构造一个满足 (A1)(A3) 但不满足 (A2) 的例子,证明闭环不稳定。
- 编程题:对一维系统 \(x^+ = 2x + u\)(不稳定),\(|u| \le 1\),\(\ell = x^2 + u^2\)。分别取 \(V_f = 0\) 和 \(V_f = P x^2\)(\(P\) 为 DARE 解),用 CasADi 仿真闭环轨迹对比。
§3 终端代价与终端集设计:DARE → \(P\) → \(K\) → 椭圆 \(\alpha\) ⭐⭐¶
动机:把四条件从抽象变成可计算¶
§2 给出了稳定性的**充分条件**,但工程师需要的是**构造方法**:给定系统 \((A, B, Q, R)\),如何机械化地产出满足 (A1)-(A2) 的 \((V_f, X_f, \kappa_f)\)?
答案是:LQR 终端设计流水线。这是 95% 的 MPC 应用(线性或可线性化系统)使用的方法。
线性系统上的机械化五步配方¶
对可镇定 \((A, B)\)、\(\ell(x,u) = x^\top Q x + u^\top R u\),\(Q \succeq 0\) 且 \((A, Q^{1/2})\) 可检测、\(R \succ 0\):
Step 1:解离散代数 Riccati 方程 (DARE)
DARE 的解 \(P \succ 0\) 是无限时域 LQR 值函数的 Hessian。它的存在唯一性由 \((A, B)\) 可镇定 + \((A, Q^{1/2})\) 可检测保证(Rawlings-Mayne-Diehl 2017 Theorem B.11)。
数值实现:
import numpy as np
from scipy.linalg import solve_discrete_are
# 给定系统矩阵
A = np.array([[1.0, 0.1], [0.0, 1.0]]) # 双积分器离散化
B = np.array([[0.005], [0.1]])
Q = np.eye(2)
R = np.array([[1.0]])
# Step 1: 解 DARE
P = solve_discrete_are(A, B, Q, R)
print(f"P = \n{P}")
Step 2:计算 LQR 增益
闭环矩阵 \(A_K = A + BK\) 的特征值全在单位圆内(Schur 稳定)。
为什么 LQR 增益恰好是"正确的"终端反馈 \(\kappa_f\)?因为 DARE 的解恰好满足封闭的 Lyapunov 等式:
这可以通过直接代入 DARE 并利用 \(K\) 的定义验证。
Step 3:设 \(V_f(x) = x^\top P x\),\(\kappa_f(x) = Kx\)
验证 (A2):
因此 (A2) 以**等号**成立!这是 LQR 终端设计的美妙之处——它不仅满足 (A2),而且是最紧的满足方式。
Step 4:确定终端集 \(X_f = \{x : x^\top P x \le \alpha\}\)
(A1) 的正不变性由 Step 3 的等号自动满足:对任意 \(\alpha > 0\),\(x^\top P x \le \alpha\) 意味着 \((A_K x)^\top P (A_K x) = x^\top P x - \ell(x, Kx) \le \alpha\)。因此椭球 \(\{x^\top P x \le \alpha\}\) 对任意 \(\alpha\) 都是 \(A_K\) 的正不变集。
但 (A1) 还要求 \(\kappa_f(x) = Kx \in \mathbb{U}\)——这对 \(\alpha\) 施加了上界约束。
Step 5:最大化 \(\alpha\)
设约束集为半空间交集形式:\(c_\ell^\top x \le b_\ell\),\(\ell = 1, \dots, L\)(将 \(|Kx| \le u_{\max}\) 和 \(|x| \le x_{\max}\) 统一写成此形式)。椭球 \(\{x^\top P x \le \alpha\}\) 内切于第 \(\ell\) 个半空间的条件为:
最大 \(\alpha\) 的解析公式为:
推导过程:椭球 \(\{x : x^\top P x \le \alpha\}\) 上 \(c^\top x\) 的最大值通过 Lagrange 乘子法求解:\(\nabla(c^\top x) = \lambda \nabla(x^\top P x)\) 得 \(c = 2\lambda P x\),即 \(x = \frac{1}{2\lambda} P^{-1} c\)。代入约束 \(x^\top P x = \alpha\) 得 \(\frac{1}{4\lambda^2} c^\top P^{-1} c = \alpha\),即 \(\lambda = \frac{1}{2}\sqrt{c^\top P^{-1} c / \alpha}\)。最大值为 \(c^\top x = \frac{1}{2\lambda} c^\top P^{-1} c = \sqrt{\alpha \cdot c^\top P^{-1} c}\)。令其 \(\le b\) 得 \(\alpha \le b^2 / (c^\top P^{-1} c)\)。对所有约束取最小即得 \(\alpha^\ast\)。
非线性推广:Chen-Allgöwer 1998 Quasi-Infinite Horizon¶
Chen, Allgöwer (1998), A quasi-infinite horizon nonlinear model predictive control scheme with guaranteed stability, Automatica 34(10):1205-1217, DOI: 10.1016/S0005-1098(98)00073-9。
对非线性系统 \(f \in C^1\),\(f(0,0) = 0\):
- 在原点线性化:\(A = \partial_x f|_0\),\(B = \partial_u f|_0\);
- 解 DARE 得 \(P\),LQR 得 \(K\)——与线性情况相同;
- 关键区别:需要找到 \(\alpha_{\text{nl}} > 0\) 使得在缩小的椭球 \(\{x^\top P x \le \alpha_{\text{nl}}\}\) 内,非线性项不破坏 (A2)。
具体地,存在 \(\alpha_{\text{nl}} > 0\) 与 \(\kappa \in (0,1)\) 使
为什么需要缩小椭球?线性情况下 (A2) 以等号全局成立,但非线性系统在远离原点处,高阶项 \(f(x, Kx) - A_K x = O(\|x\|^2)\) 可能让 Lyapunov 下降变成上升。缩小 \(\alpha\) 使得在椭球内 \(O(\|x\|^2)\) 项足够小,被线性项的下降"吃掉"。
\(\alpha_{\text{nl}}\) 的详细计算步骤
Chen-Allgöwer 的方法本质上是在验证线性化 Lyapunov 不等式在有限椭球内是否被非线性项"颠覆"。完整步骤如下:
Step 1:量化非线性余项
设 \(f(x, Kx) = A_K x + r(x)\),其中 \(r(x) = O(\|x\|^2)\) 是高阶项。在椭球 \(\{x^\top P x \le \alpha\}\) 内估计 \(r\) 的范数:
\(L_r\) 可以通过 \(f\) 的二阶导数的 Lipschitz 常数估计:\(L_r \le \frac{1}{2}\max_{x^\top P x \le \alpha} \|\nabla^2 f(x, Kx)\|\)。
Step 2:建立修正后的 Lyapunov 下降
第一项由 DARE 恒等式给出 \(= -x^\top(Q + K^\top R K)x\)。第二项和第三项可界定为:
Step 3:找到 \(\alpha_{\text{nl}}\) 使 Lyapunov 下降不被破坏
需要:
对任意 \(x\) 满足 \(\|x\| \le \sqrt{\alpha/\lambda_{\min}(P)}\)(椭球内的最大 \(\|x\|\))。
化简得:
取 \(\|x\|_{\max} = \sqrt{\alpha_{\text{nl}}/\lambda_{\min}(P)}\),解这个关于 \(\alpha_{\text{nl}}\) 的不等式即得。
Step 4:取 \(\alpha_{\text{nl}}\) 与约束 \(\alpha^\ast\) 的较小者
其中 \(\alpha^\ast\) 来自 §3 的线性约束椭球切约束。
\(\alpha_{\text{nl}}\) 的计算方法:
| 方法 | 适用系统 | 工具 |
|---|---|---|
| 二分法网格搜索 | 低维 (\(n \le 4\)) | MATLAB/Python |
| LMI 半定规划 | 多项式系统 | YALMIP + MOSEK |
| SOS (Sum-of-Squares) | 多项式系统 | SOSTOOLS / SumOfSquares.jl |
| 采样验证 | 通用 | Monte Carlo + Lipschitz 界 |
LMI 方法:联合优化 \(P\) 和 \(\alpha\)¶
对于想要超越"先解 DARE 再缩椭球"的更优方案,可以把终端集设计写成半定规划 (SDP):
通过 Schur 补和变量替换 \(Y = KP^{-1}\) 可化为标准 LMI。YALMIP + SeDuMi/MOSEK 求解。
工程含义¶
本质洞察:DARE 解 \(P\) 的物理意义是"从当前状态出发,用 LQR 控制到原点的总代价"。它是无限时域 LQR 值函数的 Hessian。把它作为终端代价,意味着告诉 MPC:"\(N\) 步之后,假设你切换到 LQR,剩余代价就是 \(x_N^\top P x_N\)"——这正是"有限时域 + 无限尾"的精确对接。
机器人实操清单:
- 7-DoF 机械臂关节调节 → 线性化 + DARE,\(\alpha\) 由关节力矩限制决定;
- 四足 MPC 落脚点优化 → SRBD 模型线性化,\(P\) 对应 centroidal 动量代价;
- AGV 轨迹跟踪 → 自行车模型线性化,\(\alpha\) 由转向角限制决定;
- 四旋翼姿态 MPC → 绕悬停点线性化(注意避免 Euler 万向节锁)。
千万不要凭感觉手调 \(V_f\) 的权重——那几乎必然破坏 (A2)。唯一安全的做法是用 DARE。
跨领域类比:DARE 终端设计在 MPC 中的角色,类似于 Kalman 滤波中的 Riccati 方程——两者都是通过解一个代数 Riccati 方程得到"最优的二次型"。前者用于代价终端近似(MPC),后者用于误差协方差稳态(估计)。数学形式完全对称,物理含义互补——一个在控制端,一个在估计端。
⚠️ 常见陷阱¶
| # | 陷阱 | 后果 | 对策 |
|---|---|---|---|
| 1 | \(P\) 不是 DARE 解而是随意取的正定矩阵 | (A2) 破坏,闭环漂移/发散 | 严格解 DARE,验证 \(A_K^\top PA_K - P = -(Q + K^\top RK)\) |
| 2 | 忘记检查 \(Kx \in \mathbb{U}\) 导致 \(\alpha\) 取太大 | 终端集内约束违反 → 递归可行性破坏 | 用椭圆切约束公式 \(\alpha^\ast = \min_\ell b_\ell^2 / (c_\ell^\top P^{-1} c_\ell)\) |
| 3 | 非线性系统直接用线性 DARE 的 \(\alpha\)(不缩小) | Chen-Allgöwer 条件失效,高阶项破坏 Lyapunov | 用 SOS 或二分法确定 \(\alpha_{\text{nl}}\) |
| 4 | \((A, B)\) 不可镇定(如全驱动卫星的姿态动力学取连续时间 \(A\) 但忘离散化) | DARE 无解 | 确认离散化后的 \((A_d, B_d)\) 可镇定 |
练习¶
- 手算题:对双积分器 \(A = \begin{bmatrix}1&0.1\\0&1\end{bmatrix}\),\(B = \begin{bmatrix}0.005\\0.1\end{bmatrix}\),\(Q = I\),\(R = 1\),\(|u| \le 1\)。求 \(P\),\(K\),\(\alpha^\ast\)。
- 编程题:用
scipy.linalg.solve_discrete_are验证上题结果,画出椭球 \(X_f\) 与约束多面体的关系。 - 思考题:如果系统有两个输入约束 \(|u_1| \le 1\),\(|u_2| \le 2\),\(\alpha^\ast\) 的公式如何修改?
§4 无终端约束 MPC:\(N\) 足够大即稳 ⭐⭐¶
动机:终端集的"代价"¶
§3 的 DARE 流水线很优雅,但有一个实际问题:终端约束 \(x_N \in X_f\) 限制了可行域 \(X_N\)。对于强非线性或大扰动系统(如四足在崎岖地形),终端椭球可能很小,导致 MPC 只能从很近的初始状态出发。
工业实践中,许多 MPC 实现直接设 \(X_f = \mathbb{X}\)(无终端约束)、\(V_f = 0\)(无终端代价),只保留阶段代价和约束。理论上这叫**无终端约束 MPC (unconstrained-horizon MPC)**。问题是:为什么它还能稳?
三大流派¶
视角 A:CLF 作终端代价(Jadbabaie-Hauser 2005)
Jadbabaie, Hauser (2005), On the stability of receding horizon control with a general terminal cost, IEEE TAC 50(5):674-678, DOI: 10.1109/TAC.2005.847055。
核心思想:如果 \(V_f\) 是某种"足够好的"近似值函数(不需要严格满足 A2),只要 \(N\) 够大,MPC 仍稳定。具体地,若 \(V_f\) 满足
其中 \(\varepsilon\) 在足够多步后被阶段代价的累积"稀释",则存在 \(N^\ast\) 使 \(N \ge N^\ast\) 时闭环稳定。
视角 B:Cost controllability(Grüne 2009 / Grüne-Pannek 2017)
这是最具操作性的理论——给出了 \(N^\ast\) 的**显式公式**。
Grüne (2009), Analysis and design of unconstrained nonlinear MPC schemes for finite and infinite dimensional systems, SIAM J. Control Optim. 48(2):1206-1228, DOI: 10.1137/070707853。
视角 C:受约束版本(Limón-Álamo-Salas-Camacho 2006)
Limón et al. (2006), On the stability of constrained MPC without terminal constraint, IEEE TAC 51(5):832-836, DOI: 10.1109/TAC.2006.875014。
在受约束线性系统上给出吸引域的显式刻画。
Grüne-Pannek 理论的完整展开¶
定义(指数 cost controllability):存在常数 \(C \ge 1\),\(\sigma \in (0,1)\),使对所有 \(x \in \mathbb{X}\),存在可行控制 \(\mathbf{u}\) 满足
其中 \(\ell^\ast(x) := \min_u \ell(x, u)\)。
直觉:系统能以指数速率"衰减"阶段代价。这对线性系统 \((A, B)\) 在 LQR 反馈 \(K\) 下自然满足——\(\|A_K^k x\| \le \|A_K\|^k \|x\|\),若 \(\|A_K\| = \rho < 1\),则 \(\ell(x_k, Kx_k) \le c \rho^{2k} \ell^\ast(x)\),即 \(C = c\),\(\sigma = \rho^2\)。
定理 4.1(Grüne-Pannek \(\alpha_N\) 主定理)
定义
则存在次优指数
若 \(\alpha_N > 0\),则无终端约束 MPC 闭环渐近稳定,且性能界 \(V_\infty^{\kappa_N}(x) \le \alpha_N^{-1} V_\infty^\ast(x)\)。
完整证明(relaxed DP,3 步):
Step 1:由 cost controllability,\(V_N^\ast(x) \le \gamma_N \ell^\ast(x)\)。
证明:最优不劣于 cost-controllable 序列的代价,即 \(V_N^\ast(x) \le \sum_{k=0}^{N-1} C \sigma^k \ell^\ast(x) = \gamma_N \ell^\ast(x)\)。
Step 2(relaxed DP 不等式):寻找 \(\alpha \in (0, 1]\) 使
若此不等式成立,\(V_N^\ast\) 是 Lyapunov 函数(因为 \(\alpha \ell(x, \kappa_N) \ge \alpha \alpha_\ell(\|x\|)\))。
Step 3:把 \(\alpha\) 显式解出。利用 DP 递归和 cost controllability 的界,经过代数操作(详见 Grüne-Pannek 2017 Theorem 6.15)得出 \(\alpha_N\) 的公式。关键是 \(\gamma_N\) 越大(\(N\) 越大),\(\alpha_N\) 越接近 1,性能越好。\(\blacksquare\)
\(\alpha_N\) 公式的完整推导步骤¶
Grune-Pannek 2017 (Theorem 6.15) 的推导较为抽象。这里给出一个简化但完整的推导路径,帮助读者理解 \(\alpha_N\) 公式的来源。
Step 1(值函数上界)
由 cost controllability:存在可行控制 \(\mathbf{u}\) 使 \(\ell(x_k, u_k) \le C\sigma^k\ell^\ast(x)\)。因此:
其中 \(\gamma_N = C\frac{1-\sigma^N}{1-\sigma}\)。
Step 2(值函数下界)
\(V_N^\ast(x) \ge \ell(x, u_0^\ast) \ge \ell^\ast(x)\)(最优第一步不劣于任意可行 \(u\))。
因此 \(\ell^\ast(x) \le V_N^\ast(x) \le \gamma_N \ell^\ast(x)\)——值函数被阶段代价的 \([1, \gamma_N]\) 倍夹住。
Step 3(relaxed DP 不等式)
无终端约束时,标准 Lyapunov 下降(\(V_N^\ast(x^+) \le V_N^\ast(x) - \ell(x, u_0^\ast)\))不再直接成立。但通过 cost controllability 的界,可以证明存在 \(\alpha \in (0, 1]\) 使:
\(\alpha\) 取决于 \(\gamma_N\)。直觉:\(\gamma_N\) 越小(\(N\) 越大、\(\sigma\) 越小),\(\alpha\) 越接近 1(越接近精确 Lyapunov 下降)。
Step 4(\(\alpha_N\) 的显式求解)
通过递归展开 relaxed DP 不等式(对 \(N-1, N-2, \ldots, 2\) 步 OCP),得到:
当 \(\gamma_N\) 足够大(\(N\) 足够大)时,\((\gamma_N - 1)^N\) 相对于分母增长更快,\(\alpha_N \to 1\)。当 \(\gamma_N\) 太小(\(N\) 太小),\(\alpha_N\) 可能为负——此时无终端约束 MPC 不稳定。
最小预测步数估算¶
实操方法:
- 估计 \(C\) 和 \(\sigma\):对线性系统,\(C \approx \sigma_{\max}(P)/\lambda_{\min}(Q)\),\(\sigma \approx \rho(A_K)^2\);
- 从 \(N = 1\) 开始递增,计算 \(\alpha_N\),找到使 \(\alpha_N > 0\) 的最小 \(N^\ast\);
- 实际取 \(N = 1.5 N^\ast\) 留余量。
Python 实现:
def compute_alpha_N(C, sigma, N):
"""计算 Grune-Pannek 的 alpha_N"""
gamma = [0, 0] # gamma_0, gamma_1 未定义
for k in range(2, N+1):
gamma.append(C * (1 - sigma**k) / (1 - sigma))
# 计算 alpha_N
numerator = 1.0
for k in range(2, N+1):
numerator *= (gamma[k] - 1)
if numerator == 0:
return 0.0
alpha = 1 - (gamma[N] - 1)**N / numerator
return alpha
# 示例:双积分器
C, sigma = 3.0, 0.64
for N in range(2, 20):
alpha = compute_alpha_N(C, sigma, N)
print(f"N={N:2d}: alpha_N = {alpha:.4f} {'STABLE' if alpha > 0 else 'UNSTABLE'}")
典型数值:
| 系统 | \(C\) | \(\sigma\) | \(N^\ast\) |
|---|---|---|---|
| 双积分器(\(\rho(A_K) = 0.8\)) | 3 | 0.64 | 4 |
| 倒立摆(\(\rho(A_K) = 0.9\)) | 10 | 0.81 | 8 |
| 四旋翼(\(\rho(A_K) = 0.95\)) | 20 | 0.90 | 15 |
工程经验:\(N = 10 \sim 30\) 在 100Hz-1kHz 控制回路中足够让四足/无人机 MPC 稳定——ETH OCS2、acados 教程中的典型配置。
反事实推理:如果 \(N\) 不够大(\(\alpha_N < 0\))会怎样?MPC 可能"一直能求解但永远收敛不到目标"——状态在目标附近来回摆动。这是因为有限视野的"近视效应":MPC 在当前步选了局部最优但长期有害的动作(类似贪心算法的陷阱)。
⚠️ 常见陷阱¶
💡 概念误区:把 Jadbabaie-Hauser 的"general terminal cost"误读成"任意代价都行"
定理要求 \(V_f\) 至少提供无限时域代价的局部上界近似,否则 \(N^\ast\) 可能趋于无穷。一个完全随机的 \(V_f\)(如常数)不满足条件。
🧠 思维陷阱:认为"去掉终端约束一定更好"
去掉终端约束确实扩大了可行域 \(X_N\)(因为约束少了),但代价是需要更大的 \(N\) 来保证稳定性。这是**可行域 vs 计算量**的权衡。在嵌入式系统上 \(N\) 受限时,带终端约束的短 \(N\) MPC 可能比无终端约束的长 \(N\) MPC 更适合。
练习¶
- 计算题:若 \(C = 2\),\(\sigma = 0.5\),计算 \(N = 3, 5, 7, 10\) 时的 \(\alpha_N\),确定最小 \(N^\ast\)。
- 思考题:对一个 Schur 不稳定系统(\(\rho(A) > 1\)),cost controllability 是否自动满足?需要什么额外条件?
- 编程题:对逆摆系统,用 CasADi 分别跑 \(N = 3, 10, 30\) 的无终端约束 MPC,画出闭环轨迹并验证 \(\alpha_N\) 公式的预测。
§5 Economic MPC:Dissipativity 与 Rotated Cost ⭐⭐⭐¶
动机:当"最优"不是"跟踪"¶
四足的能耗最小化、机械臂的负载均衡、无人机的 minimum-time、电池 SoC 调度——这些目标本质上是**经济指标** \(\ell_e(x, u)\),而非跟踪型 \(\|x - x_s\|^2 + \|u - u_s\|^2\)。
关键区别:经济代价 \(\ell_e\) 在最优稳态 \((x_s, u_s)\) 处不为零(比如能耗为正常数),且不一定正定。Mayne 2000 的 (A3) 要求 \(\ell(x,u) \ge \alpha_\ell(\|x\|)\)——对 \(\ell_e\) 这通常不成立。那么 economic MPC 如何保证稳定性?
最优稳态¶
这是一个静态优化问题:找到约束下经济指标最低的稳态操作点。
Strict Dissipativity¶
Angeli, Amrit, Rawlings (2012), On average performance and stability of economic model predictive control, IEEE TAC 57(7):1615-1626, DOI: 10.1109/TAC.2011.2176174。
定义:系统关于代价 \(\ell_e\) 在稳态 \((x_s, u_s)\) 处**strictly dissipative**,若存在存储函数 \(\lambda: \mathbb{X} \to \mathbb{R}\)(连续、\(\lambda(x_s) = 0\))与 \(\mathcal{K}_\infty\) 函数 \(\rho\),使
直觉类比:这像热力学中的耗散不等式。\(\lambda\) 是"内部能量"(存储),\(\ell_e - \ell_e(x_s, u_s)\) 是"供给率"(外部输入),\(\rho\) 是"真正被耗散掉的部分"。系统沿任何轨迹运行时,存储的增加不超过供给减去耗散——这意味着系统"不可能永远偏离稳态而不付出代价"。
Rotated Cost 变换¶
Diehl, Amrit, Rawlings (2011), A Lyapunov function for economic optimizing model predictive control, IEEE TAC 56(3):703-707, DOI: 10.1109/TAC.2010.2101291。
定义旋转代价:
关键性质:
- Strict dissipativity 等价于 \(\tilde{\ell}(x, u) \ge \rho(\|x - x_s\|) \ge 0\)——旋转后代价**正定**!
- \(\tilde{\ell}(x_s, u_s) = 0\)——稳态处为零。
- 旋转不改变最优解(telescope 消去 \(\lambda\) 项)。
因此,旋转后的 MPC 满足 Mayne 2000 的 (A3),可以套用标准四条件理论!
本质洞察:Rotated cost 的天才之处在于:它把一个"经济指标不正定"的问题,通过一个存储函数 \(\lambda\) 的"坐标变换",转化为一个等价的"跟踪型正定代价"问题——而不改变最优解。Economic MPC 的稳定性分析因此完全归约到标准理论。
Rotated Cost 的完整推导¶
Rotated cost 变换是 economic MPC 理论中最精巧的技术之一。让我们逐步展示它如何把"非正定经济代价"转化为"正定跟踪代价"。
Step 1:定义旋转后的 OCP
原始 OCP:\(\min \sum_{k=0}^{N-1} \ell_e(x_k, u_k) + V_{f,e}(x_N)\)
旋转后 OCP:\(\min \sum_{k=0}^{N-1} \tilde\ell(x_k, u_k) + \tilde V_f(x_N)\)
其中 \(\tilde\ell(x,u) = \ell_e(x,u) - \ell_e(x_s, u_s) + \lambda(x) - \lambda(f(x,u))\),\(\tilde V_f(x) = V_{f,e}(x) - \lambda(x)\)。
Step 2:验证旋转不改变最优解
计算旋转后 OCP 的总代价:
加上终端代价:\(\tilde V_f(x_N) = V_{f,e}(x_N) - \lambda(x_N)\)。
总代价:\(\sum \ell_e + V_{f,e}(x_N) - N\ell_e(x_s,u_s) + \lambda(x_0) - 2\lambda(x_N)\)。
由于 \(-N\ell_e(x_s,u_s) + \lambda(x_0)\) 是常数(不依赖控制序列),且 \(-2\lambda(x_N)\) 的变化对固定终端约束 \(x_N = x_s\) 也是常数(\(\lambda(x_s) = 0\)),最优控制序列不变。
Step 3:验证旋转后代价正定
由 strict dissipativity:
因此 \(\tilde\ell \ge 0\),\(\tilde\ell(x_s, u_s) = 0\),且 \(\tilde\ell(x,u) \ge \rho(\|x - x_s\|) > 0\) for \(x \ne x_s\)。
这正是 Mayne 2000 (A3) 所要求的正定性!
Step 4:套用标准四条件
旋转后 OCP 完全满足 (A1)-(A3)——因为 \(\tilde\ell\) 正定、终端集正不变、终端代价 \(\tilde V_f\) 可以设计为满足 (A2)。所以标准 Lyapunov 证明直接适用。
本质洞察:Rotated cost 的深层含义是——存储函数 \(\lambda\) 扮演了"坐标变换"的角色。它把经济代价空间中的非凸/非正定 landscape 转化为跟踪代价空间中的凸/正定 landscape,而不改变最优轨迹。这类似于物理学中选择合适的坐标系简化运动方程——问题的物理没变,但数学处理变得容易得多。
Economic MPC 的工程诊断流程¶
在实际应用中,如何判断你的经济代价是否满足 strict dissipativity?以下是一个系统化的诊断流程:
Step 1:求最优稳态
解 \(\min \ell_e(x,u)\) s.t. \(x = f(x,u)\)(静态优化问题)。如果有多个稳态极小点,dissipativity 可能不成立(存在多个吸引子→极限环)。
Step 2:检验 Turnpike 性质
对不同初始条件跑开环最优控制(长时域 \(N = 100\)-\(1000\))。如果最优轨迹的中段都紧贴 \((x_s, u_s)\)(高速公路效应),则 dissipativity 很可能成立。
Step 3:构造 \(\lambda\)
对线性系统 + 二次经济代价,\(\lambda(x) = (x-x_s)^\top \Lambda (x-x_s) + \lambda_0^\top(x-x_s)\) 是自然候选。\(\Lambda\) 和 \(\lambda_0\) 通过解一个 SDP 确定。
对非线性系统,用 SOS(Sum-of-Squares)编程寻找多项式 \(\lambda\)。
Step 4:验证不等式
在 \(\mathbb{X} \times \mathbb{U}\) 的网格上检验 \(\tilde\ell(x,u) \ge \rho(\|x-x_s\|)\)。如果存在违反点,或者 \(\rho\) 的下界太小(如 \(\rho(r) = 10^{-8}r^2\)),说明 dissipativity 虽然在理论上成立但实际余量不足——可能需要修改代价或约束。
核心定理¶
定理 5.1(Angeli-Amrit-Rawlings 2012 主定理)
在 strict dissipativity、终端约束 \(x_N = x_s\)(或带终端代价/终端集的弱化版本)下:
- 平均性能:\(\limsup_{T \to \infty} \frac{1}{T} \sum_{k=0}^{T-1} \ell_e(x_k, u_k) \le \ell_e(x_s, u_s)\);
- 渐近稳定:\((x_s, u_s)\) 是闭环的渐近稳定平衡。
Dissipativity 的必要性与 Turnpike 等价¶
Müller-Angeli-Allgöwer (2015), IEEE TAC 60(6):1671-1676:在温和条件下,strict dissipativity 是 economic MPC 渐近稳定的**必要条件**。
Grüne-Müller (2016), On the relation between strict dissipativity and turnpike, Syst. Control Lett. 90:45-53:strict dissipativity ⟺ turnpike property。
Turnpike(收费公路)性质:最优轨迹的中段几乎全程紧贴最优稳态 \(x_s\)——像开高速公路。无论起点和终点如何变化,最优轨迹都会"上高速、走主路、下高速"。
工程诊断¶
何时需要检验 dissipativity?当你的 MPC 代价不是标准二次跟踪型时:
- 最小化能耗 \(\ell_e = P_{\text{motor}}(u)\)
- 最大化产率 \(\ell_e = -\text{yield}(x, u)\)
- 时间最优 \(\ell_e = 1\)(所有步等权)
- 经济调度 \(\ell_e = \text{price}(t) \cdot P(u)\)
SOS 验证 dissipativity:对多项式系统,把 strict dissipativity 不等式写成 SOS 约束,用 SOSTOOLS 或 YALMIP 求解 \(\lambda\)。若找到可行的 \(\lambda\),则 dissipativity 成立。
⚠️ 常见陷阱¶
| # | 陷阱 | 后果 | 对策 |
|---|---|---|---|
| 1 | 对 economic 代价直接用 \((A3)\) | 理论框架不适用,可能出现周期极限环 | 用 dissipativity + rotated cost 分析 |
| 2 | \(\lambda\) 的选取不满足连续性 | 旋转后代价的正定性退化 | 用 SOS/LMI 系统性求解 |
| 3 | 终端约束设为 \(x_N = x_s\) 但 \(x_s\) 不在 \(\mathbb{X}\) 内部 | 可行域为空 | 检查最优稳态的约束活跃性 |
练习¶
- 概念题:对线性系统 \(x^+ = Ax + Bu\) 和二次经济代价 \(\ell_e = x^\top H x + u^\top G u\)(\(H\) 不定),写出 strict dissipativity 条件,并说明 \(\lambda\) 应取什么形式。
- 编程题:构造一个 economic MPC 使机器人以最小能耗保持匀速直线运动。验证 dissipativity 并与跟踪型 MPC 对比能耗。
§6 Tube MPC:鲁棒递归可行性的标准答案 ⭐⭐¶
动机¶
实际系统总有扰动:地形不平、摩擦变化、风扰、SLAM 估计误差。标称 MPC 假设模型完美,这在边界工况下是危险的。Tube MPC 是处理有界扰动的"标准答案"。
Mayne, Seron, Raković (2005), Robust model predictive control of constrained linear systems with bounded disturbances, Automatica 41(2):219-224, DOI: 10.1016/j.automatica.2004.08.019。
问题设置¶
名义系统(忽略扰动):\(z_{k+1} = Az_k + Bv_k\)。
控制律结构:
\(K\) 使 \(A_K := A + BK\) Schur。\(v_k\) 是名义 MPC 产生的前馈,\(K(x_k - z_k)\) 是把真实状态"拉回"名义轨迹的反馈。
误差动力:\(e_k := x_k - z_k\) 满足
这是一个被扰动驱动的稳定线性系统。
鲁棒正不变集 (RPI)¶
定义:\(\mathbb{Z}\) 称为 \((A_K, \mathbb{W})\) 的 RPI(Robust Positively Invariant set),若
几何直觉:无论扰动如何选取(只要 \(w \in \mathbb{W}\)),从 \(\mathbb{Z}\) 出发的误差永远留在 \(\mathbb{Z}\) 内。\(\mathbb{Z}\) 是误差的"保险箱"。
最小 RPI (mRPI):
这是所有 RPI 中最小的——任何 RPI 都包含 \(\mathbb{Z}_\infty\)。级数收敛因为 \(A_K\) Schur(\(\|A_K^i\| \to 0\))。
mRPI 计算(Raković et al. 2005)¶
Raković, Kerrigan, Kouramas, Mayne (2005), Invariant approximations of the minimal robust positively invariant set, IEEE TAC 50(3):406-410, DOI: 10.1109/TAC.2005.843854。
找整数 \(s\) 与 \(\alpha \in [0,1)\) 使 \(A_K^s \mathbb{W} \subseteq \alpha \mathbb{W}\)。则
是 \((A_K, \mathbb{W})\) 的 RPI 外逼近,且 \(\mathbb{Z}_\infty \subseteq \mathbb{Z}_\alpha^s \subseteq \mathbb{Z}_\infty \oplus B_\varepsilon\)。
算法:对给定精度 \(\varepsilon > 0\),迭代 \(s = 1, 2, \dots\) 直到 \(A_K^s \mathbb{W} \subseteq \alpha \mathbb{W}\)(support function 验证)。对 \(A_K\) 谱半径 \(\rho < 1\),\(s = O(\log(1/\varepsilon) / \log(1/\rho))\)。
约束收紧¶
名义 OCP 使用**收紧后的约束**:
其中 Pontryagin 差 \(A \ominus B := \{a : a + b \in A,\ \forall b \in B\}\)。
直觉:名义轨迹留出 \(\mathbb{Z}\) 大小的"安全余量",使得真实轨迹(= 名义 + 误差 \(\in \mathbb{Z}\))仍在原始约束内。
主定理¶
定理 6.1(Mayne-Seron-Raković 2005)
若初始化 \(x_0 \in z_0 \oplus \mathbb{Z}\) 且名义 OCP 在 \(z_0\) 可行,则对任意容许扰动序列 \(\{w_k\} \subset \mathbb{W}\):
- 鲁棒递归可行性:名义 OCP 步步可行;
- 鲁棒约束满足:\(x_k \in \mathbb{X}\),\(u_k \in \mathbb{U}\);
- 鲁棒指数稳定性(集合意义):\(z_k \to 0\) 指数收敛,\(\mathrm{dist}(x_k, \mathbb{Z}) \to 0\)。
完整证明:
Step 1(误差有界):\(e_0 \in \mathbb{Z}\)(初始化保证)。由 \(\mathbb{Z}\) 是 RPI:\(e_1 = A_K e_0 + w_0 \in A_K \mathbb{Z} \oplus \mathbb{W} \subseteq \mathbb{Z}\)。归纳得 \(e_k \in \mathbb{Z}\),\(\forall k\)。
Step 2(约束满足):\(x_k = z_k + e_k \in (\mathbb{X} \ominus \mathbb{Z}) \oplus \mathbb{Z} \subseteq \mathbb{X}\);\(u_k = v_k + K e_k \in (\mathbb{U} \ominus K\mathbb{Z}) \oplus K\mathbb{Z} \subseteq \mathbb{U}\)。
Step 3(名义稳定):名义系统 \(z^+ = Az + Bv\) 在收紧约束 \(\mathbb{X} \ominus \mathbb{Z}\),\(\mathbb{U} \ominus K\mathbb{Z}\) 下,设计终端 \((V_f, X_f, \kappa_f)\) 满足 Mayne 2000 四条件 → \(z_k \to 0\)。
Step 4:\(x_k = z_k + e_k \to 0 + \mathbb{Z}\),即 \(x_k\) 收敛到 \(\mathbb{Z}\)(包含原点的小集合)。\(\blacksquare\)
Tube MPC 的整体架构¶
┌─────────────────────┐
真实系统 │ x_{k+1} = Ax + Bu + w │
└──────────┬──────────┘
│ x_k (测量)
▼
┌─────────────────────┐
状态分解 │ z_k = x_k - e_k │ (e_k ∈ Z 有界)
└──────────┬──────────┘
│ z_k
▼
┌──────────────────────────────────┐
名义 MPC │ min Σℓ(z,v) + V_f(z_N) │
│ s.t. z ∈ X⊖Z, v ∈ U⊖KZ │
└──────────────────┬───────────────┘
│ v_k
▼
┌──────────────────────────────────┐
控制律 │ u_k = v_k + K(x_k - z_k) │
└──────────────────────────────────┘
Tube MPC 设计的完整工程配方¶
以下是一个系统化的 Tube MPC 设计流程,从系统辨识到在线部署的每一步都给出具体操作。
Step 1:设计反馈 \(K\)
选择 \(K\) 使 \(A_K = A + BK\) 的谱半径 \(\rho(A_K)\) 尽量小。
| 方法 | 公式 | 特点 |
|---|---|---|
| LQR | \(K = -(R + B^\top PB)^{-1}B^\top PA\) | 平衡性能与能耗 |
| Deadbeat | \(K\) 使 \(A_K\) 所有特征值为 0 | 最小 \(\mathbb{Z}\),但 \(\|K\|\) 大 |
| \(H_\infty\) | 最小化 \(\|G_{w\to x}\|_\infty\) | 对最坏扰动最鲁棒 |
| LMI 联合优化 | \(\min \text{trace}(\mathbb{Z})\) s.t. LMI 稳定 | 直接最小化 tube 大小 |
经验建议:先用 LQR,如果 \(\mathbb{Z}\) 太大(收紧后可行域太小),再切 deadbeat 或 LMI。
Step 2:估计扰动集 \(\mathbb{W}\)
| 扰动来源 | 估计方法 | 典型形式 |
|---|---|---|
| SLAM 估计残差 | \(3\sigma\) 外接盒 | \(\mathbb{W} = [-w_x, w_x] \times \cdots\) |
| 模型不确定性 | Monte Carlo 仿真 | \(\mathbb{W} = \text{convhull}(\{w_i\})\) |
| 风扰(四旋翼) | 最大风速 × 空气动力学模型 | \(\|w\| \le w_{\max}\) |
| 地面摩擦变化(腿足) | \((\mu_{\min}, \mu_{\max})\) → 力偏差 | 矩形 |
关键原则:\(\mathbb{W}\) 宁可偏大不可偏小。偏大 → 保守(可行域缩小但安全);偏小 → 真实扰动跑出 tube → OCP infeasible → 系统崩溃。推荐:\(\mathbb{W}_\text{design} = 2 \times \mathbb{W}_\text{estimated}\)。
Step 3:计算 mRPI \(\mathbb{Z}\)
使用 Rakovic 2005 的算法。Python 实现(用 polytope 库):
import polytope
import numpy as np
def compute_mrpi(Ak, W, s_max=50, alpha_tol=0.001):
"""计算最小 RPI 的外逼近
Ak: 闭环矩阵 A+BK
W: 扰动集 (polytope.Polytope)
"""
Z = W.copy()
for s in range(1, s_max):
AkW = polytope.Polytope(W.A @ np.linalg.matrix_power(Ak, s), W.b)
# 检查 Ak^s W ⊆ alpha * W
alpha = max(W.A @ np.linalg.matrix_power(Ak, s) @ v / W.b
for v in polytope.extreme(W))
if alpha < alpha_tol:
Z = Z + AkW # Minkowski sum
Z = Z * (1 / (1 - alpha))
return Z, s
Z = Z + AkW
raise RuntimeError("mRPI 未收敛")
Step 4:约束收紧
Pontryagin 差用 polytope 库直接计算。如果收紧后可行域为空(\(\mathbb{X}_\text{tight} = \emptyset\)),说明 \(\mathbb{Z}\) 太大 → 改善 \(K\)(使 \(\rho(A_K)\) 更小)或放大 \(\mathbb{X}\)。
Step 5:在线运行
在线只解名义 OCP(规模与标称 MPC 完全相同!),用 \(v_k\) 作前馈,\(K(x_k - z_k)\) 作反馈。
MPT3 工具箱原生支持全部 5 步。Python 用 polytope + CasADi 组合。
Tube MPC 的完整稳定性证明链¶
把 Tube MPC 的稳定性证明与前面的 Mayne 四条件串联起来,形成一个完整的逻辑链:
Step 1: 设计 K → A_K Schur 稳定
↓
Step 2: 构造 RPI Z → 误差 e 有界
↓
Step 3: 约束收紧 X⊖Z, U⊖KZ → 名义系统约束
↓
Step 4: 名义 MPC 满足 Mayne 四条件 → z_k → 0 渐近稳定
↓
Step 5: x_k = z_k + e_k → 0 + Z → 集合渐近稳定
↓
Step 6: 约束满足保证 → x_k ∈ X, u_k ∈ U ∀k
每一步依赖前一步的结论。如果任何一步的假设被破坏(如 \(\mathbb{W}\) 估计过小、\(K\) 不稳定、收紧后可行域为空),整个证明链断裂——系统可能在某一时刻 OCP infeasible 或约束违反。
反事实推理:如果不做约束收紧直接用原始约束会怎样?名义轨迹满足 \(z_k \in \mathbb{X}\),但真实轨迹 \(x_k = z_k + e_k\) 可能超出 \(\mathbb{X}\)(因为 \(e_k \in \mathbb{Z}\) 不为零)。约束收紧正是为了给误差 \(e_k\) 预留空间——名义轨迹"缩回来" \(\mathbb{Z}\) 的距离,确保真实轨迹仍在原始约束内。
⚠️ 常见陷阱¶
| # | 陷阱 | 后果 | 对策 |
|---|---|---|---|
| 1 | \(\mathbb{W}\) 估计过小 | 真实扰动跑出 tube → OCP infeasible | \(\mathbb{W}\) 外扩 \(2\times\) 安全系数 |
| 2 | \(K\) 选得使 \(\rho(A_K)\) 太接近 1 | mRPI \(\mathbb{Z}\) 极大 → 收紧后约束为空 | 用 deadbeat 或 LQR 使 \(\rho(A_K)\) 足够小 |
| 3 | 约束收紧后 \(\mathbb{X} \ominus \mathbb{Z} = \emptyset\) | 名义 MPC 无可行域 | 减小 \(\mathbb{Z}\)(改善 \(K\))或放大 \(\mathbb{X}\) |
练习¶
- 手算题:给 \(A_K = 0.5 I_2\),\(\mathbb{W} = [-0.1, 0.1]^2\)。手算 \(\mathbb{Z}_\alpha^s\),取 \(s = 3\),\(\alpha = 0.125\)。
- 编程题:用 MPT3 或 Python
polytope库计算一个 2D 系统的 mRPI 并画图。 - 设计题:对四足机器人 SLAM 残差 \(\sim \mathcal{N}(0, \Sigma)\),如何选取 \(\mathbb{W}\)?讨论概率保证与保守性的权衡。
§7 ISS-MPC:最优值函数作 ISS-Lyapunov 函数 ⭐⭐⭐¶
动机¶
Tube MPC 需要**精确知道扰动界** \(\mathbb{W}\)。但很多时候扰动大小是渐变的(如风速变化),或者你只想分析"标称 MPC 对小扰动天然有多鲁棒"。ISS-MPC 理论回答这个问题。
ISS 定义回顾¶
离散系统 \(x^+ = F(x, w)\) 称为 ISS (Input-to-State Stable) 于域 \(\Xi\),若存在 \(\beta \in \mathcal{KL}\),\(\gamma \in \mathcal{K}\):
ISS-Lyapunov 函数 \(V: \Xi \to \mathbb{R}_{\ge 0}\):存在 \(\alpha_1, \alpha_2, \alpha_3 \in \mathcal{K}_\infty\),\(\sigma \in \mathcal{K}\):
核心定理¶
定理 7.1(Limón et al. 2009)
在以下条件下——\(f, \ell, V_f\) 在紧集上 Lipschitz(常数 \(L_f, L_\ell, L_V\));\(X_f\) 对 \((f, \kappa_f)\) 正不变;\(V_f(f(x,\kappa_f(x))) - V_f(x) \le -\ell(x, \kappa_f(x))\);\(\ell(x,u) \ge \alpha_\ell(\|x\|)\)——则 \(V_N^\ast\) 是 regional ISS-Lyapunov 函数:
工程含义:
- \(N\) 越大,扰动增益 \(L_V L_f^{N-1}\) 越大(若 \(L_f > 1\))。"预测越远 = 越怕扰动"——这解释了为什么超长 horizon 的 NMPC 在有扰动时不稳定。
- 标称 MPC 天然有一定鲁棒性(inherent robustness),只要扰动足够小——这解释了为什么工业 MPC 不配 tube 也能跑。
- Tube MPC 的优势:把 Lipschitz 扰动增益替换为常数 \(\mathbb{Z}\),不随 \(N\) 增长。
ISS-Lyapunov 不等式的完整推导¶
为了让读者真正理解 \(L_V L_f^{N-1}\) 的来源,我们给出完整推导。
设定:标称 MPC 的最优序列为 \(\mathbf{u}^\star(x)\),对应轨迹 \(x_0^\star = x, x_1^\star, \ldots, x_N^\star\)。现在系统受扰动 \(w\),真实下一步状态为 \(x^+ = f(x, u_0^\star) + w\)。
Step 1:构造候选序列
对 \(x^+\),构造候选序列 \(\tilde{\mathbf{u}} = (u_1^\star, \ldots, u_{N-1}^\star, \kappa_f(x_N^\star))\)(与无扰动情况相同)。但现在候选轨迹从 \(x^+\) 出发:
其中 \(\delta_1 = x^+ - x_1^\star = w + f(x, u_0^\star) - f(x, u_0^\star) = w\)(一步后误差 = 扰动)。
Step 2:传播误差
设 \(\tilde x_k = x_k^\star + \delta_k\),由动力学 Lipschitz 性:
所以 \(\|\delta_k\| \le L_f^{k-1}\|w\|\)。
Step 3:代价差异
候选代价与最优代价的差异来自两项:(a) 去掉了第一步代价 \(\ell(x, u_0^\star)\),(b) 轨迹偏离导致代价变化。
由 \(\ell\) 和 \(V_f\) 的 Lipschitz 性(常数 \(L_\ell, L_V\)):
Step 4:合并
当 \(L_f > 1\) 时,主导项是 \(L_V L_f^{N-1}\|w\|\)——这就是 ISS 增益。
工程含义:对不稳定系统(\(L_f > 1\)),\(N\) 越大 ISS 增益越大→对扰动越敏感。这解释了一个实践中常见的"反直觉"现象:把四足 MPC 的 horizon 从 20 增到 50 后,在有 SLAM 噪声的情况下反而更抖。
什么时候 ISS 增益是安全的?
当 \(L_f < 1\)(稳定系统),\(\sum L_f^k < 1/(1-L_f)\) 收敛,ISS 增益有限且不随 \(N\) 增大。对这类系统(如阻尼振子、稳定线性系统),MPC 天然鲁棒——即使不加 tube 也能承受小扰动。
当 \(L_f > 1\)(不稳定系统,如倒立摆),ISS 增益指数增长。此时**必须用 Tube MPC** 或限制 \(N\)——否则扰动通过 \(L_f^N\) 放大后可能把系统推出可行域。
ISS-MPC 与 Tube MPC 的统一视角¶
两者处理扰动的思路不同但互补:
| 维度 | ISS-MPC | Tube MPC |
|---|---|---|
| 扰动处理 | 隐式(\(V_N^\ast\) 天然鲁棒) | 显式(\(\mathbb{Z}\) + 约束收紧) |
| 需要知道 \(\mathbb{W}\) | 否(分析用 \(L_f\)) | 是(设计用 \(\mathbb{W}\)) |
| 约束保证 | 概率性(小扰动) | 确定性(\(w \in \mathbb{W}\)) |
| 计算开销 | 同标称 MPC | 同标称 MPC + 离线 RPI |
| 适用场景 | 扰动小且连续 | 扰动有界且可估计 |
本质洞察:ISS-MPC 告诉你"标称 MPC 本身有多鲁棒"(inherent robustness),Tube MPC 告诉你"如何系统化地增强鲁棒性"(designed robustness)。前者是分析工具,后者是设计工具。
练习¶
- 推导题:证明 ISS-Lyapunov 不等式中的 \(L_V L_f^{N-1}\) 项的来源。提示:比较扰动下的轨迹与名义轨迹的偏差(上述推导即答案骨架)。
- 思考题:对稳定系统(\(L_f < 1\)),\(N\) 增大反而让 ISS 增益变小。解释为什么(提示:\(L_V L_f^{N-1} \to 0\))。
- 计算题:对倒立摆 \(L_f = 1.5\),\(L_V = 10\),\(N = 20\)。计算 ISS 增益 \(L_V L_f^{N-1}\)。以 \(w = 0.01\) rad(SLAM 角度估计误差)代入,估计 \(V_N^\ast\) 的增量。是否可能导致 infeasibility?
§8 MPC 与 CLF/CBF 统一 ⭐⭐⭐¶
三条纽带¶
纽带一:\(V_N^\ast\) 即 CLF
由定理 2.1,\(V_N^\ast(x^+) - V_N^\ast(x) \le -\alpha_\ell(\|x\|)\)。CLF 定义(Sontag 1989)要求 \(\forall x \ne 0\),\(\exists u: \Delta V(x,u) < 0\)。MPC 的 \(\kappa_N(x)\) 恰是那个见证者。因此 MPC 构造了 CLF 的标准方式。
双重解读: - 角度 1(控制论):MPC 是一个隐式的 CLF 构造器——你不需要手动找 Lyapunov 函数,MPC 的优化过程自动构造了一个。 - 角度 2(优化论):CLF 是 MPC 的"降级版"——CLF-QP 只要求 \(\Delta V < 0\)(可行即可),MPC 要求代价最小化(最优)。MPC 比 CLF 更强。
纽带二:CBF 作 MPC 安全约束
Zeng, Zhang, Sreenath (2021), Safety-Critical Model Predictive Control with Discrete-Time Control Barrier Function, ACC 2021, arXiv: 2007.11718。
离散时间 CBF (DT-CBF):\(h: \mathbb{X} \to \mathbb{R}\),安全集 \(\mathcal{C} = \{x : h(x) \ge 0\}\)。约束:
等价于 \(h(x_{k+1}) \ge (1-\gamma) h(x_k)\)。把该约束加入 OCP 的每一步得 MPC-CBF。
纽带三:\(N = 1\) MPC 退化为 CBF-QP
这正是 CBF-QP 的标准形式(Ames-Xu-Grizzle-Tabuada 2017)。
MPC-CBF 的递归可行性问题¶
MPC-CBF 有一个标称 MPC 没有的新问题:CBF 约束可能与其他约束冲突,导致 OCP infeasible。
冲突场景示例:四足机器人在窄走廊中——CBF 约束要求"离墙至少 0.3 m"(安全),但走廊宽度只有 0.6 m(物理约束)。如果两侧 CBF 同时激活,\(h_\text{left}(x) \ge 0\) 和 \(h_\text{right}(x) \ge 0\) 可能无法同时满足。
标准解决方案:用松弛变量 \(\delta \ge 0\) 软化 CBF 约束:
在代价中加 \(w_\delta \|\delta\|^2\)(\(w_\delta \gg 1\))。这样 OCP 永远可行(\(\delta\) 可以无限大),但 CBF 违反会受到严厉惩罚。
更好的方案(CBF 优先级):
对多个 CBF 设置优先级——高优先级 CBF(如不跌倒)硬约束,低优先级 CBF(如离障碍物远一点)软约束。这与 §3.10 的 Box-DDP + ALTRO 的约束分类思想完全一致。
MPC、CLF、CBF 三者的统一理论框架¶
三者的关系可以用一个谱系图完整展示:
无限时域最优控制 (V*)
├── 有限近似: MPC (V_N*) ← 本章核心
│ ├── V_N* 是 CLF ← Lyapunov 稳定性
│ └── CBF 作安全约束 ← 可行域内安全
├── 退化 N=∞: CLF ← Sontag 1989
│ └── CLF-QP (N=1 MPC) ← 最简实现
└── 安全保证: CBF ← Ames 2014/2017
└── CBF-QP ← 安全+近最优
统一的数学结构:
这是一个 QP(如果 \(V, h, f\) 是二次/仿射的),否则是非线性规划。MPC 的 \(V_N^\ast\) 自动满足 CLF 条件(本章定理 2.1 的推论),CBF 约束可以作为路径约束加入 OCP。
机器人三选一决策:
| 需求 | 方案 | \(N\) | 计算量 | 理论保证 |
|---|---|---|---|---|
| 快响应、静态障碍 | CBF-QP | 1 | \(O(m^3)\) QP | 安全 + 稳定(如果 CLF+CBF 兼容) |
| 需前瞻、动态障碍 | MPC-CBF | 10-30 | \(O(N(n+m)^3)\) | 安全 + 稳定 + 最优 |
| 多约束 + 最优性 | 完整 MPC + CBF 约束 | 20-50 | 同上 | 最完整 |
| 极低延迟(1 kHz+) | CBF-QP + LQR ref | 1 | \(O(m^3)\) | 安全 + 局部稳定 |
⚠️ 常见陷阱¶
| # | 陷阱 | 后果 | 对策 |
|---|---|---|---|
| 1 | CBF 约束 \(\gamma > 1\) | 非 valid DT-CBF(安全集不正不变) | 确保 \(\gamma \in (0, 1]\) |
| 2 | MPC-CBF 递归可行性不自动保证 | 某步 OCP infeasible → 无安全输出 | 用 slack variable 软化 CBF 约束 |
| 3 | CBF 选取不当(如 \(h\) 不相对度 1) | 需要高阶 CBF 或 exponential CBF | 检查 \(h\) 的 relative degree |
练习¶
- 设计题:构造 2D 双积分器绕障碍 \(\|p - p_{\text{obs}}\| \ge r\) 的 MPC-CBF。写出完整 OCP 约束清单。
- 对比题:对同一避障场景,分别用 CBF-QP 和 MPC-CBF(\(N = 10\))仿真,比较轨迹平滑度和约束满足余量。
选学部分¶
§A Stochastic MPC ⭐⭐⭐⭐¶
三种范式¶
| 范式 | 核心思想 | 约束处理 | 计算量 | 适用 |
|---|---|---|---|---|
| Analytic SMPC | 已知矩,Cantelli/Chebyshev 界 | \(\Pr(g \le 0) \ge 1-\varepsilon\) → 确定性收紧 | 低 | Gaussian 扰动 |
| Scenario MPC | 采样 \(N_s\) 条扰动轨迹 | 对所有采样满足约束 | \(O(N_s \cdot \text{QP})\) | 未知分布 |
| DR-MPC | Wasserstein 球分布鲁棒 | 对球内最坏分布满足 | 高 | 小样本 + 分布偏移 |
关键参考:Mesbah (2016), Stochastic MPC: Overview and perspectives, IEEE CSM 36(6):30-44。
Scenario MPC 的样本复杂度:Calafiore-Campi 2006 的经典结果给出:
其中 \(d\) 为决策变量维度,\(\varepsilon\) 为违约概率,\(\beta\) 为置信度。
数值示例:四足 MPC \(d = 120\)(\(Nm = 12 \times 10\)),要求 \(\varepsilon = 0.01\)(99% 概率满足约束),\(\beta = 10^{-6}\)(极高置信),则 \(N_s \ge 200 \times (14 + 120) = 26800\) 条采样轨迹——计算上几乎不可行。这解释了为什么 Scenario MPC 在高维机器人中很少使用(主要用于化工过程控制,\(d < 20\))。
Analytic SMPC 的实用方法:对 Gaussian 扰动 \(w \sim \mathcal{N}(0, \Sigma_w)\),用 Cantelli 不等式把概率约束转化为确定性约束:
其中 \(\Sigma_x\) 是状态的协方差矩阵(由 Kalman 滤波或不确定性传播得到)。这是 Tube MPC 的**概率版**——收紧量由标准差决定而非最坏情况。
Stochastic MPC 与 Tube MPC 的对比¶
| 维度 | Tube MPC | Stochastic MPC |
|---|---|---|
| 扰动假设 | 有界集 \(\mathbb{W}\) | 概率分布 \(P_w\) |
| 约束满足 | 确定性(100%) | 概率性(\(\ge 1-\varepsilon\)) |
| 保守性 | 高(最坏情况设计) | 低(平均情况设计) |
| 适用 | 安全关键(航天、医疗) | 性能优先(自动驾驶、物流) |
§B 输出反馈 MPC ⭐⭐⭐¶
真实系统通常不能直接测量全部状态——需要从传感器输出 \(y = h(x) + v\) 估计状态。输出反馈 MPC 需要把状态估计与 MPC 控制器联合设计。
三类方案:
| 方案 | 估计器 | MPC | 理论保证 | 计算量 |
|---|---|---|---|---|
| Luenberger + Tube | 线性观测器 | Tube MPC | ISS(分离原理) | 低 |
| MHE + MPC | 移动时域估计 | 标准 MPC | 联合 ISS | 2× MPC |
| EKF + 名义 MPC | 扩展 Kalman | 标准 MPC | 无保证(工程可行) | 低 |
分离原理在 MPC 中的适用性
线性系统的分离原理(observer + controller 可以独立设计)在非线性 MPC 中**不成立**——观测误差可能把状态推出 MPC 可行域。但对**locally Lipschitz** 系统,可以通过 ISS 分析证明"如果观测误差有界、MPC 本身 ISS,则联合闭环 ISS"(Mayne et al. 2006)。
MHE + MPC 的统一框架
Moving Horizon Estimation(MHE)与 MPC 结构对称——都是有限时域优化:
| 维度 | MPC(前瞻) | MHE(回顾) |
|---|---|---|
| 时域 | 未来 \(N\) 步 | 过去 \(M\) 步 |
| 决策变量 | \(u_{0:N-1}\) | \(x_{-M}, w_{-M:-1}\) |
| 约束 | 状态/控制约束 | 动力学 + 测量一致性 |
| 代价 | 阶段代价 + 终端 | 残差代价 + 到达代价 |
Rao-Rawlings-Mayne (2003) 证明了 MHE + MPC 的联合闭环稳定性——前提是 MHE 的到达代价满足类似 MPC 终端代价的 Lyapunov 条件。
工程快做法(EKF + 名义 MPC)
大多数实机系统(包括 MIT Cheetah、ANYmal、Spot)使用 EKF + 名义 MPC——没有理论保证但实际工作良好。原因:(a) EKF 的估计误差通常很小(\(< 1\%\));(b) MPC 的 inherent robustness(§7 ISS)足以吸收估计误差;(c) MHE 的计算量是 MPC 的 2 倍,在实时系统中很难承受。
§C 可行性恢复 ⭐⭐⭐¶
当扰动超出 \(\mathbb{W}\) 导致 OCP infeasible 时,MPC 面临最危险的局面——控制器没有输出。以下是四种恢复策略,按优先级排序:
策略 1:软约束松弛(最推荐)
把硬约束 \(g(x,u) \le 0\) 替换为 \(g(x,u) \le \delta\),\(\delta \ge 0\),在代价中加 \(w_\delta \|\delta\|_1\)(\(w_\delta \gg 1\))。这样 OCP 永远可行——\(\delta\) 的值反映了约束违反程度。
工程实现:分层优先级。核心安全约束(如关节限位、倾倒防护)不松弛,性能约束(如速度限制、能耗限制)可松弛。
策略 2:备用控制器切换
如果 OCP 连续 \(k_{\text{fail}}\) 步 infeasible(如 \(k_\text{fail} = 3\)),切换到预设的备用控制器(如 LQR、PD 阻抗控制、或 safe fallback 姿态)。备用控制器不最优但保证安全。
策略 3:Shrinking horizon
如果 \(N\) 步 OCP infeasible,尝试 \(N-1\) 步、\(N-2\) 步、...、直到 \(N=1\)。Shrinking horizon 减少了终端约束的负担,可能在短视域内找到可行解。代价是稳定性保证减弱。
策略 4:\(\ell_1\) 精确罚
用 \(\ell_1\) 范数罚所有约束:\(\min J + \nu \sum_k \|g^+(x_k, u_k)\|_1\)(其中 \(g^+ = \max(0, g)\))。当 \(\nu\) 足够大时,\(\ell_1\) 罚是精确罚——可行解就是最优解,不可行时给出"最少违反"解。
机器人工程实践:ANYmal 和 Spot 使用策略 1+2 的组合。MIT Cheetah 使用纯策略 2(简单 PD fallback)。Talos 人形使用策略 1(分层软约束)。
§D Turnpike 理论 ⭐⭐⭐⭐¶
**Turnpike(收费公路)性质**是 economic MPC 的核心理论工具。它说的是:长时域最优轨迹的中段几乎全程紧贴最优稳态——像开高速公路。
精确定义(measure turnpike):对 \(T\)-步最优轨迹 \((x_0^\star, \ldots, x_T^\star)\),定义
若存在 \(C(\varepsilon) > 0\)(不依赖 \(T\))使 \(\sigma_T(\varepsilon) \le C(\varepsilon)\) 对所有 \(T\) 成立,则称系统具有 measure turnpike 性质。
直觉:\(\sigma_T\) 统计"偏离稳态超过 \(\varepsilon\) 的时间步数"。Turnpike 说这个数有上界且不随 \(T\) 增长——大部分时间都在高速公路上。
指数 turnpike(exponential turnpike):更强的形式——轨迹以指数速率接近 \(x_s\),在"高速公路段"以指数速率回到 \(x_s\):
前半部分 \(e^{-\lambda k}\) 是"上高速",后半部分 \(e^{-\lambda(T-k)}\) 是"下高速"。中间段 \(\|x_k^\star - x_s\| \le 2Ce^{-\lambda T/2}\)(指数小)。
与 Strict Dissipativity 的等价性
Grüne-Müller (2016) 证明了:在 LICQ + SOSC 条件下,strict dissipativity \(\iff\) exponential turnpike。
这个等价性的深层含义:
- 从 dissipativity 到 turnpike:如果系统存在存储函数 \(\lambda\) 使代价"可旋转为正定",则最优轨迹必然紧贴稳态——因为偏离稳态会产生净正代价。
- 从 turnpike 到 dissipativity:如果最优轨迹总是紧贴稳态,可以用最优值函数构造存储函数 \(\lambda\)。
工程应用:冻结中段 + 优化两端
Turnpike 性质启发了一种高效的近似方法:把长时域 OCP 分成三段——初始段(适应初始条件)、中间段(锁定为 \(x_s\))、终端段(到达终端约束)。只优化初始段和终端段,中间段直接设为稳态。这把计算量从 \(O(T)\) 降为 \(O(T_\text{init} + T_\text{term})\)。
§E 实时 MPC:RTI 与 Suboptimal ⭐⭐⭐¶
RTI 的核心定理
回顾 §3.12(MPC 数值求解)的 Diehl-Bock-Schlöder 2005 contractivity 定理:
这个定理的稳定性含义:如果 \(\kappa < 1\)(单步 SQP 收缩)且闭环 ISS 保证 \(\|\hat x_0^{k+1} - \hat x_0^k\|\) 有界,则 RTI 跟踪误差有界且渐近收敛。
从 RTI contractivity 到闭环 ISS 的完整推导
设闭环状态满足 \(x_{k+1} = f(x_k, u_0^k) + w_k\),其中 \(u_0^k\) 是 RTI 的次优控制。
Step 1. RTI 次优性:\(u_0^k \ne u_0^{\star,k}\),差异 \(\|u_0^k - u_0^{\star,k}\| \le \|w^k - w^\ast\| =: \delta^k\)。
Step 2. 代价次优性界:\(V_N(x^+, \tilde{\mathbf{u}}^k) \le V_N^\ast(x) - \ell(x, u_0^{\star}) + L_\text{cost}\delta^k\)。
Step 3. 联合 ISS:\(V_N^\ast(x^+) - V_N^\ast(x) \le -\alpha_\ell(\|x\|) + \sigma_w(\|w\|) + L_\text{cost}\delta^k\)。
由 contractivity,\(\delta^k \le \kappa^k \delta^0 + \frac{\omega}{1-\kappa}\sup\|\Delta x_0\|\),所以 \(\delta^k\) 有界→联合闭环 ISS。
Suboptimal MPC 的实用价值
Scokaert-Mayne-Rawlings (1999) 的核心定理:如果每步 MPC 返回的解 \(\tilde{\mathbf{u}}\) 满足 (a) 可行性和 (b) 代价不劣化(\(V_N(x^+, \tilde{\mathbf{u}}^+) \le V_N(x, \tilde{\mathbf{u}}) - \ell(x, \tilde u_0)\)),则闭环渐近稳定——不需要全局最优。
这个定理的革命性在于:它解放了 MPC 对"精确求解"的依赖。实际工程中只需保证: 1. 可行性(shift warm-start 自动满足) 2. 代价单调不增(一次 SQP 迭代 + Armijo 检查通常满足)
因此 RTI(单次迭代)在 suboptimal MPC 框架下是有理论保证的——只要 shift warm-start 构造的候选序列满足 Lyapunov 下降。
§F 采样数据 MPC ⭐⭐⭐⭐¶
问题:MPC 理论假设离散时间系统 \(x_{k+1} = f(x_k, u_k)\),但实际系统是连续时间 \(\dot x = f_c(x, u)\)。离散化引入误差——MPC 的稳定性保证是否在连续世界中仍然成立?
Nešić-Teel (2004) 的框架:semi-global practical asymptotic stability(SP-AS)。核心结论:如果离散 MPC 在 \(X_N\) 上渐近稳定,且积分器是一致的(即离散化误差 \(\to 0\) as \(\Delta t \to 0\)),则连续闭环在 \(X_N\) 的紧子集上 SP-AS——状态收敛到原点的 \(O(\Delta t)\) 邻域(而非精确原点)。
精确陈述:对任意 \(\varepsilon > 0\)(终态邻域)和 \(\Delta > 0\)(初态范围),存在 \(\Delta t^\star > 0\) 使对所有 \(\Delta t < \Delta t^\star\) 和 \(\|x_0\| \le \Delta\):
工程含义:\(\Delta t\) 越小,"实际稳定"越接近"理论稳定"。但 \(\Delta t\) 太小 → \(N = T/\Delta t\) 暴增 → 计算量线性增长。经验法则:\(\Delta t \le \tau_\text{sys}/5\)(系统最快时间常数的 1/5)。
§G 计算验证:LMI、SOS、MPT3 ⭐⭐⭐¶
终端设计的理论很优雅,但如何确保数值正确性?以下三个工具是验证的标准方法。
LMI 终端集设计的完整流程
对线性系统 \(x^+ = Ax + Bu\),终端集设计可以写成 SDP:
变量替换 \(W = P^{-1}\),\(Y = KW\),使问题线性化为 SDP。
YALMIP + MOSEK 实现:
W = sdpvar(n, n, 'symmetric');
Y = sdpvar(m, n, 'full');
alpha = sdpvar(1);
% Lyapunov 约束
F = [W >= 1e-6*eye(n)];
F = [F, [W, (A*W+B*Y)'; A*W+B*Y, W] >= 0];
% 约束切约束
for l = 1:num_constraints
F = [F, [alpha*b(l)^2, c(:,l)'; c(:,l), inv(W)] >= 0];
end
optimize(F, -alpha, sdpsettings('solver','mosek'));
P = inv(value(W));
K = value(Y) * P;
alpha_star = value(alpha);
SOS 验证 Lyapunov 函数
对多项式系统 \(f(x, Kx) = A_K x + r(x)\)(\(r\) 多项式高阶项),验证 (A2) 等价于检验:
SOS 可行性问题可由 SOSTOOLS(MATLAB)或 SumOfSquares.jl(Julia)自动求解。
using SumOfSquares, MosekTools
model = SOSModel(Mosek.Optimizer)
@variable(model, V, SOSPoly(monomials(x, 0:4))) # 四次 Lyapunov 候选
@constraint(model, -(V(f(x,K*x)) - V(x) + ell(x,K*x)) in SOSCone())
optimize!(model)
MPT3 工具箱
MPT3(Multi-Parametric Toolbox 3,MATLAB)是多面体运算和 MPC 设计的事实标准。核心功能:
| 功能 | 命令 | 用途 |
|---|---|---|
| 多面体定义 | Polyhedron(A, b) |
约束集 |
| Minkowski 和 | P1 + P2 |
RPI 累加 |
| Pontryagin 差 | P1 - P2 |
约束收紧 |
| 最大正不变集 | system.invariantSet() |
\(\mathcal{O}_\infty\) |
| 显式 MPC | mpc.toExplicit() |
PWA 控制律 |
| 可达集 | system.reachableSet() |
可行域 \(X_N\) |
Python 替代:polytope 库(pip install polytope)支持基本 polytope 运算,但功能不如 MPT3 完整。对高维问题(\(n > 5\)),polytope 运算的面数可能指数增长——需要用 zonotope 或 ellipsoidal 近似。
本章小结¶
| 主题 | 核心结论 | 设计工具 | 适用场景 |
|---|---|---|---|
| 四条件 (§2) | (A1)+(A2)+(A3) ⇒ 渐近稳定 | DARE/LQR | 所有 MPC |
| 终端设计 (§3) | \(V_f = x^\top P_{\text{DARE}} x\) 自动满足 A2 | solve_discrete_are |
可线性化系统 |
| 无终端 (§4) | \(\alpha_N > 0\) ⇒ 稳定 | Grüne 公式 | \(N\) 可取大时 |
| Economic (§5) | Strict dissipativity ⇒ rotated cost 正定 | SOS/LMI | 非跟踪目标 |
| Tube (§6) | RPI + 收紧 ⇒ 鲁棒递归可行 | MPT3 | 有界扰动 |
| ISS (§7) | \(V_N^\ast\) 是 ISS-Lyapunov | Lipschitz 分析 | 小扰动鲁棒 |
| CLF/CBF (§8) | \(V_N^\ast\) 即 CLF,CBF 作安全约束 | CasADi | 避障 |
累积项目:本章新增模块¶
项目:从零构建 MPC 稳定性验证工具链
- 前置章节已完成:Lyapunov 函数数值验证、KKT 条件求解器
- 本章新增:
- DARE 求解 + LQR 终端设计模块(输入 \(A, B, Q, R\),输出 \(P, K, \alpha^\ast\))
- Grüne \(\alpha_N\) 计算器(输入 \(C, \sigma\),输出 \(N^\ast\))
- mRPI 计算模块(输入 \(A_K, \mathbb{W}\),输出 \(\mathbb{Z}_\alpha^s\))
- Tube MPC 约束收紧器(输入 \(\mathbb{X}, \mathbb{U}, \mathbb{Z}\),输出收紧约束)
延伸阅读¶
| 资源 | 难度 | 内容 |
|---|---|---|
| Rawlings-Mayne-Diehl MPC 2e Ch.2 | ⭐⭐ | 四条件理论的权威来源 |
| Grüne-Pannek NMPC 2e Ch.5-7 | ⭐⭐⭐ | 无终端约束理论最深入 |
| Kouvaritakis-Cannon 2016 Ch.3-4 | ⭐⭐⭐ | Tube MPC 最权威 |
| Mayne 2014 Survey, Automatica | ⭐⭐ | MPC 稳定性 50 年回顾 |
| Angeli-Amrit-Rawlings 2012 | ⭐⭐⭐⭐ | Economic MPC 奠基 |
| Zeng-Sreenath 2021 GitHub | ⭐⭐ | MPC-CBF 可运行代码 |
🔧 故障排查手册¶
| 症状 | 可能原因 | 排查步骤 | 相关节 |
|---|---|---|---|
| 闭环状态缓慢漂移不收敛 | 阶段代价不含 \(x\)(A3 失效) | 1. 检查 \(Q\) 是否正定 2. 画 \(V_N^\ast(x_k)\) 曲线 | §2 |
| 第二拍 OCP infeasible | 终端集不正不变或扰动超界 | 1. 检查 \(\kappa_f(x) \in \mathbb{U}\) 2. 画终端集与约束的关系 | §3, §6 |
| 控制输出振荡不衰减 | \(V_f\) 不满足 DARE | 1. 验证 \(A_K^\top PA_K - P + Q + K^\top RK = 0\) 2. 重新解 DARE | §3 |
| \(N\) 增大后反而不稳定(有扰动) | ISS 增益 \(L_f^{N-1}\) 爆炸 | 1. 估算 \(L_f\) 2. 加 tube 或减 \(N\) | §7 |
| Economic MPC 陷入极限环 | Strict dissipativity 不满足 | 1. SOS 验证 \(\lambda\) 存在性 2. 检查代价是否真正"经济型" | §5 |
本章常见误解汇总¶
| 误解 | 正确理解 |
|---|---|
| MPC 有限视域优化天然保证闭环稳定 | 没有终端代价/终端约束的 MPC 可能闭环不稳定——有限视域导致的"近视效应"使控制器看不到远期代价,可能把状态推向不可恢复区域 |
| Mayne 四条件是 MPC 稳定的唯一途径 | Grune-Pannek 2011 证明了无终端约束/代价的 MPC 在视域 \(N\) 足够大时也能稳定(通过 controllability 假设),但所需 \(N\) 可能很大 |
| 终端等式约束 \(x_N = 0\) 是最简单的稳定性保证方式 | \(x_N = 0\) 是充分条件但极度保守——要求 \(N\) 步内精确到达原点,可行域非常小;终端不等式约束 \(x_N \in \mathcal{X}_f\)(正不变椭球)在保证稳定性的同时给出大得多的可行域 |
| Economic MPC 的稳定性分析与跟踪 MPC 相同 | Economic MPC 的代价不以状态偏差为度量(\(\ell(x,u)\) 非正定),不能直接用 \(V_N^\ast\) 作 Lyapunov 函数;需要 strict dissipativity 条件将经济代价转化为等价的正定形式 |
| ISS-MPC 意味着扰动不影响系统行为 | ISS 保证的是扰动有界时状态有界(\(\|x\| \le \beta(\|x_0\|, t) + \gamma(\|w\|_\infty)\)),并非扰动无影响;增益函数 \(\gamma\) 越小鲁棒性越好 |
| RTI(Real-Time Iteration)只做一步 SQP 一定导致性能损失 | Diehl 2005 证明了 RTI 的次优性可视为一种有界扰动,在 ISS-MPC 框架下闭环仍稳定;一步 SQP 的 warm-start 质量(由上一时刻解平移得到)往往使这个"扰动"非常小 |
| 增大预测视域 \(N\) 总能提高鲁棒性 | 对于有模型误差的系统,\(N\) 过大反而使预测末端偏差 \(L_f^{N-1}\|w\|\) 指数增长(Lipschitz 常数的幂次),可能导致 ISS 增益恶化 |
跨章综合练习¶
综合题(需要 §2 + §3 + §6 的知识):
对双积分器 \(x^+ = \begin{bmatrix}1 & 0.1\\0 & 1\end{bmatrix} x + \begin{bmatrix}0.005\\0.1\end{bmatrix} u + w\),\(|u| \le 1\),\(\|x\|_\infty \le 5\),\(\|w\|_\infty \le 0.05\):
- 设计 LQR 终端:解 DARE,求 \(P, K, \alpha^\ast\)(§3);
- 验证四条件(§2):检查 (A1)-(A3) 是否满足;
- 设计 Tube MPC(§6):计算 mRPI \(\mathbb{Z}\),执行约束收紧;
- 仿真对比:标称 MPC vs Tube MPC 在有扰动下的约束满足情况。
完整实现约 200 行 Python 代码,使用 CasADi + MPT3(或 polytope 库)。
附录 A:Lyapunov 下降证明的几何解读¶
为什么候选序列构造是核心手法¶
§2 的证明中 Step 1 构造的候选序列 \(\tilde{\mathbf{u}} = (u_1^\ast, \dots, u_{N-1}^\ast, \kappa_f(x_N^\ast))\) 看似简单,但它蕴含了深刻的几何洞察。
时间轴视角:
时刻 k: [u_0*] [u_1*] [u_2*] ... [u_{N-1}*] → x_N* ∈ X_f
↓ κ_f
时刻 k+1: [u_1*] [u_2*] ... [u_{N-1}*] [κ_f(x_N*)] → x_{N+1} ∈ X_f
- 上一时刻的最优序列**向左平移一格**——这就是 "shift" 操作的本质;
- 末端用 \(\kappa_f\) 补齐——终端反馈是最后的安全网。
代价变化的几何意义:
从 \(V_N^\ast(x)\) 到 \(V_N(x^+, \tilde{\mathbf{u}})\),代价发生了以下变化:
- **减少**了第一段 \(\ell(x, u_0^\ast)\)(因为 shift 丢弃了它);
- **增加**了最后一段 \(\ell(x_N^\ast, \kappa_f) + V_f(f(x_N^\ast, \kappa_f)) - V_f(x_N^\ast)\);
- 由 (A2),增加的部分 \(\le 0\)。
净效果:\(V_N(x^+, \tilde{\mathbf{u}}) \le V_N^\ast(x) - \ell(x, u_0^\ast) \le V_N^\ast(x) - \alpha_\ell(\|x\|)\)。
最优性原则的角色¶
Step 5 中用到了最优性:\(V_N^\ast(x^+) \le V_N(x^+, \tilde{\mathbf{u}})\)。这看似多余——为什么不直接用候选代价?
原因:\(V_N(x^+, \tilde{\mathbf{u}})\) 不是 \(x^+\) 的函数——它依赖于从 \(x\) 出发的最优轨迹。我们需要一个只依赖于当前状态的 Lyapunov 函数——\(V_N^\ast(x)\) 满足此要求。最优性原则起到了从候选上界到状态函数的桥梁作用。
附录 B:终端集几何与计算细节¶
椭球与多面体的关系¶
终端集 \(X_f = \{x : x^\top P x \le \alpha\}\) 是椭球。形状由 \(P\) 的特征分解决定:\(P = U\Lambda U^\top\),特征向量 \(U\) 定义轴方向,特征值的倒数平方根 \(1/\sqrt{\lambda_i}\) 定义轴长(半轴长度为 \(\sqrt{\alpha/\lambda_i}\))。
椭球的几何直觉
考虑二维情形 \(P = \begin{pmatrix} 4 & 0 \\ 0 & 1 \end{pmatrix}\),\(\alpha = 1\)。椭球方程 \(4x_1^2 + x_2^2 \le 1\) 是一个沿 \(x_1\) 压缩、沿 \(x_2\) 拉长的椭圆——半轴长分别为 \(1/\sqrt{4} = 0.5\) 和 \(1/\sqrt{1} = 1\)。
物理含义:\(P\) 的大特征值方向(\(\lambda_1 = 4\))对应"状态偏离代价高"的方向——椭球在该方向更窄,表示"允许更小的偏差"。对倒立摆,角度方向的特征值通常远大于角速度方向——说明角度偏差比角速度偏差更危险(角度偏大直接跌倒,角速度偏大还可以通过控制纠正)。
多面体终端集(Gilbert-Tan 1991)——对线性系统,最大正不变终端集:
迭代算法:\(\mathcal{O}_0 = \mathbb{X} \cap K^{-1}\mathbb{U}\),\(\mathcal{O}_{j+1} = \mathcal{O}_j \cap A_K^{-1}\mathcal{O}_j\)。有限步收敛(由 \(A_K\) Schur 保证,有限步后 \(A_K^k x\) 任意小,约束自动满足)。
收敛步数估计:\(j^\star \le \lceil \log(\varepsilon / \|x\|_\infty) / \log(\rho(A_K)) \rceil\)。对 \(\rho(A_K) = 0.9\)、\(\varepsilon / \|x\| = 0.01\),\(j^\star \le \lceil 4.6 / 0.105 \rceil = 44\) 步。
| 维度 | 椭球 | 多面体 |
|---|---|---|
| 体积 | 较小(内切于多面体) | 最大(精确可达集) |
| 存储 | \(O(n^2)\) | \(O(n \cdot n_f)\)(面数 \(n_f\) 可能指数增长) |
| 在线检测 | \(x^\top P x \le \alpha\)(一次矩阵乘法) | \(Ax \le b\)(\(n_f\) 次标量比较) |
| 高维 | 好(\(n^2\) 存储与 \(n\) 无关) | 差(\(n_f\) 可能 \(2^n\) 量级) |
| 建议 | \(n \ge 5\) | \(n \le 4\) |
选择建议:对四足/人形机器人(\(n \ge 12\)),椭球几乎是唯一可行的终端集表示。多面体只适合低维系统(如 2D 自行车模型、3D 四旋翼简化模型)。
LMI 联合优化¶
通过 Schur 补把 \(\alpha b_\ell^2 \ge c_\ell^\top P^{-1} c_\ell\) 转化为 LMI:
令 \(W = P^{-1}\),\(Y = KW\) 可将整个终端设计写成 SDP。YALMIP + MOSEK 求解。
附录 C:Economic MPC 的 Telescope 性质¶
旋转后值函数 \(\tilde{V}_N^\ast(x) = V_N^\ast(x) - N\ell_e(x_s, u_s) + \lambda(x) - \lambda(x_s)\) 与原值函数有相同最优解。
证明利用 \(\lambda\) 项的 telescope 消去:\(\sum_{k=0}^{N-1}[\lambda(x_k) - \lambda(x_{k+1})] = \lambda(x_0) - \lambda(x_N)\)。旋转不改变最优控制序列,仅修改值函数的"坐标系"。
Dissipativity 的 SOS 验证¶
对多项式系统,strict dissipativity 验证转化为 SOS 可行性问题。参数化 \(\lambda\) 为多项式(通常二次),用 SOSTOOLS/SumOfSquares.jl 求解。
附录 D:Tube MPC 的非线性推广¶
线性 Tube MPC 的误差动力 \(e^+ = A_K e + w\) 是线性的。非线性推广面临核心挑战:RPI 集在非线性系统上没有闭式解——Minkowski 和的递推不再适用。
三种非线性推广方案¶
方案 1:沿参考轨迹线性化(LTV Tube)
Kohler-Muller-Allgower (2019) 的核心思想:
- 先解名义 NLP 得到参考轨迹 \((\bar x, \bar u)\);
- 沿 \((\bar x, \bar u)\) 线性化得到 LTV 系统 \(e_{k+1} = A_k e_k + B_k\delta u_k + w_k\);
- 为 LTV 系统计算 time-varying RPI tube \(\mathbb{Z}_k\);
- 用 time-varying 约束收紧。
优点:理论保证完整(RPI 在 LTV 意义下)。缺点:tube 大小依赖参考轨迹——如果参考轨迹变化大(如步态切换),tube 可能突变。
方案 2:Contraction-based Tube
利用 contraction theory(Lohmiller-Slotine 1998):如果非线性系统的 Jacobian \(\partial f/\partial x\) 一致负定(contraction metric),则任意两条轨迹指数收敛。误差 tube 可以用 contraction rate 界定。
方案 3:Adaptive Tube(在线调整)
Lorenzen-Allgower-Dabbene (2019):在线估计 \(\mathbb{W}\) 并动态调整 tube 大小。当扰动估计变小时 tube 收缩→约束放松→性能提升。当扰动增大时 tube 膨胀→约束收紧→安全保证加强。
三种方案的对比
| 方案 | 适用系统 | 计算量 | 保守性 | 工程成熟度 |
|---|---|---|---|---|
| LTV Tube | 弱非线性 | 中(需在线线性化) | 中 | 较高 |
| Contraction Tube | 有 contraction metric 的系统 | 低(离线计算 metric) | 低 | 研究阶段 |
| Adaptive Tube | 扰动缓变 | 高(在线估计 + tube 更新) | 自适应 | 研究阶段 |
机器人的实际做法
大多数腿足/操作臂 MPC 实际上不使用 tube——因为:(a) 模型精度高(Pinocchio 的解析模型误差 < 1%);(b) 状态估计精度高(IMU + 编码器融合);(c) MPC 的 inherent robustness(§7)足以应对正常运行条件。
Tube MPC 在机器人中的价值主要在两个场景: 1. 安全关键应用(如手术机器人、航天器对接)——需要 100% 约束满足保证 2. 恶劣环境(如冰面行走、大风飞行)——扰动大且可估计
对"一般性"机器人(如仓库 AGV、家用服务机器人),标称 MPC + EKF 的简单组合就够了。
附录 E:MPC 稳定性证明的完整逻辑链¶
把本章的所有稳定性结论串联起来,形成一个从最弱假设到最强结论的完整逻辑链。
从弱到强:六层保证¶
Level 0: OCP 有解(可行性)
↓ + (A1) 终端集正不变
Level 1: 递归可行性(每步 OCP 有解)
↓ + (A2) 终端代价 CLF + (A3) 阶段代价正定
Level 2: 渐近稳定性(x → 0)
↓ + 二次代价 + 线性系统
Level 3: 指数稳定性(||x_k|| ≤ Ce^{-λk}||x_0||)
↓ + 扰动有界
Level 4: ISS 稳定性(x → B_δ(0),δ 与扰动成正比)
↓ + Tube 设计
Level 5: 鲁棒约束满足(x_k ∈ X, u_k ∈ U ∀k,对任意 w ∈ W)
↓ + Economic 代价 + Dissipativity
Level 6: 渐近最优稳态跟踪(average cost → ℓ_e(x_s, u_s))
每一层严格依赖前一层。如果 Level 0 不成立(OCP 无解),后面全白搭。如果 Level 2 成立但不检查 Level 4,扰动可能把系统推出稳定域——"仿真完美、实机失败"。
实机部署的最小保证级别¶
| 应用 | 需要的最低 Level | 理由 |
|---|---|---|
| 学术 benchmark | Level 2 | 仿真无扰动 |
| 四足行走(平地) | Level 2 + ISS 分析 | 传感器噪声自然被 inherent robustness 吸收 |
| 四足行走(野外) | Level 5 | 地形不确定性需要约束保证 |
| 手术机器人 | Level 5 | 安全关键 |
| 航天器对接 | Level 5 + Stochastic | 无第二次机会 |
| 经济调度 | Level 6 | 代价非正定 |
从理论到代码的 Checklist¶
在部署任何 MPC 之前,按以下 checklist 逐项检查:
- 离散化 \((A_d, B_d)\) 可镇定?(\(\text{rank}([B, AB, \ldots, A^{n-1}B]) = n\))
- DARE 有解?(
solve_discrete_are不报错) - \(A_K = A + BK\) 的特征值全在单位圆内?(\(\rho(A_K) < 1\))
- 椭球 \(\alpha^\ast > 0\)?(约束不冲突)
- 非线性系统的 \(\alpha_\text{nl}\) 足够大?(Chen-Allgöwer 条件)
- MPC 闭环仿真中 \(V_N^\ast(x_k)\) 单调下降?(Lyapunov 验证)
- 加入传感器噪声后 \(V_N^\ast\) 仍单调下降?(ISS 验证)
- 扰动估计 \(\mathbb{W}\) 是否覆盖了真实扰动?(Tube 验证)
如果所有勾选通过,你的 MPC 就有了从理论到实践的完整保证链。
附录 F:MPC 稳定性理论的历史脉络¶
| 年代 | 里程碑 | 贡献者 |
|---|---|---|
| 1978 | IDCOM(工业 MPC) | Richalet |
| 1988 | 终端等式约束稳定性 | Keerthi-Gilbert |
| 1993 | 双模式 MPC | Michalska-Mayne |
| 1998 | Quasi-infinite horizon | Chen-Allgower |
| 2000 | 四条件统一框架 | Mayne et al. |
| 2004 | Tube-based robust MPC | Langson et al. |
| 2005 | RTI + mRPI 算法 | Diehl; Rakovic |
| 2009 | 无终端约束理论 | Grune |
| 2012 | Economic MPC dissipativity | Angeli et al. |
| 2014 | MPC 综述(40 年) | Mayne |
| 2021 | MPC-CBF 统一 | Zeng-Sreenath |
| 2024 | 数据驱动 MPC 保证 | Berberich-Allgower |
| 2025 | ProxDDP 硬约束 MPC | Jallet et al. |
附录 G:定理清单(12 条)¶
| # | 定理 | 核心结论 | 出处 |
|---|---|---|---|
| 1 | DP 递归 | \(V_N^\ast = \min[\ell + V_{N-1}^\ast]\) | Bellman 1957 |
| 2 | Mayne 2000 | (A1)+(A2)+(A3) => 渐近稳定 | Automatica 2000 |
| 3 | Lyapunov 下降 | \(V_N^\ast(x^+) \le V_N^\ast(x) - \ell\) | 同上 |
| 4 | DARE 配对 | \(V_f = x^\top P x\) 满足 (A2) | RMD17 |
| 5 | Grune alpha_N | cost controllability => 稳定 | SICON 2009 |
| 6 | Jadbabaie-Hauser | CLF 终端代价 | TAC 2005 |
| 7 | Angeli EMPC | dissipativity => 稳定 | TAC 2012 |
| 8 | Mayne Tube | RPI + 收紧 => 鲁棒可行 | Automatica 2005 |
| 9 | Limon ISS | \(V_N^\ast\) 是 ISS-Lyapunov | LNCIS 2009 |
| 10 | MPC-CBF | DT-CBF => 安全 | arXiv 2021 |
| 11 | Scokaert | feasibility => stability | TAC 1999 |
| 12 | Diehl RTI | kappa < 1 => 局部收敛 | SIAM 2005 |
附录 H:关键论文 DOI 速查¶
| 主题 | 论文 | DOI |
|---|---|---|
| 四条件 | Mayne et al. 2000 | 10.1016/S0005-1098(99)00214-9 |
| Survey | Mayne 2014 | 10.1016/j.automatica.2014.10.128 |
| QIH | Chen-Allgower 1998 | 10.1016/S0005-1098(98)00073-9 |
| CLF terminal | Jadbabaie-Hauser 2005 | 10.1109/TAC.2005.847055 |
| Cost ctrl | Grune 2009 | 10.1137/070707853 |
| Constrained | Limon et al. 2006 | 10.1109/TAC.2006.875014 |
| Economic | Angeli et al. 2012 | 10.1109/TAC.2011.2176174 |
| Rotated | Diehl et al. 2011 | 10.1109/TAC.2010.2101291 |
| Tube | Mayne et al. 2005 | 10.1016/j.automatica.2004.08.019 |
| mRPI | Rakovic et al. 2005 | 10.1109/TAC.2005.843854 |
| ISS-MPC | Magni et al. 2006 | 10.1109/TAC.2006.880808 |
| MPC-CBF | Zeng et al. 2021 | arXiv:2007.11718 |
| SMPC | Mesbah 2016 | 10.1109/MCS.2016.2602087 |
| MHE | Rao et al. 2003 | 10.1109/TAC.2002.808470 |
| RTI | Diehl et al. 2005 | 10.1137/S0363012902400713 |
| Suboptimal | Scokaert et al. 1999 | 10.1109/9.751369 |
附录 I:教材对照表¶
| 教材 | 四条件 | 无终端 | Economic | Tube | Stochastic |
|---|---|---|---|---|---|
| Rawlings-Mayne-Diehl 2017 | Ch.2 | Ch.2.6 | Ch.2.8 | Ch.3 | Ch.3.7 |
| Grune-Pannek 2017 | Ch.5 | Ch.6-7 | Ch.8 | Ch.7 简 | Ch.9 简 |
| Borrelli-Bemporad-Morari 2017 | Ch.10-11 | -- | -- | Ch.15 | -- |
| Kouvaritakis-Cannon 2016 | Ch.2 | Ch.2.4 | -- | Ch.3-4 | Ch.6 |
附录 J:时间预算¶
| 周 | 任务 | 产出 |
|---|---|---|
| 1 | §1-§3 四条件 + DARE | 手推证明,Python 算 \(P, K, \alpha\) |
| 2 | §4 Grune + 逆摆仿真 | CasADi 跑无终端 MPC |
| 3 | §5-§6 Economic + Tube | MPT3 算 mRPI |
| 4 | §7-§8 ISS + MPC-CBF | 复现 Zeng-Sreenath |
| 5 | 选学(推荐 §A + §E) | acados 跑 RTI |
学习建议:
-
第 1 周最重要——四条件证明是后续所有内容的基础。建议在白板上完整手推一遍 Step 1-6(§2),然后用 Python 验证双积分器的 \(P, K, \alpha^\ast\)。如果这一周没有彻底理解,后续内容会越来越困难。
-
**第 2 周的关键**是理解 Grune-Pannek 公式的直觉——"\(N\) 足够大时,有限视域的'近视效应'被阶段代价的累积所稀释"。用 CasADi 仿真直观验证:\(N\) 太小时轨迹振荡不收敛,\(N\) 达到 \(N^\ast\) 后突然稳定。
-
**第 3-4 周**可以并行学习。Tube MPC 和 ISS-MPC 虽然主题不同,但数学工具(Lyapunov、正不变集、Lipschitz 界)高度重叠。
-
**第 5 周**的 RTI 理论是连接本章(稳定性理论)与 §3.12(数值求解)的桥梁——它回答了"如果 MPC 没解到最优(只跑了一次 SQP 迭代),闭环还稳定吗?"这个实机部署中最核心的问题。
最后提醒:MPC 稳定性理论的**不可替代价值**不在于它"让你的代码更快"——而在于它"让你知道什么时候系统会崩"。一个没有稳定性分析的 MPC 部署就像一辆没有安全带的汽车——大多数时候没问题,但关键时刻会致命。 | 6 | 综合项目 | 完整 MPC 闭环 |