Skip to content
humanoidrobot.build

Build package

Build ToddlerBot

Stanford University · Humanoid · research · 2025

Low-cost, fully 3D-printed open-source small humanoid (0.56 m, 3.4 kg, 30 DOF) for scalable policy learning research.

L2Sim-verifiedGate: Loads in browser and GPU sim, mass within tolerance of the BOM, holds a stand. Unlocks .training.
Fig 1/6RenderToddlerBot studio render, three-quarter front view
Studio render of the published MJCF, keyframe pose from the model. Geometry only; colours are the model's own materials.© Rendered by Hyperspawn from mujoco_menagerie/toddlerbot_2xc (MIT) · Hyperspawn render · source
Drawing
/stanford/toddlerbot
Maker
Stanford University
Country
Stanford, US
Package rev
v0.1.0
Level
L2 Sim-verified
Availability
DIY
Openness
100/100
HW licence
CC-BY-NC-SA-4.0
Last checked
2026-09-25
Height
56 cm
Mass
3.4 kg
DOF
30
Actuators
servo actuators; 7 DOF/arm, 6 DOF/leg, 2 neck, 2 waist

ToddlerBot 2.0 released Aug 2025; variants 2XC and 2XM both in Menagerie (toddlerbot_2xm). Onshape CAD + MakerWorld print files + BOM sheet public. Locomotion Beyond Feet follow-up Jan 2026. Mirror fork exists at kscalelabs/toddlerbot. Licenses per README: code and docs MIT; hardware design (Onshape, STL/3MF) CC BY-NC-SA 4.0, non-commercial.

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
$5,728+ 1 unpriced line: lower bound
Cart $5,728 · filament not priced (enter your $/kg)
02

Source

One cart across 7 vendors · prices in USD as listed

47 lines · 342 parts · 2 without an offer in US · 3/47 lines sourced in 2+ regions (L3 gate)

#PartCategoryQtyUnitLineOffer
ROBOTIS US7 lines · $4,069.96
1
DYNAMIXEL 2XC430-W250-T (dual-axis, hip)
actuator.2xc430-w250 · MPN 2XC430-W250-T · 1 alt
actuator2$298.89list price$597.78ROBOTIS US
2
DYNAMIXEL 2XL430-W250-T (dual-axis, arms: 3 per arm)
actuator.2xl430-w250 · MPN 2XL430-W250-T · 1 alt
actuator6$149.39list price$896.34ROBOTIS US
3
DYNAMIXEL XC330-T288-T (neck, waist, ankle, torso)
actuator.xc330-t288 · MPN XC330-T288-T
actuator6$103.39list price$620.34ROBOTIS US
4
DYNAMIXEL XC430-T240BB-T
actuator.xc430-t240bb · MPN XC430-T240BB-T
actuator4$137.89list price$551.56ROBOTIS US
5
DYNAMIXEL XM430-W210-T (legs: 2 per leg)
actuator.xm430-w210 · MPN XM430-W210-T · 1 alt
actuator4$310.39list price$1,241.56ROBOTIS US
6
DYNAMIXEL HN11-I101 idler set
structure.idler-hn11 · MPN HN11-I101 · 1 alt
structure10$8.05list price$80.50ROBOTIS US
7
DYNAMIXEL HN12-I101 idler set
structure.idler-hn12 · MPN HN12-I101 · 1 alt
structure4$20.47list price$81.88ROBOTIS US
Seeed Studio1 line · $955.00
8
NVIDIA Jetson Orin NX 16GB (Seeed reComputer J4012)
compute.jetson-orin-nx · MPN reComputer J4012 · 1 alt
compute1$955.00list price$955.00Seeed Studioships globally
Amazon US31 lines · $511.37
9
AW-CB375NF M.2 (A/E key) Wi-Fi 5 + BLE card
electronics.wifi-card · MPN AW-CB375NF
electronics1$18.36list price$18.36Amazon US
10
Wi-Fi 6E internal antenna pair, IPX MHF4
electronics.wifi-antenna
electronics1$9.49list price$9.49Amazon US
11
Arducam 1080P IMX291 160° fisheye USB camera with mic (eyes)
sensor.fisheye-camera
sensor2$49.99list price$99.98Amazon US
12
Phone loudspeaker (iPhone SE 2020/2022 replacement part)
electronics.speaker
electronics1$5.99list price$5.99Amazon US
13
HiLetgo M38 Bluetooth MP3 audio receiver board (3-pack), speaker driver
electronics.speaker-driver
electronics1$7.99list price$7.99Amazon US
14
2000 mAh LiPo battery
power.battery-lipo · 1 alt
power1$49.99list price$49.99Amazon USCell count/voltage not stated in the sheet; check the listing
15
LiPo battery voltage tester / low-voltage alarm
power.lipo-tester
power1$12.95list price$12.95Amazon US
16
LiPo balance charger
power.lipo-charger
power1$31.99list price$31.99Amazon US
17
Rocker switch (5-pack)
power.rocker-switch
power1$5.99list price$5.99Amazon US
18
USB-A to micro-USB cable, 0.5 ft
cable.usb-micro-0.5ft
cable1$5.98list price$5.98Amazon US
19
USB-A to micro-USB cable, 1.5 ft (speaker)
cable.usb-micro-1.5ft
cable1$8.99list price$8.99Amazon US
20
USB hub port splitter (cameras + speaker)
electronics.usb-hub
electronics1$6.98list price$6.98Amazon US
21
Jumper wire assortment (IMU to Jetson header)
cable.jumper-wire
cable1$6.98list price$6.98Amazon US
22
XT30 male + female plugs (5 pairs)
cable.xt30-pairs
cable1$9.99list price$9.99Amazon US
23
XT30 to XT60 adapter leads (4-pack)
cable.xt30-xt60
cable1$8.99list price$8.99Amazon US
24
Barrel jack connector 5.5x2.5 mm (DC5525), Jetson power
cable.barrel-jack
cable1$9.49list price$9.49Amazon US
25
14 AWG 2-conductor power cable (bench-supply tether)
cable.wire-14awg
cable1$17.49list price$17.49Amazon US
26
683-2RS ball bearing 3x7x3 mm (10-pack)
structure.bearing-683
structure1$11.96list price$11.96Amazon US
27
684ZZ ball bearing 4x9x4 mm (10-pack)
structure.bearing-684
structure2$7.99list price$15.98Amazon US
28
AXK0414 thrust needle roller bearing + 2 washers
structure.bearing-axk0414 · MPN AXK0414
structure30$1.48list price$44.40Amazon USAlternative link in the sheet
29
Oilless sleeve bushing 3 mm bore x 5 mm OD x 5 mm (10-pack)
structure.bushing-3x5x5
structure1$5.99list price$5.99Amazon US
30
5 mm rubber tape (foot / palm grip)
other.rubber-tape
other1$16.99list price$16.99Amazon US
31
Vibra-TITE 213 VC-3 threadlocker, 5 mL (about 100 screws need it per the manual)
other.threadlocker
other1$6.55list price$6.55Amazon US
32
M2 button-head screw/nut/washer kit, 660 pcs (Screws tab: M2x4 24, M2x8 43, M2x10 20)
fastener.m2-kit
fastener2$8.99list price$17.98Amazon US
33
M2.5 button-head screw kit, 705 pcs (Screws tab: M2.5x4 32, x6 8, x10 19)
fastener.m2_5-kit
fastener1$9.99list price$9.99Amazon US
34
M3 countersunk screw kit, 565 pcs (Screws tab: M3x4 5, x6 14, x8 4, x10 11, x14 1; flat head x6 2, x8 5, x12 6)
fastener.m3-flat-kit
fastener1$9.99list price$9.99Amazon US
35
M3x8 set screws / studs, 50 pcs (Screws tab: 8 used)
fastener.m3x8-set
fastener1$6.99list price$6.99Amazon US
36
M3x10 set screws / studs, 50 pcs (Screws tab: 25 used)
fastener.m3x10-set
fastener1$6.99list price$6.99Amazon US
37
M4 button-head screw kit, 675 pcs (Screws tab: M4x8 5, x12 1, x20 6, x25 2, x30 2)
fastener.m4-kit
fastener1$22.38list price$22.38Amazon US
38
M4 x 40-60 mm socket head screws, 50 pcs (Screws tab: M4x55 1, waist)
fastener.m4-long-kit
fastener1$9.58list price$9.58Amazon US
39
M3 + M4 stainless lock nut kit, 182 pcs
fastener.locknuts
fastener1$7.98list price$7.98Amazon US
Bambu Lab US store2 lines · $89.97
40
Bambu PLA-CF filament, 1 kg (structural parts)
printed.filament-pla-cf
printed2$34.99list price$69.98Bambu Lab US store
41
Bambu PLA Basic filament, 1 kg (calibration devices, stand)
printed.filament-pla
printed1$19.99list price$19.99Bambu Lab US store
Pololu1 line · $69.90
42
Pololu D36V50F12 12 V 4.5 A step-down regulator
power.buck-12v · MPN D36V50F12
power2$34.95list price$69.90Pololu
Adafruit1 line · $24.95
43
Adafruit BNO085 9-DOF IMU breakout (STEMMA QT)
sensor.imu-bno085 · MPN Adafruit 4754
sensor1$24.95list price$24.95Adafruit
DigiKey2 lines · $4.99
44
JST EH pre-crimped cable (long motor-chain runs)
cable.jst-eh-precrimped
cable10$0.38list price$3.82DigiKeyDigiKey short link from the sheet; sheet shows $0.38 unit, $3.82 line total
45
JST EH 3-pin housing
cable.jst-eh-housing
cable25$0.05list price$1.17DigiKeyDigiKey short link from the sheet; sheet shows $0.05 unit, $1.17 line total
No offer in this region2 lines · $1.80 + 1 unpriced
46
TTL power/communication board V8 (8-channel, CH348L USB-to-TTL, 3x XT30 out, 2 buck headers), JLCPCB PCBA
electronics.pcb-8ch · MPN TTLPowerBoardV8
electronics1unpriced—Offers in CN only
47
M2x6 pre-coated (thread-locking) screws, 200 pcs (Screws tab: 106 used)
fastener.m2x6-precoated
fastener200$0.01list price$1.80Offers in CN only
Cart total · US342$5,727.941 line unpriced, not in total
03

