LeRobot 文档

在仿真环境中训练强化学习

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

在仿真环境中训练强化学习

本指南介绍如何使用 gym_hil 仿真环境,以便在使用 LeRobot 框架进行“人在环路”(HIL)强化学习时,替代真实的机器人。

gym_hil 是一个提供与 Gymnasium 兼容的仿真环境的软件包,专为“人在环路”强化学习设计。这些环境允许您:

  • 在仿真环境中训练策略,以便在真实机器人上训练前测试强化学习堆栈

  • 使用游戏手柄或键盘等外部设备在仿真环境中收集演示

  • 在策略学习过程中进行人工干预

目前,主要环境是基于 MuJoCo 的 Franka Panda 机器人仿真,任务包括拾取立方体等。

安装

首先,在 LeRobot 环境中安装 gym_hil 软件包。

pip install -e ".[hilserl]"

我需要什么?

  • 一个游戏手柄或键盘来控制机器人
  • 一块英伟达(Nvidia)GPU

配置

要将 gym_hil 与 LeRobot 一起使用,您需要创建一个配置文件。这里提供了一个示例。关键配置部分包括:

环境类型和任务

{
  "type": "hil",
  "name": "franka_sim",
  "task": "PandaPickCubeGamepad-v0",
  "device": "cuda"
}

可用任务:

  • PandaPickCubeBase-v0: 基础环境
  • PandaPickCubeGamepad-v0: 带游戏手柄控制
  • PandaPickCubeKeyboard-v0: 带键盘控制

Gym 包装器配置

"wrapper": {
    "gripper_penalty": -0.02,
    "control_time_s": 15.0,
    "use_gripper": true,
    "fixed_reset_joint_positions": [0.0, 0.195, 0.0, -2.43, 0.0, 2.62, 0.785],
    "end_effector_step_sizes": {
        "x": 0.025,
        "y": 0.025,
        "z": 0.025
    },
    "control_mode": "gamepad"
    }

重要参数:

  • gripper_penalty: 对过多抓手移动的惩罚
  • use_gripper: 是否启用抓手控制
  • end_effector_step_sizes: 末端执行器在 x,y,z 轴上的步长大小
  • control_mode: 设置为 "gamepad" 以使用游戏手柄控制器

使用 LeRobot 的人在环路强化学习运行

基本用法

要运行环境,请将模式设置为 null

python -m lerobot.scripts.rl.gym_manipulator --config_path path/to/gym_hil_env.json

记录数据集

要收集数据集,请将模式设置为 record,同时定义 repo_id 和要记录的回合数。

python -m lerobot.scripts.rl.gym_manipulator --config_path path/to/gym_hil_env.json

训练策略

要训练策略,请查看此处提供的配置示例,并运行执行者(actor)和学习者(learner)服务器。

python -m lerobot.scripts.rl.actor --config_path path/to/train_gym_hil_env.json

在另一个终端中,运行学习者服务器。

python -m lerobot.scripts.rl.learner --config_path path/to/train_gym_hil_env.json

仿真环境提供了一种安全且可重复的方式来开发和测试您的“人在环路”强化学习组件,然后再部署到真实机器人上。

恭喜 🎉,您已完成本教程!

如果你有任何问题或需要帮助,请在 Discord 上联系我们。

论文引用

@article{luo2024precise,
  title={Precise and Dexterous Robotic Manipulation via Human-in-the-Loop Reinforcement Learning},
  author={Luo, Jianlan and Xu, Charles and Wu, Jeffrey and Levine, Sergey},
  journal={arXiv preprint arXiv:2410.21845},
  year={2024}
}
< > 在 GitHub 上更新