Downloads · 30 days
0
ibnzterrell/g1_kozak
g1_kozak is a robotics model from ibnzterrell. Use it for the robotics task on the model card, and read the license before you ship it in a product. It is set up for onnx. The card lists the license as other.
A whole-body motion-tracking policy for the Unitree G1 (29 DoF), fine-tuned from NVIDIA's released SONIC checkpoint to perform the kozak (prysiadka) — the Ukrainian squat-kick, danced in a deep squat with the legs thr…
Downloads · 30 days
0
Access
Public
Updated Aug 17, 2026
Repo size
59.7 MB
Likes
0
Public
Click a slice to open those files.
.onnx59.7 MB · 100%
From the Hugging Face model README
A whole-body motion-tracking policy for the Unitree G1 (29 DoF), fine-tuned from NVIDIA's released SONIC checkpoint to perform the kozak (prysiadka) — the Ukrainian squat-kick, danced in a deep squat with the legs thrown out and recovered in alternation, without the hands touching the floor.
The stock model cannot do it. This one can.
| evaluation (90 kozak clips) | stock SONIC | this policy |
|---|---|---|
| against the conditioned reference | 0.0333 | 0.6333 |
| against raw motion capture | 0.0444 | 0.5333 |
Both reference sets are reported because the conditioned reference is our own preprocessing and the raw capture is not — the result does not depend on it. On 20 clips withheld from training, stock completes 0 of 20 under either reference.
| file | |
|---|---|
kozak_n5_it14500.onnx | 59.7 MB · opset 13 · ir_version 7 · 114 nodes |
Signature:
input obs_dict float32 [1, 1770]
output action float32 [1, 29]
29 outputs = the G1's 29 actuated joints. The control loop runs at 50 Hz.
The observation vector is SONIC's universal-token whole-body tracking
observation, unchanged from the base model — this fine-tune touches neither the
architecture nor the observation space. Build it exactly as upstream does; see
GR00T-WholeBodyControl
(pinned commit aa263a8), whose deployment path consumes ONNX policies of this
shape.
import onnxruntime as ort
import numpy as np
sess = ort.InferenceSession("kozak_n5_it14500.onnx")
obs = np.zeros((1, 1770), dtype=np.float32) # build per upstream
action, = sess.run(["action"], {"obs_dict": obs}) # (1, 29)
Because it is a tracking policy, it needs a reference motion to track. It is not a text- or goal-conditioned controller.
Fine-tuned from sonic_release/last.pt with PPO in Isaac Lab 2.3.2 / PhysX:
References are conditioned before training: floor-aligned to measured stance soles, stance feet planted, and time-warped where inverse dynamics shows the demand exceeding what the joint can supply. Raw kozak capture floats the feet ~2.7 cm and demands 2.03× rated hip-pitch torque on 42.5% of clips; tracking an unreachable target measures the target rather than the robot.
Teaching a new skill degrades others. Measured on 500 clips stratified across 250 categories of the base model's own training distribution:
| stock | this policy | |
|---|---|---|
| general-capability retention | 0.9780 | 0.8960 |
That ~8-point loss is not spread evenly — it concentrates in the capability nearest the taught skill. Dance loses ~15 points; object handling loses ~4. If you fine-tune a whole-body tracking policy on a new skill, expect the bill to arrive on whatever the base model already did that most resembles it.
waist_pitch spans only
±29.8°, and the conditioned kozak sits above 95% of that range on 69.8% of
frames. "The G1 performs the kozak" means "the closest motion its kinematics
admit." The tracking metrics cannot surface this, because the reference they
score against carries the same limit.Attribution for the motion data is required by its licence and applies to anything built on this policy.