Fabricate

Planned for a 256 mm bed
Fabricated parts
13
Print time (sum)
55 h
Material (sum)
1,520 g
Plates · estimate
≈ 8

Plates is an estimate, not a slice: the package has no part footprints, so it assumes about 200 g of FDM parts per plate on a 256 mm bed, scaled by bed area (256 mm ≈ 200 g/plate). Parts larger than your bed are not detected. One printer running around the clock: about 2.3 days.

PartProcessMaterialQtyh / partg / partProfile
Arm plate 1 (arms are identical left/right) (MakerWorld 2XC profile, plate 1)
printed.arm-1
FDMPLA-CF14.1940.2 mm layer, 6 walls, 25% infill (MakerWorld profile 1842043, Bambu + AMS)
Arm plate 2 (MakerWorld 2XC profile, plate 2)
printed.arm-2
FDMPLA-CF14.1940.2 mm layer, 6 walls, 25% infill
Left leg plate (MakerWorld 2XC profile, plate 3)
printed.leg-left
FDMPLA-CF14.71200.2 mm layer, 6 walls, 25% infill
Right leg plate (MakerWorld 2XC profile, plate 4)
printed.leg-right
FDMPLA-CF14.71200.2 mm layer, 6 walls, 25% infill
Torso plate (MakerWorld 2XC profile, plate 5)
printed.torso
FDMPLA-CF110.03120.2 mm layer, 6 walls, 25% infill
Torso + head + neck small parts (MakerWorld 2XC profile, plate 10)
printed.torso-head-neck
FDMPLA-CF13.1610.2 mm layer, 6 walls, 25% infill
Head cover (MakerWorld 2XC profile, plate 11)
printed.head-cover
FDMPLA-CF13.9700.2 mm layer, 6 walls, 25% infill
Waist (gears: tips page recommends PLA-CF with more wall loops) (MakerWorld 2XC profile, plate 13)
printed.waist
FDMPLA-CF13.8860.2 mm layer, 6 walls, 25% infill
Feet, rubber-pad version (alt: plate 15 'Foot without Rubber', 34 g, 1.1 h) (MakerWorld 2XC profile, plate 17)
printed.foot
FDMPLA-CF11.0270.2 mm layer, 6 walls, 25% infill
Palms, rubber-pad version (alt: plate 16 'Palm with TPU', 62 g TPU, 5.1 h) (MakerWorld 2XC profile, plate 18)
printed.palm
FDMPLA-CF11.4420.2 mm layer, 6 walls, 25% infill
Unlabelled plate (contents not named on MakerWorld) (MakerWorld 2XC profile, plate 19)
printed.plate-19
FDMPLA-CF + PLA (28 g + 3 g)11.0310.2 mm layer, 6 walls, 25% infill
Zero-point calibration devices, set 1 (tooling) (MakerWorld 2XC profile, plate 8)
printed.calibrator-1
FDMPLA18.42980.2 mm layer, 6 walls, 25% infill
Zero-point calibration devices, set 2 (tooling) (MakerWorld 2XC profile, plate 12)
printed.calibrator-2
FDMPLA14.41650.2 mm layer, 6 walls, 25% infill
PLA-CF · 10 parts · 1,026 gPLA · 2 parts · 463 gPLA-CF + PLA (28 g + 3 g) · 1 parts · 31 g
04

Assemble

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

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

Assembly graph · lanes are subassemblies, columns are dependency depthcritical pathdonesafety

