Ψ₀ (Psi 0) 是面向“人形机器人” 移动+操作 的VLA模型,🚀支持全身控制的,实现 上肢操作+下肢移动

  • 三系统架构
    • System 2:2B参数Qwen3-VL-2B VLM骨干,提取视觉-语言特征
    • System 1:500M参数MM-DiT流基动作专家,预测全身动作块,输出36维的动作块
    • System 0:基于RL的下层控制器(AMO),输出15DoF下肢关节角

在这里插入图片描述

层级化控制:System 2负责感知语义与理解(VLM),System 1负责全身动作规划(VLA,上肢直接输出控制),System 0负责下肢稳定控制(获取VLA的部分输出,进一步编码为电机信息)

论文地址:Ψ₀ : An Open Foundation Model Towards Universal Humanoid Loco-Manipulation

开源地址:https://github.com/physical-superintelligence-lab/Psi0

实践复现:《VLA 系列》复现 Ψ₀ | Psi0 | 通用人形机器人 | 移动操作模型

一、模型架构

Ψ₀采用层级化三系统架构,是面向人形机器人的视觉-语言-动作(VLA)基础模型,通过清晰的输入输出接口实现感知-规划-控制的全闭环:

视觉+语言指令+本体状态 → System 2 VLM Features → System 1 36 维关节空间动作块 → 拆分 { 28维上肢/手部动作(直接执行) 8维躯干/下肢高层指令 → System 0 15 维下肢关节角度 → 融合 43自由度全身控制动作 \text{视觉+语言指令+本体状态} \xrightarrow{\text{System 2}} \text{VLM Features} \xrightarrow{\text{System 1}} 36\text{维关节空间动作块} \xrightarrow{\text{拆分}} \begin{cases} \text{28维上肢/手部动作(直接执行)} \\ \text{8维躯干/下肢高层指令} \xrightarrow{\text{System 0}} 15\text{维下肢关节角度} \end{cases} \xrightarrow{\text{融合}} \text{43自由度全身控制动作} 视觉+语言指令+本体状态System 2 VLM FeaturesSystem 1 36维关节空间动作块拆分 {28维上肢/手部动作(直接执行)8维躯干/下肢高层指令System 0 15维下肢关节角度融合 43自由度全身控制动作
在这里插入图片描述

  • System 2(VLM骨干):感知输入 → 视觉-语言融合特征输出,是后续动作生成的条件基础,后训练/微调阶段参数完全冻结
  • System 1(MM-DiT动作专家):融合特征+本体状态+训练噪声 → 36维连续动作块输出,是连接通用语义与机器人具身控制的核心,仅在后训练/微调阶段更新参数
  • System 0(下层RL控制器):8维躯干/下肢高层指令 → 15维下肢关节角度输出,复用AMO开源控制器,保证人形机器人移动与操作的稳定性,无需微调

其中,✅ 36维连续动作块,表示的是:

  • hand_joints: 14维 (双手)
  • arm_joints: 14维 (双臂)
  • torso_rpy: 3维 (躯干三维角度 roll/pitch/yaw)
  • height: 1维 (基座高度)
  • vx: 1维 (水平线速度 x)
  • vy: 1维 (水平线速度 y)
  • torso_vyaw: 1维 (偏航角速度)
  • target_yaw: 1维 (目标偏航旋转)

1.1、System 2:视觉-语言主干(Pre-Trained VLM)

核心定位:通用感知与语义特征提取器,是模型的大脑感知层,基于开源Qwen3-VL-2B-Instruct微调实现;

  • 仅在预训练阶段更新参数,后训练/部署阶段参数完全冻结,不参与机器人控制阶段的任何参数更新。

  • 负责将视觉观察与语言指令编码为融合特征,为System 1提供任务语义与场景视觉的条件输入。

输入与观察空间
符号 物理含义 自由度/类型 输入阶段说明
ℓ \ell 自然语言任务指令 文本序列 预训练阶段为视频描述,后训练/部署阶段为面向机器人的任务描述(如"抓取杯子并倒入水")
I t I_t It 头载相机当前图像 视觉RGB图像 第一视角环境观测,预训练阶段为人类/机器人视角,部署阶段为机器人Intel RealSense D435i相机视角
o t o_t ot 当前时刻复合观察 图像+本体感受状态 整体感知输入,融合视觉 I t I_t It与本体状态 q t q_t qt,是后训练/部署阶段的核心输入
q t q_t qt 全身本体感受状态 复合状态量 仅包含上肢关节状态、躯干滚转/俯仰/偏航姿态、机器人基座高度,无下肢状态(论文明确定义)
1. 预训练阶段(Stage 1:学习人类操作先验)
  • 视觉输入EgoDex(829h人类第一视角操作视频)+ Humanoid Everyday(31h人形机器人数据) 视频帧,缓解人机视觉观测差距,捕捉人类手物交互的自然运动模式
  • 语言输入:视频对应的文本描述(Video Description),与人类操作动作一一对应
  • 监督信号:离散动作令牌(Discrete Action Tokens),由FAST算法对48DoF人机统一动作空间的连续动作编码得到(压缩至≈20令牌,L1重建损失0.005),用于自回归预测训练
  • 核心操作:微调Qwen3-VL-2B-Instruct,仅训练其单步离散动作令牌预测能力,不做动作块预测,降低计算开销
2. 后训练/部署阶段(Stage 2 + Deployment:适配机器人控制)
  • 视觉输入:机器人头载相机实时图像 I t I_t It(Intel RealSense D435i)
  • 语言输入:面向机器人的自然语言任务指令 ℓ \ell
  • 本体输入:机器人实时本体感受状态 q t q_t qt
  • 核心操作:无监督信号,仅将 I t + ℓ + q t I_t+\ell+q_t It++qt编码为视觉-语言融合特征(VLM Features),作为System 1的固定条件输入,参数全程冻结
输出
  • 预训练阶段单步离散动作令牌,用于自回归预测的损失计算,核心目标是让模型学习视觉+语言→人类操作动作的语义映射,而非生成可执行动作
  • 后训练/部署阶段视觉-语言融合特征(VLM Features),高维隐藏特征向量,融合任务语义、视觉场景信息、人类运动先验,是System 1生成机器人动作的核心条件输入,无其他输出

1.2、System 1:动作专家(MM-DiT Action Expert)

核心定位:机器人专属动作生成器,是模型的动作规划层,基于**流基多模态扩散变换器(MM-DiT)**实现(≈500M参数);

负责将System 2的通用融合特征转化为机器人关节空间36维连续动作块 a ∈ R 36 \boldsymbol{a} \in \mathbb{R}^{36} aR36,仅在后训练和微调阶段更新参数,预训练阶段未参与。

输入空间
符号 物理含义 自由度/类型 说明
VLM Features 视觉-语言融合特征 高维向量 来自冻结的System 2,作为动作生成的核心条件特征
q t q_t qt 全身本体感受状态 复合状态量 机器人当前上肢关节、躯干姿态、基座高度的实时状态,后训练/部署阶段的必选输入
ϵ \epsilon ϵ 高斯噪声 R 36 \mathbb{R}^{36} R36 后训练阶段输入,用于流匹配损失计算,生成带噪动作 a t τ a_t^\tau atτ
τ \tau τ 流时间步 [ 0 , 1 ] [0,1] [0,1]均匀采样 后训练阶段输入,用于流匹配训练的时间条件调制
1. 后训练阶段(Stage 2:学习机器人具身动力学)
  • 核心输入:冻结的VLM Features + 机器人实时本体状态 q t q_t qt + 高斯噪声 ϵ \epsilon ϵ + 流时间步 τ \tau τ
  • 监督信号:真实机器人36维关节空间连续动作块 a t : t + H \boldsymbol{a}_{t:t+H} at:t+H H H H为预测视野)
  • 核心操作:基于流匹配损失 L f m \mathcal{L}_{fm} Lfm训练MM-DiT,学习从带噪动作 a t τ = τ a t + ( 1 − τ ) ϵ a_t^\tau=\tau a_t+(1-\tau)\epsilon atτ=τat+(1τ)ϵ还原真实机器人动作,实现视觉-语言特征→机器人关节动作的映射
2. 部署阶段(Deployment:实时生成平滑动作块)
  • 核心输入:System 2实时输出的VLM Features + 机器人实时本体状态 q t q_t qt
  • 关键优化:引入训练时实时动作分块(RTC),基于已执行动作块预测未来动作块,抑制推理延迟导致的动作抖动
  • 核心操作无任何噪声输入(流基MM-DiT部署阶段无需噪声采样),直接输出平滑的36维连续动作块 a t : t + H \boldsymbol{a}_{t:t+H} at:t+H,适配30Hz实时控制
输出:动作空间 a ∈ R 36 \boldsymbol{a} \in \mathbb{R}^{36} aR36

System 1输出连续动作块(Continuous Action Chunks) a t : t + H \boldsymbol{a}_{t:t+H} at:t+H(未来 H H H步的全身动作序列)

按控制逻辑拆分为28维直接执行动作(上肢) 和 8维高层指令(下肢) : 14 + 14 + 3 + 1 + 1 + 1 + 1 + 1 = 36 14 + 14 + 3 + 1 + 1 + 1 + 1 + 1 = \boldsymbol{36} 14+14+3+1+1+1+1+1=36 维。

符号 物理含义 自由度 控制逻辑/接收方
q h a n d \boldsymbol{q}_{hand} qhand 双手灵巧手目标关节角度 R 14 \mathbb{R}^{14} R14 直接执行:驱动双手14个关节,实现精细手物交互
q a r m \boldsymbol{q}_{arm} qarm 双臂目标关节角度 R 14 \mathbb{R}^{14} R14 直接执行:驱动双臂14个关节,实现上肢空间位置控制
t o r s o r p y \boldsymbol{torso}_{rpy} torsorpy 躯干滚转/俯仰/偏航目标姿态 R 3 \mathbb{R}^3 R3 传给System 0:8维高层指令之一,调整躯干姿态适配操作
h b h_b hb 机器人基座目标高度 R 1 \mathbb{R}^1 R1 传给System 0:8维高层指令之一,调整整体垂直操作高度
v x v_x vx 基座 x x x方向水平线速度 R 1 \mathbb{R}^1 R1 传给System 0:8维高层指令之一,控制机器人前后移动
v y v_y vy 基座 y y y方向水平线速度 R 1 \mathbb{R}^1 R1 传给System 0:8维高层指令之一,控制机器人左右平移
v y a w v_{yaw} vyaw 基座绕垂直轴偏航角速度 R 1 \mathbb{R}^1 R1 传给System 0:8维高层指令之一,控制机器人实时转向
p y a w p_{yaw} pyaw 基座目标偏航角 R 1 \mathbb{R}^1 R1 传给System 0:8维高层指令之一,定义机器人期望朝向

关键说明:System 1不直接输出下肢关节角度,仅输出28维上肢/手部直接执行动作8维躯干/下肢高层指令

8维高层指令是System 0的唯一输入,无其他额外指令。

动作维度 具体构成 对应机器人部位
28DoF q h a n d q_{hand} qhand(14DoF×2)+ q a r m q_{arm} qarm(14DoF×2) 双手(14个活动关节)+双臂(14个活动关节)
3DoF t o r s o r p y torso_{rpy} torsorpy 躯干(滚转、俯仰、偏航)
5DoF h b h_b hb(底座高度)+ v x / v y v_x/v_y vx/vy(水平线速度)+ v y a w v_{yaw} vyaw(偏航角速度)+ p y a w p_{yaw} pyaw(目标偏航) 机器人底座+下肢运动指令

1.3、System 0:下肢控制器(Lower-Body Controller)

核心定位:底层稳定控制器,是模型的硬件执行层复用开源AMO RL-based tracking policy作为核心控制器(AMO非System 0别名),无需随模型微调,负责将System 1输出的8维躯干/下肢高层指令转化为安全、稳定的下肢关节角度,保证人形机器人移动与操作的整体平衡。

输入(修正核心错误:删除q_lower输入,q_lower为System 0输出)

System 0的输入为System 1输出的8维躯干/下肢高层指令,无其他本体状态或环境反馈输入(论文明确采用off-the-shelf AMO控制器,直接映射高层指令到下肢关节角):
{ t o r s o r p y , h b , v x , v y , v y a w , p y a w } ∈ R 8 \{\boldsymbol{torso}_{rpy}, h_b, v_x, v_y, v_{yaw}, p_{yaw}\} \in \mathbb{R}^8 {torsorpy,hb,vx,vy,vyaw,pyaw}R8

输出
  • 下肢关节角度 q l o w e r ∈ R 15 \boldsymbol{q}_{lower} \in \mathbb{R}^{15} qlowerR15,论文明确定义为3维腰部关节角度 + 12维腿部关节角度,是驱动机器人下肢运动的直接控制量。
全身控制动作融合(修正维度描述错误)

System 1输出的28维上肢/手部直接执行动作,与System 0输出的15维下肢关节角度融合,形成43自由度全身控制动作完全适配Unitree G1人形机器人硬件,融合公式与论文一致:

14 ⏟ q a r m (双臂) + 14 ⏟ q h a n d (双手) + 15 ⏟ q l o w e r (下肢, S y s t e m 0 生成) = 43 \underbrace{14}_{\boldsymbol{q}_{arm}(双臂)} + \underbrace{14}_{\boldsymbol{q}_{hand}(双手)} + \underbrace{15}_{\boldsymbol{q}_{lower}(下肢,System 0生成)} = \boldsymbol{43} qarm(双臂) 14+qhand(双手) 14+qlower(下肢,System0生成) 15=43

关键说明:躯干姿态 t o r s o r p y \boldsymbol{torso}_{rpy} torsorpy由System 0结合8维高层指令统一处理,融入下肢关节角度的映射过程,并非单独作为自由度参与43维计算,论文中43维为上肢28维+下肢15维的固定硬件维度。

1.3、输入输出总结

输入空间
系统 输入符号/量 物理含义 阶段适用
System 2 ℓ + I t + q t \ell + I_t + q_t +It+qt 语言指令+视觉图像+本体状态 后训练/部署
System 2 人类/机器人视频帧+视频描述 视觉+语言预训练数据 预训练
System 1 VLM Features + q t + ϵ + τ q_t + \epsilon + \tau qt+ϵ+τ 融合特征+本体状态+噪声+流时间步 后训练
System 1 VLM Features + q t q_t qt 融合特征+本体状态(RTC优化) 部署
System 0 8维躯干/下肢高层指令 t o r s o r p y + h b + v x + v y + v y a w + p y a w \boldsymbol{torso}_{rpy}+h_b+v_x+v_y+v_{yaw}+p_{yaw} torsorpy+hb+vx+vy+vyaw+pyaw 后训练/部署
动作输出空间
符号 维度 所属系统 控制方式
a ∈ R 36 \boldsymbol{a} \in \mathbb{R}^{36} aR36 36DoF System 1 关节空间连续动作块
q a r m / q h a n d \boldsymbol{q}_{arm}/\boldsymbol{q}_{hand} qarm/qhand 28DoF System 1 直接执行
8维高层指令 8DoF System 1 传给System 0
q l o w e r \boldsymbol{q}_{lower} qlower 15DoF System 0 底层关节控制
全身控制动作 43DoF System 1+System 0 融合执行

二、分阶段训练

这是Ψ₀能用极少数据实现SOTA性能的关键,针对“人机数据异质、联合训练低效”的痛点,

  • 提出 “预训练(学人类知识)-后训练(学机器人控制)-微调(适配具体任务)” 的三阶段训练策略,

  • 全程解耦学习目标、冻结已训练模块、只针对目标模块更新

  • 最大化异质数据的利用效率,核心数据量仅为829小时人类第一视角视频+30小时真实机器人数据(约为现有模型的1/10)。

阶段1:基于人类第一视角视频的VLM预训练(System 2)

核心目标

让System 2学习人类操作的任务语义+与机器人任务对齐的视觉表征,无需学机器人控制,只需要掌握“人类怎么做操作任务”的先验知识。

关键技术细节
  1. 选用高质量数据:核心用EgoDex数据集(829小时人类第一视角灵巧操作视频,如开门、拿杯子、拧瓶盖),补充Humanoid Everyday数据集(31小时人形机器人数据),减少人机视觉差距;
  2. 统一人机动作表征:设计48DoF的任务空间动作表征,兼容人类手部和机器人末端执行器(均定义为“手腕位姿+指尖位置”),实现人机数据的联合训练;
  3. FAST动作令牌化:解决高维动作计算成本高的问题——用50万条随机动作训练FAST令牌器,将连续的48DoF动作压缩为约20个离散令牌,且L1重建损失仅0.005(压缩后几乎无信息损失);
  4. 仅预测单步动作:预训练时只让VLM自回归预测单步动作令牌,而非动作块,大幅降低计算成本(因为预训练只需要学语义,不需要学长时程控制)。
训练配置

64张A100 GPU训练10天,学习率1e-4,全局批次1024,保证训练效率和效果。

阶段2:基于真实机器人数据的动作专家后训练(System 1)

核心目标

让System 1学习人形机器人的具身动力学,能将System 2的VL特征转化为机器人关节空间的精准动作,全程冻结System 2的参数(避免破坏已学的人类知识)。

关键技术细节
  1. 冻结VLM骨干:只从头训练System 1的MM-DiT,不改动System 2,保证人类先验知识不丢失;
  2. 流匹配损失训练:针对机器人连续动作生成的需求,采用流匹配损失替代传统扩散损失,核心逻辑是“让模型学习从带噪声的动作中还原真实的机器人关节动作”,生成的动作更平滑、更适配真实机器人控制;
  3. 任务无关的跨任务数据:用Humanoid Everyday数据集的真实机器人数据训练,让动作专家学习通用的机器人控制能力,而非单一任务。
训练配置

32张A100 GPU训练30小时,学习率1e-4,全局批次2048,快速学完机器人通用控制能力。

阶段3:基于少量域内数据的动作专家微调(System 1)

核心目标

让模型快速适配具体的真实世界移动操作任务,仅微调System 1,无需改动System 2,实现“少量数据快速适配”。

关键技术细节
  1. 仅微调动作专家:System 2和System 0均冻结,只更新System 1的参数,训练成本极低;
  2. 少量高质量遥操作数据:每个任务仅用80条遥操作轨迹数据,远少于现有模型的海量数据需求;
  3. 适配长时程任务:微调4万步,采用余弦学习率调度,让模型能生成超2000步的长时程动作块(30Hz下约1分钟的连续操作)。

训练核心优势:三阶段层层递进,先学通用的人类知识,再学通用的机器人控制,最后学具体的任务适配,每一步都不做无用功,从根本上解决了传统模型“人机数据混合训练、两种知识相互干扰”的问题,实现了极致的数据效率

3、三大落地关键技术优化

Ψ₀的设计不仅关注"训练性能",更关注真实世界的部署落地——机器人模型的核心价值是在真实世界中稳定执行任务。

三大关键技术,分别解决推理抖动、遥操作数据质量低、动作特征融合效率差的实际问题,让模型从"实验室训练"真正走到"真实机器人执行"。

三大技术的协同关系

┌─────────────────────────────────────────────────────────────┐
│  训练阶段                                                    │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────────┐ │
│  │  EgoDex预训练 │ → │ Humanoid后训练 │ → │ 任务特定微调      │ │
│  │  (VLM主干)   │    │ (MM-DiT头)   │    │ (RTC+高质量数据) │ │
│  └─────────────┘    └─────────────┘    └─────────────────┘ │
│         ↑                    ↑                    ↑         │
│    学习视觉-语言-动作关联   MM-DiT架构优化      定制化遥操作采集 │
│                                                      RTC训练 │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│  部署阶段                                                    │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────────┐ │
│  │  VLM编码    │ → │ MM-DiT解码   │ → │ RTC平滑执行      │ │
│  │  (理解任务)  │    │ (生成动作)   │    │ (消除抖动)       │ │
│  └─────────────┘    └─────────────┘    └─────────────────┘ │
│         ↑                    ↑                    ↑         │
│    System 2: 慢思考      System 1: 快生成      System 0: 稳定控制 │
│    (2B参数, ~160ms)      (500M参数)           (RL策略, 实时)   │
└─────────────────────────────────────────────────────────────┘

三大技术形成完整闭环

  • MM-DiT解决"生成质量"问题,让动作精准
  • 定制化遥操作解决"数据质量"问题,让微调有效
  • RTC解决"执行平滑"问题,让部署稳定

三者缺一不可,共同支撑Ψ₀在真实世界长时程任务中的SOTA性能(平均成功率比第二名GR00T-N1.6高40%+)。

3.1、训练时实时动作分块(RTC, Real-Time Chunking):解决模型推理抖动问题

待解决问题:推理延迟导致的"停-想"行为

Ψ₀整体参数量超25亿(VLM 2B + Action Expert 500M),单次前向推理耗时约160ms。在真实部署中,这会产生严重的时间错位问题

  • 机器人在等待推理结果时,必须暂停当前动作执行(“停”)
  • 获得新动作块后,再启动执行(“想”)
  • 这种"停-想"循环导致运动抖动、轨迹不连续,甚至引发物理碰撞

如下图所示,无RTC时,连续两个动作块在切换点出现显著偏差(青色线"Next Action (w/o RTC)"),机器人关节角度发生跳变。
在这里插入图片描述
上面图的关键对比

  • 青色线(无RTC):两个动作块在切换点偏差巨大
  • 红色线(有RTC):连续动作几乎重合,偏差被抑制
场景 无RTC 有RTC
动作曲线 锯齿状,切换点跳变 平滑曲线,无缝衔接
机器人表现 "停-启"卡顿,易碰撞 丝滑运动,连续执行
长时程任务 早期失败(抖动导致物体掉落) 稳定完成2000+步
物理安全 抖动可能导致硬件损伤 平滑运动保护机器人
核心技术细节:训练时模拟推理延迟

Ψ₀采用训练时RTC(而非测试时梯度引导),核心机制如下:

数学建模

  • 设动作块预测时域为 H H H,执行时域为 s s s s < H s < H s<H,保证动作重叠)
  • 最大推理延迟为 d max ⁡ ∈ [ 0 , H − s ) d_{\max} \in [0, H-s) dmax[0,Hs),单位为时间步
  • 训练时,对每个样本随机采样延迟 d ∼ Uniform ( 0 , d max ⁡ ) d \sim \text{Uniform}(0, d_{\max}) dUniform(0,dmax)

