← V1 research

Shappy · multi-terrain training

field render
SimulationTraining terrain · simulation render from this report
One blind MLP policy for flat ground, rough ground, slopes, stairs and boxes · 2026-10-12
families7
levels14
tiles196 x 2 m
test lanes38 (14 held out)
level up after3 crossings in a row
critic input720 + 126
actorunchanged, 1.79 M params

Results of the 1 B-step runs

Passes of 100 per test, mean of two evaluations; the stair policy is measured in the same job. A run replaces the stair policy if it is 5 points above it on trained tests, loses no trained test by more than 10 passes, keeps the printed-course 3 cm within 5 and stands at 0.17 m or higher.

C · from the stair policydoes not qualify-0.7 points on trained testsunder +5 points on trained tests; 1 trained test down more than 10 passes; stands below 0.17 m
B · from the flat policydoes not qualify-4.8 points on trained testsunder +5 points on trained tests; 5 trained tests down more than 10 passes; stands below 0.17 m
A · from the flat policy, plain criticdoes not qualify-8.3 points on trained testsunder +5 points on trained tests; 6 trained tests down more than 10 passes
Stair policy (own3_h1)C · from the stair policyB · from the flat policyA · from the flat policy, plain critic
0255075100
Trained tests, mean
83.6
82.9
78.8
75.4
Held-out tests, mean
85.8
84.9
81.3
71.4
slope_20deg
97.5
93.5
85
77
slope_25deg held out
47.5
43.5
37.5
0
stairs_3cm
99.5
97
89
94.5
stairs_4cm
93
83
66
11
stairs_5cm
17
36
3
0
stairs_6cm
0
0
0
0
boxes_4cm
48.8
45.8
47.2
32.5
boxes_5cm
29.8
17.8
22.3
15
noisy_stairs_3cm held out
99.5
96.5
91.5
94
rough_3.5cm held out
86.5
86.5
73
78.5
hills_9cm held out
98.5
97
95.5
98.5
curb_7cm held out
58.5
61
43.5
16
noisy_stairs_4cm held out
93
82
77
8
boxes_6cm held out
18.5
24
23.5
9
stairs_5cm_tread160
94.5
92.5
74
84.5
stairs_5cm_tread240
93
95
93
94

18 tests every policy passes 97 times or more

flat
100
100
100
100
rough_0.5cm
100
100
100
100
rough_1.0cm
100
100
100
100
rough_1.5cm
100
100
100
100
rough_2.0cm
100
100
100
100
rough_2.5cm held out
100
99
99.5
99
slope_5deg
100
100
100
100
slope_10deg
100
100
100
100
slope_15deg
100
100
100
100
stairs_2cm
100
99.5
99.5
100
boxes_2cm
100
100
100
100
boxes_3cm
99.5
98
98
99
hills_3cm held out
100
100
100
100
hills_6cm held out
99.5
100
100
99
curb_3cm held out
100
100
100
100
curb_5cm held out
99.5
100
97.5
97.5
rough_slope_10deg held out
100
100
100
100
rough_slope_15deg held out
100
99
99.5
99.5
Stair policy (own3_h1)C · from the stair policyB · from the flat policyA · from the flat policy, plain critic
trained / held-out tests with pushes83.5% / 83.9%82.6% / 83.6%78.0% / 80.0%74.6% / 70.1%
printed course 3 / 4 cm99 / 8299 / 7798 / 6395 / 12
standing height0.181 m0.158 m0.166 m0.172 m

Curriculum level at the end of training (0–13)

familyC · from the stair policyB · from the flat policyA · from the flat policy, plain critic
flat8.17.67.9
rough8.3 · ±1.4 cm7.2 · ±1.2 cm8.0 · ±1.3 cm
slope up6.2 · 10.6°4.5 · 8.2°4.6 · 8.4°
slope down8.5 · 13.7°7.8 · 12.8°7.8 · 12.8°
stairs up5.0 · 2.9 cm3.7 · 2.4 cm3.5 · 2.4 cm
stairs down8.1 · 4.1 cm6.8 · 3.6 cm7.4 · 3.9 cm
boxes4.9 · ±2.5 cm3.6 · ±2.1 cm3.7 · ±2.1 cm

Training field

