论文:Cloak: Zero-Shot Cross-Embodiment Manipulation by Masking the End-Effector from the VLA
作者:Michael Piseno, Guy Tevet, C. Karen Liu(Stanford TML)
arXiv:2606.22836 · 项目页:tml.stanford.edu/cloak · 代码:Stanford-TML/cloak

社区手里堆着大量平行爪演示(DROID、OXE 等),硬件却在往五指手、新臂上走。换一套末端执行器,常常意味着重新采数据、重新训策略。Cloak 想回答的问题很硬核:

能否只在一种爪子上训练,部署时零样本控从未见过的爪 / 臂 / 手——且不再为目标机采任何数据?

作者的答案不是再造一个更大的 VLA,而是给现成的 π0.5 加一套观测侧配方:用几何把腕部相机里「自己的末端」盖掉,再配上 tip 位姿上的 FK/IK 做换机接口。网络、损失、训练数据形态几乎不动,跨 embodiment 的能力却明显拉开。


一句话创新

Cloak 是一套挂在 Vision-Language-Action(VLA)上的 training / deployment recipe:

  1. 用机器人几何 + FK + 相机外参,实时渲腕部末端的 mask;
  2. 在 ViT 里让对应 patch 的 attention 读不到这些区域;
  3. 训练时再 随机扭曲 mask 轮廓,避免过拟合某一种爪形;
  4. 部署到新机器时,用同一套 两 tip 的 FK↔IK 把状态/动作翻译回源机(Robotiq)关节空间。

策略权重始终活在「Franka + Robotiq」的母语里;换机靠「看不见自己的手 + tip 翻译」,而不是靠新数据和改架构。


创新点 1:把瓶颈钉在「腕部视觉缝」,而不是再堆跨机数据

跨 embodiment 有两道缝:

  • 运动学缝:关节数不同、连杆几何不同——结构清楚,FK / IK、tip retargeting 可以桥。
  • 视觉缝:腕部相机里,末端执行器又大又固定;策略把「source 长什么样」烤进视觉特征。稍微换个爪/手,观测就 OOD。这和状态维数对不齐不一样:单靠把关节 retarget 成同一套数,修不了画面里那坨新手。

作者认为,在常见腕部相机设定下,视觉缝才是零样本跨机的绑定约束。社区已有大量 gripper 数据,前沿却在往灵巧手走——问题变成:如何让 gripper-centric 数据「活过」当初采数据的那套硬件。

这一点决定了方法形态:不是再做一个「学跨机表征」的大模块,而是 直接拿掉腕部里 embodiment 外观这一干扰源。


创新点 2:几何 mask + Attention 遮挡(不是重画,也不是学分割)

别人怎么堵视觉缝,以及为什么 Cloak 不走那几条路

路线思路Cloak 认为的问题
生成重画 / inpaint把新手擦掉再画回旧爪或干净背景幻觉;算力重,不适合实时控制
Shadow 类训练时叠 source+target 轮廓训练时就要知道 target;对「任意未来机器」不算真零样本
学分割从像素认「哪是机器」近景易把物体当手、细结构漏盖,换机更脆
干脆不用腕部相机眼不见为净实验里源机进度从 ~89% 掉到 ~37%——腕部任务信号丢不起

Cloak 怎么做

末端外观来自 已知几何(URDF / MuJoCo 网格)+ 当前关节 + 腕部内外参:投影光栅化得到二值 mask,再轻微膨胀吸标定误差。实现上是仿真里做 segmentation render,不学一个分割网络。

Mask 进模型的方式也值得记:不是简单把像素涂黑了事,而是

  1. 图像切成 ViT patch(π0.5 上常见 224、patch 14 → 256 格);
  2. majority:一格里超过一半像素被盖,才算 masked;
  3. 这些 patch 仍占序列位置,但 self-attention / 后续 cross-attention 读不到它们(实现上常是 embedding 清零 + bool mask;效果等价于 logits 加 −∞)。分两层:SigLIP ViT 内部的 patch self-attention 所有指向夹爪 patch 的权重被强制为 0;以及 整段 prefix(图像 token + 语言)在 PaliGemma LLM 里的 attention,语言 token、外景 token、动作相关 token 都不能通过 attention 去读那些被标成 invalid 的 wrist patch。

外景相机 不 mask——作者认为 embodiment 视觉差主要在腕部;消融也表明「整路扔掉腕部」不可行。

相对 π0.5:骨干、flow matching 损失、动作头都不变;改的是腕部观测进 ViT 之前(以及 attention 里)多了一道几何门。

创新点 3:训练时 blob 增强——为了「未知的下一只手」,不是为了美化

若训练时永远盖「Robotiq 那一坨固定外形」,策略可能记住这种轮廓的形状与位置;部署时 mask 外形一变,又回到某种 OOD。Cloak 因此在 训练专用 地扭曲 mask(论文算法 / 代码 MaskAugmentation,配置里叫 blob):

  1. Image rolling:把整图平移卷绕,只在 mask 区域内贴回去——用同场景纹理填「身体」区,而不是纯色/噪声;
  2. 加胶囊:在轮廓上贴随机「高瘦」胶囊,让外形变胖、变怪;
  3. 挖圆盘:从 mask 内部挖洞,进一步扭曲,并让模型见到更多位置上的 patch。