噪声掩码策略

  • 标准流匹配目标: L f m = E [ ∥ v ρ f l o w ( z t , a t τ , τ ) − ( ϵ − a t ) ∥ ] \mathcal{L}_{fm} = \mathbb{E}\left[\|v_{\rho}^{flow}(\mathbf{z}_t, \mathbf{a}_t^{\tau}, \tau) - (\epsilon - \mathbf{a}_t)\|\right] Lfm=E[vρflow(zt,atτ,τ)(ϵat)]
  • RTC修改:将动作块前 d d d 个token的扩散噪声直接替换为已执行动作的真实值,并在损失计算中 掩码(mask out) 这些token
  • 这强制模型学习:基于已确定执行的动作前缀,预测与之平滑衔接的后续动作

与测试时RTC的对比

方法 原理 缺点 Ψ₀选择
测试时RTC 推理时用梯度引导,强制动作连续性 需要迭代优化,增加推理延迟,不稳定 ❌ 未采用
训练时RTC 训练时模拟延迟,模型原生学习平滑性 无需额外推理开销,稳定性高 采用
实际效果:从"卡顿抖动"到"丝滑执行"
  • 有RTC:连续动作块之间的偏差被强烈抑制(图4红色线),机器人运动平滑,能稳定完成2000+步的长时程任务
  • 无RTC:动作切换点出现大幅跳变(图4青色线),导致抖动、卡顿,甚至物理碰撞

