snow-rl-baseline / README.md
AmanC007's picture
document which checkpoint is which
4bd2ea3 verified
|
Raw History Blame Contribute Delete
4.49 kB
---
license: mit
tags:
- reinforcement-learning
- locomotion
- mujoco
- robotics
---
# 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
```python
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.