枢纽
机器人XArm6+Allegro Hand
数据集PartNet-Mobility

DexArt:让灵巧手「看懂零件」才能泛化操作铰接物体

Chen Bao, Helin Xu, Yuzhe Qin, Xiaolong Wang(SJTU + 清华 + UCSD)。CVPR 2023 · arXiv:2305.05706。 项目页 · 基于 SAPIEN · dexterousarticulatedpoint cloud RL

🧠 一句话心智模型:让 16-DoF 的 Allegro Hand + 6-DoF 机械臂去开 faucets / 提 buckets / 翻 laptops / 掀 toilets——并且要泛化到没见过的同类别物体。作者发现:让策略网络学好的关键不是堆参数,而是先用「部件分割」预训练 PointNet,让它先「看懂这是把手、那是桶把」,RL 才能跟着学会怎么操作。

🎯 为什么重要:把灵巧手 + 铰接物体 + 泛化 同时塞进一个基准

2023 年前,操作基准要么用平行夹爪(ManiSkill、MetaWorld、RLBench),简单但能力天花板低;要么用灵巧手但只做单一物体(in-hand 重排、转笔)。DexArt 卡的是一个被忽略的交叉点:

核心矛盾:日常物体大多是铰接的(关节门、铰链盖、可旋转把手)。平行夹爪要么抓不住(提桶把手),要么需要超精密的位姿(开笔记本盖)。灵巧手能做,但 16-DoF 手 + 6-DoF 臂 = 22 维动作空间 + 大量物体几何变化 → RL 直接学无法泛化
Faucet 旋转把手 ~90° 18 物体(11/7) 手-臂协调抓握 + 旋转 Bucket 提起到指定高度 19 物体(11/8) form closure (非 force closure) Laptop 掀开屏幕 17 物体(11/6) 抓屏幕中部 + 翻盖 Toilet 掀盖到阈值角度 28 物体(17/11) 盖形状最多样 + 几何最不规则 共性:铰接物体 + 灵巧手 + 必须泛化到 unseen 物体 硬件:XArm6(6-DoF)+ Allegro Hand(16-DoF),动作空间 22 维
图 1(对应论文 Fig.1-2 / Table 1):4 个任务、共 82 个铰接物体(11-17 seen / 6-11 unseen),全部用同一套灵巧手硬件。括号内为 seen/unseen 数量。

💡 核心思想:把 RL 拆成「先看懂零件」+「再学动作」两步

DexArt 最重要的实证发现:RL 学不好,不是策略网络的问题,是视觉编码器没有「部件级」理解。解法是两阶段

阶段 1:PointNet 预训练(感知) 点云 (含 hand) PointNet 编码器 五种预训练任务对比: 分类(PMM)/ 分割(PMM)/ 重建(DAM) SimSiam / 部件分割(DAM)⭐ 阶段 2:PPO 策略学习(决策) 点云 + proprio 预训练 PointNet 三阶段奖励: reach → contact(掌 + ≥2 指)→ progress + action L2 惩罚 关键:把「看懂这是哪个功能部件」的知识,通过 PointNet 权重传给 RL 策略
图 2(对应论文 Fig.3):左:用感知任务预训练 PointNet;右:把权重迁过来初始化 PPO 的视觉骨干。底色强调:分割 > 其他四种预训练。
🔮 直觉:为什么偏偏是「部件分割」最有效?
铰接物体操作的关键不是「整体识别这是桶」,而是「找到那个该被抓住的把手」。分类预训练只学到类别标签(全局信息),重建学到形状(被 max-pool 抹掉细节),SimSiam 学到的不区分部件。只有部件分割强迫网络对每个点回答「这是功能部件 / 其他物体 / 机器手 / 机械臂」——这个 4 类的逐点标注,恰好就是策略要用的操作前置信息

另一个小但巧妙的设计是 Point Cloud Imagination(论文 §4.1):手-物交互时手指常被遮挡,而 RL 因内存只能用低分辨率点云,导致手指点稀少。作者用正运动学算出每根手指几何,从中采样点拼到观测里——把「该看见但没看见」的部分「想象」出来。

🛠️ 四个让 RL 能收敛到 0.79/0.58 的设计

