PMT — Perceptive Motion Tracking
Project page: https://acodedog.github.io/perceptive-bfm/
Cartwheel
Backflip
PMT trains humanoid motion-tracking RL policies for the Unitree G1 on
Isaac Lab: DeepMimic-style imitation, vision/terrain
perception, cross-embodiment (SONIC), adversarial imitation (ADD), and
teacher → distill → finetune pipelines. Everything is config-driven: a task selects
independent axes (robot / terrain / motion / obs / reward / network / algorithm /
stage) and the builder derives the coupled ones, failing loud on invalid combos.
What's in this repo
- Training & playback —
scripts/train.py / scripts/play.py over a catalog of ~25 G1 tasks
(Task catalog), config-composed from configs/ by the
pmt_tasks/ task layer.
- Pretrained policies — ready-to-run G1 checkpoints under
checkpoints/pretrained/.
- Demo motion data — a 99-pair sample of
raw/optimized terrain clips + terrain meshes
under assets/ so the terrain/distill tasks run out-of-the-box.
- TCRS — an MPPI terrain-motion optimizer (
TCRS/) that generates the
optimized clips from raw motion + a terrain scene.
- MuJoCo backend — the flat task family also runs on mjlab
(MuJoCo-Warp); see
docs/MJLAB_USAGE.md.
Scope: this is a research/training codebase. It runs inside an existing Isaac Lab install
(it does not vendor Isaac Sim / Isaac Lab) — see Install.
Install
PMT runs inside an Isaac Lab Python environment — it does not vendor Isaac Sim / Isaac Lab. Get a
working Isaac Lab install first, then install PMT (editable) into that env:
conda activate # the env that has Isaac Lab + Isaac Sim
export OMNI_KIT_ACCEPT_EULA=YES # accept the Omniverse EULA for headless launches
cd /path/to/PMT
python -m pip install -e . # installs the motion_tracking_rl RL core
Run all commands from the repository root (pmt_tasks/, configs/, scripts/ are used in place).
Prerequisites: an importable isaaclab / isaaclab_tasks, Python ≥ 3.10, the Unitree G1 robot
assets (resolved via PMT_ASSET_DIR — not vendored), and per-task motion *.npz clips.
**Pat