← V1 research

Stair environment

field
SimulationStair training field · simulation render; robot shown for scale
Pupper v3 · MJX · up and down · 2026-10-05 · training run stairs_v2

Training field

24 × 24 m
heightfield
2 cm
grid
144
tiles of 2 m · 25 flat · 56 pyramid · 63 pit
1–8 cm
rise
7–30 cm
tread · half of the stair tiles 7–12 cm
34 %
level spawn area
height map
Height map · amber up (pyramids), blue down (pits), F flat · dashed: spawn area
field
Field · robot at the centre for scale
pyramid
Pyramid stairs · rise 5.9 cm · tread 8.6 cm
pit
Pit · rise 5.1 cm · tread 10.6 cm
pyramid · rise 4.0 cm · tread 11.9 cm pit · rise 3.2 cm · tread 11.3 cm 0 0 m1 m2 m3 m4 m height ×4

Evaluation course

3 · 3
steps up · down
80 mm
tread · 3 steps per print
160 mm
top
0–8 cm
rise, one lane each
480 mm
width (two pieces)
10 × 0.3 m/s
trials per rise · command
starttopup and down808080808080600 h mm · true scale · h = 0–8 cm by lane
course
Course · 8 stair lanes (1–8 cm) + 1 flat lane, each as printed
4 cm lane
4 cm lane · vertical risers, as printed

Baseline on the course

rise (cm)012345678≥ 8/10
Stanford climbing1010102000002 cm
Stanford flat101000000001 cm
Ours, 1B flat (10/02)10900000001 cm
Stanford climbing · 2 cm · up and down in 4.9 s
Stanford climbing · 3 cm · off the side at 6.2 s
Ours, 1B flat · 2 cm · stuck at the first riser

Printed course · rise 40 mm

4
identical pieces · 3 steps each
2.5 kg
PLA at 6 % infill (estimate)
480 × 480 mm
footprint
dovetails
no bolts · lowered from above
0.000 mm
height difference vs simulator
printed course
Assembled · two rows of an up piece and the same piece turned 180°
exploded
One piece lifted · dovetails slide vertically, lock sideways
piece
One piece · back face: one tongue, one groove · side: tongues
joint
Back joint · pieces pulled 40 mm apart

Measured from the terrain

Foot contact
MJX contact list
Spawn
level ground
Fall
torso < 5 cm above terrain · tilt > 40°
Belly
8 points under the terrain = fall
SNUPuppy/terrain_training · README.md · render_env.py → make_env_viz.py