Skip to content
humanoidrobot.build

Build package

Build Stanford Pupper (v1)

Stanford Student Robotics · Quadruped · discontinued · 2020

Low-cost, servo-driven 12-DOF quadruped designed for robotics education and benchmarking, running on a Raspberry Pi.

L1CompiledGate: Package validates against the spec; every fact has a source.

Build is partial: Docs and BOM are public, but both kit vendors named in the docs are gone and the BOM prices are from 2020. The power distribution board needs 2 oz copper (JLCPCB upstream).

Fig 1/1Video
Stanford Pupper© Nathan · Official embed · source
Drawing
/stanford/pupper
Maker
Stanford Student Robotics
Country
Stanford, US
Package rev
v0.1.0
Level
L1 Compiled
Availability
DIY
Openness
70/100
HW licence
unknown
Last checked
2026-09-25
DOF
12

Repo carries an end-of-life notice; support moved to Pupper v3. The docs source repo (Pupper) and the PDB repo (Pupper-Raspi-PDB: KiCad, Gerbers) have no license file and were last pushed 2021 and 2020; the CAD is a public Fusion 360 share with no stated license. Software (StanfordQuadruped) is MIT.

01

Configure

Saved in the URL. Share the link to share the build.
Region · where parts ship to
Printer bed (square, mm)
Printed parts
Estimate for United States
$861
Cart $861
02

Source

One cart across 3 vendors · prices in USD as listed

34 lines · 57 parts · 2 without an offer in US · 0/34 lines sourced in 2+ regions (L3 gate)

