LeRobot 文档

在模拟环境中进行模仿学习

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

在模拟环境中进行模仿学习

本教程将解释如何训练一个神经网络,使其通过模仿学习在模拟环境中控制机器人。

你将学到:

  1. 如何使用 gym-hil 在模拟环境中录制数据集并将其可视化。
  2. 如何使用你的数据来训练一个策略。
  3. 如何在模拟环境中评估你的策略并可视化结果。

对于模拟环境,我们使用了与人机回环 (Human-In-the-Loop, HIL) 强化学习算法相同的 仓库。该环境基于 MuJoCo,允许你以 LeRobotDataset 格式录制数据集。使用像 Logitech F710 这样的手柄进行遥控操作是最简单的,但如果你想挑战一下,也可以使用键盘。

安装

首先,在 LeRobot 环境中安装 gym_hil 包,进入你的 LeRobot 文件夹并运行此命令:

pip install -e ".[hilserl]"

遥控操作并录制数据集

要将 gym_hil 与 LeRobot 一起使用,你需要使用一个配置文件。示例配置文件可以在这里找到。

要进行遥控操作并收集数据集,我们需要修改这个配置文件,你应该在这里添加你的 repo_id"repo_id": "il_gym",,并设置 "num_episodes": 30,,同时确保将 mode 设置为 record,即 `"mode": "record"`。

如果你没有 Nvidia GPU,也请在配置文件中更改 "device": "cuda" 参数(例如,在 macOS 上改为 mps)。

默认情况下,配置文件假定你使用手柄。要使用键盘,请更改配置文件中 "task" 指定的环境,并将其设置为 "PandaPickCubeKeyboard-v0"

然后我们可以运行这个命令来启动:

Linux
macOS
python -m lerobot.scripts.rl.gym_manipulator --config_path path/to/env_config_gym_hil_il.json

渲染后,你可以使用游戏手柄或键盘遥控机器人。下面是游戏手柄/键盘的控制方式。

请注意,要遥控机器人,你必须按住“人工接管暂停策略”按钮 RB 才能启用控制!

手柄控制

Figure shows the control mappings on a Logitech gamepad.

用于机器人控制和回合管理的手柄按钮映射

键盘控制

对于键盘控制,使用空格键来启用控制,并使用以下按键移动机器人:

  Arrow keys: Move in X-Y plane
  Shift and Shift_R: Move in Z axis
  Right Ctrl and Left Ctrl: Open and close gripper
  ESC: Exit

可视化数据集

如果你已将数据集上传到 Hub,你可以通过复制粘贴你的仓库 ID 在线可视化你的数据集

Figure shows the dataset visualizer

数据集可视化工具

训练一个策略

要训练一个控制机器人的策略,请使用 lerobot-train 脚本。需要提供一些参数。这是一个示例命令:

lerobot-train \
  --dataset.repo_id=${HF_USER}/il_gym \
  --policy.type=act \
  --output_dir=outputs/train/il_sim_test \
  --job_name=il_sim_test \
  --policy.device=cuda \
  --wandb.enable=true

让我们来解释一下这个命令:

  1. 我们通过 --dataset.repo_id=${HF_USER}/il_gym 参数提供了数据集。
  2. 我们通过 policy.type=act 提供了策略。这将从 configuration_act.py 加载配置。重要的是,该策略会自动适应你机器人的电机状态、电机动作和摄像头的数量(例如 `laptop` 和 `phone`),这些信息已保存在你的数据集中。
  3. 我们提供了 policy.device=cuda,因为我们是在 Nvidia GPU 上训练,但你也可以使用 policy.device=mps 在 Apple 芯片上进行训练。
  4. 我们提供了 wandb.enable=true 来使用 Weights and Biases 可视化训练图表。这是可选的,但如果你使用它,请确保通过运行 wandb login 登录。

训练应该需要几个小时,10万步(这是默认值)在 Nvidia A100 上大约需要 1 小时。你可以在 outputs/train/il_sim_test/checkpoints 中找到检查点。

使用 Colab 进行训练

如果你的本地计算机没有强大的 GPU,你可以利用 Google Colab,按照 ACT 训练 notebook 来训练你的模型。

上传策略检查点

训练完成后,使用以下命令上传最新的检查点:

huggingface-cli upload ${HF_USER}/il_sim_test \
  outputs/train/il_sim_test/checkpoints/last/pretrained_model

你也可以使用以下命令上传中间检查点:

CKPT=010000
huggingface-cli upload ${HF_USER}/il_sim_test${CKPT} \
  outputs/train/il_sim_test/checkpoints/${CKPT}/pretrained_model

在模拟环境中评估你的策略

要评估你的策略,我们必须使用可以在这里找到的配置文件。

请确保将 repo_id 替换为你训练所用的数据集,例如 pepijn223/il_sim_dataset,并将 pretrained_policy_name_or_path 替换为你的模型 ID,例如 pepijn223/il_sim_model

然后你可以运行此命令来可视化你训练好的策略:

Linux
macOS
python -m lerobot.scripts.rl.eval_policy --config_path=path/to/eval_config_gym_hil.json

虽然在模拟环境中训练 ACT 的主要工作流程很简单,但在如何设置任务、定义环境的初始状态以及确定收集数据期间所需的数据类型以学习最有效的策略方面,仍有很大的探索空间。如果你训练的策略表现不佳,请使用我们的可视化工具检查其训练所用数据集的质量,以及动作值和与 ACT 及模拟相关的各种超参数。

恭喜 🎉,你已完成本教程。如果你想继续在模拟环境中使用 LeRobot,请参考在模拟环境中使用 HIL-SERL 进行强化学习的教程

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

< > 在 GitHub 上更新