Design
One robot, two parents. The joint layout and actuator strategy come from Duke Humanoid V2; the manufacturing strategy comes from Berkeley Humanoid Lite. This page records every decision so that the next person can disagree with it precisely.
Goals
- Cost. Under $6,000 in parts for a robot that can walk and carry a gripper, without giving up integrated quasi-direct-drive actuators. Actuators are the floor: 23 RobStride units are about 80 % of the bill, so everything around them has to be nearly free.
- No machining. Every structural part prints on a desktop FDM printer with a 250 mm bed. The only metal is off-the-shelf: 2020 extrusion cut to length, thin-section bearings, screws and inserts.
- Few distinct parts. Four actuator models, three bearing sizes, one connector family. Every joint of a given actuator model uses the same printed adapter, cup and support bearing, so there are three joint kits repeated 23 times rather than 23 joints.
- Sourceable anywhere. Everything but the actuators comes from Amazon, AliExpress or any filament vendor, with the manufacturer part named so substitutes are obvious.
- Buildable by one person. Bench subassemblies that one person can lift, and a hoist only for the final steps.
- Honest numbers. Every figure on this site is either computed from the model in
tools/build_data.py, copied from a named source, or marked as an estimate.
What is kept from each parent
From Duke Humanoid V2
- Leg topology. Hip pitch → roll → yaw, knee, ankle pitch → roll. The hip-yaw actuator sits directly on top of the knee actuator, so the "thigh" is a short block and the long link is the shank. This keeps the hip narrow and the leg mass high.
- RobStride actuators with the same model-to-joint logic: RS03 wherever gravity torque is large, RS06 for roll axes, RS02 for arms, RS05 for the wrist.
- Bearing-supported joints. Duke's retainer–bearing–coupler stack on every output: a thin-section bearing between the printed mount ring and the coupler hub, so the printed coupler carries torque and the bearing carries the bending moment.
- One-shell harness. XT30(2+2) carries 48 V and CAN in one connector; every limb is a daisy chain with a terminator at the end.
- The parallel gripper (rack and pinion, one bus servo), as an optional kit.
- Joint limits, the ID map pattern and the bring-up sequence.
From Berkeley Humanoid Lite
- All structure printed. Plates, cups and adapters in carbon-filled PETG; covers in PLA; soles and pads in TPU.
- 2020 aluminium extrusion torso with printed end plates: stiff, cheap, and cut with a hacksaw.
- A $160 mini PC is enough to run a reinforcement-learning policy at 50 Hz and the motor loop at 500 Hz.
- Blind by default. Walking uses the IMU and joint encoders. Cameras are an add-on kit, not a prerequisite.
- Filament and fasteners listed in the BOM as real line items.
- Two-configuration thinking: a core robot everyone builds the same way, plus kits.
Every change from Duke V2, with its reason
The reference is the priced lines of Duke V2's published parts lists (actuators $5,605, electronics $2,815, CNC $4,199, prints $169, fasteners $179, cables $30: $12,997, 2026-09; consumables unpriced). The rows below bridge that to this design's $5,649.
| # | Duke V2 | FOH v0.1 | Why | Δ cost |
|---|---|---|---|---|
| 1 | 35 CNC aluminium 6061 parts ($4,199), six SLS nylon parts and FDM covers ($169), fasteners and bearings ($179) | 34 printed parts ($224 of filament), four 2020 extrusions, bearings, inserts and screws ($154) | The single biggest barrier to a build is a machining order. Printed PETG-CF plates 10 mm thick, backed by the support bearing, carry the loads at this scale; the hip and knee brackets can be reprinted in PA-CF if they creep. | −$4,170 |
| 2 | 7-DOF arm: RS03 + RS06 + RS02 ×3 + RS00 + RS05, plus two SLS wrist housings | 5-DOF arm: RS06 ×2 + RS02 ×2 + RS05 | Wrist pitch and yaw were Duke V2's most complex subassembly (SLS nylon housings, three actuator models). A 5-DOF arm still places a gripper anywhere in front of the robot; the two wrist axes return as an upgrade kit once the base robot walks. | −$540 |
| 3 | Shoulder pitch RS03 (60 N·m, 0.91 kg) | Shoulder pitch RS06 (36 N·m, 0.62 kg) | The arm root only has to hold a 2.4 kg arm plus a 0.5 kg payload: about 9 N·m static (see margins below). | −$30 |
| 4 | Knee RS04 (120 N·m, 1.44 kg) | Knee RS03 (60 N·m, 0.91 kg) | The robot is 35 kg → 26 kg. Peak knee torque per kilogram (2.3 N·m/kg) is in the range of Duke V2 (3.4) and Unitree G1 (2.6). Same bracket family as the hips. | −$60 |
| 5 | Two RealSense D436 ($708) on two 2-axis gimbals of RS05 actuators ($440) | Fixed printed head; one D435i optional ($300, not in the core total) | Duke V2's twin gimbals serve its perception-aware-workspace research. A walking platform needs an IMU. The head keeps a camera pocket. | −$1,148 |
| 6 | MINISFORUM X1-470 ($1,295) | Intel N100 mini PC ($160) | Duke V2 runs its planner on a separate CUDA machine anyway. On-robot work is a small MLP at 50 Hz plus CAN I/O. | −$1,135 |
| 7 | 6 CAN adapters (5 actuators each), 3 USB hubs | 4 adapters (one per limb, waist on the left-arm bus), 1 hub | Six actuators per 1 Mbit/s bus at 500 Hz is 35 % bus load. Fewer adapters, fewer cables through the torso. | −$68 |
| 8 | 2 × 6S 10 Ah ($367) | 2 × 6S 8 Ah ($180) | Same 44.4 V bus; the lighter robot draws less. Expect 30–45 minutes of walking; unmeasured. | −$187 |
| 9 | No E-stop, breaker or contactor in the BOM | 100 A breaker, 100 A contactor, E-stop loop | Duke V2's own release notes list the missing E-stop as a blocker. A quasi-direct-drive robot has no self-locking gears: cutting power drops it, so the stop is paired with a hang point. | +$57 |
| 10 | Grippers in the core list: two Feetech HL-3915 ($50 each), two driver boards, two converters | Optional kit: two STS3215 ($16 each) on one driver board | Same bus protocol, same Waveshare driver, ten times the stock in the market thanks to LeRobot arms. A walking robot does not need hands on day one. | −$115 |
| 11 | Waist RS03 | Waist RS03 (kept) | One actuator turns the whole upper body for manipulation and for arm-swing decoupling in walking. Delete it for a further −$225 and a fixed torso. | 0 |
| 12 | Harness as lab consumables; ten TVS diodes, surge protector, two voltage checkers, three converters | Harness itemised ($124); six TVS, one converter, fused distribution block, two voltage alarms | Itemising the harness makes the cost honest; the rest is the smaller robot's smaller electrical system. | +$48 |
| $12,997 | $5,649 | Core robot, 2026-09 prices | −57 % |
Kinematics
Frame: X forward, Y left, Z up, ground at z = 0. The pelvis is the base link. Right-side joints are mirrored with the X and Z axes flipped so that a positive angle is the same motion (abduction, outward yaw) on both sides. The arm is straight: shoulder yaw, elbow and wrist share one line 232 mm from the centre, carried by a long shoulder-roll bracket as on Duke V2, so that yawing the shoulder spins the forearm about its own axis and the hand clears the hip actuators at every wrist angle.
| Joint | Actuator | Axis | Limits | Peak | CAN |
|---|
Limits are proposed software limits. Mechanical end stops are not designed yet; the bring-up procedure sets the software limits before any motion.
Link lengths
Actuator selection and torque margins
Static gravity loads at the worst plausible pose, against RobStride peak torque. Dynamic loads in walking are typically two to three times static at the knee and ankle, which is the reason the leg uses the 60 N·m RS03 throughout even where the static number is small.
| Joint | Actuator | Peak N·m | Worst static case (26 kg robot) | Static N·m | Margin |
|---|---|---|---|---|---|
| Knee | RS03 | 60 | Single-leg support, knee bent 45°, mass above the knee (22 kg) at a 0.15 m horizontal offset | 32 | 1.9× |
| Hip pitch | RS03 | 60 | Single-leg support, upper body (16 kg) leaning 0.2 m forward | 31 | 1.9× |
| Hip roll | RS03 | 60 | Single-leg support, whole body (26 kg) 0.135 m off the stance foot | 34 | 1.8× |
| Hip yaw | RS03 | 60 | Turning on one foot; friction-limited | <10 | >6× |
| Ankle pitch | RS03 | 60 | Single-leg support, centre of mass at the toe (0.12 m) | 31 | 1.9× |
| Ankle roll | RS06 | 36 | Single-leg support, centre of mass at the foot edge (0.045 m) | 11 | 3.2× |
| Waist | RS03 | 60 | Accelerating the upper body; no gravity load | <10 | >6× |
| Shoulder pitch / roll | RS06 | 36 | Arm horizontal (2.4 kg at 0.25 m) plus 0.5 kg payload at 0.55 m | 8.6 | 4.2× |
| Shoulder yaw | RS02 | 17 | Arm horizontal, forearm turned (1.3 kg at 0.2 m) | 2.6 | 6.5× |
| Elbow | RS02 | 17 | Forearm horizontal (0.9 kg at 0.12 m) plus 0.5 kg payload at 0.3 m | 2.6 | 6.5× |
| Wrist roll | RS05 | 5.5 | Twisting a held 0.5 kg object 0.05 m off axis | 0.3 | >10× |
| Model | Qty | Joints | Peak N·m | Kt | I limit | Ø × L | Mass | Support bearing | Price |
|---|
Torque, Kt, current limit, envelope and mass are the values in the Duke Humanoid V2 hardware release, which come from the RobStride manuals. Verify against the manual for the revision you buy.
Mass budget
| Group | kg | Basis |
|---|
Printed-part masses are the solid volume of the model's primitives × material density × a fill factor (0.45 for PETG-CF, 0.35 for PLA covers, 0.70 for TPU). Real parts with pockets and cable channels will come in lighter; the estimate is deliberately on the heavy side.
Side by side
| FOH v0.1 | Duke Humanoid V2 | Berkeley Humanoid Lite | |
|---|---|---|---|
| Degrees of freedom | 23 + 2 gripper servos | 31 + 2 gripper servos | 22 |
| Height | 1.11 m | 1.26 m with camera masts | about 0.8 m |
| Mass | 26 kg (estimate) | 35 kg (CAD) | 16 kg |
| Actuators | RobStride RS03 ×11, RS06 ×6, RS02 ×4, RS05 ×2 | RobStride RS00–RS06, 31 units | Printed cycloidal gearboxes on MAD 5010 / M6C12 motors |
| Structure | Printed PETG-CF, PLA, TPU; 2020 extrusion | CNC aluminium 6061; printed covers; SLS nylon | Printed PLA; 2020 extrusion |
| Machined parts | 0 | 35 | 0 |
| Computer | Intel N100 mini PC | MINISFORUM X1-470 | Mini PC |
| Perception | IMU; camera optional | 2 × RealSense D436 on gimbals | IMU |
| CAN buses | 4 | 6 | 4 |
| Parts cost | $5.6k core, $6.0k with kits | $13.0k (priced lines, 2026-09) | $4.35k (US pricing) |
| Hardware licence | CC BY 4.0 (proposed) | Apache-2.0 | CC BY-SA 4.0 |
Self-collision audit
tools/check_collisions.py tests every pair of parts: exactly at the zero pose, by surface sampling at the preset poses, and joint by joint through each range. The zero pose, the presets and every single-joint sweep are clear at the limits below; the limits marked geometry are where the printed parts would touch, and the sweep put them there.
| Joint | Limit | Set by | What touches beyond it |
|---|---|---|---|
| Hip roll (adduction) | −12° | geometry | Hip-yaw actuator into the pelvis straps and the hip-pitch flange |
| Hip roll (abduction) | 105° | Duke V2 | Nothing structural; see the coupled limit below |
| Knee | 105° | geometry | Shank plates fold into the thigh block (2.7 mm at 110°); chamfering the block's rear edge in v0.2 buys 10–15° |
| Ankle pitch | ±50° | Duke V2 | Clear; the foot upright is cut to 92 mm for it |
| Ankle roll | ±30° | Duke V2 | Clear |
| Shoulder roll | 0° to 150° | geometry | Adduction below 0° swings the hanging hand into the hip stack; possible only with the elbow flexed |
| Elbow | 120° | geometry | Inner forearm plate into the upper-arm link (upper arm narrowed to 50 mm for it) |
| Shoulder yaw, wrist roll, waist, hip pitch, hip yaw, shoulder pitch | full | Duke V2 | Clear through the whole range |
One coupled limit. With the arm hanging straight, the leg can abduct 25° before the hip-yaw actuator meets the gripper. Swing the arm 20° forward, or flex the elbow 60°, and the full 105° is clear. That is a constraint for the policy's self-collision term, not a mechanical stop, and it is the same on Duke V2.
Open questions and risks
- Printed couplers at 60 N·m. The RS03 output boss drives the printed coupler through six M4 screws and three Ø4 dowels on a 30.36 mm circle: 60 N·m is 4 kN on the dowels. That is at the edge of PETG-CF bearing strength; the v0.3 joint-kit test measures it. Fallbacks: PA-CF couplers, longer dowels, or a 3 mm aluminium coupler as the only metal part.
- Heat. RobStride warns at 75 °C. PETG softens around 80 °C. The cups leave the finned housing exposed; if a joint runs hot, its cup goes to PA-CF.
- Width. 562 mm across the shoulder-roll cups, wider than Duke V2, because the straight arm needs the roll axis 232 mm out and the hip-pitch actuators sit fully inside the pelvis. A canted hip-pitch axis as on Duke V2 would let the arms come in 20–30 mm at the cost of a harder-to-print bracket.
- No mechanical end stops. Limits are software only, as on Duke V2.
- Ankle stack height. The ankle-roll actuator sits behind the ankle-pitch actuator, which puts the heel actuator 76 mm behind the shank line. Reaction forces at heel strike go through the ankle bracket; it is the thickest printed part for that reason.
- Nothing is measured. Masses, run time, print times and torque margins are calculated. The roadmap replaces each with a measurement.