#PartCategoryQtyUnitLineOffer
Amazon18 lines · $340.68
1
Raspberry Pi 4 (2 GB listing linked)
compute.rpi4
compute1$42.00list price$42.00AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
2
microSD card for the Pi (32 GB recommended; listed on the Tools tab)
compute.microsd
compute1$7.99list price$7.99AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
3
5200 mAh 2S LiPo, XT60 (never more than 8.4 V: higher voltage burns the servos)
power.lipo-2s-5200
power1$17.99list price$17.99AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
4
XT60 connector pigtail (pack of 2, 1 used)
cable.xt60
cable1$6.99list price$6.99AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
5
Raspberry Pi 2x20 female stacking header for the PDB (pack of 5 listed, 1 used)
electronics.pi-header
electronics1$10.99list price$10.99AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
6
Male header pins for the PDB servo connectors (pack of 50 strips)
electronics.header-pins
electronics1$7.99list price$7.99AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
7
5 V regulator (BEC) for the Pi (pack of 2, 1 used)
power.bec-5v
power1$11.99list price$11.99AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
8
Sony DualShock 4 (PS4) wireless controller
electronics.ps4-controller
electronics1$46.96list price$46.96AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
9
SparkFun VR IMU breakout BNO080 (optional IMU setup)
sensor.bno080
sensor1$37.00list price$37.00AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
10
Teensy LC, IMU-to-Pi bridge (optional IMU setup)
electronics.teensy-lc
electronics1$15.00list price$15.00AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
11
MR693-ZZ bearing 3 x 8 x 4 mm, ab/adduction axle (pack of 10, 4 used)
structure.mr693-bearing · MPN MR693-ZZ
structure1$7.99list price$7.99AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
12
3M Dual Lock SJ3550, 1 in x 4 ft (8 in used) to hold the Pi case and battery; optional
other.dual-lock · MPN SJ3550
other1$12.95list price$12.95AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
13
20 mm M3 aluminium standoff, leg hub (pack of 20, 16 used)
structure.standoff-m3-20
structure1$6.99list price$6.99AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
14
25T disc servo spline, ab/adduction connector (pack of 5, 4 used)
structure.servo-disc-25t
structure1$7.99list price$7.99AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
15
25T servo arm (horn)
structure.servo-arm-25t
structure8$8.99list price$71.92AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
16
3.0 x 20 mm rod end / ball link (pack of 5; 8 used)
structure.ball-end
structure2$7.39list price$14.78AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
17
Threaded rod for the extension rod (pack of 10, 4 used)
structure.threaded-rod
structure1$7.57list price$7.57AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
18
Thrust bearing 4 x 9 x 4 mm, 3-part, knee (pack of 10, 8 used)
structure.thrust-bearing
structure1$5.59list price$5.59AmazonASIN from the 2020 BOM link (smile.amazon.com links rewritten to www.amazon.com); listing not re-checked
McMaster-Carr13 lines · $100.89
19
M4 x 10 thread-forming screw for plastic (pack of 25; 32 used: 16 body, 16 servo mounts)
fastener.m4x10-plastic · MPN 96817A510
fastener2$6.84list price$13.68McMaster-Carr
20
M3 x 6 alloy steel socket head screw (pack of 100; 16 carbon fiber to body, 4 servo discs)
fastener.m3x6-socket · MPN 91290A111
fastener1$8.71list price$8.71McMaster-Carr
21
M3 short heat-set insert (pack of 100; 16 body pieces, 4 inner hips)
fastener.m3-insert · MPN 94180A331
fastener1$13.35list price$13.35McMaster-Carr
22
M2.5 short heat-set insert for the Pi case (pack of 100, 4 used)
fastener.m2p5-insert · MPN 94180A321
fastener1$11.19list price$11.19McMaster-Carr
23
M2.5 x 5 socket head screw, Pi to case (pack of 100, 4 used)
fastener.m2p5x5-socket · MPN 91292A009
fastener1$4.97list price$4.97McMaster-Carr
24
M3 x 8 alloy steel flat head screw, disc spline to inner hip (pack of 100)
fastener.m3x8-flat · MPN 91294A128
fastener1$4.82list price$4.82McMaster-Carr
25
M3 x 8 alloy steel button head screw (pack of 100; ~20 used: hip bearings, servo arms, ball links, feet)
fastener.m3x8-button · MPN 91239A113
fastener1$7.27list price$7.27McMaster-Carr
26
M3 x 10 alloy steel button head screw (pack of 100; 32 standoffs, 4 ball links)
fastener.m3x10-button · MPN 91239A115
fastener1$7.77list price$7.77McMaster-Carr
27
M3 x 16 alloy steel button head screw, standoff through servo mounting hole (pack of 100, 16 used)
fastener.m3x16-button · MPN 91239A120
fastener1$10.69list price$10.69McMaster-Carr
28
M3 locknut (pack of 100; 12 used: ball links, knee stack, feet)
fastener.m3-locknut · MPN 90576A102
fastener1$3.52list price$3.52McMaster-Carr
29
M3 shoulder bolt, 4 mm shoulder dia., 12 mm shoulder length, lower leg axle
fastener.shoulder-bolt · MPN 92981A143
fastener4$2.56list price$10.24McMaster-Carr
30
Cushioning washer used as a foot (pack of 10, 4 used)
other.cushion-washer · MPN 90131A101
other1$3.06list price$3.06McMaster-Carr
31
M3 washer for the foot (pack of 100, 4 used)
fastener.m3-washer · MPN 93475A210
fastener1$1.62list price$1.62McMaster-Carr
Great3D1 line · $95.00
32
Carbon fiber routed parts: top and bottom plates (1.5 mm), 4 upper legs (3 mm), 4 lower legs (2 mm)
structure.cf-parts · 1 alt
structure1$95.00list price$95.00Great3DComplete set named on the BOM's carbon fiber tab (includes 1 spare upper and lower leg); site did not respond on 2026-09-25
No offer in this region2 lines · $324.00
33
JX CLS6336 servo (3 per leg); upstream recommends buying a few spares
actuator.jx-cls6336 · MPN CLS6336
actuator12$24.50list price$294.00Offers in CN only
34
Custom power distribution PCB (Pi hat), pack of 5; 2 layers, 2 oz copper
electronics.pdb
electronics1$30.00list price$30.00Offers in CN only
Cart total · US57$860.57All lines priced
03

Fabricate

Planned for a 256 mm bed
Fabricated parts
23
Print time (sum)
—
Material (sum)
—
Plates · estimate
—

No plate estimate: the package does not list grams per part yet, and we will not guess them. Slice the source files for your 256 mm bed.

PartProcessMaterialQtyh / partg / partProfile
Body support "Front1" (FrontFront.stl), holds 2 hip bearings
printed.front-front
FDMPLA or PETG (SLS PA12 if ordering out)1——0.2-0.4 mm layers, >50% infill (BOM 3D Printed Parts tab)
Body support "Front2" (FrontBack.stl)
printed.front-back
FDMPLA or PETG (SLS PA12 if ordering out)1——0.2-0.4 mm layers, >50% infill
Body support "Back1" (BackFront.stl), holds 2 hip bearings
printed.back-front
FDMPLA or PETG (SLS PA12 if ordering out)1——0.2-0.4 mm layers, >50% infill
Body support "Back2" (BackBack.stl)
printed.back-back
FDMPLA or PETG (SLS PA12 if ordering out)1——0.2-0.4 mm layers, >50% infill
Raspberry Pi case (picase.stl)
printed.picase
FDMPLA or PETG (SLS PA12 if ordering out)1——0.2-0.4 mm layers, >50% infill
Inner hip (HipInsideFDM.stl); upstream suggests a 5th as a spare
printed.hip-inside
FDMPLA or PETG (SLS PA12 if ordering out)4——0.2-0.4 mm layers, >50% infill
Outer hip (HipOutsideFDM.stl); upstream suggests a 5th as a spare
printed.hip-outside
FDMPLA or PETG (SLS PA12 if ordering out)4——0.2-0.4 mm layers, >50% infill
Carbon fiber plate "Top"
cf.plate-top
CNCCarbon fiber sheet 1.5 mm1——CNC routed; see the BOM Carbon Fiber Routed Parts tab
Carbon fiber plate "Bottom"
cf.plate-bottom
CNCCarbon fiber sheet 1.5 mm1——CNC routed
Carbon fiber upper leg
cf.upper-leg
CNCCarbon fiber sheet 3 mm4——CNC routed
Carbon fiber lower leg
cf.lower-leg
CNCCarbon fiber sheet 2 mm4——CNC routed
PLA or PETG (SLS PA12 if ordering out) · 13 parts · g unknownCarbon fiber sheet 1.5 mm · 2 parts · g unknownCarbon fiber sheet 3 mm · 4 parts · g unknownCarbon fiber sheet 2 mm · 4 parts · g unknown
04

