枢纽
机器人双臂 (bimanual)、多种本体
数据集1M+ multi-robot episodes
上真机
实时
输入模态vision,language,proprioception

RDT-1B:双臂操作的「扩散基础模型」

Songming Liu, Lingxuan Wu, Bangguo Li, Hengkai Tan 等(清华大学,朱军/苏航组)。ICLR 2025 / arXiv:2410.07864。 VLA 基础模型diffusion transformer线索 T06

🧠 一句话心智模型:双臂操作太复杂——同一目标可能有「左手抓 / 右手抓 / 双手合抓」多种解,动作分布是多峰的。回归类方法会把它们「平均」成四不像。RDT-1B 用 1B 参数的扩散 Transformer 来表示这种多峰分布,并在 1M+ 多机器人轨迹上预训练,让一个模型既能 zero-shot 认识新物体,又能 1~5 shot 学会新技能。

🎯 为什么重要:双臂 ≠ 单臂 × 2

直觉上「双臂就是两个单臂」,但实际不是。双臂动作空间翻倍,多模态性爆炸——同一个「抓杯子」任务,可能左手先动、可能右手先动、可能双手同时合抱。这意味着:

核心矛盾:现有的 VLA 基础模型——OpenVLA(7B,离散化动作 token)、Octo(93M,扩散但太小)、ACT(VAE,表达力弱)——在双臂任务上都不行。原因各异:离散化丢精度、模型太小、VAE 表达不了多峰。RDT 的目标:既要扩散级表达力,又要Transformer 级可扩展性,还要能吃异构多机器人数据

更难的是数据:双臂系统贵、数据少(<10K 轨迹),远不够训基础模型。RDT 的解法:用单臂数据预训练 + 双臂数据 fine-tune——这要求解决「不同机器人动作空间不一样」的难题。

💡 核心思想:扩散 Transformer + 统一动作空间

RDT 用 Diffusion Transformer(DiT)作骨干——把噪声动作块当作 token 序列,让 Transformer 学「去噪」。但直接照搬图像 DiT 会炸,所以做了 3 个针对机器人数据的关键修改 + 1 个数据层创新:

多模态输入 📷 3 相机 × 2 帧(SigLIP) 💬 语言(T5-XXL) 🎛️ 本体 z_t 🌫️ 噪声动作块 Diffusion Transformer(DiT,1B 参数) ① QKNorm + RMSNorm 替代 LayerNorm,避免数值爆炸 ② MLP Decoder 替代 linear,捕获非线性 ③ Alternating Condition Injection(ACI) 奇数层注入图像、偶数层注入语言,避免语言被图像淹没 扩散去噪:从 a_K → a_0,K=100(推理时 DPM-Solver++ 压到 5 步) 动作块 a_{t:t+T_a} 🔑 物理可解释统一动作空间:把各机器人的动作「按物理意义填进固定槽位」(EEF pos/rot, gripper, joints...)
图 1:RDT 架构。DiT 主干 + 3 个针对机器人数据的修改 + 一个统一动作空间。预训练时 SigLIP/T5-XXL 冻结(省 GPU),只训 DiT。

扩散目标(MSE 形式):

$$\mathcal{L}(\theta) := \mathrm{MSE}\left(a_t,\ f_\theta\left(\ell, o_t,\ \sqrt{\bar\alpha_k} a_t + \sqrt{1-\bar\alpha_k}\epsilon,\ k\right)\right)$$

和原版 DDPM 一样,但 $f_\theta$ 换成了 1B 参数的 DiT,而且输入动作来自统一动作空间

🛠️ 四个让它「真跑通」的设计

设计心智为什么必要
① QKNorm + RMSNormQK 归一化避免 attention 爆炸;RMSNorm(无 centering)替代 LayerNorm机器人动作数值范围不稳定(极端传感器值),1B 模型用 LayerNorm 训练会爆炸;RMSNorm 保留时间序列的对称性(论文 Fig.4a:无此修改 loss 飞天)
② MLP Decoder最后从 latent 映射到动作空间,用 MLP 替代单层 linear动作有强非线性(碰撞、阻尼),linear decoder 表达不了——完整 RDT 在「机器狗直行」达 48%(Table 3,ACT 仅 32%);Fig.4b(无预训练消融)显示去掉 MLP decoder 后灵巧任务明显掉点
③ Alternating Condition Injection(ACI)Transformer 不同层交替注入图像/语言条件,而不是每层都同时注入图像 token 数远多于语言 token;同时注入会让语言信号被淹没——「倒 1/3 水」这种细粒度指令就听不懂了
④ 物理可解释统一动作空间所有机器人的动作都映射到同一个固定维度向量,按物理意义(末端位姿、夹爪状态、关节角...)填槽,多余槽位 padding46 个数据集的机器人结构千差万别,统一后才能在一个 batch 里训;保留物理意义让模型能跨机器人迁移物理常识(比如「夹爪闭合」在每个机器人都是同一个槽)
🔮 直觉:为什么「统一动作空间」是 cross-robot 训练的关键?
过去做法(RT-X 等)要么丢掉结构不一样的机器人,要么只保留跨机器人不变的特征(比如末端位姿,丢掉关节角)。RDT 反其道:保留所有信息,按物理意义填到固定向量里。比如「左臂末端 XYZ」「右夹爪开合」每个机器人都有对应槽位,没有的就 padding。这样模型既能学「夹爪闭合」的通用物理意义,又能学某个机器人的特有结构——数据多样性 + 物理可迁移性两不误。

