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 视频数据到机器人控制的高效知识迁移。

关键创新:

  1. 数据层面: 构建了迄今最大的单一平台机器人操作数据集(1M+ 轨迹),涵盖家居、零售、工业、餐厅、办公五大真实场景
  2. 模型层面: 提出 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 loss

Algorithm: 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 chunk

3.6 Code-to-Paper Mapping Table

Paper ConceptSource FileKey Class/Function
GO-1 整体模型go1/internvl/model/go1/modeling_go1.pyGO1Model
Action Expertgo1/internvl/model/go1/modeling_action_expert.pyActionExpertModel
Latent Plannergo1/internvl/model/go1/modeling_latent_action_expert.pyLatentPlannerModel
GO-1 配置go1/internvl/model/go1/configuration_go1.pyGO1Config
Action Expert 配置go1/internvl/model/go1/configuration_action_expert.pyActionExpertConfig
VLM Backbone (InternLM2)go1/internvl/model/internlm2/modeling_internlm2.pyInternLM2ForCausalLMGO1
训练入口go1/internvl/train/go1_train.py主训练脚本
数据集处理go1/internvl/train/dataset.py数据加载和预处理
LeRobot 数据接口go1/lerobot/dataset_lerobot.pyLeRobot 格式数据集
Diffusion Lossgo1/internvl/model/go1/modeling_go1.pycalc_action_diffusion_loss()
推理去噪go1/internvl/model/go1/modeling_go1.pycondition_sample()
KV Cache 投影go1/internvl/model/go1/modeling_go1.pyk_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 个真实世界任务)

  1. Restock Bag: 从购物车取零食放到超市货架
  2. Table Bussing: 清理桌面垃圾到垃圾桶
  3. Pour Water: 抓取水壶把手、提起、倒水
  4. Restock Beverage: 从购物车取饮料放到货架
  5. Fold Shorts: 将短裤对折两次
  6. 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。