Sim-to-Real 策略转移#

从模拟到真实的机器人部署策略涉及必须解决的重要细微差别。本节提供了一个针对真实Unitree G1机器人部署训练策略的高级指南。关键挑战在于并非所有模拟中可用的observations都可以通过真实机器人传感器直接测量。这意味着经过RL训练的策略在没有使用仅传感器可用的observations时不能直接部署。例如,虽然真实机器人的IMU传感器提供了角加速度(可以被积分以获得角速度),但它们不能直接测量线速度。因此,如果一个策略在训练期间依赖基本线速度,那么在真实机器人部署之前必须将该信息删除。

要求#

我们假设该工作流程中的策略首先通过sim-to-sim转移进行验证,然后再部署到真实机器人上。请查看 这里 获取更多信息。

Overview#

本节演示了使用Newton后端为Unitree G1速度跟踪任务进行教师-学生蒸馏的sim-to-real工作流程。

教师-学生蒸馏工作流程包括三个阶段:

  1. 使用非真实世界传感器可用的特权观测结果训练一名教师策略。

  2. 通过从教师策略行为克隆(behavior cloning)来排除特权项(例如root线速度)以蒸馏一名学生策略。

  3. 使用仅真实传感器观测结果通过RL对学生策略进行微调。

教师和学生的观测组在速度任务配置中实施。有关详细信息,请参阅以下源码:

1. 训练教师策略#

使用Newton后端训练G1速度任务的教师策略。任务ID是 Isaac-Velocity-Flat-G1-v1

./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task=Isaac-Velocity-Flat-G1-v1 --num_envs=4096 --headless

教师策略包括在 PolicyCfg(ObsGroup) 中定义的特权观测(例如根线速度)。

2. 蒸馏学生策略 (移除特权项)#

在蒸馏过程中,学生策略通过最小化其行为之间的均方误差,学习通过行为克隆来模仿教师: \(loss = MSE(\pi(O_{teacher}), \pi(O_{student}))\).

学生策略仅使用来自真实传感器的观测结果(请参见 velocity_env_cfg.py 中的 StudentPolicyCfg(ObsGroup) )。具体来说: root角速度重力投影 来自IMU传感器,关节位置和速度 来自关节编码器,以及 动作 是控制器施加的关节力矩。

使用 --load_run--checkpoint 运行学生蒸馏任务 Velocity-G1-Distillation-v1 ,以指定您要从中进行蒸馏的教师策略。

./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task=Velocity-G1-Distillation-v1 --num_envs=4096 --headless --load_run 2025-08-13_23-53-28 --checkpoint model_1499.pt

备注

确保使用正确的 --load_run--checkpoint 以确保您从预期的教师策略进行蒸馏。

3. 使用 RL 微调学生策略#

使用 Velocity-G1-Student-Finetune-v1 任务对蒸馏后的学生策略进行RL微调。使用 --load_run--checkpoint 以从蒸馏策略初始化。

./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task=Velocity-G1-Student-Finetune-v1 --num_envs=4096 --headless --load_run 2025-08-20_16-06-52_distillation --checkpoint model_1499.pt

这将从蒸馏后的学生策略开始,并通过RL训练进一步改进。

备注

确保 --load_run--checkpoint 指向正确的初始策略(通常为蒸馏步骤的最新检查点)。

您可以通过以下方式replay学生策略:

./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/play.py --task=Velocity-G1-Student-Finetune-v1 --num_envs=32

这会将策略导出为运行的导出目录中的 .pt.onnx 文件,准备好进行真实机器人部署。