精读笔记

Problem Setting

论文标题:Robust Bipedal Walking With Closed-Loop MPC: Adios Stabilizers(IEEE Transactions on Robotics / 2025)。

这篇论文不是在提出一种全新的人形步行范式,而是在解决 LIPM/IS-MPC 这条经典路线真实部署时最顽固的接口问题:高层 MPC 认为自己控制 ZMP,但真实机器人只能通过力控/导纳/接触柔顺间接改变 ZMP,且这个通道有动态滞后、延迟和地面依赖。传统 pipeline 里,MPC 负责生成 nominal CoM/ZMP/footstep,外部 DCM/ZMP stabilizer 负责把真实机器人拉回参考。这看似合理,但本质上破坏了 MPC 的预测闭环:stabilizer 修改了 ZMP reference,却不在同一个优化问题里重新考虑支撑多边形、步点、步时和 boundedness condition。

真正困难点不是 LIPM 稳定性条件本身,而是如何让稳定性条件约束“真实可实现的 ZMP 轨迹”。如果 planner 只约束理想 ZMP,则约束满足不代表机器人实际满足;如果底层 stabilizer 再局部修正,又可能把参考推出 planner 允许区域。关键矛盾是:需要把接触力实现动态放进 MPC,但又不能引入完整多体/接触非线性,否则失去 IS-MPC 的实时性和可解释稳定结构。

Motivation

作者的核心动机可以概括为:stabilizer 的存在暴露了 MPC 闭环变量不完整。已有 IS-MPC 可以通过 DCM boundedness condition 保证名义 LIPM 轨迹有界,也能调整步点/步时;但它默认 ZMP 输入可以被即时或足够准确地执行。现实中 ZMP 是接触 wrench 的结果,而不是一个可以瞬时设定的几何点。脚底柔顺、导纳控制、关节伺服、软件延迟、地面形变都会使 measured ZMP 滞后于 reference。

已有 DCM feedback stabilizer 的问题不是不能稳定,而是“短视”:它基于当前 DCM error 修正 ZMP reference,却没有预测修正后的 ZMP 会如何通过接触动态演化,也没有保证修正仍满足未来支撑约束。作者观察到,如果把 ZMP tracking dynamics 显式建模,MPC 可以直接根据 measured CoM/DCM/ZMP 重新规划 reference,理论上就不需要外部 stabilizer。这篇文章的关键缺口定位得很准:不是缺一个更强 stabilizer,而是缺一个把力控响应纳入 gait generation 的 closed-loop MPC。

Core Idea

核心思想是把“ZMP 实现误差”从外部扰动改写成 planner 内部的状态动态。具体说,MPC 不再假设自己直接选择真实 ZMP,而是假设自己选择传给力控器的 ZMP reference;真实 ZMP 按带延迟的一阶系统跟踪该 reference。然后把这个真实 ZMP 轨迹代入 LIPM/DCM 的稳定性积分条件。于是 MPC 的稳定性约束直接作用于 measured pendulum state:当前 CoM、CoM velocity/DCM、当前 ZMP,以及未来可实现的 ZMP 响应。

这和 prior 的本质区别在于闭环层级。传统方案是 planner 开环或半闭环地产生 nominal gait,stabilizer 在执行层补偿;本文把补偿的主要因果模型上移到 MPC,让预测模型本身包含“ZMP reference → measured ZMP”的执行通道。它引入的 inductive bias 很明确:对人形步行而言,接触力响应不是低层噪声,而是 centroidal planner 的一部分。这个 bias 之所以可能更 scalable,是因为它只用一个低阶、可辨识、平台相关的动态模型替代一堆手调 stabilizer,而不是试图在 MPC 中塞入完整接触力学。

Method

方法的关键不是模块数量,而是三处机制性改写。

1)Closed-loop IS-MPC:把 ZMP dynamics 写成带 delay 的一阶响应,控制变量是 ZMP reference 的分段常值增量。稳定性约束从原始 IS-MPC 的理想 ZMP boundedness condition 变成包含不可控 delay 段、控制 horizon 段和 tailing 段的积分约束。它解决的是“planner 以为能实现的 ZMP 与真实 ZMP 不一致”的问题。核心变化是,当前 measured ZMP 也成为 MPC 状态,MPC 预测的是真实 ZMP 的演化。