RTC是Ψ₀能在真实世界部署的必备基础优化,没有它,大模型的推理延迟将使长时程任务无法完成。

如果上面看不太懂,没关系,看下面的,更通俗易懂

A、先理解核心矛盾:模型推理需要时间,但机器人不能停
时间线对比
理想情况(无限算力,推理时间为0,控制频率30Hz≈33ms/步,动作生成之间没有时间相隔):
时间: 0ms    33ms   66ms   100ms  133ms  166ms
动作: [====动作块A====][====动作块B====][====动作块C====]
执行: ↑执行A↑          ↑执行B↑          ↑执行C↑
      无缝衔接,完美!

现实情况(Ψ₀推理耗时160ms,控制频率30Hz≈33ms/步):
时间: 0ms    33ms   66ms   100ms  133ms  166ms  200ms
动作: [====动作块A====]
执行: ↑执↑行↑A↑(前3步)  ???    ???    ???    [====动作块B====]
                          ↑机器人卡住!↑      ↑执行B↑
                          
问题:从第4步到第6步,机器人没有新动作,只能"停"

关键洞察:推理160ms ≈ 5个控制周期,机器人执行完动作块A的前几节后,必须等待新动作块B生成,这段时间机器人只能冻结或重复旧动作,导致抖动。


B、RTC的解决思路:让动作块"重叠",平滑过渡
核心思想:动作块A还没执行完,就开始生成动作块B
无RTC(动作块不重叠):
动作块A: [a0, a1, a2, a3, a4, a5, a6, a7]  (8步)
执行:    [↑↑↑↑↑↑↑↑]  执行完A,停!等B生成...

