精读笔记
Problem Setting
论文标题:Reconciling RaiSim With the Maximum Dissipation Principle(IEEE Transactions on Robotics / 2024)。
这篇论文不是在提出一个新的通用接触仿真框架,而是在处理 RaiSim 接触模型中的一个非常具体但本质性的物理一致性问题:滑动摩擦时不满足最大耗散原理。真正困难点在于 RaiSim 的求解器并不是简单“数值误差大”,而是其 CCP 近似从问题定义上删掉了 de Saxcé correction;这导致即便 solver 收敛,收敛到的也是一个不完全符合 Coulomb friction + MDP 的问题。
以前方法卡住的地方在于:RaiSim 为了效率和避免远距离力,采用 per-contact iteration / bisection,在局部接触上求一个受摩擦锥边界和零法向速度平面约束的 QCQP。这个设计在工程上非常成功,尤其在四足 RL 中,但它把 Signorini 和 Coulomb friction 的一部分几何处理对了,却没有保证摩擦力最大化耗散。关键矛盾是:如何在不牺牲 RaiSim 高效几何结构的情况下,恢复原始非线性接触互补问题的物理含义。
Motivation
作者的动机不是“RaiSim 不准,所以换 solver”,而是更精确地指出:RaiSim 的近似有一个可定位、可修补的物理缺口。已有路线要么接受 CCP relaxation 带来的偏差,要么使用更一般的 NCP / PGS 类方法但可能牺牲 RaiSim 的 per-contact 结构和速度。本文想做的是最小侵入式修正。
核心观察来自 KKT 分析:RaiSim 的滑动接触子问题在 Delassus matrix 存在 normal-tangential coupling 时,会推出 c_T 不再与 -λ_T 共线,而 MDP 要求滑动摩擦力必须沿切向速度反方向并在摩擦锥边界上。这说明问题不是某个实验 artifact,而是模型松弛的结构性后果。缺的不是更多迭代,而是被 CCP 忽略的 de Saxcé 项。
Core Idea
核心思想可以概括为:把 RaiSim 为了效率删掉的 de Saxcé correction 重新放回每个接触点的局部优化问题,但不直接求完整非线性 NCP。由于 Γ(c, μ) 依赖当前未知接触速度,直接加入会破坏原始 bisection 框架;作者采用 Gauss-Seidel 固定点近似,用上一轮力估计得到 c^-,把 Γ(c^-, μ) 当作常量线性项加入当前局部 QCQP。
这改变的是接触问题的建模几何,而不是数值调参。原 RaiSim 在 ∂Kμ ∩ VN 的椭圆上选一个局部最优点,但目标函数缺少耗散校正项,因此会选择一个满足零法向速度却不最大耗散的摩擦力。RaiSim+DS 保留同一个可高效参数化的椭圆可行集,只移动目标中的线性项,使固定点极限对应原始 NCP 的互补条件。它的本质区别是恢复了摩擦法则的 dual cone 几何,而不是单纯降低 residual。
Method
1. 用 KKT 暴露 RaiSim 偏差来源:作者写出 RaiSim 滑动接触 QCQP 的一阶条件,得到 c_T ∝ -λ_T - μ²λ_N/G_NN · G_NT。这个式子是全文最关键的诊断:只要局部 Delassus block 的法向-切向耦合不为零,摩擦方向就会偏离最大耗散要求。它说明 RaiSim 的误差是结构性建模误差,不是迭代次数不足。
2. 重新引入 de Saxcé correction:原始 Coulomb + MDP 可写成 Kμ ∋ λ ⟂ c + Γ(c, μ) ∈ Kμ*。RaiSim 的 CCP 相当于去掉 Γ。本文把 Γ 以 Γ(c^-, μ) 的形式加入 per-contact 子问题,从而把被删掉的耗散项作为线性偏置恢复回来。
3. 保留 RaiSim 的局部几何结构:滑动时仍然在摩擦锥边界和零法向速度平面的交集 ∂Kμ ∩ VN 上求解。这个交集仍是椭圆,仍可沿用原来的角度参数化和 bisection。核心变化不是更复杂的全局优化,而是在同一局部搜索空间中改变目标,使其固定点对应 MDP。
4. 用 Gauss-Seidel 迭代处理非线性:Γ 依赖未知速度,所以作者使用上一轮 λ^- 形成 c^-。这是一种典型 fixed-point linearization。它的好处是几乎不增加计算成本;代价是没有严格收敛保证。
Key Insight / Why It Works
最重要的 insight 是:RaiSim 的成功和 RaiSim 的物理正确性不是同一件事。它在 RL locomotion 中表现好,可能部分来自没有远距离力、数值稳定、速度快和训练分布适配,但这并不意味着其摩擦模型满足 Moreau 的 MDP。本文把这个问题从经验争论变成了一个明确的 KKT 结构结论。
方法有效的根因不是 scaling、不是 data coverage、不是更强 optimizer,而是 better inductive bias:它把最大耗散这一物理先验重新编码到每个接触点的局部互补条件里。de Saxcé correction 的作用可以理解为在 dual cone 条件中加入切向速度范数相关的偏移,使摩擦力选择不只是“满足锥约束和零法向速度”,还要在滑动时沿最大耗散方向。
最可能的核心贡献是式 (10) 的诊断和式 (13) 的最小修正。实验只是验证这个诊断。算法层面并不复杂,也不是一个新的 solver family;它更像是对 RaiSim 接触模型的一次物理一致性 patch。文中所谓“computationally free”基本可信,因为可行集参数化和 bisection 结构没变,但这不等于数值行为完全无代价:固定点 correction 和 overrelaxation 可能改变稳定性,这部分文中没有理论保证。
辅助部分是 ContactBench 实现和 MPC 展示。它们说明修正不是只在单接触 toy case 有效,但还不足以证明对大规模 RL sim-to-real 一定有正收益。这里不存在 benchmark leakage 或隐式监督问题;这不是学习论文。真正需要警惕的是 evaluation scope:它验证了物理原则一致性,不等价于验证机器人任务性能提升。
Relation To Prior Work
这篇工作最接近三条线:RaiSim 的 per-contact iteration 方法、MuJoCo-style CCP relaxation、以及 nonsmooth contact dynamics 中基于 Moreau / de Saxcé 的 NCP formulation。它不是从零发明 de Saxcé correction,也不是提出全新 NCP 求解器;新意在于指出 RaiSim 的具体 relaxation 如何破坏 MDP,并给出一个几乎不破坏原算法结构的修复方式。
和 RaiSim 原始方法的本质差异:RaiSim 通过把滑动接触限制到 ∂Kμ ∩ VN 来修补 Signorini,但仍缺少最大耗散;本文在同一个局部 feasible set 上加入 de Saxcé 项,使固定点极限重新对应 Coulomb friction 的完整 NCP。
和 PGS / 一般 NCP solver 的差异:PGS 类方法更直接地解物理互补问题,物理解释更干净,但不一定保留 RaiSim 的高效一维 bisection 几何。本文走的是工程兼容路线:尽量保持 RaiSim 的 solver skeleton,只修正目标。
从技术谱系看,它属于“物理仿真中的模型一致性修正”,不是 learning-based simulation,也不是 differentiable physics。实质创新是把已有 de Saxcé 理论嵌回 RaiSim 的特殊 per-contact formulation,并给出清楚的 failure condition。
Dataset / Evaluation
评估覆盖三个层次:单方块滑动、欠定多接触拖拽、四足 Solo-12 MPC。这个设计是合理的,因为论文 claim 本身是物理机制层面的:是否满足 MDP、是否降低 NCP complementarity error、是否消除滑动时的非物理内部力,而不是宣称提高某个 benchmark 分数。
滑动方块是最干净的 sanity check:有解析能量耗散曲线,可以直接看 RaiSim 是否耗散不足。拖拽方块更有价值,因为它暴露了 hyperstatic contact 中 RaiSim 在滑动后仍保留内部力的问题;这比单接触更接近真实多接触机器人。Solo-12 MPC 说明修正会影响实际控制轨迹,并且 computational overhead 小。
但 evaluation 也很有限:没有真实世界实验,没有 RL retraining,没有系统的跨地形 / 跨机器人 / 大规模接触统计,也没有展示对 RaiSim 最著名应用——四足策略 sim-to-real——的最终收益。因此实验充分支持“修正能让这些仿真更符合 MDP”,但不充分支持“这会让机器人学习更好”。后者文中未充分说明。
Limitation
第一,方法没有收敛保证。作者也明确承认,和原 RaiSim 一样,Gauss-Seidel bisection + de Saxcé correction 只是经验上可用;overrelaxation with decreasing α 还会引入额外 heuristic。因此它恢复的是固定点处的物理条件,而不是保证每次迭代或有限迭代解严格满足 NCP。
第二,修正依赖上一轮 c^- 近似 Γ(c, μ)。在接触切换频繁、强冲击、高摩擦、多接触耦合强的场景中,这种固定点线性化是否稳定,文中未充分说明。尤其在机器人 locomotion 中,接触状态快速变化,local correction 的误差可能和控制器闭环耦合。
第三,实验没有回答实际 RL deployment 的问题。RaiSim 的非物理性可能并不总是坏事:某些 dissipative bias、数值稳定性或非真实误差可能被 policy training 吸收,甚至形成有利的 regularization。修正 MDP 是否提升 sim-to-real,而不是只是改变仿真轨迹,需要重新训练策略并真机验证。
第四,该方法没有解决接触建模的其他核心难题:接触点生成、几何误差、柔顺性、冲击恢复系数、时间步依赖、摩擦系数不确定性等。它只修正了一个非常具体的摩擦互补项。不要把它理解成“RaiSim 物理正确化”的完整方案。
Takeaway
- 1. 对接触仿真器的分析不能只看稳定性和任务表现;需要检查求解器实际收敛到的物理问题是什么。
- RaiSim 的例子说明,一个工程上成功的 solver 仍可能系统性违反基本耗散原则。
- 2. 最大价值在于 failure diagnosis:通过 KKT 把 MDP violation 精确定位到 G_NT coupling 和缺失 de Saxcé correction。
- 这种分析方式可以迁移到其他 physics engine 的 contact relaxation 检查中。
一句话总结
这篇论文是对 RaiSim 接触模型的一次精准物理一致性修复:它证明原 per-contact CCP 在法切耦合下结构性违反最大耗散,并用 de Saxcé 固定点修正以几乎不改变原求解框架的方式恢复 Coulomb 摩擦 NCP 的核心几何。
