AmanC007 commited on
Commit
4bd2ea3
Β·
verified Β·
1 Parent(s): 1b82122

document which checkpoint is which

Browse files
Files changed (1) hide show
  1. README.md +93 -0
README.md ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ tags:
4
+ - reinforcement-learning
5
+ - locomotion
6
+ - mujoco
7
+ - robotics
8
+ ---
9
+
10
+ # Snow Locomotion β€” Unitree G1
11
+
12
+ A locomotion policy that walks on variable-depth snow, conditioned on an estimated support
13
+ signal from a sensorized crampon. Companion to the `hackathon-everest` foothold-assurance
14
+ project, whose estimator error statistics this training loop reproduces.
15
+
16
+ **Simulation only.** No physical robot, no field-calibrated snow physics, no real sensor data
17
+ anywhere in the chain. See the claim boundary at the bottom.
18
+
19
+ ## Which checkpoint do I want?
20
+
21
+ | directory | what it is | use it for |
22
+ |---|---|---|
23
+ | `baseline-v3` | 200M-step flat-ground walker, stock Playground config | **the baseline** β€” warm start for every fine-tune, and the comparison policy |
24
+ | `curr-s1` | curriculum stage 1 β€” snow capped at 112 mm | best snow result so far (reward 15.9, episode length 724) |
25
+ | `curr-s2` | curriculum stage 2 β€” snow capped at 175 mm | warm-started from `curr-s1` |
26
+ | `ft-full` | first fine-tune, brief's original reward weights | best non-curriculum snow policy |
27
+ | `code/snow_rl` | the package that produced these | reproducing or extending any checkpoint |
28
+
29
+ ### Ablation arms β€” controls, not deliverables
30
+
31
+ `ft-no_map`, `ft-no_support`, `ft-ablation` blank the belief map, the bilateral reserve, and
32
+ the entire sensor channel respectively. They isolate each component's contribution.
33
+
34
+ **Caveat:** all three were trained on reward weights that were later measured to walk badly
35
+ (2% velocity tracking), and came back statistically indistinguishable. Treat them as a
36
+ method demonstration, not as evidence about the components.
37
+
38
+ ## Measured results
39
+
40
+ Against `baseline-v3`, identical terrain, seed and commanded velocity (0.8 m/s):
41
+
42
+ | terrain | baseline | snow-trained | |
43
+ |---|---|---|---|
44
+ | flat (4 mm) | 79% tracking, 5.05 m | 74%, 4.72 m | slight regression |
45
+ | **shallow (71 mm)** | 26% tracking, 1.34 m | **60%, 3.59 m** | **2.7Γ— distance** |
46
+ | deep (198 mm) | 2% tracking, 1.11 m | βˆ’13%, 0.51 m | regression |
47
+
48
+ Shallow snow is the result. Deep snow currently regresses β€” the curriculum stages exist to
49
+ address that, and the deep row should be re-measured against `curr-s3` when it lands.
50
+
51
+ Note that **survival time is a misleading metric here**: a policy that stops walking maximises
52
+ it. Five rounds of reward tuning each survived longer while covering less ground before this
53
+ was caught. Score on distance and velocity tracking.
54
+
55
+ ## How it works
56
+
57
+ Snow is a **force field, not geometry**. The MuJoCo ground is a flat plane representing hard
58
+ substrate; snow acts through `xfrc_applied` β€” depth-dependent sinkage plus ploughing drag on
59
+ the swing foot. A heightfield would model bumpy solid ground, which is the wrong physics for a
60
+ surface you sink into.
61
+
62
+ The policy never sees ground truth. It sees a corrupted estimate whose error statistics are
63
+ measured from the source project's held-out evaluation: a shrinkage slope of 0.677 (weak ground
64
+ reads stronger than it is), conditional noise, and a **36.7% false-safe rate** β€” on genuinely
65
+ weak ground, a confident report of 429 N when the truth is 200 N. Physics reads the truth; the
66
+ policy pays for acting on the lie.
67
+
68
+ Observations: 156 for the actor (103 stock + 24 estimator + 24 belief map + 5 reserve),
69
+ 273 for the critic (adds privileged ground truth, discarded at deployment). Actions: 29 joint
70
+ targets at 50 Hz. Brax PPO, 512/256/128 networks, stock hyperparameters.
71
+
72
+ ## Reproducing
73
+
74
+ ```python
75
+ from huggingface_hub import snapshot_download
76
+ from brax.training.agents.ppo import checkpoint as ck
77
+
78
+ local = snapshot_download("iteratehack/snow-rl-baseline", allow_patterns="curr-s1/*")
79
+ params = ck.load(f"{local}/curr-s1/000061276160") # (normaliser, policy, value)
80
+ ```
81
+
82
+ Pinned stack: `jax==0.7.2`, `jaxlib==0.7.2`, `brax==0.14.2`, `playground==0.2.0`,
83
+ `mujoco==3.12.0`. Later JAX removes `device_put_replicated`, which brax still calls.
84
+
85
+ ## Claim boundary
86
+
87
+ - Simulation only; no physical robot, no validated snow physics, no tested hardware.
88
+ - The estimator error model is reproduced from held-out **simulation** metrics, not measured
89
+ on real sensors, and inherits every limitation of the synthetic terrain and reduced-order
90
+ contact model.
91
+ - The defensible claim is narrow: *a locomotion policy conditioned on an estimated support
92
+ signal outperforms the identical policy without that channel, on identical terrain* β€” and
93
+ as of these checkpoints that holds on shallow snow and not on deep.