Steps, in build order

  1. Fabrication
    01

    Order the 8-channel TTL power board (PCBA) first

    The docs say to order the PCB before anything else (about 10 days lead time). Upload TTLPowerBoardV8.zip to JLCPCB, choose Standard PCBA with both sides assembled, then upload bom_v8.csv and positions_v8.csv. If a part is out of stock, use the documented substitutes: C160259 (JST EH), C2902689 (2x06 pin socket), C5188440 (5 mm terminal block).

    CHECKIn the JLCPCB parts-confirmation screen every BOM row is ticked and the front/back placement previews match the v8placementF/B images in the docs.
    Parts in
    • TTL power/communication board V8 (8-channel, CH348L USB-to-TTL, 3x XT30 out, 2 buck headers), JLCPCB PCBAelectronics.pcb-8ch
    Tools
    —
    Torque
    —
    Time
    —
    After
    Start
  2. 02

    Print the robot and calibration plates

    Bambu users can print straight from the MakerWorld 2XC release. Other printers: download the 3MF files and keep the published part orientations and profile, which the docs say matter for strength. Remove supports before assembly. For custom edits, use the Onshape document.

    CHECKAll 13 plates listed here are printed with supports removed. The per-plate filament use roughly matches MakerWorld (about 1.05 kg PLA-CF and 0.47 kg PLA across these 13 plates).
    Parts in
    • Arm plate 1 (arms are identical left/right) (MakerWorld 2XC profile, plate 1)printed.arm-1
    • Arm plate 2 (MakerWorld 2XC profile, plate 2)printed.arm-2
    • Left leg plate (MakerWorld 2XC profile, plate 3)printed.leg-left
    • Right leg plate (MakerWorld 2XC profile, plate 4)printed.leg-right
    • Torso plate (MakerWorld 2XC profile, plate 5)printed.torso
    • Torso + head + neck small parts (MakerWorld 2XC profile, plate 10)printed.torso-head-neck
    • Head cover (MakerWorld 2XC profile, plate 11)printed.head-cover
    • Waist (gears: tips page recommends PLA-CF with more wall loops) (MakerWorld 2XC profile, plate 13)printed.waist
    • Feet, rubber-pad version (alt: plate 15 'Foot without Rubber', 34 g, 1.1 h) (MakerWorld 2XC profile, plate 17)printed.foot
    • Palms, rubber-pad version (alt: plate 16 'Palm with TPU', 62 g TPU, 5.1 h) (MakerWorld 2XC profile, plate 18)printed.palm
    • Unlabelled plate (contents not named on MakerWorld) (MakerWorld 2XC profile, plate 19)printed.plate-19
    • Zero-point calibration devices, set 1 (tooling) (MakerWorld 2XC profile, plate 8)printed.calibrator-1
    • Zero-point calibration devices, set 2 (tooling) (MakerWorld 2XC profile, plate 12)printed.calibrator-2
    • Bambu PLA-CF filament, 1 kg (structural parts)printed.filament-pla-cf
    • Bambu PLA Basic filament, 1 kg (calibration devices, stand)printed.filament-pla
    Tools
    Bambu Lab printer (recommended; sheet lists X1-Carbon Combo + smooth PEI plate + glue)
    Torque
    —
    Time
    —
    After
    Start
  3. 03

    Sort and count the hardware

    The manual preface: sort and count every hardware piece into separate compartments so leftovers reveal skipped steps. Use the pre-coated M2x6 screws, or threadlocker on the screws highlighted yellow in the manual. If a joint feels stuck, check screw length first.

    CHECKCounted piles match the sheet's Screws tab (e.g. M2x6 106, M2x8 43, M2.5x4 32, M3x10 studs 25, bearings 683 x12, 684 x14, AXK0414 x18).
    Parts in
    • M2x6 pre-coated (thread-locking) screws, 200 pcs (Screws tab: 106 used)fastener.m2x6-precoated
    • M2 button-head screw/nut/washer kit, 660 pcs (Screws tab: M2x4 24, M2x8 43, M2x10 20)fastener.m2-kit
    • M2.5 button-head screw kit, 705 pcs (Screws tab: M2.5x4 32, x6 8, x10 19)fastener.m2_5-kit
    • M3 countersunk screw kit, 565 pcs (Screws tab: M3x4 5, x6 14, x8 4, x10 11, x14 1; flat head x6 2, x8 5, x12 6)fastener.m3-flat-kit
    • M3x8 set screws / studs, 50 pcs (Screws tab: 8 used)fastener.m3x8-set
    • M3x10 set screws / studs, 50 pcs (Screws tab: 25 used)fastener.m3x10-set
    • M4 button-head screw kit, 675 pcs (Screws tab: M4x8 5, x12 1, x20 6, x25 2, x30 2)fastener.m4-kit
    • M4 x 40-60 mm socket head screws, 50 pcs (Screws tab: M4x55 1, waist)fastener.m4-long-kit
    • M3 + M4 stainless lock nut kit, 182 pcsfastener.locknuts
    • 683-2RS ball bearing 3x7x3 mm (10-pack)structure.bearing-683
    • 684ZZ ball bearing 4x9x4 mm (10-pack)structure.bearing-684
    • AXK0414 thrust needle roller bearing + 2 washersstructure.bearing-axk0414
    • Oilless sleeve bushing 3 mm bore x 5 mm OD x 5 mm (10-pack)structure.bushing-3x5x5
    Tools
    —
    Torque
    —
    Time
    —
    After
    Start
  4. Arms
    04

    Arms (x2, identical)

    The arms go first because they are the easiest. Per the manual, each arm takes 3x 2XL430, 1x XC430 and 3x HN11-I101 idler sets. Plug the cable in on the idler side first, and seat studs flush with or slightly below the surface. Left and right arms are identical. The 2.0 assembly video walks through the arm.

    CHECKEach arm joint turns by hand through its range with no binding, and all studs sit flush or below the surface.
    Parts in
    • DYNAMIXEL 2XL430-W250-T (dual-axis, arms: 3 per arm)actuator.2xl430-w250
    • DYNAMIXEL XC430-T240BB-Tactuator.xc430-t240bb
    • DYNAMIXEL HN11-I101 idler setstructure.idler-hn11
    • AXK0414 thrust needle roller bearing + 2 washersstructure.bearing-axk0414
    • 684ZZ ball bearing 4x9x4 mm (10-pack)structure.bearing-684
    • M2 button-head screw/nut/washer kit, 660 pcs (Screws tab: M2x4 24, M2x8 43, M2x10 20)fastener.m2-kit
    • M2.5 button-head screw kit, 705 pcs (Screws tab: M2.5x4 32, x6 8, x10 19)fastener.m2_5-kit
    • M3x8 set screws / studs, 50 pcs (Screws tab: 8 used)fastener.m3x8-set
    • M3x10 set screws / studs, 50 pcs (Screws tab: 25 used)fastener.m3x10-set
    • M4 button-head screw kit, 675 pcs (Screws tab: M4x8 5, x12 1, x20 6, x25 2, x30 2)fastener.m4-kit
    • Arm plate 1 (arms are identical left/right) (MakerWorld 2XC profile, plate 1)printed.arm-1
    • Arm plate 2 (MakerWorld 2XC profile, plate 2)printed.arm-2
    • Palms, rubber-pad version (alt: plate 16 'Palm with TPU', 62 g TPU, 5.1 h) (MakerWorld 2XC profile, plate 18)printed.palm
    • Vibra-TITE 213 VC-3 threadlocker, 5 mL (about 100 screws need it per the manual)other.threadlocker
    Tools
    Electric screwdriver (low torque for M2), PH1 screwdriver, Allen keys
    Torque
    —
    Time
    —
    After
    02, 03
  5. Legs
    05

    Legs (left, then mirrored right)

    Per the manual, each leg takes 2x XM430, 1x XC430, 1x 2XC430, 1x XC330, 2x HN11 and 1x HN12. On the left hip roll the 2XC430 actuation side faces backward; on the right it faces forward. Watch the XC330 orientation. The right leg mirrors the left. 2.0 legs are 30 mm shorter and drop the knee parallel links.

    CHECKMotor orientations on both legs match the L/R orientation figure in the manual, and each leg joint moves by hand without cable snag.
    Parts in
    • DYNAMIXEL XM430-W210-T (legs: 2 per leg)actuator.xm430-w210
    • DYNAMIXEL 2XC430-W250-T (dual-axis, hip)actuator.2xc430-w250
    • DYNAMIXEL XC430-T240BB-Tactuator.xc430-t240bb
    • DYNAMIXEL XC330-T288-T (neck, waist, ankle, torso)actuator.xc330-t288
    • DYNAMIXEL HN11-I101 idler setstructure.idler-hn11
    • DYNAMIXEL HN12-I101 idler setstructure.idler-hn12
    • AXK0414 thrust needle roller bearing + 2 washersstructure.bearing-axk0414
    • 683-2RS ball bearing 3x7x3 mm (10-pack)structure.bearing-683
    • 684ZZ ball bearing 4x9x4 mm (10-pack)structure.bearing-684
    • M2 button-head screw/nut/washer kit, 660 pcs (Screws tab: M2x4 24, M2x8 43, M2x10 20)fastener.m2-kit
    • M2.5 button-head screw kit, 705 pcs (Screws tab: M2.5x4 32, x6 8, x10 19)fastener.m2_5-kit
    • M3 countersunk screw kit, 565 pcs (Screws tab: M3x4 5, x6 14, x8 4, x10 11, x14 1; flat head x6 2, x8 5, x12 6)fastener.m3-flat-kit
    • M4 button-head screw kit, 675 pcs (Screws tab: M4x8 5, x12 1, x20 6, x25 2, x30 2)fastener.m4-kit
    • M3 + M4 stainless lock nut kit, 182 pcsfastener.locknuts
    • Left leg plate (MakerWorld 2XC profile, plate 3)printed.leg-left
    • Right leg plate (MakerWorld 2XC profile, plate 4)printed.leg-right
    • Feet, rubber-pad version (alt: plate 15 'Foot without Rubber', 34 g, 1.1 h) (MakerWorld 2XC profile, plate 17)printed.foot
    • 5 mm rubber tape (foot / palm grip)other.rubber-tape
    Tools
    Allen keys, Wrench or pliers
    Torque
    —
    Time
    —
    After
    02, 03
  6. Head
    06

    Head: eyes, speaker, neck motor

    Mount both fisheye cameras (with cables) and the speaker driver with double-sided tape. Plug the cable in before closing the shell; the micro-USB port on the driver board is fragile. Plug in the neck motor cable on both sides. See the camera-cable, speaker-cable and head videos.

    CHECKBoth camera cables and the speaker cable exit the head, and the neck XC330 has cables on both sides.
    Parts in
    • Arducam 1080P IMX291 160° fisheye USB camera with mic (eyes)sensor.fisheye-camera
    • Phone loudspeaker (iPhone SE 2020/2022 replacement part)electronics.speaker
    • HiLetgo M38 Bluetooth MP3 audio receiver board (3-pack), speaker driverelectronics.speaker-driver
    • USB-A to micro-USB cable, 1.5 ft (speaker)cable.usb-micro-1.5ft
    • DYNAMIXEL XC330-T288-T (neck, waist, ankle, torso)actuator.xc330-t288
    • 683-2RS ball bearing 3x7x3 mm (10-pack)structure.bearing-683
    • 684ZZ ball bearing 4x9x4 mm (10-pack)structure.bearing-684
    • Head cover (MakerWorld 2XC profile, plate 11)printed.head-cover
    • Torso + head + neck small parts (MakerWorld 2XC profile, plate 10)printed.torso-head-neck
    Tools
    —
    Torque
    —
    Time
    —
    After
    02
  7. Waist
    07

    Waist (joins both legs)

    Per the manual: 2x XC330 and 2x HN11 idler sets, plus the M4x55 bolt. Match the motor orientation figure. The waist link flexes to let the motors in. The manual notes the waist link geometry changed after it was drawn, but the steps are the same.

    CHECKBoth legs hang from the waist, the waist turns by hand in roll and yaw, and the M4x55 screw is tight.
    Parts in
    • DYNAMIXEL XC330-T288-T (neck, waist, ankle, torso)actuator.xc330-t288
    • DYNAMIXEL HN11-I101 idler setstructure.idler-hn11
    • AXK0414 thrust needle roller bearing + 2 washersstructure.bearing-axk0414
    • 684ZZ ball bearing 4x9x4 mm (10-pack)structure.bearing-684
    • M4 x 40-60 mm socket head screws, 50 pcs (Screws tab: M4x55 1, waist)fastener.m4-long-kit
    • Waist (gears: tips page recommends PLA-CF with more wall loops) (MakerWorld 2XC profile, plate 13)printed.waist
    Tools
    Allen key
    Torque
    —
    Time
    —
    After
    05
  8. Torso
    08

    Torso shell, neck, IMU (manual torso steps 1-8)

    Build the torso up to step 8 of the manual. Plug in the IMU cable (4 jumper wires taped together, pin map in the manual) before closing that section. The manual singles out one step-3 screw as possibly the most critical in the build; tighten it fully.

    CHECKThe IMU is wired per the manual's pin map, the arms and head are attached, and the neck rotates by hand.
    Parts in
    • Torso plate (MakerWorld 2XC profile, plate 5)printed.torso
    • Torso + head + neck small parts (MakerWorld 2XC profile, plate 10)printed.torso-head-neck
    • DYNAMIXEL XC330-T288-T (neck, waist, ankle, torso)actuator.xc330-t288
    • Adafruit BNO085 9-DOF IMU breakout (STEMMA QT)sensor.imu-bno085
    • Jumper wire assortment (IMU to Jetson header)cable.jumper-wire
    • M3 countersunk screw kit, 565 pcs (Screws tab: M3x4 5, x6 14, x8 4, x10 11, x14 1; flat head x6 2, x8 5, x12 6)fastener.m3-flat-kit
    • M2.5 button-head screw kit, 705 pcs (Screws tab: M2.5x4 32, x6 8, x10 19)fastener.m2_5-kit
    • AXK0414 thrust needle roller bearing + 2 washersstructure.bearing-axk0414
    Tools
    —
    Torque
    —
    Time
    —
    After
    04, 06, 07
  9. Bring-up
    09

    Set Dynamixel IDs and baud rate

    Set IDs one motor at a time to avoid conflicts, using the ID list in the manual's wiring figure. Set every motor to 2 Mbps: the tips page says XC330 cannot sustain 4 Mbps. Each 2X motor shows two IDs; move the joint to see which one changes. The 'ID the Motors' video walks through it. The repo has no ID-assignment script.

    CHECKA Dynamixel Wizard scan at 2 Mbps finds every motor at its assigned ID with no duplicates.
    Parts in
    • DYNAMIXEL 2XC430-W250-T (dual-axis, hip)actuator.2xc430-w250
    • DYNAMIXEL 2XL430-W250-T (dual-axis, arms: 3 per arm)actuator.2xl430-w250
    • DYNAMIXEL XC330-T288-T (neck, waist, ankle, torso)actuator.xc330-t288
    • DYNAMIXEL XC430-T240BB-Tactuator.xc430-t240bb
    • DYNAMIXEL XM430-W210-T (legs: 2 per leg)actuator.xm430-w210
    Tools
    Dynamixel Wizard 2.0, U2D2 + U2D2 power hub + 12 V adapter (per the manual; the sheet lists U2D2/hub only under Teleoperation)
    Torque
    —
    Time
    —
    After
    08
  10. Compute
    10

    Set up the Jetson Orin NX before installing it

    Flash JetPack 6.1+ (the Seeed reComputer J4012 guide), fit the M.2 Wi-Fi card, set power mode 0:MAXN, install the real-time kernel, then create the conda env and run `pip install -e ".[jetson]"`. The USB-C port is for flashing only.

    CHECK`uname -r` ends in `-rt-tegra`, the Jetson joins Wi-Fi and accepts SSH, and `pytest tests/` runs in the toddlerbot env.
    Parts in
    • NVIDIA Jetson Orin NX 16GB (Seeed reComputer J4012)compute.jetson-orin-nx
    • AW-CB375NF M.2 (A/E key) Wi-Fi 5 + BLE cardelectronics.wifi-card
    • Wi-Fi 6E internal antenna pair, IPX MHF4electronics.wifi-antenna
    Tools
    Host PC for flashing, HDMI, keyboard, mouse
    Torque
    —
    Time
    —
    After
    08
  11. Electrical
    11

    Power board and motor-chain wiring

    Safety · human-verified required

    Prepare the power board as in the Power Board video: two D36V50F12 bucks on the back headers, switch on the terminal block, XT30 to the Jetson via the barrel jack. Chain the motors to the board roots as the manual's diagram shows, using longer JST EH leads for the long runs. Keep the manual's slot allocation so current is balanced across the bucks. Connect the USB hub (cameras, speaker) and the board to the Jetson.

    CHECKBefore any motor is connected, the Jetson XT30 output reads 12 V with correct polarity. With the chains connected, every motor ID appears in a scan from the Jetson.

    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
    • TTL power/communication board V8 (8-channel, CH348L USB-to-TTL, 3x XT30 out, 2 buck headers), JLCPCB PCBAelectronics.pcb-8ch
    • Pololu D36V50F12 12 V 4.5 A step-down regulatorpower.buck-12v
    • JST EH pre-crimped cable (long motor-chain runs)cable.jst-eh-precrimped
    • JST EH 3-pin housingcable.jst-eh-housing
    • XT30 male + female plugs (5 pairs)cable.xt30-pairs
    • XT30 to XT60 adapter leads (4-pack)cable.xt30-xt60
    • Barrel jack connector 5.5x2.5 mm (DC5525), Jetson powercable.barrel-jack
    • USB-A to micro-USB cable, 0.5 ftcable.usb-micro-0.5ft
    • USB hub port splitter (cameras + speaker)electronics.usb-hub
    • Rocker switch (5-pack)power.rocker-switch
    Tools
    Soldering station, Wire stripper, Heat-shrink
    Torque
    —
    Time
    —
    After
    09, 01
  12. 12

    Battery, tester and first power-on

    Safety · human-verified required

    Bring the robot up first on the bench supply over the 14 AWG tether; tape the supply's voltage and current buttons, per the tips page. Then fit the LiPo with the voltage tester attached to prevent over-discharge. The battery box goes into the torso in one pose; if the front cover will not close, fix the box pose and wire routing. An optional DIY 21700 pack is documented separately.

    CHECKOn battery, the tester shows every cell above its alarm threshold, the Jetson boots, and all motors respond. The front cover knobs close without force.

    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
    • 2000 mAh LiPo batterypower.battery-lipo
    • LiPo battery voltage tester / low-voltage alarmpower.lipo-tester
    • LiPo balance chargerpower.lipo-charger
    • 14 AWG 2-conductor power cable (bench-supply tether)cable.wire-14awg
    Tools
    30 V 10 A bench supply (sheet Tools section)
    Torque
    —
    Time
    —
    After
    11
  13. Bring-up
    13

    Zero-point calibration with printed jigs

    Safety · human-verified required

    Insert the calibration devices until they click and lock the joints; route cables clear of them. The knee lower limit is its own zero reference. Run `python toddlerbot/tools/calibrate_zero.py --robot toddlerbot_2xc` (optionally with `--parts ...`). Check config_motors.json, then run `python toddlerbot/descriptions/add_configs.py --robot toddlerbot_2xc`.

    CHECKWith the jigs in, no calibrated joint can be moved by hand, and after add_configs the zero offsets in config_motors.json have been propagated to the robot config.

    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
    • Zero-point calibration devices, set 1 (tooling) (MakerWorld 2XC profile, plate 8)printed.calibrator-1
    • Zero-point calibration devices, set 2 (tooling) (MakerWorld 2XC profile, plate 12)printed.calibrator-2
    Tools
    —
    Torque
    —
    Time
    —
    After
    12, 10
  14. 14

    Standing test

    Safety · human-verified required

    Run `python toddlerbot/policies/run_policy.py --policy stand --robot toddlerbot_2xc --sim real`. Hold the robot whenever you stop a script or cut power: the motors disable and it will fall. Also hold it in the air with stand running and feel for backlash, which usually means loose screws.

    CHECKToddy stands upright and steady on flat ground under the stand policy, with no joint showing more backlash than the XC330 joints.

    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
    —
    Tools
    —
    Torque
    —
    Time
    —
    After
    13
  15. 15

    IMU-feedback zero fine-tuning

    Safety · human-verified required

    If the robot leans after jig calibration (joint backlash), run `python toddlerbot/policies/run_policy.py --policy calibrate --robot toddlerbot_2xc --sim real`. It runs PID on torso pitch from the IMU. Press Ctrl+C once it is upright, holding the robot; the zero point is saved.

    CHECKRerunning the stand policy after fine-tuning, the torso stays visibly upright with no forward or backward lean.

    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
    • Adafruit BNO085 9-DOF IMU breakout (STEMMA QT)sensor.imu-bno085
    Tools
    —
    Torque
    —
    Time
    —
    After
    14
  16. Software
    16

    Keyframe replay in sim, then published RL checkpoints

    Safety · human-verified required

    Check the install in MuJoCo with `python toddlerbot/policies/run_policy.py --policy replay --path motion/push_up_2xc.lz4 --vis view`. Download a 2XC checkpoint (e.g. toddlerbot_2xc_walk_rsl_20251226_114612) from the Google Drive folder linked in the README, try it in sim, then on the real robot with a spotter. To train your own: `python toddlerbot/locomotion/train_mjx.py --gin-file walk --env walk`.

    CHECKThe push-up replay plays in the MuJoCo viewer without errors, and the walk checkpoint walks in simulation before any real-robot run.

    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
    —
    Tools
    —
    Torque
    —
    Time
    —
    After
    15

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

