Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

unitreerobotics/unitree_rl_lab

Open more actions menu

Repository files navigation

Unitree RL Lab

IsaacSim Isaac Lab License Discord

Overview

This project provides a set of reinforcement learning environments for Unitree robots, built on top of IsaacLab.

Currently supports Unitree Go2, H1 and G1-29dof robots.

Isaac Lab
Mujoco
Physical

Installation

  • Install Isaac Lab by following the installation guide.

  • Install the Unitree RL IsaacLab standalone environments.

    • Clone or copy this repository separately from the Isaac Lab installation (i.e. outside the IsaacLab directory):

      git clone https://github.com/unitreerobotics/unitree_rl_lab.git
    • Use a python interpreter that has Isaac Lab installed, install the library in editable mode using:

      conda activate env_isaaclab
      ./unitree_rl_lab.sh -i
      # restart your shell to activate the environment changes.
  • Download unitree robot description files

    Method 1: Using USD Files

    • Download unitree usd files from unitree_model, keeping folder structure

      git clone https://huggingface.co/datasets/unitreerobotics/unitree_model
    • Config UNITREE_MODEL_DIR in source/unitree_rl_lab/unitree_rl_lab/assets/robots/unitree.py.

      UNITREE_MODEL_DIR = "</home/user/projects/unitree_usd>"

    Method 2: Using URDF Files [Recommended] Only for Isaacsim >= 5.0

    • Download unitree robot urdf files from unitree_ros
      git clone https://github.com/unitreerobotics/unitree_ros.git
      
    • Config UNITREE_ROS_DIR in source/unitree_rl_lab/unitree_rl_lab/assets/robots/unitree.py.
      UNITREE_ROS_DIR = "</home/user/projects/unitree_ros/unitree_ros>"
    • [Optional]: change robot_cfg.spawn if you want to use urdf files
  • Verify that the environments are correctly installed by:

    • Listing the available tasks:

      ./unitree_rl_lab.sh -l # This is a faster version than isaaclab
    • Running a task:

      ./unitree_rl_lab.sh -t --task Unitree-G1-29dof-Velocity # support for autocomplete task-name
      # same as
      python scripts/rsl_rl/train.py --headless --task Unitree-G1-29dof-Velocity
    • Inference with a trained agent:

      ./unitree_rl_lab.sh -p --task Unitree-G1-29dof-Velocity # support for autocomplete task-name
      # same as
      python scripts/rsl_rl/play.py --task Unitree-G1-29dof-Velocity

Deploy

After the model training is completed, we need to perform sim2sim on the trained strategy in Mujoco to test the performance of the model. Then deploy sim2real.

Setup

# Install dependencies
sudo apt install -y libyaml-cpp-dev libboost-all-dev libeigen3-dev libspdlog-dev libfmt-dev
# Install unitree_sdk2
git clone git@github.com:unitreerobotics/unitree_sdk2.git
cd unitree_sdk2
mkdir build && cd build
cmake .. -DBUILD_EXAMPLES=OFF # Install on the /usr/local directory
sudo make install
# Compile the robot_controller
cd unitree_rl_lab/deploy/robots/g1_29dof # or other robots
mkdir build && cd build
cmake .. && make

Sim2Sim

Installing the unitree_mujoco.

  • Set the robot at /simulate/config.yaml to g1
  • Set domain_id to 0
  • Set enable_elastic_hand to 1
  • Set use_joystck to 1.
# start simulation
cd unitree_mujoco/simulate/build
./unitree_mujoco
# ./unitree_mujoco -i 0 -n eth0 -r g1 -s scene_29dof.xml # alternative
cd unitree_rl_lab/deploy/robots/g1_29dof/build
./g1_ctrl
# 1. press [L2 + Up] to set the robot to stand up
# 2. Click the mujoco window, and then press 8 to make the robot feet touch the ground.
# 3. Press [R1 + X] to run the policy.
# 4. Click the mujoco window, and then press 9 to disable the elastic band.

Sim2Real

You can use this program to control the robot directly, but make sure the on-borad control program has been closed.

./g1_ctrl --network eth0 # eth0 is the network interface name.

Acknowledgements

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

  • IsaacLab: The foundation for training and running codes.
  • mujoco: Providing powerful simulation functionalities.
  • robot_lab: Referenced for project structure and parts of the implementation.
  • whole_body_tracking: Versatile humanoid control framework for motion tracking.

About

This is a repository for reinforcement learning implementation for Unitree robots, based on IsaacLab.

Resources

License

Stars

Watchers

Forks

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.