动作块B:                          [b0, b1, b2, b3, b4, b5, b6, b7]
执行:                             [↑↑↑↑↑↑↑↑]  执行完B,停!等C...

问题:A和B之间有空档,机器人"停-启"抖动
有RTC(动作块重叠,执行s步,预测H步,s < H):
动作块A: [a0, a1, a2, a3, a4, a5, a6, a7]  H=8步
执行:    [↑↑↑]                          只执行前s=3步

动作块B:      [b0, b1, b2, b3, b4, b5, b6, b7]  
             ↑b0=a3, b1=a4, b2=a5↑           (与前3步重叠)
执行:         [↑↑↑]                          执行前3步...

动作块C:           [c0, c1, c2, c3, c4, c5, c6, c7]
                  ↑c0=b3, c1=b4, c2=b5↑
执行:              [↑↑↑]...

效果:机器人永远有动作执行,不会"停"!

C、RTC的关键:训练时就要"教"模型怎么重叠
为什么不能只在推理时做重叠?

如果只在推理时简单拼接,会出现动作不连续

 naive重叠(无RTC训练):
动作块A最后3步: [0.5, 0.6, 0.7] (某个关节角度)
动作块B前3步:  [0.2, 0.3, 0.4] (模型预测,不知道A的结尾)

拼接点: ...0.6, 0.7 | 0.2, 0.3...  
              ↑跳变!从0.7跳到0.2,机器人抖动
