daibfc commited on
Commit
61fe7a7
·
verified ·
1 Parent(s): 775755c

Keep only the best basis (OMOMO no-PCA)

Browse files
README.md CHANGED
@@ -13,13 +13,12 @@ Training-free closed-loop steering of a frozen motion-tracking foundation model:
13
  ## Files
14
  | file | content |
15
  |---|---|
16
- | `bases/A_R15_omomo_nopca.npz` | **recommended** basis `A [2, 64]`: token change per +1 cm forward / +1 cm lateral pelvis motion (+ fit `M`, `r2`, `n`) |
17
- | `bases/A_R15_walk_legacy.npz` | previous basis (PCA-16 of P23 tokens; pushes on generated InfBaGel clips) |
18
  | `calibration/omomo_pushes_r15.npz` | the 408 push experiments behind the recommended basis: `U [N, 64]` pushes, `D [N, 2]` responses (cm), `clip` |
19
- | `presets/pace_walk_*.yaml` | the run-time rule as used in our framework |
20
  | `steer_reference.py` | standalone numpy reference of the run-time rule |
21
 
22
- ## Calibration recipe (recommended basis)
23
  1. 68 clean OMOMO clips with a walk-up ≥ 1.5 s, 2 envs each (136 episodes), R15 step 15000.
24
  2. Base rollout: record the plan-tracking error `e(t)` (forward, lateral) of the pelvis.
25
  3. 3 push rollouts: each episode gets one random direction `u ~ N(0, I_64)`, scaled to ‖u‖ = 0.25, added to the
@@ -37,8 +36,8 @@ Refit: `U, D = np.load('calibration/omomo_pushes_r15.npz')[...]`, then steps 5
37
  | steering | pickup | success | falls |
38
  |---|---|---|---|
39
  | none | 29.4% | 20.1% | 9 |
40
- | legacy basis | 43.6% | 35.8% | 9 |
41
- | **no-PCA basis (recommended)** | **54.1%** | 36.3% | 20 |
42
  | PCA-8 / 16 / 32 bases (same pushes, PCA coordinates) | 26.7 / 41.0 / 37.2% | 20.1 / 27.0 / 26.2% | 33 / 12 / 8 |
43
  | sham: random directions, same size as no-PCA | 30.2% | 18.3% | 9 |
44
  | observational: same fit on unpushed run-to-run variation | 0.0% | 0.0% | 59 |
@@ -46,7 +45,7 @@ Refit: `U, D = np.load('calibration/omomo_pushes_r15.npz')[...]`, then steps 5
46
  Findings: (1) interventions are necessary: a basis fitted on natural variation steers the wrong way; (2) the
47
  calibrated directions matter, not the push size (sham); (3) offline fit quality (R²) does not rank bases: PCA bases fit
48
  better offline but steer worse in closed loop; (4) the no-PCA basis has the smallest lateral error at the end of the
49
- walk-up (5.7 vs 7.4 cm for the legacy basis). Open: more falls than the legacy basis.
50
 
51
  Benchmark: [`daibfc/h2r-benchmark-feasible43`](https://huggingface.co/datasets/daibfc/h2r-benchmark-feasible43).
52
  The bases are specific to R15 (the residual changes how tokens move the robot); recalibrate for another policy.
 
13
  ## Files
14
  | file | content |
15
  |---|---|
16
+ | `bases/A_R15_omomo_nopca.npz` | the steering basis `A [2, 64]`: token change per +1 cm forward / +1 cm lateral pelvis motion (+ fit `M`, `r2`, `n`) |
 
17
  | `calibration/omomo_pushes_r15.npz` | the 408 push experiments behind the recommended basis: `U [N, 64]` pushes, `D [N, 2]` responses (cm), `clip` |
18
+ | `presets/pace_walk_nopca.yaml` | the run-time rule as used in our framework |
19
  | `steer_reference.py` | standalone numpy reference of the run-time rule |
20
 
21
+ ## Calibration recipe
22
  1. 68 clean OMOMO clips with a walk-up ≥ 1.5 s, 2 envs each (136 episodes), R15 step 15000.
23
  2. Base rollout: record the plan-tracking error `e(t)` (forward, lateral) of the pelvis.
24
  3. 3 push rollouts: each episode gets one random direction `u ~ N(0, I_64)`, scaled to ‖u‖ = 0.25, added to the
 
36
  | steering | pickup | success | falls |
37
  |---|---|---|---|
38
  | none | 29.4% | 20.1% | 9 |
39
+ | previous basis (PCA-16, not released) | 43.6% | 35.8% | 9 |
40
+ | **this basis (no PCA)** | **54.1%** | 36.3% | 20 |
41
  | PCA-8 / 16 / 32 bases (same pushes, PCA coordinates) | 26.7 / 41.0 / 37.2% | 20.1 / 27.0 / 26.2% | 33 / 12 / 8 |
42
  | sham: random directions, same size as no-PCA | 30.2% | 18.3% | 9 |
43
  | observational: same fit on unpushed run-to-run variation | 0.0% | 0.0% | 59 |
 
45
  Findings: (1) interventions are necessary: a basis fitted on natural variation steers the wrong way; (2) the
46
  calibrated directions matter, not the push size (sham); (3) offline fit quality (R²) does not rank bases: PCA bases fit
47
  better offline but steer worse in closed loop; (4) the no-PCA basis has the smallest lateral error at the end of the
48
+ walk-up (5.7 vs 7.4 cm for the previous basis). Open: more falls than the previous basis (20 vs 9).
49
 
50
  Benchmark: [`daibfc/h2r-benchmark-feasible43`](https://huggingface.co/datasets/daibfc/h2r-benchmark-feasible43).
51
  The bases are specific to R15 (the residual changes how tokens move the robot); recalibrate for another policy.
bases/A_R15_walk_legacy.npz DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:3b5baf002f48fc473dccc870f6fe848d3c6c2d24416db07e968a0446a527ab1f
3
- size 10802
 
 
 
 
presets/pace_walk_odomx1.yaml DELETED
@@ -1,19 +0,0 @@
1
- # Deployable pace steering (docs/archive/steering/PACE_STEERING_DESIGN.md, gear_sonic/steering/sources/pace.py), 2026-10-12.
2
- # Same rule as r15_walk_k160 (basis A_R15_walk, gain 160 per m, cap 15 cm, guard 0.5 m, gate walk) but the error is
3
- # 2-D PROGRESS (forward + lateral): plan pelvis displacement since the start minus robot displacement since the start, in the
4
- # plan's heading frame; no world position (robot starts on the plan). odometry: model, noise x1 (pace.py: x1 = estimator level ~5 cm median after a 2 m walk-up, x2 ~11 cm).
5
- sources:
6
- - name: pace
7
- odometry: model
8
- noise_scale: 1.0
9
- lateral: true
10
- A: scripts_sonic_render/steering/r15/cfg/A_R15_walk.npz
11
- k: [160.0, 160.0]
12
- vmax: [15.0, 15.0]
13
- emax: 0.5
14
- gate: walk
15
- lead: 0
16
- deadband: 0.0
17
- site: encoder:g1
18
- phase: p3_runtime
19
- log: null # optional: npz path for the per-step controller log (e, e_used, v, e_fwd)