DexMachina: Functional Retargeting for Bimanual Dexterous Manipulation

Paper: arXiv:2505.24853 Code: MandiZhao/dexmachina Code reference: main @ adae5bf6 (2026-03-23)

1. Motivation (研究动机)

DexMachina 研究的不是“把人手轨迹映射到机器人手看起来像不像”,而是一个更硬的目标:给定一段人类双手操作物体的 demonstration,学习任意一对灵巧手的策略,使物体本身按照 demonstration 的状态序列运动。论文把这个问题命名为 Functional Retargeting。这个定义很关键,因为传统 kinematic retargeting 往往只优化手型相似度或 fingertip 对齐;在有接触、受动力学约束、还要打开/关闭 articulated object 的场景里,手型“像人”并不等价于能真正把物体移动到目标状态。作者强调,现有 learning-based dexterous manipulation 方法在较短、较简单任务上已有成功,但常依赖手工 reward engineering 或昂贵的机器人数据采集,并且受 human hand 与 robot hand 的 embodiment gap 限制。

这篇论文瞄准的具体缺口是 long-horizon, bimanual, articulated-object manipulation:例如两只手把 waffle iron 拿起、开盖、关盖、翻转,再重复开关;或者一只手稳定 notebook、另一只手合上盖子。这里同时有高维动作空间、多阶段接触切换、双手协同、物体 6-DoF pose 与 articulation joint tracking。若只用 sparse/terminal task reward,RL 早期几乎看不到完整轨迹,常在前几步把物体掉落;若只用 imitation reward,策略又会被人手动作束缚,遇到更小、更少 DoF 的机器人手时无法自动换策略。

论文的目标可以形式化为:给定一个物体 、一段人类 hand-object demonstration 、一对机器人灵巧手 ,学习 policy ,使 achieved object state 在所有时间步上尽量贴近 demonstration target 。这里 object state 不只是 rigid pose,还包括 articulated object 的 revolute joint angle,因此 tracking error 同时包含位置、旋转和 articulation 三部分。作者把这个目标写成: 为什么这个问题值得研究?第一,它把“学人手”从 motion imitation 提升到 functional capability:最终评价标准是机器人手能否让物体完成示范中的功能轨迹。第二,它给 hand hardware evaluation 提供了统一 testbed:同一套人类 demonstration、同一套算法,换不同 hand embodiment 后比较策略表现,就能观察不同 hand design 的可用性和学习难度。第三,它降低了新手型/新物体的评估门槛;只要有 URDF、对象资产和 demonstration,就可以在 simulation 中训练和比较,而不必先搭真实硬件系统。

论文贡献可以概括为三点:1)提出 Functional Retargeting 问题定义,并提出 DexMachina 这个基于 virtual object controllers 与 motion/contact guidance 的 curriculum RL 算法;2)构建包含 6 个 curated dexterous hand assets 和 5 类 articulated objects 的 benchmark;3)在多种 hand 与任务上展示比 kinematic retargeting、ObjDex-style task reward、无 curriculum auxiliary reward、ManipTrans-style curriculum 更强的 learning performance,并进一步用结果分析 hand design 的功能差异。

Figure 1 解读:图中核心对比是 human demonstration 与多种 robot hands 之间的关系。DexMachina 不是输出一条离线 joint trajectory,而是把 demonstration 转成可训练的 RL 环境与 curriculum,使不同 hand embodiment 都能学习“让物体按示范运动”的 policy。

2. Idea (核心思想)

DexMachina 的核心直觉是:长时程双手灵巧操作之所以难,并不是因为最终轨迹不可达,而是 RL 早期探索太脆弱;物体一旦掉落,后续 motion/contact reward 全部失去意义。作者借用了 “deus ex machina” 的隐喻:训练初期让物体像被一只“看不见的手”推动一样自动跟随 demonstration,policy 因而能经历完整序列,先学习人类 hand motion 与 contact pattern;随后逐步降低这只 invisible hand 的力量,让 policy 接管真实 manipulation。

这个 invisible hand 就是 Virtual Object Controllers (VOC)。在 simulation 中,作者对每个 object 的 base pose 加 6 个 virtual 1-DoF joints,对 articulation 加 1 个 virtual joint,并用 PD controller 跟踪 demonstration 中的 object state。训练初期 很高,object tracking 基本由 VOC 完成,policy 不必一开始就解决“别把物体掉了”的难题;训练过程中根据 policy 的 reward history 自动衰减 controller gains,让任务从“辅助很强”逐渐变成“必须靠手自己完成”。这比单纯 decay gravity/friction 或 error thresholds 更直接,因为 VOC 先完整保住 demonstrated object trajectory,再让 hand policy 学接触与力控制。