无RTC的问题:两次预测"各说各话"
第1次预测(t=0时刻):
观察图片 + 指令"拿杯子" → 模型输出动作块A
动作块A: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]  (某个关节角度值)

执行: [0.1, 0.2, 0.3]  ← 执行前3步,机器人手臂移动到0.3

160ms后,第2次预测(t=160ms时刻):
观察新图片 + 指令"拿杯子" → 模型输出动作块B
动作块B: [0.25, 0.15, 0.35, 0.45, 0.55, 0.65, 0.75, 0.85]

问题出现了!
第1次预测的第3步是 0.3
第2次预测的第0步是 0.25

拼接: ...0.2, 0.3 | 0.25, 0.15...
                 ↑跳变!从0.3降到0.25,机器人会"抖"一下

为什么会这样?

  • 两次预测时,模型不知道对方预测了什么
  • 各自独立优化,没有"连续性约束"
  • 就像两个人接力跑步,没有交接棒训练,容易掉棒

D、RTC训练:强制模型"交接棒"
核心思想:训练时,让模型看到"我已经执行到0.3了,请从0.3继续"
RTC训练的具体步骤:

1. 从训练数据中取一个真实动作块(ground truth):
   GT: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]

2. 随机选一个延迟d(比如d=2),模拟"已经执行了2步":
   已执行: [0.1, 0.2]  ← 确定已知,不再改变
   
