Parallel and Proximal Linear-Quadratic Methods for Real-Time Constrained Model-Predictive Control figure
在线论文 PDF(可滚动查看)

精读笔记

Problem Setting

这篇论文在解决的是高维机器人 NMPC 内层的 structured LQ/KKT 求解问题,尤其是当系统带隐式动力学、路径/终端等式约束,并且外层又是 proximal/augmented-Lagrangian 框架时,经典 Riccati 的串行优势会被削弱。真正难点不是“线性代数复杂”,而是“结构复杂但时间预算极小”:每一步都要在毫秒级内完成,而 horizon 又长、变量又多。以前方法要么只适用于更干净的 LQR,要么依赖近似迭代(ADMM/PCG/Gauss-Seidel),要么并行只停留在局部 rollout。这个任务的关键矛盾是精确性和并行性之间的冲突。

Motivation

作者的动机不是单纯追求更快,而是解决“实时机器人 MPC 需要的不是近似,而是结构化精确求解”。已有 parallel 方法要么牺牲精确性,要么只并行了一半(通常只在 forward rollout 上),而 direct methods 往往又保留了串行的时间递推。作者的核心观察是:LQ 子问题的真正可压缩对象不是整个轨迹,而是段与段之间的边界值函数;如果这个接口能被精确表达,parallel 就不需要依赖迭代收敛。缺口就在这里:缺一个能同时兼容等式约束、隐式动力学、proximal regularization、以及真机实时性的 direct parallel 架构。

Core Idea

核心想法是把“整条时间轴上的顺序递推”改写成“若干段局部递推 + 一个小规模接口一致化问题”。每一段时间窗在给定边界共态后,都能被压缩成一个关于边界状态/共态的二次值函数;因此,段与段之间不需要传递整段轨迹,只需要传递这个二次接口。这个重写改变了原始建模方式:从按时间步推进的动态规划,变成按子问题压缩的界面耦合。它的 inductive bias 是:全局最优结构主要由边界变量携带,段内细节可以被完全总结为二次参数。相比 prior,这里并不是“分块后再迭代逼近”,而是“精确 condensation 后再并行组装”。

Method

第一步是把带 equality constraints 和 dual proximal regularization 的 LQ 写成 KKT 系统,并用块消元推导出广义 Riccati 递推。这个步骤解决的是“非经典 LQ 该怎么递推”的问题,核心变化是从解大稀疏系统转为解一系列小的 stage KKT。\n\n第二步是把 Riccati 递推推广到 parametric LQ:将某个边界共态或参数显式放进 Lagrangian,证明段级值函数仍然是关于边界状态和参数的二次函数,并递推出其二次项、线性项和参数敏感度。这个步骤必要,是因为并行化需要“可压缩接口”,而不是单段内部轨迹。\n\n第三步是按时间窗切分 horizon,把每段都视作一个参数化子问题:每段独立生成它对边界变量的二次摘要,然后把所有段拼成一个只涉及边界状态/共态的小系统。这个步骤把原本长链串行依赖变成少量 boundary coupling。\n\n第四步是对 reduced system 采用块三对角求解。它解决的是“压缩后剩下的小问题怎么快解”,带来的核心变化是把全局一致化的代价控制在 O(J) 的段数级别,而不再随总 horizon 线性展开为庞大串行递推。

Key Insight / Why It Works

最关键的原因是:这个 proximal LQ 本来就是一个二次 saddle-point 问题,因此对边界状态和参数的响应天然是二次封闭的。作者利用这个封闭性,把每段的内部变量全部消元,只保留一个足够表达段间耦合的接口——边界状态和边界共态。这样一来,原本跨时间步的串行依赖被压缩成了段级局部依赖,剩下的全局耦合只是一个小型 block-tridiagonal 线性系统。这个机制的本质贡献是“把长链依赖变成小接口耦合”,它比单纯的并行 rollout 更强,因为 backward 也被并行化了。\n\n我倾向于把它看成一种结构化 scaling,而不是新的优化原则:它没有引入新的搜索、学习或更强的表示,而是把已有的 Riccati / Schur complement / value-function 观点重新组织成了可并行的接口形式。真正值得注意的是,作者选的接口变量是 co-state 而不是 state-control 对,这使得压缩后的系统更像一个直接的 saddle-point,而不是另一个 MPC 子问题;这点是本质差异。辅助性最强的部分是具体实现和 OpenMP 调度,真正核心的是参数化值函数和边界变量的 lossless condensation。

Relation To Prior Work

它最接近的谱系是 Riccati / Schur complement / partial condensing / multiple shooting 这一支,而不是学习式控制或黑盒优化。和 Wright、Nielsen-Axehill、Laine-Tomlin 等工作相比,它并不只是“把问题切成几块”,而是明确选择以 co-state 作为接口变量,并把每段压缩成 parametric quadratic value function,再落到一个 block-tridiagonal consensus 系统上。和 ADMM、PCG、Gauss-Seidel 这类方法相比,它不是迭代逼近,而是 direct elimination,因此理论上更精确。真正新增的信息不是“分块”本身,而是“分块后保留什么变量、如何把段内解精确总结成二次接口”。这点上它更像是对 Riccati/动态规划思想的一次并行化重组,而不是新算法范式。

Dataset / Evaluation

评估并不是传统数据集,而是三类任务:合成的循环约束 LQ、全身人形机器人轨迹优化、以及真实四足机器人的 MPC。这个评估组合有一个优点:它覆盖了从纯线性结构到真实机器人闭环的完整链条,证明方法不是只能在 toy problem 上工作。真正支撑 claim 的是真机 SOLO-12:至少说明它不是纸面算法。但评估也有边界:它验证的是“能否实时解内层 LQ/QP 并嵌入 MPC”,而不是更强的“在复杂非凸接触规划中带来本质更强的决策能力”。所以实验支持的是结构化求解器的实时性与可部署性,不是更广义的规划智能。

Limitation

这条路线依赖很强的结构前提:局部二次、线性化、等式约束、proximal 正则,以及隐式动力学可逆(或至少局部可逆)。一旦问题偏离这个结构,所谓并行接口就不一定存在。\n\n另一个上限是并行效率:实验已经显示它没有把多核吃满,说明瓶颈很可能在 reduced consensus system、内存访问和线程调度,而不是段内 Riccati 本身。换句话说,方法证明了“可以并行”,但还没有证明“并行后几乎线性加速”。\n\n此外,评估并不能完全区分算法贡献与工程贡献:改进可能一部分来自更好的 block-sparse factorization,一部分来自并行化,一部分只是实现优化。增益来源不清。\n\n最后,虽然方法对机器人 MPC 很有用,但它本质上是把大问题拆成了更好算的小问题,而不是让规划问题的表示能力更强。因此它更像一个高质量的结构化数值引擎,而不是新的控制建模范式。

Takeaway

一句话总结

这是一篇把 proximal constrained LQ 的 Riccati/Schur-complement 结构改写成“段级二次接口 + 小规模边界一致化”的并行 direct solver 论文,核心贡献是结构重组而不是近似优化。