RotateIt:让机器手「绕任意轴」转物体的视觉-触觉配方
🎯 为什么重要:从「盲转」到「看见」的范式跳跃
前作 Hora (Qi '22) 已经证明:用纯本体感觉历史(joint pos + action),policy 能隐式推断物体特性,做 z 轴旋转。但绕 x/y 轴就崩——为什么?
论文给的方向很清晰:本体感觉不够,就加眼睛 + 加触觉,像人一样。但「怎么加」很有讲究——直接拼成一个大向量训,效果不好。RotateIt 的关键设计是:把多模态信息塞进 Transformer,让它时序推理出「物体形状 + 物理属性」,再把这个推断喂给一个原本只看 ground-truth 的 oracle policy。
💡 核心思想:两阶段训练——oracle 先「作弊」,student 后「推断」
这是经典的 privileged learning + 蒸馏 范式(继承自 RMA / Hora)。核心是两个 policy:
Oracle policy:$a_t = \pi(p_t, z_t)$ —— 看着「作弊信息」$z_t$(GT 物体形状+物理)做动作
Student policy:$a_t = \pi(p_t, \hat{z}_t)$,其中 $\hat{z}_t = \phi(f_T)$ —— Transformer 从多模态时序推出来的
这套「oracle 看作弊 → student 学推断」的设计哲学很优雅:oracle 在仿真里跑得又稳又强(因为它真的「知道」物体长什么样),student 只需要学「怎么从 vision+touch+proprio 时序里把 $z_t$ 算回来」——这个监督信号是稠密的(L2),而不是稀疏的任务 reward。
🛠️ 工程化:4 个让真机跑通的关键设计
| 设计 | 心智 | 为什么必要 |
|---|---|---|
| ① 物体形状当 oracle 输入(PointNet 编码) | 把物体 mesh 采样成点云,PointNet 编码成 z_shape | 前作只用 pose+物理,对不规则物体崩盘。论文 §5.1 显示:加 shape 让 OOD 物体性能跌幅从 22% 降到 8% |
| ② 视觉用「前景深度」而非 RGB | 仿真生成 object depth(前景深度),真机用 Segment-Anything 抠出物体再取深度 | ① 深度比 RGB 仿真更真实(不需要逼真渲染);② SAM 抠图让 policy 对背景杂乱鲁棒——背景变了,物体深度不变 |
| ③ 触觉用「离散接触位置」而非 raw tactile image | 指尖 2D 平面离散成 8 个区域,每个接触点表示为 (8D 位置 + finger index) | 论文 §5.2 表 2 证明:binary 接触没意义(本体感觉已包含);discretized contact location 就够(再精细的 full contact 没额外收益)——这是关键的 sim-to-real 简化 |
| ④ Transformer 做时序融合 | 多模态特征拼接成 $f_t$,喂 k 帧窗口到 Transformer,输出 $\hat{z}_t$ | vs 前作 RMA 的时域 Conv:Transformer 的注意力能更灵活捕捉「finger-gaiting 时失去/获得接触」的瞬态信号。论文附录 Table 4 验证 Transformer > TCN |
论文 Table 2 是个反直觉发现。Binary 接触(碰/没碰)已经被本体感觉的关节力矩历史隐式包含——你的手指在不在使力,关节能感觉到。但「物体碰在指尖 8 个区域中的哪一个」是本体感觉完全无法推断的(同一个手指姿态,物体可能碰指尖顶部 vs 侧面)。所以「接触位置」才是触觉的不可替代信息——这一点后来被 Beyond Binary (CoP) 推到更精细的物理量。
📊 关键结果:形状信息 + 视觉触觉的双重红利
| 维度 | 对比 | 数字(源自 PDF) |
|---|---|---|
| Stage 1 oracle:加 shape vs 不加 | Table 1:x/y/z 三轴 Rotation Reward | 不加 shape:x=85 / y=99 / z=129 → 加 shape:x=125 / y=118 / z=141(z 轴 +9%,x 轴 +47%) |
| Stage 2:单模态 vs 多模态 | Fig.6:proprio / +vision / +touch / +both | proprio baseline → +vision/touch 单加任一项都显著提升;双加可逼近 oracle 上限 |
| OOD 物体泛化 | Fig.8:15 个 held-out 物体 | oracle 不加 shape:跌 22.6%;加 shape:跌 8%。student 只 proprio:跌 41.6%;+visuotactile:跌 15.4% |
| 触觉粒度 | Table 2:NoTouch / Binary / ContactLoc / Full | Binary ≈ NoTouch(没用);ContactLoc ≈ Full(不需要更精细);二者和 NoTouch 比 x 轴 RotR 从 79 → 102 |
| 真机对比 Hora | Fig.10:6 个物体绕 x 轴旋转弧度(20s 内) | Hora:0.5/0.5/0.3/0.5/0.5/0.5(基本做不了)→ RotateIt:12.7/8.3/6.7/6.1/5.0/5.0 rad(约 2π) |
| 多轴单网络 | Table 3:6 个方向(±x/y/z)单网络 vs 单轴 | 多轴 distilled policy 持平单轴 oracle(+x: 105 vs 110;−z: 125 vs 127) |
🌐 在领域中的位置
谱系定位:RotateIt 是「sim-to-real 多物体 in-hand rotation」从「盲转」转向「visuotactile 推断」的转折点。后续工作如 AnyRotate('25)继承其 visuotactile 路线并加入重力不变性;Beyond Binary (CoP)('26)进一步把触觉表征从「离散位置」升级为物理量。学习范式上,它继承 RMA(Kumar '21)/ Hora 的 privileged-distill 双阶段框架。
❓ 常见误区
oracle policy 是「作弊」吗?真机又用不了,训它干啥?
oracle 在仿真里扮演「老师」。它的作用是:① 证明上限——告诉后续 student「物理上能转多好」;② 提供稠密监督——它吐出的 $z_t$ 是 student 要学的目标,比稀疏的任务 reward 容易学得多。真机部署的是 student(只看 vision+touch+proprio),oracle 退场。
它和 Hora 的「rapid motor adaptation」是什么关系?
Hora 是 RotateIt 的前作,第一作者同是 Haozhi Qi。RMA(Kumar '21)原创了「两阶段 privileged + adaptation module」范式,用于四足 locomotion;Hora 把它搬到 in-hand rotation(z 轴);RotateIt 在此基础上把「adaption module」换成了更强的 visuotactile Transformer,并扩展到任意轴。
真机用什么触觉传感器?数据怎么和仿真对齐?
用 4 个 omnidirectional vision-based touch sensor(基于图像的触觉,如 DIGIT 类)。sim-to-real 对齐的巧思:不仿真 raw 触觉图像,而是仿真「接触在指尖 2D 平面的离散位置」(8 个 bin)。真机端从触觉图像里检测「最高强度像素」位置 → 离散化到同一组 bin。表征层对齐绕过了「仿真硅胶形变不准」的死结。
为什么训练多轴单网络需要 distillation?
论文 §5.5 实测:纯 RL 训多轴不收敛(6 个方向的 reward 互相打架)。解决方案是先训 6 个单轴 oracle(每个稳定收敛),再用模仿学习目标蒸馏成一个多轴网络——通过 $k$(轴指示向量)做 condition。最终多轴策略性能与单轴 oracle 持平。