2026-04-17 21:58:53 +08:00
2026-03-26 21:12:27 +08:00
2026-04-01 21:23:00 +08:00
2026-03-23 03:17:59 +08:00
2026-03-25 20:01:34 +08:00
2026-04-01 21:23:00 +08:00
2026-03-23 03:17:59 +08:00
2026-03-26 21:12:27 +08:00

go2_rl_robotlab

Overview

Trains the Unitree Go2 robot using MoE-CTS in IsaacLab and deploys the trained policy to MuJoCo for simulation transfer (Sim2Sim).

It is a reproduction of go2_rl_gym, adapted to the RobotLab / IsaacLab ecosystem.



Installation Guide

1. Install IsaacLab

Install IsaacLab 2.3.0 release by following the installation guide.

After installation, your environment should satisfies:

isaacsim <= 5.1.0.0   # tested on 5.1.0.0
isaaclab <= 0.53.1    # tested on 0.53.1
isaaclab-rl <= 0.4.7  # tested on 0.4.7

Higher version may cause conflicts with our customized rsl_rl==3.3.0 and robot_lab==2.3.0.


2. Install Customized RSL-RL and RobotLab

We uses a customized version of rsl_rl and robot_lab. Install them in editable mode:

python -m pip install -e source/robot_lab
python -m pip install -e source/rsl_rl

3. Install MuJoCo (Optional, for Sim2Sim)

To enable MuJoCo-based simulation:

pip install mujoco  # tested on 3.4.0 and 3.6.0

Training and Evaluation

Run the following commands:

# Train
python scripts/rsl_rl/train.py \
    --task=RobotLab-Go2-v0 \
    --headless

# Play / Evaluate
python scripts/rsl_rl/play.py \
    --task=RobotLab-Go2-v0

Configuration

The training pipeline can be configured at two levels: task-level Python configuration files and runtime arguments passed to the training script.

Task-Level Configuration

The default task settings are defined in the following files:

  1. Environment configuration

    source/robot_lab/robot_lab/tasks/go2/env_cfg.py
    
  2. RL algorithm configuration

    source/robot_lab/robot_lab/tasks/go2/rsl_rl_cfg.py
    
  3. Task registration

    source/robot_lab/robot_lab/tasks/go2/__init__.py
    

Runtime Overrides

In addition to the default configuration files, train.py and play.py supports several command-line arguments for runtime overrides:

--experiment_name <YOUR_EXP_NAME>
--run_name <YOUR_RUN_NAME>
--num_envs <NUM_ENVS>
--checkpoint <PATH_TO_CHECKPOINT>

For more details, refer to the robot_lab repo.


MuJoCo Sim2Sim

Run the deployment script:

python deploy/deploy_mujoco/deploy_go2.py

Controller Behavior

  • Automatic detection: If a controller is connected, control mode is enabled automatically.
  • Fallback mode: If no controller is detected, default commands from the config file are used.

Controller Mapping

Input Function
LX / LY Forward / lateral velocity
RX Angular velocity (steering)

Switching Simulation Scenarios

Modify xml_path in:

deploy/deploy_mujoco/config/go2.yaml
# Flat terrain
xml_path: "{ROOT_DIR}/resources/go2/flat.xml"

# Stairs
xml_path: "{ROOT_DIR}/resources/go2/stairs.xml"

# Boxes
xml_path: "{ROOT_DIR}/resources/go2/boxes.xml"

# Custom
xml_path: "{ROOT_DIR}/resources/go2/your-custom-scene.xml"

Differences from go2_rl_gym

  • Different terrain composition
  • Different tracking reward formulation (fixed sigma vs. dynamic sigma)

TODO

  • Try replacing ActionManager-level delay with DelayedPDActuatorCfg

Acknowledgements

This repository would not exist without the following open-source projects:

  • isaac_lab: Unified framework for robot learning built on NVIDIA Isaac Sim.
  • rsl_rl: Reinforcement learning algorithms.
  • robot_lab: RL Extension Library for Robots, Based on IsaacLab.
  • mujoco: High-performance CPU physics simulator.

Related publications implemented in this repo:

Description
No description provided
Readme 36 MiB
Languages
Python 100%