3. 构造训练输入:
   - 前d=2步:用真实值 [0.1, 0.2](不加噪声,是确定的)
   - 后面6步:加噪声,变成 [0.35, 0.45, 0.55, 0.65, 0.75, 0.85](随机噪声)
   
   输入动作块: [0.1, 0.2, 0.35, 0.45, 0.55, 0.65, 0.75, 0.85]
              ↑已知    ↑从这里开始去噪

4. 模型任务:预测噪声,去噪后得到:
   预测输出: [0.1, 0.2, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
            ↑保持    ↑必须与0.2平滑衔接!

5. 损失计算:只算后面6步的误差,前2步mask掉(因为已经执行完了)
   Loss = || [-, -, 0.4-0.4, 0.5-0.5, 0.6-0.6, 0.7-0.7, 0.8-0.8, 0.9-0.8] ||
          ↑mask   ↑只算这些

E、对比图:无RTC vs 有RTC训练
无RTC训练(模型"蒙眼"预测)
训练样本:
输入: [???, ???, ???, ???, ???, ???, ???, ???]  (全是噪声,不知道上下文)
       ↓
模型: "我从头预测,随便生成一个合理的轨迹"
       ↓
输出: [0.15, 0.25, 0.35, 0.45, 0.55, 0.65, 0.75, 0.85]

问题:这个输出和上一次预测没关系!
上次预测结尾: 0.3
这次预测开头: 0.15
拼接跳变: 0.3 → 0.15 ❌
有RTC训练(模型"知道"从哪继续)
训练样本(d=2):
输入: [0.1, 0.2, ???, ???, ???, ???, ???, ???]  
       ↑已知起点  ↑要预测后面
       ↓
模型: "我已经在0.2了,必须从0.2平滑延续"
       ↓
输出: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]

