图 1
一台 Unitree G1 站在餐桌前,手里抱着收纳篮,要把篮子放到桌面上。它抬手、身体前倾、篮子越过桌沿,然后在松手前的一瞬间,篮子掉了。这不是抓取失败——抓取在十秒前就成功了。失败发生在“走位、躯干前倾、手臂下放、松手”这串动作的配合上,而这串动作在发生之前看起来完全合理。

论文把这类情况叫“看起来合理但不可行”:一段命令序列在每一帧上都挑不出毛病,连起来执行却会掉东西、或者让交互停在半路。人形机器人的 loco-manipulation 难就难在这里——走路和抓取不是两个可以分别验收的子任务,它们在同一串命令里互相担保。下肢负责把身体带到能操作的位置并保持平衡,上肢负责让手相对物体保持正确的关系,中间隔着一条躯干。

文章目录


arXiv:2611.04839v1 的这篇论文给了一个很工程化的答案:不要在生成阶段就把赌注押在一条序列上,而是在执行前用一个小型潜空间世界模型,给同一帧观测下采样出的多条候选序列打分,只执行得分最高那条的前几步,然后重新观测、重新打分。作者把这件事叫动作条件化的潜变量前瞻(action-conditioned latent foresight)。数字先放这里:SIMPLE 仿真十条任务平均成功率 89.7%(最强对照 DiT4DiT 82.0%),G1 真机七个任务标准条件 85.7%、未见物体配置 65.7%(GR00T N1.7 分别是 70.0% 与 48.6%)。

一分钟速览

一句话版本

不换动作生成器、不加强化学习:在同一帧观测下采样 8 条候选命令序列,用一个预测未来视觉特征的小模型和一个学出来的联合时序先验打分,只执行得分最高那条的前 10 步,然后重新观测、重新打分。

七个关键数字

  • 仿真:SIMPLE 十条任务平均成功率 89.7%,对照 DiT4DiT 82.0%、Ψ0 73.7%、VLA-JEPA 49.0%。
  • 真机:Unitree G1 七个任务标准条件 85.7%,未见物体配置 65.7%;GR00T N1.7 是 70.0% 与 48.6%。
  • 消融一:把端点预测换成联合编码的特征位移变体,十任务从 89.7% 掉到 84.3%。
  • 消融二:去掉动作一致性正则、只用视觉打分,四个附加任务从 65.8% 掉到 55.0%,差 10.8 个百分点。
  • 消融三:时序打分从仅视觉的 65.8%,换成一阶平滑 67.5%、二阶平滑 70.0%、分解先验 71.7%、联合先验 80.8%。
  • 数据效率:五个任务、每任务 100 条示教时 84.0%,Ψ0 是 56.7%。
  • 代价:可训练参数 3.0B,RTX 4090D 上 9.1 Hz,机载 Jetson Orin NX 上 0.73 Hz、12.84 GB 系统内存。

走路和抓取为什么不能各训各的

一具身体上的两套目标

命令向量里同时装着“身体怎么动”和“手怎么动”。论文真机用的是 64 维 SONIC 运动潜变量加 14 个手部关节目标;仿真用的是 36 维接口,14 个手部关节加 22 个臂、躯干与移动通道。这两组量的验收标准完全不同:身体那组看平衡、到达与朝向,手那组看抓稳、对准与松手时机。

麻烦在于它们通过躯干耦合。要够到桌面,得先下蹲或前倾;一前倾,手的绝对位置就变了;手的位置一变,原来算好的抓握姿态就要跟着改。论文举的两个例子都很具体:把篮子放到桌上,必须一直保持抓握,直到桌面真正接住它;装洗衣机,必须开门、把 T 恤送到滚筒里,才可以松手。中间任何一步提前松,任务就废了。

所以“走”和“抓”不是两个可以分别打分的子任务,而是同一串命令里两组坐标的相互担保。这也是为什么单看某一步的动作质量没有意义——每一步都合理,连起来仍然可能掉东西。

这也解释了人形和固定底座机械臂的差别。机械臂可以把基座当成常量,规划时只需要解手部的逆运动学;人形不行,手臂一动质心就动,支撑多边形与关节力矩预算都要重算。于是“手该怎么走”这个问题,答案依赖“身体站在哪、重心压在哪”,而后者又由前一步的命令决定。任何把上下肢分开训的方案,都会在这个耦合点上留一道缝。

现有做法把未来用错了位置

过去两年这条线上的工作大致分三类,论文的 related work 把它们摆得很清楚。

第一类是 VLA 路线:从图像和指令直接生成命令,人形上再加人类运动先验或第一视角预训练,比如 EgoVLA、Ψ0、WholeBodyVLA。第二类是世界动作模型:用未来预测去改生成,DreamZero 联合建模视频与动作,DiT4DiT 与 MotionWAM 把动作或运动扩散条件在中间视频特征上,ω-0 从未来嵌入生成控制器兼容的动作,WholeBodyWAM 预训练运动专家;Fast-WAM 与 InternW0-∆ 则只在训练期用未来监督,测试时不生成视频。第三类是验证器:RoboMonkey 用视觉语言模型学动作偏好,FOREWARN 把预测的潜空间 rollout 与行为描述对齐,DreamTrajectory 用“与意图末端轨迹的一致性”加“固定的平滑惩罚”。

