中文 English
🤖 LateAI
HomeBuild Your Own Robot › Faze4 Fully 3D-Printed Six-Axis Arm (Detailed Guide)
⚙️

Faze4 Fully 3D-Printed Six-Axis Arm: Cycloidal Gearbox, Assembly and Two-Layer Control Stack

Faze4 — Cycloidal Gearboxes, Assembly & a Two-layer Control Stack
📶 Hard ⏱ Days of printing · weeks of assembly · nights of tuning 💰 ~1000 parts / ~15 kg assembled 🦾 DIY · Original guide by LateAI

📌 What this guide covers

Faze4 comes from the same team as PAROL6 (Source Robotics / Petar Crnjak), but it takes a very different route:instead of simplifying the mechanics to cut cost, it takes the core mechanism of an industrial arm —the cycloidal pin-wheel reducer— recreates it by 3D printing, and packs one into every joint. The result is roughly 1000 parts, about 15 kg, with all cabling routed internally, and looks and behaves close to a small industrial arm.

Why it is worth building:Low backlash + maintainability. A cycloidal drive meshes many teeth at once and resists shock loads by nature. Printed in plastic, when the disc wears or breaks you simply print another one — something you cannot do with an off-the-shelf actuator module.

This guide runs in robot data → cycloidal principle → printing → assembly → power distribution → control stack — six sections. Accept one premise up front:the time cost of this machine is in assembly (measured in weeks), not in printing.

⚠️ Inconsistent licence labels: the repository sidebar states CERN-OHL-S-2.0 (an open-hardware licence), while the README body says MIT. Before replicating, redistributing or commercialising it, follow the LICENSE file in the repository and confirm directly with the author. The official README also states plainly that the project is still under development and may contain bugs — use it at your own risk, not as finished equipment.

📐 Section 1: Robot Data (Copy These Down Before Writing Code)

DataValue
L1 / L20.23682 m / 0.32 m
L3 / L4 / L50.0735 m / 0.2507 m / 0.057 m
J115:1 cycloidal + 5:3 timing belt = 25:1
J2 / J327:1 cycloidal / 15:1 cycloidal
J411:1 cycloidal + 28:26 timing belt ≈ 11.85:1
J5 / J611:1 cycloidal + 1:1 timing belt / 19.19:1 planetary
Timing beltsJ1 HTD 5M 490 mm (needs a bearing tensioner), J4 HTD 5M 430 mm (no tensioner needed), J5 HTD 5M 285 mm (needs a bearing tensioner), all 10 mm wide

This table is the baseline for everything that follows: the controller needs it, the simulation needs it, and it must be updated whenever you change the mechanics. The team also provides Faze4_Work_Envelope.m scripts that compute the workspace envelope —run them before planning a trajectory, so the arm does not drive into itself.

🌀 Section 2: Why the Cycloidal Pin-Wheel Drive Has Low Backlash

How it works: an eccentric shaft drives the cycloidal disc in an eccentric motion; the outer teeth of the disc engage several pins of the pin ring simultaneously, and the tooth profile converts the eccentric motion into low-speed co-rotating output. It is cheap, shock resistant and gives a large reduction ratio; compared with a harmonic drive its drawbacks are slightly larger volume and tighter manufacturing tolerances.

🖨️ Section 3: Printing Strategy

  1. Dial in your printer using the official 3D printing guide: it covers materials, printers and print settings. The total printed volume is large, so print one or two critical parts first to verify dimensional accuracy and interlayer strength, then batch the rest.
  2. Print several cycloidal discs in one run: pick the set with the tightest dimensions — a practical way to reduce backlash. Even batches from the same printer vary slightly, so spare parts never go to waste.
  3. Stock extra bearings and screws: the project explicitly warns that bearings and screws can be damaged or ruined during assembly. Buy screws locally (cheap and you control the quality).
  4. About 1000 parts in total: printing is only the start. Batch prints per joint module and sync them with your assembly pace — far less chaotic than printing everything first and assembling afterwards.