2)基于 feasibility region 的步点/步时调整:作者把 ZMP 支撑约束与稳定性积分结合,得到当前 DCM 可行域;若 DCM 超出原计划可行域,就通过优化未来 step locations 和 timings 改变这个可行域。这里的机制价值在于 reactive stepping 不再只是 capture-point 启发式,而是直接服务于 IS-MPC 的 recursive feasibility。步点解决空间可达性,步时解决时间加权:由于稳定性积分有指数衰减,早发生的支撑变化比远期变化重要得多。

3)双支撑 contact wrench/CoP 分配:高层给出整体 ZMP,但真实双脚接触需要每只脚的 CoP 与竖直力共同实现。作者用一阶 CoP/force response 和简单力分配 QP 让双支撑阶段的合成 ZMP 符合 MPC 假设。这个部分主要是保证模型闭环一致性;没有它,closed-loop MPC 仍会在双支撑时面对未建模执行动态。

外部扰动力和释放脚残余力被作为 pendulum dynamics 中的 ZMP offset/scale 处理,并可进入稳定性条件。这是对模型完整性的补充,但不是本文最核心的理论贡献。

Key Insight / Why It Works

最关键的 insight 是:很多所谓 humanoid stabilizer 的作用,本质上是在补偿 planner 没有建模的 ZMP 执行动态;如果这个动态被纳入 MPC,stabilizer 的一部分功能可以消失。本文有效的原因不是 MPC 本身“更鲁棒”,而是闭环状态选对了:CoM/DCM 只描述 pendulum,ZMP 才是接触力作用后的实际输入。把 measured ZMP 放进状态,把 reference-to-ZMP dynamics 放进预测,才能让 boundedness condition 对真实系统近似成立。

最可能的核心贡献是公式层面的稳定性约束重写:带 delay/一阶 ZMP 响应的 DCM boundedness condition 仍保持线性可用,从而没有牺牲 QP 实时性。这一点比步点优化、双支撑力分配更本质。步点/步时预优化是增强恢复域的必要工程,但它沿用了 IS-MPC/捕获域思想;双支撑 force distribution 也是为了让硬件执行匹配高层模型。它们重要,但不是 conceptual leap。

这篇不是 scaling,也不是 data-driven;它是 better inductive bias + test-time optimization。有效性主要来自将一个原本隐藏在 stabilizer 和硬件里的低阶动态显式化。某种意义上,它把“反馈修正”从局部 PID/DCF feedback 变成了 MPC 内的预测性反馈。值得注意的是,鲁棒性并非凭空获得:如果一阶模型参数错、地面动力学变、接触几何失真,MPC 会自信地预测错误 ZMP。软地实验中需要显著调整 lambda,说明能力不是完全泛化,而是模型结构足够简单、参数可调后能覆盖多平台。

论文中一些增益来源不清:跨机器人成功究竟来自 closed-loop IS-MPC,还是来自成熟 mc_rtc whole-body QP、导纳控制、FFDC、人工参数调试和安全裕度的共同作用,不能完全分离。作者给了对比仿真,但真实机上没有严格 ablation。我的判断是:核心增益来自把 ZMP dynamics 纳入稳定性约束;广泛可部署性则相当一部分来自工程栈成熟和参数经验。

Relation To Prior Work

这篇属于 LIPM / DCM / ZMP preview / IS-MPC 技术谱系,而不是 full centroidal MPC、HZD、learning locomotion 或 torque-level whole-body dynamic control。它最接近 Intrinsically Stable MPC 以及 DCM feedback stabilizer 体系。和 IS-MPC 相比,真正新增的信息是 measured ZMP dynamics;和 DCM stabilizer 相比,真正不同是修正不再作为外部 feedback policy,而是作为 MPC 预测模型的一部分。

看似新的步点/步时恢复,其实和 capture point、DCM feasibility、step adjustment 一脉相承;新意在于把它放到扩展稳定性约束里,与 closed-loop ZMP dynamics 的 MPC 配合。双支撑 force distribution 也不是理论上全新,更多是把 CoP/vertical force 响应以与 ZMP 模型一致的方式工程化。

