AgiBot World Colosseo: A Large-scale Manipulation Platform for Scalable and Intelligent Embodied Systems
Authors: Team AgiBot-World (Qingwen Bu, Guanghui Ren, Chiming Liu, Modi Shi, Chengen Xie, Xindong He, Jianheng Song, Yuxiang Lu, Siyuan Feng, et al.) Affiliations: The University of Hong Kong, AgiBot Inc., Shanghai Innovation Institute, Shanghai AI Lab arXiv: 2503.06669 Project Page: agibot-world.com GitHub: OpenDriveLab/AgiBot-World
1. Motivation (研究动机)
- 机器人数据规模不足: 与自然语言和计算机视觉领域数据的丰富程度相比,机器人操作数据严重匮乏。现有数据集如 BridgeData (7.2k trajectories)、DROID (55k trajectories) 规模有限,且多局限于简单的 pick-and-place 任务
- 数据质量和多样性差: 现有数据集面临硬件异构、采集流程不标准、缺乏人工质量验证等问题,导致数据质量参差不齐。大多数数据集使用单臂机器人在受控实验室环境中采集,缺乏真实世界的复杂性和多样性
- Generalist Policy 能力有限: 现有通用策略(如基于 Open X-Embodiment 训练的模型)受限于短时域任务和实验室环境,无法很好地泛化到真实世界的复杂操作任务(如精细操作、工具使用、多机器人协作)
- 缺乏统一的大规模平台: 现有工作要么只提供数据集,要么只提供模型或 benchmark,缺少一个集数据、模型、工具链和 benchmark 于一体的全栈平台
本文目标: 构建 AgiBot World——一个包含超过 100 万条轨迹、横跨 217 个任务的大规模机器人操作学习平台,并提出 GO-1 (Genie Operator-1) 通用策略模型,通过 latent action representation 桥接 web-scale 数据和机器人控制。
2. Idea (核心思想)
核心洞察: 通过标准化硬件(100+ 同构双臂人形机器人)和标准化数据采集流程(含 human-in-the-loop 质量验证),可以构建数量级提升的高质量机器人数据集;进而提出层次化的 Vision-Language-Latent-Action (ViLLA) 框架,利用 latent action 作为中间表示,实现从 web-scale 视频数据到机器人控制的高效知识迁移。
关键创新:
- 数据层面: 构建了迄今最大的单一平台机器人操作数据集(1M+ 轨迹),涵盖家居、零售、工业、餐厅、办公五大真实场景
- 模型层面: 提出 GO-1,通过三阶段训练(Latent Action Model → Latent Planner → Action Expert),将 VLM 的通用推理能力与机器人控制解耦,实现高效的长时域规划和精细操作
与现有方法的根本区别: 传统 VLA 模型(如 OpenVLA)直接预测离散化的 low-level action,action space 维度高、VLM 难以有效学习。GO-1 引入 latent action 作为中间桥梁,让 VLM(Latent Planner)只需预测低维 latent action tokens,再由专门的 Action Expert 通过 diffusion 解码为连续控制信号,实现了规划与执行的有效分离。
3. Method (方法)
3.1 Overall Framework
Figure 1 解读: 该图展示了 AgiBot World 平台的全貌。左上展示了数据规模——超过 1M 轨迹、3000+ 物体、217 个任务,相比 BridgeDataV2、DROID、RT-1 有 7.7 倍的数量级提升。中上展示了 human-in-the-loop 的数据采集流程(远程操控 + 人工审核)。右上展示了五大场景(机器人、双臂操作、物流、工具使用、视触觉)。左下是硬件平台 AgiBot G1(配备 RGBD 相机、视触觉传感器、6-DoF 灵巧手、双臂人形设计)。中下是 GO-1 模型架构(VLM → Latent Planner → Action Expert)。右下展示了训练中心(100+ 机器人)和完全开源的特性。
3.2 数据采集平台
硬件平台 AgiBot G1:
- 双 7-DoF 机械臂 + 移动底盘 + 可调腰部
- 模块化末端执行器:标准夹持器或 6-DoF 灵巧手
- 8 个相机:1 个前视 RGB-D、3 个鱼眼(前视/左右手 RGB-D 或鱼眼)、2 个后方鱼眼
- 视触觉传感器(用于需要触觉反馈的任务)
- 30 Hz 控制频率
远程操控系统: VR 头盔控制 + 全身动捕系统。VR 控制器映射手势到末端执行器平移/旋转,动捕系统记录人手关节数据并映射到机器人姿态。
Figure 2 解读: 数据采集流程分为三个阶段:(1) Edge-side 数据采集——远程操控员训练后进行数据采集,本地进行有效性验证;(2) Cloud-side 处理——数据上传后进行标注、质量检查(human-in-the-loop),通过则进入数据交付和模型训练,失败则进行失败原因分类并反馈改进采集流程;(3) 特别包含 failure recovery 机制——操控员操作失误后可恢复并继续完成任务,这些数据也被保留并标注。
数据质量保证:
- Failure Recovery 数据: 约占数据集 1% 的失败恢复轨迹,标注了失败原因和时间戳,可用于 policy alignment 和 failure reflection
- Human-in-the-loop: 迭代式地采集少量演示 → 训练策略 → 部署评估 → 发现问题 → 改进采集流程
3.3 数据集统计
Figure 3 解读: (a) AgiBot World 涵盖家居、零售、工业、餐厅、办公五大域,提供真实世界场景而非受控实验室。(b) 长时域操作——AgiBot World 轨迹主要在 30-60 秒,而 DROID 在 5-20 秒、OXE v1.0 主要在 5 秒内。(c) 广泛的技能覆盖——涵盖多种 atomic skills,每种至少有 100 条轨迹(红色虚线)。
数据集规模:
- 最新版本: 1,001,552 条轨迹
- 总时长: 2976.4 小时
- 217 个任务、87 个技能、106 个场景
- 4000 平方米采集设施,3000+ 独特物体
- Beta 版: ~43.8TB; Alpha 版(约 10% 子集): 92,214 条轨迹, ~8.5TB
3.4 GO-1 模型架构 (ViLLA Framework)
Figure 4 解读: GO-1 采用三阶段训练的 ViLLA (Vision-Language-Latent-Action) 框架:
- Stage 1 (Latent Action Model, LAM): 在 web-scale 异构数据(Ego4D 人类视频 + Cross-Embodiment Robot Data + AgiBot World)上训练 encoder-decoder,将连续帧映射为离散 latent action tokens,再从 latent tokens 重建未来帧。这提供了通用的 action representation。
- Stage 2 (Latent Planner): 基于预训练 VLM (InternVL2.5-2B),接收多视角图像和语言指令,预测 latent action tokens。LAM encoder 生成的 latent action 作为伪标签进行监督。
- Stage 3 (Action Expert): 与 Latent Planner 联合训练的 diffusion-based action decoder,以 VLM key-value cache 和 latent action tokens 为条件,通过迭代去噪生成连续的 low-level action chunks。
3.4.1 Latent Action Model (LAM)
LAM 由 inverse dynamics model-based encoder 和 forward dynamics model-based decoder 组成:
- Encoder: — 输入当前帧和未来帧,输出 latent action tokens
- 使用 spatial-temporal transformer,带 causal temporal masks
- Decoder: — 输入当前帧和 latent action tokens,重建未来帧
- 使用 spatial transformer
- Latent Action Tokens: ,
- 量化: 使用 VQ-VAE objective,codebook 大小
3.4.2 Latent Planner
- VLM Backbone: InternVL2.5-2B(InternViT 视觉编码器 + 24 层 transformer)
- 输入: 多视角图像 (头部、左手、右手)+ 语言指令
- 输出: Latent action tokens
- 监督: LAM encoder 基于头部视角生成伪标签
- 训练方式: Masked language modeling(预测离散 latent action tokens)
- 优势: Latent action space 比离散化的 low-level action 小几个数量级,有利于 VLM 高效学习
3.4.3 Action Expert
- 目标: 将离散的 latent action tokens 解码为连续的 low-level robot action
- 架构: 与 Latent Planner 共享相同的 transformer 架构(基于 InternLM2,减半维度)
- 输入: Action chunks ()+ proprioceptive state
- 条件信息: VLM key-value cache + Latent Planner 生成的 latent action tokens
- 训练方式: Diffusion objective
Diffusion Training Loss:
其中 包含 VLM key-value cache 和 latent action tokens 提供的条件信息。实际实现中使用 sample prediction type,即直接预测去噪后的 clean sample:
推理流程: 使用 DPMSolver scheduler 进行迭代去噪,从随机噪声出发,逐步生成 action chunk。
3.5 Pseudocode
Algorithm: Latent Action Model (LAM) Training — Stage 1
# Input: Video frames {I_t, I_{t+H}} from heterogeneous sources
# Output: Trained encoder I() and decoder F()
# Encoder: inverse dynamics model (spatial-temporal transformer)
z_t = LAM_Encoder(I_t, I_{t+H}) # [batch, k] latent tokens, k=4
z_t_quantized = VQ_VAE_quantize(z_t, codebook_size=|C|)
# Decoder: forward dynamics model (spatial transformer)
I_hat_{t+H} = LAM_Decoder(I_t, z_t_quantized)
# Loss: reconstruction + VQ commitment
loss = reconstruction_loss(I_hat_{t+H}, I_{t+H}) + vq_commitment_loss(z_t, z_t_quantized)Algorithm: Latent Planner Training — Stage 2
# Input: Multiview images (I_h, I_l, I_r), language instruction l
# Output: Predicted latent action tokens
# Generate pseudo-labels from frozen LAM encoder (head view only)
z_target = frozen_LAM_Encoder(I_t_h, I_{t+H}_h) # [batch, k=4]
# VLM backbone: InternVL2.5-2B
visual_tokens = InternViT(I_h, I_l, I_r) # encode multiview images
visual_tokens = pixel_shuffle_downsample(visual_tokens)
text_tokens = Tokenizer(l)
# Latent Planner forward (masked language modeling)
input_seq = [visual_tokens, text_tokens, <latent_action_tokens>]
z_pred = LatentPlanner(input_seq) # predict k discrete tokens
loss = cross_entropy(z_pred, z_target) # masked LM lossAlgorithm: Action Expert Training — Stage 3
# Input: Action chunk A_t = [a_t, ..., a_{t+H}], H=30, state p_t
# Output: Trained diffusion-based action decoder
# 1. Get VLM key-value cache from frozen VLM + Latent Planner
vlm_kv_cache = VLM_forward(I_h, I_l, I_r, l)
latent_kv, latent_tokens = LatentPlanner.latent_action_process(vlm_kv_cache)
# Project VLM KV cache dimensions: 128 -> action_expert_dim
projected_kv = k_proj(latent_kv), v_proj(latent_kv)
# 2. Diffusion forward process
noise = torch.randn_like(A_t)
timestep = random_uniform(0, num_train_timesteps)
A_noisy = noise_scheduler.add_noise(A_t, noise, timestep)
# 3. Embed inputs
state_embed = state_encoder(p_t) # proprioceptive state
action_embed = action_encoder(A_noisy) # noisy action chunk
time_embed = timestep_encoder(timestep)
freq_embed = frequency_encoder(control_freq)
# 4. Concatenate: [state, time, freq, action_tokens]
input_tokens = concat([state_embed, time_embed, freq_embed, action_embed])
# 5. Action Expert forward (conditioned on projected VLM KV cache)
output = ActionExpert(input_tokens, vlm_key_values=projected_kv)
A_pred = output_projection(output[:, -H:, :]) # extract action tokens
# 6. Loss (sample prediction: predict clean action directly)
loss = F.mse_loss(A_pred, A_t)Algorithm: GO-1 Inference
# Input: Multiview images, language instruction, proprioceptive state
# Output: Action chunk A_t = [a_t, ..., a_{t+H}]
# 1. VLM + Latent Planner: predict latent action tokens
vlm_kv = VLM_forward(I_h, I_l, I_r, l)
latent_kv, z_pred = LatentPlanner(vlm_kv)
projected_kv = project_kv(latent_kv)
# 2. Action Expert: iterative denoising (DPMSolver)
A_noisy = torch.randn(batch, H, action_dim) # random init
for t in reversed(scheduler.timesteps):
input_tokens = build_input(state, A_noisy, t, freq)
A_denoised = ActionExpert(input_tokens, vlm_key_values=projected_kv)
A_noisy = scheduler.step(A_denoised, t, A_noisy) # DPMSolver step
A_final = A_noisy # final denoised action chunk3.6 Code-to-Paper Mapping Table
| Paper Concept | Source File | Key Class/Function |
|---|---|---|
| GO-1 整体模型 | go1/internvl/model/go1/modeling_go1.py | GO1Model |
| Action Expert | go1/internvl/model/go1/modeling_action_expert.py | ActionExpertModel |
| Latent Planner | go1/internvl/model/go1/modeling_latent_action_expert.py | LatentPlannerModel |
| GO-1 配置 | go1/internvl/model/go1/configuration_go1.py | GO1Config |
| Action Expert 配置 | go1/internvl/model/go1/configuration_action_expert.py | ActionExpertConfig |
| VLM Backbone (InternLM2) | go1/internvl/model/internlm2/modeling_internlm2.py | InternLM2ForCausalLMGO1 |
| 训练入口 | go1/internvl/train/go1_train.py | 主训练脚本 |
| 数据集处理 | go1/internvl/train/dataset.py | 数据加载和预处理 |
| LeRobot 数据接口 | go1/lerobot/dataset_lerobot.py | LeRobot 格式数据集 |
| Diffusion Loss | go1/internvl/model/go1/modeling_go1.py | calc_action_diffusion_loss() |
| 推理去噪 | go1/internvl/model/go1/modeling_go1.py | condition_sample() |
| KV Cache 投影 | go1/internvl/model/go1/modeling_go1.py | k_proj_layers, v_proj_layers |
4. Experimental Setup (实验设置)
数据集
- AgiBot World Alpha: ~92k 轨迹(约 10% 子集,~236h)
- AgiBot World Beta: ~1M 轨迹(完整版,~2976h)
- 对比数据集: Open X-Embodiment (OXE, ~1.4M 轨迹, ~2000h)
评估任务(6 个真实世界任务)
- Restock Bag: 从购物车取零食放到超市货架
- Table Bussing: 清理桌面垃圾到垃圾桶
- Pour Water: 抓取水壶把手、提起、倒水
- Restock Beverage: 从购物车取饮料放到货架
- Fold Shorts: 将短裤对折两次
- Wipe Table: 用海绵清洁水渍
每个任务设计 2 个 unseen 场景(位置泛化、视觉干扰、语言泛化),每个任务 10 次 rollout 取平均。
Baseline 方法
- RDT-1B: Diffusion Transformer-based generalist policy(1B 参数)
- : 使用预训练 VLM backbone + flow-based action expert
- GO-1 w/o Latent Planner: GO-1 的消融版本(去掉 latent planner)
评估指标
- Normalized completion score(0-1),10 次 rollout 平均
- 支持部分完成的 fractional scoring
训练配置
- VLM Backbone: InternVL2.5-2B
- Fine-tuning: learning rate 2e-5, batch size 768, 30,000 optimization steps
- Diffusion: DPMSolver scheduler, action chunk size H=30
- Latent Action: k=4 tokens, VQ-VAE codebook
5. Experimental Results (实验结果)
5.1 GO-1 vs. 其他 Generalist Policy
Figure 5 解读: 左侧展示 6 个评估任务的实验场景。右侧柱状图展示各方法性能对比(所有模型在 AgiBot World Beta 上预训练)。GO-1 在所有任务上均显著优于 RDT-1B 和 。Latent Planner 的加入平均提升 0.12 completion score(GO-1 vs. GO-1 w/o Latent Planner)。
主要结果(如 Figure 5 所示,综合 30+ trials per task,含 seen + unseen 场景):
-
GO-1 在所有 6 个任务上均优于 RDT-1B 和 ,平均 completion score 0.78
-
GO-1 w/o Latent Planner 平均 0.46,加入 Latent Planner 后提升 +0.12
-
GO-1 在复杂任务上表现突出:Pour Water(需要精细操作)和 Restock Beverage(需要指令跟随)提升尤为显著
-
GO-1 复杂任务成功率超过 60%,整体比 RDT 提升 32%
-
GO-1 比 RDT-1B 平均提升 32%
-
Latent Planner 在 Restock Beverage 等需要语言指令跟随的任务上提升最为显著
5.2 AgiBot World 数据集的价值
Figure 6 解读: 使用 RDT 模型分别在 OXE 和 AgiBot World 上预训练,再 fine-tune 到评估任务。(a) In-distribution: AgiBot World 预训练模型平均 0.77 vs. OXE 0.47。(b) Out-of-distribution: AgiBot World 0.67 vs. OXE 0.38。即使 AgiBot World Alpha(仅 236h)数据量远小于 OXE(~2000h),也能达到更高的成功率,说明数据质量比数量更重要。
- 在 AgiBot World 上预训练的策略,平均成功率比 OXE 预训练高 30%(in-domain + OOD)
- 仅使用 1/10 数据量(Alpha 子集),泛化性能也提升 18%
5.3 Scaling Law
Figure 7 解读: (a) Data Scalability: 使用 10% alpha、100% alpha、beta 数据集(9.2k → 1M 轨迹),性能与数据量呈 power-law 关系,拟合 ,Pearson 相关系数 。(b) Data Quality: 经人工验证的 528 条轨迹 fine-tune RDT,completion score 为 0.59;未验证的 482 条仅为 0.41,高质量数据带来 0.18 提升。
5.4 关键发现与局限性
关键发现:
- 数据规模和质量共同决定 policy 性能,且质量的边际收益更高
- Latent action 作为中间表示有效桥接了 VLM 推理和 robot control
- 性能随数据量呈 power-law scaling,预示着更大数据集的持续收益
局限性:
- 所有评估均在真实世界进行,目前尚无仿真环境(正在开发中)
- 缺乏仿真环境限制了可复现性和快速迭代
关于 Reinforcement Learning (RL) 的说明
本文未使用 Reinforcement Learning。GO-1 的训练完全基于监督学习:
- Stage 1 (LAM): 自监督的 reconstruction loss(VQ-VAE)
- Stage 2 (Latent Planner): 监督学习(masked language modeling,LAM encoder 生成伪标签)
- Stage 3 (Action Expert): 监督学习(diffusion loss / MSE,人类演示提供 ground truth action)
论文中提到 failure recovery 数据可用于未来的 policy alignment(引用了 GRAPE [28] 和 Reflexion [29]),但本文本身并未实现任何 RL 训练。无 Reward Model、无 VLM zero-shot 判断、无 reward signal。