🔧 Section 4: Assembly (Modules First, Then the Whole Arm)

1
Build the actuators (joint modules) first
The team provides an assembly video for the cycloidal actuator — the single most valuable reference for this build. Assemble each joint module on the bench, spin it, measure the backlash, and only mount it to the arm once it passes. Module-by-module acceptance avoids the disaster of finishing the whole arm and then finding a bad joint.
2
Cycloidal fit: smooth, no play, no binding
The fit between pins / rollers and the cycloidal disc is everything. If a printed hole is too tight, ream it first — never hammer it in — the interlayer strength of printed parts is far below metal.
3
Belt tensioning: J4 needs none
J1 and J5 need a bearing tensioner, J4 needs no tensioner (stated explicitly upstream). The standard is slight springiness under finger pressure and no skipped teeth under load. Too tight sharply increases motor load and bearing wear.
4
Route the cables internally, during assembly
All cables run through internal channels; threading them afterwards is close to impossible. Leave enough bend allowance at every joint — one broken signal wire means tearing the whole arm apart to find it.
5
Follow the order in the official assembly manual
An official assembly manual (with BOM) is provided — do not skip steps. With roughly 1000 parts, skipping one step usually costs you several layers of disassembly.

🔌 Section 5: Distribution PCB and First Power-Up

📦 V2 Distribution PCB Kit (redrawn by LateAI · ready for fabrication)

The official repository ships the V2 Gerbers and a PDF schematic; every designator and net name is buried in the drawings, so any change means hunting through the PDF.This pack is a V2 netlist plus companion files, rebuilt by checking Schematic.PDF pin by pin: 142 components, 105 nets and 429 pin connections, all in machine-readable BOM and netlist form — easy to script against and to version-diff, and usable with the bundled extension to regenerate schematic + PCB in one click inside EasyEDA Pro.

What is in the pack

FileDescription
bom.csv142 components with designator / model / prefix: Teensy 3.5, 24 × BSS138, 84 resistors, 18 diodes, 13 terminals
netlist_v2.csvPlain-text netlist: one line per net → pin pair, easy to review by hand and to version-diff
netlist_v2.jsonStructured netlist: board outline, component table, 105 nets, 429 pin connections, plus notes on items to double-check
netlist_v2.netProtel2 netlist: import all 105 nets in EasyEDA Pro via File → Import → Netlist (footprints need reassigning)
board_outline.jsonBoard outline: 115 × 195 mm, 2 layers
schematic_v2.pngHigh-resolution V2 schematic bitmap (3998 × 3000 original) — readable without an EDA tool
faze4-v2-builder-1.0.2.eextEasyEDA Pro extension package: one click to generate schematic + PCB (outline / mounting holes / auto layout and routing)
README.mdExtension install and usage notes, plus parameters such as trace widths

How to use it

  1. You just want boards made: order parts from bom.csv and solder by designator; the outline is 115 × 195 mm, 2 layers, 1 oz copper, green solder mask / white silkscreen is enough.
  2. You want to edit the design yourself:Use EasyEDA Pro throughout. Install the bundled .eext extension (steps below), then click menu Faze4 V2 → ① Generate Schematic,② Generate PCB to redraw automatically; without the extension, import the included netlist_v2.net via the Pro version's File → Import → Netlist (select type Protel2) to bring all 105 nets into the PCB.
  3. Verify before committing to production: see the 3 items to review below — those three have no unique answer in the PDF, so sensible defaults were assumed.

Install the extension and redraw in one click (EasyEDA Pro)

