# Unitree RL GYM：Isaac Gym 训练、MuJoCo Sim2Sim 到真机部署实操

> 原文链接：https://robotics.hellobike.com/tutorials/unitree-rl-gym-train-sim2sim-deploy
> 频道：tutorials | 更新日期：2026-10-22 | 标签：unitree_rl_gym, Isaac Gym, MuJoCo, Sim2Sim, Sim2Real, G1
> 核心摘要：本教程按 Unitree RL GYM 工作流整理：先在 Gym 中训练并 Play 验证策略，导出 Actor 网络，再用 MuJoCo 做 Sim2Sim，最后在 G1、H1、H1_2 真机上进入调试模式并启动部署程序。

# Unitree RL GYM：Isaac Gym 训练、MuJoCo Sim2Sim 到真机部署实操

&gt; 本文依据以下官方文档整理：[raw.githubusercontent.com/unitreerobotics/unitree_rl_gym/mai](https://raw.githubusercontent.com/unitreerobotics/unitree_rl_gym/main/README.md)、[raw.githubusercontent.com/unitreerobotics/unitree_rl_gym/mai](https://raw.githubusercontent.com/unitreerobotics/unitree_rl_gym/main/deploy/deploy_real/README.md)。命令与版本以文档当前版本为准。

## 前置条件

- Unitree RL GYM 支持 Unitree Go2、H1、H1_2、G1
- Sim2Real 当前支持 Unitree G1、H1、H1_2
- 已完成 Installation and Configuration
- 真机部署前，机器人需要处于 debug mode
- 电脑通过以太网线连接到机器人网络口，并能获得连接机器人的网络接口名

## 1. 1. 在 Isaac Gym 中启动训练

训练阶段使用 Gym simulation environment 让机器人与环境交互，寻找最大化奖励的 policy。`--task` 为必填，可取 `go2`、`g1`、`h1`、`h1_2`；实时可视化训练不推荐。
```bash
python legged_gym/scripts/train.py --task=xxx
```

## 2. 2. 用 Play 验证并导出网络

训练后用 Play 在 Gym 中可视化结果。Play 参数与 Train 相同，默认从 experiment folder 的 last run 加载 latest model，也可用 `load_run` 和 `checkpoint` 指定模型。
```bash
python legged_gym/scripts/play.py --task=xxx
```

## 3. 3. 确认导出的 policy 路径

Play 会导出 Actor network，保存到 `logs/{experiment_name}/exported/policies`。Standard networks (MLP) 导出为 `policy_1.pt`；RNN networks 导出为 `policy_lstm_1.pt`，后续 Sim2Sim 可替换使用。

## 4. 4. 在 MuJoCo 中运行 Sim2Sim

Sim2Sim 用 MuJoCo simulator 检查 Gym 训练得到的策略是否过度依赖 Gym 特性。`config_name` 是配置文件名，默认搜索路径为 `deploy/deploy_mujoco/configs/`。
```bash
python deploy/deploy_mujoco/deploy_mujoco.py {config_name}
```

## 5. 5. 以 G1 配置运行 MuJoCo 示例

以 G1 为例，可直接运行文档给出的配置文件。默认模型位于 `deploy/pre_train/{robot}/motion.pt`；自训练模型如 `logs/g1/exported/policies/policy_lstm_1.pt`，需更新 YAML 中的 `policy_path`。
```bash
python deploy/deploy_mujoco/deploy_mujoco.py g1.yaml
```

## 6. 6. 真机进入调试并连接网络

真机部署前，机器人需先在 hoisting state 启动并等待进入 `zero torque mode`。确认后按遥控器 `L2+R2` 进入 `debugging mode`，再用以太网线连接电脑与机器人网络口，并用 `ifconfig` 查看网络接口名。

## 7. 7. 启动 Sim2Real 部署程序

`net_interface` 是连接机器人的网卡名，如 `enp3s0`；`config_name` 位于 `deploy/deploy_real/configs/`，如 `g1.yaml`、`h1.yaml`、`h1_2.yaml`。主工程中启动命令如下。
```bash
python deploy/deploy_real/deploy_real.py {net_interface} {config_name}
```

## 8. 8. 按遥控器切换真机状态

程序启动后关节为 zero torque state，可手动晃动确认。按 `start` 进入 default joint position state；准备完成后按 `A` 进入 motion control mode。退出时按 `select`，或在终端用 `ctrl+c`。

## 验证是否跑通

训练产物默认位于 `logs/<experiment_name>/<date_time>_<run_name>/model_<iteration>.pt`。Play 能在 Gym 中可视化训练结果，并在 `logs/{experiment_name}/exported/policies` 生成 `policy_1.pt` 或 `policy_lstm_1.pt`。MuJoCo 启动后可观察 Sim2Sim 结果；真机部署启动后，机器人依次进入 zero torque、default joint position、motion control mode，并可用遥控器摇杆控制移动。

## 文档里点名的注意事项

- Real-time visualization during training is not recommended to avoid reduced efficiency.
- `--task` 是训练必填参数，取值为 `go2`、`g1`、`h1`、`h1_2`。
- Play 默认加载 experiment folder 的 last run 中的 latest model；如需其他模型，使用 `load_run` 和 `checkpoint`。
- 真机部署前要确保机器人处于 `zero torque mode`，再按 `L2+R2` 进入 `debugging mode`。
- 示例部署不是 stable control program，仅用于 demonstration；控制过程中请尽量不要干扰机器人。
- 控制过程中如发生 unexpected situation，应及时退出控制以避免危险。

## 相关 SDK 条目

- [unitree_rl_gym](/sdks/unitreerobotics-unitree-rl-gym)

## 原始参考来源 (Sources)

- [raw.githubusercontent.com/unitreerobotics/unitree_rl_gym/main/README.md](https://raw.githubusercontent.com/unitreerobotics/unitree_rl_gym/main/README.md)
- [raw.githubusercontent.com/unitreerobotics/unitree_rl_gym/main/deploy/deploy_real/README.md](https://raw.githubusercontent.com/unitreerobotics/unitree_rl_gym/main/deploy/deploy_real/README.md)