32 x 32 m heightfield, 2 cm grid. Columns: flat 1 · rough 2 · slope up 1 · slope down 1 · stairs up 3 · stairs down 3 · boxes 3 (of 14). Rows: level 0 (bottom) to 13. Flat outer ring.

field height map
field render

Families × levels

Robots start at the tile centre: "up" tiles low, "down" tiles high. MuJoCo renders, robot in the default pose for scale.

flat

flat level 0
L0 flat

rough

rough level 0
L0 noise ±0.25 cm
rough level 7
L7 noise ±1.19 cm
rough level 13
L13 noise ±2.00 cm

slope up

slope_up level 0
L0 2.0°
slope_up level 7
L7 11.7°
slope_up level 13
L13 20.0°

slope down

slope_down level 0
L0 2.0°
slope_down level 7
L7 11.7°
slope_down level 13
L13 20.0°

stairs up

stairs_up level 0
L0 rise 1.0 cm · tread 199 mm · 3 steps
stairs_up level 7
L7 rise 3.7 cm · tread 83 mm · 4 steps
stairs_up level 13
L13 rise 6.0 cm · tread 230 mm · 3 steps

stairs down

stairs_down level 0
L0 rise 1.0 cm · tread 82 mm · 4 steps
stairs_down level 7
L7 rise 3.7 cm · tread 201 mm · 3 steps
stairs_down level 13
L13 rise 6.0 cm · tread 73 mm · 4 steps

boxes

boxes level 0
L0 boxes ±1.0, ±0.5 cm
boxes level 7
L7 boxes ±3.2, ±1.6 cm
boxes level 13
L13 boxes ±5.0, ±2.5 cm

Test course

38 lanes, 0.8 m wide, walked at 0.5 m/s from the triangle to the goal line (dashed in the profiles). * = held out: a terrain or value training never shows.

course map
rough_2.0cm
rough_2.0cm
slope_15deg
slope_15deg
stairs_4cm
stairs_4cm
boxes_4cm
boxes_4cm
hills_9cm
hills_9cm
curb_7cm
curb_7cm
rough_slope_15deg
rough_slope_15deg
stairs_5cm_tread240
stairs_5cm_tread240
flat
-1.0 to 1.0 cm
rough_0.5cm
-1.0 to 1.0 cm
rough_1.0cm
-1.0 to 1.0 cm
rough_1.5cm
-1.2 to 1.3 cm
rough_2.0cm
-1.7 to 1.7 cm
rough_2.5cmheld out
-2.0 to 1.9 cm
slope_5deg
-1.0 to 8.7 cm
slope_10deg
-1.0 to 17.6 cm
slope_15deg
-1.0 to 26.8 cm
slope_20deg
-1.0 to 36.4 cm
slope_25degheld out
-1.0 to 46.6 cm
stairs_2cm
-1.0 to 6.0 cm
stairs_3cm
-1.0 to 9.0 cm
stairs_4cm
-1.0 to 12.0 cm
stairs_5cm
-1.0 to 15.0 cm
stairs_6cm
-1.0 to 18.0 cm
boxes_2cm
-1.0 to 2.0 cm
boxes_3cm
-3.0 to 3.0 cm
boxes_4cm
-4.0 to 4.0 cm
boxes_5cm
-5.0 to 5.0 cm
hills_3cmheld out
-1.5 to 1.7 cm
hills_6cmheld out
-5.1 to 5.9 cm
curb_3cmheld out
-1.0 to 3.0 cm
curb_5cmheld out
-1.0 to 5.0 cm
rough_slope_10degheld out
-1.0 to 18.1 cm
noisy_stairs_3cmheld out
-1.0 to 9.1 cm
rough_3.5cmheld out
-2.5 to 3.2 cm
hills_9cmheld out
-4.9 to 8.1 cm
curb_7cmheld out
-1.0 to 7.0 cm
rough_slope_15degheld out
-1.0 to 28.0 cm
noisy_stairs_4cmheld out
-1.0 to 11.8 cm
boxes_6cmheld out
-3.0 to 6.0 cm
stairs_5cm_tread160
-1.0 to 15.0 cm
stairs_5cm_tread240
-1.0 to 15.0 cm
boxes_4cm_b
-2.0 to 4.0 cm
boxes_4cm_c
-4.0 to 4.0 cm
boxes_5cm_b
-5.0 to 5.0 cm
boxes_5cm_c
-5.0 to 5.0 cm