推理时 关掉增强,只用几何渲出的干净 mask。

一个容易误解的点:既然 attention 置零,为什么还要 roll 填充?

对「已经被 majority 判死、完全不 attend」的 patch,填什么的确几乎无所谓。roll 堵的是两条 仍会漏进网络 的缝:

  • Majority 不是像素级 dual:盖住不到一半的边界 patch 仍会保留 embedding,Conv 划 patch 时已混进爪像素;先 roll 再编码,泄漏格里才不是 source 爪外观。
  • 挖洞会重新露出像素:第三步故意从 mask 挖开;洞底下若仍是真爪子,等于训练时又把 embodiment 露出来。先 roll 再挖,露出的是场景纹理。

这也解释了为何不用纯黑填充:黑块 + 泄漏/挖洞,容易变成「黑色=不用看」的捷径;roll 保持像素分布更接近真实画面。

对比消融:固定源 mask(NoAug)、或训练时叠已知 target 轮廓(Overlap / Shadow 味),在未见过的五指手上都弱于 blob。增强的是「轮廓分布」,不是「预先把目标手画进训练集」。


创新点 4:策略永远说 Robotiq 话——tip retarget 是换机胶水,不是新损失

Cloak-VLA 的输入输出仍在 源机 8 维关节空间(7 臂 + 1 爪)。换机时:

  • trg2src:目标机 FK → 两个 tip → IK 成 Robotiq 状态(喂策略);
  • src2trg:策略吐的 Robotiq 动作 → tip → IK 成目标机关节(去执行)。

五指手上,两 tip 常对应 中指尖 / 拇指尖;开合用 gripper 标量在开合手型间插值。

这里有个写法上的精确区分,写博客时建议写清:

  • 完整跨机系统:Cloak ≈ 腕部 mask(+ 训练 augment)+ tip retarget;
  • 相对同数据 π0.5-droid 的方法增量:主要是 mask(+augment)。
    实验里「π0.5-droid + TP retargeting」已经挂了同一套 tip 翻译,只是不 cloak——换机仍大幅掉点。说明 拉开差距的是视觉遮挡,不是又发明了一套 retarget。

部署实现上还有一个细节:必须先按目标机真实关节渲 mask,再 rewrite 成 Robotiq 状态。若先改成 Robotiq 关节再渲,罩子会是两指爪形状,盖不住照片里的五指手。

技能边界也诚实:作者聚焦 两 tip 能完成的抓放类,不声称任意多指灵巧策略。


和 π0.5 的关系(一张表)

π0.5 / π0.5-droidCloak-VLA
网络与损失VLM + action expert,flow matching不变
训练数据(本篇设定)DROID,Franka+Robotiq同一份
腕部观测原图进 ViT几何 mask → patch 不 attend
训练增强—blob 扭 mask
源机部署直接跑可加实时 mask(几乎不掉点)
换机部署原版不自带 tip 翻译同权重 + mask + tip IK

配置对应(官方代码):pi05_full_droid_finetune_v0 ≈ 无 cloak;v3-1 ≈ Cloak 训练;v3-1_ik ≈ 同权重跨机部署。


实验怎么支撑这些创新点(极简)

  • 源机:Cloak ≈ 无 mask 的 π0.5(任务平均进度约 88% vs 89%)→ cloaking 在源机几乎「免费」。
  • 零样本 UMI / YAM / Sharpa:Cloak 仍约 85 / 86 / 82;π0.5+retarget 掉到约 69 / 70 / 54(五指手最惨)。
  • 是视觉不是动作接口:有 tip、无 mask 仍崩;LAP 做语言侧对齐、不动腕部外观,也崩。
  • 不能扔腕部:只留外景 → 源机崩到 ~37%。
  • blob 必要:Sharpa 上 Cloak 82 vs NoAug 65 vs Overlap 72。

一句话:创新点不是刷榜换骨干,而是用可控实验说明——盖住腕部末端外观,是零样本跨 embodiment 的关键杠杆。


局限

  • 依赖较准的 机器人几何与腕部外参(他们用 Silhouette Calibration 重估 DROID 外参);
  • 任务限于 tip 可达的操作;
  • 换机仍有小幅掉点,不是魔法无代价;
  • 与「海量多机共训」的一般性策略不是同一赛道的规模对比。

可带走的判断

若你做 VLA / 跨机迁移,Cloak 值得记住的不是又一个模型名,而是三个可迁移的想法:

  1. 先问失败来自状态空间还是腕部外观——后者往往更毒,且 retarget 单独救不了;
  2. 有几何就用几何,比生成重画和脆分割更适合闭环控制;
  3. 训练时随机化「被盖住的轮廓」,比在训练集里登记所有未来 target 更接近真·零样本。

数据可以比硬件活得更久——前提是策略别把「自己长什么样」当成任务的一部分。


参考

  • 论文:https://arxiv.org/abs/2606.22836
  • 项目页:https://tml.stanford.edu/cloak/
  • 代码:https://github.com/Stanford-TML/cloak(基于 openpi / π0.5)
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