Skip to content
humanoidrobot.build

Build package

Build openDog V3

James Bruton (XRobots) · Quadruped · orphaned · 2021

Large 3D-printed hobby quadruped using brushless motors with ODrive controllers and printed cycloidal gearboxes; CAD, code and BOM are published.

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

Build is partial: No written assembly guide and no STL set: the build is shown only in the YouTube playlist and printable parts must be exported from the STEP files. Repo inactive since Mar 2023; some BOM links are dead.

Fig 1/3Video
Robot Dog V3 - 3D Printed & Open Source #1© James Bruton · Official embed · source
Drawing
/xrobots/opendog
Maker
James Bruton (XRobots)
Country
GB
Package rev
v0.1.0
Level
L1 Compiled
Availability
DIY
Openness
70/100
HW licence
MIT
Last checked
2026-09-25
Actuators
Brushless motors + ODrive, 3D-printed cycloidal drives, AS5047 encoders

One-person YouTube project; repo last pushed Mar 2023. City omitted (not public on GitHub). BOM.ods lists parts and links but no prices.

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
—+ 44 unpriced lines: lower bound
No BOM line has a price yet
02

Source

One cart across 11 vendors · prices in USD as listed

44 lines · 1,794 parts · 17 without an offer in US · 25/44 lines sourced in 2+ regions (L3 gate)

