精读笔记

Problem Setting

论文标题:Contrastive Forward Prediction Reinforcement Learning for Adaptive Fault-Tolerant Legged Robots(CoRL 2025)。

这篇论文解决的不是一般 robust locomotion,而是更具体的 actuator / joint malfunction 下的在线容错控制:机器人在某个关节零力矩、锁死或部分失效时,policy 需要从本体感知历史中识别当前动力学已经偏离 nominal model,并快速改变 gait / load distribution 来维持速度跟踪。

关键矛盾在于:损伤状态通常不可直接观测,但它强烈改变 action 的后果。普通 proprioceptive RL policy 如果只靠 domain randomization,会倾向于学习一个对所有故障平均有效的 conservative gait;而故障容错需要的是条件化控制,即 policy 必须知道“当前是哪种身体动力学”或至少知道“当前控制后果偏离预期的方向”。以前方法卡在这里:要么依赖显式故障模型和手工补偿,要么用随机 mask / 多任务训练覆盖故障,但 latent 未必形成可解释、可分离、可泛化的故障表征。

Motivation

作者的核心观察是:关节损伤最直接的信号不是某个传感器读数本身,而是“给定历史状态和动作后,实际身体响应与内部预测之间的偏差”。这个 residual 对故障非常敏感,因为执行器失效会系统性改变关节角、速度、机身姿态和接触响应的演化。

已有路线缺两个东西:第一,缺少显式鼓励 latent 区分不同损伤模式的约束,导致 adaptation encoder 可能只学到 terrain / velocity / contact noise 的混合表征;第二,缺少把动力学失配反馈回 controller 的机制,policy 只能被动从历史观测里推断,而不是利用“预测错在哪里”来调整动作。

因此本文的动机不是做一个更复杂的 policy,而是重组信息流:把故障从隐藏扰动转化为两个可供 policy 使用的变量——损伤类别化表征和预测误差表征。

Core Idea

核心思想是将 fault-tolerant locomotion 从“单 policy 对所有扰动鲁棒”改成“policy 被故障相关 latent 条件化”。这个 latent 由两部分构成:contrastive representation 负责把不同 joint damage mask 在表示空间中分开;forward prediction error 负责提供当前动力学与学到的正常/训练动力学之间的 residual。policy 接收的不是原始历史观测的黑箱压缩,而是更接近“故障身份 + 动力学失配”的结构化状态。

这个 inductive bias 直觉上成立:关节损伤会造成稳定、可重复的预测误差模式;同类损伤在 residual space 中相似,不同损伤 residual 不同。contrastive loss 进一步避免这些模式被 policy optimization 压扁或混在一起。相比 random joint masking 只扩大训练分布,本文试图让模型内部形成可分离的故障坐标系,因此更可能对未见过但动力学相近的故障形式做插值式泛化。

Method

方法的关键机制可以压缩为三点。

1. Fault-aware latent alignment:历史观测经过 adaptation encoder 得到 latent,训练时用 damage mask 做 supervised contrastive learning。同类 mask latent 拉近,不同 mask 拉远。它解决的是故障表征混叠问题;核心变化是把隐式 adaptation 变成带标签结构约束的动力学分类/聚类。

2. Prediction-error feedback:forward model 根据历史观测和 latent 预测当前/下一步观测,真实观测与预测之间的误差再经 error encoder 输入 policy。它解决的是“损伤不可直接观测但会改变状态转移”的问题;核心变化是 policy 不只看状态,还看 internal model violation。注意这里 forward model 不是用于 planning,也没有 rollout-based control;它更像 residual feature generator。

3. Policy conditioning rather than explicit repair:最终 policy 使用当前观测、速度估计、prediction latent、error latent、sensory/frequency latent 生成动作。它不是诊断故障后切换控制器,也不是生成显式补偿模型,而是让 RL policy 在训练中学会如何利用这些 latent 改变 gait。机制上,这是 representation-conditioned robust RL,而不是传统 model-based fault compensation。

Key Insight / Why It Works

最可能真正起作用的是 prediction error + contrastive latent 的组合,而不是 forward prediction 本身。Forward model 的预测不需要非常准;恰恰是系统性预测错的模式成为故障特征。对执行器故障而言,错误模式往往比原始观测更判别:同样的关节角历史,在健康和失效 actuator 下对未来响应的可预测性不同。这类似把故障识别问题从 observation space 转到 transition residual space。

Contrastive learning 的作用是把这种 residual / history 表征对齐到 damage classes,避免 policy 自己从 reward 中慢慢发现故障结构。这里存在一定 hidden supervision:训练时 mask label 被用于表示学习,所以“无需预定义损伤模式”的说法需要打折。它不需要手工控制规则,但需要训练阶段知道损伤类别。

