跳转至

开源机器人学习框架

近年来,随着机器人学习研究的快速发展,涌现了大量高质量的开源框架。本文梳理主流的机器人学习框架、操作基准测试平台及其适用场景。


框架生态关系

graph TD
    subgraph 环境["仿真环境"]
        RS[robosuite<br/>MuJoCo 操作任务]
        MS[ManiSkill<br/>SAPIEN 操作任务]
        GR[Gymnasium-Robotics<br/>标准环境]
    end

    subgraph 算法["算法 & 基准"]
        RM[robomimic<br/>模仿学习基准]
        LR[LeRobot<br/>统一训练框架]
    end

    subgraph 真机["真机部署"]
        HW[开源硬件<br/>Koch / SO-100 / ALOHA]
    end

    RS --> RM
    RS --> LR
    MS --> LR
    GR --> LR
    RM --> LR
    LR --> HW

    style 环境 fill:#e3f2fd
    style 算法 fill:#e8f5e9
    style 真机 fill:#fff3e0

框架总览

框架 维护方 核心功能 仿真后端 支持算法 许可证
LeRobot HuggingFace 端到端机器人学习 多种 ACT, DP, TDMPC Apache 2.0
robomimic Stanford/UT Austin 模仿学习基准 robosuite BC, BC-RNN, HBC, IRIS, Diffusion MIT
robosuite Stanford 操作任务仿真 MuJoCo — (环境框架) MIT
ManiSkill UC San Diego 操作基准 SAPIEN — (环境框架) Apache 2.0
Gymnasium-Robotics Farama 标准化环境 MuJoCo — (环境框架) MIT
OctoRobot/Octo UC Berkeley 通用机器人策略 多种 Octo Transformer MIT
droid TRI/多校 大规模数据收集 真机 — (数据框架) MIT

LeRobot (HuggingFace)

LeRobot 是 HuggingFace 推出的统一机器人学习框架,目标是让机器人学习像 NLP/CV 一样易用。

核心设计

特性 说明
统一数据格式 LeRobot Dataset Format,兼容 HuggingFace Hub
多算法支持 ACT, Diffusion Policy, TDMPC, VQ-BeT
真机支持 支持 Koch v1.1, SO-100, ALOHA 等开源机械臂
录制工具 内置遥操作录制、数据可视化
预训练模型 HuggingFace Hub 上共享预训练权重

支持的算法

算法 类型 核心思想 论文
ACT 模仿学习 CVAE + Transformer,chunk action Zhao et al., 2023
Diffusion Policy 模仿学习 扩散模型生成动作序列 Chi et al., 2023
TDMPC 模型基础 RL Temporal Difference + MPC Hansen et al., 2022
VQ-BeT 模仿学习 VQ-VAE 离散化动作 + Transformer Lee et al., 2024

使用示例

# 安装
# pip install lerobot

# 训练 ACT 策略
from lerobot.scripts.train import train

train(
    dataset_repo_id="lerobot/aloha_sim_insertion_human",
    policy="act",
    env="aloha",
    training_steps=100000,
    batch_size=8,
    lr=1e-5,
)

# 评估
from lerobot.scripts.eval import eval_policy

eval_policy(
    pretrained_policy_name_or_path="lerobot/act_aloha_sim_insertion_human",
    env="aloha",
    n_episodes=50,
)

数据收集 (真机)

# 使用 Koch v1.1 机械臂遥操作录制数据
python lerobot/scripts/control_robot.py record \
    --robot-path lerobot/configs/robot/koch.yaml \
    --fps 30 \
    --repo-id user/my_dataset \
    --num-episodes 50

# 数据可视化
python lerobot/scripts/visualize_dataset.py \
    --repo-id user/my_dataset

数据格式

LeRobot 定义了标准化的数据格式,存储于 HuggingFace Dataset:

dataset/
├── meta/
│   ├── info.json              # 数据集元信息
│   ├── episodes.jsonl         # 每个 episode 的信息
│   └── tasks.jsonl            # 任务描述
├── data/
│   ├── chunk-000/
│   │   └── episode_000000.parquet  # 状态 + 动作
│   └── ...
└── videos/
    ├── chunk-000/
    │   ├── observation.images.top/
    │   │   └── episode_000000.mp4
    │   └── ...
    └── ...

robomimic

robomimic 是 Stanford 和 UT Austin 联合开发的模仿学习基准框架,提供了系统化的算法对比。

核心特点

特性 说明
数据集 提供多质量级别(proficient, multi-human, machine-generated)演示数据
算法丰富 BC, BC-RNN, HBC, IRIS, Diffusion Policy
标准化评估 统一的评估指标和协议
仿真后端 robosuite (MuJoCo)

支持的算法

