Snow Locomotion β Unitree G1
A locomotion policy that walks on variable-depth snow, conditioned on an estimated support
signal from a sensorized crampon. Companion to the hackathon-everest foothold-assurance
project, whose estimator error statistics this training loop reproduces.
Simulation only. No physical robot, no field-calibrated snow physics, no real sensor data anywhere in the chain. See the claim boundary at the bottom.
Which checkpoint do I want?
| directory | what it is | use it for |
|---|---|---|
baseline-v3 |
200M-step flat-ground walker, stock Playground config | the baseline β warm start for every fine-tune, and the comparison policy |
curr-s1 |
curriculum stage 1 β snow capped at 112 mm | best snow result so far (reward 15.9, episode length 724) |
curr-s2 |
curriculum stage 2 β snow capped at 175 mm | warm-started from curr-s1 |
ft-full |
first fine-tune, brief's original reward weights | best non-curriculum snow policy |
code/snow_rl |
the package that produced these | reproducing or extending any checkpoint |
Ablation arms β controls, not deliverables
ft-no_map, ft-no_support, ft-ablation blank the belief map, the bilateral reserve, and
the entire sensor channel respectively. They isolate each component's contribution.
Caveat: all three were trained on reward weights that were later measured to walk badly (2% velocity tracking), and came back statistically indistinguishable. Treat them as a method demonstration, not as evidence about the components.
Measured results
Against baseline-v3, identical terrain, seed and commanded velocity (0.8 m/s):
| terrain | baseline | snow-trained | |
|---|---|---|---|
| flat (4 mm) | 79% tracking, 5.05 m | 74%, 4.72 m | slight regression |
| shallow (71 mm) | 26% tracking, 1.34 m | 60%, 3.59 m | 2.7Γ distance |
| deep (198 mm) | 2% tracking, 1.11 m | β13%, 0.51 m | regression |
Shallow snow is the result. Deep snow currently regresses β the curriculum stages exist to
address that, and the deep row should be re-measured against curr-s3 when it lands.
Note that survival time is a misleading metric here: a policy that stops walking maximises it. Five rounds of reward tuning each survived longer while covering less ground before this was caught. Score on distance and velocity tracking.
How it works
Snow is a force field, not geometry. The MuJoCo ground is a flat plane representing hard
substrate; snow acts through xfrc_applied β depth-dependent sinkage plus ploughing drag on
the swing foot. A heightfield would model bumpy solid ground, which is the wrong physics for a
surface you sink into.
The policy never sees ground truth. It sees a corrupted estimate whose error statistics are measured from the source project's held-out evaluation: a shrinkage slope of 0.677 (weak ground reads stronger than it is), conditional noise, and a 36.7% false-safe rate β on genuinely weak ground, a confident report of 429 N when the truth is 200 N. Physics reads the truth; the policy pays for acting on the lie.
Observations: 156 for the actor (103 stock + 24 estimator + 24 belief map + 5 reserve), 273 for the critic (adds privileged ground truth, discarded at deployment). Actions: 29 joint targets at 50 Hz. Brax PPO, 512/256/128 networks, stock hyperparameters.
Reproducing
from huggingface_hub import snapshot_download
from brax.training.agents.ppo import checkpoint as ck
local = snapshot_download("iteratehack/snow-rl-baseline", allow_patterns="curr-s1/*")
params = ck.load(f"{local}/curr-s1/000061276160") # (normaliser, policy, value)
Pinned stack: jax==0.7.2, jaxlib==0.7.2, brax==0.14.2, playground==0.2.0,
mujoco==3.12.0. Later JAX removes device_put_replicated, which brax still calls.
Claim boundary
- Simulation only; no physical robot, no validated snow physics, no tested hardware.
- The estimator error model is reproduced from held-out simulation metrics, not measured on real sensors, and inherits every limitation of the synthetic terrain and reduced-order contact model.
- The defensible claim is narrow: a locomotion policy conditioned on an estimated support signal outperforms the identical policy without that channel, on identical terrain β and as of these checkpoints that holds on shallow snow and not on deep.