Correct bigstep card: invalid reward-term comparison -> measured m/s (0.009); attribute failure to foot-lift
Browse files- u4_walk_bigstep_v1/README.md +41 -23
u4_walk_bigstep_v1/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
# u4_walk_bigstep_v1 — crouch "bigstep" walker (NEGATIVE RESULT)
|
| 2 |
|
| 3 |
Trained on skynet/SkyPilot, AWS us-east-2, 1x L40S (g6e.xlarge), storage-free.
|
| 4 |
|
|
@@ -12,34 +12,52 @@ Trained on skynet/SkyPilot, AWS us-east-2, 1x L40S (g6e.xlarge), storage-free.
|
|
| 12 |
| Actions | 26 @ 50 Hz |
|
| 13 |
| wandb | [`agioi2ya`](https://wandb.ai/sjohnu-eth-z-rich/rc_humanoid_rl/runs/agioi2ya) |
|
| 14 |
|
| 15 |
-
## Result:
|
| 16 |
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
| `u4_walk_crouch_real_imudr` | 0.777 | -1.13 |
|
| 21 |
-
| `crouch_nogait` | **1.838** | **+54.2** |
|
| 22 |
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
|
| 27 |
-
|
|
|
|
| 28 |
|
| 29 |
-
|
| 30 |
-
|---|---|---|
|
| 31 |
-
| first 10% | 0.395 | 451 |
|
| 32 |
-
| 25-35% | 0.745 | 694 |
|
| 33 |
-
| 50-60% | 0.741 | 717 |
|
| 34 |
-
| 75-85% | 0.780 | 787 |
|
| 35 |
-
| last 10% | 0.778 | 711 |
|
| 36 |
|
| 37 |
-
|
| 38 |
-
|
| 39 |
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
|
| 44 |
## Files
|
| 45 |
|
|
|
|
| 1 |
+
# u4_walk_bigstep_v1 — crouch "bigstep" walker (NEGATIVE RESULT: marches in place)
|
| 2 |
|
| 3 |
Trained on skynet/SkyPilot, AWS us-east-2, 1x L40S (g6e.xlarge), storage-free.
|
| 4 |
|
|
|
|
| 12 |
| Actions | 26 @ 50 Hz |
|
| 13 |
| wandb | [`agioi2ya`](https://wandb.ai/sjohnu-eth-z-rich/rc_humanoid_rl/runs/agioi2ya) |
|
| 14 |
|
| 15 |
+
## Result: it does not translate — 0.009 m/s
|
| 16 |
|
| 17 |
+
Measured with `scripts/rsl_rl/measure_gait.py` (1000 steps x 64 envs, forward command forced).
|
| 18 |
+
**Physical units.** Reward-term values are NOT comparable across configs with different
|
| 19 |
+
weight/std -- see the correction note below.
|
|
|
|
|
|
|
| 20 |
|
| 21 |
+
| policy | cmd | fwd vel | cadence | step length | lean |
|
| 22 |
+
|---|---|---|---|---|---|
|
| 23 |
+
| r16_upright @ 0.8 | 0.8 | **0.634 m/s** | 3.30/s | 19.2 cm | 1.5° |
|
| 24 |
+
| crouch_nogait | 0.5 | 0.572 | 8.14/s | 7.0 cm | 5.3° |
|
| 25 |
+
| r16_upright @ 0.5 | 0.5 | 0.406 | 3.37/s | 12.0 cm | 0.7° |
|
| 26 |
+
| u4_walk_crouch_real (22k) | 0.5 | 0.397 | 3.48/s | 11.4 cm | 9.9° |
|
| 27 |
+
| r16_latency (10k) | 0.5 | 0.347 | 3.39/s | — | 13.3° |
|
| 28 |
+
| **u4_walk_bigstep_v1 (this)** | 0.5 | **0.009** | 1.71/s | **0.5 cm** | 20.9° |
|
| 29 |
|
| 30 |
+
It steps (1.71 steps/env/s) and reaches 0.122 m clearance, but translates 0.5 cm per step:
|
| 31 |
+
it marches in place.
|
| 32 |
|
| 33 |
+
## Why: the foot-lift layer, not the latency
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
|
| 35 |
+
bigstep changed four things at once. The report-16 one-change-at-a-time series
|
| 36 |
+
(`r16_*`, branch `test/SjohnU_remodel_actuators`) attributed the failure:
|
| 37 |
|
| 38 |
+
- **`r16_footlift`** (`feet_clearance` 1.0@0.15 -> 2.4@0.17, bigstep's foot-lift layer alone):
|
| 39 |
+
**0.001 m/s** -- the worst arm measured, worse than its own control. This is bigstep's killer.
|
| 40 |
+
- **`r16_latency`** (~65 ms command latency alone): **0.347 m/s** -- latency HELPS. It was not
|
| 41 |
+
the culprit.
|
| 42 |
+
- **`r16_latency_g200`** (latency + legs 200/10): 0.342 m/s -- the gain change is free.
|
| 43 |
+
- **Lean is not causal**: `r16_latency` walks at 13.3° BACK, `r16_upright` at 0.7°, this fails
|
| 44 |
+
at 20.9°. Lean predicts nothing; the 20.9° here is a correlate, not the cause.
|
| 45 |
+
|
| 46 |
+
The unifying rule (see `r16_upright`): the policy sits in a **stand-and-micro-correct local
|
| 47 |
+
optimum**; anything that makes standing untenable (latency, spawn-tilt DR, more iters) forces a
|
| 48 |
+
real gait, and anything that *enriches* standing (this foot-lift layer) kills it.
|
| 49 |
+
|
| 50 |
+
## Correction (2026-07-16)
|
| 51 |
+
|
| 52 |
+
An earlier version of this card compared `track_lin_vel_xy` reward-term values across policies
|
| 53 |
+
(0.778 here vs 1.838 for `crouch_nogait`) and concluded `crouch_nogait` was "best by ~2.4x".
|
| 54 |
+
**That comparison was invalid** -- those runs use different reward weights/std, so their
|
| 55 |
+
reward-term values are not comparable. It also masked the real story: this policy scored
|
| 56 |
+
tvel 0.778 while moving 0.009 m/s. Judge on `measure_gait.py` physical units only.
|
| 57 |
+
|
| 58 |
+
The same card advised capping this lineage at ~10k because reward "plateaued by ~7k". That
|
| 59 |
+
plateau was a *stuck* policy flatlining, not a converged walker -- `u4_walk_crouch_real` only
|
| 60 |
+
learns to translate between 15k and 22k. Do not generalize this run's plateau.
|
| 61 |
|
| 62 |
## Files
|
| 63 |
|