NDM Gym weights

Trained policies and world models of NDM Gym, one folder per benchmark. Each folder holds the checkpoints behind that benchmark's published results; other benchmarks are added as their results are published.

folder benchmark checkpoints
g1_lafan1_tracking/ G1 / LAFAN1 motion tracking SuperTrack and SuperMimic, MLP and RigidFormer world models, 12 runs

G1 / LAFAN1 motion tracking

SuperTrack and SuperMimic on the Unitree G1 (29 DoF), all 40 LAFAN1 clips, 3 h of training on one A100 each.

folder algorithm world model seeds iterations in 3 h
g1_lafan1_tracking/supertrack-mlp SuperTrack MLP 1, 2, 3 12,661 / 12,610 / 12,740
g1_lafan1_tracking/supermimic-mlp SuperMimic MLP 1, 2, 3 13,606 / 13,688 / 13,326
g1_lafan1_tracking/supertrack-rf SuperTrack-RF RigidFormer 7, 8, 9 12,654 / 12,677 / 12,696
g1_lafan1_tracking/supermimic-rf SuperMimic-RF RigidFormer 7, 8, 9 10,710 / 10,694 / 10,726

Each seed<k>.pt is that run's 3 h checkpoint: pi (the policy, 9.1 M parameters), wm (the world model: MLP 8.8 M, RigidFormer 0.88 M), args (the training arguments), iteration, wall_time, sim_steps and saved_at. Optimizer states are not included, so training cannot be resumed from these files.

Mean ± std over the three seeds; each seed averages three standard evaluations (the push rows use one push test). Details: README and results.md.

MLP world model, the selected configurations (seeds 1-3):

SuperTrack SuperMimic
normalized return 0.832 ± 0.009 0.824 ± 0.013
failed clips (of 40) 0.9 ± 0.8 1.2 ± 1.2
MPJPE, root-relative (mm) 20.0 ± 0.7 28.4 ± 0.5
joint-angle error (deg) 2.32 ± 0.06 4.89 ± 0.03
failed clips under root pushes of 1 m/s every 2 s 7.7 ± 2.3 1.7 ± 0.6
failed clips under root pushes of 2 m/s every 2 s 24.7 ± 1.2 9.3 ± 1.2

RigidFormer world model, the final configurations with every speed option (seeds 7-9):

SuperTrack-RF SuperMimic-RF
normalized return 0.832 ± 0.003 0.804 ± 0.007
failed clips (of 40) 0.4 ± 0.5 0.8 ± 0.4
MPJPE, root-relative (mm) 21.0 ± 1.3 33.1 ± 0.5
joint-angle error (deg) 2.24 ± 0.05 6.05 ± 0.62
failed clips under root pushes of 1 m/s every 2 s 5.3 ± 1.2 1.3 ± 0.6
failed clips under root pushes of 2 m/s every 2 s 24.3 ± 3.1 9.0 ± 2.0

Each run's exact arguments are in its file's args.

Use

git clone --recursive https://github.com/Frank-ZY-Dou/ndm-gym.git && cd ndm-gym
bash scripts/setup.sh && source ~/ndm_gym/venv/bin/activate    # also downloads the motions and the G1 into data/
hf download frankzydou/ndm-gym --include "g1_lafan1_tracking/*" --local-dir weights
W=weights/g1_lafan1_tracking
ndm-eval --run_dir $W/supertrack-mlp --ckpt $W/supertrack-mlp/seed1.pt --out_json st_seed1.json
ndm-eval --run_dir $W/supertrack-mlp --ckpt $W/supertrack-mlp/seed1.pt --record st_seed1.npz   # for tools/compare_videos.py

In Python (torch.load with weights_only=True works):

import torch
from ndm_gym.algos import world_model_from_args
from ndm_gym.policies.tracking_policy import TrackingPolicy
from ndm_gym.tasks.tracking import OBS_DIM

ck = torch.load("weights/g1_lafan1_tracking/supertrack-mlp/seed1.pt", map_location="cpu", weights_only=True)
a = ck["args"]
pi = TrackingPolicy(OBS_DIM, 73 * a["goal_frames"], hist=a["hist"])
pi.load_state_dict(ck["pi"])
wm = world_model_from_args(a)
wm.load_state_dict(ck["wm"])

License

The weights are not covered by the MIT license of NDM Gym's code; each folder follows the terms of the data its weights were trained on (LICENSE). g1_lafan1_tracking/: LAFAN1 motions (© 2018 Ubisoft Entertainment; CC BY-NC-ND 4.0; https://github.com/ubisoft/ubisoft-laforge-animation-dataset) retargeted to the G1 (LAFAN1 Retargeting Dataset), for non-commercial research use only.

Citation

@misc{ndmgym2026,
  title        = {NDM Gym: Neural Dynamics Modeling Gym},
  author       = {{NDM Gym Contributors}},
  year         = {2026},
  howpublished = {\url{https://github.com/Frank-ZY-Dou/ndm-gym}}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading