# unitree_rl_mjlab **Repository Path**: raincut/unitree_rl_mjlab ## Basic Information - **Project Name**: unitree_rl_mjlab - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-13 - **Last Updated**: 2026-03-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Unitree RL Mjlab ## ✳️ 概述 Unitree RL Mjlab 是一个基于 [mjlab](https://github.com/mujocolab/mjlab.git) 构建的强化学习项目, 使用 MuJoCo 作为物理仿真后端,当前支持 Unitree Go2, A2, G1, H1_2 和 R1 机器人。 Mjlab 结合了 [Isaac Lab](https://github.com/isaac-sim/IsaacLab) 的成熟高层 API 与 [MuJoCo](https://github.com/google-deepmind/mujoco_warp) 的高精度物理引擎, 为强化学习机器人研究与 Sim-to-Real(仿真到实机) 部署提供了一个轻量化、模块化的框架。
|
MuJoCo
|
Physical
| |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
|
|
## 📦 安装配置 安装和配置步骤请参考 [setup.md](doc/setup_zh.md) ## 🔁 流程概览 使用强化学习实现机器人运动控制的基本流程如下: `训练` → `仿真验证` → `仿真到实机` - **训练**: 在 MuJoCo 模拟环境中让机器人与环境交互,并通过奖励函数最大化学习策略。 - **仿真验证**: 加载训练好的策略进行回放,验证策略行为是否符合预期。 - **仿真到实机**: 将策略部署到物理机器人上,实现真实环境中的运动控制。 ## 🛠️ 使用指南 ### 1. 速度跟踪训练 运行以下命令进行速度跟踪训练: ```bash python scripts/train.py Unitree-G1-Flat --env.scene.num-envs=4096 ``` 多 GPU 训练:使用 --gpu-ids 扩展到多块 GPU: ```bash python scripts/train.py Unitree-G1-Flat \ --gpu-ids 0 1 \ --env.scene.num-envs=4096 ``` - 第一个参数(如 Mjlab-Velocity-Flat-Unitree-G1)为必选参数,确定要启用的训练环境。可选: - Unitree-Go2-Flat - Unitree-G1-Flat - Unitree-G1-23Dof-Flat - Unitree-H1_2-Flat - Unitree-A2-Flat - Unitree-R1-Flat > [!NOTE] > 更多有关详细说明,请参阅 mjlab 文档 > [mjlab documentation](https://mujocolab.github.io/mjlab/index.html). ### 2. 动作模仿训练 训练 Unitree G1 模仿参考动作序列。
#### 2.1 准备动作文件 将准备好的 csv 格式的动作文件保存在 mjlab/motions/g1/ 目录下,执行下面的指令将其转为训练可用的 npz 文件: ```bash python scripts/csv_to_npz.py \ --input-file src/assets/motions/g1/dance1_subject2.csv \ --output-name dance1_subject2.npz \ --input-fps 30 \ --output-fps 50 ``` **npz文件默认保存路径为**:`src/motions/g1/...` #### 2.2 训练 确保有可用的npz文件之后,执行以下指令进行训练: ```bash python scripts/train.py Unitree-G1-Tracking --motion_file=src/assets/motions/g1/dance1_subject2.npz --env.scene.num-envs=4096 ```
> [!NOTE] > 有关动作模仿训练的详细说明,请参阅BeyondMimic 文档 > [BeyondMimic documentation](https://github.com/HybridRobotics/whole_body_tracking/blob/main/README.md#motion-preprocessing--registry-setup). #### ⚙️ 参数说明 - `--env.scene`: 仿真场景配置,包括环境数量(num_envs)、物理仿真步长、地面类型、重力、随机扰动等参数。 - `--env.observations`: 观测空间配置,控制训练时输入到策略网络的状态信息,如关节位置、速度、IMU等内容。 - `--env.rewards`: 奖励函数配置,定义每步训练时的优化目标。 - `--env.commands`: 控制命令配置,用于生成训练时随机或指定的速度 / 姿态 / 动作指令。 - `--env.terminations`: 终止条件配置,定义训练 episode 的结束条件。 - `--agent.seed`: 训练随机种子,用于结果复现,不同 seed 会导致策略略有差异。 - `--agent.resume`: 是否从上次中断的 checkpoint 继续训练。 设置为 True 时,会自动加载最近一次保存的 .pt 模型文件。 - `--agent.policy`: 策略网络结构配置,例如 MLP 层数、隐藏维度、激活函数等。 - `--agent.algorithm`: 强化学习算法配置。可设置优化超参数,如学习率、批量大小、GAE λ 等。 **默认保存训练结果**:`logs/rsl_rl/_(velocity | tracking)//model_.pt` ### 3. 仿真验证 如果想要在 MuJoCo 中查看训练效果,可以运行以下命令: 查看速度跟踪训练效果: ```bash python scripts/play.py Unitree-G1-Flat --checkpoint_file=logs/rsl_rl/g1_velocity/2026-xx-xx_xx-xx-xx/model_xx.pt ``` 查看动作模仿训练效果: ```bash python scripts/play.py Unitree-G1-Tracking --motion_file=src/assets/motions/g1/dance1_subject2.npz --checkpoint_file=logs/rsl_rl/g1_tracking/2026-xx-xx_xx-xx-xx/model_xx.pt ``` **说明**: - 训练时在每次保存模型时会同步导出 policy.onnx 文件在同层目录下,可用于实物部署。 **效果**: | Go2 | G1 | H1_2 | G1_mimic | |----------------------------------|--------------------------------|------------------------------------|-----------------------------------| | ![go2](doc/gif/go2-velocity.gif) | ![g1](doc/gif/g1-velocity.gif) | ![h1_2](doc/gif/h1_2-velocity.gif) | ![g1_mimic](doc/gif/g1-mimic.gif) | ### 4. 实物部署 实物部署前先确保主机安装了下列通信工具: - [cyclonedds](https://github.com/eclipse-cyclonedds/cyclonedds.git) - [unitree_sdk2](https://github.com/unitreerobotics/unitree_sdk2.git)
#### 4.1 启动机器人 将机器人在吊装状态下启动,并等待机器人进入 `零力矩模式` #### 4.2 进入调试模式 确保机器人处于 `零力矩模式` 的情况下,按下遥控器的 `L2+R2`组合键;此时机器人会进入`调试模式`, `调试模式`下机器人关节处于阻尼状态。 #### 4.3 连接机器人 使用网线连接电脑与机器人网口,并修改网络配置如下: - 地址:`192.168.123.222` - 子网掩码:`255.255.255.0` 然后使用 `ifconfig` 命令查看与机器人连接的网卡名称,记录后用于启动参数。 #### 4.4 编译 以 Unitree G1 速度控制为例(其他机器人同理)。 将策略文件(`policy.onnx`)放入`deploy/robots/g1/config/policy/velocity/vo/exported` 下,然后执行: ```bash cd deploy/robots/g1 mkdir build && cd build cmake .. && make ``` #### 4.5 部署 在编译完成后,执行以下指令: ```bash cd deploy/robots/g1/build ./g1_ctrl --network=enp5s0 ``` **参数说明**: - `network`: 连接机器人网卡名称,如 `enp5s0`
**实物效果**: | Go2 | G1 | H1_2 | G1_mimic | |--------------------------------------------------------|-------------------------------------------------------|---------------------------------------------------------|----------------------------------------------------| | | | | | ## 🎉 致谢 本仓库开发离不开以下开源项目的支持与贡献,特此感谢: - [mjlab](https://github.com/mujocolab/mjlab.git): 构建训练与运行代码的基础。 - [whole_body_tracking](https://github.com/HybridRobotics/whole_body_tracking.git): 用于动作跟踪的通用人形机器人控制框架。 - [rsl_rl](https://github.com/leggedrobotics/rsl_rl.git): 强化学习算法实现。 - [mujoco_warp](https://github.com/google-deepmind/mujoco_warp.git): 提供 GPU 加速渲染与仿真接口。 - [mujoco](https://github.com/google-deepmind/mujoco.git): 提供强大仿真功能。