缺口在第三类里。已有的验证器要么依赖另一个大模型的语言判断,要么用固定的平滑惩罚当正则;没有人把“动作条件化的潜空间端点预测”当成分数,也没有人把运动与手部的联合时序先验当成分数。

本文的赌注:执行前先给候选打分

两个信号分工明确。端点预测回答“这串动作会把我带到哪”,时序先验回答“这串动作像不像这台机器人在这个状态下会做的动作”。前者是几何的,后者是动力学的(更准确说是数据分布上的)。

这个赌注的代价很低:端点预测一次前向,时序先验一次 h−1 步的 GRU 展开,都是毫秒级。论文的关键判断是,生成器不需要更强,需要的是一个能在执行前比较候选的裁判。后面所有消融也都做在裁判身上,而不是生成器身上——这一点在读结果时很重要。

可以用一个假设的例子说明两个信号怎么分工(不是论文里的案例)。机器人在洗衣机前把 T 恤往滚筒里送,候选 A 是“再往前半步、手腕下压”,候选 B 是“原地抬手、手腕前伸”。两条在单帧上都合理。端点预测会告诉打分器,A 的端点特征更接近“T 恤在滚筒内”这个子目标;时序先验会告诉它,B 的“抬手加前伸”在历史里很少和“身体静止”一起出现。两个信号合起来,才把“看起来都行”变成“选 A”。

换一个角度说信用分配:端到端训练时,一条失败轨迹只给一个 0/1 的成败信号,很难判断是步子没踩稳、还是手没保持住。论文没有用“信用分配”这个词,但它把整段成败拆成了两个可归因的量——到没到子目标(视觉进展)、这串动作自不自洽(时序一致性)。我认为这是这篇论文在方法层面最值得抄的一个动作。

潜变量前瞻预测的到底是什么

不是像素,也不是关节状态

它预测的是“执行这 h 条命令之后,第一视角画面会落在 V-JEPA 2.1 特征空间的哪个位置”。编码器是 ViT-L/16、输入 384 像素,先在 HIW-500 上用官方自监督配方微调,然后冻结——HIW-500 是 500 小时 Unitree G1 遥操作、在真实家庭里采集的全身示范数据。同一套编码器还负责从示范里抽子目标,于是“预测的未来”和“要去的子目标”天然在同一个空间里,不需要额外对齐。

为什么是特征而不是像素:一是子目标距离本来就在这个空间里算,省掉一个解码器;二是特征对光照、纹理、压缩噪声不敏感,分数不会因为画面抖动而乱跳;三是它逼着预测器只保留与任务进展相关的语义——预测“桌面上多了一只篮子”比预测“每个像素的颜色”更接近决策需要的东西。

也不预测关节状态。真机的本体状态只有 64 维运动潜变量加 14 个手部关节,拿它当预测目标会把“物体有没有被放稳”这类信息丢掉;视觉特征恰好能承载物体侧的变化。

端点预测器:从动作前缀到未来特征

输入两样:当前帧特征 f_t,和动作前缀的编码 q_t(B)。命令编码器 C_η 给每条命令一个 token 并加位置编码,再把 Qwen3-VL 那一路预测 token 的均值 c̄_t 加到每个命令 token 上,得到 q_t(B)=C_η(B)+c̄_t。端点预测器输出 f̂_{t+h}=P_θ(f_t,q_t(B)),做空间均值池化并归一化后得到 ẑ。

这里有个容易忽略的设计:加进去的是预测 token 的均值,不是动作 token。动作 token 只喂给 Action DiT,预测 token 才喂给前瞻模块。这样前瞻模块知道任务上下文(要干什么),但拿不到未来的视觉信息。

命令编码器为什么一条命令一个 token,而不是把整段压成一个向量?因为下游两个模块都需要知道“第几步是什么”。一条命令一个 token 再加位置编码,预测器就能对具体某一步做注意力;压成一个向量,h=20 步的顺序信息只剩池化后的摘要,端点预测会退化成“平均动作”的预测。

训练时用示范前缀 B_t=(a_{t,0},…,a_{t,h−1}) 配 o_{t+h},所以它学的是“这串动作执行完,画面会变成什么样”。监督很密:在特征上做逐元素 L1,再在池化后的特征变化上做 MSE,两者都直接约束预测。

视觉进展与总分

V i = d i s t ( z t , z g ) − d i s t ( z ^ ( i ) , z g ) i ∗ = a r g m a x i   ( V i − β E i ) , β = 0.1 V_i=\mathrm{dist}(z_t,z_g)-\mathrm{dist}(\hat z^{(i)},z_g) i^{*}=\mathrm{argmax}_i\,(V_i-\beta E_i),\qquad \beta=0.1 Vi​=dist(zt​,zg​)−dist(z^(i),zg​)i∗=argmaxi​(Vi​−βEi​),β=0.1

z_t、z_g、ẑ 都是池化并归一化后的特征,dist 取余弦距离,V_i 就是“往子目标方向近了多少”。β 固定 0.1,E_i 是下一节要讲的时序一致性。

子目标栈 G=(g_1,…,g_J),J=5,从成功示范里离线抽取;跟踪器在 dist(z_t,z_g)<0.15 时推进到下一个。因为是相对量,特征的整体尺度不影响打分,只有“移动了多少”算数,这也让不同任务之间可以共用同一个 β。