Assemble

Every step ends in a check
Steps
20
Subassemblies
8
Hands-on time (sum)
—
Critical path
—
Your progress · this device
—

20 steps have no time estimate; times above are lower bounds.

Assembly graph · lanes are subassemblies, columns are dependency depthcritical pathdonesafety
D0D1D2D3D4D5D6D7D8D9D10D11D12D13Fabrication2 stepsHips5 stepsLegs2 stepsBody3 stepsElectronics3 stepsSoftware2 stepsBring-up2 stepsOptions1 steps1. Get the STLs, carbon fiber parts and PCBs01Get the STLs, ca…2. Hip step 1: install the servo disc on the ab/adduction servo (x4)02Hip step 1: inst…3. Flash Raspbian and the RPI-Setup files03Flash Raspbian a…4. Print the body supports, Pi case and hips04Print the body s…5. PCB steps 1-4: headers, Vbat/5 V pins and XT6005PCB steps 1-4: h…6. Install StanfordQuadruped and the joystick service06Install Stanford…7. Hip step 2: M3 heat-set insert in each inner hip07Hip step 2: M3 h…8. Body steps 1-2: inserts and hip bearings in the body pieces08Body steps 1-2: …9. PCB steps 5-7: short test, servo power test, BEC09PCB steps 5-7: s…10. Hip steps 3-5: disc to inner hip, inner servo, standoffs and horn (x4)10Hip steps 3-5: d…11. Hip steps 6-7: knee stack and upper link to horn11Hip steps 6-7: k…12. Hip steps 8-11: outer servo, horn, join the halves12Hip steps 8-11: …13. Hip step 12: check each servo's range by hand13Hip step 12: che…14. Hip steps 13-15: extension rod and parallelogram linkage14Hip steps 13-15:…15. Body steps 3-4: fasten the hips and the bottom plate15Body steps 3-4: …16. Body step 5: Pi case16Body step 5: Pi …17. Body step 7: plug the 12 servos into J1-J1217Body step 7: plu…18. Calibrate the 12 servo offsets18Calibrate the 12…19. First run: activate and trot19First run: activ…20. Optional: BNO080 IMU via Teensy LC20Optional: BNO080…