05

Bring-up

Flash · calibrate · first policy
  1. A

    Flash firmware

    TargetsDynamixel X-series servos (Protocol 2.0, TTL, 2 Mbps), TTL power board V8 (CH348L 8-port USB-to-TTL, no MCU firmware), Jetson Orin NX host (JetPack 6.1+, RT kernel)

    Repogithub.com/hshi74/toddlerbot

    No custom motor firmware. Motor IDs and baud rate are set by hand in ROBOTIS Dynamixel Wizard 2.0 (manual + 'ID the Motors' video); the repo has no ID script. Host control is a C++ pybind11 extension (toddlerbot/actuation/src/dynamixel_mch.cpp + vendored dynamixel_sdk) that scans the serial ports for motor IDs; toddlerbot/sim/real_world.py opens them at 2,000,000 baud. examples/test_dynamixel.py tests the bus. Per-motor system ID: toddlerbot/tools/run_sysID.py with the SysID jig (MakerWorld plate 7); cached fits are in toddlerbot/descriptions/sysID_*/. Per-robot configs: toddlerbot/descriptions/toddlerbot_2xc/ (MJCF, URDF, robot.yml).

  2. B

    Calibrate

    Calibrationpython toddlerbot/tools/calibrate_zero.py --robot toddlerbot_2xc [--parts ...]; python toddlerbot/descriptions/add_configs.py --robot toddlerbot_2xc; fine-tune: python toddlerbot/policies/run_policy.py --policy calibrate --robot toddlerbot_2xc --sim real

    Log the output. It goes in your build report.

  3. C

    First policy

    • walk (omnidirectional, 2XC)MuJoCo MJX + RSL-RL PPO, ONNX Runtime on Jetson source
    • get up from the groundMuJoCo MJX + RSL-RL PPO source
    • crawl (full / only / rotate)MuJoCo MJX + RSL-RL PPO source
    • crawl up / down stairsMuJoCo MJX + RSL-RL PPO source
    • climb up / down box, climb wallMuJoCo MJX + RSL-RL PPO source
    • multi-skill whole-body locomotion (Locomotion Beyond Feet)RL skill policies + depth skill classifier (FoundationStereo) source
    • push-up (keyframe replay)open-loop keyframe replay (run_policy.py --policy replay) source
    • cartwheel (DeepMimic-style)MuJoCo MJX + RSL-RL PPO source
    • bimanual manipulation (diffusion policy)Diffusion Policy (PyTorch) source
    Run it in sim on humanoidrobots.training →

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 ToddlerBot 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/toddlerbot

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 L2 · evidence, not confidence
  1. L0
    Indexed

    Known to exist. Atlas page only.

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

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

    • Build package compiled(met)
    • 28 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.

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

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

    • 1/47 BOM lines have offers in 2+ regions(not met)
    next
  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—