β 取 0.1 这个数值得停一下。V_i 是两个余弦距离之差,量级在 0 到 2 之间;E_i 是归一化命令上的均方误差,量级小得多。β=0.1 意味着视觉进展在大多数时候主导排序,时序项只在两条候选的视觉进展接近时起作用。这个配比很符合直觉:先看“能不能到”,再看“像不像”,但论文没有给 β 的敏感性分析,换任务时这个数可能要重调。

为什么是端点而不是完整 rollout:一次前向就够,而且“端点在哪”正好对应“这串前缀把我带到哪”。论文用特征位移变体做了对照——联合编码一段 clip、逐块预测视觉特征,十任务 84.3%,比端点低 5.4 个百分点。作者的解释是训练与推理不一致:联合编码在训练时能从后面几帧拿到信息,推理时只有当前帧重复成 clip,信息量对不上。

动作怎么条件化进去:三条通路

图 2
图 2|整体结构:动作生成器采样 N 条命令,端点预测器给出视觉进展,联合时序先验给出时序一致性,只执行前 K 步。

生成器:Qwen3-VL 加一个动作 DiT

Qwen3-VL-2B 把图像和指令编成两路 token:动作 token c_act 与预测 token c_t。Action DiT 在 c_act 上做交叉注意力,在状态 token、学习到的 token 与加噪动作 token 之间做自注意力,最后由 flow-matching 速度头从初始噪声 ξ 数值积分出命令块。每次采样 N=8 条,每条 H 步。

论文没有改这套生成器,也没有在生成阶段注入未来预测——所有对未来的使用都发生在生成之后的打分环节。这是它和 DiT4DiT、DreamZero 那类“把预测塞回生成”的路线最本质的区别。

联合时序先验:走和抓的历史必须一起看

E ϕ ( B ) = w m E m + w u E u w m = d m d a , w u = d u d a E_\phi(B)=w_m E_m+w_u E_u w_m=\frac{d_m}{d_a},\qquad w_u=\frac{d_u}{d_a} Eϕ​(B)=wm​Em​+wu​Eu​wm​=da​dm​​,wu​=da​du​​

先验是一个两层、隐层 512 的 GRU:隐状态从 r_0=0 开始,每一步吃“初始状态 s_t 加上一条 motion 命令加上一条 hand 命令”,预测下一条完整命令;s_t 在每一步重复。所以 motion 与 hand 的预测互相依赖,不是两组独立的序列。

E m = 1 ( h − 1 ) d m ∑ k = 1 h − 1 ∥ m k − m ~ k ∥ 2 2 E_m=\frac{1}{(h-1)d_m}\sum_{k=1}^{h-1}\left\|m_k-\tilde m_k\right\|_2^2 Em​=(h−1)dm​1​k=1∑h−1​∥mk​−m~k​∥22​

E u = 1 ( h − 1 ) d u ∑ k = 1 h − 1 ∥ u k − u ~ k ∥ 2 2 E_u=\frac{1}{(h-1)d_u}\sum_{k=1}^{h-1}\left\|u_k-\tilde u_k\right\|_2^2 Eu​=(h−1)du​1​k=1∑h−1​∥uk​−u~k​∥22​

两式的区别只在维度与变量:m 是身体运动分量,d_m 是它的维数;u 是手部命令,d_u 是它的维数。能量是两者归一化后的加权和,w_m=d_m/d_a、w_u=d_u/d_a,这样每个归一化坐标的贡献相同,维度大的那一组不会主导能量。

为什么不用平滑惩罚:一阶、二阶平滑只看命令之间的差分,既不知道机器人当前状态,也不知道 motion 与 hand 的耦合。实测一阶 67.5%、二阶 70.0%,只比仅视觉的 65.8% 高一点。

为什么必须联合:分解先验(每组只看自己的历史)71.7%,联合 80.8%,差 9.2 个百分点。这是全文对“走和抓要一起建模”最直接的证据——时序一致性不是“动作平滑”,而是“这段动作像不像这台机器人在这个状态下会做的动作”。

动作一致性正则:让预测特征留住动作

L a c r = M S E ( D ψ ( s g ( Δ z ) , s t ) , a t , 0 ) +   M S E ( D ψ ( Δ z ^ , s t ) , a t , 0 ) \mathcal{L}_{acr}=\mathrm{MSE}\left(D_\psi(\mathrm{sg}(\Delta z),s_t),a_{t,0}\right) +\,\mathrm{MSE}\left(D_\psi(\Delta\hat z,s_t),a_{t,0}\right) Lacr​=MSE(Dψ​(sg(Δz),st​),at,0​)+MSE(Dψ​(Δz^,st​),at,0​)

逆动作解码器 D_ψ 从特征变化重建第一条示范命令 a_{t,0}。两个分支:观测分支用 sg(Δz)(停梯度)训解码器,预测分支用 Δẑ 把梯度传回预测器与它的条件模块。

为什么要这一项:预测器可以“作弊”,只学场景的自然演化(画面本来就会动),不学动作带来的变化。那样 V_i 会退化成“时间流逝了多少”。ACR 要求 Δẑ 能解码回真实执行的那条命令,等于强制它编码动作信息。

