GR00T 模型详解
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适配 |
快速学习 |
只学新东西,保留老经验 |
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)