BeyondMimic is a versatile humanoid control framework that provides highly dynamic motion tracking with the state-of-the-art motion quality on real-world deployment and steerable test-time control with guided diffusion-based controllers.
This repo covers the motion tracking training in BeyondMimic. You should be able to train any sim-to-real-ready motion in the LAFAN1 dataset, without tuning any parameters.
For sim-to-sim and sim-to-real deployment, please refer to the motion_tracking_controller.
Install Isaac Lab v2.1.0 by following the installation guide. We recommend using the conda installation as it simplifies calling Python scripts from the terminal.
Clone this repository separately from the Isaac Lab installation (i.e., outside the IsaacLab directory):
# Option 1: SSH
git clone git@github.com:HybridRobotics/whole_body_tracking.git
# Option 2: HTTPS
git clone https://github.com/HybridRobotics/whole_body_tracking.git
# Enter the repository
cd whole_body_tracking
# Rename all occurrences of whole_body_tracking (in files/directories) to your_fancy_extension_name
curl -L -o unitree_description.tar.gz https://storage.googleapis.com/qiayuanl_robot_descriptions/unitree_description.tar.gz && \
tar -xzf unitree_description.tar.gz -C source/whole_body_tracking/whole_body_tracking/assets/ && \
rm unitree_description.tar.gz
python -m pip install -e source/whole_body_tracking
In order to manage the large set of motions we used in this work, we leverage the WandB registry to store and load reference motions automatically. Note: The reference motion should be retargeted and use generalized coordinates only.
Gather the reference motion datasets (please follow the original licenses), we use the same convention as .csv of Unitree's dataset
Log in to your WandB account; access Registry under Core on the left. Create a new registry collection with the name " Motions" and artifact type "All Types".
Convert retargeted motions to include the maximum coordinates information (body pose, body velocity, and body acceleration) via forward kinematics,
python scripts/csv_to_npz.py --input_file {motion_name}.csv --input_fps 30 --output_name {motion_name} --headless
This will automatically upload the processed motion file to the WandB registry with output name {motion_name}.
python scripts/replay_npz.py --registry_name={your-organization}-org/wandb-registry-motions/{motion_name}
python scripts/rsl_rl/train.py --task=Tracking-Flat-G1-v0 \
--registry_name {your-organization}-org/wandb-registry-motions/{motion_name} \
--headless --logger wandb --log_project_name {project_name} --run_name {run_name}
python scripts/rsl_rl/play.py --task=Tracking-Flat-G1-v0 --num_envs=2 --wandb_path={wandb-run-path}
The WandB run path can be located in the run overview. It follows the format {your_organization}/{project_name}/ along with a unique 8-character identifier. Note that run_name is different from run_path.
Below is an overview of the code structure for this repository:
source/whole_body_tracking/whole_body_tracking/tasks/tracking/mdp
This directory contains the atomic functions to define the MDP for BeyondMimic. Below is a breakdown of the functions:
commands.py
Command library to compute relevant variables from the reference motion, current robot state, and error
computations. This includes pose and velocity error calculation, initial state randomization, and adaptive
sampling.
rewards.py
Implements the DeepMimic reward functions and smoothing terms.
events.py
Implements domain randomization terms.
observations.py
Implements observation terms for motion tracking and data collection.
terminations.py
Implements early terminations and timeouts.
source/whole_body_tracking/whole_body_tracking/tasks/tracking/tracking_env_cfg.py
Contains the environment (MDP) hyperparameters configuration for the tracking task.
source/whole_body_tracking/whole_body_tracking/tasks/tracking/config/g1/agents/rsl_rl_ppo_cfg.py
Contains the PPO hyperparameters for the tracking task.
source/whole_body_tracking/whole_body_tracking/robots
Contains robot-specific settings, including armature parameters, joint stiffness/damping calculation, and action scale
calculation.
scripts
Includes utility scripts for preprocessing motion data, training policies, and evaluating trained policies.
This structure is designed to ensure modularity and ease of navigation for developers expanding the project.
578 followers · starred Feb 2026
408 followers · starred Aug 2025
19 followers · starred Aug 2025
82 followers · starred Mar 2026
BeyondMimic is a versatile humanoid control framework that provides highly dynamic motion tracking with the state-of-the-art motion quality on real-world deployment and steerable test-time control with guided diffusion-based controllers.
This repo covers the motion tracking training in BeyondMimic. You should be able to train any sim-to-real-ready motion in the LAFAN1 dataset, without tuning any parameters.
For sim-to-sim and sim-to-real deployment, please refer to the motion_tracking_controller.
Install Isaac Lab v2.1.0 by following the installation guide. We recommend using the conda installation as it simplifies calling Python scripts from the terminal.
Clone this repository separately from the Isaac Lab installation (i.e., outside the IsaacLab directory):
# Option 1: SSH
git clone git@github.com:HybridRobotics/whole_body_tracking.git
# Option 2: HTTPS
git clone https://github.com/HybridRobotics/whole_body_tracking.git
# Enter the repository
cd whole_body_tracking
# Rename all occurrences of whole_body_tracking (in files/directories) to your_fancy_extension_name
curl -L -o unitree_description.tar.gz https://storage.googleapis.com/qiayuanl_robot_descriptions/unitree_description.tar.gz && \
tar -xzf unitree_description.tar.gz -C source/whole_body_tracking/whole_body_tracking/assets/ && \
rm unitree_description.tar.gz
python -m pip install -e source/whole_body_tracking
In order to manage the large set of motions we used in this work, we leverage the WandB registry to store and load reference motions automatically. Note: The reference motion should be retargeted and use generalized coordinates only.
Gather the reference motion datasets (please follow the original licenses), we use the same convention as .csv of Unitree's dataset
Log in to your WandB account; access Registry under Core on the left. Create a new registry collection with the name " Motions" and artifact type "All Types".
Convert retargeted motions to include the maximum coordinates information (body pose, body velocity, and body acceleration) via forward kinematics,
python scripts/csv_to_npz.py --input_file {motion_name}.csv --input_fps 30 --output_name {motion_name} --headless
This will automatically upload the processed motion file to the WandB registry with output name {motion_name}.
python scripts/replay_npz.py --registry_name={your-organization}-org/wandb-registry-motions/{motion_name}
python scripts/rsl_rl/train.py --task=Tracking-Flat-G1-v0 \
--registry_name {your-organization}-org/wandb-registry-motions/{motion_name} \
--headless --logger wandb --log_project_name {project_name} --run_name {run_name}
python scripts/rsl_rl/play.py --task=Tracking-Flat-G1-v0 --num_envs=2 --wandb_path={wandb-run-path}
The WandB run path can be located in the run overview. It follows the format {your_organization}/{project_name}/ along with a unique 8-character identifier. Note that run_name is different from run_path.
Below is an overview of the code structure for this repository:
source/whole_body_tracking/whole_body_tracking/tasks/tracking/mdp
This directory contains the atomic functions to define the MDP for BeyondMimic. Below is a breakdown of the functions:
commands.py
Command library to compute relevant variables from the reference motion, current robot state, and error
computations. This includes pose and velocity error calculation, initial state randomization, and adaptive
sampling.
rewards.py
Implements the DeepMimic reward functions and smoothing terms.
events.py
Implements domain randomization terms.
observations.py
Implements observation terms for motion tracking and data collection.
terminations.py
Implements early terminations and timeouts.
source/whole_body_tracking/whole_body_tracking/tasks/tracking/tracking_env_cfg.py
Contains the environment (MDP) hyperparameters configuration for the tracking task.
source/whole_body_tracking/whole_body_tracking/tasks/tracking/config/g1/agents/rsl_rl_ppo_cfg.py
Contains the PPO hyperparameters for the tracking task.
source/whole_body_tracking/whole_body_tracking/robots
Contains robot-specific settings, including armature parameters, joint stiffness/damping calculation, and action scale
calculation.
scripts
Includes utility scripts for preprocessing motion data, training policies, and evaluating trained policies.
This structure is designed to ensure modularity and ease of navigation for developers expanding the project.
578 followers · starred Feb 2026
408 followers · starred Aug 2025
19 followers · starred Aug 2025
82 followers · starred Mar 2026