实测:关掉 ACR、只用视觉打分,四个附加任务 55.0%(66/120);打开 65.8%(79/120),涨 10.8 个百分点,四个任务全涨。这条消融说明增益不是“多了一个预测头”,而是“预测头学到了动作”。

层级结构:采样、打分、执行

H、h、K 三个长度

提案长度 H(仿真 30、真机 40),评估视野 h=20,执行前缀 K=10。命令 30 Hz,所以 K=10 是 0.33 秒的动作,h=20 是 0.67 秒的前瞻。

h 大于 K 是关键:打分看得比执行远,才能在“下一步就要松手”之前发现这串动作会掉东西。论文的表述是 h>K 提供了超出下一次决策的前瞻。这个设计让打分器不必只盯眼前一步,也不必预测整段任务的长度。

K 与 h 的比例也有取舍。K 太小,决策太频繁,打分开销占比高;K 太大,开环执行变长,中途出错没法纠正。K=10 对应 0.33 秒,h=20 对应 0.67 秒,前者大约是后者的一半——打分器永远在看“下一步之后的那一步”。

那为什么不干脆开环跑完整段 H?因为分数只对 h 步内的前缀有效——预测器训的就是 h 步后的端点,超过 h 的推理没有监督保证;而且开环越长,一次误判的代价越大。K=10 是折中:短到能纠错,长到不至于每一步都重算。

为什么不是 MPC,也不是端到端

  • 不是 MPC:没有解析动力学模型,没有约束优化,也没有滚动时域上的二次规划;分数来自学习到的特征预测器和学习到的时序先验,前瞻只有 0.67 秒。
  • 不是端到端强化学习:没有奖励、没有 critic、没有环境交互训练;训练信号全部来自示范与自监督。
  • 层级只发生在推理:动作生成器仍是单个 VLA;所谓上层是打分器而不是规划器;子目标是固定的示范图像栈,不是学出来的 planner。论文没有训练高层策略,它训练的是一个裁判。
  • 与 test-time scaling 的区别:RoboMonkey 那类方法用视觉语言模型做判断,本文用两个可计算的信号,不需要额外的大模型调用,代价是只能判断“进展”与“自洽”,判断不了语义。

伪代码:一次决策长什么样

伪代码,仅示意流程(非可执行实现),对应论文 Sec. III-A 的重规划循环

输入:第一视角图像 o_t、指令 ℓ、本体状态 s_t、子目标栈 G=(g_1..g_J)
固定:N=8 条候选,H 提案长度,h=20 评估视野,K=10 执行步长,β=0.1

1  用 Qwen3-VL 编码 (o_t, ℓ) → 动作 token c_act、预测 token 均值 c̄_t
2  用 Action DiT 从噪声 ξ 采样 N 条命令块 A(i) ← FlowMatch(c_act, s_t)
3  取每条候选的前缀 B(i) = A(i)[0:h]
4  for i in 1..N:
5      q(i) ← CommandEncoder(B(i)) + c̄_t        # 每条命令一个 token
6      f̂(i) ← EndpointPredictor(f_t, q(i))        # 预测 h 步后的特征
7      ẑ(i) ← normalize(meanpool(f̂(i)))
8      V_i ← cos(z_t, z_g) − cos(ẑ(i), z_g)       # 视觉进展
9      E_i ← JointTemporalPrior(B(i), s_t)        # 运动与手部联合预测误差
10 i* ← argmax_i (V_i − β·E_i)
11 执行 A(i*)[0:K],共 K 条命令、30 Hz
12 机器人前进 K 步,取新观测 o_{t+K},回到第 1 行

打分能救的范围有边界。如果 8 条候选里没有一条真正可行,argmax 只能挑出“最不坏”的那条——这也是为什么生成器的质量仍然是地板。论文没有报告候选数与成功率的关系,但从机制上看,N 越大越可能覆盖到可行解,代价是每次决策 N 次端点前向加 N 次先验展开的线性开销。机载 0.73 Hz 这个数字,已经把 N=8 的开销算进去了。

训练信号从哪来:没有强化学习

仿真与真机的示教从哪来

仿真侧用 SIMPLE 的官方示范,由运动规划与 VR 遥操作采集。真机侧用 SONIC 遥操作采,每个任务 400 条,Place Basket on Table 少一些,200 条。视觉编码器先在 HIW-500 上做自监督微调再冻结——这一步不是顺手,它决定了特征空间是否贴合人形第一视角。

冻结还有一个训练上的理由:如果编码器与预测器一起训,预测误差可以靠“把特征空间压扁”来降低——所有帧都映射到同一个点,L1 与 MSE 都会很小,但分数就失去分辨力。把目标空间固定住,预测器只能去学动力学。论文没有明说这一层,但从它先微调再冻结的顺序看,这是有意为之。

真机示教的量也值得算一下:七个任务、六个 400 条加一个 200 条,合计 2600 条 SONIC 遥操作示范。这是这套方法最实的一笔成本,而且换任务要重采。

没有奖励函数,没有环境交互,没有 DAgger 式的在线纠错,也没有 critic。整套训练是模仿学习加自监督:动作生成器学 flow matching,前瞻模块学特征预测,时序先验学动作序列的分布。这一点必须说清楚,因为很多读者看到“分层”两个字会默认它用了分层强化学习。

五个损失项怎么配平

L = L a c t + λ w m L w m + λ Δ L Δ +   λ a c r L a c r + λ p r i o r L p r i o r \mathcal{L}=\mathcal{L}_{act}+\lambda_{wm}\mathcal{L}_{wm}+\lambda_\Delta\mathcal{L}_\Delta +\,\lambda_{acr}\mathcal{L}_{acr}+\lambda_{prior}\mathcal{L}_{prior} L=Lact​+λwm​Lwm​+λΔ​LΔ​+λacr​Lacr​+λprior​Lprior​

L_act 是生成器的 flow-matching 损失;L_wm 是逐元素特征 L1;L_Δ 是池化特征变化的 MSE;L_acr 是上一节的动作重建;L_prior 是时序先验在示范上的能量。四个权重取 λ_wm=0.1、λ_Δ=0.05、λ_acr=0.02、λ_prior=0.01,所有可训练部件联合优化。

权重不大,但每一项都不能省:ACR 关掉少 10.8 个百分点,时序打分从联合先验换成仅视觉少 15.0 个百分点,预测形式换成特征位移少 5.4 个百分点。

项目取值
真机与相机Unitree G1;ZED2 第一视角
仿真接口36 维:14 手部关节 + 22 臂、躯干、移动
真机接口64 维 SONIC 运动潜变量 + 14 手部关节
候选条数 N8
提案长度 H仿真 30,真机 40
评估视野 h20
执行前缀 K10(30 Hz,约 0.33 秒)
子目标数 J 与阈值 ε_g5 与 0.15
时序先验GRU 两层,隐层 512
损失权重λ_wm=0.1,λ_Δ=0.05,λ_acr=0.02,λ_prior=0.01
分数权重 β0.1
训练规模8 张 A100;仿真 4 万步、批 32,真机 9 万步、批 4

子目标是从示范里自动切出来的

离线流程:对每条重复图像的 clip 做时空 token 均值池化,累计相邻帧之间的特征变化,再在累计变化上等距取 5 帧作为子目标图像。子目标保持时间顺序,标准与未见配置用同一套,baseline 不用子目标。

这一点要单独说:子目标是本文独有的额外信息通道。虽然它来自示范(baseline 也有示范),但 baseline 没有用它。所以“涨了多少”里有一部分来自这条通道,而不只是打分器本身。论文的消融没有把“去掉子目标”单独列一行,这是我认为最该补的一个对照。

实验结果:十条仿真任务与七个真机任务

SIMPLE 上的十任务对比

SIMPLE 是人形 loco-manipulation 的仿真基准。本文评它的十条任务,每条任务在三个随机化等级各跑 10 次:L0 变干扰物与背景,L1 再加材质与光照,L2 再加物体与机器人初始位姿。于是一条任务 30 次、十条 300 次。图 3 是这十个任务加上另外六个真机任务的场景。

六条主任务与四条附加任务的分法值得看一眼。主任务 XMovePick、BendPick、Handover、Mobile P&P、Grasp、XMoveBendPick 基本都是“移动加抓取”的组合;附加四 OpenOven、PickAndPlaceAndHugContainer、OpenFaucet、OpenTrashCan 多了“操作机构”这一层。论文把两组分开报,等于承认它们考的能力不同:前者考走位与抓取的衔接,后者考接触之后的精细操作。

图 3
图 3|十个 SIMPLE 仿真任务与另外六个真机任务的场景一览。

方法主六任务附加四任务十任务总平均
Ψ085.6%55.8%73.7%
GR00T N1.648.9%未评测未评测
π0.551.1%未评测未评测
DreamZero65.6%未评测未评测
ACT82.8%未评测未评测
DiT4DiT87.8%73.3%82.0%
Fast-WAM40.0%8.3%27.3%
VLA-JEPA42.8%58.3%49.0%
本文95.6%80.8%89.7%

表里 Ψ0 的附加四任务与十任务数字、以及 GR00T N1.6、π0.5、DreamZero、ACT 的主六任务数字来自 SIMPLE 原文;DiT4DiT、Fast-WAM、VLA-JEPA 与本文由作者重训评测。主六任务上本文 95.6%、DiT4DiT 87.8%;附加四任务 80.8% 对 73.3%;十任务平均 89.7% 对 82.0%。

增益在主六(+7.8 个百分点)与附加四(+7.5)上差不多,但绝对水平差很多。附加四是 OpenOven、PickAndPlaceAndHugContainer、OpenFaucet、OpenTrashCan,全是需要精确接近、保持接触、操作机构的任务,整体更难,不是打分器能补上的。OpenFaucet 是最难的一条,本文 17/30。

Fast-WAM 的数字也值得看一眼:主六任务 40.0%、附加四任务 8.3%。它在训练期用了未来监督,测试时不生成视频;在这个基准上,一旦任务需要精细的机构操作,成功率就塌了。VLA-JEPA 则相反,主六 42.8%、附加四 58.3%,两组任务上的排序和别的方法不一致。我倾向于把它读成每任务单独训练带来的不稳定性:每个方法在每个任务上都要重新训一遍,超参与数据量稍有不同,结果就会跳。

真机:标准条件与未见配置

