AssistMimic:基于多智能体强化学习的物理 grounded 人际协助控制
核心结论前置:AssistMimic 将紧密接触、力交换的人际协助行为首次建模为完全耦合的多智能体强化学习问题。通过单人体运动先验初始化、动态参考重定向与接触促进奖励三项机制,解决了高接触交互中的训练不稳定难题,在 Inter-X 与 HHI-Assist 基准上首次实现了对协助性交互序列的成功物理跟踪。
1. 背景与问题定义
1.1. 从单人运动到双人协助
1.1.1.1 运动跟踪的孤岛
我们先从当前人体运动控制的主流范式说起。近年来,基于物理引擎的通用运动跟踪(GMT)让虚拟角色和仿人机器人能够复现大量人类动作------跑步、跳跃、击掌、舞蹈。这些成就的核心套路是:从动作捕捉数据中获得参考轨迹,然后在物理模拟器中训练一个策略网络,让仿人角色的关节力矩跟踪这条轨迹。
想象一个木偶师:以前木偶的动作完全靠木偶师的手感(手工设计奖励),现在木偶师手里有了一张精确的舞步图纸(参考轨迹),只需要训练木偶尽可能复现图纸上的每一个姿势。这听起来很美好,对吧?但这里有一个巨大的盲区------所有被跟踪的动作都是单人的。
对于已有经验者,这意味着现有方法(如 PHC、AMP、ASE 等)的 MDP 公式中,状态空间和动作空间都只描述一个智能体,环境动力学不涉及与其他智能体的物理接触。当两个人发生身体接触、力传递、互相支撑时,整个问题空间发生了质变。
数据形态
循环
缺失
动作捕捉数据
单人跟踪器
物理仿真
角色动作
下一帧
接触交互
状态: [1, D]
动作: [1, A]
图注:图 1-1 展示单人运动跟踪的简化概念图。黄色动作捕捉数据经蓝色单人跟踪器流入绿色物理仿真,输出紫色角色动作。红色关键节点标注了当前范式缺失的能力:接触交互。灰色虚线框标注了数据形态:状态与动作均为单智能体维度。如图所示,现有方法是一个自我封闭的单人循环。
认知检查点:单人运动跟踪的成功,恰恰掩盖了多人物理交互问题的复杂性------当两个仿人角色发生接触时,环境动力学从"角色-地面"二元交互跃迁为"角色-角色-地面"三元耦合。
1.1.1.2 协助场景的物理本质
现在我们已经了解了单人跟踪的局限性,接下来看看协助场景到底难在哪里。协助行为(如搀扶跌倒者、帮助卧床者起身、扶持行走)与社交互动(如击掌、握手)有本质区别:后者是瞬时接触,前者是持续力传递。
想象一位护工搀扶老人起身:护工的手必须持续施加向上的力,同时根据老人的重心偏移实时调整支撑点和力的大小。如果护工的手滑到了错误的位置,或者力的大小突然变化,老人不仅无法起身,反而可能加速跌倒。这种精确的空间对齐与紧密定时的力应用,是接触丰富型协助行为的核心特征。
更麻烦的是,近距离人体动作捕捉存在严重的遮挡问题。当两个人紧密接触时,动捕相机的视线被身体互相阻挡,导致参考轨迹噪声大、不准确。如果策略直接跟踪这些噪声轨迹,很容易学到错误的接触模式,甚至把"按压"学成了"支撑"。
错误路径
协助场景
空间对齐
力传递
接触位置敏感
物理一致性
训练不稳定
噪声轨迹
错误接触
图注:图 1-2 展示协助场景难度的错误路径图。黄色协助场景分化为蓝色空间对齐与绿色力传递两个维度,共同汇入紫色物理一致性要求,最终到达红色训练不稳定节点。灰色子图用红色虚线标注了两条退化路径:噪声轨迹误导与错误接触导致失败。如图所示,协助行为的物理本质使其对误差极度敏感。
1.2. 解耦学习的幻觉
1.2.1.1 运动学重播的陷阱
在继续之前,我们先看看现有文献是怎么处理多人交互的。主流做法可以概括为"解耦学习":先独立训练一个接受者(recipient)的策略,或者干脆把接受者的动作作为运动学重播(kinematic replay)固定下来,然后只训练辅助者(supporter)去适应这个"假人"。
想象一个武术陪练:师傅想教学生怎么格挡,但师傅的动作是预先录好的视频,学生只能对着视频练习。问题是,当学生真的格挡时,师傅的下一招应该根据学生的反应而变化------但视频里的师傅不会变。学生学到的只是"对着空气做动作",而非真正的互动。
从物理角度看,运动学重播的接受者没有质量、没有惯性、不会对辅助者的力做出反应。辅助者推它,它不会倾倒;辅助者扶它,它不会借力站起。这种"幽灵伙伴"让辅助者学到的策略在真实物理环境中完全失效。
错误路径
固定动画
无物理反馈
参考轨迹
运动学重播
接受者
辅助者训练
策略收敛
真实环境失效
无双向耦合
物理不一致
图注:图 1-3 展示运动学重播方案的错误路径图。黄色参考轨迹经蓝色运动学重播节点转化为绿色固定动画接受者,辅助者训练后收敛到紫色策略,最终到达红色真实环境失效节点。灰色子图用红色虚线标注了两条错误路径:无双向耦合与物理不一致。如图所示,解耦学习在物理上是一个开环系统。
核心结论:解耦学习打破了物理一致性------接受者的运动不能被独立计算,因为辅助者的接触力会实时改变接受者的动力学状态。
1.2.1.2 冻结接受者的局限
另一种解耦思路是"冻结接受者":先用单人体跟踪器在协助数据集上微调接受者策略,然后冻结其参数,再训练辅助者去配合这个"半残但固定"的接受者。
这相当于先让一个演员排练好自己的动作并固化,然后让另一个演员上台配合。问题是,第一个演员在台上如果失去平衡,不会做任何自我保护反应------因为它被冻结了。辅助者学到的只是配合一个"不会随机应变"的伙伴,一旦遇到真实场景中接受者的意外偏移(如 stumble),整个协作立即崩溃。
瓶颈热力
冻结参数
粗线
粗线
数据集
微调接受者
固定接受者
辅助者训练
配合策略
扰动下崩溃
无共适应
鲁棒性缺失
图注:图 1-4 展示冻结接受者方案的瓶颈热力图。黄色数据集经蓝色微调节点到绿色固定接受者,辅助者训练后产出紫色配合策略,最终到达红色崩溃节点。灰色子图用红色粗线标注了两个瓶颈:无共适应与鲁棒性缺失。如图所示,冻结策略切断了双向协调的学习通道。
2. AssistMimic 核心机制
2.1. 完全耦合的多智能体 MDP
2.1.1.1 不对称动力学建模
现在我们已经了解了为什么解耦学习行不通,接下来看看 AssistMimic 是怎么把问题重新形式化的。核心突破在于:不把协助视为"辅助者配合接受者",而是把两个人都当成需要学习的智能体,放入同一个完全耦合的多智能体 MDP 中。
想象一对双人滑冰选手:他们不是一个人在滑、另一个人跟着模仿,而是两个人共同创造一套动作,彼此的重力、动量、接触力实时互相影响。任何一方的微小调整都会改变双方的平衡方程。
AssistMimic 将协助场景建模为有限时域马尔可夫决策过程,元组为 M=(S,A,Pκ,r,γ,T)\mathcal{M} = (\mathcal{S}, \mathcal{A}, \mathcal{P}_\kappa, r, \gamma, T)M=(S,A,Pκ,r,γ,T)。两个仿人智能体分别记为 m∈{S,R}m \in \{S, R\}m∈{S,R}(Supporter 与 Recipient)。状态空间 S\mathcal{S}S 和动作空间 A\mathcal{A}A 描述的是联合构型------即两个角色的根位置、关节角度、速度等拼接而成的大向量。
关键的不对称性体现在环境转移动力学 Pκ\mathcal{P}\kappaPκ 上:接受者的动力学被显式参数化为 κ=(kp,kd,τmax)\kappa = (k_p, k_d, \tau{max})κ=(kp,kd,τmax),其中 kp,kdk_p, k_dkp,kd 是 PD 控制器增益,τmax\tau_{max}τmax 是最大关节扭矩。通过将这些参数降低(如下半身增益缩放至 0.5,最大扭矩限制为 80 Nm),接受者的内在稳定性被人为削弱,从而必须依赖外部辅助才能维持平衡。
公式互译:这个公式如果翻译成图,会是一个带有可调阻尼的双摆系统------两个摆锤通过弹簧耦合(接触力),但第二个摆锤的轴承被故意加了摩擦(降低 PD 增益)并限制了电机功率(扭矩上限),使得它无法独立站稳,必须靠第一个摆锤的支撑才能摆动。
数据形态
完整动力学
受限动力学
联合状态 S
物理引擎
辅助者 S
接受者 R
联合动作 A
下一状态
S: [2, D_state]
A: [2, D_action]
kappa: 标量组
图注:图 2-1 展示完全耦合 MDP 的完整细节图。黄色联合状态经蓝色物理引擎分化为两个绿色智能体节点(辅助者完整动力学、接受者受限动力学),共同汇入紫色联合动作节点,输出灰色下一状态并形成循环。灰色子图标注了数据形态:联合状态、联合动作、动力学参数组。如图所示,物理引擎是连接两个角色的唯一真实通道。
认知检查点 :不对称动力学设计不是为了"让接受者变弱",而是为了客观量化辅助质量------当接受者无法自救时,任何成功都必然归功于辅助者的贡献。
2.1.1.2 智能体-centric 观察空间
虽然状态空间是联合的,但每个智能体的观察是自我中心的(ego-centric)。这符合真实机器人的感知约束:辅助者看不到接受者的内部关节力矩,只能看到外部可见的姿态和接触力。
每个智能体 mmm 的观察 st(m)s_t^{(m)}st(m) 由三部分拼接而成:
- 本体感知状态 sprior,t(m)s_{prior,t}^{(m)}sprior,t(m):自身关节角度、角速度、根方向等;
- 辅助状态 sassist,t(m)s_{assist,t}^{(m)}sassist,t(m):伙伴的根位置、根速度、关键关节位置等交互上下文;
- 目标 gt(m)g_t^{(m)}gt(m):当前时刻的参考运动目标(来自动作捕捉的重定向轨迹)。
策略网络 πm\pi_mπm 的输入输出关系为:
at(m)∼πm(⋅∣st(m);ϕm),m∈{S,R} a_t^{(m)} \sim \pi_m(\cdot | s_t^{(m)}; \phi_m), \quad m \in \{S, R\} at(m)∼πm(⋅∣st(m);ϕm),m∈{S,R}
公式互译:这个公式如果翻译成图,会是一对并行的监控摄像头------每个摄像头(策略网络)只能看到以自己为原点的局部画面(自我中心观察),输出的是自身电机的控制信号(动作)。两个摄像头不共享原始画面,但都拍摄同一个物理场景的不同视角。
数据形态
本体+伙伴+目标
本体+伙伴+目标
物理场景
辅助者视角
接受者视角
策略 pi S
策略 pi R
动作 aS
动作 aR
观察: [D_obs]
动作: [D_act]
图注:图 2-2 展示智能体-centric 观察的简化概念图。黄色物理场景分化为两个蓝色自我中心视角,分别流入绿色策略网络,输出紫色动作并回流到物理场景。灰色子图标注了观察与动作的数据形态。如图所示,每个策略只看到局部世界,但通过物理引擎隐式共享全局状态。
2.2. 三大稳定训练机制
2.2.1.1 运动先验初始化:从单人到双人的桥梁
现在我们已经了解了 MDP 的形式化,接下来看看为什么直接在这个 MDP 上跑标准 MARL 会失败,以及 AssistMimic 的第一项对策。
如果随机初始化两个策略并在物理引擎中开始训练,会发生什么?接触丰富的协助动作(如从地面扶起一个人)涉及高维非光滑动力学,随机策略几乎必然在第一步就让两个角色纠缠倒地。探索空间太大,奖励信号太稀疏,PPO 的样本效率根本不足以在合理时间内发现任何有意义的协助行为。
想象让两个完全不会滑冰的人第一次上冰就尝试双人托举------他们连站立都困难,更别说配合。AssistMimic 的解决方案是:先让两个人分别学会单人滑冰(单人体运动先验),然后再教他们配合。
具体而言,辅助者与接受者的策略网络权重都从一个预训练的单人体跟踪控制器(PHC)初始化。PHC 已经在 AMASS 等大型动作数据集上学会了稳健的单人运动跟踪。这个初始化不是简单的权重拷贝,而是一个结构化迁移:两个角色的策略网络架构与 PHC 相同,因此底层特征提取器(如处理关节角度、根速度的模式)可以直接复用。
因果链
权重迁移
权重迁移
AMASS 数据集
PHC 预训练
辅助者初始化
接受者初始化
双人 MARL
稳定探索
单人先验
站立行走
接触探索
图注:图 2-3 展示运动先验初始化的因果链图。黄色数据集经蓝色 PHC 预训练节点分化为两个绿色初始化节点,共同汇入紫色双人 MARL 节点,最终到达红色稳定探索节点。灰色子图展示了"单人先验 → 站立行走 → 接触探索"的因果推导链。如图所示,先验初始化把探索起点从"随机倒地"提升到了"基本站立"。
核心结论 :运动先验初始化不是加速收敛的 trick,而是让 MARL 在接触丰富场景中成为可能的前提------没有它,策略永远无法到达需要学习的物理状态空间区域。
2.2.1.2 动态参考重定向:适应实时伙伴姿态
第二项机制解决的是噪声轨迹问题。动作捕捉数据中的参考轨迹是预先录制的,但物理仿真中的接受者不可能完美复现这条轨迹------它的动力学被削弱了(κ\kappaκ 约束),而且辅助者的接触力会实时改变它的运动。
如果辅助者盲目跟踪原始的参考轨迹,当接受者偏离参考位置时,辅助者的手可能会伸向空气,或者按到错误的位置。想象护工按照教科书图示去扶老人,但老人实际倒下的位置比图示偏了 20 厘米------护工如果 rigidly 按照图示操作,只会扶空。
AssistMimic 的动态参考重定向机制(Dynamic Reference Retargeting)让辅助者的目标根据接受者的实时姿态 动态调整。具体而言,当两个角色的根位置距离小于阈值 τdist\tau_{dist}τdist 时,重定向被激活。对于辅助者的每只手(左/右),系统在接受者身体上找到当前时刻最近的锚点关节 ki,t∗k_{i,t}^*ki,t∗:
ki,t∗=argmink∈JR∥p^k,t(R)−p^i,t(S)∥2 k_{i,t}^* = \arg\min_{k \in \mathcal{J}R} \left\| \hat{p}{k,t}^{(R)} - \hat{p}_{i,t}^{(S)} \right\|_2 ki,t∗=argk∈JRmin p^k,t(R)−p^i,t(S) 2
公式互译:这个公式如果翻译成图,会是一个磁性定位器------辅助者的手(绿色光标)在参考空间中扫描接受者身体(蓝色网格)上的所有关节点,找到距离最近的那个点,然后把手的目标位置"吸附"到这个锚点上。这样,即使接受者偏离了原始轨迹,辅助者的手也会自动"跟过去"。
然后,辅助者手腕及手指关节的参考目标被重新计算,以保持与锚点关节的相对空间关系。这意味着:如果参考动作是"扶住接受者的上臂",那么无论接受者的上臂在哪里,辅助者的手都会调整目标去扶住那个实际位置。
状态演变
小于阈值
双箭头
双箭头
双箭头
接受者实时姿态
距离检测
最近锚点搜索
相对关系保持
重定向目标
辅助者跟踪
T1: 锚点在肩
T2: 锚点偏移
==> 目标跟随
图注:图 2-4 展示动态参考重定向的状态演变图。黄色接受者姿态经蓝色距离检测触发绿色锚点搜索与关系保持,输出紫色重定向目标,驱动红色辅助者跟踪。灰色子图用双箭头展示了同一对象(锚点位置)在不同时间步的状态变化:从肩部偏移到新的位置,辅助者目标自动跟随。如图所示,重定向机制让参考轨迹从"刚性图纸"变成了"弹性导航"。
很多人误以为重定向只是对参考轨迹做全局平移。实际上,它是局部关节级的------每只手独立寻找自己的锚点,而不是把整个参考骨架平移。这保证了当接受者扭曲身体时,辅助者的左手可能扶住肩膀,右手可能扶住腰部,而非 rigidly 保持原始的全局姿势。
2.2.1.3 接触促进奖励:从回避到利用
第三项机制解决的是奖励设计问题。标准模仿奖励只关心"你的关节位置与参考有多接近"。在接触丰富的场景中,这会导致策略回避接触------因为接触引入了不可预测的动力学扰动,让跟踪误差变大。策略发现"不碰伙伴"反而能获得更高的模仿奖励,于是学会了在伙伴周围做动作,而不是真正去支撑。
想象护工发现:只要手不碰老人,自己的动作就能完美复现教科书上的图示,从而获得高分。于是他只是站在旁边比划,从不真正接触------这显然不是协助。
AssistMimic 的接触促进奖励(Contact-Promoting Reward)显式奖励物理上有意义的接触。它通过检测辅助者与接受者之间的接触力或接触区域,当发生支撑性接触时给予额外奖励。这迫使策略越过"回避接触"的局部最优,进入"利用接触完成协助"的更优区域。
对比视图
无接触
有接触
物理仿真
接触检测
标准模仿奖励
接触促进奖励
联合奖励
策略更新
无接触奖励: 回避
有接触奖励: 支撑
图注:图 2-5 展示接触促进奖励的对比视图。黄色物理场景经蓝色接触检测分化为两条路径:无接触走标准模仿奖励(绿色),有接触走接触促进奖励(绿色),两者汇入紫色联合奖励节点。灰色子图对比了两种奖励的后果:无接触导致回避(红色),有接触导致支撑(绿色)。如图所示,接触奖励是打破"回避局部最优"的关键杠杆。
认知检查点:三项机制不是独立工作的------先验初始化让策略"站得起来",重定向让策略"找得到人",接触奖励让策略"愿意碰人"。三者缺一不可。
3. 架构与实现
3.1. 策略网络与观察构造
3.1.1.1 三层观察输入
现在我们已经了解了三大机制的原理,接下来看看它们在策略网络中是如何具体实现的。每个智能体的策略 πm\pi_mπm 接收三层输入,拼接后送入 MLP。
第一层:本体感知状态 sprior,t(m)s_{prior,t}^{(m)}sprior,t(m)。这来自 PHC 的标准输入:自身关节角度、关节角速度、根方向(用 6D 旋转表示)、根速度、根角速度,以及一个相位变量(用于周期性运动)。维度约 200+。
第二层:辅助状态 sassist,t(m)s_{assist,t}^{(m)}sassist,t(m)。这是 AssistMimic 新增的部分,包含伙伴的根位置、根速度、关键关节(如髋、肩、腕)的位置,以及从伙伴视角到自身视角的相对变换。这部分让策略感知到"伙伴在哪里、在怎么动"。
第三层:目标 gt(m)g_t^{(m)}gt(m)。这是当前时刻的参考运动目标,包括未来若干帧(如 10 帧)的参考关节位置。对于辅助者,这个目标已经经过动态重定向调整;对于接受者,目标直接来自动作捕捉数据。
数据形态
智能体 m
本体感知
辅助状态
目标轨迹
MLP 策略
动作输出
本体: [D_prior]
辅助: [D_assist]
目标: [D_goal]
拼接: [D_total]
图注:图 3-1 展示策略网络观察构造的完整细节图。黄色智能体节点分化为三个蓝色输入层(本体、辅助、目标),共同汇入绿色 MLP 策略节点,输出紫色动作。灰色子图标注了各层数据形态与拼接后总维度。如图所示,辅助状态是 AssistMimic 区别于 PHC 的核心输入增量。
3.1.1.2 Critic 网络与角色标签
在 PPO 的 Actor-Critic 架构中,Critic 负责估计状态价值函数 V(s)V(s)V(s)。AssistMimic 的 Critic 与 Actor 共享相同的输入结构,但额外接收一个角色标签(role label),指示当前估计的是辅助者还是接受者的价值。
这个标签的作用是让 Critic 理解两个角色在协助任务中的不对称贡献。接受者的价值主要与"是否跌倒"相关,辅助者的价值与"是否成功支撑"相关。如果不加角色标签,Critic 可能会混淆两种价值的尺度。
接口对接
联合观察
角色标签
Critic MLP
价值估计
标签 0 = 辅助者
标签 1 = 接受者
图注:图 3-2 展示 Critic 网络的接口对接图。紫色联合观察经橙色角色标签节点流入绿色 Critic MLP,输出紫色价值估计。灰色子图标注了角色标签的接口契约:0 代表辅助者、1 代表接受者。如图所示,角色标签让价值函数具备角色感知能力。
3.2. 奖励函数设计
3.2.1.1 模仿奖励的组成
奖励函数是策略学习的导航信号。AssistMimic 的奖励由多个项加权组成:
关节位置奖励:鼓励每个关节的位置接近参考轨迹。
关节速度奖励:鼓励关节角速度接近参考。
根位置/方向奖励:鼓励角色的根(骨盆)位置和朝向接近参考。
末端执行器奖励:鼓励手、脚等末端关节接近参考位置。
这些项共同构成了标准的运动模仿奖励。但如前所述,仅有模仿奖励会导致回避接触。
数据形态
参考轨迹
关节位置
关节速度
根姿态
末端执行器
模仿奖励
各项: 标量
加权和: 标量
图注:图 3-3 展示模仿奖励组成的简化概念图。黄色参考轨迹分化为四个绿色奖励项,汇入紫色加权和。灰色子图标注了数据形态:各项均为标量,最终加权和为标量。如图所示,模仿奖励是多目标跟踪的聚合信号。
3.2.1.2 接触奖励的工程实现
接触促进奖励的工程实现依赖于物理引擎的接触检测 API。在 Isaac Gym 或类似模拟器中,可以查询两个刚体之间的接触力大小和接触点位置。
AssistMimic 的接触奖励不是简单地奖励"任何接触",而是奖励发生在特定解剖区域的支撑性接触。例如,当辅助者的手与接受者的躯干/背部/手臂发生接触,且接触力方向大致向上(支撑方向)时,奖励被激活。这避免了策略通过"胡乱拍打"来刷奖励。
完整细节
物理引擎
接触检测
接触位置筛选
力方向判断
接触奖励
策略偏好支撑
躯干背部手臂
向上力向量
图注:图 3-4 展示接触奖励工程实现的完整细节图。黄色物理引擎经蓝色接触检测、绿色位置筛选与方向判断,输出紫色接触奖励,驱动红色策略偏好支撑行为。灰色子图标注了两个工程约束:有效接触区域(躯干、背部、手臂)与有效力方向(向上)。如图所示,接触奖励的设计需要精确的解剖与力学过滤。
核心结论:接触奖励的粒度决定了策略学到的接触质量------粗粒度奖励导致"乱碰刷分",细粒度奖励诱导"精准支撑"。
4. 训练流程与伪代码
4.1. 完整 MARL 训练循环
4.1.1.1 伪代码:AssistMimic 主循环
现在我们已经了解了网络架构和奖励设计,接下来把它们组装成一个完整的训练流程。AssistMimic 使用 PPO 同时训练两个策略,每个 epoch 包含收集 rollout、计算优势、更新策略三个主要阶段。
function AssistMimic_Training(Env, Dataset, Epochs):
# 初始化,对应图 4-1
pi_S = LoadPHC("phc_pretrained.ckpt") # 辅助者策略,对应图 2-3
pi_R = LoadPHC("phc_pretrained.ckpt") # 接受者策略,对应图 2-3
# 可选:对接受者做小规模微调以适配近地动作,对应附录说明
V_S = InitCritic(role=Supporter) # Critic 带角色标签,对应图 3-2
V_R = InitCritic(role=Recipient)
for epoch from 1 to Epochs do: # 外层循环,对应图 4-1
trajectory_S = empty list
trajectory_R = empty list
# 步骤一:Rollout 收集,对应图 4-1 绿色节点
for each clip in Dataset do:
state = Env.Reset(clip) # 联合状态,对应图 2-1
ref_S = clip.reference_supporter # 辅助者参考轨迹
ref_R = clip.reference_recipient # 接受者参考轨迹
for t from 1 to T do: # 时序展开,对应图 4-1 纵向
# 观察构造,对应图 3-1
obs_S = BuildObs(state, m=S, goal=ref_S[t]) # [D_total]
obs_R = BuildObs(state, m=R, goal=ref_R[t]) # [D_total]
# 动态参考重定向,对应图 2-4
if Distance(state.root_S, state.root_R) <= tau_dist then:
ref_S[t] = Retarget(ref_S[t], state.pose_R) # 对应图 2-4 橙色节点
# 此时辅助者目标根据接受者实时姿态调整
end
# 动作采样,对应图 2-2
a_S = pi_S.Sample(obs_S) # [D_action],对应图 2-2 紫色节点
a_R = pi_R.Sample(obs_R) # [D_action]
# 物理仿真步进,对应图 2-1
next_state = Env.Step(a_S, a_R) # 联合动力学,对应图 2-1 蓝色节点
# 奖励计算,对应图 3-3 与图 3-4
r_S = ImitationReward(next_state, ref_S[t]) + ContactReward(next_state, m=S)
r_R = ImitationReward(next_state, ref_R[t]) + ContactReward(next_state, m=R)
# 此时 r_S 和 r_R 为标量
# 存储轨迹,对应图 4-1
trajectory_S.append((obs_S, a_S, r_S, next_obs_S))
trajectory_R.append((obs_R, a_R, r_R, next_obs_R))
state = next_state
end
end
# 步骤二:优势估计(GAE),对应图 4-1 橙色节点
advantages_S = ComputeGAE(trajectory_S, V_S) # [T_total]
advantages_R = ComputeGAE(trajectory_R, V_R) # [T_total]
# 此时 advantages 为每个时间步的优势估计值
# 步骤三:PPO 策略更新,对应图 4-1 红色节点
for update_step from 1 to K do: # 多个 mini-batch epoch
batch_S = SampleMiniBatch(trajectory_S) # [B, ...]
batch_R = SampleMiniBatch(trajectory_R)
# Actor 更新
pi_S.UpdatePPO(batch_S, advantages_S) # 对应图 3-1 绿色节点
pi_R.UpdatePPO(batch_R, advantages_R)
# Critic 更新
V_S.UpdateTD(batch_S) # 对应图 3-2
V_R.UpdateTD(batch_R)
end
# 此时 pi_S、pi_R、V_S、V_R 参数已更新
end
return pi_S, pi_R
end
执行快照:
- 第 2-3 行
LoadPHC后:pi_S和pi_R的网络权重继承自预训练单人跟踪器,底层特征提取器已具备基本运动能力 - 第 14 行
state初始化后:state为联合物理状态,包含两个角色的根位置、关节角度等 - 第 23 行重定向后:
ref_S[t]的手腕目标位置已根据state.pose_R的最近锚点调整 - 第 27-28 行动作采样后:
a_S = [D_action],a_R = [D_action],通常为关节目标角度或力矩 - 第 31 行仿真步进后:
next_state包含物理引擎更新后的新联合状态 - 第 35 行奖励计算后:
r_S为标量,是模仿奖励(关节、根、末端)与接触奖励的加权和 - 第 46 行 GAE 后:
advantages_S = [T_total],每个元素对应一个时间步的优势值 - 第 57-58 行 PPO 更新后:
pi_S的策略参数沿 clipped surrogate objective 的梯度方向更新
数据形态
步骤三:PPO 更新
步骤二:GAE
步骤一:Rollout
轨迹
参数回流
参考轨迹
重定向门控
策略采样
物理步进
奖励计算
优势估计
策略参数更新
轨迹: [T, D]
优势: [T]
批次: [B, D]
图注:图 4-1 展示 AssistMimic 主循环的总体结构图。三个子图以纵向拓扑排列:绿色 Rollout 阶段(含重定向门控、策略采样、物理步进、奖励计算),橙色 GAE 优势估计,红色 PPO 策略更新。灰色节点标注了参数回流。下方灰色子图标注了关键数据形态:轨迹张量、优势向量、批次维度。如图所示,整个训练循环是一个标准的 on-policy MARL 流程,但嵌入了动态重定向和接触奖励的特殊模块。
认知检查点:AssistMimic 的伪代码与标准 PPO 的区别只有三处:PHC 初始化、Retarget 门控、ContactReward------但这三处改变使问题从"不可学"变为"可学"。
5. 实验与验证
5.1. 基准测试与对比
5.1.1.1 Inter-X 与 HHI-Assist 数据集
现在我们已经了解了完整训练流程,接下来看看 AssistMimic 在真实基准上的表现。实验使用两个专注于紧密耦合、支持导向的人际交互数据集:
Inter-X:包含多种社交与协助交互动作,如搀扶、搭肩、引导行走等。角色在空间上接近,存在丰富的上半身接触。
HHI-Assist:更专注于护理场景,包含从地面扶起、床上支撑、座椅辅助等动作。接受者经常处于低重心或不稳定的姿态,对辅助质量要求更高。
两个数据集的动作捕捉数据都存在近距离遮挡导致的噪声,且参考轨迹中的接触力信息不可用(动捕只记录运动学,不记录接触力学)。
对比视图
动捕数据
Inter X
HHI Assist
评估基准
成功率对比
社交协助
护理场景
图注:图 5-1 展示评估基准的简化概念图。黄色动捕数据分化为两个绿色数据集节点,共同汇入紫色评估基准,输出灰色成功率对比。灰色子图对比了两个数据集的场景特征:社交协助与护理场景。如图所示,两个基准覆盖了从轻度到重度的协助需求谱系。
5.1.1.2 与解耦基线的性能差距
实验结果显示,AssistMimic 在成功率(Success Rate)上全面碾压解耦基线:
- Phys-Reaction:由于接受者的运动在没有外部支撑时物理上不可实现,该方法在初始跟踪阶段就无法产生稳定的接受者轨迹,直接失效。
- Kinematic-Recipient:运动学重播的接受者不会响应辅助者的力,辅助者学到的策略在真实物理测试中完全失效。
- Frozen-Recipient:虽然能完成部分动作,但成功率远低于 AssistMimic(Inter-X 上差距超过 30%),且在扰动下迅速崩溃。
AssistMimic 在 Inter-X 上达到 83% 成功率,在 HHI-Assist 上达到 73%。它是第一个能够成功跟踪紧密交互、力交换的人-人运动序列的物理基础控制器。
演化路径
失效
约 50%
83%
方法
Phys Reaction
Frozen Recipient
AssistMimic
Inter X SR
性能排序
解耦: 不可行
冻结: 低鲁棒
耦合: 高成功
图注:图 5-2 展示与解耦基线对比的演化路径图。蓝色方法节点分化为三个绿色基线节点,汇入紫色成功率节点。灰色子图以阶梯形式展示了三种方案的演化关系:解耦不可行(红色)、冻结低鲁棒(黄色)、耦合高成功(绿色)。如图所示,从 naive 解耦到工业级耦合的每一步都解决了明确的物理一致性问题。
认知检查点:AssistMimic 的成功不是"更好的超参调优",而是"正确的问题形式化"------把协助从"单智能体+干扰"重新定义为"双智能体+耦合动力学"。
5.2. 消融实验与机制验证
5.2.1.1 移除先验初始化的后果
消融实验中最具戏剧性的是移除权重初始化。当辅助者与接受者的策略都从零开始随机初始化时,训练几乎无法推进:近地动作(如从地面扶起)导致角色几乎立即失去平衡,episode 提前终止。
定性结果显示,即使偶尔有策略接近接受者并伸手,也会把自己的身体重量压在接受者身上,导致双方一起跌倒。这是一种典型的奖励黑客(reward hacking):策略发现通过倾倒身体制造接触可以获得接触奖励,但这与"支撑"的目标背道而驰。
错误路径
随机初始化
近地动作
立即失衡
提前终止
无有效探索
训练失败
无站立先验
奖励黑客
图注:图 5-3 展示移除先验初始化的错误路径图。黄色随机初始化经蓝色近地动作到绿色立即失衡,最终汇入红色训练失败。灰色子图用红色虚线标注了两条错误路径:缺乏站立先验导致无法探索、奖励黑客导致错误接触。如图所示,先验初始化是避免早期崩溃的安全气囊。
5.2.1.2 移除接触奖励的后果
移除接触促进奖励后,策略学会了"完美跟踪但不接触"。定性对比显示,辅助者会过度跟随噪声手部轨迹,最终从上方按压接受者,导致接受者跌倒。没有接触奖励,策略的局部最优就是"做一个干净的旁观者"。
这验证了接触奖励的核心价值:它不仅是一个额外的奖励项,更是打破回避局部最优的势能垒。没有它,策略永远不会冒险进入"接触-支撑"这一高价值但高风险的区域。
瓶颈热力
粗线
粗线
无接触奖励
模仿奖励主导
回避接触
完美旁观者
接受者跌倒
局部最优
无支撑行为
图注:图 5-4 展示移除接触奖励的瓶颈热力图。黄色无接触奖励节点经蓝色模仿奖励主导到绿色回避接触,最终到达红色接受者跌倒。灰色子图用红色粗线标注了两个瓶颈:局部最优陷阱与无支撑行为。如图所示,接触奖励是策略跨越回避陷阱的桥梁。
5.2.1.3 移除动态重定向的后果
移除动态参考重定向后,辅助者 rigidly 跟踪原始参考轨迹。当接受者因动力学限制偏离参考位置时,辅助者的手伸向空气或错误位置,无法建立有效接触。在 HHI-Assist 的床上支撑场景中,这种错位尤其致命------辅助者的手可能伸向枕头位置,而接受者已经滑到了床沿。
状态演变
双箭头
双箭头
双箭头
固定参考
接受者偏移
手伸空气
接触失败
协助失效
T1: 目标在肩
T2: 肩已偏移
==> 手仍去旧位
图注:图 5-5 展示移除动态重定向的状态演变图。黄色固定参考节点在蓝色接受者偏移后,导致绿色手伸空气、紫色接触失败,最终红色协助失效。灰色子图用双箭头展示了同一对象(目标位置)在不同时间步的状态变化:目标仍指向旧位置,而实际解剖点已偏移。如图所示,重定向机制让辅助行为具备了"眼到手到"的实时适应性。
6. 泛化与鲁棒性
6.1. 未见交互与扰动
6.1.1.1 对未见支持动作的零样本泛化
AssistMimic 不仅在训练见过的动作上表现优异,还能泛化到未见过的交互类别。例如,在 Inter-X 上训练时,模型见过"搀扶腋下"和"托住背部",但测试时遇到"扶住手臂支撑行走"(support-by-arm)------这是一种训练集中未出现的交互模式。
实验显示,模型成功地在保持自身运动的同时,将支撑手放在了伙伴的手臂上,并避免了身体碰撞。这说明 AssistMimic 学到的不是特定动作的记忆,而是支撑行为的通用物理原则:找到伙伴的重心、施加适当的向上力、保持自身平衡。
知识图谱
训练动作
腋下搀扶
背部托住
物理原则
手臂支撑
零样本成功
重心感知
力方向控制
自平衡
图注:图 6-1 展示零样本泛化的知识图谱。黄色训练动作分化为两个绿色具体动作,共同汇入紫色物理原则节点,输出到灰色零样本成功。下方灰色知识图谱揭示了支撑行为的三个底层原则:重心感知、力方向控制、自平衡。如图所示,AssistMimic 学到的是可迁移的物理直觉,而非动作模板。
6.1.1.2 对扰动的反应能力
AssistMimic 对未见扰动表现出强鲁棒性。实验测试了两种扰动:
- Stumble:在行走辅助过程中,接受者被施加一个突然的侧向力,模拟绊倒;
- Load Shift:在支撑过程中,接受者的重心突然改变,模拟身体滑动。
在两种情况下,AssistMimic 都能通过调整支撑位置和力的大小来维持接受者的平衡。这验证了完全耦合训练的价值:因为训练过程中接受者本身就是不稳定的,辅助者已经学会了反应式协调,而非仅仅复制参考轨迹。
状态演变
双箭头
双箭头
双箭头
扰动类型
绊倒 stumble
重心偏移
反应式调整
平衡维持
扰动前: 稳定支撑
扰动中: 检测失衡
扰动后: 力臂调整
图注:图 6-2 展示扰动反应的状态演变图。黄色扰动类型分化为两个绿色具体扰动,汇入紫色反应式调整节点,输出灰色平衡维持。灰色子图用双箭头展示了辅助者同一支撑行为在扰动前、中、后三个时间步的状态变化:从稳定支撑到检测失衡,再到力臂调整。如图所示,耦合训练天然赋予了策略扰动适应能力。
7. 演化路径与决策分支
7.1. 从 Naive 到工业级
7.1.1.1 方案 A:单智能体+运动学重播
现在我们已经了解了 AssistMimic 的完整实验表现,接下来看看它是如何从最简单的 naive 实现一步步演化而来的。
方案 A:单智能体+运动学重播。这是最直觉的做法------把接受者的动作作为预录动画播放,只训练辅助者去反应。实现简单,但物理上完全错误:接受者不会倒、不会滑、不会根据辅助者的力调整姿态。辅助者学到的只是"对着空气做动作"。
想象一个舞蹈排练:舞伴 A 是录像机里的人物,舞伴 B 是真人。B 无论怎么跳,A 都按录像做动作。B 永远学不会真正的领舞/跟随技巧,因为 A 不会给任何物理反馈。
错误路径
参考轨迹
运动学重播
幽灵接受者
辅助者训练
真实部署失效
无物理反馈
无双向耦合
图注:图 7-1 展示方案 A 的错误路径图。黄色参考轨迹经蓝色运动学重播到绿色幽灵接受者,辅助者训练后到达红色真实部署失效。灰色子图用红色虚线标注了两条错误路径:无物理反馈与无双向耦合。如图所示,运动学重播在物理上是一个单向幻觉。
7.1.1.2 方案 B:冻结接受者
方案 B:冻结接受者。比方案 A 稍好,至少接受者是一个物理实体。但接受者的策略参数被冻结,无法根据辅助者的动作自适应。辅助者学到的只是配合一个"半残但固定"的伙伴。
想象舞伴 A 腿受伤了,但医生给他打了石膏,规定他必须用固定姿势跳完。舞伴 B 学会了配合这个石膏姿势,但一旦 A 的石膏拆了(真实场景中接受者会自适应),B 的配合策略就失效了。
瓶颈热力
冻结
粗线
粗线
数据集
预训练接受者
固定策略
辅助者训练
配合策略
扰动下崩溃
无共适应
鲁棒性低
图注:图 7-2 展示方案 B 的瓶颈热力图。黄色数据集经蓝色预训练到绿色固定策略,辅助者训练后产出紫色配合策略,最终红色崩溃。灰色子图用红色粗线标注了两个瓶颈:无共适应与鲁棒性低。如图所示,冻结策略让辅助者失去了应对伙伴变化的能力。
7.1.1.3 方案 C:AssistMimic
方案 C:AssistMimic。它在方案 B 的基础上引入了三个关键改进:
- 完全耦合训练:两个策略同时训练、同时更新,允许共适应;
- 动态参考重定向:根据接受者实时姿态调整辅助者目标;
- 接触促进奖励:显式鼓励物理上有意义的支撑接触。
这三者构成了从 naive 到工业级的完整阶梯:没有 1,则物理不一致;没有 2,则空间错位;没有 3,则策略回避接触。
演化路径
解决物理缺失
解决共适应缺失
方案 A: 重播
方案 B: 冻结
方案 C: 耦合
联合轨迹
物理引擎
共适应训练
重定向目标
接触奖励
物理一致策略
部署鲁棒
图注:图 7-3 展示从 naive 到工业级的演化路径图。黄色联合轨迹经蓝色物理引擎到绿色共适应训练、重定向目标、接触奖励,最终到达紫色物理一致策略与灰色部署鲁棒。下方灰色子图以阶梯形式展示了三种方案的演化关系。如图所示,AssistMimic 是前两种方案缺陷的系统性修补。
核心结论:演化路径不是功能叠加,而是"问题驱动"的递进------每一步都针对前一步的致命物理缺陷引入最小必要改动。
7.2. 关键设计抉择
7.2.1.1 联合训练 vs 顺序训练
第一个关键抉择是:两个策略是同时训练(联合),还是先训一个再训另一个(顺序)?
顺序训练(先训接受者,冻结后再训辅助者)实现简单,调试方便。但它破坏了物理一致性------辅助者训练时面对的接受者不会自适应,学到的策略是"对一个假人的配合"。
联合训练 (AssistMimic 的选择)虽然实现复杂(需要处理非平稳性、两个策略同时变化导致的环境非稳态),但它允许双向协调的涌现。实验表明,联合训练的最终成功率比顺序训练高 30% 以上,且对扰动的鲁棒性显著更强。
后果对比
分支 B:顺序训练
分支 A:联合训练
同时更新
双向适应
物理一致
高成功率
先后更新
单向适应
物理不一致
低成功率
训练顺序
成功率: 83%
成功率: 50%
图注:图 7-4 展示联合训练与顺序训练的决策分支图。上方两个子图分别展示两种训练顺序的后果链:左侧绿色分支双向适应、物理一致、高成功;右侧红色分支单向适应、物理不一致、低成功。下方灰色子图对比了成功率差异。如图所示,联合训练是协助场景物理一致性的必要代价。
7.2.1.2 对称 vs 不对称动力学
第二个关键抉择是:两个智能体是否应该使用相同的物理参数?
对称动力学(两个角色都是健全人)实现简单,但无法评估辅助质量。如果接受者本身就是一个完美的平衡控制器,那么辅助者的存在就变得可有可无------即使辅助者什么都不做,接受者也能自己完成动作。
不对称动力学 (AssistMimic 的选择)通过降低接受者的 PD 增益和最大扭矩,人为制造"辅助需求"。这虽然增加了训练难度,但客观隔离了辅助者的贡献。任何成功都必然是因为辅助者提供了有效支撑,而非接受者自救。
接口对接
分支 B:对称
分支 A:不对称
降低 PD 增益
接受者不稳
必须辅助
贡献可量化
完整 PD 增益
接受者自立
辅助冗余
贡献模糊
动力学设计
kp 0.5
tau max 80
图注:图 7-5 展示不对称与对称动力学的决策分支图。上方两个子图分别展示两种动力学设计的后果链:左侧绿色分支通过降低增益制造辅助必要性,右侧红色分支因接受者自立导致辅助贡献无法评估。下方灰色子图标注了不对称设计的接口参数:PD 增益缩放 0.5、最大扭矩 80 Nm。如图所示,不对称动力学是客观评估辅助质量的实验设计基石。
8. 系统全景与闭环
8.1. 总体结构图
现在我们已经走完了从背景到实验、从模块到决策的全部环节,最后把视野拉到最高层,看看 AssistMimic 作为一个系统的完整样貌。
协同设计
参数回流
参数回流
动捕数据
动态重定向
辅助者策略
接受者策略
物理引擎
接触检测
PPO 更新
成功率评估
部署决策
重定向适配
接触反馈
联合优化
图注:图 8-1 展示 AssistMimic 的总体结构图。黄色动捕数据经蓝色重定向节点流入绿色辅助者策略,同时直接流入绿色接受者策略,两者在紫色物理引擎中交互,经橙色接触检测节点到达红色 PPO 更新节点,通过点线回流到两个策略。灰色节点为评估与部署输出。下方灰色子图展示了重定向适配、接触反馈、联合优化三者之间的协同设计关系。如图所示,整个系统是一个从数据到物理再到策略更新的完整闭环。
8.2. 知识图谱
概念层
力传递
协助机器人
物理交互
解耦局限
MARL 形式化
三大机制
AssistMimic
物理一致
不对称 MDP
先验迁移
动态重定向
接触奖励
图注:图 8-2 展示 AssistMimic 的知识图谱。黄色根节点"协助机器人"经蓝色物理交互、绿色解耦局限、紫色 MARL 形式化、橙色三大机制,最终汇入红色 AssistMimic 节点,输出灰色物理一致。下方灰色概念层标注了四个底层理论支柱:不对称 MDP、先验迁移、动态重定向、接触奖励。如图所示,整个知识网络从应用领域出发,经过问题识别,最终收敛到解决方案与物理一致性保证。
9. 总结与闭环
9.1. 这在实际部署中意味着什么
到这里,我们已经完整走完了 AssistMimic 的技术脉络。现在回到最实际的问题:如果你的团队正在开发一款护理机器人或协作人形机器人,这套方法论能带来什么改变?
第一,仿真到现实的鸿沟:AssistMimic 目前完全在物理仿真器中训练,尚未涉及 sim-to-real 迁移。但它的价值在于证明了"紧密接触协助行为可以在仿真中通过 MARL 学会"。这为后续 sim-to-real 研究(如域随机化、系统辨识)提供了可行的策略起点。
第二,计算开销:完全耦合 MARL 的训练成本显著高于单智能体。每个 rollout 需要同时前向传播两个策略,物理引擎的接触求解也是计算密集型。建议在实际部署时使用蒸馏(DAgger)将训练好的专家策略压缩为单一通用策略,以降低推理成本。
第三,安全边界 :在真实机器人上部署时,接触力的安全上限必须严格限定。AssistMimic 在仿真中没有力上限约束(除了接受者的 τmax\tau_{max}τmax),但真实人类远比仿真角色脆弱。建议在策略输出层增加硬约束:如果计算的接触力超过安全阈值,触发保护性回退动作。
闭环设计
仿真训练
策略蒸馏
安全约束层
通用策略
真实部署
护理应用
监控接触力
力超限回退
人机安全
图注:图 9-1 展示从仿真训练到护理应用的闭环设计图。橙色仿真训练节点分流到绿色策略蒸馏与安全约束层,共同汇入紫色通用策略,最终到达红色真实部署与灰色护理应用。下方灰色子图展示了工程落地时的三个安全闭环:监控接触力、力超限回退、人机安全。如图所示,AssistMimic 的工业价值在于"从仿真物理一致性到真实人机安全"的递进。
认知检查点:AssistMimic 不是终点,而是起点------它首次证明了物理 grounded 的协助行为可以通过 MARL 学习,为后续的 sim-to-real、力控安全、视觉感知增强打开了大门。