PHC:让物理机器人「摔了能自己爬起来」的永动机器人控制器
🎯 为什么重要:物理仿真的「现实gap」卡在「摔倒怎么办」
把视频里估计的人体姿势送进物理仿真器驱动小人,是做实时虚拟形象(avatar)的标准管线。但这里有个致命问题:
之前的两条出路都不太行:
| 方案 | 做法 | 问题 |
|---|---|---|
Residual Force Control (RFC) UHC | 在小人根部加一个「上帝之力」托住它 | 小人会飞、漂浮,物理真实感被破坏("hand of God") |
Fail-safe Reset Egopose | 快摔倒时 teleport 回 kinematic 姿势 | 瞬移感强,仍然依赖不可靠的参考姿势 |
额外 Recovery Policy ASE | 摔倒时切到另一个「起身」策略(能自然起身,已解决早期 recovery policy [7] 的高频抖动) | 起身后不知道怎么回到参考动作,无法接回 imitate |
PHC 的目标:一个单一策略,既会模仿、又会自然起身并走回参考轨迹,全程无外力、无重置——所以叫「Perpetual(永续)」。
💡 核心思想:PMCP——分阶段加容量,不掉旧技能
要做出「永动机器人」控制器,瓶颈不是网络大小,而是灾难性遗忘:学了新动作(比如 fail-state recovery),旧的模仿能力就退化了。PHC 的核心方法是 Progressive Multiplicative Control Policy (PMCP)。
这套思路脱胎于 Progressive Neural Networks (PNN),但有个关键改造:PNN 原本要人工指定「用哪个子网络」,这里因为动作之间高度相关(走和跑共享大量东西),改成 Composer 自动学一个加权,把各 primitive 的输出做乘性融合。于是既能复用旧技能、又能特化新难题。
🛠️ 工程上怎么落地:四个让小人「站得稳」的设计
| 设计 | 心智 | 为什么必要 |
|---|---|---|
| ① AMP 风格奖励 | 除了「贴近参考姿势」还给一个「看起来像人」的对抗奖励 | 尤其在 fail-state 起身时根本没有参考姿势可追,必须有先验保证动作自然不抽搐 |
| ② Relaxed Early Termination (RET) | 判定「摔倒」时忽略脚踝和脚趾的偏离 | 仿真小人的脚是单段刚性,真人脚是多段的;逼着脚踝严格贴合 MoCap 反而会让小人失衡 |
| ③ Energy Penalty | 奖励里加一项 $-0.0005\sum_j|\mu_j\omega_j|$(力矩×角速度) | 没有「上帝之力」托底后,策略容易学出高频抖动脚来维持平衡;能量惩罚直接掐掉这个 trick |
| ④ Keypoint 输入版(Ours-kp) | 不输入关节旋转,只输入 3D 关键点 | 关键点比旋转角更容易从图像估计(且更稳),让 PHC 能直接接视频姿态器 |
摔倒时,参考姿势已经没意义了(你不能让一个趴在地上的人去模仿站立的 MoCap)。PHC 的处理非常优雅:把参考姿势的非根关节直接替换为仿真当前的值,于是「模仿任务」瞬间退化成「走到根目标位置」的 point-goal 任务——小人只要爬起来、走到参考根位置附近(<0.5m),就能无缝切回完整模仿。这一招让 recovery 自然衔接回 imitate。
📊 结果:98.9% AMASS 覆盖,90% 视频噪声成功率
| 维度 | 数字(论文 Table 1/2/4) |
|---|---|
| AMASS 训练集模仿成功率 | 98.9%(UHC+RFC: 97%,UHC 无外力: 84.5%) |
| AMASS 测试集(未见动作) | 96.4%(UHC+RFC: 96.4%,但 UHC 无外力只剩 62.6%) |
| H36M-Motion(跨数据集) | 92.9%(UHC 无外力只有 23.6%) |
| 视频噪声姿势成功率(H36M-Video) | 88.7% ~ 91.9%(UHC 无外力只有 18.1%) |
| Fail-state 恢复(10秒内) | 倒地+远离场景:98.8%;纯倒地:98.8%;纯远离:99.5% |
| 训练规模 | 4 个 primitives(含 recovery),单卡 A100 训练≈一周 |
| 运行速度 | 策略 30Hz、仿真 60Hz,>30 FPS 实时 |
| 动作空间 | SMPL 24 刚体、23 个驱动关节、$a_t\in\mathbb{R}^{23\times 3}$ |
🌐 在领域中的位置
PHC 是physics-based motion imitation「告别外力」的分水岭。它把「video-to-physics」这条管线第一次推到了「可实时、可容错、可量产」的产品级,是后续 Meta 全身 codec、quest-sim 类工作的底座。关联线索:T08 人形动作谱系。
❓ 常见误区
PHC 是生成式模型吗?
不是。它是一个基于 RL(PPO)的目标条件控制策略。生成性体现在 AMP 对抗先验上,但主体策略是确定性的回归(高斯)。生成「新动作」是下游 motion generator(如 MDM)的事,PHC 是跟踪器。
四个 primitive 不会让推理很慢吗?
不会。Composer 是一个轻量 MLP,输出各 primitive 的组合权重;primitive 本身也只是两层 MLP([1024, 512])。整条 forward 仍在 30FPS 以上,瓶颈在仿真而非策略。
「Perpetual」是不是永远不摔?
不是。「Perpetual」指的是不依赖 reset——摔了能自己爬起来继续。论文坦白:高度动态的动作(高跳、后空翻)仍然学不好,因为单帧目标 $q̂_{t+1}$ 无法表达「助跑起跳」这种需要规划/intent 的动作。
和 ASE 的起身策略有啥本质区别?
ASE 只解「从地上站起来」这一个动作;PHC 把「起身 + 走回参考轨迹 + 恢复模仿」作为一个连续任务端到端解掉了——通过目标折叠把 imitate 退化成 point-goal,让衔接无缝。