真机是 Unitree G1,第一视角用 ZED2,七个任务、每个条件 10 次。标准条件 85.7%,GR00T N1.7 70.0%、DiT4DiT 62.9%、Ψ0 32.9%;未见物体配置 65.7%,GR00T N1.7 48.6%、DiT4DiT 38.6%、Ψ0 21.4%。

方法标准条件未见物体配置
GR00T N1.770.0%48.6%
DiT4DiT62.9%38.6%
Ψ032.9%21.4%
本文85.7%65.7%

15.7 个百分点的标准条件增益主要来自 Load Washer:本文 10/10,GR00T N1.7 只有 2/10。

论文拆了 GR00T 的失败模式——运输途中掉了 T 恤、还没进滚筒就松手、洗衣机门没打开。前两个正是图 1 里“放置时篮子掉了”的同一类失败:抓握没有保持到物体被目标接住。

还有一点值得注意:仿真与真机的排名是一致的。仿真里本文 89.7%、DiT4DiT 82.0%、Ψ0 73.7%;真机里本文 85.7%、DiT4DiT 62.9%、Ψ0 32.9%。排名一致说明 SIMPLE 这个基准至少在这三个方法上是有区分度的,不是纯噪声;但真机上的差距被放大了(Ψ0 从差 16 个点变成差 52.8 个点),说明仿真低估了真机的难度。

Dispose of Trash 是唯一一个本文比 GR00T N1.7 低的任务,6/10 对 9/10,失败包括图 6 里盖子只开一半。未见配置下,基线每个任务的成功率在 0/10 到 6/10 之间;本文在七个任务上全部最高或并列最高,其中四个任务至少 7/10。

读这张表要注意统计功效:每个格子 10 次试验,一次就是 10 个百分点。单个任务上 6/10 与 9/10 的差别只有 3 次试验,在 10 次样本上不足以下结论;真正可靠的是跨七个任务的平均(70 次)与跨十条仿真任务的平均(300 次)。论文没有报告置信区间,也没有报告多种子方差,所以表里的个位数差异应当当作方向而不是定论。

泛化不是靠“记住左手”

图 4 给了一个比成功率更有说服力的定性结果:同一个 Water Plant 任务,标准条件下用右手;把喷壶嘴反向、或者把 T 恤放到洗衣机左侧之后,机器人换左手完成——而“左手抓 T 恤”这个动作并不在示范里。

图 4
图 4|标准与未见物体配置下的抓取行为:喷壶嘴反向时换左手,T 恤放到左边时也换左手。

这说明分数确实在引导“往子目标走”,而不是复现某条示范的动作序列;如果只是匹配示范,换手这种组合不该出现。当然这只是一条定性证据,论文没有给换手的定量统计。

消融:三件事各自值多少

对照设置成功率
预测形式特征位移变体 / 端点(本文)84.3% / 89.7%(十任务)
动作一致性正则去掉 / 保留(仅视觉打分)55.0% / 65.8%(附加四,120 次)
时序打分仅视觉 / 一阶平滑 / 二阶平滑65.8% / 67.5% / 70.0%
时序打分分解先验 / 联合先验(本文)71.7% / 80.8%

三点读法。第一,端点预测比特征位移高 5.4 个百分点,说明“分开编码当前帧与未来帧”这件事值钱,训练与推理的一致性比模型容量更重要。第二,ACR 值 10.8 个百分点,而且是在仅视觉打分的设置下测的——它证明预测特征里确实有动作信息,否则关掉时序项就该露馅。第三,联合先验比分解先验高 9.2 个百分点,比二阶平滑高 10.8 个百分点,说明“学一个动作序列先验”比“手工写平滑惩罚”有效得多。

ACR 与时序两组消融都在四个附加任务的 120 次 episode 上做(10 次乘 3 个随机化等级乘 4 个任务),共用示范、训练预算、初始条件与子目标,所以数字可比。

还有两处口径要交代。第一,子目标只有本文用,baseline 不用——这不是数据泄漏(子目标来自示范),但它确实是一条额外的信息通道,严格对照应该有一个“baseline 也给子目标”的版本。第二,每个方法都是每任务单独调、单独训,表里是各自最好状态的比较,不是同一套超参下的比较。

数据效率:100 条示教换 27.3 个百分点

五个任务的子集上,本文 25/50/100 条示教的成功率是 48.0%、52.7%、84.0%,Ψ0 是 33.3%、41.3%、56.7%。100 条时差 27.3 个百分点;25 条时只有 48.0%,还不到能上真机的水平。

图 5
图 5|五个 SIMPLE 任务上,成功率随示教条数(25、50、100)的变化。

曲线形状比数字更有信息量:50 到 100 条之间有一个陡坡,说明这套方法还在“吃数据”的阶段,没有进入平台期。对要落地的人来说,这意味着示教采集的成本不能省。

人形机器人的分层控制值得做吗

收益:把“看起来对”和“真的对”分开

  • 分数可解释:V 低说明没往子目标走,E 高说明这串动作不自洽。归因方向不同,改法也不同——前者改生成分布,后者改时序先验。
  • 不动生成器:任何采样式 VLA 都能加装。本文的生成器就是 Qwen3-VL-2B 加 Action DiT,没有为打分器改结构。
  • 分布外更值钱:未见配置 +17.1 个百分点(65.7 对 48.6),比标准条件的 +15.7 还大一点。我的解释是生成器在陌生配置下更容易采出“看起来合理但会掉东西”的序列,此时比较比生成更关键。
  • 数据效率:100 条示教时 +27.3 个百分点。

