Proto (1)
Built and walking. August 2026.
A 0.75 m, 3.3 kg biped humanoid, designed from nothing in parametric CAD, printed in PETG, wired by hand, and taught to walk with reinforcement learning. It self-stabilizes on a single policy: it walks, sprints, and turns in both directions.

Specification
| Height | 0.750 m |
| Mass | 3.3 kg |
| Actuators | 15 x LX-16A serial bus servos |
| Compute | Jetson Orin Nano Super |
| Vision | Logitech C910, 1080p, pitched 15 deg down |
| Battery | 4S LiPo 2200 mAh, 220 g |
| Power | 2 x 300 W buck, 4S down to a 7.4 V servo bus |
| Cut-off | 30 A DC toggle on XT60 |
| Structure | PETG, 27 parametric parts |
| Walking speed | 0.13 m/s |
Joints
Five degrees of freedom per leg: hip twist, hip swing, knee, ankle pitch, ankle roll. Shoulder roll and shoulder pitch per arm, plus a neck servo. There is no hip abduction, so Proto (1) cannot step sideways. Perfectly straight walking is a hardware limit, not a controller one.

Control
- 50 Hz control loop on the Jetson, driving three serial servo buses.
- The policy does not output joint angles. It outputs residual offsets, capped at 0.20 rad, on top of a scripted model-based gait.
- 51 value observation: gravity vector, gyro, joint positions, velocities, efforts, gait phase, command, and the previous action.
- PPO, trained in simulation, transferred to hardware bit for bit. The observation the robot assembles on the Jetson is byte identical to the one the trainer used.
Why it actually transfers
The LX-16A stalls at 1.67 N·m but only sustains about 0.50 N·m. Training against the stall figure produces a gait that looks perfect in simulation and collapses on contact with the floor. Proto (1) was trained against the sustained figure instead, so the policy never learns to ask for torque the hardware cannot hold.
A week of failed walking came down to one thing: the gait commanded zero ankle roll, so single support loaded a servo past its stall point. The fix was a real weight shift, not a tuning pass.
Sensing
Inertial sensing is an external IMU, running unfiltered. That is the honest state of it: there is no filter on Proto (1). Everything the balance controller does, it does off raw joint feedback and the scripted phase.
Tooling
The whole robot is one parametric CAD program, so a dimension change regenerates every affected part. Interference is checked by exact boolean intersection volume between parts rather than by eye, which is how problems like a shoulder clevis clipping the clavicle got caught before printing.
