apt-a1 · overnight run · 2026-08-07
The paper's §1a claim is that a pre-generated library of optimised trajectories, compressed into a latent action space, beats learning locomotion from scratch. This is that pipeline built end to end for our 14.5 kg A1 — generator, library, TVAE, and an RL policy whose action space is the library — plus the ablation that tests the claim.
Two PPO runs at an identical 78.6M-step budget on identical rewards and environment. One emits a 16-dim latent into the frozen library decoder; the other has that channel removed and must drive the joints through the auxiliary output alone — plain RL, no prior.
The prior wins by 35% on average — but the average hides the whole story.
| commanded (m/s) | library achieved | error | no-prior achieved | error |
|---|---|---|---|---|
| 0.00 | -0.00 | -0.00 | -0.06 | -0.06 |
| 0.25 | -0.24 | -0.49 | +0.01 | -0.24 |
| 0.50 | -0.16 | -0.66 | +0.41 | -0.09 |
| 0.75 | +0.63 | -0.12 | +0.89 | +0.14 |
| 1.00 | +0.78 | -0.22 | +1.23 | +0.23 |
| 1.25 | +1.26 | +0.01 | +1.17 | -0.08 |
| 1.50 | +1.35 | -0.15 | +1.38 | -0.12 |
| 1.75 | +1.61 | -0.14 | +0.78 | -0.97 |
| 2.00 | +2.03 | +0.03 | +1.16 | -0.84 |
| library speed range | mean error | low ≤0.75 | high ≥1.5 |
|---|---|---|---|
| v ∈ [−1, 2] (full) | 0.202 | 0.319 | 0.106 |
| v ∈ [0, 2] (forward only) | 0.743 | 0.438 | 1.097 |
| no prior | 0.309 | 0.134 | 0.643 |
The reverse trajectories were helping — most plausibly by giving the latent manifold
broader coverage, so the decoder is better conditioned in the forward region too. Narrowing a
library to what you think you need is the wrong instinct. The low-speed inversion is still
unexplained. Next suspect is the reward rather than the library: the velocity kernel
exp(−1.5 e²) makes a 0.25 m/s error cost 0.09 out of 2.5, so there may simply be no
incentive to be precise down there — which would also explain why the no-prior policy is only
mediocre there rather than good.
Each produced a rising return and a rising episode length while the robot did something useless. None was visible without evaluating per commanded speed.
log_std is constant at ent_coef × act_dim, while actions clip at ±3 —
past the clip a wider policy is nearly free. std grew 0.61 → 3.5, training went
bang-bang, and the deterministic mean action sat far off the optimised distribution. That run
reported return 991 / episode 568 of 600 and walked backwards when commanded forward.Return conflates tracking with survival, and here survival is nearly saturated. The first two production runs finish at 1283 and 1273 — a 0.8% difference across a 35% difference in tracking.