验证:和上次预测完美衔接!
上次预测结尾: 0.2
这次预测开头: 0.2
拼接: 0.2 → 0.2 ✓ 无缝!

F、RTC的随机性:模拟各种延迟情况
训练时,每次随机选d(0到d_max之间):

样本1: d=0(刚启动,没有已执行动作)
输入: [???, ???, ???, ???, ???, ???, ???, ???]  (标准训练)

样本2: d=2(执行了2步)
输入: [0.1, 0.2, ???, ???, ???, ???, ???, ???]

样本3: d=5(执行了5步,快执行完了)
输入: [0.1, 0.2, 0.3, 0.4, 0.5, ???, ???, ???]

效果:模型学会在任何"已执行前缀"条件下,都能平滑延续!

H、部署时的实际流程
时间: 0ms                    160ms                  320ms
     ↓                        ↓                      ↓
观察: 看到杯子在桌上          看到手靠近杯子          看到手指接触杯子
     ↓                        ↓                      ↓
模型: 预测动作块A              预测动作块B             预测动作块C
     [a0,a1,a2,a3,a4,a5,a6,a7] [b0,b1,b2,b3,b4,b5,b6,b7] [c0,c1,c2,c3,c4,c5,c6,c7]
     ↓                        ↓                      ↓
RTC: 前0步已知(d=0)         前3步已知(d=3)         前3步已知(d=3)
     输入: [???...]           输入: [a0,a1,a2,???...]  输入: [b0,b1,b2,???...]
     ↓                        ↓                      ↓
执行: [a0,a1,a2]             [b0,b1,b2]              [c0,c1,c2]
     ↑↑↑                      ↑↑↑                     ↑↑↑
     实际: a0=0.1, a1=0.2, a2=0.3   b0=0.3, b1=0.4, b2=0.5   c0=0.5, c1=0.6, c2=0.7
           ↑注意!b0=a2=0.3           ↑注意!c0=b2=0.5
           
轨迹: 0.1 → 0.2 → 0.3 → 0.3 → 0.4 → 0.5 → 0.5 → 0.6 → 0.7
                      ↑无缝!              ↑无缝!

RTC训练 = 每次训练时,随机"冻结"动作块的前几帧为真实值,让模型学习"从这里往后怎么接",这样部署时就能用上一帧的结尾作为下一帧的开头,实现永不中断的平滑运动。

3.2、 定制化遥操作框架:解决高质量数据采集问题

待解决问题:现有遥操作系统的三大痛点

现有方案存在根本性缺陷,导致采集的微调数据质量低:

现有方案 问题 后果
端到端全身映射(如TWIST2) 直接映射人类全身动作,噪声大、易摔倒 数据不稳定,机器人频繁失衡
显式基座分离(如AMO) 需额外控制器或多操作员配合 操作复杂,数据一致性差
简化手部控制(用夹爪代替灵巧手) 丢失手指精细动作信息 无法完成拧瓶盖、拉抽屉等灵巧操作
核心技术细节:单操作员+三模块分离架构

Ψ₀设计了一套**“分而治之”**的遥操作框架(如下图所示),将全身控制解耦为三个独立模块,各用最优硬件采集:

┌─────────────────────────────────────────────────────────┐
│                    人类操作员(单人)                      │
├─────────────────┬─────────────────┬─────────────────────┤
│   上肢姿态模块   │   灵巧手部模块   │    下肢运动模块      │
├─────────────────┼─────────────────┼─────────────────────┤
│ PICO VR头显     │ MANUS数据手套   │ 腰部追踪器          │
│ + 手腕追踪器    │ (双手)          │ + 脚部追踪器        │
├─────────────────┼─────────────────┼─────────────────────┤
│ ↓ 逆运动学(IK)  │ ↓ 直接映射      │ ↓ 提取速度/朝向指令  │
│ 求解7+7=14DoF   │ 14DoF手指关节   │ 传递给System 0      │
│ 手臂+3DoF躯干   │ (每手7DoF)      │ (RL-based控制器)    │
└─────────────────┴─────────────────┴─────────────────────┘
                           ↓
              合并为36DoF动作指令 → 机器人执行

在这里插入图片描述