这四条里,我认为第三条是最有价值的证据。标准条件的高分可能来自更好的拟合,但未见配置上的差距说明打分器在做一件生成器做不到的事:在没有见过的物体摆放下,判断哪条序列能走到子目标。

训练难度:多出来的是示教与调参

  • 每任务 400 条真机示教,9 万步训练,8 张 A100,批 4;每个任务一个策略,不是通才。
  • 五个损失项、四个权重,β 还要单独调。
  • 视觉编码器要先在 HIW-500 上微调再冻结,这一步决定特征空间贴不贴人形第一视角。
  • 子目标抽取是离线流水线,换任务要重跑。

所以这里的“分层”不省事,它是把难度从“生成器要一次做对”转移到“裁判要判得准”。前者靠模型容量与数据,后者靠监督设计——ACR 就是为后者补的。

换个熟悉的说法:这套东西本质上是 best-of-N 重排,只不过打分器不是奖励模型,而是潜空间世界模型加动作序列先验。大模型推理里用奖励模型在 N 个候选里挑一个;这里用“到子目标的特征距离”与“动作序列的预测误差”在 N 条轨迹里挑一条。理解这层对应,收益边界也就清楚了:候选分布里没有好解时重排救不了;打分与真实目标错位时,重排会稳定地选错。

值不值得做,取决于三件事:生成器是否已经能采样出可行解(采不出,打分无用)、失败是否集中在时序配合(不集中,该去改感知)、延迟预算是否允许每次决策跑 N 次前向。三条都满足时,打分器的性价比很高;任何一条不满足,先别做。

sim2real 的代价:0.73 Hz 与 12.84 GB

先澄清一件事:这篇论文的仿真与真机是两套策略,分别训练(4 万步与 9 万步),接口也不同(36 维对 64 维加 14 维)。所以上真机的成本不是“迁移掉了多少点”,而是“另起一套管线”:遥操作采集、SONIC 接口、9 万步训练,一样都不能少。仿真在这篇论文里的角色是受控评测场,不是训练到部署的桥梁。

方法显存(GB)可训练参数(B)推理频率(Hz)
GR00T N1.66.81.6215.46
DiT4DiT212.353.8
Fast-WAM286.75.2
本文7.23.09.1

数字要分开看。4090D 上 9.1 Hz,一次决策 0.11 秒,而 K=10 的命令块是 0.33 秒,有约 3 倍余量,可以连续跑。机载 Orin NX 上 0.73 Hz,一次决策 1.37 秒,可 K=10 只覆盖 0.33 秒——按这两个数算,占空比大约 24%。也就是说,要么机器人每走 0.33 秒停一下等决策,要么底层控制器得自己插值补动作。论文只报告了频率与内存,没有报告这一点,也没有给端到端延迟分解;这是我读这篇论文时最想追问的工程细节。

显存 7.2 GB 比 DiT4DiT 的 21 GB 与 Fast-WAM 的 28 GB 低不少,但可训练参数 3.0B 比 GR00T N1.6 的 1.62B 与 DiT4DiT 的 2.35B 都大,只比 Fast-WAM 的 6.7B 小。所以省显存不是因为模型小,而是因为它不生成视频:V-JEPA 编码器冻结,只在特征空间做一次端点预测。

局限与失效场景

论文自己承认的四条

  1. 关节机构的开合不完整:仿真 31 次失败里有 13 次是 OpenFaucet(41.9%),手到了把手附近但拧不开。
  2. 软物体抓握丢失:Collect Toy with Cart 里软玩具在到推车之前掉了。
  3. 视觉分数依赖任务特定的示范子目标图像。
  4. 机载推理 0.73 Hz。

论文把“给潜变量预测加接触与物体状态监督”“把时序打分扩展到相邻命令块之间”列为未来工作。两条都指向同一个缺口:现在的分数只看视觉特征,看不见接触力、也看不见物体状态。

另外,论文没有给仿真任务与真机任务的对应关系(比如仿真里的 OpenFaucet 与真机的 Water Plant 是不是同一类能力),所以两边的数字只能各自看,不能直接换算。

三类失败案例说明了什么

图 6
图 6|三类失败:水龙头没拧开、垃圾桶盖只开一半、软玩具在到推车前掉落。

(a) 手到了把手附近却拧不开:视觉进展在“接近”阶段一直涨,接触之后饱和;分数看不出“没拧动”,因为它没有物体状态。(b) 垃圾桶盖只开一半,机器人一直拿着垃圾不松手:没有“盖子开了多少”的反馈,保持抓握的那条策略不会切换。© 软玩具在到推车之前掉了:抓握力与形变既不在观测里,也不在预测里。

三条的共同点是:分数是代理指标。代理饱和、或者代理与真实进展脱钩时,打分器会把一条失败序列排到第一。这不是打分器的 bug,是它的定义域——它只能看见 V-JEPA 特征里有的东西。

