Method
We describe the rank measures, normalized-residual architecture, training settings, and hardware evaluation protocol used in the three studies.
Measuring effective rank
erank(A) = exp( − Σi pi log(pi + ξ) ), pi = σi / Σj σj, ξ = 10−10
We compute the entropy effective rank of a matrix A from its singular values σi, discarding numerically negligible modes. A flat spectrum over k modes gives erank ≈ k; a spectrum dominated by one singular value gives erank ≈ 1.
Feature rank
Effective rank of the shared actor–critic penultimate activations Fθ(X) ∈ ℝN×d for a batch of N observations. These features form the final representation before compression by the task-specific output head.
PCA-99 rank
The minimum k for which the top k singular directions explain at least 99% of the Frobenius energy. We read this alongside feature rank to distinguish spectral shape from variance concentration.
Gram rank
Effective rank of the cosine-similarity Gram matrix G = F̂F̂⊤ of L2-normalized actor features. Its square structure supports qualitative comparisons across systems.
Weight rank
Effective rank of the actor's linear weight matrices Wℓ. Unlike feature rank, this measures a parameter property that bounds the dimensionality available to downstream representations.
Policy Jacobian effective rank
Jθ(x) = ∂πθ(x)/∂x ∈ ℝa×o. We report erank of the batch-averaged map, the distribution of local per-state ranks, and the phase-conditioned rank computed within swing and stance.
Architecture
x ← x + α W2 ReLU(W1 LayerNorm(x)), α = 1/√N
An in-house SimBa v1 variant adapted for PPO: linear embedding, N Pre-LN residual blocks with a 4d inner expansion, a post-LN, and a linear head. Embedding and head weights are initialized orthogonally; residual-branch weights use Kaiming normal. Per-configuration branch scaling (depth_scale) counteracts gradient growth with depth and reduces learning-rate sensitivity; the original formulation uses α = 1. Observation normalization replaces SimBa's first-layer RMSNorm via RSL-RL's empirical normalization.
| Family | Learning rate |
|---|---|
| SimBa (all depths) | 1.5 × 10−3 |
| MLP, three smallest | 1 × 10−3 |
| MLP, two largest | 6 × 10−4 |
Training
| PPO / rollout | Value |
|---|---|
| Steps per environment | 24 |
| Parallel environments | 4,096 |
| Buffer size | ≈ 49,152 |
| Clipping ε | 0.2 |
| Value loss coefficient | 1.0 |
| Entropy coefficient | 0.005 |
| Learning-rate schedule | adaptive |
| Target KL | 0.01 |
| Epochs per iteration | 5 |
| Mini-batches per epoch | 4 |
| Max gradient norm | 1.0 |
| Discount γ | 0.99 |
| GAE λ | 0.95 |
| Reward term | Weight |
|---|---|
| Base linear velocity | +5.0 |
| Base angular velocity | +5.0 |
| Base angular velocity (fine) | +5.0 |
| Gait (diagonal foot sync) | +10.0 |
| Foot clearance (0.1 m) | +0.5 |
| Action smoothness | −1.0 |
| Air-time variance | −1.0 |
| Base motion | −2.0 |
| Base orientation | −3.0 |
| Foot slip | −0.5 |
| Joint position | −0.7 |
| Joint velocity | −0.01 |
| Joint acceleration | −10−4 |
| Joint torques | −5 × 10−4 |
| Contact force | −10−3 |
| Randomization | Range |
|---|---|
| Ground friction (startup) | [0.3, 1.0] |
| Base mass (startup) | ±2.5 kg |
| Arm mass (startup) | ±0.5 kg |
| Leg mass scaling (startup) | 0.8× – 1.5× |
| Impulsive wrench (reset) | 10 N, 2 Nm |
| Base pose (reset) | yaw ±π, pos ±0.5 m |
| Joint init (reset) | noise around nominal |
| Base velocity push (interval) | every 7–10 s |
Simulation runs at 200 Hz with a 50 Hz control loop, 20 s episodes with early termination on illegal body or leg contact, sagittal-plane symmetry augmentation, and a three-environment curriculum that scales the base-orientation and contact-force penalties.
Deployment
Policies run in ONNX runtime on an external Intel i7 desktop connected to Spot over Ethernet; robot state streams from Spot's C++ SDK over gRPC. The loop holds 50 Hz as a lower bound with 2–5 ms end-to-end latency.
|τknee| > 8.0 Nm ⇒ stance, otherwise swing
Spot has no binary foot contact switches, so contact is reconstructed by thresholding knee torque, which is proportional to vertical contact force through the leg Jacobian.
Evaluation uses no command resampling: a scripted sagittal profile of 0.0 m/s (standing), +0.5 m/s (forward) and −0.5 m/s (backward), with lateral velocity and yaw rate held at zero. Timesteps with |vcmd,x| ≤ 0.1 m/s are labeled standing.
The observation vector is 65-dimensional (base linear and angular velocity, projected gravity, velocity/height/orientation commands, 19 relative joint positions and velocities, previous 12-dimensional action) with additive Gaussian corruption during training. The action space is 12 joint-position deltas scaled by 0.2 around the nominal leg configuration; the arm's 7 joints are held fixed and consume no policy output.
This page describes the currently available partial version of the accepted CoRL 2026 paper. Planned camera-ready revisions add interventions and architecture ablations to the same three studies.