模拟/建模/设计

使用 NVIDIA Isaac GR00T 开发端到端人形机器人策略

随着越来越多的团队从人形机器人启动转向特定任务的技能开发,对可重复开发工作流的需求也与日俱增。构建人形机器人仍然十分复杂,而且当今的开发流程仍然高度分散。因此,开发者在专注于构建机器人功能之前,会花费大量时间来配置机器人基础设施。

虽然机器人社区已经开发出跨流程各个阶段的工具,但由于软件生态系统孤立、数据格式不兼容以及工具之间的手动集成,将它们连接到无缝工作流仍然是一项挑战。为解决这一问题,我们推出了NVIDIA Isaac GR00T 开发平台:这是一个开源人形机器人平台,可统一流程的每个阶段,以加快开发速度。

本文将介绍端到端 GR00T 平台,从数据采集和模型训练到大规模评估和部署就绪,展示完全集成的平台如何简化人形机器人开发。

加速端到端人形机器人开发

Isaac GR00T 平台可帮助机器人开发者扩展人形机器人数据采集和基于仿真的训练,以在真实机器人上开发、验证和部署策略。其端到端平台是完全开放和模块化的,使团队能够使用单个组件或完整工作流,集成自己的工具,并使用经过验证的 NVIDIA 软件堆栈进行构建。

阶段 NVIDIA 技术 功能
仿真环境设置 NVIDIA Isaac Lab-Arena 创建用于数据生成、策略训练和测试的仿真环境。
数据创建 NVIDIA Isaac Teleop 捕获高质量的机器人演示数据,用于策略训练和开发。
策略训练 NVIDIA Isaac GR00T 1.7 训练脚本 使用仿真和真实演示数据,针对人形机器人推理和多任务行为训练机器人策略。
策略评估 NVIDIA Isaac Lab-Arena 在实际部署之前,先在仿真环境中测试和评估机器人策略。
策略部署 NVIDIA Isaac ROS = Jetson Thor 将模型导出到可部署的 LEAPP 捆绑包中,并将经过训练的策略部署到机器人上,以便在设备上进行实时推理和控制。
表 1. 整个机器人策略开发工作流程 (从仿真设置到部署) 中的 NVIDIA 软件堆栈

GR00T 工作流的一个关键组件是开放式 Isaac GR00T 1.7 视觉 – 语言 – 动作 (VLA) 模型,该模型通过强大的预训练基础简化了开发。它基于不同的数据进行训练,可以高效地泛化到新的任务和环境,同时产生更自然、更类似人类的运动。

开始使用 GR00T 1.7

GR00T 1.7 是首个用于通用人形机器人技能的开放、商用 VLA 模型,在 Apache 2.0 许可下发布。这是一种跨具身模型,可接受包括语言和图像在内的多模态输入,并生成跨不同环境执行任务所需的操作。开发者无需从头开始训练策略,而是可以从已经对广泛的操作先验进行编码的模型开始,并通过后训练使其适应特定的机器人、任务和环境。

GR00T 1.7 的新增功能

  • 强大的真人视频预训练: 1.7 基于约 32,000 小时的真实演示和以人类为中心的数据以及约 8,000 小时的来自 BEHAVIOR、RoboCasa 和 Simulated GR-1 的模拟演示和演示进行预训练,以实现更接近人类的动作。
  • 新的 VLM 主干:Cosmos-Reason2-2B (Qwen3-VL 架构) 取代了 GR00T N1.6 中使用的 Eagle 主干。这有助于支持灵活的分辨率,并以原生高宽比对图像进行编码,无需填充。
  • 扩展部署支持: 为 ONNX 和 TensorRT 添加完整的工作流导出,提高导出可靠性并进行更高频率的更新。
  • 增强性能:通过任务和子任务级分解改进长视距任务推理,提高可靠性、运动质量和跨具身泛化。
  • 改进的基准测试:与 N1.6 相比,DROID 和 SimplerEnv 实现了一致的改进,包括 DROID-F0 (~ 10%) 和 DROID-F6 (~ 61%) ,以及 SimplerEnv Bridge (~ 5%) 和 Fractal (~ 2%) ,展现了更强的泛化能力。

GR00T 1.7 可通过 GitHubHugging Face 访问,模型权重公开可用,基本检查点包含 30 亿个参数。

在端到端 GR00T 工作流中使用 GR00T 1.7 模型可简化后训练和策略评估,简化从基础模型到已部署机器人行为的过渡。下一节将详细介绍在仿真工作流中使用 GR00T 1.7 的步骤。

使用 GR00T 平台和 1.7 模型执行灵巧的操作任务

本节介绍使用 GR00T 平台和 GR00T 1.7 模型构建简单拾放任务的仿真工作流,从环境设置到部署就绪。这是我们的端到端 GR00T 开发指南的摘录,该指南更详细地介绍了整个流程。

