Keep only the best basis (OMOMO no-PCA)
Browse files- README.md +6 -7
- bases/A_R15_walk_legacy.npz +0 -3
- presets/pace_walk_odomx1.yaml +0 -19
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` |
|
| 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/
|
| 20 |
| `steer_reference.py` | standalone numpy reference of the run-time rule |
|
| 21 |
|
| 22 |
-
## Calibration recipe
|
| 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 |
-
|
|
| 41 |
-
| **
|
| 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
|
| 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)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|