算法 类别 核心方法
BC 行为克隆 直接监督学习
BC-RNN 行为克隆 LSTM 处理时序依赖
HBC 层级模仿 子目标 + 低级策略
IRIS 层级模仿 子目标发现 + 规划
Diffusion Policy 生成式模仿 扩散去噪生成动作

使用示例

import robomimic
import robomimic.utils.train_utils as TrainUtils

# 加载配置
config = robomimic.utils.config_utils.get_config(algo_name="bc")
config.train.data = "path/to/dataset.hdf5"
config.train.output_dir = "trained_models/bc_lift"
config.train.num_epochs = 200

# 训练
TrainUtils.run_training(config)

关键发现 (论文)

robomimic 论文中的重要结论:

  1. 数据质量 > 数据数量:少量专家数据优于大量非专家数据
  2. 历史信息关键:BC-RNN 在多模态数据上远优于 BC
  3. Diffusion Policy 综合最优:在大多数任务上表现最好
  4. 人类数据更难学习:相比机器生成的数据,人类遥操作数据分布更复杂

更多模仿学习相关内容请参阅 模仿学习


robosuite

robosuite 是基于 MuJoCo 的机器人操作仿真基准,提供标准化任务和机器人模型。

内置任务

任务 描述 难度
Lift 抬起方块 简单
Stack 堆叠方块 中等
NutAssembly 螺母装配 中等
PickPlace 抓取放置 中等
Door 开门 中等
Wipe 擦桌子
TwoArmHandover 双臂递物

内置机器人

机器人 自由度 类型
Panda 7 单臂
Sawyer 7 单臂
UR5e 6 单臂
IIWA 7 单臂
Jaco 7 单臂
Baxter 7+7 双臂
import robosuite as suite

env = suite.make(
    env_name="Lift",
    robots="Panda",
    has_renderer=True,
    has_offscreen_renderer=True,
    use_camera_obs=True,
    camera_names=["frontview", "agentview"],
)

obs = env.reset()
for _ in range(1000):
    action = env.action_space.sample()
    obs, reward, done, info = env.step(action)

ManiSkill

ManiSkill 基于 SAPIEN 仿真器,专注于可泛化的操作任务基准。

特色

特性 说明
铰接物体 基于 PartNet-Mobility 数据集,包含大量铰接物体(门、抽屉等)
GPU 并行 SAPIEN GPU 后端支持并行仿真
视觉+点云 提供 RGB-D + 点云观测
泛化评测 训练/测试不同物体实例
ManiSkill3 最新版本,大幅提升并行性能

ManiSkill3 环境

类别 任务示例
桌面操作 PickCube, StackCube, PegInsertionSide
铰接物体 OpenCabinetDrawer, OpenCabinetDoor, TurnFaucet
装配 AssemblingKits, PlugCharger
软体 PourWater, FillCup
移动操作 OpenDoor (移动底盘)
import gymnasium as gym
import mani_skill.envs

env = gym.make(
    "PickCube-v1",
    obs_mode="rgbd",           # "state", "rgbd", "pointcloud"
    control_mode="pd_ee_delta_pose",
    render_mode="human",
    num_envs=4096,             # GPU 并行
)

Gymnasium-Robotics

Farama Foundation 维护的标准化机器人环境集合,继承自 OpenAI Gym。

环境列表

环境组 仿真后端 任务类型
Fetch MuJoCo Reach, Push, Slide, Pick&Place
Shadow Hand MuJoCo 灵巧手操作(旋转方块等)
Maze MuJoCo 迷宫导航
Adroit MuJoCo 灵巧手(开门、翻笔等)

特点

  • HER 兼容:所有环境支持 Hindsight Experience Replay
  • Goal-conditioned:观测包含 observation, achieved_goal, desired_goal
  • 标准接口:Gymnasium API,与 Stable-Baselines3 等无缝集成
import gymnasium as gym

env = gym.make("FetchPickAndPlace-v3", render_mode="human")
obs, info = env.reset()
# obs["observation"]: 机器人状态
# obs["achieved_goal"]: 物体当前位置
# obs["desired_goal"]: 目标位置

框架选择指南

需求 推荐框架 理由
端到端训练 + 真机部署 LeRobot 统一数据/训练/部署流程
模仿学习算法对比 robomimic 标准化基准 + 多算法
操作任务仿真开发 robosuite 任务丰富 + MuJoCo 稳定
可泛化操作研究 ManiSkill 铰接物体 + GPU 并行
标准 RL 基准 Gymnasium-Robotics 标准接口 + 社区大
大规模策略预训练 Octo / OpenVLA 多数据集预训练
低成本真机入门 LeRobot + Koch/SO-100 成本低 + 社区活跃

相关链接


评论 #