DexMachina 还避免了两个极端。只用 task reward 会告诉 policy “物体应该在哪”,但不告诉它“手该如何接触”;只用 motion imitation/contact reward 又会把策略过度拉向人手,导致不同硬件无法找到自己的解法。因此论文把 reward 设计成 task reward 主导、motion/contact/BC 作为 soft guidance:前期它们帮助 policy 学到大致人类策略,后期当 VOC 衰减时,policy 可以偏离 demonstration motion,只要 object tracking 更好即可。论文中的 qualitative 例子也支持这个思路:XHand 可以更像人类那样一手持物一手关 notebook;Inspire Hand 较小、欠驱动,需要双手一起稳定物体再关盖。

Figure 2 解读:左侧 demonstration 先被处理成三类训练信号:task reward 追 object trajectory,motion reward 追 retargeted hand keypoints/joints,contact reward 追 hand-object contact。右侧 curriculum 展示 VOC 从 strong 到 weak 再到 no VOC 的 hand-off 过程。这个流程把“稠密的人类示范”变成“可探索、可退火”的 RL 问题。

与 ObjDex 相比,DexMachina 不依赖先训练高层 wrist planner;它直接使用 collision-aware kinematic retargeting 的 wrist base action,再让 policy 输出 residual/absolute hybrid action。与 ManipTrans 相比,DexMachina 的 curriculum 不只是调物理参数或误差阈值,而是直接在 object dynamics 上提供可衰减的 tracking assistance。与纯 kinematic retargeting 相比,它最终训练的是 closed-loop policy,而不是 replay 一串可能穿模、无力、无法维持接触的 joint target。

3. Method (方法)

3.1 Functional retargeting environment 与 task reward

每个 RL environment 由一段 demonstration 和一对 dexterous hands 构成。在时间步 ,demonstration 中的 object state 写作 ,分别表示 position、rotation quaternion、articulation joint angle;policy rollout 的 achieved state 写作 。task reward 是三项 exponential reward 的乘积: 乘法形式的含义是 balanced tracking:如果 position、rotation 或 articulation 中任一项很差,总 reward 都会低。released code 中 dexmachina/envs/rewards.pycompute_task_reward 也实现了这个乘法路径;默认 betas 是 (20,5,20),但实际 constructor/launch 会把 --task_rew_betas 10 1 5 写入 obj_pos_beta,obj_rot_beta,obj_arti_beta,因此笔记中的实验配置以 launch script 为准,而不是 get_reward_cfg 默认值。

3.2 Demonstration preprocessing:collision-aware retargeting 与 contact approximation

DexMachina 先对 demonstration 做两类预处理。第一类是 collision-aware kinematic retargeted joints:给定 个时间步、 个 actuated joints、 个 hand collision links,先用 kinematics-only retargeting 匹配人手 motion;然后在 simulation 中把 object 固定到 target state,把 retargeted joint values 作为 soft control targets replay,让 physics resolve collision,最后记录修正后的 joint values 与 link keypoints 。这一步很重要,因为纯 kinematic retargeting 会让手和 object 穿插,作为 RL base action 或 imitation target 会产生不可行的 reference。

Figure A 解读:appendix 的 retargeting 图说明了为什么需要 object-aware post-processing。人手到机器人手的 fingertip matching 不是最终目标;必须在 object 固定、碰撞约束存在的 simulation 中重新得到可用 joint/keypoint reference。

第二类是 approximated hand-object contact。论文在 object mesh vertices 与 MANO hand mesh vertices 之间做距离阈值筛选:若 object vertex 到最近 MANO vertex 的距离小于 ,就视作 raw contact candidate;若候选超过 ,用 farthest subsampling 保留 个点。之后把 raw contact retarget 到 dexterous hand links:对每个 contact point 找最近的 dex hand link center ,并对分配到同一 link 的 contact points 求平均。最终输出 contact tensor 和 valid mask 。其中 ,因为论文中的 articulated objects 都有两个 object parts;左右手各有一份 contact 信息。

3.3 Hybrid action output

