GR00T 模型详解

生成日期: 2026-09-30

GR00T

基本信息

项目

内容

全称

Generalist Robot 00T (GR00T)

机构

Figure AI + NVIDIA

论文

GR00T 相关论文

架构

Transformer

动作类型

离散 Token

训练方式

模仿学习 + 规模扩展

模型架构图

输入图像 ──→ Vision Encoder ──→ 视觉Token ──┐
                                                ├──→ Transformer Backbone ──→ 动作Token
文本指令 ──→ Text Encoder ────→ 文本Token ────┘
机器人状态 ──→ State Encoder ──→ 状态Token ────┘

动作Token ──→ 动作解码 ──→ 连续动作

公式列表

公式 1:多视角图像编码

$$I_{token} = \text{VisionEncoder}(I_{cam_1} \oplus I_{cam_2} \oplus ...)$$

项目

内容

**输入**

多个相机的图像 $I_{cam_i} \in \mathbb{R}^{H \times W \times 3}$

**输出**

视觉Token序列 $I_{token} \in \mathbb{R}^{N \times D}$

**作用**

把多视角图像编码成统一表示

场景: 人形机器人有多个相机(头部、手部、胸部)

头部相机: 看到前方环境
手部相机: 看到手抓的物体
胸部相机: 看到更大范围

所有图像拼接后编码成统一的视觉Token

比喻: 人的多种感官协调

• 眼睛看(视觉)

• 手触摸(触觉)

• 耳朵听(听觉)

• 大脑合并成统一理解

变化:

之前: 3张独立图像 [3×224×224×3]
之后: 视觉Token序列 [N×D]

公式 2:文本指令编码

$$T_{token} = \text{TextEncoder}(instruction)$$

项目

内容

**输入**

文本指令 "pick up the cup"

**输出**

文本Token序列 $T_{token} \in \mathbb{R}^{M \times D}$

**作用**

把语言指令转成Token序列

场景: 输入 "pick up the cup"

输入: 4个单词
输出: 每个词 → D维向量
      [pick, up, the, cup] → [4×D]

与 RT-2/OpenVLA 的区别:

• GR00T 支持更长、更复杂的指令

• 可以处理多步骤指令

变化:

之前: "pick up the cup" (17字符)
之后: [4×D] 的向量序列

公式 3:机器人状态编码

$$S_{token} = \text{StateEncoder}(state)$$

项目

内容

**输入**

机器人状态(关节角度、末端位置等)$state \in \mathbb{R}^{K}$

**输出**

状态Token $S_{token} \in \mathbb{R}^{1 \times D}$

**作用**

把当前机器人状态编码成条件向量

场景: 人形机器人当前状态

关节角度: [20°, 45°, 30°, ...] (全身关节)
末端位置: [x, y, z] of each hand
力矩传感器: [τ₁, τ₂, ...]

编码后: 一个状态向量 [1×D]

比喻: 身体感觉

• 你闭着眼能感觉到自己的手在哪

• 机器人通过状态编码"感受"自己当前姿态

变化:

之前: [30, 45, 20, ...] (30个关节角度)
之后: [1×D] 状态向量

公式 4:多模态Token融合

$$X = [I_{token}; T_{token}; S_{token}]$$

项目

内容

**输入**

视觉Token + 文本Token + 状态Token

**输出**

融合后的序列 $X \in \mathbb{R}^{(N+M+1) \times D}$

**作用**

把图像、文本、状态拼成一个序列

场景: 执行 "pick up the cup"

视觉Token: [img_1, ..., img_N]      (N个)
文本Token: [pick, up, the, cup]     (4个)
状态Token: [current_state]          (1个)

融合: [img_1, ..., img_N, pick, up, the, cup, current_state]

公式: 简单拼接

$$X = \text{Concat}(I_{token}, T_{token}, S_{token})$$

比喻: 三块拼图拼成一幅画

• 视觉是背景拼图

• 文本是标题拼图

