← 返回信息流
技术博客Hugging Face Blog·2026/6/17

From the Hugging Face Hub to robot hardware with Strands Agents and LeRobot

AI 深度解读

背景

将机器人连接到 Hugging Face Hub 并在真实硬件上执行新任务,传统上需要五套独立的工具:一套录制演示数据、一套训练模型、一套在仿真中测试、一套自定义代码部署到硬件,以及一套在拥有多个机器人时协调它们。这些工具各自独立运行,彼此不通信。AWS 开源的 Strands Robots SDK(Apache 2.0 许可证)解决了这个问题:它将机器人抽象、仿真和 LeRobot 栈暴露为 AgentTools,然后组合成一个单一的 Strands agent。集成层刻意保持轻薄:LeRobot 自身的脚本负责硬件录制和标定,Strands AgentTools 只接管 agent 实际编排的部分。仿真工具录制 LeRobotDataset 的格式与 LeRobot 在硬件上写入的格式完全一致。GR00T 和 LerobotLocal 通过统一接口提供策略推理,MolmoAct2 检查点则走 LerobotLocal 路径。一个点对点网格(peer mesh)将 agent 分发到远程机器人。数据集格式保持与 LeRobot 写入时完全相同;agent 循环充当粘合剂。

核心内容

一条 agent 中的五个步骤

本文通过一个单一的 agent 演示了五个步骤:基于 LeRobot AgentTools 构建 agent;在仿真中录制一段演示作为 LeRobotDataset;在同一机器人上运行策略;通过修改一个关键字参数将同一 agent 代码部署到物理 SO-101 机器人上;以及通过 Zenoh 网格向整个机器人集群广播命令。最终,你可以从 GitHub 克隆可运行的示例应用,并在笔记本电脑上以仿真模式运行。默认路径不需要硬件、GPU 或 Hugging Face 凭证。本文配套的可运行代码位于 examples/lerobot/hub_to_hardware.pyhub_to_hardware.ipynb。默认情况下,笔记本仅使用仿真和 Mock 策略。

构建内容

Strands Robots SDK 将 LeRobot 栈暴露为 AgentTools,你可以将它们组合成一个 Strands agent。本文示例 agent 完成四件事:在仿真中录制新演示;将结果作为 LeRobotDataset 推送到 Hub;在仿真中针对同一格式运行策略;以及通过修改一个关键字参数将同一 agent 代码部署到物理机器人。当你有多个机器人时,agent 可以通过内置的点对点网格协调整个集群。对于硬件录制和标定,LeRobot 自身的 CLI(lerobot-recordlerobot-calibrate)负责启动;agent 从那里接手。

两个设计选择

  1. Robot("so100") 默认返回一个仿真(无硬件、无风险),而 mode="real" 返回一个由 LeRobot 驱动的硬件机器人。agent 代码在两种模式下完全相同。
  2. 写入 LeRobotDataset 的 DatasetRecorder 在仿真路径和 LeRobot 的硬件录制之间共享,因此 MuJoCo 中捕获的数据集与物理 SO-101 上捕获的数据集具有相同的格式。

整个工作流用五行 Python 表示

from strands_robots import Robot
from strands import Agent

arm = Robot("so100")  # mode="sim"(默认,安全,无硬件)
agent = Agent(tools=[arm])
agent("Pick up the red cube")

以下是该调用内部实际发生的过程,逐步说明。

先决条件

最小配置(默认仿真路径)

  • Python 3.12+,Linux 或 macOS(Apple Silicon 支持 MuJoCo 后端)。
  • 用于 agent 推理的 Strands 兼容模型提供商:Amazon Bedrock(需 AWS 凭证)、Anthropic API、OpenAI 或本地运行的 Ollama。
  • 安装带额外依赖的 Strands Robots:
    uv pip install "strands-robots[sim-mujoco,lerobot,mesh]"
    

高级配置(硬件部署、真实策略、Hub 推送)

  • 一个 Hugging Face 账户和具有写入权限的 token,用于推送数据集和从 Hub 拉取策略检查点。
  • 对于硬件路径:一个 SO-101 从动臂和引导臂对,或任何其他 LeRobot 支持的机器人。两个设备都需要标定文件,位于 ~/.cache/huggingface/lerobot/calibration/
  • 对于本地 GR00T 推理:一个至少 16 GB 显存的 NVIDIA GPU 和已安装的 Docker。本文使用 gr00t_inference 工具的 lifecycle="full" 动作,它会拉取映像、下载检查点并启动容器。

步骤 1——设置示例

安装 Strands Robots 并获取示例文件:

uv pip install "strands-robots[sim-mujoco,lerobot,mesh]"
git clone https://github.com/strands-labs/robots.git
cd robots

如果你希望 agent 推送数据集或从 Hub 拉取策略,请导出 Hugging Face token。对于本文的默认仿真路径,这是可选的;示例使用 Mock 策略端到端运行,并将数据集写入本地缓存,无需 Hub 访问。

export HF_TOKEN=hf_...

可运行示例位于 examples/lerobot/hub_to_hardware.py(Python 脚本)和 hub_to_hardware.ipynb(笔记本),与 MuJoCo 和 LIBERO 示例一起放在 strands-labs/robots 仓库中。笔记本是推荐的起点:在 JupyterLab 中打开,以仿真模式从上到下运行单元格,无需连接任何硬件。

步骤 2——录制演示并推送到 Hub

仿真工具录制 LeRobotDataset 的格式与 LeRobot 在硬件上写入的格式完全相同。无需硬件。Simulation 工具的 start_recording 动作通过相同的 DatasetRecorder 类写入:相同的关节状态和动作的 parquet 模式,相同的每摄像头 MP4 布局。agent 提示几乎相同:

from strands import Agent
from strands_robots import Robot

robot = Robot("so100")  # mode="sim" 默认
agent = Agent(tools=[robot])
agent(
    "Record a demonstration of 'pick the red cube and place it in the box' "
    "using the Mock policy provider at FPS 30. Write the dataset to "
    "my_user/cube_picking_sim and push to the Hub when done."
)

Mock 策略是有意为之:它生成占位关节动作,使工作流无需训练好的检查点即可端到端运行。机器人会执行随机运动而不是完成抓取,录制的数据在结构上是完整的(有效的关节状态、有效的摄像头帧、格式良好的 LeRobotDataset 片段),但演示本身不能作为训练数据使用。下面的步骤 3 会替换为 GR00T 或 LerobotLocal 以获得真实的抓取行为。如果想在此步骤中看到实际的方块拾取,运行 --policy lerobot_local --checkpoint allenai/MolmoAct2-SO100_101(一个 MolmoAct2 检查点,会从其 config.json 自动检测并通过 LerobotLocal 路径路由);提示、数据集格式和 agent 代码保持不变。

最终结果是:LeRobot 自身的数据集加载器读取仿真录制的数据,无需任何 Strands 特定的代码路径:

from lerobot.datasets.lerobot_dataset import LeRobotDataset
dataset = LeRobotDataset("my_user/cube_picking_sim")
print(dataset.features)
# {'observation.state': Sequence(...),
#  'observation.images.front': VideoFrame(...),
#  'action': Sequence(...),
#  'episode_index': Value(...), 'frame_index': Value(...), ...}

这个 features 字典与 Hub 上任何 LeRobot 数据集的形状完全相同:相同的列名、相同的 parquet+MP4 布局、相同的加载器路径。使用硬件录制数据训练的脚本无需修改即可消费仿真录制的数据。

查看原文 →huggingface.co