.. _motion-imitation: Motion Imitation ================ mjlab can train humanoid policies to imitate reference motions. This page covers motion data preprocessing and training. WandB registry setup -------------------- mjlab uses `Weights & Biases `_ to store and load reference motions. Before preprocessing any motions, create a WandB registry by following the `BeyondMimic instructions `_ (only the registry creation step; skip the ``csv_to_npz.py`` command shown there). Motion preprocessing -------------------- Reference motions are retargeted CSV files in Unitree's generalized coordinate convention (base position, base quaternion in xyzw, then joint angles). Convert a CSV to the NPZ format mjlab expects: .. code-block:: bash MUJOCO_GL=egl uv run -m mjlab.scripts.csv_to_npz \ --input-file \ --output-name \ --input-fps 30 \ --output-fps 50 \ --render True The script plays the motion through MuJoCo Warp, computes forward kinematics for every body, and uploads the resulting NPZ to your WandB registry. .. warning:: You **must** use mjlab's converter (``mjlab.scripts.csv_to_npz``). Converters from other frameworks such as IsaacLab produce NPZ files with incompatible body orderings. The NPZ stores precomputed body positions and quaternions indexed by body number, and different physics engines assign body indices differently (MuJoCo uses depth first traversal, PhysX uses breadth first). A mismatched NPZ will map tracking targets to the wrong bodies and training will not converge. Training -------- .. code-block:: bash uv run train Mjlab-Tracking-Flat-Unitree-G1 \ --registry-name your-org/motions/motion-name \ --env.scene.num-envs 4096 Evaluation ---------- .. code-block:: bash uv run play Mjlab-Tracking-Flat-Unitree-G1 \ --wandb-run-path your-org/mjlab/run-id