Steps, in build order

  1. Fabrication
    01

    Get the STLs, carbon fiber parts and PCBs

    Download the STLs from the BOM's Google Drive folder. Buy the carbon fiber set (Great3D was the upstream source) or have the parts routed. Order the power distribution board from JLCPCB with the Gerbers.zip from Pupper-Raspi-PDB (xt60cable branch): 2 layers, quantity 5, 2 oz copper ('super important'), everything else default.

    CHECKYou have 7 STL files, 2 carbon plates plus 4 upper and 4 lower legs, and 2 oz copper bare PDBs.
    Parts in
    • Carbon fiber routed parts: top and bottom plates (1.5 mm), 4 upper legs (3 mm), 4 lower legs (2 mm)structure.cf-parts
    • Custom power distribution PCB (Pi hat), pack of 5; 2 layers, 2 oz copperelectronics.pdb
    • Carbon fiber plate "Top"cf.plate-top
    • Carbon fiber plate "Bottom"cf.plate-bottom
    • Carbon fiber upper legcf.upper-leg
    • Carbon fiber lower legcf.lower-leg
    Tools
    —
    Torque
    —
    Time
    —
    After
    Start
  2. Hips
    02

    Hip step 1: install the servo disc on the ab/adduction servo (x4)

    Put a horn on the servo, turn it to neutral, remove the horn. Seat the disc with its holes at roughly the 45° marks, add a dab of Loctite to the M3x6 socket screw and drive it in until the disc seats. Poorly made discs take a lot of torque at first; stop when the torque rises again at full seating or you can break the servo.

    CHECKDisc is fully seated with holes at about 45° while the servo is at neutral; the screw is snug, not forced.
    Parts in
    • JX CLS6336 servo (3 per leg); upstream recommends buying a few sparesactuator.jx-cls6336
    • 25T disc servo spline, ab/adduction connector (pack of 5, 4 used)structure.servo-disc-25t
    • M3 x 6 alloy steel socket head screw (pack of 100; 16 carbon fiber to body, 4 servo discs)fastener.m3x6-socket
    • 25T servo arm (horn)structure.servo-arm-25t
    Tools
    2.5 mm hex driver, Loctite
    Torque
    —
    Time
    —
    After
    Start
  3. Software
    03

    Flash Raspbian and the RPI-Setup files

    Flash 2019-09-26-raspbian-buster-lite with Etcher (fallback: 2020-02-13-raspbian-buster-lite from downloads.raspberrypi.org). Copy the latest RPI-Setup release (github.com/Nate711/RPI-Setup) onto the boot partition, overwriting conflicts. Boot the Pi, set your computer to a static 10.0.0.X / 255.255.255.0 on Ethernet, `ssh pi@10.0.0.10` (password `raspberry`), run `rw`, set up Wi-Fi with `sudo raspi-config`, then `sudo ./install_packages.sh` (pick a new IP and hostname) and `sudo ./time_sync.sh`.

    CHECKThe prompt ends with (rw) after `rw`, and `ping www.google.com` gets replies.
    Parts in
    • microSD card for the Pi (32 GB recommended; listed on the Tools tab)compute.microsd
    Tools
    balenaEtcher, Ethernet cable, USB-C 5 V >= 3 A Pi power supply
    Torque
    —
    Time
    —
    After
    Start
  4. Fabrication
    04

    Print the body supports, Pi case and hips

    Print in PLA or PETG at 0.2-0.4 mm layer height and more than 50% infill: FrontFront, FrontBack, BackFront, BackBack, picase, and 4 each of HipInsideFDM and HipOutsideFDM (a 5th of each as a spare is suggested).

    CHECK4 body pieces, 1 Pi case, 4 inner and 4 outer hips; the bearing holes in FrontFront and BackFront accept an MR693 bearing with a press fit.
    Parts in
    • Body support "Front1" (FrontFront.stl), holds 2 hip bearingsprinted.front-front
    • Body support "Front2" (FrontBack.stl)printed.front-back
    • Body support "Back1" (BackFront.stl), holds 2 hip bearingsprinted.back-front
    • Body support "Back2" (BackBack.stl)printed.back-back
    • Raspberry Pi case (picase.stl)printed.picase
    • Inner hip (HipInsideFDM.stl); upstream suggests a 5th as a spareprinted.hip-inside
    • Outer hip (HipOutsideFDM.stl); upstream suggests a 5th as a spareprinted.hip-outside
    Tools
    FDM printer, or a print service (upstream used 3D Hubs: SLS PA12 ~$180, FDM PLA/PETG ~$80)
    Torque
    —
    Time
    —
    After
    01
  5. Electronics
    05

    PCB steps 1-4: headers, Vbat/5 V pins and XT60

    Solder the 12 three-pin servo headers (tack the signal pins nearest the 2x20 header first, then ground and +). Insert the 2x20 header from the bottom so it sits on the Pi, solder from the top. Add 1x2 pins at 'Regulated 5V' and at 'Vbat' (skip Vbat pins if you cannot crimp Dupont/JST). Solder the XT60 pigtail from the top, matching the + and - labels.

    CHECKAll joints shiny and complete; the XT60 polarity matches the silkscreen.
    Parts in
    • Custom power distribution PCB (Pi hat), pack of 5; 2 layers, 2 oz copperelectronics.pdb
    • Male header pins for the PDB servo connectors (pack of 50 strips)electronics.header-pins
    • Raspberry Pi 2x20 female stacking header for the PDB (pack of 5 listed, 1 used)electronics.pi-header
    • XT60 connector pigtail (pack of 2, 1 used)cable.xt60
    Tools
    Soldering iron (>= 60 W recommended), Vise
    Torque
    —
    Time
    —
    After
    01
  6. Software
    06

    Install StanfordQuadruped and the joystick service

    On the Pi: `git clone https://github.com/stanfordroboticsclub/StanfordQuadruped.git`, `cd StanfordQuadruped`, `sudo bash install.sh` (installs numpy, transforms3d, pigpio, pyserial, PupperCommand, PS4Joystick and pigpio v74, and enables robot.service). Unplug the battery 30 s and power back up. Pair the PS4 controller: hold Share + PS until it double-flashes.

    CHECK`sudo systemctl status joystick` shows 'Connected to Bluetooth Controller'; `sudo systemctl status robot` shows no failure (fix with `sudo systemctl restart robot`).
    Parts in
    • Sony DualShock 4 (PS4) wireless controllerelectronics.ps4-controller
    Tools
    —
    Torque
    —
    Time
    —
    After
    03
  7. Hips
    07

    Hip step 2: M3 heat-set insert in each inner hip

    Safety · human-verified required

    Tapered side down, press the insert with just the weight of the iron at about 260 °C, 1 mm at a time, lifting the iron between pushes so it does not stick. Hot tip: use a stand.

    CHECKInsert sits flush and square; an M3 screw threads in without the insert turning.

    This step can hurt a person or ruin parts. Its instructions need sign-off by a human who has done it before relying on them. Stop and ask if anything differs from what you see.

    Parts in
    • M3 short heat-set insert (pack of 100; 16 body pieces, 4 inner hips)fastener.m3-insert
    • Inner hip (HipInsideFDM.stl); upstream suggests a 5th as a spareprinted.hip-inside
    Tools
    Soldering iron at ~260 °C (500 °F)
    Torque
    —
    Time
    —
    After
    04
  8. Body
    08

    Body steps 1-2: inserts and hip bearings in the body pieces

    Safety · human-verified required

    Press 4 M3 heat-set inserts into each of the 4 body pieces (2 top, 2 bottom), same method as the hips. Press 2 MR693 bearings into FrontFront and 2 into BackFront.

    CHECK16 inserts flush; 4 bearings seated and spinning freely.

    This step can hurt a person or ruin parts. Its instructions need sign-off by a human who has done it before relying on them. Stop and ask if anything differs from what you see.

    Parts in
    • M3 short heat-set insert (pack of 100; 16 body pieces, 4 inner hips)fastener.m3-insert
    • Body support "Front1" (FrontFront.stl), holds 2 hip bearingsprinted.front-front
    • Body support "Front2" (FrontBack.stl)printed.front-back
    • Body support "Back1" (BackFront.stl), holds 2 hip bearingsprinted.back-front
    • Body support "Back2" (BackBack.stl)printed.back-back
    • MR693-ZZ bearing 3 x 8 x 4 mm, ab/adduction axle (pack of 10, 4 used)structure.mr693-bearing
    Tools
    Soldering iron at ~260 °C, Arbor press or vise
    Torque
    —
    Time
    —
    After
    04
  9. Electronics
    09

    PCB steps 5-7: short test, servo power test, BEC

    Safety · human-verified required

    Continuity-test that XT60 + and - are not shorted, and no signal pin shorts to +, - or another signal. Plug in the 2S LiPo (never more than 8.4 V), plug one servo in (signal wire, usually yellow or white, toward the Pi header), then unplug both. Cut the BEC's input JST, solder or crimp its input to Vbat, and plug its 5 V JST onto the Regulated 5V pins.

    CHECKNo shorts; the single servo powers up without smoke; with the battery in, the BEC output reads 5 V.

    This step can hurt a person or ruin parts. Its instructions need sign-off by a human who has done it before relying on them. Stop and ask if anything differs from what you see.

    Parts in
    • 5200 mAh 2S LiPo, XT60 (never more than 8.4 V: higher voltage burns the servos)power.lipo-2s-5200
    • 5 V regulator (BEC) for the Pi (pack of 2, 1 used)power.bec-5v
    • JX CLS6336 servo (3 per leg); upstream recommends buying a few sparesactuator.jx-cls6336
    Tools
    Multimeter, Soldering iron or crimper
    Torque
    —
    Time
    —
    After
    05
  10. Hips
    10

    Hip steps 3-5: disc to inner hip, inner servo, standoffs and horn (x4)

    Mount the inner hip at 90° and tighten the M3x8 flat head through the access holes into the disc. Seat the servo with its shaft in the big round hole: silver M4x10 plastic screws on the left, M3x16 button heads (Loctite) through standoffs on the right. Turn the servo to neutral and fit the horn pointing 45° downward; M3x8 button head on top, M2x8 socket heads in the side clamp, Loctite on all.

    CHECKPlastic screws on one side, M3 screws on the other (as in the photos); horn is at 45° down with the servo at neutral.
    Parts in
    • M3 x 8 alloy steel flat head screw, disc spline to inner hip (pack of 100)fastener.m3x8-flat
    • JX CLS6336 servo (3 per leg); upstream recommends buying a few sparesactuator.jx-cls6336
    • M4 x 10 thread-forming screw for plastic (pack of 25; 32 used: 16 body, 16 servo mounts)fastener.m4x10-plastic
    • M3 x 16 alloy steel button head screw, standoff through servo mounting hole (pack of 100, 16 used)fastener.m3x16-button
    • 20 mm M3 aluminium standoff, leg hub (pack of 20, 16 used)structure.standoff-m3-20
    • 25T servo arm (horn)structure.servo-arm-25t
    • M3 x 8 alloy steel button head screw (pack of 100; ~20 used: hip bearings, servo arms, ball links, feet)fastener.m3x8-button
    Tools
    2 mm hex driver, T20 Torx driver, Loctite
    Torque
    —
    Time
    —
    After
    02, 07
  11. Hips
    12

    Hip steps 8-11: outer servo, horn, join the halves

    Fix the servo in the outer hip with the two plastic screws nearest the spline. Neutral, then horn at 45° (M3x8 first, then M2x8 to clamp). Join inner and outer halves with M3x16 through the outer hip into the standoffs (Loctite, not fully tight yet); plastic screws on the same side, horns at 90° to each other. Add the other 2 standoffs with 4 M3x10 button heads. Mark left and right; compare with the Fusion 360 model if unsure.

    CHECKA rigid hip module with 4 standoffs; the two horns sit 90° apart.
    Parts in
    • Outer hip (HipOutsideFDM.stl); upstream suggests a 5th as a spareprinted.hip-outside
    • JX CLS6336 servo (3 per leg); upstream recommends buying a few sparesactuator.jx-cls6336
    • M4 x 10 thread-forming screw for plastic (pack of 25; 32 used: 16 body, 16 servo mounts)fastener.m4x10-plastic
    • 25T servo arm (horn)structure.servo-arm-25t
    • M3 x 8 alloy steel button head screw (pack of 100; ~20 used: hip bearings, servo arms, ball links, feet)fastener.m3x8-button
    • M3 x 16 alloy steel button head screw, standoff through servo mounting hole (pack of 100, 16 used)fastener.m3x16-button
    • M3 x 10 alloy steel button head screw (pack of 100; 32 standoffs, 4 ball links)fastener.m3x10-button
    • 20 mm M3 aluminium standoff, leg hub (pack of 20, 16 used)structure.standoff-m3-20
    Tools
    T20 Torx driver, 2 mm hex driver, Loctite
    Torque
    —
    Time
    —
    After
    11
  12. 13

    Hip step 12: check each servo's range by hand

    Unpowered, move each joint through its range.

    CHECKHip goes fully flat on either side; the inner horn goes from 45° up to touching the lower standoff; the outer horn goes from touching the standoff to 45° down.
    Parts in
    —
    Tools
    —
    Torque
    —
    Time
    —
    After
    12
  13. Legs
    14

    Hip steps 13-15: extension rod and parallelogram linkage

    Thread the rod ends on equally until the hole centres are 123.5 mm apart. Screw the rod to the outer servo horn from the inside with an M3x8 button head. Fix the other end to the lower leg with an M3x10 button head through the carbon and the rod end, and a locknut.

    CHECKHorn, extension rod, upper leg and the top of the lower leg form a parallelogram (the docs' photo correction shows a rod that is too short).
    Parts in
    • Threaded rod for the extension rod (pack of 10, 4 used)structure.threaded-rod
    • 3.0 x 20 mm rod end / ball link (pack of 5; 8 used)structure.ball-end
    • M3 x 8 alloy steel button head screw (pack of 100; ~20 used: hip bearings, servo arms, ball links, feet)fastener.m3x8-button
    • M3 x 10 alloy steel button head screw (pack of 100; 32 standoffs, 4 ball links)fastener.m3x10-button
    • M3 locknut (pack of 100; 12 used: ball links, knee stack, feet)fastener.m3-locknut
    Tools
    2 mm hex driver, Wrench, Calipers
    Torque
    —
    Time
    —
    After
    13
  14. Body
    15

    Body steps 3-4: fasten the hips and the bottom plate

    Fix two hip assemblies to BackBack and two to FrontBack with the plastic screws, then drive M3x8 button heads through the bearings in FrontFront and BackFront into the hip inserts. Screw both leg/body assemblies to the bottom carbon plate with 16 M3x6 screws.

    CHECKAll four hips abduct freely on their bearings and both ends sit flat on the bottom plate.
    Parts in
    • M4 x 10 thread-forming screw for plastic (pack of 25; 32 used: 16 body, 16 servo mounts)fastener.m4x10-plastic
    • M3 x 8 alloy steel button head screw (pack of 100; ~20 used: hip bearings, servo arms, ball links, feet)fastener.m3x8-button
    • Carbon fiber plate "Bottom"cf.plate-bottom
    • M3 x 6 alloy steel socket head screw (pack of 100; 16 carbon fiber to body, 4 servo discs)fastener.m3x6-socket
    Tools
    T20 Torx driver, 2 mm hex driver
    Torque
    —
    Time
    —
    After
    08, 14
  15. 16

    Body step 5: Pi case

    Press 4 M2.5 inserts into the Pi case, screw the Pi 4 down with M2.5 socket heads, and stick the case to the bottom plate with Dual Lock.

    CHECKPi is rigid in the case and the case holds on the plate when the robot is lifted.
    Parts in
    • Raspberry Pi case (picase.stl)printed.picase
    • M2.5 short heat-set insert for the Pi case (pack of 100, 4 used)fastener.m2p5-insert
    • M2.5 x 5 socket head screw, Pi to case (pack of 100, 4 used)fastener.m2p5x5-socket
    • Raspberry Pi 4 (2 GB listing linked)compute.rpi4
    • 3M Dual Lock SJ3550, 1 in x 4 ft (8 in used) to hold the Pi case and battery; optionalother.dual-lock
    Tools
    Soldering iron, 2 mm hex driver
    Torque
    —
    Time
    —
    After
    15
  16. Electronics
    17

    Body step 7: plug the 12 servos into J1-J12

    Stack the PDB on the Pi and plug each servo into its J1-J12 header following the docs' mapping photo. Signal pins always face the Pi header.

    CHECK12 servos plugged in per the mapping, every signal wire toward the Pi header.
    Parts in
    • Custom power distribution PCB (Pi hat), pack of 5; 2 layers, 2 oz copperelectronics.pdb
    • JX CLS6336 servo (3 per leg); upstream recommends buying a few sparesactuator.jx-cls6336
    Tools
    —
    Torque
    —
    Time
    —
    After
    16, 09
  17. Bring-up
    18

    Calibrate the 12 servo offsets

    Safety · human-verified required

    Robot on a stand, 2S LiPo in. SSH in and run `rw`, `sudo systemctl stop robot`, then `cd StanfordQuadruped`, `sudo pigpiod`, `python3 calibrate_servos.py`. Follow the prompts, aligning joint centres (not link edges) to horizontal or vertical for each of the 12 motors; the script writes the offsets. Then `sudo systemctl start robot`. Servos move under power: keep fingers out of the linkages.

    CHECKEvery joint reaches the prompted horizontal/vertical pose (if not, a disc or horn was mounted wrong) and the script finishes for all 12 servos.

    This step can hurt a person or ruin parts. Its instructions need sign-off by a human who has done it before relying on them. Stop and ask if anything differs from what you see.

    Parts in
    • 5200 mAh 2S LiPo, XT60 (never more than 8.4 V: higher voltage burns the servos)power.lipo-2s-5200
    Tools
    Stand that keeps the feet off the table
    Torque
    —
    Time
    —
    After
    17, 06
  18. 19

    First run: activate and trot

    Safety · human-verified required

    Optional for slippery floors: bolt a cushioning washer to each foot hole (M3x8, washer, locknut). Fit the top plate. Plug in the battery (the code starts on boot), pair the controller, press L1 to activate, R1 to toggle rest/trot; left stick translates, right stick pitch/yaw, D-pad height/roll, X three times to hop. Use a LiPo alarm and stop when a cell is below about 3.6 V.

    CHECKController light goes dim green on bind and bright green after L1; the robot stands and trots in place on R1.

    This step can hurt a person or ruin parts. Its instructions need sign-off by a human who has done it before relying on them. Stop and ask if anything differs from what you see.

    Parts in
    • M3 x 8 alloy steel button head screw (pack of 100; ~20 used: hip bearings, servo arms, ball links, feet)fastener.m3x8-button
    • M3 locknut (pack of 100; 12 used: ball links, knee stack, feet)fastener.m3-locknut
    • M3 washer for the foot (pack of 100, 4 used)fastener.m3-washer
    • Cushioning washer used as a foot (pack of 10, 4 used)other.cushion-washer
    • Carbon fiber plate "Top"cf.plate-top
    Tools
    —
    Torque
    —
    Time
    —
    After
    18
  19. Options
    20

    Optional: BNO080 IMU via Teensy LC

    The BOM lists an optional IMU setup (BNO080 breakout read by a Teensy LC connected to the Pi; src/IMU.py reads it over serial). The build guide gives no wiring or firmware steps for it.

    CHECKOnly if you add it: IMU data arrives on the Pi's serial port.
    Parts in
    • SparkFun VR IMU breakout BNO080 (optional IMU setup)sensor.bno080
    • Teensy LC, IMU-to-Pi bridge (optional IMU setup)electronics.teensy-lc
    Tools
    —
    Torque
    —
    Time
    —
    After
    19

Progress is stored in this browser only (localStorage). Nothing is sent anywhere.

05

Bring-up

Flash · calibrate · first policy
  1. A

    Flash firmware

    TargetsRaspberry Pi 4 (Raspbian Buster Lite + RPI-Setup, read-only root), 12 x JX CLS6336 PWM servos driven by pigpiod software PWM

    Repogithub.com/stanfordroboticsclub/StanfordQuadruped

    No microcontroller firmware: run_robot.py (robot.service) runs the gait scheduler, stance/swing controllers and IK in Python and outputs PWM through pigpio. PS4 input comes from PupperCommand/PS4Joystick (joystick.service) over UDP. Gait parameters in pupper/Config.py.

  2. B

    Calibrate

    CalibrationOn a stand with the battery in: `rw`, `sudo systemctl stop robot`, `sudo pigpiod`, `python3 calibrate_servos.py` in StanfordQuadruped; align each joint to the prompted horizontal/vertical pose. The script writes the offsets; then `sudo systemctl start robot`.

    Log the output. It goes in your build report.

  3. C

    First policy

    No published policy in the package yet.

Try the policy in the browser sim before it touches hardware. Keep a hand near the power switch the first time a policy runs on the real robot.

06

Report your build

Moves Stanford Pupper (v1) toward L4 · Built

A build report is the only thing that proves a package works. It raises the level, puts a point on the map, and tells the Foreman which steps to rewrite.

Robot/stanford/pupper

Sends JSON to POST hyperspawn.io/api/v1/reports. Reports are reviewed before they count toward L4 or appear on the map.

GATE

Level gate

Holds L1 · evidence, not confidence
  1. L0
    Indexed

    Known to exist. Atlas page only.

    • 5 sources on record(met)
    held
  2. L1
    Compiled

    Package validates against the spec; every fact has a source.

    • Build package compiled(met)
    • 21 sources across robot and package(met)
    held
  3. L2
    Sim-verified

    Loads in browser and GPU sim, mass within tolerance of the BOM, holds a stand. Unlocks .training.

    • No public URDF/MJCF(not met)
    • Sim load, mass tolerance and stand are checked on .training(checked elsewhere)
    next
  4. L3
    Sourced

    Every BOM line resolves to a live offer in at least two regions. Unlocks the one-click cart.

    • 0/34 BOM lines have offers in 2+ regions(not met)
    locked
  5. L4
    Built

    At least one community build report with photos and bring-up logs. Unlocks Build it as the main action.

    • 0 reviewed build reports(not met)
    • Review feed unreachable at last refresh; count is registry-only(checked elsewhere)
    locked
  6. L5
    Certified

    The robot's maintainer signs the package. Unlocks certified teams and kit sales.

    • Maintainer signature not recorded(not met)
    locked

Levels are cumulative and set by the registry from reviewed evidence. This panel shows what can be measured from the package today.

Same robot, other verbs

REV

Revisions and sources

Every fact on this sheet traces to one of these
RevDescriptionChecked
PKGBuild package, current revision 0.1.0—
S1StanfordQuadruped repo (EOL notice)github.com2026-09-24
S2arXiv: Stanford Pupper paperarxiv.org2026-09-24
S3Pupper 2020 documentationpupper.readthedocs.io2026-09-24
S4Pupper docs: part sourcing (kit vendors, PDB fab)pupper.readthedocs.io2026-09-25
S5Pupper-Raspi-PDB (KiCad, Gerbers)github.com2026-09-25
S6Pupper documentation (index)pupper.readthedocs.io2026-09-25
S7Pupper docs: part sourcingpupper.readthedocs.io2026-09-25
S8Pupper bill of materials (Google Sheets: Hardware, Electronics, Tools, PCB, 3D printed, carbon fiber tabs)docs.google.com2026-09-25
S9Pupper STL files (Google Drive, linked from the BOM)drive.google.com2026-09-25
S10Pupper docs: assembly (hip, body, PCB)pupper.readthedocs.io2026-09-25
S11Pupper docs: software installationpupper.readthedocs.io2026-09-25
S12Pupper docs: calibrationpupper.readthedocs.io2026-09-25
S13Pupper docs: robot operationpupper.readthedocs.io2026-09-25
S14Pupper docs: mechanical design (Fusion 360 link, PDB repo)pupper.readthedocs.io2026-09-25
S15Pupper Fusion 360 CAD modela360.co2026-09-25
S16Pupper-Raspi-PDB (KiCad, Gerbers)github.com2026-09-25
S17StanfordQuadruped (code, install.sh, calibrate_servos.py, EOL notice)github.com2026-09-25
S18Pupper docs source repogithub.com2026-09-25
S19RPI-Setup (Pi boot files)github.com2026-09-25
S20PupperCommand (joystick service)github.com2026-09-25
S21PS4Joystickgithub.com2026-09-25