Go to file
craipy 757b051580 update readme for detail 2024-12-25 12:09:36 +08:00
deploy update readme 2024-12-12 10:04:52 +08:00
doc update readme for detail 2024-12-25 12:09:36 +08:00
legged_gym modify push robot 2024-12-25 09:40:36 +08:00
resources/robots update the trainning of g1,h1,h1_2 2024-11-29 17:02:27 +08:00
.gitignore add .gitignore 2024-07-25 10:25:38 +08:00
LICENSE first 2023-10-11 15:38:49 +08:00
README.md update readme for detail 2024-12-25 12:09:36 +08:00
README_zh.md update readme for detail 2024-12-25 12:09:36 +08:00
setup.py add the sim2sim code on mujoco 2024-11-29 17:02:34 +08:00

README.md

Unitree RL GYM

🌎English | 🇨🇳中文

This is a repository for reinforcement learning implementation based on Unitree robots, supporting Unitree Go2, H1, H1_2, and G1.

Isaac Gym
Mujoco
Physical

📦 Installation and Configuration

Please refer to setup.md for installation and configuration steps.

🔁 Process Overview

The basic workflow for using reinforcement learning to achieve motion control is:

TrainPlaySim2SimSim2Real

  • Train: Use the Gym simulation environment to let the robot interact with the environment and find a policy that maximizes the designed rewards. Real-time visualization during training is not recommended to avoid reduced efficiency.
  • Play: Use the Play command to verify the trained policy and ensure it meets expectations.
  • Sim2Sim: Deploy the Gym-trained policy to other simulators to ensure its not overly specific to Gym characteristics.
  • Sim2Real: Deploy the policy to a physical robot to achieve motion control.

🛠️ User Guide

1. Training

Run the following command to start training:

python legged_gym/scripts/train.py --task=xxx

⚙️ Parameter Description

  • --task: Required parameter; values can be (go2, g1, h1, h1_2).
  • --headless: Defaults to starting with a graphical interface; set to true for headless mode (higher efficiency).
  • --resume: Resume training from a checkpoint in the logs.
  • --experiment_name: Name of the experiment to run/load.
  • --run_name: Name of the run to execute/load.
  • --load_run: Name of the run to load; defaults to the latest run.
  • --checkpoint: Checkpoint number to load; defaults to the latest file.
  • --num_envs: Number of environments for parallel training.
  • --seed: Random seed.
  • --max_iterations: Maximum number of training iterations.
  • --sim_device: Simulation computation device; specify CPU as --sim_device=cpu.
  • --rl_device: Reinforcement learning computation device; specify CPU as --rl_device=cpu.

Default Training Result Directory: logs/<experiment_name>/<date_time>_<run_name>/model_<iteration>.pt


2. Play

To visualize the training results in Gym, run the following command:

python legged_gym/scripts/play.py --task=xxx

Description:

  • Plays parameters are the same as Trains.
  • By default, it loads the latest model from the experiment folders last run.
  • You can specify other models using load_run and checkpoint.

💾 Export Network

Play exports the Actor network, saving it in logs/{experiment_name}/exported/policies:

  • Standard networks (MLP) are exported as policy_1.pt.
  • RNN networks are exported as policy_lstm_1.pt.

Play Results

Go2 G1 H1 H1_2
go2 g1 h1 h1_2

3. Sim2Sim (Mujoco)

Run Sim2Sim in the Mujoco simulator:

python deploy/deploy_mujoco/deploy_mujoco.py {config_name}

Parameter Description

  • config_name: Configuration file; default search path is deploy/deploy_mujoco/configs/.

Example: Running G1

python deploy/deploy_mujoco/deploy_mujoco.py g1.yaml

➡️ Replace Network Model

The default model is located at deploy/pre_train/{robot}/motion.pt; custom-trained models are saved in logs/g1/exported/policies/policy_lstm_1.pt. Update the policy_path in the YAML configuration file accordingly.

Simulation Results

G1 H1 H1_2
mujoco_g1 mujoco_h1 mujoco_h1_2

4. Sim2Real (Physical Deployment)

Before deploying to the physical robot, ensure its in debug mode. Detailed steps can be found in the Physical Deployment Guide:

python deploy/deploy_real/deploy_real.py {net_interface} {config_name}

Parameter Description

  • net_interface: Network card name connected to the robot, e.g., enp3s0.
  • config_name: Configuration file located in deploy/deploy_real/configs/, e.g., g1.yaml, h1.yaml, h1_2.yaml.

Deployment Results

G1 H1 H1_2
real_g1 real_h1 real_h1_2

🎉 Acknowledgments

This repository is built upon the support and contributions of the following open-source projects. Special thanks to:

  • legged_gym: The foundation for training and running codes.
  • rsl_rl: Reinforcement learning algorithm implementation.
  • mujoco: Providing powerful simulation functionalities.
  • unitree_sdk2_python: Hardware communication interface for physical deployment.

🔖 License

This project is licensed under the BSD 3-Clause License:

  1. The original copyright notice must be retained.
  2. The project name or organization name may not be used for promotion.
  3. Any modifications must be disclosed.

For details, please read the full LICENSE file.