Unitree G1 Simulation Guide: Choosing MuJoCo, RL Gym or Isaac Lab

Unitree maintains several official G1 simulation repositories, but they solve different problems. `unitree_mujoco` is aimed mainly at low-level controller and sim-to-real verification, `unitree_rl_gym` uses the standalone NVIDIA Isaac Gym training stack, and `unitree_rl_lab` plus `unitree_sim_isaaclab` are Isaac Lab paths.

Choose by the first artifact you need, not by which simulator looks newest. This page covers a no-hardware start; the wider robot simulator comparison explains platform trade-offs, and the sim-to-real failure guide covers transfer gaps.

Three names point to three different workflows

The official MuJoCo repository couples Unitree SDK2 messaging with MuJoCo and offers C++ and Python implementations. Its README describes low-level development and controller verification, with G1 and H1-2 using the `unitree_hg` IDL family.

`unitree_rl_gym` uses the standalone NVIDIA Isaac Gym stack, whereas `unitree_rl_lab` is based on Isaac Lab. Calling both 'Isaac Lab' hides incompatible environments, package versions, task registries and deployment steps.

Official pathBest first useImportant boundary
unitree_mujocoDDS and low-level controller verificationNot a complete RL training framework
unitree_rl_gymReproduce the existing Train / Play / Sim2Sim / Sim2Real flowUses standalone Isaac Gym with pinned dependencies
unitree_rl_labCurrent Isaac Lab reinforcement-learning tasksUse its task names and release-compatible Isaac Lab
unitree_sim_isaaclabIsaac Lab simulation with Unitree DDS integrationProvided weights are for simulation testing, not automatic hardware deployment

Choose MuJoCo when the controller interface is the question

Start with `unitree_mujoco` when you already have a low-level controller or SDK2 message loop and want to verify joint order, commands and observations without powering a robot. The official README recommends the C++ version and also provides Python examples.

Follow the G1-specific configuration and message type rather than running a Go2 default unchanged. Use loopback and an isolated DDS domain while learning the interface so simulation traffic cannot accidentally target a real robot.

Choose RL Gym for the standalone Isaac Gym workflow

`unitree_rl_gym` supports G1 and documents training, playback, sim-to-sim and sim-to-real stages. It can be useful for reproducing an existing Unitree locomotion workflow or checkpoint whose dependencies are already pinned.

Its setup uses standalone Isaac Gym, a Python 3.8 environment and specified PyTorch and RSL-RL versions. Do not mix commands from a current Isaac Lab tutorial into that environment and then attribute dependency errors to the robot model.

Front view of a REEM-B humanoid robot against a black background
This photo shows the REEM-B humanoid, not Unitree G1. It does not depict a G1 model, setup screen, or simulation result in MuJoCo, RL Gym, or Isaac Lab. Source: Facontidavide. License: Public domain dedication.

Choose Isaac Lab for the maintained learning path

For new reinforcement-learning work, inspect `unitree_rl_lab`, which lists G1-29dof tasks, and `unitree_sim_isaaclab`, which supplies G1 and H1-2 simulation and DDS-compatible paths. Verify the repository's current Isaac Lab compatibility before installation.

Select one repository as the source of truth for task names, assets and launch commands. Combining URDF or USD assets, reward files and configuration fragments across branches without a version record makes results difficult to reproduce.

First-run checkRecordFailure it prevents
Repository stateURL, branch/tag and commitSilent upstream changes
Robot assetG1 variant and joint listWrong degrees of freedom or order
MiddlewareInterface type, network interface and DDS domainNo messages or unsafe cross-talk
ControlMode, rate, gains and action scaleUnstable or saturated motion
EvaluationSeed, terrain, perturbations and success criteriaCherry-picked playback

A minimal sequence starts with smoke tests

Clone the chosen official repository, check its README at the pinned commit and create the exact environment it specifies. Load the G1 asset, run a passive or standing example with one simulation instance, inspect joint names and limits, and only then increase parallel environments or train a policy.

For learning, separate training and evaluation seeds and save the environment configuration with the checkpoint. The domain randomization guide is useful only after the nominal model and interfaces are correct.

Mobile decision card summarizing four key checks for Unitree G1 Simulation Guide: Choosing MuJoCo, RL Gym or Isaac Lab
A Physical AI Lab editorial card based on the article's cited official sources and comparison table. Source: Physical AI Lab. License: Owned original.

Sim-to-real is a new verification phase

Before hardware, verify controller frequency, state latency, units, joint mapping, torque and position limits, normalization statistics, startup pose and loss-of-communication behavior. Begin with support, conservative limits and an accessible emergency stop.

Official repository support means a path exists; it does not guarantee that an arbitrary policy is safe or effective on every G1 configuration. Treat each exported checkpoint as a versioned control artifact requiring its own review.

Frequently asked questions

Is unitree_rl_gym an Isaac Lab project?

No. It uses the standalone NVIDIA Isaac Gym stack. Unitree's `unitree_rl_lab` and `unitree_sim_isaaclab` are the Isaac Lab paths.

Which repository should I use to test a low-level G1 controller?

Use `unitree_mujoco` when the main goal is SDK2/DDS message and controller verification. Follow its G1 configuration and isolate the DDS domain.

Can I deploy a simulation checkpoint directly to G1?

No. Verify the robot variant, joint mapping, units, timing, limits, normalization and safety behavior, then use a staged low-energy hardware test.

Official sources checked

Last checked: August 7, 2026