我认为还会出问题的地方

  • 未见配置的定义有限:换物体身份、位置、朝向、外观,任务目标不变;不是新任务、新场景、新本体。
  • 单本体单相机:G1 加 ZED2 第一视角;换本体要重做接口与特征适配。
  • 分数的校准没有报告:V_i 与 E_i 都是代理量,论文没有给它们与实际成功率的对应关系,也没有给拒识阈值;这意味着它只能用来排序,不能直接当“要不要执行”的开关。
  • 没有报告完成时间、抓握力、稳定性指标,只有成功率、数据效率与推理频率。
  • 仿真依赖:十条仿真结论建立在 SIMPLE 的官方示范与评测口径上,换一套仿真器或换一批示范,数字未必复现。
  • 地形与场景没变:十个仿真任务与七个真机任务都是室内桌面、家电场景,走路是短距离移动与转身,没有楼梯、碎石、斜坡这类地形泛化评测。
  • 候选数 N=8 固定,没有 N 的 scaling 曲线;β=0.1 固定,没有敏感性分析。这两项都是我会先问的。
  • 分数依赖冻结编码器,编码器在 HIW-500 上微调过,这个数据集的偏置会进到分数里。
  • 训练 8 张 A100、评测 4090D,没有端侧全链路延迟。

落地判断

什么团队值得试

  • 已经有采样式 VLA、卡在长时序配合类任务上的团队:装一个打分器比换底座便宜。
  • 有稳定示教管线(每任务几百条)与仿真基准的团队:消融与回归都跑得动。
  • 任务有清晰的接近、接触、保持、释放阶段的团队:视觉进展这个代理才有意义。
  • 需要在不重训生成器的前提下提升分布外成功率的团队。

什么团队先别碰

  • 需要 3 Hz 以上闭环的:机载 0.73 Hz 不够,除非把 K 调大并接受更长的开环执行。
  • 单任务只有几十条示教的:25 条时 48.0%,还不够。
  • 要做通才多任务策略的:本文每任务一个策略,没有共享。
  • 没有高质量第一视角人形视频做编码器适配的:冻结编码器的质量直接决定分数质量。

如果我要复现,先做哪一步

  1. 固定生成器与接口,先把 N 条候选采出来,确认候选之间真的有差异——如果 8 条几乎一样,打分没有意义。
  2. 先用现成的 V-JEPA 特征训端点预测器(不微调编码器),检查 V_i 与人工标注的“这串动作会不会成”是否相关。
  3. 加 ACR,看 Δẑ 能否解码回 a_{t,0};这一项不需要额外数据,是性价比最高的一步。
  4. 最后上联合时序先验,并和二阶平滑做对照——如果打不过平滑惩罚,说明先验没学到东西。
  5. 每一步都保留闭环成功率,不要只看离线预测误差;离线误差降了、闭环没涨,在这类方法里很常见。

术语速查

术语含义
动作条件化潜变量前瞻用候选动作前缀预测未来视觉特征,并在执行前打分
端点预测器输入当前帧特征与命令前缀编码,输出 h 步后的特征
视觉进展 V_i当前特征到子目标的距离减去预测特征到子目标的距离
时序一致性 E_i联合时序先验对命令序列的预测误差,越大越不自洽
联合时序先验GRU 同时吃 motion 与 hand 历史,预测下一条完整命令
动作一致性正则用逆动作解码器从特征变化重建第一条示范命令
逆动作解码器 D_ψ训练期专用,从 Δz 或 Δẑ 重建 a_{t,0}
重规划视野H 提案、h 评估、K 执行,满足 1≤K≤h≤H
子目标栈 G从示范离线抽取的 5 张按时间排序的图像
SONIC 运动潜变量真机 64 维身体运动接口,与 14 维手部关节拼接
SIMPLE人形 loco-manipulation 仿真基准,本文评十条任务
世界动作模型 WAM把未来预测与动作生成耦合的模型族

常见问题

它是不是强化学习?

不是。训练信号全部来自示范与自监督:flow matching、特征预测、动作重建、序列先验,没有奖励、没有 critic、没有环境交互。论文的对照组里也没有强化学习方法——DiT4DiT、Fast-WAM、VLA-JEPA、Ψ0、GR00T N1.7 都是示教式策略或世界动作模型。所以“分层比端到端 RL 好训”这个结论不能从本文推出来;本文能支持的是“在示教式生成器上加一个执行前打分器,比不加好”。同样,论文没有 MPC 对照,也没有和 MPC 比过。

换本体、换任务还能用吗?

只在 Unitree G1 上验证。换本体要动三处:真机接口(SONIC 运动潜变量)、视觉编码器(HIW-500 是 G1 数据)、子目标抽取(每任务一套)。任务侧是每任务一个策略、每任务几百条示教;泛化实验只做到未见物体配置,没有跨任务、跨场景。

0.73 Hz 能上真机吗?

能演示,不能连续跑。论文的成功率评测在 4090D 上做(9.1 Hz),机载只在七个任务上做了部署测试并报告 0.73 Hz 与 12.84 GB。按 10 条命令、30 Hz 计算,机载每次决策只能覆盖 0.33 秒的动作,占空比约 24%,中间怎么补论文没有说。要上产线,这一项必须先把延迟打下来,或者把 K 加大、接受更长的开环。

Logo

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

更多推荐