实质创新在两个层面:第一,指出并形式化了“ZMP causality/force tracking dynamics”是 LIPM-MPC 闭环缺失的关键;第二,在不放弃线性 MPC 和 DCM boundedness condition 的情况下,把该动态合并进去。这比单纯加更复杂的 whole-body controller 更有研究价值,因为它解释了为什么很多 stabilizer 必须存在,以及如何系统性地移除其中一类。

Dataset / Evaluation

评估覆盖面在机器人控制论文里相当强:五台不同人形机器人、同一软件框架、平地、小障碍、软地、户外、站立和行走推扰,以及公开演示场景。它不是离线 benchmark,而是真机部署;这点对“Adios Stabilizers”这个 claim 很关键。实验确实展示了该框架的 portability:同一控制结构只需调整少量与力响应相关的参数即可跨平台运行。

但 evaluation 也有明显边界。第一,真实机对比主要不是系统性 ablation;closed-loop IS-MPC 与传统 stabilizer 的严格对比主要在仿真中展示,真实世界中很难判断每个模块的独立贡献。第二,场景虽然多,但仍主要在 LIPM 假设大致成立的地形:软地未压缩到底、户外轻度不平,失败的河卵石场景反而说明边界。第三,参数随机器人和地面调整,尤其软地/户外 lambda 变化明显,因此实验支持“低阶接触动态模型可被调到可用”,但不完全支持“开箱即用泛化”。

总体上,评估足以支持核心 claim:显式建模 ZMP 响应可以在多真机上替代外部 stabilizer 完成稳健步行。但它没有完全证明该方法在强非平面接触、快速动态运动、显著角动量使用或未知地面下仍成立。

Limitation

最深的限制是模型边界。本文把真实接触实现压缩为 ZMP/CoP/force 的一阶延迟模型;这在刚性平地、轻度软地和常规步行中很有效,但对强非线性接触、滚动/边缘接触、碎石、足底局部接触、多点不规则接触并不够。河卵石失败不是偶然工程 bug,而是 LIPM + 平面 ZMP + 平足接触假设的系统边界。

第二,去 stabilizer 并不等于去低层控制复杂性。方法仍依赖导纳控制、FFDC、CoP regulation、contact transition handling、force thresholds、whole-body QP 和经验增益。它只是把 DCM/ZMP stabilizer 的高层修正功能并入 MPC。问题被部分“转移”为:如何准确辨识和在线更新 ZMP/force dynamics。文中承认参数主要经验调试;增益来源不清,尤其不同地面需要重调时,plug-and-walk 的泛化性会下降。

第三,稳定性保证是 reduced-order 条件下的。boundedness condition 保证的是 LIPM CoM 相对 ZMP 有界,不保证全身动力学、角动量、关节限制、碰撞、接触切换和感知误差都安全。步点/步时优化也只是扩展可行域;当所需步长/步时超出运动学或接触能力时,系统没有更高层的动量/高度策略。作者也明确提到未来需要 full centroidal dynamics,这说明当前上限很清楚。

第四,contact detection 是实际脆弱点。户外失败主要来自接触检测差,这意味着 planner 的理论闭环仍依赖底层事件判断准确。一旦 swing foot 实际接触时刻/位置与计划偏差较大,ZMP 模型和支撑多边形都会错。

Takeaway

  • 1)对 LIPM-MPC 来说,真正值得建模的不只是 CoM/DCM 动力学,而是 ZMP/CoP 从 reference 到 measured value 的执行通道。
  • 很多 stabilizer 问题本质是 planner 没有闭环到真实输入。
  • 2)一个低阶、可辨识的 actuator/contact response model 往往比复杂外部 feedback 更有价值,因为它能进入 MPC 的预测和约束,使修正具有前瞻性。
  • 3)步点和步时调整应被看作 DCM feasibility region 的重塑,而不是单独的 reactive heuristic。

一句话总结

这篇论文在 LIPM/IS-MPC 谱系中把外部 DCM/ZMP stabilizer 的核心功能内化为带接触力响应模型的 closed-loop MPC,真正贡献是让稳定性约束作用于可实现的 measured ZMP 动态,而不是名义 ZMP 轨迹。