#PartCategoryQtyUnitLineOffer
ODrive Robotics1 line · unpriced
1
ODrive v3.6 BLDC driver (2 axes each)
electronics.odrive-v36 · MPN ODrive v3.6
electronics6unpriced—ODrive Robotics
DigiKey UK1 line · unpriced
2
AMS AS5047P motor encoder board (one per axis, absolute SPI mode)
sensor.as5047p · MPN AS5047P-TS_EK_AB
sensor12unpriced—DigiKey UKships globallyUK retailer linked in BOM.ods
PJRC2 lines · unpriced
3
Teensy 4.1 (dog controller)
compute.teensy-41 · MPN Teensy 4.1
compute1unpriced—PJRCVerified listing, not cited upstream
4
Teensy LC (remote controller)
compute.teensy-lc · MPN Teensy LC
compute1unpriced—PJRCVerified listing, not cited upstream; PJRC marks Teensy LC discontinued / not recommended for new designs
eBay UK8 lines · unpriced
5
5 V / adjustable step-down regulator (set to 5 V for the Teensy and dog electronics)
power.reg-5v
power1unpriced—eBay UKships globallyUK retailer linked in BOM.ods
6
25-way D-sub connector, male
cable.dsub25-male
cable1unpriced—eBay UKships globallyUK retailer linked in BOM.ods
7
25-way D-sub connector, female
cable.dsub25-female
cable1unpriced—eBay UKships globallyUK retailer linked in BOM.ods
8
Latching push switch (electronics power)
power.electronics-switch
power1unpriced—eBay UKships globallyUK retailer linked in BOM.ods
9
3-axis joystick (remote)
electronics.joystick-3axis
electronics2unpriced—eBay UKships globallyUK retailer linked in BOM.ods
10
On/off toggle switch (remote)
electronics.toggle-switch
electronics5unpriced—eBay UKships globallyUK retailer linked in BOM.ods
11
Carbon fibre tube, 28 mm OD, 1 mm+ wall, 1 m length (cut to CAD lengths; offcuts make the foot tubes)
structure.cf-tube-28
structure4unpriced—eBay UKships globallyUK retailer linked in BOM.ods
12
4 mm steel bar cut to 31 mm (one per bearing mount around the outside of the cycloidal drives)
structure.steel-pin-4x31
structure132unpriced—eBay UKships globallyUK retailer linked in BOM.ods
Cool Components1 line · unpriced
13
MPU6050 IMU (used only by the experimental_stability sketch)
sensor.mpu6050 · MPN MPU6050
sensor1unpriced—Cool Componentsships globallyLink in BOM.ods returned 404 on 2026-09-25
Amazon UK6 lines · unpriced
14
NRF24L01 2.4 GHz radio (one in the dog, one in the remote)
electronics.nrf24l01 · MPN NRF24L01
electronics2unpriced—Amazon UKships globallyUK retailer linked in BOM.ods
15
Latching push switch used as E-stop
power.estop
power2unpriced—Amazon UKships globallyUK retailer linked in BOM.ods
16
Panel volt meter
sensor.panel-voltmeter
sensor2unpriced—Amazon UKships globallyUK retailer linked in BOM.ods
17
16x2 LCD with I2C backpack (dog status, address 0x27)
electronics.lcd-i2c
electronics1unpriced—Amazon UKships globallyUK retailer linked in BOM.ods
18
Momentary push switch (remote)
electronics.push-switch
electronics4unpriced—Amazon UKships globallyUK retailer linked in BOM.ods
19
Small 2S (or 3S) battery for the electronics, via the 5 V regulator
power.lipo-2s
power1unpriced—Amazon UKships globallyUK retailer linked in BOM.ods
CEF1 line · unpriced
20
6-core foil-shielded signal cable for encoders (metres; 'make sure you have enough')
cable.encoder-6core-shielded
cable6unpriced—CEFships globallyUK retailer linked in BOM.ods
HobbyKing1 line · unpriced
21
6S high-drain LiPo main battery (maker's is 60C; e.g. ZIPPY Compact 4000 mAh 6S 60C)
power.lipo-6s
power1unpriced—HobbyKingExample item in BOM.ods
Belting Online1 line · unpriced
22
HTD 5M pitch timing belt, 630 mm length (knee drive)
structure.belt-htd5m-630
structure4unpriced—Belting Onlineships globallyUK retailer linked in BOM.ods
Simply Bearings3 lines · unpriced
23
Thin-section bearing 37 x 30 x 4 mm (one per leg and two per end bracket)
structure.bearing-61706 · MPN 61706ZZ
structure8unpriced—Simply Bearingsships globallyUK retailer linked in BOM.ods
24
Ball bearing 22 x 8 x 7 mm (knee joints, 2 per leg)
structure.bearing-608 · MPN 608ZZ
structure8unpriced—Simply Bearingsships globallyUK retailer linked in BOM.ods
25
Ball bearing 19 x 6 x 6 mm (knee belt idlers, 4 per leg)
structure.bearing-626 · MPN 626ZZ
structure16unpriced—Simply Bearingsships globallyUK retailer linked in BOM.ods
Nyfast2 lines · unpriced
26
Nylon washer, 4 mm ID (top and bottom of each drive pin, 32 per drive)
other.nylon-washer-4mm
other384unpriced—Nyfastships globallyProduct family page from BOM.ods (variant fragment dropped)
27
Nylon spacer, 4 mm ID, 5 mm long (16 per drive)
other.nylon-spacer-4x5
other192unpriced—Nyfastships globallyProduct family page from BOM.ods (variant fragment dropped)
No offer in this region17 lines · unpriced
28
9225 90 KV brushless motor (HobbyKing/Turnigy Multistar 9225 90 KV or EaglePower 8308 stator / 9225 can 90 KV)
actuator.bldc-9225-90kv
actuator12unpriced—Offers in CN only
29
LiPo balance charger suitable for the 6S pack (BOM.ods: 'requires suitable balance charger'; no model given)
power.lipo-charger
power1unpriced—No offer found yet
30
Ball bearing 12 mm OD x 4 mm ID x 4 mm (cycloidal drive internals, 32 per drive)
structure.bearing-12x4x4
structure384unpriced—Offers in CN only
31
Ball bearing 32 mm OD x 20 mm ID x 7 mm (cam and cap, 3 per drive)
structure.bearing-32x20x7
structure36unpriced—Offers in CN only
32
Ball bearing 85 mm OD x 65 mm ID x 10 mm (drive top/bottom, 2 per drive)
structure.bearing-85x65x10
structure24unpriced—Offers in CN only
33
M4 countersunk screw, 12 mm thread (motor mounts, 4 per motor)
fastener.m4x12-csk
fastener48unpriced—No offer found yet
34
M4 socket cap screw, 40 mm thread (cycloidal cam, 1 per drive)
fastener.m4x40-socket
fastener12unpriced—No offer found yet
35
M4 nylon-insert locknut (cycloidal cam, 1 per drive)
fastener.m4-locknut-cam
fastener12unpriced—No offer found yet
36
M4 nylon-insert locknut (cycloidal output, 5 per drive)
fastener.m4-locknut-output
fastener60unpriced—No offer found yet
37
M4 washer (cycloidal output, 5 per drive)
fastener.m4-washer
fastener60unpriced—No offer found yet
38
M3 screw, 15 mm thread (cycloidal cam, 4 per drive)
fastener.m3x15
fastener48unpriced—No offer found yet
39
M4 hex head bolt, 80 mm (cycloidal output, 5 per drive, cut to length)
fastener.m4x80-hex
fastener60unpriced—No offer found yet
40
2.9 mm x 18 mm countersunk Pozidriv self-tapping screw (drive cases, 22 per drive, front and back)
fastener.screw-2-9x18-case
fastener132unpriced—No offer found yet
41
2.9 mm x 18 mm countersunk Pozidriv screw (side-to-side axis mounts, 12 per drive for 4 drives)
fastener.screw-2-9x18-axis
fastener48unpriced—No offer found yet
42
2.9 mm x 18 mm countersunk Pozidriv screw (legs; BOM says '18 per leg' but lists 56)
fastener.screw-2-9x18-leg
fastener56unpriced—No offer found yet
43
Platinum-cure silicone rubber, Shore 25A, with pigment (cast feet)
other.silicone-25a
other1unpriced—No offer found yet
44
Adhesive to glue the carbon foot tube into the lower leg and foot insert (type not specified)
other.epoxy
other1unpriced—No offer found yet
Cart total · US1,794$0.0044 lines unpriced, not in total
03

Fabricate

Planned for a 256 mm bed
Fabricated parts
92
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
Cycloidal disk 1 ('Planetary disk1'), toleranced
printed.planetary-disk1
FDMPLA12——PLA, 4 perimeters, 30-40% infill (cycloidal drive internals, per README)
Cycloidal disk 2 ('Planetary disk2'), toleranced
printed.planetary-disk2
FDMPLA12——PLA, 4 perimeters, 30-40% infill (cycloidal drive internals, per README)
Cam
printed.cam
FDMPLA12——PLA, 4 perimeters, 30-40% infill (cycloidal drive internals, per README)
Cam cap
printed.cam-cap
FDMPLA12——PLA, 4 perimeters, 30-40% infill (cycloidal drive internals, per README)
Top cap
printed.top-cap
FDMPLA12——PLA, 4 perimeters, 30-40% infill (cycloidal drive internals, per README)
Bottom cap
printed.bottom-cap
FDMPLA12——PLA, 4 perimeters, 30-40% infill (cycloidal drive internals, per README)
Upper mount
printed.upper-mount
FDMPLA12——PLA, 4 perimeters, 30-40% infill (cycloidal drive internals, per README)
All other printed parts (drive cases, legs, knee pulleys and idlers, body ends, electronics lid, stand): extract the bodies from 'openDog V3.stp' (inside 'openDog V3.zip'); no per-part list or STL set is published
printed.structure
FDMPLA1——PLA, 0.3 mm layers, 3 perimeters, ~15% infill (larger parts, per README)
Foot mould set (mouldA, mouldB, 2 sides, brace) for casting silicone feet
printed.foot-mould
FDMPLA1——PLA, 0.3 mm layers, 3 perimeters, ~15% infill (larger parts, per README)
Foot insert (cast into each silicone foot)
printed.foot-insert
FDMPLA4——PLA, 0.3 mm layers, 3 perimeters, ~15% infill (larger parts, per README)
Remote base and lid (Remote.stp)
printed.remote-case
FDMPLA1——PLA, 0.3 mm layers, 3 perimeters, ~15% infill (larger parts, per README)
Knee jig (openDogV3_jig_knee.stp; purpose not documented in the repo)
printed.knee-jig
FDMPLA1——PLA, 0.3 mm layers, 3 perimeters, ~15% infill (larger parts, per README)
PLA · 92 parts · g unknown
04

Assemble

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

14 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. Preparation
    01

    Watch the build videos and open the CAD

    There is no written assembly guide. Watch the openDog V3 playlist linked from the README and open 'openDog V3.stp' (unzip 'CAD/openDog V3.zip', ~35 MB) alongside it. Also open 'openDog V3_internals_toleranced.stp' for the printable cycloidal internals, 'openDog V3_foot.stp' for the foot mould and 'Remote.stp'. Export each printable body to STL yourself.

    CHECKYou have STLs for every printed body you need and know from the video how each drive, leg and the body go together.
    Parts in
    —
    Tools
    STEP-capable CAD (Fusion 360, FreeCAD, Onshape import)
    Torque
    —
    Time
    —
    After
    Start
  2. Fabrication
    02

    Cut tubes, pins and output bolts

    Cut the four 1 m carbon tubes to the lengths in the CAD; the offcuts become the foot tubes. Cut 132 pieces of 4 mm steel bar to 31 mm. Cut the 60 M4 x 80 mm hex bolts to the length the drive output needs (from the CAD). Carbon dust is an irritant: cut wet or with extraction and a mask.

    CHECKLeg tubes match CAD length; 132 pins are 31 mm; output bolts are the same length.
    Parts in
    • Carbon fibre tube, 28 mm OD, 1 mm+ wall, 1 m length (cut to CAD lengths; offcuts make the foot tubes)structure.cf-tube-28
    • 4 mm steel bar cut to 31 mm (one per bearing mount around the outside of the cycloidal drives)structure.steel-pin-4x31
    • M4 hex head bolt, 80 mm (cycloidal output, 5 per drive, cut to length)fastener.m4x80-hex
    Tools
    Saw for carbon fibre (with dust extraction and mask), Hacksaw or cut-off tool, Calipers
    Torque
    —
    Time
    —
    After
    Start
  3. 03

    Print the drives, structure, feet mould and remote

    All parts are PLA. Large parts: 0.3 mm layers, 3 perimeters, around 15% infill. Cycloidal drive internals: 4 perimeters and 30-40% infill. Use the toleranced internals file for the drive parts (12 sets).

    CHECK12 complete sets of cycloidal internals plus all structure parts; pin and bearing bores accept the 4 mm pins and bearings without forcing.
    Parts in
    • Cycloidal disk 1 ('Planetary disk1'), tolerancedprinted.planetary-disk1
    • Cycloidal disk 2 ('Planetary disk2'), tolerancedprinted.planetary-disk2
    • Camprinted.cam
    • Cam capprinted.cam-cap
    • Top capprinted.top-cap
    • Bottom capprinted.bottom-cap
    • Upper mountprinted.upper-mount
    • All other printed parts (drive cases, legs, knee pulleys and idlers, body ends, electronics lid, stand): extract the bodies from 'openDog V3.stp' (inside 'openDog V3.zip'); no per-part list or STL set is publishedprinted.structure
    • Foot mould set (mouldA, mouldB, 2 sides, brace) for casting silicone feetprinted.foot-mould
    • Foot insert (cast into each silicone foot)printed.foot-insert
    • Remote base and lid (Remote.stp)printed.remote-case
    • Knee jig (openDogV3_jig_knee.stp; purpose not documented in the repo)printed.knee-jig
    Tools
    FDM printer
    Torque
    —
    Time
    —
    After
    01
  4. Electronics
    04

    Wire the Teensy 4.1, radio, LCD and control power

    From the code: ODrive 1-6 on Teensy Serial1-Serial6 at 115200 baud; NRF24L01 on SPI with CE pin 9 and CSN pin 10; 16x2 I2C LCD at 0x27; MPU6050 on I2C (experimental sketch only). Power the Teensy and radio from the 2S battery through the latching switch and the regulator set to 5 V. Use the 25-way D-sub pair as the connector between body electronics and the rest (per BOM; pinout not published).

    CHECKRegulator output reads 5.0 V before the Teensy is connected; the LCD shows 'openDog V3' when the firmware runs.
    Parts in
    • Teensy 4.1 (dog controller)compute.teensy-41
    • NRF24L01 2.4 GHz radio (one in the dog, one in the remote)electronics.nrf24l01
    • 16x2 LCD with I2C backpack (dog status, address 0x27)electronics.lcd-i2c
    • MPU6050 IMU (used only by the experimental_stability sketch)sensor.mpu6050
    • 5 V / adjustable step-down regulator (set to 5 V for the Teensy and dog electronics)power.reg-5v
    • Small 2S (or 3S) battery for the electronics, via the 5 V regulatorpower.lipo-2s
    • Latching push switch (electronics power)power.electronics-switch
    • 25-way D-sub connector, malecable.dsub25-male
    • 25-way D-sub connector, femalecable.dsub25-female
    • Panel volt metersensor.panel-voltmeter
    Tools
    Soldering iron, Multimeter
    Torque
    —
    Time
    —
    After
    01
  5. Drives
    05

    Assemble twelve cycloidal drives

    Per drive, as the BOM notes describe (sequence from the CAD and videos): 32 small 12x4x4 bearings on the 4 mm pins, each pin with a nylon washer top and bottom and 16 nylon spacers; 11 steel pins around the outside; 3 cam/cap bearings (32x20x7); 2 large 85x65x10 bearings top and bottom; the cam on an M4 x 40 socket screw with a locknut and 4 M3 x 15 screws; 5 cut M4 output bolts with washers and locknuts; motor on 4 M4 x 12 countersunk screws; case closed with 22 x 2.9 x 18 mm screws. The code assumes a 10:1 reduction (one motor turn = 36 degrees of output).

    CHECKEach drive back-drives smoothly by hand through a full output turn with no binding or knocking; 10 motor turns give one output turn.
    Parts in
    • 9225 90 KV brushless motor (HobbyKing/Turnigy Multistar 9225 90 KV or EaglePower 8308 stator / 9225 can 90 KV)actuator.bldc-9225-90kv
    • Ball bearing 12 mm OD x 4 mm ID x 4 mm (cycloidal drive internals, 32 per drive)structure.bearing-12x4x4
    • Nylon washer, 4 mm ID (top and bottom of each drive pin, 32 per drive)other.nylon-washer-4mm
    • Nylon spacer, 4 mm ID, 5 mm long (16 per drive)other.nylon-spacer-4x5
    • 4 mm steel bar cut to 31 mm (one per bearing mount around the outside of the cycloidal drives)structure.steel-pin-4x31
    • Ball bearing 32 mm OD x 20 mm ID x 7 mm (cam and cap, 3 per drive)structure.bearing-32x20x7
    • Ball bearing 85 mm OD x 65 mm ID x 10 mm (drive top/bottom, 2 per drive)structure.bearing-85x65x10
    • M4 countersunk screw, 12 mm thread (motor mounts, 4 per motor)fastener.m4x12-csk
    • M4 socket cap screw, 40 mm thread (cycloidal cam, 1 per drive)fastener.m4x40-socket
    • M4 nylon-insert locknut (cycloidal cam, 1 per drive)fastener.m4-locknut-cam
    • M3 screw, 15 mm thread (cycloidal cam, 4 per drive)fastener.m3x15
    • M4 hex head bolt, 80 mm (cycloidal output, 5 per drive, cut to length)fastener.m4x80-hex
    • M4 washer (cycloidal output, 5 per drive)fastener.m4-washer
    • M4 nylon-insert locknut (cycloidal output, 5 per drive)fastener.m4-locknut-output
    • 2.9 mm x 18 mm countersunk Pozidriv self-tapping screw (drive cases, 22 per drive, front and back)fastener.screw-2-9x18-case
    • Cycloidal disk 1 ('Planetary disk1'), tolerancedprinted.planetary-disk1
    • Cycloidal disk 2 ('Planetary disk2'), tolerancedprinted.planetary-disk2
    • Camprinted.cam
    • Cam capprinted.cam-cap
    • Top capprinted.top-cap
    • Bottom capprinted.bottom-cap
    • Upper mountprinted.upper-mount
    • All other printed parts (drive cases, legs, knee pulleys and idlers, body ends, electronics lid, stand): extract the bodies from 'openDog V3.stp' (inside 'openDog V3.zip'); no per-part list or STL set is publishedprinted.structure
    Tools
    Hex keys, Pozidriv screwdriver
    Torque
    —
    Time
    —
    After
    03, 02
  6. Legs
    06

    Cast the silicone feet

    Assemble the printed mould (mouldA, mouldB, sides, brace) around a foot insert and cast Shore 25A platinum-cure silicone with pigment. Glue the carbon foot tube into the lower leg and the foot insert so it cannot rotate.

    CHECKFour cured feet with the insert fully embedded; the foot tube does not turn in the insert or the lower leg.
    Parts in
    • Foot mould set (mouldA, mouldB, 2 sides, brace) for casting silicone feetprinted.foot-mould
    • Foot insert (cast into each silicone foot)printed.foot-insert
    • Platinum-cure silicone rubber, Shore 25A, with pigment (cast feet)other.silicone-25a
    • Carbon fibre tube, 28 mm OD, 1 mm+ wall, 1 m length (cut to CAD lengths; offcuts make the foot tubes)structure.cf-tube-28
    • Adhesive to glue the carbon foot tube into the lower leg and foot insert (type not specified)other.epoxy
    Tools
    Mixing cups and scale, Mould release
    Torque
    —
    Time
    —
    After
    03, 02
  7. Remote
    07

    Build the remote

    From Remote.ino: buttons and switches on Teensy LC pins 0-8 with internal pull-ups (buttons on 0-3, toggles on 4-8), joystick axes on A1, A2, A4-A7, NRF24L01 on SPI, and an I2C LCD at 0x27 (20x4 in the code). Include the 'reverse' switch and the motor-enable switch the README describes. The remote's battery and LCD are not in the BOM.

    CHECKWith Remote.ino running the LCD shows 'Everything Remote' and each switch/axis changes the transmitted values.
    Parts in
    • Teensy LC (remote controller)compute.teensy-lc
    • NRF24L01 2.4 GHz radio (one in the dog, one in the remote)electronics.nrf24l01
    • 3-axis joystick (remote)electronics.joystick-3axis
    • On/off toggle switch (remote)electronics.toggle-switch
    • Momentary push switch (remote)electronics.push-switch
    • Remote base and lid (Remote.stp)printed.remote-case
    Tools
    Soldering iron
    Torque
    —
    Time
    —
    After
    03
  8. Drives
    08

    Fit AS5047P encoders and run shielded cables

    Mount one AS5047P on each motor and wire it to its ODrive with 6-core foil-shielded cable: SCK, MISO, MOSI, GND and 3.3 V to the ODrive pins of the same name, chip select to a free GPIO (GPIO 1 and 2 are the UART used by the Teensy).

    CHECKEach encoder has continuity on every conductor to its ODrive header and the shield is not shorted to a signal.
    Parts in
    • AMS AS5047P motor encoder board (one per axis, absolute SPI mode)sensor.as5047p
    • 6-core foil-shielded signal cable for encoders (metres; 'make sure you have enough')cable.encoder-6core-shielded
    Tools
    Soldering iron
    Torque
    —
    Time
    —
    After
    05
  9. Legs
    09

    Assemble the legs and knee belt drives

    Per leg (from the CAD and videos): two 608 knee bearings, four 626 belt-idler bearings, one 37x30x4 thin-section bearing (plus two in each end bracket), the 630 mm HTD 5M knee belt, carbon tubes and the leg screws. Mount the hip drives on the side-to-side axis with 12 screws per drive.

    CHECKEach knee moves through its range by turning the knee drive by hand with the belt tensioned and not skipping; hips swing without rubbing.
    Parts in
    • HTD 5M pitch timing belt, 630 mm length (knee drive)structure.belt-htd5m-630
    • Ball bearing 22 x 8 x 7 mm (knee joints, 2 per leg)structure.bearing-608
    • Ball bearing 19 x 6 x 6 mm (knee belt idlers, 4 per leg)structure.bearing-626
    • Thin-section bearing 37 x 30 x 4 mm (one per leg and two per end bracket)structure.bearing-61706
    • Carbon fibre tube, 28 mm OD, 1 mm+ wall, 1 m length (cut to CAD lengths; offcuts make the foot tubes)structure.cf-tube-28
    • 2.9 mm x 18 mm countersunk Pozidriv screw (legs; BOM says '18 per leg' but lists 56)fastener.screw-2-9x18-leg
    • 2.9 mm x 18 mm countersunk Pozidriv screw (side-to-side axis mounts, 12 per drive for 4 drives)fastener.screw-2-9x18-axis
    • All other printed parts (drive cases, legs, knee pulleys and idlers, body ends, electronics lid, stand): extract the bodies from 'openDog V3.stp' (inside 'openDog V3.zip'); no per-part list or STL set is publishedprinted.structure
    Tools
    Pozidriv screwdriver, Hex keys
    Torque
    —
    Time
    —
    After
    05, 06
  10. Bring-up
    10

    Flash the dog and remote firmware

    Open Code/openDogV3/openDogV3.ino (with kinematics.ino, ODriveInit.ino, thresholdSticks.ino in the same folder) and upload to the Teensy 4.1; upload Code/Remote/Remote.ino to the Teensy LC. The two sketches share a data struct that must match exactly.

    CHECKThe dog LCD shows the remote connection state and 'S:' mode number changing when the remote's menu buttons are pressed.
    Parts in
    • Teensy 4.1 (dog controller)compute.teensy-41
    • Teensy LC (remote controller)compute.teensy-lc
    Tools
    Arduino IDE with Teensyduino, Libraries: ODriveArduino, RF24, LiquidCrystal_I2C, Ramp (and I2Cdev/MPU6050 for the experimental sketch)
    Torque
    —
    Time
    —
    After
    04, 07
  11. Electronics
    11

    Wire the 6S main battery, E-stops and ODrives

    Safety · human-verified required

    Connect the six ODrives (hips on ODrive 1 and 4; knees and shoulders on 2, 3, 5, 6 per the offsets in the code) and their motors to the 6S high-drain pack through the latching E-stop switch(es), with a volt meter on each battery circuit. The pack can source very large currents: size wire and connectors for it, insulate every joint, check polarity before first connection, and charge only with a balance charger. Wire gauge, fusing and the exact E-stop placement are not documented upstream.

    CHECKWith the E-stop open no ODrive powers up; with it closed every ODrive LED comes on and the volt meter shows pack voltage.

    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
    • 6S high-drain LiPo main battery (maker's is 60C; e.g. ZIPPY Compact 4000 mAh 6S 60C)power.lipo-6s
    • LiPo balance charger suitable for the 6S pack (BOM.ods: 'requires suitable balance charger'; no model given)power.lipo-charger
    • Latching push switch used as E-stoppower.estop
    • Panel volt metersensor.panel-voltmeter
    • ODrive v3.6 BLDC driver (2 axes each)electronics.odrive-v36
    • 9225 90 KV brushless motor (HobbyKing/Turnigy Multistar 9225 90 KV or EaglePower 8308 stator / 9225 can 90 KV)actuator.bldc-9225-90kv
    Tools
    Soldering iron, Multimeter, Heavy-gauge wire and connectors (not specified upstream)
    Torque
    —
    Time
    —
    After
    08, 09, 04
  12. Bring-up
    12

    Configure and calibrate each ODrive axis

    Safety · human-verified required

    Legs off the ground or on the stand. For each axis in odrivetool, following the ODrive docs the README points to: set motor parameters and run motor calibration; set `axis.encoder.config.abs_spi_cs_gpio_pin = <cs pin>`, `axis.encoder.config.mode = ENCODER_MODE_SPI_ABS_AMS`, `axis.encoder.config.cpr = 2**14`, `odrv.save_configuration()`, `odrv.reboot()`; then `axis.requested_state = AXIS_STATE_ENCODER_OFFSET_CALIBRATION`, `axis.encoder.config.pre_calibrated = True`, `odrv.save_configuration()`. Per the README, `import math` and set `controller.config.vel_limit` and `vel_limit_tolerance` to `math.inf` so the motors do not disarm. Calibration spins the motors: keep hands out of the drives.

    CHECKEvery axis enters closed-loop control after a reboot without re-calibrating, and reported positions do not jump when powered off and on.

    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
    • ODrive v3.6 BLDC driver (2 axes each)electronics.odrive-v36
    • AMS AS5047P motor encoder board (one per axis, absolute SPI mode)sensor.as5047p
    Tools
    odrivetool (ODrive v3.x firmware, 0.5.x docs), USB cable
    Torque
    —
    Time
    —
    After
    11
  13. 13

    Set joint offsets and first motion on the stand

    Safety · human-verified required

    Dog on its stand, motor-enable switch on, E-stop in reach. Menu 1 puts motors in closed loop (ODriveInit sets `motor.config.current_lim` to 20 A per axis); 2 moves legs out to clear the stand stirrups by 1-2 mm; 3 puts shoulders and knees at 45 degrees. Adjust the `offSet10` ... `offSet61` variables (turns; 1 turn = 36 degrees at the output) until mode 3 matches the CAD pose, then re-flash. Menu 10 returns the feet to the stirrups. Large leg motions happen quickly: stand clear.

    CHECKMode 3 holds all twelve joints at the CAD default pose; modes 2 and 10 clear and re-seat the stirrups without contact.

    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
    12, 10
  14. 14

    Raise gains, IK demo and walking

    Safety · human-verified required

    Menu 4 raises position, velocity and integrator gains (knee/shoulder 20, hips 60, velocity 0.1 in the code); 5 is the inverse-kinematics demo for six axes of translation and rotation; 6 is walking. The remote's reverse switch flips four axes to walk backwards. The dog stops if the radio link drops for 500 ms. Start in open space with the E-stop held by a second person.

    CHECKIn mode 5 the body follows the sticks smoothly; in mode 6 the dog steps in place and walks forward/back without a leg faulting.

    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

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

05

Bring-up

Flash · calibrate · first policy
  1. A

    Flash firmware

    TargetsTeensy 4.1 (openDogV3.ino, Arduino/Teensyduino), Teensy LC (Remote.ino), ODrive v3.6 x6 (stock firmware, configured with odrivetool)

    Repogithub.com/XRobots/openDogV3

    Teensy talks to ODrives over ASCII serial (Serial1-6, 115200) with the ODriveArduino library; remote link is NRF24L01 (addresses '00001'/'00002'). Code/openDogV3_experimental_stability adds MPU6050 IMU feedback. No ROS, URDF or simulation is published.

  2. B

    Calibrate

    CalibrationPer ODrive axis: motor calibration, AS5047P absolute SPI setup (`encoder.config.mode = ENCODER_MODE_SPI_ABS_AMS`, `cpr = 2**14`, CS pin), `AXIS_STATE_ENCODER_OFFSET_CALIBRATION`, `pre_calibrated = True`, save; vel_limit and vel_limit_tolerance = math.inf. Then tune the offSetXY constants in openDogV3.ino until menu mode 3 puts every joint at 45 degrees.

    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 openDog V3 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/xrobots/opendog

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.

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

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

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

    • Orphaned: no maintainer left to sign(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