← Design notebook

BUILT BY AUTONOMOUS SYSTEMS · WORK IN PROGRESS

The turret program

The user: "keep a good agent running 24/7 making our turret something we can manufacture, fully validated and awesome with nerf balls." This file is that agent's charter, checklist and log. Every turret agent reads it first, works the next open items, ticks what it proved (with the evidence), and appends to the log before it stops.

The goal

A foam-ball turret (Nerf Rival-size balls) for Gyropup that:

  1. can be built: every made part printable on a 256 mm bed in the materials we use (PA6-CF structure, PETG, TPU), in a sensible orientation, with every bought part a real part number (McMaster-Carr through tools/mcmaster_cad.py, or a named vendor part) and an assembly order a person can follow;
  2. is validated: each claim below backed by a simulation, a calculation with its inputs, or a bench test plan;
  3. is awesome with Nerf balls: it feeds every time, fires accurately at a kid-safe speed, sounds and looks great, and is easy to reload and to service.

Hard rules: the barrel never points above horizontal (kid safety, docs/head-payload.md); muzzle speed at or under 70 fps (21.3 m/s) for balls; nothing spins or feeds unless the safety line (the bench pendant now, the radio stop on the robot) is held; private fleet details stay out of public repos.

The speed cap is held by hardware, not by firmware (coordinator, 2026-10-27): the flywheel ESCs are fed only from the fixed-output 12 V regulator, never from 24 V, and at every connector the 12 V flywheel pins and the 24 V pins are keyed so they cannot be swapped. The ceiling goes as motor KV x rail voltage x tyre diameter, so a flywheel motor, rail or tyre may change only when the physics agent's ceiling map (sim/turret_launch3d.py ceiling_map: 100 % throttle, a +5 % KV motor, a +4 % rail, runout and tyre growth) keeps the fastest ball at or under 66 fps on the cartridge as built. The Snail 2305 is 875 rpm/V; a drone 2306 at 1700-2600 rpm/V on 12 V would throw far over 70 fps, so a drone motor is never a drop-in replacement: its rail comes down in proportion (about 6 V at 1700 rpm/V) and the map is rerun before it is fitted.

Parts rule (the user, docs/decisions.yaml D40): every part is off the shelf with a listed price and a buy link (McMaster-Carr first; Digi-Key, Mouser, SparkFun, Adafruit, Pololu; the makers' stores for motors and servos), or 3D printed, or ordered to our drawing at an instant online price (SendCutSend for laser-cut, bent or machined sheet and plate; Xometry or JLCCNC for CNC; JLCPCB or PCBWay for boards). Nothing that needs a quote. The plan's choices D1-D10 are decided (D41, docs/turret-plan.md section 1): continuous pan; the SparkFun ROB-13065 ring on the bench and the robot; the Feather M4 CAN; the servo bus across the ring; one fixed 12 V regulator as the speed ceiling; two ring circuits kept for a camera; the line cuts the wheels and the dial in hardware, pan and tilt stay live and capped at 100 deg/s; a phase-short brake with brake-on-stop; a 66 fps chronograph trip. The turret stands on a 30 mm printed riser on the top deck.

Where it sits

Validation checklist

Tick with a link to the evidence (file, picture, result JSON). Unticked = open.

Ball and launch

Feed

From the turret-on-Orin-box scene (coordinator, 2026-10-27; cad/turret_box.py on main)

Structure and motion

Build

Awesome

Log

Newest last. One entry per agent run: what it did, what it proved, what is next.