本文的 zero-shot lock-joint 效果更像 representation interpolation,而不是强意义的推理。zero-torque 与 lock-joint 虽物理机制不同,但都会导致特定关节无法按命令产生预期运动,因此 prediction residual 可能落在相近区域。policy 利用 residual 做局部调整,而不是理解“关节锁死”这个因果结构。

FFT、VAE、DreamWaq backbone、curriculum、domain randomization 很可能都是重要辅助,尤其 curriculum 和 random joint mask 决定了损伤分布覆盖。文中增益来源不清:ablation 有 CL 和 PE,但没有充分隔离 curriculum、FFT、forward target、label granularity、batch composition 等因素。我的判断是:核心贡献是把 fault adaptation 做成 residual-conditioned representation learning;性能的绝对水平则相当依赖 scaling / data coverage / training recipe。

Relation To Prior Work

最接近的谱系是 DreamWaq / proprioceptive adaptation encoder / robust RL with domain randomization,再加上 random joint masking 和 fault-aware RL。相比 DreamWaq,本文新增的不是 locomotion backbone,而是让 adaptation latent 显式按故障模式可分,并加入 forward residual 作为反馈特征。相比 UMC 或 masking-based controller,它不是直接把损伤 mask 用作 policy 输入或模块选择,而是用 mask 监督 latent,再在测试时依赖观测 residual 推断。

和 model-based RL 的区别也很关键:本文 forward model 不承担规划,不做 imagination rollout,不优化 action sequence;它只是制造一个 prediction-error signal。因此叫 forward prediction 更准确,叫 model-based control 会误导。

看似新的部分中,contrastive representation、self-supervised forward dynamics、prediction error as anomaly signal 都是已有思想;实质创新在于把它们放进腿式机器人故障容错控制的闭环 policy conditioning 中,并证明在 joint damage 场景下 residual latent 比普通 history latent 更有用。

Dataset / Evaluation

评估覆盖了 quadruped 上多种地形、zero-torque 训练故障、lock-joint 未训练故障,以及 hexapod 真机迁移。这个覆盖范围对于 locomotion paper 来说是比较完整的,尤其真机 hexapod 损伤实验提升了可信度。

但 evaluation 对核心 claim 的支持仍有限。多地形实验主要证明 policy robust,不一定证明 fault representation generalizes。lock-joint zero-shot 是最关键证据,但只展示了从 zero-torque 到 lock-joint 的一种 OOD 轴;这两者在本体 residual 上可能高度相关,因此不能外推到任意未见故障。hexapod 实验展示了 morphology transfer 的可能性,但更像同一框架在另一机器人上重新训练/部署,而不是跨形态零样本泛化。

消融显示 CL 和 PE 有贡献,但还不足以回答“预测误差是否比直接输入 forward prediction 更本质”“contrastive label 是否造成隐式故障分类捷径”“FFT 和 curriculum 占多少增益”。因此实验支持方法有效,但没有完全支撑作者对 universal applicability 和 OOD robustness 的强表述。

Limitation

第一,方法成立依赖故障在历史本体感知和预测 residual 中可分。如果故障影响较弱、与 terrain/contact noise 混叠、或是间歇性故障,latent 可能无法稳定识别。

第二,训练时使用 damage mask 做 contrastive label,这是隐式监督。真实世界中很多故障没有干净标签,且损伤可能是连续退化而非离散类别;此时 supervised contrastive 的类别结构可能不再适用。

第三,泛化上限很可能由训练故障分布决定。所谓 zero-shot 更像在 residual space 中插值到相近动力学,而不是组合式推理。若遇到多关节耦合损伤、结构断裂、传感器漂移、接触异常,prediction error 可能变大但不一定可行动。

第四,forward model 没有形成长期状态建模或规划能力。它是单步/短期 residual generator,因此不能处理需要提前规避、长期重规划或任务级策略切换的故障恢复。

第五,方法只用本体感知,无法预测地形突变、障碍物或接触条件变化。论文自己也承认缺视觉/触觉;更深层的问题是,prediction error 同时会响应故障和外部环境变化,二者解耦文中未充分说明。

Takeaway

  • 1. 对故障容错 RL,一个非常可迁移的 insight 是:不要只做更强 domain randomization,要显式建模 transition residual。
  • 故障最稳定的表征往往不是状态,而是 action 后果偏离预期的模式。
  • 2. Contrastive supervision 可以把 adaptation latent 从“任务有用但不可控的压缩”变成“按动力学模式组织的坐标系”。
  • 这对多 embodiment、多工具、多接触条件的机器人学习都可能有用。

一句话总结

这篇论文把腿式机器人故障容错从单纯随机化鲁棒 RL 推向了“预测误差驱动的故障表征条件化控制”,实质贡献是用 contrastive latent 和 forward residual 让 policy 更容易区分并利用损伤动力学。