1
Import the extension package
Pro version → Settings → Extensions → Extension Manager → top right Import → select faze4-v2-builder-1.0.2.eext. A locally signed package warns about an untrusted source — allow it, then restart the application.
2
Confirm the extension is enabled
Back to Extension ManagerInstalled list and confirm this extension is enabled (its registered Faze4 V2 menu only appears once enabled).Also make sure Show in top menu is ticked — otherwise the entry collapses into the top-level Advanced menu and you would think it failed to install. After changing settings, restart the application once.
Note: this extension only uses internal EasyEDA APIs — no need to enable external interaction (that option is for extensions that need network access or talk to external programs; it is also settable per extension in Extension Manager).
3
① Generate Schematic
Create project Faze4_V2_distribution_board → new schematic → from the top menu click Faze4 V2 → ① Generate Schematic. It places all 142 components (Teensy 3.5 / 24×BSS138 / 84 resistors / 18 diodes / 13 terminals), stubs out every pin and assigns net names — all 105 nets and 429 connections complete automatically. If you have no project yet, use ③ Create Project and Generate Schematic from the same menu for a one-shot setup.
4
② Generate PCB
Switch to the PCB editor and click Faze4 V2 → ② Generate PCB: sync netlist → draw the 115 × 195 mm rounded outline → four φ3.2 mounting holes → autoLayout()autoRouting().
5
Read the console summary
Execution results and components not found are written to Help → Developer Tools → Console, together with a popup summary. Keywords that do not match print component not found: xxx — swap in your own part manually; net labels are already applied, so replacing parts loses no connections.
💡 Developer mode is handier if you want to tweak the code: Extension Manager → Develop Extension → point it at the extracted folder (containing extension.json and main.js), then click Reload after each change. Outline / hole / trace-width parameters live in main.js at the top of CFG.
⚠️ The extension searches keywords in the EasyEDA system library and takes the first available part (Teensy 3.5 / BSS138 / PC817 / yellow LED / 10K 0805 / 4.7K 0805 / 1K 0805 / all KF301-5.08 sizes / pin headers). If a keyword is renamed or delisted it will not match — that is expected, just replace it manually per step 5 above.

3 items to review

📐 Trace widths: signals 0.2 mm (~8 mil) / power 0.5 mm (~20 mil), 2 layers of 1 oz copper, green mask / white silkscreen — the best value combo for a standard 2-layer board (anything below 0.15 mm costs extra; a 0.5 mm power trace on 1 oz carries roughly 1.5 A, ample for optocouplers and level shifters).
⚠️ This pack was reconstructed by LateAI from the official V2 schematic PDF; it is not an official release. Before running production, cross-check it item by item against the official Gerbers / PDF you have; review the high-current and power sections against your own safety requirements.

📥 Controller / Distribution Board Production Files (Full V1 / V2 / V3 Set)

The pack above is the netlist and one-click redraw tooling; this section lists every production file for all three board revisions, one download at a time (assembly drawing / drill drawing / pick-and-place / BOM / Gerber / STEP / firmware / netlist and sourcing tables). For the complete connection data, open the matching interactive page — click a net to see its pins, click a component to see its designator; the data there matches these files exactly.

V2 · Distribution Board (current upstream revision · recommended)

FileSizeDescription
faze4_v2_assembly_drawing.pdf36 KBAssembly drawing, A4 at 1:1, top / bottom designators + values, for SMT and hand-soldering checks
faze4_v2_drill_drawing.pdf39 KBDrill drawing with hole-size table (Ø0.80×36 / Ø0.99×48 / Ø1.00×20 / Ø1.20×76, 180 holes in total)
faze4_v2_nc_drill.zip1 KBNC Drill (Excellon .drl) + board outline Gerber (Edge.Cuts)
faze4_v2_cpl.csv4 KBPick-and-place CPL file for SMT assembly
faze4_v2_bom.csv1 KBBOM, 142 pieces / 13 line items
faze4_v2_kicad.zip87 KBKiCad 8 project (PCB + schematic + footprints / symbols libraries)
faze4_v2_schematic.pdf774 KBSchematic (upstream official PDF)
faze4_v2_board_dimensions.pdf545 KBBoard dimensions / designator drawing (upstream official PDF)
faze4_v2_step.zip167 KB3D STEP model (upstream)
faze4_v2_pins.h1 KBFAZE4_V2_PINS.h pin definition header
faze4_v2_stepper_move_test.ino2 KBV2 stepper test firmware (Teensy)
⚠️ Upstream never released V2 Gerbers or PCB sources — only the schematic PDF, STEP and dimension drawing. The reconstructed KiCad project is footprints + coordinates + net connections — no copper routing. Use the assembly / drill drawings, NC Drill, coordinates and BOM above for sourcing and assembly checks, but the copper-layer Gerbers required for fabrication need routing it yourself (KiCad Freerouting or the EasyEDA auto-router) before exporting.

