本文介绍 LeRobot 框架的核心组件和架构。
LeRobot 是由 Hugging Face 开发的基于 PyTorch 的现实世界机器人框架。它提供了用于机器人学习的先进模型、数据集和工具,重点关注模仿学习和强化学习方法。
系统架构
LeRobot 由多个相互连接的子系统组成,这些子系统协同工作以支持机器人学习。
核心基础设施支持机器人学习算法的策略系统、用于训练数据的数据集管理、用于模拟的环境接口以及用于物理硬件交互的机器人控制。示例目录演示了如何将这些系统结合使用。
策略系统
LeRobot 通过统一的工厂接口实现了多种先进的策略架构。
make_policy() 工厂函数提供了一个统一的接口,用于创建不同类型的策略。训练脚本 (train.py) 和评估脚本 (eval.py) 通过此工厂与策略进行交互。所有策略都实现了 PreTrainedPolicy 接口,该接口包含用于动作选择和模型训练的方法。
数据集管理
数据集系统负责加载、处理和可视化机器人数据集,重点关注多模态数据。
LeRobotDataset 类是核心组件,提供加载和管理机器人数据集的功能。数据集可以通过 Hugging Face Hub 或本地存储访问。make_dataset() 工厂函数根据配置创建数据集实例。该系统处理情节、视频处理和图像转换,并通过 Rerun 或 HTML/Flask 接口进行可视化。
环境接口
LeRobot 基于 Gymnasium API,为多个模拟环境提供一致的接口。
make_env() 工厂函数根据配置创建不同类型的环境(Aloha、PushT、XArm)。该系统包含用于预处理观测值(preprocess_observation())和将环境特征转换为策略特征(env_to_policy_features())的实用程序。该工厂函数生成 Gymnasium 矢量环境,从而实现并行模拟。
机器人控制
机器人控制系统提供与物理机器人交互的接口,支持不同的控制模式和硬件类型。
control_robot.py 脚本是机器人控制系统的核心组件,支持多种控制模式(远程操作、记录、回放、标定)和机器人类型(机械手、移动)。该系统通过电机(Dynamixel、Feetech)和摄像头(OpenCV、RealSense)的抽象与硬件接口。记录模式与 LeRobotDataset 系统集成,用于数据收集。
训练与评估
LeRobot 提供了全面的策略训练和评估脚本:
训练流水线
train.py 中的训练流水线负责协调整个训练过程:
训练函数:
使用 make_dataset() 创建数据集
使用 make_env() 创建用于评估的环境
使用 make_policy() 创建策略
使用 make_optimizer_and_scheduler() 创建优化器和调度器
遍历数据集并更新策略
定期评估策略、记录指标并保存检查点
评估流程
eval.py 中的评估流程用于评估策略性能:
评估流程:
使用 make_env() 创建环境
使用 make_policy() 创建策略
使用 rollout() 在环境中运行策略的部署
收集成功率和奖励等指标
(可选)渲染部署的视频
依赖项和构建系统
LeRobot 使用 Poetry 作为其构建系统,并拥有一套全面的依赖项:
pyproject.toml 文件定义了 LeRobot 的依赖项和构建系统。核心依赖项包括 PyTorch、Gymnasium、Hugging Face Hub 和视频处理库。针对不同的机器人类型和硬件接口,LeRobot 提供了可选依赖项,可单独安装。
支持的策略类型
LeRobot 实现了多种先进的策略架构:
支持的环境
LeRobot 通过 Gymnasium 接口支持多种模拟环境:
代码库结构
LeRobot 代码库结构如下:
结论
LeRobot 为机器人研究和开发提供了一个全面的框架,致力于让每个人都能接触到最先进的方法。通过提供预训练模型、数据集和模拟环境,它降低了机器人研究和应用开发的门槛。