Teen engineer builds a working cycloidal gearbox, shares the code

A Hacker News user going by "tomilan," who describes themselves as a 15-year-old aspiring engineer, published a GitHub repository containing a Python script that generates cycloidal gearbox designs, along with three physical hardware iterations built to test it. The script runs inside Autodesk Fusion 360: a user clones the repo, opens Fusion 360's Scripts and Add-Ins panel with Shift+S, adds the cycloidal_generator folder as a script, and runs it. It is based on a SolidWorks tutorial article on building cycloidal drives, and it exposes a small set of parametric inputs: pin count and pitch radius, which set the outer stationary housing geometry and give the rotor N-1 lobes; eccentricity, the input shaft's offset distance, constrained so the pitch radius must exceed eccentricity times pin count; outer pin radius, constrained against an undercut limit; and a precision or profile-offset value that adds angular step size and tolerance clearance for 3D printing. A further parameter defines the output pins and bolt radius. The first hardware build was a hand-cranked gearbox with a 1:9 gear ratio, made specifically to validate that the generator script produced a workable design. The second version attempted a micro cycloidal gearbox, also at a 1:9 ratio, sized to fit the same footprint as a NEMA 17 stepper motor. That version did not work: the tight tolerances a small cycloidal drive requires exceeded what 3D printing could reliably hold. The third version, with a larger footprint than Version 2, became the first to run successfully on a NEMA 17, because the extra size allowed greater manufacturing tolerance. Its CAD files are included in the repository under cad_models/version_3. The author notes two possible upgrades to Version 3: replacing the housing pins with MR128 bearings, which would cut friction and raise efficiency, and replacing the output pins with M2 screws fitted with metal coverings, which would increase rigidity, maximum torque output and efficiency. No cost, weight or torque figures are given for any version, and no license terms are stated for reuse of the design or script.

Key facts

  • HN user tomilan, self-described as a 15-year-old aspiring engineer, published a GitHub repo with a Python script that generates cycloidal gearbox designs for use inside Fusion 360.
  • The first hardware build was a hand-cranked test gearbox with a 1:9 gear ratio, made to validate the generator script.
  • Version 2, a micro gearbox sized to a NEMA 17 footprint at a 1:9 ratio, failed because 3D-printing precision could not hold the tight tolerances a small cycloidal drive needs.
  • Version 3, with a larger footprint and looser tolerances, became the first to run successfully on a NEMA 17 motor.
  • The generator is based on a SolidWorks tutorial on cycloidal drives, and Version 3 can optionally be upgraded with MR128 bearings or M2 screws with metal coverings for lower friction and higher torque.

Why it matters

Cycloidal gearboxes pack a high reduction ratio and low backlash into a compact footprint, but they are notoriously hard to design and machine at small scale because of their tight internal tolerances. This project is a concrete, public example of working through that difficulty step by step: a parametric generator script followed by three physical builds, with the failure of one version and the fix in the next both documented rather than glossed over.

Who it affects

Hobbyist makers, students and anyone building small geared mechanisms, robotics actuators, 3D-printed drives or camera gimbals who wants a free, parametric cycloidal drive generator rather than starting a design from a blank Fusion 360 or SolidWorks file.

How to use it

Clone the repository, open Fusion 360's Scripts and Add-Ins panel (Shift+S), add the cycloidal_generator folder as a script, and run it. The exposed parameters are pin count and pitch radius (set the outer housing geometry; the rotor gets N-1 lobes), eccentricity (input shaft offset, constrained so pitch radius exceeds eccentricity times pin count), outer pin radius (checked against an undercut limit), a precision or profile-offset value (adds clearance for 3D-printing tolerance), and an output pins and bolt radius setting. CAD files for the working Version 3 design sit under cad_models/version_3. No price or license terms are given in the source.

How solid is it

The account comes from the project's own repository description rather than third-party testing or review. It reads as a genuine build log rather than promotion: it explains why Version 2 failed (3D-printing precision against tight tolerances) and precisely what changed to make Version 3 work (larger footprint, looser tolerances), instead of simply asserting success. No independent verification, benchmark or outside commentary is available.

Risks and caveats

Everything here is self-reported with no independent confirmation, and no cost, weight or torque figures are given for any of the three versions. The suggested Version 3 upgrades, MR128 bearings and M2 screws with metal coverings, are presented with expected benefits (less friction, more rigidity and torque) but are not shown as tested. No license is stated for reuse of the script or CAD files.

“This gearbox was the first working version to run on a NEMA 17. It has a larger footprint compared to Version 2 allowing greater tolerances and a fully functional design.”

— tomilan, project repository description