• 状态是框架拼图

• 三者合一形成完整画面

变化:

之前: 三串独立数据 [N×D], [M×D], [1×D]
之后: 一串融合数据 [(N+M+1)×D]

公式 5:动作Token嵌入

$$a_{token} = \text{ActionEmbed}(a_{continuous})$$

$$a_{token} = W_{action} \cdot a_{continuous} + b_{action}$$

项目

内容

**输入**

连续动作 $a_{continuous} \in \mathbb{R}^{A}$

**输出**

动作Token $a_{token} \in \mathbb{R}^{D}$

**作用**

把连续动作值嵌入到Token空间

场景: 把关节角度映射到Token空间

连续动作: [0.5, 0.3, 0.8, ...] (各关节角度)
嵌入后: [0.1, 0.9, 0.2, ...] (D维Token)

为什么需要嵌入?

• 连续动作值范围小(通常是-1到1)

• Token空间维度大(D维)

• 通过嵌入让动作和图像、文本在同一个空间比较

比喻: 翻译

• 动作"0.5弧度"像是中文

• Token空间像是英文

• 嵌入层像是中英词典

变化:

之前: 动作值 [0.5, 0.3, 0.8] - 具体的数值
之后: 动作Token [0.1, 0.9, 0.2, ...] - 语义向量

公式 6:Transformer前向传播

$$H = \text{TransformerBlock}(X)$$

$$H' = \text{LayerNorm}(H + \text{Attention}(H))$$

项目

内容

**输入**

融合Token序列 $X$

**输出**

隐层表示 $H$

**作用**

通过自注意力融合多模态信息

场景: 处理 "pick up the cup"

输入序列包含:
  - 视觉Token(看到杯子)
  - 文本Token(指令是拿起杯子)
  - 状态Token(手在左边)

自注意力让模型学会:
  - 文本"cup"关注视觉中杯子的位置
  - 状态"hand"关注手的位置
  - 输出要生成"伸手拿杯子"的动作

Attention计算:

$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d}}\right) V$$

比喻: 开会讨论

• 每个人提出自己看法(Query)

• 其他人评价这个看法值多少分(Key)

• 根据分数加权平均得到结论(Value)

变化:

之前: 独立的三类Token [img][text][state]
之后: 交互融合后的表示 [img+text+state的混合]

公式 7:动作预测(分类)

$$P(a_{next}) = \text{softmax}(W_{action} \cdot H[-1] + b_{action})$$

项目

内容

**输入**

Transformer输出的最后一个Token $H[-1]$

**输出**

下一个动作Token的概率分布

**作用**

预测下一个动作

场景: 预测下一个动作

输入: 融合序列 [img,...,text,...,state]
     ↓ Transformer
输出: 最后一个Token的表示 H[-1]
     ↓ 动作头
概率分布: [0.01, 0.01, ..., 0.45(at Token 88), ..., 0.01]

Token 88 = "hand reaches forward"

公式: 动作空间有V个可能的动作Token

$$P(a = v | X) = \frac{\exp(w_v^T H[-1] + b_v)}{\sum_{u} \exp(w_u^T H[-1] + b_u)}$$

比喻: 智能输入法联想

• 输入"今天天气"

• 候选: "很好"(45%), "不错"(30%), "糟糕"(10%)

• 选择概率最高的候选词

变化:

之前: Token序列的表示 H[-1]
之后: 动作概率分布 [V]

公式 8:动作Token解码

$$a_{continuous} = \text{ActionDecode}(a_{token})$$

项目

内容

**输入**

预测的动作Token ID

**输出**

连续动作值

**作用**

把Token变回可执行的动作

场景: Token 88 对应的动作

Token 88 的动作值:
  左臂关节1: +0.1 弧度
  左臂关节2: +0.05 弧度
  左手: 张开 0.8 (80%)

这些值送到机器人执行

与RT-2/OpenVLA的区别:

• GR00T 的动作词表可能更大

