Every A1 teacher run on this stack has produced an asymmetric gait — front-rear
drag and a floating rear leg — and reward tuning was tried and rejected. One untested
explanation is the robot: with an asymmetric trunk the optimal policy is asymmetric, so
RL will find the limp. This tests that on the cheapest task available, blind rough walking,
500 iterations per arm.
Contact patterns
The plot that actually shows a limp. Each lane is one foot; filled means loaded. A balanced
trot shows four lanes of equal thickness in diagonal pairs — uneven lane thickness between the
front pair (blue) and rear pair (amber) is the front-rear drag.
front feet in stancerear feet in stanceswing
stock trunk (control)
final reward 12.78 ·
front/rear duty gap 0.134 ·
left/right duty gap 0.029
contact duty
swing clearance
foot slide in stance
symmetric + COM jitter
final reward 6.73 ·
front/rear duty gap 0.040 ·
left/right duty gap 0.037
contact duty
swing clearance
foot slide in stance
symmetric, no jitter
final reward 10.74 ·
front/rear duty gap 0.080 ·
left/right duty gap 0.042
contact duty
swing clearance
foot slide in stance
Asymmetry, lower is better
metric
stock trunk (control)
symmetric + COM jitter
symmetric, no jitter
L-R
F-R
L-R
F-R
L-R
F-R
duty
0.03
0.13
0.04
0.04
0.04
0.08
clearance cm
0.81
1.15
2.35
0.79
1.48
0.62
slide cm/s
4.76
0.47
10.65
0.51
9.98
5.70
Scale-free asymmetry
Raw spread scales with magnitude, and the symmetric arms slide about 2.5× more overall,
so the honest comparison divides each spread by its own mean. Lower is more balanced; the
best arm in each row is bold.
metric
axis
stock trunk (control)
symmetric + COM jitter
symmetric, no jitter
contact duty
front ↔ rear
0.190
0.054
0.106
contact duty
left ↔ right
0.041
0.050
0.056
swing clearance
front ↔ rear
0.486
0.336
0.255
swing clearance
left ↔ right
0.344
1.002
0.609
foot slide
front ↔ rear
0.028
0.013
0.132
foot slide
left ↔ right
0.285
0.268
0.232
Front–rear balance improves, consistently. Contact-duty asymmetry
falls from 0.190 to 0.054 / 0.106, and swing-clearance asymmetry from 0.486 to
0.336 / 0.255. Both symmetric arms move the same way, so this is not a convergence artifact of
one run. In raw terms the control's rear feet carry duty 0.64 / 0.64 against 0.76 / 0.79 at the
front — the rear legs are simply on the ground less, which is the front-rear drag written
as a number.
Left–right does not improve, and clearance gets worse.
Duty and slide are essentially unchanged once normalised, but left–right clearance
asymmetry rises from 0.344 to 0.609 / 1.002. Symmetrising the trunk removes a fore–aft
bias; there is no reason it should fix a left–right one, and it did not.
What this does and does not establish
The isolation worked. The first A/B moved two variables — symmetry and COM
jitter — and the symmetric arm finished at reward 6.73 against the control's 12.78, so its
worse numbers could not be attributed. The symmetry-only arm reaches 10.74, confirming
the jitter cost most of that gap, and it still shows the front–rear improvement.
Absolute foot slide is 2.5× higher in both symmetric arms (40–43 vs
16.7 cm/s). That is not explained here and is worth a look before this goes near hardware.
500 iterations, one seed per arm. The rough config's own default is 1500. Neither
gait is necessarily settled, and none of these gaps has an error bar.
This is the blind walker, not the parkour teacher. It is the cheap proxy for the
question; the limp was originally observed on the parkour stack, and that is where the result
has to be reproduced before it means anything for deployment.