Baseline on the test course

Passes of 100 trials per lane. The stair policy was trained on flat ground and 2–4 cm stairs only. Measured on the first 34 lanes; the 4 lanes added afterwards are in the results above.

Our stair policy (own3_h1)Our flat policyStanford climbing policyMulti-terrain, first 20 M steps
0255075100
Trained lanes, mean
84.5
47.2
62.4
54.9
Held-out lanes, mean
85.6
32.4
56.0
42.6
rough_2.5cm held out
100
96
99
99
slope_10deg
100
88
100
99
slope_15deg
100
16
76
77
slope_20deg
95
0
0
0
slope_25deg held out
46
0
0
0
stairs_2cm
100
89
99
97
stairs_3cm
100
0
88
25
stairs_4cm
94
0
0
0
stairs_5cm
15
0
0
0
stairs_6cm
0
0
0
0
boxes_3cm
100
46
89
66
boxes_4cm
28
0
0
0
boxes_5cm
72
0
10
0
hills_6cm held out
100
5
69
37
curb_5cm held out
100
36
77
55
rough_slope_10deg held out
100
86
97
100
noisy_stairs_3cm held out
100
0
87
39
rough_3.5cm held out
88
32
57
39
hills_9cm held out
99
0
56
0
curb_7cm held out
56
0
1
0
rough_slope_15deg held out
100
2
37
27
noisy_stairs_4cm held out
94
0
0
0
boxes_6cm held out
16
0
4
0
stairs_5cm_tread160
92
0
17
11
stairs_5cm_tread240
94
8
68
24

9 tests every policy passes 97 times or more

flat
100
100
100
100
rough_0.5cm
100
100
100
100
rough_1.0cm
100
100
100
100
rough_1.5cm
100
100
100
100
rough_2.0cm
100
98
100
99
slope_5deg
100
100
100
100
boxes_2cm
100
100
100
100
hills_3cm held out
100
99
100
100
curb_3cm held out
100
98
100
100

0.5 m/s with heading and sideways correction, 20 s limit; pass = goal line before a fall or leaving the lane.

Curriculum rule

0%25%50%75%100%1 in a row: 50.0%50%1 (legged_gym)2 in a row: 70.7%71%23 in a row: 79.4%79%3 (ours)4 in a row: 84.1%84%466%: stoppingpays below thiscrossings in a row to move up a level

Up a level after n crossings in a row, down after one failure: the level settles where pn = 0.5.

Standing still under a 0.5 m/s command keeps 66% of the tracking reward (1.5·e−1 + 0.8 + 0.5 of 2.8).

Our stair runs: a 3–5 cm field passed about 63% at the start and the policy learned to stop; a 2–4 cm field passed about 92% and kept climbing.

10% of episodes replay a random lower level and do not move the level.

Critic input

feature (simulator truth)size
actor input: 36 per step × 20 steps720
base linear velocity (body)3
base angular velocity (body)3
gravity direction (body)3
base height above terrain1
foot clearance above terrain4
foot contact4
friction1
push velocity2
height scan 15 x 7, 3 cm grid105
critic input846

Run A: the critic sees the actor input only. Runs B and C: the critic also sees the features on the left. A and B start from the flat policy, C from the stair policy.

The actor and the exported policy have the same form in every run; every critic starts fresh.

Status

Field, test course, environment, evaluation and training code● donemulti_terrain.py · multi_env.py · eval_terrain.py · train_terrain.py
Height lookup against MuJoCo's surface● donemax error 0.0003 mm, 4,000 rays each on field and course
MuJoCo renders of the field and course● donerendered on the Mac, 27 pictures
Baseline on the test course● donefirst 26 lanes · 4 policies · 100 trials per lane
Training smoke run● done20 M and 8 M steps: per-family metrics logged, policy exported, 304 k steps/s
Baseline on the extended course, with and without pushes● done34 lanes · table above; pushes change the shares by under 2 points
Three training runs (1 B steps each)● donenone beats the stair policy: trained tests 82.9 / 78.8 / 75.4 % for C / B / A against 83.6 %
Course walked backward and sideways○ waitingproposed: does the command mix hold the curriculum at 2.4–2.9 cm stairs?