DexMachina 的 action formulation 是一个折中:wrist 6-DoF 使用 retargeted wrist trajectory 作为 base,然后让 policy 输出 residual;finger joints 则输出 absolute normalized actions。appendix 给出的形式为: 直觉上,wrist motion 在 bimanual manipulation 中非常关键,直接全 absolute 探索会太大;用人类 retargeted wrist 作为 base 可以把探索限制在合理范围内。finger joints 则不强迫模仿人手,而是允许在自身 joint limits 内选择更适合该 hand 的 grasp/contact strategy。released code 在 dexmachina/envs/robot.py 中的 action_mode == "hybrid" 路径正是这个逻辑:wrist translation/rotation 分别乘 hybrid_scales,finger targets 用 lower/upper joint limits 映射。公开 example examples/train_rl.sh 里使用 -am hybrid --hybrid_scales 0.1 1.0

3.4 Auxiliary rewards:motion、BC、contact

Motion imitation reward 用 keypoint matching 鼓励手的 link/keypoint 接近 retargeted reference;behavior cloning reward 用 joint angle distance 鼓励 joint values 接近 Contact reward 试图让 policy 的 contact position/validity 匹配 demonstration contact。论文中将左右手各自的 masked contact distance 代入: 最终 reward 是 weighted sum: released code 中 RewardModule.compute_reward 先算 task reward,再按 -imi/-bc/-con 权重加入 imitation、BC、contact。公开训练例子给出 -imi 0.3 -bc 0.3 -con 3 -imw 0.5 --contact_beta 10 --action_penalty 0.01。这说明 contact reward 在 example 中权重明显高于 imitation/BC,但它仍然是辅助项:task reward 负责 object tracking,auxiliary rewards 负责让探索落在有意义的 human-like/contact-like 区域。

论文公式与 released code 实现差异:论文的 contact equation 写到当 demo/policy 同时无 contact 时 ,这会让 ;但 released matched-contact path 在 compute_matched_contact_per_hand 中,当 mask_zero_contact=True 时把 both-invalid case 置为 max_distance,让“双方都没接触”不会得到高 contact reward。这个实现更符合“不要奖励无接触”的意图,但和论文公式的字面定义不同。另一个需要注意的差异是,论文报告实验使用 parallel environments(Dex Hand 为 ),而公开 examples/train_rl.sh 是 runnable example,使用 -B 4096;因此复现实验时不能把 example batch size 误当成论文主结果配置。

3.5 Auto-curriculum with Virtual Object Controllers

VOC 的实现是把 demonstration object states 当作 control target,用 virtual spring-damper constraints/PD controllers 让 object 跟随目标轨迹。每个 object base pose 有 6 个 virtual 1-DoF joints,articulation 再有 1 个 virtual joint。训练初期 高;当 reward history 显示 policy 已能稳定完成当前难度,就衰减 gains。

伪代码可概括为:

for each PPO iteration:
    collect finished episodes
    for z in {task, imi, bc, con}:
        append normalized cumulative reward R_z / L_max to deque D_z
    compute mean reward mu_z over each deque
    if k_p == 0:
        continue
    if all mu_z > sigma_z:
        k_p <- k_p * phi_p
        k_v <- k_v * phi_v
        if k_p <= 0.01:
            k_p <- 0; k_v <- 0

这个 schedule 的含义不是固定按 epoch 退火,而是“policy 表现足够稳定后再降低辅助”。released dexmachina/envs/curriculum.py 中有 set_auto_uniform_decay、reward deque、upper/lower ratios、dialback 逻辑等更工程化的实现;dexmachina/envs/base_env.pyset_curriculum 会在训练时触发 curriculum 并在 gains/reward weights 改变后重置 reward tracker。

Code reference: main @ adae5bf6 (2026-03-23) — pseudocode and mapping based on this commit

Paper conceptReleased code anchor解释
Collision-aware retargetingdexmachina/retargeting/parallel_retarget.py, dexmachina/retargeting/retarget_utils.py把 kinematic retargeting 放回 simulation 里 replay,减少 object penetration。
Contact approximationdexmachina/retargeting/map_contacts.py, dexmachina/envs/contacts.py从 MANO/object mesh contact 近似映射到 robot hand links。
Hybrid actiondexmachina/envs/robot.pywrist residual around retargeted qpos,finger absolute by joint limits。
Task / imitation / contact rewarddexmachina/envs/rewards.pycompute_task_rewardcompute_imitation_rewardcompute_matched_contact_reward
VOC curriculumdexmachina/envs/curriculum.py, dexmachina/envs/base_env.py根据 reward deques 衰减 object gains,并在训练中更新环境。
Training launchexamples/train_rl.sh, dexmachina/rl/train_rl_games.py公开 example:max_epochs=5000horizon=16、LR 0.0003、hybrid/contact config。

4. Experimental Setup (实验设置)