V1 · Distribution Board (obsolete · not recommended upstream · reference only)

FileSizeDescription
faze4_v1_gerber.zip99 KBComplete Gerber fabrication files (2 layers), official upstream release — ready to order as-is
faze4_v1_nc_drill.zip3 KBNC Drill file
faze4_v1_pick_and_place.zip6 KBPick-and-place file (for SMT assembly)
faze4_v1_assembly_drawing.pdf54 KBAssembly drawing (upstream)
faze4_v1_drill_drawing.pdf67 KBDrill drawing (upstream)
faze4_v1_stackup.pdf393 KBStack-up report
faze4_v1_bom.xlsx11 KBBOM (upstream original xlsx)
faze4_v1_bom.pdf207 KBBOM(PDF)
faze4_v1_bom.csv2 KBBOM (CSV, includes Digikey links)
faze4_v1_cpl.csv3 KBPick-and-place CPL file (CSV)
faze4_v1_kicad.zip279 KBKiCad 8 project (PCB + schematic + libraries)
faze4_v1_step.zip3.3 MB3D STEP model
faze4_v1_firmware_Arduino_GUI_code.ino27 KBV1 low-level firmware (source of this page's pin map, port1..port24)
faze4_v1_firmware_test_code_1.0.ino57 KBV1 test firmware
faze4_schematic_v2_reference.pdf774 KBSchematic (V2 revision, bundled with the V1 pack, for reference only)
💡 Which revision to choose: V1 is a complete official release — full Gerbers included, ready to order — V2 has none. If you want a usable board right now, the V1 Gerbers are the only drop-in option; design-wise, though, upstream clearly recommends V2 (opto-isolated inputs, 3.3V→5V level shifting on the outputs).faze4_v2_pins.h and faze4_v2_stepper_move_test.ino — the two V2 firmware files are also available in the V1 pack, and listed in the V2 table above.

V3 · Teensy 4.1 Controller Board (site design draft · not fabricated yet)

FileSizeDescription
faze4_v3_netlist.csv5 KBPin-level netlist, 151 nets / 466 connections (net, ref.pin); the reference when drawing the schematic in EasyEDA, and the baseline for a "compare netlist" check afterwards
faze4_v3_bom_jlc.csv3 KBJLCPCB sourcing BOM, 33 line items with verified LCSC part numbers (Comment / Designator / Footprint / LCSC Part #) — import straight into PCBA "BOM sourcing"
faze4_v3_design_pack.zip3 KBThe two CSVs above bundled together for a single download
⚠️ V3 is still a design draft, not a ready-to-order production set: it ships a pin map, a netlist and a sourcing BOM — no schematic / PCB sources, Gerbers or board photos yet. Follow the JLCPCB build guide to draw and route the schematic in EasyEDA before exporting Gerbers for fabrication.
💡 Which revision to choose: V1 / V2 are distribution boards fanning out driver signals (V2 ships a passive backplane plus an active shield); V3 is a controller board integrating the Teensy 4.1 host and its external interfaces — a different form factor, not a drop-in replacement. Want a board you can use today → use the V1 Gerbers. Following upstream's recommended wiring → study V2. Building one integrated board from scratch → start from the V3 netlist and BOM. V3 keeps the exact same 6-pin PORT1~8 pinout as V2, so existing harnesses carry over; the design page includes a V2→V3 pin migration table.

🕹️ Section 6: Control Stack (Teensy Firmware + Matlab / ROS Upper Layer)

LayerContent
Low levelRuns on Teensy. Upstream splits the firmware into three variants: Matlab live-script testing,Matlab trajectory planning,ROS. Decide which upper layer you want first, then flash the matching one.
Upper layerEither Matlab (live scripts for testing and trajectory planning — quick to start, good for validating the mechanics) or ROS (planning and visualisation).
ModelAn official URDF is provided (URDF_FAZE4); import it into ROS / a simulator to check self-collision and reachability; use the official L1~L5 link dimensions.
ToolsFaze4_Work_Envelope.m: computes the workspace envelope — run it before any planning.

This Teensy low level + Matlab / ROS upper layer split is the highlight of its architecture: the low layer owns real-time behaviour and servo control, the upper layer owns trajectory and planning, joined by a clean interface — simulate every new motion before running it on hardware, which saves a lot of disassembly time.

🎯 Bonus · Real 3D Trajectory Lab (explore it in your browser before building)

Building it takes roughly 1000 parts and weeks of assembly, but its kinematics can be explored right now in a browser: the Faze4 Real 3D Trajectory Lab uses real parts converted from the official STLs (base + six joint links, including the external shape of the in-joint cycloidal reducer) and solves 6-axis inverse kinematics live in the page — the end effector actually traces sine / circle / triangle on a vertical drawing board, with all six joint angles and the tracking error shown alongside; drag the target point and the whole arm repositions instantly.

🎯 What this page does — and does not: it solves pure kinematics — is it reachable geometrically, with no gravity, inertia or motor torque limits. For each trajectory mode the right panel generates a copyable offline numpy pre-solve script producing q_traj.npy; feed it as a q_des schedule into the Drake Real Dynamics Guide PD + gravity-compensation controller and you will see whether the machine, under real hardware constraints, can track the same trajectory. One is pure geometry, the other includes dynamics — read them side by side and you can predict which motions will hit joint limits or torque ceilings before you build anything.

🚧 Pitfalls to avoid

🔗 Official resources

❓ FAQ

Does a 3D-printed cycloidal gearbox really work?

Yes — that is Faze4's core premise. It gives low backlash, shock resistance and maintainability, at the cost of accuracy depending on print quality and assembly tolerance, and less load capacity than steel harmonic / RV reducers. It suits research, teaching and prototyping, not production-line duty.

How large a printer do I need?

The official printing guide recommends printers and settings — follow it. The key point: large parts (the arm links, for instance) need either a big build volume or a split-print-plus-join design. Before you start, cross-check the largest parts in the list against your build volume.

There are three Teensy firmware variants — which should I flash?

It depends on your upper layer. Going Matlab → flash one of the two Matlab variants (live-script testing / trajectory planning); going ROS → flash the ROS one. Flashing the wrong one means the upper layer simply will not run — the single most common place newcomers get stuck.

Faze4 or PAROL6?

Same team, similar thinking. Faze4 is the harder-core option: fully 3D printed, in-joint cycloidal reducers, roughly 1000 parts; PAROL6 has a more active community and more mature documentation. Want to go deep into mechanism design (cycloidal drives especially) → Faze4; want a working, dependable machine sooner → look at PAROL6 first.

Upstream says the project is still in development — is it usable?

Treat it as a working research object, not finished equipment: the hardware and documentation are enough for a replica, but the README explicitly warns of possible bugs and that use is at your own risk. Recommended approach: get the robot data and URDF working in simulation first, then move to hardware step by step, accepting each layer separately.

✅ Next steps

Back to project 01 in the Build Your Own Robot section, which links to this guide, the GitHub design files and the distribution PCB documentation. Suggested order: read the design decisions → copy the robot data → print and verify key parts → assemble joint modules and accept one by one → power up the V2 distribution PCB → bring up Teensy + ROS / Matlab → iterate in simulation with the URDF.