• 支持更多种类的机器人动作

变化:

之前: Token ID = 88
之后: 关节角度 [0.1, 0.05, ...]

公式 9:跨形态适配(LoRA)

$$W'_{ij} = W_{ij} + \alpha \cdot \Delta W_{ij}$$

$$\Delta W = B \cdot A, \quad B \in \mathbb{R}^{d \times r}, A \in \mathbb{R}^{r \times k}$$

项目

内容

**输入**

预训练权重 $W$ + 低秩适配 $\Delta W$

**输出**

适配后的权重 $W'$

**作用**

一个模型适配多种机器人形态

场景: 预训练模型要适配新机器人

预训练: 在人形机器人数据上训练
微调: 只需要更新低秩矩阵 A, B
      而不是整个 W

这样可以:
- 保留大部分预训练知识
- 快速适配新机器人形态

LoRA的核心思想:

• 原始权重 $W \in \mathbb{R}^{d \times k}$

• 冻结 $W$,只训练 $A, B$

• $W' = W + \alpha \cdot BA$

• 参数量从 $d \times k$ 降到 $d \times r + r \times k$

比喻: 微调而不是重学

• 学会游泳后学自由泳:保留腿部动作,只需调整手部

• LoRA: 保留大部分神经连接,只调整一小部分

变化:

之前: 需要更新整个模型 (70亿参数)
之后: 只需更新小部分 (如1000万参数)

完整数据流程

1. 输入
   图像: 3个相机视角
   文本: "pick up the cup"
   状态: 人形机器人当前关节角度

        ↓ 各 encoder (公式1,2,3)
2. 分别编码
   视觉Token: [N×D]
   文本Token: [M×D]
   状态Token: [1×D]

        ↓ Token融合 (公式4)
3. 融合序列
   X: [(N+M+1)×D]

        ↓ 动作嵌入 (公式5)
4. 加入动作Token
   (用于训练时 teacher forcing)

        ↓ Transformer前向 (公式6)
5. 多模态融合
   H: 融合后的表示

        ↓ 动作预测 (公式7)
6. 动作概率
   P(a): [V] 维概率分布

        ↓ 动作解码 (公式8)
7. 执行
   Token → 连续动作 → 机器人

公式汇总表

#

公式

输入

输出

解决什么问题

1

$I_{token} = \text{VisionEncoder}(I_{cams})$

多视角图像

视觉Token

多相机如何统一理解

2

$T_{token} = \text{TextEncoder}(text)$

文本指令

文本Token

语言指令如何理解

3

$S_{token} = \text{StateEncoder}(state)$

机器人状态

状态Token

自身状态如何编码

4

$X = [I_{token}; T_{token}; S_{token}]$

三种Token

融合序列

多模态如何合并

5

$a_{token} = W_{action} \cdot a + b$

连续动作

动作Token

动作如何进入模型

6

$H = \text{TransformerBlock}(X)$

融合序列

隐层表示

信息如何交互融合

7

$P(a) = \text{softmax}(W_a \cdot H[-1])$

隐层表示

动作概率

下一个动作是什么

8

$a = \text{ActionDecode}(a_{token})$

Token ID

连续动作

Token变回动作值

9

$W' = W + \alpha \cdot B \cdot A$

预训练权重

适配后权重

如何快速适配新机器人

场景比喻总结

公式

生活比喻

一句话

1. 图像编码

多角度看物体

多个相机合并成一个理解

2. 文本编码

听指令

文字变成任务向量

3. 状态编码

身体感觉

关节角度变成状态向量

4. Token融合

开会汇报

三方面信息拼成一股

5. 动作嵌入

翻译

动作值变成Token语言

6. Transformer

头脑风暴

通过讨论融合信息

7. 动作预测

联想填空

看上下文猜下一个动作

8. 动作解码

执行指令

Token变回具体动作值

9. LoRA适配

快速学习

只学新东西,保留老经验

Logo

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

更多推荐