# Fully 3D-Printable Linear Actuator

Viewer: `.../?file=linear_rail.urdf`  ·  Generators: `gen_linear_rail.py` (pieces) + `gen_linear_rail_urdf.py`

A self-contained linear axis with **no bought metal** — printed rail, carriage, lead screw, and nut — driven
by our **Feetech STS3215 in `holder_fillet.stl`** (the motor mount we already use). Travel along the rail;
the servo turns the screw, the carriage rides the dovetail.

## Printable pieces (all watertight, single-body)
| Part | What |
|---|---|
| rail.stl | Dovetail rail (~160 mm) + M5 base mount holes. Print flat, dovetail up. |
| carriage.stl | Dovetail slider + nut pocket + M3 payload holes on top. |
| leadscrew.stl | 8 mm-pitch printable trapezoidal screw, D-flat coupler end. Print vertical (or supports). |
| leadnut.stl | Printed nut, internal thread (0.35 mm clearance) + flange; presses into the carriage pocket. |
| motor_end.stl / idler_end.stl | End brackets with screw bearing bores. |
| coupler.stl | STS3215 horn ↔ screw D-shaft. |
| + holder_fillet.stl, st3215.stl | reused servo + mount. |

## Specs
- Dovetail slide, **0.4 mm** clearance (tune on first print). Screw OD ~10 mm, **8 mm lead**.
- Travel ±60 mm (rail 160 mm). STS3215 continuous rotation drives it (position mode = fine control; the servo
  is not continuous-rotation stock, so travel is limited to the servo range unless you mod it or gear it).

## Print / tuning notes
- Dovetail + nut clearances are the tunable knobs — first print may be tight (file/sand) or loose (reduce
  clearance in gen_linear_rail.py). Print the screw + nut in PETG for smoother, tougher threads.
- The printed screw is fine for light loads (camera, light tooling); for real force use a bought T8 (the
  carriage nut pocket already fits an 8 mm screw region — swap in a brass nut).

## Update: yoke is the servo interface
The STS3215 output attaches via **yoke_fillet.stl** (clamps the horn + idler) — that is how anything mounts to
the servo output in our system. The lead screw is coaxial with the servo output axis; the coupler bolts to the
yoke and drives the screw. (The yoke arm is unused for this coaxial drive — a plain yoke or a trimmed arm is fine.)