设计心智为什么必要
① 三阶段 dense rewardreach(掌靠近)→ contact(掌 + ≥2 指触物)→ progress(任务特定,如把手角度变化)22 维动作空间稀疏奖励几乎学不出来;分阶段 dense reward 让 reward 信号始终存在;contact 项还避免「用攥拳撬开盖子」这种危险行为
② Point Cloud Imagination用正运动学算手指几何,采样点拼到观测里低分辨率 + 遮挡下手指信息丢失;正运动学不依赖真值传感器,真机也可用
③ 部件分割预训练(DAM)对每个物体 6k 点云,4 类标签(功能部件 / 其他 / 手 / 臂)做分割给 PointNet 注入「哪个点是该操作的部件」的先验——比分类、重建、SimSiam 都更贴近策略需求
④ 小 PointNet 反而更好对比 small/medium/large PointNet,small 样本效率最高符合「大编码器让 RL 优化变难」的文献观察——大网络在 RL 里不是 advantage,是 burden

📊 关键结果:部件分割预训练「全任务通杀」

方法(success rate,seen / unseen)FaucetBucketLaptopToilet
No Pre-train0.30 / 0.280.51 / 0.560.81 / 0.410.71 / 0.46
Classification on PMM0.20 / 0.180.56 / 0.580.80 / 0.410.69 / 0.38
Reconstruction on DAM0.35 / 0.210.51 / 0.500.85 / 0.540.76 / 0.52
SimSiam on DAM0.60 / 0.450.41 / 0.380.84 / 0.490.82 / 0.50
Segmentation on DAM ⭐0.79 / 0.580.75 / 0.760.92 / 0.600.85 / 0.55
关键消融(论文 §5.2)结果
训练物体数量每个任务用 100% seen 物体 vs 50%,前者 unseen 成功率显著更高——训练物体越多,泛化越好(即使测试集不变)
PointNet 容量Small > Medium > Large——更大的编码器反而拖累 RL(呼应 ManiSkill2 同类观察)
相机视角鲁棒性训练时只见过一个视角,测试时大视角变化下成功率保持——点云策略对视角意外鲁棒,便于 sim2real
训练规模每个任务百万级环境步(Faucet ~10M,Bucket ~40M,Laptop ~15M,Toilet ~8M);3 个随机种子
关键洞察:DexArt 的故事是「感知的进步 > 动作的进步」。当 RL 策略拿到的点云特征已经「知道哪个点是把手」,剩下的策略学习就不再挣扎。这预示了后来 VLA / 表征预训练 + 动作学习的范式分离——把「看懂」和「操作」解耦,各自 scaling。

🌐 在领域中的位置

DexPilot(脚本化灵巧操作) Dex-Net / 在手重排(单物体) DexArt(铰接物体 + 类别泛化 + 部件分割预训练)⭐ DexMimicGen / DexCap / AnyDexRT(真机数据 + 模仿学习)

DexArt 是灵巧操作「泛化化」的关键里程碑。它把「类别级铰接物体操作」做成可评测的标准题,并明确提出「部件级视觉理解」这一研究方向。后续 DexMimicGen(2024)把数据生成从「自动重投影」扩到「人-人-机器人」多智能体;DexCap / AnyDexRT 则走向真机遥操作 + 模仿学习——但都继承了 DexArt 的「部件 + 类别泛化」评价观。

❓ 常见误区

DexArt 是 RL 还是模仿学习基准?

纯 RL(PPO + dense reward)。基准的「数据集」(DAM、PMM)是用于视觉预训练,不是行为克隆的演示。这是和 DexMimicGen / DexCap 等后续 IL 工作的根本区别。

为什么用 PointNet 而不是更现代的 PointNet++ / Point Transformer?

论文实测:更大的点云网络反而让 RL 学得更差。PointNet(最简版:1 隐层 MLP + max-pool)在 RL 场景下样本效率最高。原因是 RL 的非平稳优化对编码器容量更敏感——大网络在小 batch 高方差的梯度下容易失稳。

22 维动作空间会不会太大?

确实大(6-DoF 臂 + 16-DoF 手)。论文用 operational space control(臂)+ joint position controller(手),把动作解释成「目标速度 / 目标关节位置」,再由 PD 控制器跟踪——这让策略不必从零学动力学,只需学高层规划。

能 sim2real 吗?

论文没有报告完整 sim2real,但 §5.3 显示策略对相机视角变化高度鲁棒——这是 sim2real 的最大障碍之一。后续 DexCap 等工作在 DexArt 风格设定下完成了真机部署。