实验数据来自 ARCTIC hand-object interaction clips。论文使用 5 类 articulated objects 和 7 条 demonstrations,覆盖短时程与长时程操作:Ketchup-100、Box-200、Mixer-170、Ketchup-300、Mixer-300、Notebook-300、Waffleiron-300。每条 clip 由 object、subject tag、start/end frame 定义,使用帧数 。appendix 说明 ARCTIC 提供 articulated object scans、tracked MANO hand poses 和 object states;DexMachina 额外处理 open-source dexterous hand URDF,包括添加 6-DoF wrist joints、调整 mass/inertia、做 convex decomposition、加 fingertip dummy links,并手工指定 robot finger links 与 MANO joints 的对应关系。

主实验使用四种代表性手:Inspire Hand、Allegro Hand、XHand、Schunk Hand;hand embodiment analysis 进一步加入 Ability 和 DexRobot Hand,形成六手 benchmark。主文强调这些手在 size、kinematic design、actuation 上差异明显,因此同一 algorithm + same demonstrations 可以作为 hand design 功能比较工具。论文使用 Genesis physics simulation 与 rl-games PPO;policy observation 是 state-based,包括 object states、joint targets、finger-to-object distances、normalized hand-object contact forces。所有任务控制双手,并共享同一 policy architecture / observation design。

Baseline 共有四类。Kinematics Only 直接 replay kinematic retargeting results 作为 controller targets,用来测试“看起来像人”的轨迹是否能完成 task。ObjDex reimplementation 使用 task reward 与同样的 hybrid actions;appendix 说明作者联系原作者确认 ARCTIC clip range 和 interpolation setup,但最终不使用 4T/7T interpolation,因为会增加训练时间而没有改善性能。

Task + Auxiliary Rewards without curriculum 使用 DexMachina 的 motion/contact/BC reward 和 action formulation,但不启用 VOC curriculum,用来隔离 curriculum 的贡献。

ManipTrans reimplementation 使用 hybrid actions 与同一 reward/hyperparameters,但 curriculum decay 的是 object/finger error thresholds、gravity 和 friction(例如 ),用于比较不同 curriculum 机制。

训练配置方面,paper 报告:主结果与 baseline 都使用 parallel environments 训练;Dex Hand 因显存约束使用 ;每个 run 占用单张 NVIDIA L40s 或 H100;每个 demonstration、每个 hand、每种 method 跑 5 random seeds;action ablation 使用 3 seeds。

公开代码 example examples/train_rl.sh 的具体 launch 是 -B 4096 --max_epochs 5000 --horizon 16 --learning_rate 0.0003 --actuate_object --retarget_name para --gain_mode all --curr_schedule uniform --wait_epochs 100 --contact_beta 10 --task_rew_betas 10 1 5 --use_retarget_contact -am hybrid --hybrid_scales 0.1 1.0 --kp_init 80 --kv_init 5 -imi 0.3 -bc 0.3 -con 3 -ert 0.6

train_rl_games.py 会把 num_actors 设为实际 env 数,并把 minibatch_size 设为 num_envs * 8;PPO cfg 中 default LR 也是 3e-4,但最终以 launch args 覆盖为准。

Evaluation 方面,appendix 写明每个 method/task 使用 5 seeds;每个 seed 保存按 cumulative task reward 选出的 best checkpoint;每个 checkpoint evaluation 20 episodes,并记录 achieved object pose 与 revolute joint angle,与 demonstration trajectory 比较。论文讨论了 per-step success rate 与 raw tracking error 的缺陷,并引入类似 object pose tracking 的 ADD-AUC:对 articulated objects 分 part 计算 ADD,再平均后算 AUC。主图 axis 写作 Success Rate (%),可理解为论文将 tracking performance 以百分比形式汇总展示;读结果时重点看同一任务、同一手、不同方法之间的相对差距。

5. Experimental Results (实验结果)

Figure 3 解读:核心结论是 VOC curriculum 在长时程任务上最有价值。短任务中,Task + Aux 有时已经很强,例如 Inspire Hand 的 Ketchup-100 上 Task + Aux 为 87.8,而 Ours 为 70.7;但在更长、更复杂任务上,Ours 通常显著优于 no-curriculum。以 Inspire Hand 为例,Box-200 上 Ours 为 87.1,对比 Task + Aux 64.3、Task Rew 37.0、Kinematic Only 19.8;

Mixer-300 上 Ours 64.3,对比 Task + Aux 55.6、ObjDex-style Task Rew 66.6、Kinematic Only 7.4,说明不同任务上 auxiliary 与 VOC 的收益不完全相同。以 XHand 为例,Notebook-300 上 Ours 89.0,明显高于 Kinematic Only 8.3、Task Rew 59.4、Task + Aux 58.9 和 ManipTrans 66.2;Waffleiron-300 上 Ours 80.3,也高于 Kinematic Only 5.6、Task Rew 59.7、Task + Aux 56.2。