📊 结果:7 个真机任务,比基线提升 56%

任务考察维度RDT 成绩最强基线
Wash CupUnseen Objectseen 50% / unseen-cup1 75% / unseen-cup2 50%(Total 列)ACT 0%, OpenVLA 0%, Octo 0%
Pour WaterUnseen Scene3 个 unseen 房间:62.5/100/62.5%ACT 12.5-37.5%
Pour Water-L-1/3Instruction Following正确手 100% + 正确量 100%(R-2/3:87.5% / 75%)OpenVLA 0/0, Octo 0/0
Handover5-Shot Learning40%ACT 0%, RDT-scratch 16%
Fold Shorts1-Shot Learning68%ACT 0%, Octo 4%
Robot DogDexterity(推摇杆直行)48%ACT 32%, RDT-scratch 32%
维度数字(来自 PDF)
模型规模1.2B 参数(最大双臂扩散基础模型)
预训练数据46 个数据集 / 1M+ 轨迹 / 21TB(OXE 等多机器人)
fine-tune 数据6K+ 双臂轨迹,300+ 任务,100+ 物体,15+ 房间,GPT-4 重写指令
预训练算力48 × H100 80GB,1 个月,1M iter
fine-tune 算力48 × H100,3 天,130K iter
推理DPM-Solver++ 把 100 步压到 5 步;action chunk 6Hz,平均动作 381Hz(RTX 4090 24GB)
目标机器人ALOHA 双臂(两个 6-DoF ViperX 臂 + 3 相机)
消融Unseen ObjectUnseen SceneInstr Following
RDT(完整)5062.5100
RDT w/o diffusion(回归)12.55012.5
RDT small(166M)37.562.525
RDT w/o pre-training(scratch)02562.5
关键洞察:消融说明三件事缺一不可——扩散(多模态表达)、规模(1B vs 166M)、预训练(迁移知识)。特别是 RDT-scratch 在 unseen object/scene 上几乎全跪——说明泛化能力几乎全部来自大规模预训练。这跟 LLM 的「scale is all you need」如出一辙。

🌐 在领域中的位置

Diffusion Policy(小模型,单任务) Octo(93M,扩散基础模型,太小) OpenVLA(7B,离散动作 token,双臂不行) RDT-1B(1B 扩散 Transformer + 统一动作空间)⭐

RDT-1B 是双臂操作的「扩散基础模型」里程碑。它证明:双臂的多模态性需要扩散来表达,规模化需要 Transformer 来吃大数据,跨机器人训练需要统一动作空间。三件事一起做,才能在 ALOHA 上跑出 zero-shot 泛化。关联线索:T06 VLA 谱系

❓ 常见误区

RDT 和 π0 都是 2024 年的 VLA,啥区别?

π0 用 flow matching(扩散的近亲,10 步),RDT 用 标准 DDPM 扩散(100 步推理,DPM-Solver 压到 5 步)。π0 是 VLM 主干(继承 PaliGemma 语义),RDT 是纯 DiT(用冻结的 T5-XXL/SigLIP 当编码器)。规模上 π0 3.3B、RDT 1.2B。π0 强在超长任务(叠衣服 20 分钟),RDT 强在开源 + 双臂专门设计 + 统一动作空间

为什么不直接用 OpenVLA(7B)?

OpenVLA 把动作离散化成 token——单臂还行,双臂时精度损失严重(多峰分布被离散化扭曲)。论文 Table 3 显示 OpenVLA 在 Wash Cup、Pour Water 等 5 个任务上全部 0% 成功率

1M 轨迹预训练是不是很贵?

48 张 H100 80GB 跑 1 个月——很贵。但相比 LLM 的预训练(万卡级),这还是机器人圈的小规模。论文开源了模型权重和数据,让后来者可以 fine-tune 而不必重训。

统一动作空间会不会浪费维度?

会,多余槽位 padding。但论文实验显示保留物理意义比「丢掉不一致的机器人」更好——padding 是「我不知道」,丢掉是「我假装它不存在」。前者让模型跨机器人迁移,后者把数据多样性砍掉一半。