|
Download README.md from iteratehack/snow-rl-baseline: direct link, hf CLI and curl.
- Browser
- Download file 4.49 kB
-
https://huggingface.co/iteratehack/snow-rl-baseline/resolve/main/README.md
- Command line
-
hf download hf://iteratehack/snow-rl-baseline/README.md
-
curl -L -o README.md https://huggingface.co/iteratehack/snow-rl-baseline/resolve/main/README.md
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. | |