Schunk Hand 在 Waffleiron-300 上仍较难,但 Ours 41.4 依然高于 Kinematic Only 5.6、Task Rew 10.4、Task + Aux 10.8,显示 VOC 至少能把 long-horizon exploration 从几乎失败提升到部分完成。

Kinematics Only 的表现验证了论文动机:单纯 replay retargeted joints 往往无法真正操作 object。图中大多数 Kinematics Only 数值都很低,例如 Inspire Notebook-300 7.4、XHand Notebook-300 8.3、Schunk Waffleiron-300 5.6。作者在正文中解释,video 上这些轨迹看起来能贴近人手,但通常只能轻微抬起物体,不能完成完整 articulation/transport sequence。Task reward / ObjDex-style baseline 在 short clips 上可以较强,例如 Allegro Ketchup-100 的 Task Rew 91.6、Task + Aux 92.0、Ours 91.4 都很高;但进入 Ketchup-300、Mixer-300、Notebook-300、Waffleiron-300 后,长期 contact sequencing 与中途换手让 task-only 方法更不稳定。

ManipTrans-style curriculum 没有稳定提升。正文指出,ManipTrans policy 初期 task reward 高,但 curriculum 推进后 performance 下降并难以恢复;这说明单纯 decay physics parameters 或 error thresholds 不足以解决 articulated object 的 long-horizon manipulation。DexMachina 的区别在于 VOC 在训练初期直接“保住完整 trajectory”,policy 能在整条 sequence 中学习 motion/contact,然后才逐步承担物体控制。

Figure 4 解读:这张 qualitative figure 支撑“auxiliary reward 是软引导而不是硬约束”的观点。Notebook-300 中,XHand 可以较接近 human demonstrator:左手托住 object、右手关 cover;Inspire Hand 较小且 less-actuated,policy 学到用双手稳定 object 再完成盖合。Mixer-300 中,Allegro Hand 的长手指可以更容易接触/盖合;Schunk Hand 则需要更多 wrist motion。也就是说,DexMachina 不是简单复制人手,而是让不同硬件在相同 functional goal 下找到自己的策略。

Action ablation 的结论是:更受限的 hybrid wrist residual 通常比全 absolute 或更宽 residual 更易学习。原因是 bimanual long-horizon task 的探索空间主要由 wrist/base motion 决定;若 wrist action 完全自由,policy 要同时学 object tracking、接触和手的全局姿态,样本效率很差。把 wrist 限制在人类 retargeting 附近,并把 finger joints 留给 absolute control,则在保持可探索性的同时避免 early catastrophic failures。

Figure 5 解读:hand embodiment analysis 显示,外形像人不是最关键因素;更大的 workspace、更长 fingers、更充分 actuation 往往带来更高最终性能和更好 learning efficiency。正文点名 Allegro Hand 虽然外观不那么 anthropomorphic,但长手指对 in-air/in-hand manipulation 很有利;Inspire、Ability、Schunk 尺寸相近,但 Schunk 有 actuated fingertips 和 foldable palm,平均表现优于 Inspire/Ability。论文也提醒,这些结论受测试 objects/tasks 限制;较大的手在更小 objects(如 tweezers)上不一定占优。

Figure A qualitative 解读:appendix 展示了长时程 rollout keyframes,brown box 是 ARCTIC 数据采集设定中的支撑平台。它帮助理解为什么 long-horizon tasks 不是普通 pick-and-place:物体通常要离开支撑面、在空中被双手稳定、经历开合/翻转/重定向等多个 contact phase。

主要限制也很清楚。第一,policy 使用 state-based privileged input,例如 object pose、joint targets、contact forces;真实世界中这些信息难以直接获得,需要 vision-based RL 或 state-policy distillation 到 visuomotor policy。第二,Functional Retargeting 假设有高质量 human hand-object demonstration,ARCTIC 这类数据依赖 motion capture、object reconstruction、pose tracking 与手工后处理,扩展成本高。第三,benchmark 使用 open-source URDF assets 并估计 mass、inertia、collision shape,simulation dynamics 可能不能完全代表真实 hardware。第四,论文尚未在真实的多种 dexterous hands 上验证 learned RL policies。尽管如此,DexMachina 的价值在于把一个过去很难标准化的问题变成了可运行的 simulation benchmark:它既是 functional retargeting 算法,也是评估灵巧手设计的工具。