演示包括:

  1. 在仿真中设置环境
  2. 通过远程操作收集机器人数据
  3. 将收集的数据转换为 LeRobot 格式
  4. 使用转换后的数据集对 GR00T 1.7 进行后训练
  5. 评估经过训练的后策略

虽然本节侧重于仿真,但相同的步骤可应用于实体机器人,并可根据不同的实施方案和任务进行调整。

设置环境

在收集任何训练数据之前,您必须先设置环境。使用对象和机器人素材合成场景,定义任务,然后选择远程操作设备。

在本示例中 (参见上图 3) ,机器人站在架子前,用手臂将苹果移到同一架子上的盘子上。全身控制器 (WBC) 可保持机器人的平衡;由于机器人不会在此任务期间行走,因此请使用 AGILE WBC,这是一种单一的端到端策略,比站立/ 行走控制器更适合静态任务。

预先刻意选择 WBC:在远程操作期间,AGILE WBC 和 PinkIK 会生成联合空间目标,这些目标会成为策略的训练信号,因此不同的控制器会针对同一运动生成不同的训练分布。

总体上,实现类似于以下代码段。这些片段使用 Isaac Lab-Arena API 来合成场景、注册素材并连接远程操作设备。这些只是片段;如需了解整个环境设置,请前往 GitLab Pages

background = self.asset_registry.get_asset_by_name("galileo_locomanip")()
pick_up_object = self.asset_registry.get_asset_by_name(args_cli.object)()
destination = self.asset_registry.get_asset_by_name(args_cli.destination)()
embodiment = self.asset_registry.get_asset_by_name(args_cli.embodiment)(
    enable_cameras=args_cli.enable_cameras
)
teleop_device = (
    self.device_registry.get_device_by_name(args_cli.teleop_device)()
    if args_cli.teleop_device is not None else None
)

scene = Scene(assets=[background, pick_up_object, destination])
task = PickAndPlaceTask(
    pick_up_object=pick_up_object,
    destination_location=destination,
    background_scene=background,
)

return IsaacLabArenaEnvironment(
    name=self.name,
    embodiment=embodiment,
    scene=scene,
    task=task,
    teleop_device=teleop_device,
)

收集演示

设置环境后,您可以使用 Isaac Teleop 捕捉演示数据,并借助 AGILE WBC 在采集过程中进行全身控制。使用支持的 VR 头盔通过 CloudXR 客户端收集演示。启动 CloudXR 运行时并获取 CloudXR 环境后,使用以下命令记录演示:

python isaaclab_arena/scripts/imitation_learning/record_demos.py \
  --viz kit \
  --device cpu \
  --enable_cameras \
  --dataset_file $DATASET_DIR/arena_g1_static_apple_dataset_recorded.hdf5 \
  --num_demos 400 \
  --num_success_steps 10 \
  --disable_full_sim_buffer_reset \
  galileo_g1_static_pick_and_place \
  --object apple_01_objaverse_robolab \
  --destination clay_plates_hot3d_robolab \
  --teleop_device openxr

在这里,质量与数量同样重要。由于数据杂或不一致限制了策略的学习能力,因此我们的目标是通过流畅的动作、稳定的把握和多样化的接近方向进行清晰的演示。在这项任务中,我们并非一次性收集了 400 个轨迹,而是通过多个数据采集会话拼接在一起。您可以先从较小批量的数据开始,了解各个部分如何组合在一起,然后再提交到一整套演示中。

成功的演示将保存到 HDF5 文件中,该文件将成为下一阶段的原始输入,并转换为 GR00T 1.7 用于后训练的 LeRobot 格式。

转换数据格式

GR00T 1.7 会使用 LeRobot 格式的数据集,因此录制的 HDF5 在训练前会在 Arena 容器内进行转换。转换由配置文件 g1_static_apple_config.yaml 驱动,该文件将记录的字段映射到 GR00T 所期望的内容:

# Input/Output paths
data_root: /datasets/isaaclab_arena/static_apple_tutorial
hdf5_name: "arena_g1_static_apple_dataset_recorded.hdf5"

# Task description
language_instruction: "move the apple to the plate"
task_index: 3

# Data field mappings
state_name_sim: "robot_joint_pos"
action_name_sim: "processed_actions"
pov_cam_name_sim: "robot_head_cam_rgb"

# Output configuration
fps: 50
chunks_size: 1000

使用以下命令运行转换:

python isaaclab_arena_gr00t/lerobot/convert_hdf5_to_lerobot.py \
  --yaml_file isaaclab_arena_gr00t/lerobot/config/g1_static_apple_config.yaml

这会生成一个 lerobot 文件夹,其中包含包含状态和动作、MP4 摄像头录制内容和数据集元数据的拼接文件。现在,借助转换后的数据集,您可以对 GR00T 1.7 模型进行后期训练。

后训练 GR00T 1.7

后训练在 Arena 容器外运行,在 Isaac-GR00T 存储库的独立检查中运行。微调命令会调整视觉主干、投影仪和扩散模型,同时保持语言模型保持不变:

uv run python -m torch.distributed.run --nproc_per_node=1 --standalone \
  gr00t/experiment/launch_finetune.py \
  --base-model-path nvidia/GR00T-N1.7-3B \
  --dataset-path $DATASET_DIR/arena_g1_static_apple_dataset_recorded/lerobot \
  --output-dir $MODELS_DIR/static_apple_n17_finetune \
  --modality-config-path /path/to/IsaacLab-Arena/isaaclab_arena_gr00t/embodiments/g1/g1_sim_wbc_data_gr00t_n_1_7_config.py \
  --embodiment-tag new_embodiment \
  --global-batch-size 12 \
  --max-steps 20000 \
  --num-gpus 1 \
  --save-steps 5000 \
  --save-total-limit 5 \
  --no-tune-llm \
  --tune-visual \
  --tune-projector \
  --tune-diffusion-model \
  --dataloader-num-workers 8 \
  --color-jitter-params brightness 0.3 contrast 0.4 saturation 0.5 hue 0.08

评估策略

完成后训练后,评估只需两个步骤:将检查点加载到 GR00T 服务器中,然后在闭环中运行策略。Arena 使用服务器 – 客户端设置,其中服务器托管经过微调的模型,Arena 客户端运行模拟并从服务器查询模型。

通过从 Arena 容器启动客户端来运行策略:

/isaac-sim/python.sh isaaclab_arena/evaluation/policy_runner.py \
   --viz kit \
   --policy_type isaaclab_arena_gr00t.policy.gr00t_remote_closedloop_policy.Gr00tRemoteClosedloopPolicy \
   --policy_config_yaml_path isaaclab_arena_gr00t/policy/config/g1_static_apple_gr00t_closedloop_config.yaml \
   --remote_host <SERVER_HOST> --remote_port 5555 \
   --num_steps 600 \
   --enable_cameras \
   galileo_g1_static_pick_and_place \
   --object apple_01_objaverse_robolab \
   --destination clay_plates_hot3d_robolab \
   --embodiment g1_wbc_agile_joint

在评估过程中,指标会打印到控制台,直到您获得最终输出,了解经过训练后策略的性能。

[Rank 0/1] Metrics: {'success_rate': 1.0, 'object_moved_rate': 1.0, 'num_episodes': 1}

要更改您的评估程度,请调整一些标志。--num_steps 用于设置发布时长;600 是快速烟雾测试,对应此任务的大约 1 集。如要获得具有代表性的成功率,请使用 --num_episodes 100 (或 1000 以获得更准确的估计) 评估完整的事件集,并添加 --num_envs 5 以并行运行环境,从而在试验中实现更多随机化。其他一切都保持不变;您只需更改平均推出次数即可。

简化开发流程

这完成了 Isaac GR00T 开发平台的完整测试。每个阶段都会产生一个干净的构件,并将其直接输入到下一个阶段,以实现完全集成、简化的开发流程。虽然此演示以特定具身作为示例,但您可以根据自己的机器人设置调整相同的流程,为您的用例定义任务,在系统上收集演示,并重复使用相同的数据转换、后训练和评估工作流。

不断发展的 GR00T 生态系统

GR00T 平台和参考工作流已经在不断发展的人形机器人合作伙伴生态系统中得到采用。

  • 包括 1X、Agility、ANYBotics、Bellboy Robotics、FieldAI、Lightwheel AI、NEURA Robotics、Nexuni、Noble Machines、Schaeffler、Skild AI 和 Techman Robot 在内的人形机器人制造商和 AI 提供商正在集成 GR00T 平台的 Isaac Teleop、Sim、Lab 和 ROS 等组件,以加速其开发工作流,并将 AI 机器人更快地投入真正的工业用。
  • 斯坦福大学、CMU、UCSD、苏黎世联邦理工学院和 AI2 等研究机构将尝试统一的 GR00T 端到端工作流,以降低集成复杂性,并加快从机器人启动到技能开发和现实世界验证的速度。
  • 领先的可穿戴和 XR 设备制造商 (包括 Haptikos、Manus、Noitom、OpenGraph Labs、PICO、Sensing、HTC Vive、Wuji 和 Xsens) 提供原生支持 NVIDIA Isaac Teleop 的设备,从而更轻松地截取高质量演示。

开始使用

GR00T 平台和 GR00T 1.7 模型现已可供任何开发者使用。无论是从仿真开始,还是从实体机器人开始,工作流程都保持不变。选择入口点,定义边界任务,然后构建首个端到端策略。

入门可能具有挑战性,因此我们构建了一个完整的端到端参考工作流,您可以在学习内容如何使用 NVIDIA Isaac GR00T 开发和部署端到端人形机器人,以及GR00T 平台简介视频中找到该工作流。

其他资源:

标签