关键设计决策

  1. 上肢:IK求解而非直接映射

    • 人类与机器人手臂长度、关节限制不同,直接映射会导致奇异点
    • 用VR头显和手腕追踪器获取末端执行器位姿,通过IK求解机器人关节角,保证运动学可行性
  2. 手部:MANUS手套直接捕捉

    • 每手指3个关节,双手共14DoF
    • 直接映射到机器人灵巧手,保留全部精细操作能力
    • 解决视觉追踪的遮挡问题(手掌与物体自遮挡)
  3. 下肢:高层指令而非低层关节

    • 不直接控制15DoF腿部关节
    • 而是提取水平速度 ( v x , v y ) (v_x, v_y) (vx,vy)、偏航角速度 v y a w v_{yaw} vyaw、目标偏航 p y a w p_{yaw} pyaw、躯干姿态 t o r s o r p y torso_{rpy} torsorpy、基座高度 h b h_b hb 共8DoF指令
    • 传递给System 0(AMO的RL策略),由其负责稳定底层控制
实际效果:高质量数据的三大保障
保障 说明
稳定性 下肢由专用RL控制器负责,避免直接映射导致的摔倒
表达性 14DoF灵巧手控制,支持拧、拉、捏等精细操作
效率性 单操作员即可完成全身控制,数据采集成本大幅降低

采集的遥操作数据质量高、动作平滑、任务完成度高,为后续微调提供了优质的数据基础(每个任务80条轨迹)。


3.3、 MM-DiT动作头:解决动作-认知特征融合效率低问题

待解决问题:朴素DiT的"弱条件化"缺陷

传统朴素DiT(Diffusion Transformer)原本用于文本条件图像生成(如Stable Diffusion),直接迁移到VLA存在结构性缺陷:

朴素DiT架构(下面图b所示):

  • 视觉-语言(VL)特征仅作为Cross-Attention的K/V
  • 动作(A)特征通过Self-Attention处理
  • 问题:VL特征对动作的 conditioning 是"间接的",无法深度指导动作生成

在这里插入图片描述

这导致高精度操作任务(如拧水龙头需协调多关节、拉托盘需力控制)频繁失败。

核心技术细节:MM-DiT的双流联合设计

MM-DiT(Multi-Modal Diffusion Transformer)基于Stable Diffusion 3的架构,针对VLA场景做关键适配(图3a):

架构对比

组件 朴素DiT MM-DiT
时间条件化 仅调制动作特征 双流FiLM调制:分别调制VL特征和A特征
特征交互 Cross-Attention(VL→A单向) Joint Global Attention(VL↔A双向)
信息融合 浅层、单向 深层、双向、全局

技术细节展开

  1. 双调制FiLM(Feature-wise Linear Modulation)

    • 流时间步 τ \tau τ 的特征经过MLP后,生成缩放因子 γ \gamma γ 和偏置 β \beta β
    • 分别应用于VL分支和A分支 FiLM ( x , γ , β ) = γ ⊙ x + β \text{FiLM}(x, \gamma, \beta) = \gamma \odot x + \beta FiLM(x,γ,β)=γx+β
    • 这让视觉-语言特征和动作特征各自适配扩散过程的时间动态
  2. 联合全局注意力(Joint Global Attention)

    • 将VL token和A token拼接为统一序列
    • 在每个Transformer块中,执行全局自注意力(而非分离的Self-Attention + Cross-Attention)
    • 注意力权重计算: Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk QKT)V
    • 效果:VL特征和动作特征在每一层都深度交互,视觉-语言"认知"直接指导动作"生成"

数学流程

输入: VLM特征 z_t, 噪声动作 a_t^τ, 时间步 τ
      ↓
[VL分支] ← FiLM(τ) → [A分支]
      ↓                    ↓
   VL tokens             A tokens
      └────────┬───────────┘
               ↓
        Joint Global Attention
               ↓
        预测噪声 ε (即动作修正量)
实际效果:高精度灵巧操作的关键

消融实验(Table I)显示:

配置 右臂拾取 左臂拾取 双臂搬运 整体成功率
朴素DiT 1/10 1/10 1/10 0/10
MM-DiT 9/10 2/10 3/10 2/10
+ Post-Training 8/10 6/10 6/10 6/10
+ RTC 9/10 9/10 10/10 9/10
  • MM-DiT vs 朴素DiT:成功率从0%提升至20%+,是从"完全失败"到"基本可用"的关键跃迁
  • 在高精度任务(如Task 1拧水龙头、Task 8拉托盘)中,MM-DiT的优势更加明显

MM-DiT的深度特征融合能力,让VLM的"认知理解"真正转化为"精准关节控制",是实现灵巧操作的核心架构创新

分享完成~

还是推荐进行复现和实践部署:

《VLA 系列》复现 Ψ₀ | Psi0 | 通用人形机器人 | 移动操作模型

在这里插入图片描述

示例数据,双手协调,一手稳定,一手擦拭
在这里插入图片描述
双手协调,开始擦拭

在这里插入图片描述
在这里插入图片描述

后续继续更新~

Logo

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

更多推荐