S1Official repo (README license section: code MIT, design CC BY-NC-SA 4.0)github.com2026-09-25
S2arXiv paperarxiv.org2026-09-24
S3Project sitetoddlerbot.github.io2026-09-24
S4hshi74/toddlerbot @ e337f3b (README, CHANGELOG, docs/, code)github.com2026-09-25
S5BOM Google Sheet, Release tab (CSV export read)docs.google.com2026-09-25
S6BOM Google Sheet, Screws tabdocs.google.com2026-09-25
S7Docs: Bill of Materialshshi74.github.io2026-09-25
S8Docs: PCB (8ch) sourcinghshi74.github.io2026-09-25
S9TTLPowerBoardV8.zip (Gerbers, BOM, CPL)github.com2026-09-25
S10Docs: 3D printinghshi74.github.io2026-09-25
S11Docs: Assembly (2.0 videos + 1.0 manual)hshi74.github.io2026-09-25
S12Assembly manual PDF (1.0, 11 pages)github.com2026-09-25
S13Docs: Getting Started (Hardware)hshi74.github.io2026-09-25
S14Docs: Zero-point calibrationhshi74.github.io2026-09-25
S15Docs: Software setuphshi74.github.io2026-09-25
S16Docs: Jetson Orin setuphshi74.github.io2026-09-25
S17Docs: Tips and trickshshi74.github.io2026-09-25
S18Docs: DIY batteryhshi74.github.io2026-09-25
S19MakerWorld: Toddlerbot Release V2.0 - 2XC (CC BY-NC-SA; 19 plates)makerworld.com2026-09-25
S20MakerWorld: Toddlerbot Release V2.0 - 2XM (linked from 2XC page; not read)makerworld.com2026-09-25
S21Onshape CAD (robot)cad.onshape.com2026-09-25
S22Onshape CAD (calibration devices, per calibration docs)cad.onshape.com2026-09-25
S23Google Drive: 2XC RL policy checkpoints (10 zips)drive.google.com2026-09-25
S24YouTube assembly playlistyoutube.com2026-09-25
S25WowRobo assembled ToddlerBot 2.0 listingshop.wowrobo.com2026-09-25
S26Project sitetoddlerbot.github.io2026-09-25
S27Paper: ToddlerBot (arXiv 2502.00893)arxiv.org2026-09-25
S28Paper: Locomotion Beyond Feet (arXiv 2601.03607)arxiv.org2026-09-25