Work in progress. This design is still changing, and parts of it are not yet built and tested on a robot. Please tell us what works and what does not.

FTC 2026–27 · BIOBUZZSwivel turret v8.1GB

Loading model…
Drag to orbit · scroll to zoom · right-drag to pan · double-click a part for details

Design decisions

Why the turret is built the way it is. Each figure answers one question. The answers come from the 3D model and from computer simulations of the ball's flight, which include air drag (air slowing the ball). The target is the up-cell's real opening, measured from the official field CAD (it matches the game manual within about 3 mm). It's a five-sided shape, 20 in wide and 13.9 in tall, with a flat peak and the bottom corners cut off. Its bottom edge is 53.45 in off the floor and its peak is 65.47 in. It faces out and leans back 30°. The ball leaves the turret about 0.33 m above the floor.

1 · Shots into the tilted openingAt each distance, the shot uses the hood angle that can take the biggest speed error and still score. Each path is drawn until it enters the opening. The thick lines are the openings, to scale. They face the robot and tilt 30° up. Good shots are already coming down when they reach the opening.
2 · How much speed error still scoresWe call this the "speed room". "±4%" means the ball can leave 4% faster or 4% slower than planned and still go in. Higher on the chart is more forgiving. To count, the ball's edge must clear the bottom rim and the peaked top, and the ball must be coming down, not still rising. The best angles allow about ±5% close in and about ±3% from 2.5 m. Worn balls, and the flywheel slowing a little (sag), change the exit speed (how fast the ball leaves) by a few percent. So the speed control has to stay inside this range.
3 · The 18″ height budgetThe 18″ cube only applies to the robot's shape at the start of the match (rule R102). At the start the servo holds the hood at its steep end, so the turret is 193 mm tall (from the robot surface under the bearing) and the side plates are its highest point. After the start, the robot may be up to 29″ tall and 18 × 24″ across (rule R105). Mechanical stops, not software, must keep it inside that. Flattening the hood for a long shot lifts the upper wheel 34 mm (dashed), still far under the limit.
4 · The mechanism (side view)The ball rises straight up between the wheels. Each drive stage pivots on the shaft that drives it. So the distance between each pair of shafts (the center distance) never changes, and belts stay tight and gears stay meshed. The upper wheel's arm swings out for the bigger Nectar ball, and the whole arm tilts with the hood.
5 · Where the camera can see our target's tagsThe AprilTags (printed square codes the camera can find) are under each CELL, facing down. Only one set matters to us: the tags under the CELL we're shooting at, our up-CELL. The turret points the camera at that opening. Green spots are where the camera can read those tags. From the spots where we can score (figure 6), it reads them from 90% at the tilt picked below. Up close (under about 0.75 m) the tags are almost straight overhead, above the camera's view, so a steeper tilt helps there. But too steep a tilt loses some far spots. Where the camera can't see the tags, the turret aims using where the robot thinks it is on the field (from odometry and the IMU, see "Words to know"). This is an estimate: a lens 0.40 m above the floor and about 0.16 m ahead of the turret's center, a rough tag position, and nothing in the way. In real matches the HIVE's frame and other robots will block some views. Check it on a real field.
Camera tilt:
6 · Where the robot can shoot fromThe field from above (manual figures 9-2, 9-8 and 10-2; audience at the bottom). It maps where the robot's center can be to score in our up-CELL. Pick your alliance and which way our HIVE is tipped. The up-CELL switches sides each time the HIVE tips. At the start, red's faces the audience and blue's faces the rear wall.

What the blue means. Blue spots score. Darker blue is more forgiving: the launch speed can be further off and the ball still goes in, so worn balls, flywheel sag and small aiming errors matter less. It is not the launch speed. Each spot shows its hardest case (Pollen or Nectar, other HIVE tipped either way). Hover or tap a spot for the numbers.

Why not right next to the HIVE? The robot can drive under the HIVE. Its frame touches the floor only at the two ends (dark lines), and its legs lean in above the robot (short dark lines; the robot's center can't be in the shaded band). But the opening faces out and leans back. From right under it the ball would have to go almost straight up, steeper than the hood's 85° (gray hatching). Between the two HIVEs, the other HIVE's CELLs are in the way (orange hatching). Stay outside the dashed 0.5 m line. The map goes out to 2.5 m, with the robot's center at least 9 in from the walls (dotted). Other robots aren't included. FLOWERS, LOADING ZONES and GARDENS are traced from the manual's drawings, so they're approximate.
7 · Where the 45° rule comes from, and what it becomes hereIgnore air drag and treat the target as a single point. Then the launch angle that reaches it with the least speed is always halfway between aiming straight at the target and aiming straight up. On level ground the target is at 0°, so halfway is 45°. That's the familiar rule. The HIVE opening is 1.2 m above the launcher, so the line to it already points up (green). Halfway between that line and straight up (blue) is steeper: 74° from 0.75 m, 58° from 2.5 m. The two brackets show the equal halves. Out to about 1.25 m, the best Pollen angles the hood can reach (orange dots) sit right on the halfway curve. Farther out they drop below it, until they hit the hood's flattest setting, 55°, at 2 m. That's because out there we pick the angle with the most speed room, not the least speed. Also, the opening leans back toward the robot, so a flatter arc hits it more squarely. With no hood limit, the ideal angle would keep dropping, to about 50° at 2.5 m.
straight at the openinghalfway to vertical (least speed)best angle for the real opening45°, the level-ground case
DecisionWhy
Bought turret bearing: the goBILDA Gear-Driven TurretThe turret turns on goBILDA's Gear-Driven Turret (3208-0004-0001): an aluminum housing with a steel ball bearing, a 176-tooth gear ring on top, and a 64-tooth drive gear on a 312 rpm Yellow Jacket (2.75:1). It replaces our plywood base plate, printed ring gear and six rollers, so there is no roller preload to set and no printed ring to wear out, and the turret should wobble less. The ball comes up through its 105 mm bore. The housing bolts to the robot through the tapped holes in its flat sides, and the deck screws straight onto the gear ring.
Everything that turns stays within 201 mm of the turret axisThe lifter takes the back 2 in of the robot. With the turret axis 1 in forward of the robot's center, the lifter and the front of the 18 in start cube are both 203.2 mm from the axis. The modelled parts reach at most 201.1 mm, which leaves about 2 mm for build error, frame flex, plugs and cable ties. So the plan is that the turret can turn freely while the lifter is up. Until the built robot is measured with the lifter on it (turn the turret slowly through its full travel with the lifter up), keep the software limit as a backup. To get there, the flywheel motor sits lower and closer to the main shaft on a shorter 315 mm belt, and the side plates, the front crossbar and the camera moved back. The shot itself is unchanged: same wheels, same 3:1 belt ratio, same hood.
Compact at the start: 262 × 290 mm (10.3 × 11.4 in) and 193 mm tall above the robot surfaceThe rest of the robot needs room: a 2 in lifter at the back, the intake and the indexer that feeds balls up into the turret's center. The flywheel encoder (left) and the deck's home-magnet ear (right) set the width; the side plates (front) and the deck (back) set the length. That's with the upper wheel's arm closed, as it starts; a Nectar opens it to 308 mm. The turret bearing's housing is only 144 mm across, so nothing fixed sticks out past the turning parts. Its motor hangs under the left side, so the front and center under the turret stay free for the indexer, and the back stays free for the cables. The home switch sits on a small printed arm on the housing's front-right side.
Hood covers 55–80° (Pollen; 50–75° for Nectar)For the real, tilted opening, the ideal angle goes from 74° close in to about 50° at 2.5 m (figures 1 and 2). For Pollen the hood stops at 55°. From 2 m out that's a little steeper than ideal, but it still leaves ±3.2% of speed room at 2.5 m (vs ±3.7% at 50°). For Nectar, the arm's geometry says 50–75°. But the swing-arm simulation says a Nectar really leaves about 6–10° steeper, about 58–85°. The bigger ball stays on the main wheel a little longer after it leaves the upper wheel, so it gets carried further up. Weaker or stronger springs barely change that. 59° still scores from 2.5 m, with ±2.5% of speed room instead of ±3.3%, and close shots are still covered. How far a Nectar opens the arm depends on how stiff the real balls are. So measure the balls and the real launch angle (see "Check before cutting"). Close in, the best angles match the 45° rule adjusted for a raised target (figure 7).
60:48 gear pair: the upper wheel runs about 6% slowerThat gives mild backspin. In the simulation the typical (median) shot spins at about 70 rpm, but single shots range from slight topspin (spinning forward) to about 260 rpm of backspin. Backspin makes the ball settle on the cell's sloped floor instead of bouncing off the back wall. Bounce-outs still need testing with a mock cell.
Two linked flywheels, ball straight up between themTo launch steeply, the two wheels must sit nearly side by side at the pinch (the gap where they grip the ball), so the line between their centers is nearly level. The upper wheel also holds the ball against the main wheel, so no guide rollers are needed. The indexer should pop balls up at about 3 m/s. The upper wheel's underside then pushes the ball forward into the pinch, even with the hood flat (the shot slider in the 3D view plays the simulated path).
Belt to a jackshaft on the hood; gears to a swing arm on that jackshaftEach stage pivots around the shaft that drives it. So no belt or gear pair changes its center distance (shaft-to-shaft spacing) when the hood tilts or the arm swings for a Nectar. The motor belt is tightened once, using the sliding adapter plate and the jack screw. The jackshaft belt has a fixed center distance, checked with a test plate.
Constant-force springs set the squeeze; the hard stop only catches worn ballsWith a fixed stop, how hard the wheels grip depends on how squishy the ball is. With a spring force, new and worn balls get squeezed about equally hard. They still don't leave at the same speed. In the simulation, new and worn balls leave up to about 12–14% apart for Pollen (worn ones slower) and 9–10% for Nectar (there a new, firm Nectar is the slower one). Balls in one match wear about the same, so this mostly shows up between fresh practice balls and worn competition balls. Re-check the speed table with balls like the ones used in competition.
Flywheels geared 3:1 to about 8.5 m/sShots into the HIVE need the ball to leave at about 5–8 m/s (figure 1). The feed simulation shows the ball leaves at about the wheels' surface speed: a few percent faster for most balls, because the indexer's pop adds to it, but a worn Pollen at full speed slips and leaves up to 20% slower. So 8.5 m/s at the wheels covers every shot with some to spare. It's 85% of the motor's top speed. That leaves room for the motor to speed back up between shots (math cards 1 and 6).
Cables: the method is chosen after a bench test; the turret keeps room for every optionThe ball goes up through the center, so a slip ring can't go there, and USB doesn't work well through slip rings anyway. Three ways are kept open: a cable loop that rolls under the base plate around the ball's path, a cable spiral around the same path, or a simple loop on the side with about ±120° of turning. So the base plate's center hole is 120 mm (ball and cables side by side), the space under the plate within about 95 mm of the center stays free, and the deck and base plate have zip-tie holes. A home switch lets the software know where the turret is, so it never winds the cables too far.
Plywood frame: two glued 1/8 in layersEach frame plate (both side plates, both hood carriers and the deck) is two laser-cut 1/8 in (3 mm) Baltic birch plywood layers glued together, about 6.2 mm in all. Our Elegoo Phecda 20 W diode laser cuts 3 mm cleanly in one or two passes. A 1/4 in sheet takes more passes and leaves burnt, slanted edges. Two layers also let us turn the grain 90° between them, which makes the plate stronger in every direction. And we can hide things between the layers: nut pockets, and the lip of the servo insert. Why not thicker? The loads push along each plate, not through it. A rough estimate (the hood carrier treated as a simple arm with half the ball squeeze on its tip) says its tip bends about 0.04 mm in plywood and 0.005 mm in aluminum: plywood is about 8 times less stiff, but that's still far too small to affect the squeeze or the shot. It hasn't been tested yet. What needs thickness is the bearing seats, the screws and the knocks a robot takes, and 6 mm of plywood handles those. Every layer fits the laser's 400 × 400 mm bed and a 12 × 20 in sheet; a turret takes about 9 sheets.
Honeycomb pockets in the side platesThis season's game is BIOBUZZ, so the holes that make the side plates lighter are hexagons, like a honeycomb. Only whole hexagons are cut, with at least 6 mm of wood between them, so the pattern stays clean and strong. Every hole for a bolt, shaft or slot keeps a solid ring of wood around it.
Printed PA-CF parts, designed to be replacedThe swing arms, the motor adapter, the servo insert, the three belt pulleys (two 24T and one 48T) and the 18 shaft spacers are printed in PA-CF (carbon-fiber nylon). It's stiff and tough, and our Bambu Lab H2C and Creality K2 Plus can print it. Printing lets us make shapes nobody sells. The goBILDA part numbers of the pulleys are kept as backups.
Still bought where it matters mostThe 16T motor pulley is metal (goBILDA makes it from aluminum and steel). Only about 6 of its teeth grip the belt, and it carries every spin-up. The hood gear (aluminum, 108 teeth) and the 20T hood pinion (steel) are bought too. If the servo ever pushes against an end stop, a rough estimate says the hood gear's teeth see about 140 MPa of stress. Printed teeth would likely break, and the hood gear is hard to reach. The Sonic Hubs hold the flywheels at 2000 rpm, so they're bought. So are the motors, encoder, servo, magnetic switch, bearings, shafts, belts, Gecko wheels, springs, collars, the acetal sync gears, screws and heat-set inserts. The team already owns the Limelight 3A.
Every in-season adjustment reachable with the turret fully assembledThe stop cams (for worn-ball squeeze) are set from the ball side. The motor belt tension is set from outside the motor-side plate, and the camera tilt from outside too. The hood zero and turret home are set in code. The model checks all this: it pushes a tool-sized cylinder out from every adjustment screw and flags it if anything is in the way.
Motor belt on an adjustable mount: an adapter plate that slides, and a jack screwThe 16T motor pulley has only about 6 teeth gripping the belt, and it carries the full torque (twisting force) of every spin-up. So this is the belt most likely to skip if it gets a little loose. With the adjustable mount, the fix takes a hex key and a minute instead of a new plate. It also makes motor and belt swaps quick. All four clamp bolts and the jack screw sit outside the pulley and belt, so you can reach them on the assembled turret. The jackshaft belt stays at a fixed spacing: it runs 1:1 with 12 teeth gripping and carries far less torque.
Optional front flair plateA 3 mm panel for stickers, cut on a diode laser or printed, zip-tied to the front crossbar. It's decoration only, not a ROBOT SIGN. At about 155 mm wide it's narrower than the 165 mm a sign must be, and a sign on a turning turret would swing away from the referees. We put the two required red/blue ROBOT SIGNS on the chassis. Rule R401 allows any surface the referees can see, including the top, as long as the two signs are on opposite or neighboring sides, at least 90° apart.
Square nuts and button heads instead of threads and countersinksWood can't hold threads cut into it. So where a screw needs something to thread into, an M4 square nut (7 mm across, 2.2 mm thick) is pressed into a laser-cut pocket in one layer, with a drop of CA (super) glue, before the layers are glued. There are 8 in the deck's bottom layer for the L-bracket feet (each close pair shares one slot) and 2 in the motor-side plate's inner layer for the jack yoke. The printed motor adapter has 4 square-nut pockets for its clamp bolts. Flat-head screws would crush the wood, so there are no countersinks in the plates. The hood carriers form the walls of the ball's path, and a Nectar clears them by only about 4 mm. So each carrier's ball-side layer has 8.2 mm counterbores (round recesses), and button-head screws sit flush in them. Each stop-cam screw threads into a heat-set insert in its printed cam. The servo's screw holes are only about 4 mm from its body, too thin a strip for plywood. So the servo sits in a printed PA-CF insert: its lip is trapped between the servo-side plate's two layers, and the servo's 4 M3 screws go into M3 heat-set inserts in it (smaller M3 inserts leave more plastic next to the servo's opening than M4 ones would). The flywheel motor's four M4 × 8 button heads sit in the side plate's window. The model includes the heads and nuts of the structural bolts, the Sonic Hub screws and the spring-anchor screws, and checks that nothing hits them. It tests the hood steep, halfway and flat. It swings the upper-wheel arm from its stop to the bumper stop, 3° past the Nectar position. It also checks the cable ribbon every 10° of turret turn. Set screws sit inside their hubs. The camera's small screws and bolt threads aren't modeled.
Stacked springs and an arm bumperThe upper wheel is driven by gears from the jackshaft, so gripping a Nectar twists its arm open. With one spring per side, the simulation throws the arm wide open on nearly every Nectar, into the path of the spinning shaft spacers. The strongest narrow (12.7 mm) stock spring we found is 4 lb. So, as a trial, two 2.6 lb am-4666 springs are stacked on each drum. The arm then stays within about 29° in the simulation (with one per side: 81°). A cushioned bumper 3° past the Nectar position catches it if it ever goes further. The drum fits three; choose after testing real balls.
Rear ball guardWith the hood flat, or while the robot speeds up or brakes, a ball can bounce off the underside of the upper wheel and fall behind the feed hole, into the middle of the turret. A printed wall just behind the feed hole stops that. It's built onto the rear crossbar, so it adds one printed part and two screws. The feed simulation checked 2,700 cases: both balls, every hood angle, new to worn balls, and the robot speeding up or braking at up to 8 m/s². With the guard, no ball got behind the feed hole, and every ball popped up at 3 m/s or faster was shot. Without it, 36 got behind it, and 3 Nectars popped at 3 m/s or faster missed.
One flywheel motorThe robot holds at most 4 balls, and 3–4 shots per second is plenty.
Speed: the longest Nectar shot (2.5 m) needs about 6.6 m/s at the ball. The simulation gets that with the wheels at about 7.3 m/s, 73% of the motor's free speed (its top speed with no load). Close shots use the default 8.5 m/s (85%).
Torque: this was checked in a simulation of the wheels and balls together, with each shot's own wheel speed (only the cases below). Pollen barely slows the wheels. Four close Nectar vary by 1.6% at 4 per second and 0.2% at 3 per second.
Hardest case: four long Nectar from 2.5 m with the hood at 25°. Each ball was checked against the speeds that score at its own simulated launch angle (about 57.7–58.2°, which scores from about 6.42 to 6.77 m/s). The wheels were set to 7.32 m/s so the first ball leaves in the middle of that range. At 4 per second the four leave at 6.60, 6.50, 6.47 and 6.47 m/s. All go in, but the last is only 0.8% above the slowest speed that scores. At 3 per second all four are within 0.3% of each other.
So: the shooting code should fire each ball only when the encoder shows the wheels within ±1% of their target (a "firing gate"). In the simulation that settles at about 3.1 per second for long Nectar and 3.3 per second close in, with 0.4% spread. That gate isn't written yet; it's a requirement for the robot code. Other ranges, worn balls and mixed bursts still need checking on the real robot. The side plates have room for a second motor if faster long bursts are ever needed.
Through Bore Encoder V2 on the flywheel shaftIt counts 8192 steps per turn of the flywheel shaft. The motor's built-in encoder gives only 84 at that shaft, so this one measures speed about 100× more finely. The code can then wait until the wheels are exactly at speed before firing (a "ready-to-fire" check).
Limelight at the top front, 45° upHigh cameras get blocked less. The tags face down. At 45°, the estimate says the camera can read the tags under our up-CELL from about 90% of the spots where we can score. A study at every degree from 20° to 50° finds the best between 43° and 49°, depending on how high the turret sits, and 45° is always within about 1.5 points of the best, so 45° is a good starting setting. At 35° it would be 73%, because it misses them up close, where they're almost overhead. These are geometry estimates (no other robots, no blur), not measured detection rates. The mount can be set from 25° to 50° (figure 5 compares every setting). Check this on a real field.
Main wheel low; hood servo and gear behind and below itKeeps the turret at 193 mm tall at the start (hood steep), inside the 18″ starting cube (figure 3).
goBILDA parts with verified part numbers; shaft stacks generated by the modelEverything can be ordered and built. Every bearing, spacer and collar position comes from the same model as the plates.

How it works

How the power gets from the motor to the ball, one stage at a time. (Terms are explained in "Words to know" at the end of the page.) Every drive stage pivots on the shaft that drives it. So the center distance (shaft-to-shaft spacing) of every belt and gear pair stays the same as the hood tilts or the arm swings. Springs set how hard each ball is squeezed. Hard stops (fixed blocks the arm rests against) only limit how far things move.

1 · Motor → main shaft (3:1)

One 6000 rpm goBILDA Yellow Jacket motor lies across the front, with its belt on the motor side. A 16-tooth (16T) HTD pulley on the motor drives a 48T pulley on the main shaft through a 315 mm belt, outside the side plate. That gives about 2000 rpm at the main shaft, or 10 m/s at the edge of the 96 mm wheel. There's plenty of torque (twisting force) to spin back up after each shot.

2 · Main shaft → jackshaft (1:1)

Two 24T HTD pulleys and a 410 mm belt. The jackshaft (an in-between shaft) rides on the hood carrier, and the hood carrier pivots on the main shaft. So the distance between the two pulleys never changes.

3 · Jackshaft → upper wheel (60:48)

A goBILDA 60T:48T MOD 0.8 gear pair (MOD 0.8 is the tooth size), 43.2 mm apart. The swing arm pivots on the jackshaft, so the gears stay meshed at every arm angle. Gears reverse the direction of spin, so the two wheels spin opposite ways and both push the ball up. The upper wheel's surface moves about 6% slower than the main wheel's, which puts mild backspin on the ball.

4 · Squeeze force and the arm stop

Constant-force springs pull on the arm's tail with the same force wherever the arm is. The turret stacks two AndyMark am-4666 springs on each drum (four in all), wound together. Two am-4666 give about 80 N at the upper wheel. (The strongest single spring we found that fits the 12.7 mm width is WestCoast's WCP-0438: 4 lb, about 1.5 am-4666s.)

Why so strong? The upper wheel is driven by gears from the jackshaft. When it grips a Nectar, the drag twists the arm open. With one am-4666 per side, the simulation throws the arm wide open on nearly every Nectar. Two per side keep it within about 29° in the simulation (three: 13°). One WCP-0438 per side would reach about 43°, still inside the bumper's 50.6°.

Stacking is a trial setup. Check that the two strips wind smoothly on the drum. The drum is 16.5 mm, a little bigger than the coil's natural 14.9 mm, as spring makers recommend. At every event, look at the strip ends where they bend over the clamp plate. Keep spares: AndyMark doesn't say how many cycles the spring lasts. McMaster's 9293K52 (the same size, 2.63 lb) is rated for 3000 full-length cycles, and each shot uses only a short part of the spring's length.

A cushioned bumper on each hood carrier stops the arm 3° past the Nectar position, before the spinning shaft spacers could reach the carrier. The drum has room for a third spring per side. Pick the number after the ball squeeze test (see "Check before cutting").

5 · Straight-through pinch

At the steep end the two wheels sit nearly side by side. A ball popped up the column goes straight into the pinch (the gap between them). The underside of the upper wheel pulls it in, so no extra guide rollers are needed. At flatter settings, the upper wheel swings up and around the main wheel.

6 · Hood angle

The hood gear is bought: a goBILDA 108-tooth aluminum gear (2302-0032-0108). It's bolted to the servo-side hood carrier with four M4 button-head screws, whose heads sit flush in counterbores (round recesses) on the ball side. Metal gears are used here because, if the servo ever pushes against an end stop, a rough estimate says the hood gear's teeth see about 140 MPa of stress. Printed teeth would likely break. The servo sits in a printed insert in the servo-side plate. It turns a 1922 REX servo shaft with a small 20T steel gear (the pinion). The pinion drives the big gear at 5.4:1. 300° of servo travel would give 56° of hood movement; only 25° is used. Guide pins in curved slots carry the load and act as end stops. The hood's zero position is set in code, not by adjusting parts.

7 · Cables across the turning joint

Four cables go up to the turret: flywheel motor power, its encoder cable (which also carries the Through Bore Encoder), the hood servo, and the Limelight's USB-C. The ball rises through the center, so a slip ring can't go there, and USB through a slip ring isn't reliable anyway.

How the cables cross the joint is chosen after a bench test, so the turret doesn't wait for it. The options: a cable loop that rolls in a small channel under the base plate, around the ball's path (it keeps the full ±190° of turning; see the 3D concept); a loose cable spiral around the same path; or a simple cable loop on the side, with turning limited to about ±120°, which always works. The turret keeps a 120 mm center hole in the base plate, free space under the plate near the center, and zip-tie holes in the deck and base plate for any of them.

A REV magnetic limit switch on a small pad of the base plate, with its magnet in a printed holder under an ear of the deck, marks "home", so the turret finds its zero every time the robot starts up.

8 · Rear ball guard

The rear crossbar has a 4 mm printed wall on it, just behind the feed hole. It runs from just above the deck up to 78 mm, which keeps it at least 4 mm under the upper wheel at every hood angle and arm position. A ball that bounces backward hits the wall and drops back down the feed hole, where the indexer can pop it up again. The wall is 98 mm wide, so it fits between the hood carriers. A second screw at each end keeps it from turning on its tube.

Parts list

Every bought part links to its page on the seller's site (goBILDA, REV or AndyMark). We checked that each link shows that exact part number. Plates are full-size (1:1) DXF files for the laser. Each frame plate is two 1/8 in (3 mm) Baltic birch plywood layers, so it has two files: <plate>_L1.dxf and <plate>_L2.dxf. Each file's notes say which face that layer is. The optional flair plate is 3 mm wood or plastic. Printed parts are STL files, and each file name starts with its filament: PA-CF (carbon-fiber nylon) for parts that must stay stiff and exact or sit clamped under a bolt, PETG for parts that take knocks, are large or carry little load, and TPU for the one soft bumper ring. No part is PLA: it softens near 55–60 °C and slowly squashes under bolts. In the 3D model, PA-CF parts are black and PETG parts are purple. Click a file name to download it, or grab everything below.

Parts listCSV, opens in Excel or Sheets Laser-cut plywoodDXF, every plate layer (zip) 3D-printed partsSTL, every name starts with its filament (zip) Every part in 3DSTEP, incl. glued plates (zip) Whole turret in 3DSTEP assembly (zip, 28 MB) Shaft stackstext list, as below

Shaft stacks

Every item on each shaft, in order. Positions are in mm from the turret's center line (negative numbers are on the motor side). A 1611 bearing's body sits in the plate's hole, and its 1 mm lip (the flange) sits against the plate face. For the side plates and swing arms the flange goes on the outside face. For the hood carriers it goes on the ball side, so it can't rub the swing arm next to it. Spacers are printed. They're 10 mm across with an 8.2 mm hole, so they touch only the bearing's inner ring (inner race), which turns with the shaft. The gears, the 48T pulley and each wheel stack bolt to a Sonic Hub, which clamps onto the shaft. The 16T and 24T pulleys lock on with set screws (small screws that press on the shaft). Hubs and set-screw parts keep everything from sliding along the shaft. The turret-roller table is different: it goes up and down, in mm up from the top of the base plate. The same list is in shaft_stacks.md.

Assembly order and adjustments

Build in this order, so you can reach every screw when it goes in. Everything that needs adjusting during the season can be reached with the turret fully assembled.

  1. Make the plates. Cut the fit test first (see "Check before cutting") and have the design lead set the hole and pocket sizes you picked. Then cut every plate layer (_L1 and _L2 files). Before gluing, press the M4 square nuts into their pockets with a drop of CA glue: 8 in the deck's bottom layer, and 2 in the motor-side plate's inner layer. Set the servo insert's lip into its recess in the servo-side plate's inner layer. Then glue each pair with wood glue, grain turned 90° between the layers. Push three 1/8 in hardwood dowels through the small holes to line the layers up, and clamp the plate flat overnight. Press the heat-set inserts into the printed parts (ring gear, servo insert, stop cams, bumpers, drum sleeves and the rest) with a soldering iron. In each spring-drum sleeve, press the insert 1.5 mm below the end face, so the M4 × 25 screw grips its whole length.
  2. Base. Bolt the goBILDA turret bearing's housing to the robot through the tapped holes in its flat sides. Its motor mount goes on the left side. Fit the 312 rpm turret motor to the mount, with the 64T drive gear on a Sonic Hub on its shaft (follow goBILDA's instructions for the mount). Screw the printed switch arm to the housing's front-right flat (2 M4 × 10 button heads) and put the home switch on it (2 M3 × 20 + nylocs).
  3. Deck. Lay the printed deck shim on the bearing's gear ring, then the deck on top, lined up with the ring's tapped holes. Screw it down with 8 M4 × 12 socket heads. Fit the home magnet in its printed holder on the bench (2 M3 × 20 + nylocs), then screw the holder up under the deck's ear (2 M4 × 12).
  4. Frame. Stand the side plates in the deck slots and fit the L-brackets. Their bottom screws go into the square nuts in the deck. The bottom and side screws are offset from each other, so either can go in first. Add the crossbars. The rear one is the rear ball guard: its wall faces the feed hole, and it takes two screws at each end (the lower one goes into the tube, the upper one keeps it from turning).
  5. Flywheel motor mount. Press the M4 heat-set insert into the front of the printed tension lug. Screw the motor to its adapter plate (4× M4 × 8 button heads). Hold the adapter against the inside of the motor-side plate. From outside, start its clamp bolts into the square nuts in the adapter: 2× M4 × 10 through the slots, and 2× M4 × 20 through the lug. Leave them loose. Bolt the jack yoke on in front (2× M4 × 16, into the square nuts in the side plate). Thread the M4 × 16 jack screw through the yoke into the lug.
  6. Hood and shafts.
    • Bolt the 108-tooth gear to the servo-side carrier before the carriers go in (4× M4 × 16 button heads from the ball side, heads in the counterbores, nyloc nuts behind the gear).
    • The hood guide bolts (M4 × 45) and the spring-drum sleeve screws (M4 × 25) also go in from the ball side, as button heads sitting in counterbores.
    • Bolt the 48T pulley and the 60T and 48T gears to their Sonic Hubs first (M4 button heads, on the side away from the hub). Once they're on a shaft, those heads face a bearing and you can't reach them.
    • Build the three shafts in the order of the shaft-stack tables. Put the 410 mm jackshaft belt on its two 24T pulleys as they go in.
    • Mount the hood servo in its printed insert in the servo-side plate (4× M3 × 8 into the insert's M3 heat-sets), with its shaft and 20T pinion meshed with the 108T gear.
    • Fit the springs before the upper shaft's 48T gear and collar go on, because those block the spring screw afterwards. Bolt the printed anchor block to each arm's tail (M4 × 12 flat head from the ball side, sitting flush in a countersink in the printed arm). Wind two am-4666 together onto each drum. Screw their two ends flat to the anchor's side face, under the printed clamp plate (M4 × 8 button head through both holes; a longer screw can hit the bottom of the hole before it's tight). The rounded edges of the clamp plate and the block face the drum.
    • Add the stop cams and the arm bumpers (PETG core with its TPU ring pressed on). Each takes an M4 × 10 button head from the ball side, sitting in a counterbore.
  7. Motor belt. Put the 315 mm belt on the 48T pulley. Loop it around the 16T pulley, and slide that pulley onto the motor shaft together with the belt. Tighten the belt (see the table below).
  8. Last. Fit the encoder bracket, the camera mount and the front plate (zip ties). Route the cables the way the bench test picked, and turn the turret by hand through its full travel to watch them. Then set up the home switch and the soft limits (software travel limits) in code before powering the turret motor.
AdjustmentHow to reach it on the assembled turret
Worn-ball squeeze (stop cams)2.5 mm hex key from the ball side, through the ball's path. Loosen, turn the cam, retighten.
Camera tiltTwo lock screws, one on the outside of each side plate. Move both to the matching holes (25–50° in 5° steps).
Turret motor swapFrom the left side, under the turret: the motor and its 64T gear come off goBILDA's motor mount without touching the deck. The gear mesh is fixed by the mount, so there is nothing to set.
Hood servo swapFrom outside the servo-side plate. Take out the 4 M3 × 8 screws that hold the servo in its printed insert's heat-sets, and slide the servo out. The insert stays in the plate.
Hood zero, turret homeIn code: a servo offset, and the home switch reading.
Firing gate, ball-wear offsetIn code (not written yet). Firing gate: fire only when the encoder shows the wheels within ±1% of target speed. This spaces out long Nectar shots. It needs the indexer to hold the next ball and release one when told (see "What the indexer must do"). Ball-wear offset: one speed multiplier per ball type. Adjust it at each event with a few shots on the practice field, because practice balls are fresher than competition balls.
Spring count (1–3 per side)Set once, after the ball squeeze test, not during the season. Changing it means taking the arm's spring ends off the anchor blocks, which sit between the hood carriers and the side plates. The spring-end screw is hidden behind the upper wheel's 48T gear (servo side) and its shaft collar (motor side). So slide those off the upper shaft first, with the hood raised to about 25°. (At 0° the gear's hub hits the servo-side plate as it slides out.)
Motor belt tensionFrom outside the motor-side plate:
1. Loosen the 4 clamp bolts about a quarter turn (2.5 mm hex key).
2. Turn the jack screw at the front (2.5 mm hex key): clockwise to tighten, counter-clockwise to loosen. Stop when the belt is just tight enough not to skip (see the motor belt test below), then turn about 1/8 turn more. If the lug touches the yoke before that, the mount is at the end of its travel: tell the design lead (the motor position needs a trim), and don't force it.
3. Retighten the clamps.
4. Put blue threadlocker on the clamps and the jack screw. Draw a paint line across the lug and the side plate, so you can see at a glance if it ever moves.
Jackshaft belt tensionNone needed. The shafts are a fixed distance apart, set once with the belt test plate before cutting.
Clamp bolt 2.5 mm key Jack yoke (printed) bolted to the side plate 2 clamp bolts through the lug 2.5 mm key Jack screw, 2.5 mm key clockwise = belt tighter Tension lug (printed) clamped to the adapter plate Window: 4 motor screws (reach them with the pulley off) Adapter plate (dashed) behind the side plate Clamp bolt 2.5 mm key ← belt to the 48T on the main shaft motor slides ±2 mm front of turret →

The motor mount slides ±2 mm. That changes the belt's center distance by ±1.4 mm, because the slide runs straight forward, 46° off the belt's line (cos 46° = 0.69). That's far more than a belt or a cut is ever off. Belt tension pulls the lug back against the jack screw, so the belt can't go slack even if a clamp bolt loosens. Motor swap: loosen the clamps, back off the jack screw, and slide the 16T pulley off with the belt. Reach the 4 motor screws through the window in the side plate. The adapter never comes off. To take the motor out with the crossbars on: after the 4 screws, slide it about 30 mm toward the middle (off the adapter), a little forward, then down out of the bottom of the turret. The flair plate blocks a straight move forward.

Shooting at the HIVE from anywhere

Figure 2 (under "Design decisions", above) assumes the robot faces the up-CELL square-on (straight in front of it), with nothing else in the way. Here the ball's flight is simulated in 3D from every direction, and the model includes the whole HIVE Structure:

Sizes are measured from the official field CAD. They match manual figures 9-8 to 9-11 within about 3 mm, except the frame's legs and crossbar, which sit about 2.5 in below the pivots. TU01 corrected the lowest point of a down-CELL to 30.6 in, and the CAD agrees (30.65 in).

Each spot in the table is the worse of the two ways the other HIVE can be tipped, on the side away from the other HIVE.

Each box in the table gives the best launch angle, and the speed room at that angle (how far the speed can be off and still score). The top line is Pollen; the grey line is Nectar. "30° to the side" means the robot is 30° off square-on, still aiming at the middle of the opening.

From the openingSquare-on30° to the side60° to the side
0.50 m83°, ±5.9%
84°, ±5.3%
83°, ±6.2%
84°, ±5.4%
robot can't be here (frame base)
0.75 m75°, ±5.2%
74°, ±4.9%
73°, ±4.9%
76°, ±4.6%
83°, ±6.5%
84°, ±5.6%
1.00 m69°, ±4.8%
70°, ±4.5%
69°, ±4.5%
70°, ±4.2%
83°, ±5.3%
74°, ±4.7%
1.50 m61°, ±4.4%
62°, ±4.2%
63°, ±4.2%
62°, ±3.9%
63°, ±4.2%
60°, ±3.9%
2.00 m55°, ±4.1%
58°, ±3.4%
57°, ±3.9%
58°, ±3.2%
57°, ±3.7%
58°, ±3.4%
2.50 m55°, ±3.2%
58°, ±2.7%
55°, ±3.2%
58°, ±2.7%
55°, ±3.2%
58°, ±3.0%

What the indexer must do

The turret only launches. The indexer below it stores balls and feeds them up through the turret's open center. It isn't designed yet. But the turret's simulations and the firing gate (the code that waits for the right wheel speed before shooting) depend on it doing these things:

RequirementWhy
Hold the next ball, then release exactly one when the code says. While it waits, the ball must not touch the flywheels.This is the mechanical half of the firing gate. The code fires only when the encoder shows the wheels within ±1% of target speed, which slows long Nectar shots to about 3 per second. A belt that feeds whenever a ball is there can't be controlled this way.
Pop each ball up at 3 m/s or faster (measured 30 mm below the turret bearing's bottom), the same every time, for both balls.The feed simulation checked every hood angle from 0° to 25° (in 5° steps), pops from 1.6 to 4.4 m/s, new, medium and worn balls, and the robot speeding up or braking at up to 8 m/s². With the rear guard, every ball popped at 2.4 m/s or faster is shot in every one of those cases, so 3 m/s leaves some margin. A pop that's too slow just falls back down the feed hole, and the indexer can pop it again. The guard stops balls from dropping behind the feed hole. Test the real indexer with the hood flat and the robot moving.
Have the next ball ready 0.25 s after a shot, and keep the delay from "fire" to the ball reaching the wheels the same every time. Measure it.0.25 s is the fastest rate (4 per second) the design plans for. A steady delay lets the code time the release.
Feed straight up the turret's center line, centered, through the turret bearing's 105 mm bore, with the turret facing any direction (±190°). The path must fit a 91 mm Nectar (it clears the bore by only 6.8 mm each side, so the indexer must center it) and still keep a 71 mm Pollen centered.The indexer is on the robot and doesn't turn with the turret, so the ball has to arrive right on the line the turret spins around.
Tell the code which ball is next: a sensor at the gate that sees a ball is there, and a color sensor (Pollen is yellow; Nectar is red or blue).Pollen and Nectar need different wheel speeds and hood angles. The code sets both, and waits for the hood to move, before it opens the gate.
Fit under the turret together with the drivetrain and intake: 258 mm (10.2 in) below the robot surface the turret bearing bolts to. Store up to 4 balls behind the gate.The 18 in starting height (figure 3).
Count toward the motor and servo limit (rule R503: 8 motors and 8 servos for the whole robot).The turret already uses 2 motors (flywheel and turret) and 1 servo (hood).

Once it's built, test these: 50 releases in a row with no doubles and no misses; pop speed, measured from slow-motion video; release delay; and a mixed Pollen/Nectar order.

Check before cutting

Fit tests: do these first

The jackshaft belt runs on a fixed center distance (shaft-to-shaft spacing). Its two shafts sit in the hood carriers with no slots and no tensioner, so they have to be exactly the right distance apart: 145.00 mm for the 410 mm belt (math card 8). Real belts, and real laser cuts in plywood, can each be a few tenths of a millimeter off. Too far apart, and the belt is very hard to put on and wears out the bearings. Too close, and it can skip teeth under load. A small test plate settles this before the real plates get cut. The motor belt is on the adjustable mount, so its test plate is optional. Cut it only if you want to double-check the 340 mm belt before the real plates.

-0.4 -0.2 0 +0.2 +0.4 MOTOR BELT 315 · C 73.06 mm -0.4 -0.2 0 +0.2 +0.4 JACK BELT 410 · C 145.00 mm
  1. Cut the fit test first (fit_test.dxf). It has rows of bearing holes, square-nut pockets, dowel holes and M4 holes, each row in 0.1 mm steps with engraved labels. Cut it in the team's plywood, and try the real bearings, nuts, dowels and screws in each row. Pick the best-fitting size in each row. The design lead sets those sizes in the model before any real plate is cut. Also measure the team's sheets and a glued test piece with calipers, so the design lead can set the plate thickness to match.
  2. Cut the jackshaft test plate next (belt_test_jack.dxf; the motor one, belt_test_motor.dxf, is optional). Cut it twice in the same plywood as the real plates, and glue the two layers together with dowels, just like a real plate. Hole size and kerf (the width of material the laser burns away) are part of what you're testing. Each plate has one fixed hole and five engraved positions: −0.4, −0.2, 0, +0.2 and +0.4 mm from the calculated distance.
  3. Motor belt plate (optional): press a 1611 bearing into the center hole. Slide in a main shaft with the 48T pulley on its Sonic Hub. Bolt the flywheel motor, with its 16T pulley, to one of the five mounts, and fit the 315 mm belt.
  4. Jackshaft belt plate: put 1611 bearings in the fixed hole and in one of the five holes. Put a shaft and a 24T pulley in each, and fit the 410 mm belt.
  5. Judge each position. In the right one, the belt goes on with firm thumb pressure but no tools. Pressing the middle of the long side with one finger moves it about 1–2 mm. Spin it by hand: there should be no clicking. For the motor belt, this test is required on the first build (on the real turret, with the real 315 mm belt and pulleys): run the motor at full power and stop it hard ten times, then fire a few Nectars. It must never skip a tooth. goBILDA gives no tension number for these belts, so "never skips, plus 1/8 turn" is our tension rule. Write down how many turns of the jack screw are left in each direction. If one position is loose and the next is tight, pick the tight one, because belts loosen slightly as they wear in.
  6. Enter the result. Put the engraved number of the best jackshaft position into turret.py as JACK_C_TRIM (for example JACK_C_TRIM = 0.2). Rebuild, and only then cut the hood carriers. The model moves the jackshaft by exactly that much and re-checks everything. If you tested the motor belt too, enter its number as MOTOR_C_TRIM. That centers the motor mount's slide range on it.
  7. If no jackshaft position works (all five too loose or too tight), tell us before cutting. The backup plan is a different stock belt length, with the carrier redesigned around it.

What it costs

Prices checked 2026-09-28, before shipping and tax. The frame is cut from plywood on the team's laser and most other parts are printed, so the only cost for those is the material.

WhatFromCost
Parts and materialsgoBILDA$607.42
Parts and materialsREV Robotics$65.50
Parts and materialsAndyMark$43.20
Parts and materialsMcMaster-Carr$79.29
Parts and materialsAmazon$72.29
Parts and materialsBambu Lab$42.99
Parts and materialsHardware store$1.00
Total$911.69

Not counted: the Limelight 3A camera (the team already owns one; $189.00 if you need another), and the PETG for the printed parts (crossbars, L-brackets, rear guard, camera mount, switch arm and so on: about 1 kg, about $20). The PA-CF spool covers the parts printed in carbon-fiber nylon: the swing arms, pulleys, spacers, servo insert and motor adapter. Cable management isn't counted yet: it is chosen after a bench test (see the design log).

Every part and material
PartBuyPriceLine
3208-0004-0001 Gear-Driven Turret (2.75:1 Ratio, 105mm ID)1 × each$169.99$169.99
5203-2402-0001 5203 Series Yellow Jacket Motor (1:1 Ratio, 24mm Length 8mm REX® Shaft, 6000 RPM, 3.3 - 5V Encoder)1 × each$54.99$54.99
5203-2402-0019 5203 Series Yellow Jacket Planetary Gear Motor (19.2:1 Ratio, 24mm Length 8mm REX Shaft, 312 RPM, 3.3 - 5V Encoder)1 × each$54.99$54.99
2000-0025-0002 2000 Series Dual Mode Servo (25-2, Torque)1 × each$36.99$36.99
1922-0025-0036 8mm REX® Servo Shaft (25 Tooth Spline, 36mm Length)1 × each$10.99$10.99
2303-4008-0020 2303 Series Steel, MOD 0.8 Pinion Gear (8mm REX® Bore, 20 Tooth)1 × each$10.59$10.59
2302-0032-0108 2302 Series Aluminum, MOD 0.8, Hub Mount Gear (32mm Bore, 108 Tooth)1 × each$16.99$16.99
2312-0414-0060 60 Tooth Hub-Mount Gear (MOD 0.8, 4mm Thick Acetal)1 × each$3.79$3.79
2312-0414-0048 48 Tooth Hub-Mount Gear (MOD 0.8, 4mm Thick Acetal)1 × each$3.19$3.19
3417-4008-0016 3417 Series 5mm HTD Pitch Set-Screw Pinion Timing Belt Pulley (8mm REX® Bore, 16 Tooth)1 × each$9.99$9.99
3412-0009-0410 5mm Pitch HTD Timing Belt (9mm Width, 410mm Pitch Length, 82 Tooth)1 × each$6.09$6.09
3412-0009-0315 5mm Pitch HTD Timing Belt (9mm Width, 315mm Pitch Length, 63 Tooth)1 × each$5.39$5.39
REV-11-3174 Through Bore Encoder V21 × each$48.00$48.00
3613-0014-0096 GripForce Gecko™ Wheel (14mm Bore, 96mm Diameter, 30A Durometer)3 × each$9.99$29.97
3613-0014-0072 GripForce Gecko™ Wheel (14mm Bore, 72mm Diameter, 30A Durometer)3 × each$8.99$26.97
1309-0016-4008 1309 Series Sonic Hub (8mm REX® Bore)6 × each$7.99$47.94
2106-4008-2400 8mm REX® Shaft with E-Clip (Stainless Steel, 240mm Length)1 × each$8.89$8.89
2106-4008-1680 8mm REX® Shaft with E-Clip (Stainless Steel, 168mm Length)2 × each$7.19$14.38
1611-0514-4008 1611 Series Flanged Ball Bearing (8mm REX® ID x 14mm OD, 5mm Thickness) - 2 Pack5 × 2-pack$5.99$29.95
2910-0920-4008 2910 Series Aluminum Clamping Collar (8mm REX® ID x 20mm OD, 9mm Length)3 × each$4.99$14.97
3122-0002-0001 Limelight 3A Smart Camera0 × each$189.00$0.00
am-4666 0.5 in. Wide 30 in. Long Constant Force Spring6 × each (one 0.5in x 30in spring)$7.20$43.20
REV-31-1462 Magnetic Limit Switch1 × each (switch + 2 magnets per BOM)$17.50$17.50
2800-0004-0012 M4 x 12 socket head (need 36: deck to turret bearing 8, crossbars + rear guard tube 6, rear guard anti-turn 2, camera 4, L-bracket feet 8, ...)1 × 25-pack (250-pack $17.99)$3.59$3.59
2800-0004-0016 M4 x 16 socket head (need 2)1 × 25-pack (250-pack $18.99)$3.79$3.79
2800-0004-0020 M4 x 20 socket head (need 8)1 × 25-pack$3.99$3.99
2800-0004-0030 M4 x 30 socket head (need 2: encoder ears, nyloc behind)1 × 25-pack$4.29$4.29
2800-0004-0050 M4 x 50 socket head (need 2: encoder legs, nyloc outside)1 × 25-pack$5.19$5.19
91290A192 M4 x 80 socket head, black-oxide alloy 12.9 (need 8: Gecko stacks)1 × 10-pack$9.31$9.31
2802-0004-0008 M4 x 8 button head (need 6: flywheel motor 4, spring ends 2)1 × 25-pack$3.19$3.19
2802-0004-0010 M4 x 10 button head (need 14: sync gears 8, motor clamps 2, stop cams/bumpers 4)1 × 25-pack$3.39$3.39
2802-0004-0016 M4 x 16 button head (need 5: hood gear 4, motor jack screw 1)1 × 25-pack$3.79$3.79
2802-0004-0020 M4 x 20 button head (need 6: 48T pulley 4 + clamp 2)1 × 25-pack$3.99$3.99
2802-0004-0025 M4 x 25 button head (need 10: robot mount 8, spring-drum sleeves 2)1 × 25-pack$4.19$4.19
2802-0004-0045 M4 x 45 button head (need 4: hood guide bolts)1 × 25-pack$4.89$4.89
91294A192 M4 x 12 flat head (need 2: spring anchors)1 × 100-pack$6.38$6.38
2812-0004-0007 M4 nylock nut (need 20)1 × 25-pack (250-pack $14.99)$2.99$2.99
97258A102 M4 thin square nut, DIN 562, 18-8 stainless (7 mm wide, 2.2 mm high) (need 14: deck 8, jack yoke 2, motor adapter 4)1 × 50-pack$14.00$14.00
94459A150 M4 brass heat-set insert for plastic, 4.7 mm long, 5.6 mm hole (need 35)1 × 50-pack$10.82$10.82
94459A130 M3 brass heat-set insert for plastic, 4.3 mm long, 4.0 mm max hole (need 4: hood servo ears in the printed servo insert)1 × 50-pack$10.91$10.91
91292A123 M3 x 20 socket head, 18-8 SS (need 4: limit switch 2, home magnet 2)1 × 100-pack$9.69$9.69
2800-0003-0008 M3 x 8 socket head (need 4: hood servo ears)1 × 6-pack$3.09$3.09
93625A223 M3 x 0.5 nylon-insert locknut, black-oxide 18-8 SS (need 4: switch 2, magnet 2)1 × 10-pack$5.40$5.40
91390A100 M3 x 6 cup-point set screw, alloy steel, DIN 916 (need 2: printed 24T pulleys)1 × 100-pack$7.10$7.10
91828A211 M3 hex nut, 18-8 stainless, 5.5 mm wide x 2.4 mm high, DIN 934 (need 2: printed 24T pulleys)1 × 100-pack$5.68$5.68
B08429ZRB1 Woodpeckers 3 mm (1/8 in) Baltic birch plywood, 12 x 20 in, B/BB grade, box of 20 (need ~10: 9 for the plates + fit/belt test pieces)1 × box of 20 sheets$67.31$67.31
72100 Bambu Lab PA6-CF filament, Black, 1.75 mm, 0.5 kg with spool (need ~300 g)1 × 0.5 kg spool$42.99$42.99
B0002YQ378 Titebond III Ultimate Wood Glue, 4 oz1 × 4 oz bottle$4.98$4.98
generic 1/8 in x 36 in hardwood dowel (cut into 6 mm alignment pins)1 × each$1.00$1.00

Printed prototype

Before buying anything or cutting plywood, print the whole turret to see how it goes together. Everything is printed. The plates are full size (a 300 mm print bed fits every one). The bought parts are replaced by printed stand-ins made from goBILDA's own 3D models, so gears, pulleys, hubs and wheels have their real teeth and hole patterns. The motors, servo, encoder and camera are dummies, so it can't shoot. It takes about 1.3 kg of PETG (or PLA). Each stand-in lists the real part to buy later.

  1. Print one step at a time, in order. Each folder in the prototype download is one build step, so you can assemble as prints come off. File names end in the quantity (__x2 = print two).
  2. Settings: use PETG, and print a test gear and shaft first. See "Print settings" just below. The same notes are in PROTOTYPE.md in the download.
  3. Fit: the printed shafts are 0.25 mm undersize, so printed parts slide on. If a hole is tight, open it up with a file. Bearings are printed as plain bushings (simple sleeves) that spin. The printed plates are one solid piece, with no square nuts. Their small 3.3 mm holes take M4 screws directly: the screw cuts its own threads. Don't overtighten.
  4. Still needed: the M4 screws and nuts from the parts list (you'll reuse them later), the heat-set inserts, and the two belts if you want to see the drive turn. Rubber bands can stand in for the constant-force springs.
  5. Assemble with "Assembly order and adjustments" above, using the printed stand-ins.

Filament and printers

Settings by part type

Each file in the table further down says which type it is.

TypeUsed forLayerWalls / infillHow to place it
platebase plate, deck, side plates, hood carriers, swing arms0.20 mm4 walls, 30% gyroidflat on the bed
geargears, pulleys, the turret ring, hubs, collars, servo shaft0.12 mm6 walls, 100% infillflat, teeth vertical; no supports
shafthex shafts0.16 mm100% infilllying on a flat side of the hex, with a brim
wheelthe 96 mm and 72 mm Gecko wheel stand-ins0.20 mm3 walls, 15% infillflat
dummymotors, servo, encoder, camera, home switch (look only)0.28 mm2 walls, 10% infillany; supports where the slicer asks
standardeverything else0.20 mm3 walls, 25% infillthe flattest face down

What to print, step by step

StepFileQtyPrint asReal part (buy later)
01 · Base
~13 g
PETG_switch_arm1standardthe real one is this print (PA-CF)
PETG_home_switch_standin1dummyREV-31-1462
02 · Ring and deck
~152 g
PETG_deck1platedeck_L1.dxf + deck_L2.dxf (plywood)
PETG_deck_shim1standardthe real one is this print
PETG_home_flag1standardthe real one is this print
03 · Frame
~351 g
PETG_side_plate_servo1plateside_plate_servo_L1.dxf + side_plate_servo_L2.dxf (plywood)
PETG_side_plate_motor1plateside_plate_motor_L1.dxf + side_plate_motor_L2.dxf (plywood)
PETG_servo_insert1standardthe real one is this print, in PA-CF
PETG_l_bracket4standard
PETG_crossbar2standard
PETG_rear_guard1standard
04 · Flywheel motor mount
~45 g
PETG_motor_adapter1standardthe real one is this print, in PA-CF
PETG_motor_lug1standard
PETG_motor_yoke1standard
PETG_flywheel_motor_standin1dummy5203-2402-0001
05 · Hood and shafts
~606 g
PETG_hood_carrier_servo_side1platehood_carrier_servo_L1.dxf + hood_carrier_servo_L2.dxf (plywood)
PETG_hood_carrier_motor_side1platehood_carrier_motor_L1.dxf + hood_carrier_motor_L2.dxf (plywood)
PETG_swing_arm_servo_side1platePA-CF_swing_arm_servo.stl / PA-CF_swing_arm_motor.stl (the real ones are prints)
PETG_swing_arm_motor_side1platePA-CF_swing_arm_servo.stl / PA-CF_swing_arm_motor.stl (the real ones are prints)
PETG_hood_gear_108T1gear2302-0032-0108
PETG_servo_pinion_20T1gear2303-4008-0020
PETG_servo_shaft1gear1922-0025-0036
PETG_hood_servo_standin1dummy2000-0025-0002
PETG_gear_60T1gear2312-0414-0060
PETG_gear_48T1gear2312-0414-0048
PETG_pulley_24T2gear3417-4008-0024
PETG_pulley_16T1gear3417-4008-0016
PETG_pulley_48T1gear3415-0014-0048
PETG_sonic_hub5gear1309-0016-4008
PETG_gecko_963wheel3613-0014-0096
PETG_gecko_723wheel3613-0014-0072
PETG_collar3gear2910-0920-4008
PETG_shaft_main_239mm1shaft2106-4008-2400
PETG_shaft_jack_upper_159mm2shaft2106-4008-1680
PETG_bearing_1611_standin10standard1611-0514-4008 (2-pack)
PETG_spacer_1mm3standard1500-0010-0008
PETG_spacer_2mm3standard1522-0010-0020
PETG_spacer_3mm1standard1522-0010-0030
PETG_spacer_4mm3standard1522-0010-0040
PETG_spacer_6mm1standard1522-0010-0060
PETG_spacer_7mm1standard1522-0010-0070
PETG_spacer_8mm1standard1522-0010-0080
PETG_spacer_9mm2standard1522-0010-0090
PETG_spacer_12mm3standard1522-0010-0120
PETG_stop_cam2standard
PETG_cf_spring_drum2standard
PETG_cf_axle2standard
PETG_guide_spacer4standard
PETG_cf_anchor2standard
PETG_cf_clamp2standard
PETG_arm_bumper_core2standard
PETG_arm_bumper_ring2standard
06 · Last
~120 g
PETG_encoder_bracket1standard
PETG_encoder_bracket_leg2standard
PETG_encoder_sleeve1standard
PETG_limelight_mount1standard
PETG_front_plate1standard
PETG_encoder_standin1dummyREV-11-3174
PETG_limelight_standin1dummy3122-0002-0001

What students can learn from this turret

Building this turret touches almost every part of engineering. Each idea below points to where it shows up on this page, so you can see it on the real design.

Physics of the shot

  • Projectile motion with air drag. The best launch angle isn't 45°. For a raised target, the angle that needs the least speed is halfway between aiming straight at the target and aiming straight up (figure 7, figure 1).
  • Tolerance budgets. A shot has only about ±3–5% of room for speed error (figure 2). The springs, the encoder and the heavy flywheel all exist to stay inside that budget.
  • Stored energy. One motor is enough because a heavy flywheel stores energy between shots, like a battery (math card 6).

Mechanisms

  • Gear and belt ratios trade speed for force: 3:1 to the flywheel, 5.4:1 on the hood, 2.75:1 on the turret (How it works).
  • Pivot about the driving shaft, so belts and gears never lose their spacing as parts move (see "Mechanical ideas" below).
  • Constant force instead of a fixed position: springs set the squeeze, so new and worn balls get treated alike.
  • Backspin from unequal wheel speeds (the 60:48 gears, math card 4).

Structures and materials

  • Load paths. Forces that push along a plate barely bend it; forces that push through it do. That's why 6 mm plywood is enough (Design decisions).
  • Stiffness grows fast with thickness: a plate twice as thick is about 8 times stiffer against bending through it.
  • Laminating: two thin layers glued with the grain crossed, with hidden features (square-nut pockets, the servo insert's lip) between them.
  • Design for the material: wood can't hold threads (so square nuts) and crushes under countersinks (so counterbores). Printed parts need heat-set inserts with enough plastic around them.

Designing for making and fixing

  • Manufacturing limits: the laser's kerf and minimum web width, the printer's bed size, print orientation.
  • Test before you commit: the fit test coupon, the belt test plate, test-fitting a printed pulley on its belt (Check before cutting). Measure, then set the design to match what your tools really make.
  • Replaceable wear parts: the printed pulleys and spacers are meant to be reprinted and swapped, with spares.
  • Access: every in-season adjustment must be reachable on the fully built turret (Assembly order and adjustments).

The engineering process

  • Simulation vs. testing: the model predicts ball paths, collisions and the camera's view, but only a real test can prove the ball squeeze or a glue joint.
  • Versions and a design log: older designs are kept, and every decision is written down with its reason.
  • Peer review: an outside review found real mistakes three rounds in a row. Every design benefits from a second set of eyes.
  • Make vs. buy: making most parts in-house cut the cost from about $1,556 to about $796, while still buying the parts where precision or strength matters most (What it costs).

Mechanical ideas in this turret

A closer look at the mechanical tricks. A good exercise: find each one on the real turret and explain why it's there.

Keep drives steady while things move

  • Pivot about the driving shaft (the jackshaft trick). The hood tilts around the main shaft, and the jackshaft rides on the hood. So the distance between the main shaft and the jackshaft never changes, and their belt never goes slack or too tight at any hood angle. The swing arm uses the same trick one level down: it pivots on the jackshaft, so its gears stay in mesh however far a ball pushes it (figure 4).
  • A rolling cable loop (one of the cable options). A cable ribbon makes a U-turn that rolls at less than half the turret's speed, like a gear rolling between two others. The cables bend but never slide or twist, so the turret could turn ±190° without a slip ring (math card 9).

Passing power along

  • Speed vs. force. 3:1 from motor to flywheel gives torque for spin-up; 5.4:1 on the hood gives force and fine angle control; 2.75:1 on the bought turret bearing with a slow 312 rpm motor gives precise aiming.
  • Counter-rotation. Two meshed gears spin opposite ways, so the two flywheels spin toward each other and pinch the ball.
  • Spin from a speed difference. The 60:48 gears run the upper wheel about 6% slower, which puts mild backspin on the ball.
  • Drive through shape, not friction. The hex (REX) shafts carry the torque. Set screws and collars only stop parts sliding along the shaft.

Forces, moments and reactions

  • Reaction torque. The upper wheel is driven through gears, so when it grips a Nectar, the drive itself twists the arm open. The simulation found this; stronger springs and a bumper fixed it. Newton's third law in a real mechanism.
  • Constant-force springs pull the same amount anywhere in their travel. A normal spring pushes harder the more it's squeezed.
  • Moment arms. The springs pull on the arm's short tail to hold the wheel on the long end, like a lever.

Stops, limits and adjustments

  • Hard stop vs. soft limit. Guide pins in curved slots physically stop the hood. The turret's ±190° limit lives in code, with a home switch to find zero.
  • Eccentric cam. Turning a round cam on an off-center screw moves the arm's stop by a tiny, controlled amount: that's how the squeeze is set for worn balls.
  • Jack screw. A screw pushes the motor along its slots to set the belt tension precisely; then the clamp bolts lock it.
  • Buy, don't build, the hard part. The turret bearing must be stiff and smooth for good aiming, so it is a bought, factory-made part; the team's effort goes into the shooter.
  • Soft stops. The TPU bumper catches the swing arm, and the rear guard catches stray balls, instead of letting things crash.

Bearings, shafts and fits

  • Only load what's meant to turn. Spacers touch only a bearing's inner ring, so it can spin freely.
  • Locating parts along a shaft. Bearing lips, spacers, hubs and collars stack up so each part sits in an exact spot (Shaft stacks).
  • Preload. The goBILDA turret bearing's balls are preloaded at the factory, so it turns smoothly without rattling.
  • Fits. A press fit holds a bearing, a clearance fit lets a part slide on, and the fit test finds what your laser actually cuts.

Fasteners

  • Grip length and thread engagement. A screw must reach through its nut with a thread or two to spare, without bottoming out in a blind hole. The outside review caught screws that were too short.
  • Threads that suit the material: square nuts in wood, heat-set inserts in plastic, locking nylon nuts where vibration could shake things loose.

The engineering math

The numbers behind the design, worked out step by step. Every value comes from the same model and simulations as the rest of this page, so they always agree. Each card starts with a question, explains every symbol, and ends with what the answer means for the robot. Most cards need only algebra and a little trigonometry. Card 2 uses one derivative (a calculus idea).

1 · How fast is the flywheel's surface?

The motor spins at [[motor_rpm]] rpm. How fast does the surface of the wheel move? That's roughly how fast the ball leaves.

The belt runs from a [[pul_small]]-tooth pulley on the motor to a [[pul_big]]-tooth pulley on the wheel shaft. The belt moves both pulleys by the same number of teeth. So the big pulley turns slower, by the ratio of the tooth counts:

\[ G = \frac{N_\text{big}}{N_\text{small}} = \frac{[[pul_big]]}{[[pul_small]]} = [[gear]] \qquad n_\text{wheel} = \frac{[[motor_rpm]]\ \text{rpm}}{[[gear]]} = [[n_wheel]]\ \text{rpm} \]

A point on the rim moves at \( v = \omega r \). Here \( \omega \) is the spin rate in radians per second (\( \omega = 2\pi n / 60 \)), and \( r \) is the radius. The wheel is 96 mm across, so \( r = [[r1_mm]] \) mm:

\[ v_\text{free} = \frac{2\pi \cdot [[n_wheel]]}{60} \times [[r1_m]]\ \text{m} = [[v_free]]\ \text{m/s} \]

What it means: we aim for [[v_target]] m/s, which is [[pct_free]]% of the free speed (the top speed with no load), or about [[n_target]] rpm at the wheel. A motor can't hold its free speed while it's doing work. Aiming lower leaves room for a weaker battery, and for the speed control to catch up after each shot.

2 · Where the 45° rule comes from

Which launch angle reaches a target with the least speed? (This card ignores air drag. The simulations include it.)

Launch from the starting point (the origin) at speed \( v \) and angle \( \theta \). The target is \( x \) meters across and \( y \) meters up. Gravity is \( g = 9.81\ \text{m/s}^2 \). The height of the ball at distance \( x \) is:

\[ y = x\tan\theta - \frac{g x^2}{2 v^2 \cos^2\theta} \]

Solve for \( v^2 \) and use \( 2\cos^2\theta = 1 + \cos 2\theta \) and \( 2\sin\theta\cos\theta = \sin 2\theta \):

\[ v^2 = \frac{g x^2}{x \sin 2\theta - y\cos 2\theta - y} \]

The smallest \( v \) comes from the biggest bottom part of the fraction (the denominator). To find where it's biggest, set its derivative (its rate of change as \( \theta \) changes) to zero:

\[ 2x\cos 2\theta + 2y \sin 2\theta = 0 \;\;\Rightarrow\;\; \tan 2\theta = -\frac{x}{y} \]

Solve that for \( \theta \). (Pick the answer that makes the denominator biggest, not smallest.)

\[ \theta^* = 45^\circ + \tfrac{1}{2}\varphi, \qquad \varphi = \arctan\frac{y}{x} \]

Here \( \varphi \) is the angle of a straight line from the launcher up to the target. On level ground \( y = 0 \), so \( \varphi = 0 \) and \( \theta^* = 45^\circ \). That's the coach's rule. The least speed works out to \( v_\text{min}^2 = g\,(y + \sqrt{x^2 + y^2}) \).

Our case: a cell [[ex_x]] m away whose opening is [[ex_y]] m above the launcher:

\[ \varphi = \arctan\frac{[[ex_y]]}{[[ex_x]]} = [[ex_phi]]^\circ \qquad \theta^* = 45^\circ + \frac{[[ex_phi]]^\circ}{2} = [[ex_theta]]^\circ \] \[ v_\text{min} = \sqrt{9.81\,([[ex_y]] + \sqrt{[[ex_x]]^2 + [[ex_y]]^2})} = [[ex_vmin]]\ \text{m/s} \]

What it means: the full simulation, with drag and the real tilted opening, picks [[ex_best]]°, almost exactly what the rule says. There's a bonus. Near the best angle, the needed speed barely changes, because the speed curve is flat at its lowest point. Being 5° off (either way) needs only [[ex_v_p5]] m/s, [[ex_pct5]]% more speed. So a small hood error costs little: the flywheel speed only has to change a little to make up for it. (This card ignores drag and treats the opening as a point. It doesn't promise that a shot at the same speed still scores.)

3 · Why a few percent of speed matters

If the ball leaves [[sens_pct]]% too fast, how far off does it land?

On level ground, a thrown object's range (how far it goes) is \( R = v^2 \sin 2\theta / g \). Range grows with the square of speed. For small changes, \( d(v^2) = 2v\,dv \), so a speed error counts double:

\[ \frac{\Delta R}{R} \approx 2\,\frac{\Delta v}{v} \qquad [[sens_pct]]\%\ \text{speed error} \;\Rightarrow\; [[sens_range]]\%\ \text{range error} \]

At [[sens_d]] m, [[sens_range]]% is [[sens_cm]] cm, about the size of the part of the opening a ball can actually use.

What it means: figure 2 shows the real opening allows about ±3.2–5% for Pollen, from 2.5 m in to 0.75 m (Nectar is a little tighter). So the exit speed (how fast the ball leaves) has to stay within a few percent from shot to shot, and as balls wear. That's the job of the encoder, the constant-force springs and the flywheel's stored energy (cards 5 and 6).

4 · Backspin from a gear pair

How much spin do the [[zj]]:[[zs]] gears put on the ball?

The jackshaft turns at the same speed as the main wheel (1:1 belt). Its [[zj]]-tooth gear drives a [[zs]]-tooth gear on the upper wheel, so the upper shaft turns \( [[zj]]/[[zs]] = 1.25 \) times as fast. The upper wheel is smaller, though (radius [[r2_mm]] mm vs [[r1_mm]] mm). Comparing surface speeds \( v = \omega r \):

\[ \frac{v_\text{upper}}{v_\text{main}} = \frac{[[zj]]}{[[zs]]}\times\frac{[[r2_mm]]}{[[r1_mm]]} = [[ratio]] \qquad \Delta v = (1 - [[ratio]])\times [[v_target]] = [[dv]]\ \text{m/s} \]

The ball is squeezed between two surfaces moving at different speeds, so it rolls. Its spin is about the speed difference divided by its diameter \( d \) (the distance across the ball):

\[ \omega_\text{ball} \approx \frac{\Delta v}{d} = \frac{[[dv]]}{0.0711} = [[spin_p_rad]]\ \text{rad/s} \approx [[spin_p]]\ \text{rpm (Pollen)}, \quad [[spin_n]]\ \text{rpm (Nectar)} \]

What it means: the contact simulation (with the real swing arm) gives about +50 rpm on average across all its shots, about the same. That's gentle backspin. It's enough to help the ball settle on the cell's sloped floor instead of bouncing out, but not enough to bend its flight.

5 · How hard the wheels squeeze

Stacked constant-force springs pull on the upper wheel's arm. How much force reaches the ball?

The arm pivots on the jackshaft, like a seesaw. The wheel's axle is [[arm_l]] mm from the pivot. The springs attach at the arm's tail, [[arm_tail]] mm from it. The arm stays still when the turning effects on each side balance (turning effect, or moment = force × distance):

\[ F_\text{pinch} \times [[arm_l]] = [[cf_total]]\ \text{N} \times [[arm_tail]] \;\;\Rightarrow\;\; F_\text{pinch} \approx [[pinch]]\ \text{N} \]

Here [[cf_total]] N is four springs of [[cf_n]] N (two stacked on each side).

A normal spring pushes harder the more it stretches (\( F = kx \)), so a big, firm ball would get squeezed harder than a small or worn one. A constant-force spring pulls the same amount wherever the arm is.

What it means: new and worn balls get about the same squeeze force. They don't get squashed the same number of millimeters: a softer ball squashes further under the same force. This simple lever math treats the forces as square (at 90°) to the arm. At the springs' real angles, the pull is a little lower when the arm is swung out. The gear drive also adds its own twist ("How it works", 4). So the real grip varies more than this suggests. In the simulation, new and worn balls leave within about 12–14% of each other for Pollen and 9–10% for Nectar.

6 · Stored energy: why one motor is enough

Each shot slows the wheels down. How long does the motor take to bring them back?

A spinning wheel stores energy \( E = \tfrac12 I\omega^2 \). Here \( I \) is the moment of inertia: how hard it is to speed up or slow down the spin. For this turret it's all the spinning parts together, measured at the main shaft: \( I = [[I]]\times10^{-4}\ \text{kg·m}^2 \). At full speed, \( \omega_0 = [[v_target]]/[[r1_m]] = [[w0]]\ \text{rad/s} \):

\[ E_0 = \tfrac12 \,( [[I]]\times10^{-4})\,([[w0]])^2 = [[E0]]\ \text{J} \]

A Nectar leaves with kinetic energy (energy of motion) \( \tfrac12 m v^2 = \tfrac12 (0.0413)(8.3)^2 = [[ke]]\ \text{J} \). In the simulation, each Nectar drops the wheels to [[v_dip]] m/s (\( \omega_1 = [[w1]] \) rad/s), which takes out:

\[ \Delta E = \tfrac12 I\,(\omega_0^2 - \omega_1^2) = [[E_take]]\ \text{J} \]

That's about [[take_x]]× the ball's own energy. Not all of the difference is wasted. Some goes into the ball's spin, some into squashing it and into slipping, and the motor adds energy during the shot. So this simple count can't split it up exactly. It only shows that one shot takes a noticeable bite out of the flywheel's energy.

A DC motor's power depends on its speed: \( P = \tau_s\,\omega_m\,(1 - \omega_m/\omega_f) \). Here \( \tau_s = [[tau_s]] \) N·m is the stall torque (twisting force when held still) and \( \omega_f = [[w_f]] \) rad/s is the free speed (top speed with no load). Power peaks at [[p_max]] W at half speed. A flywheel runs fast, at [[frac_hi]] of free speed, where the motor only makes [[p_hi]] W. That rises to [[p_lo]] W when the wheel slows after a shot. Using an average of about [[p_avg]] W:

\[ t_\text{recover} \approx \frac{\Delta E}{\bar P} = \frac{[[E_take]]\ \text{J}}{[[p_avg]]\ \text{W}} = [[t_rec]]\ \text{s} \;\;\Rightarrow\;\; \text{about } [[rate]]\ \text{Nectars per second} \]

What it means: this is a rough estimate. It assumes the motor gives its average power the whole time. It also ignores the energy the motor adds while the ball is still between the wheels. The simulation includes both. It shows four close Nectars leave within [[spread3]]% of each other at 3 per second, and within [[spread4]]% at 4 per second. The robot holds 4 balls, and 3–4 per second is plenty. So one motor does the job, with the firing gate spacing out long shots (see "Design decisions").

7 · How fast and how precisely the turret aims

How quickly can the turret swing around, and how finely can it point?

A [[pinion]]-tooth pinion (small gear) on the motor drives the [[ring]]-tooth ring gear: \( [[ring]]/[[pinion]] = [[ratio_t]]{:}1 \). The 312 rpm motor turns the turret at \( 312/[[ratio_t]] = [[turret_rpm]] \) rpm, a half turn in about [[t180]] s (not counting the time to speed up).

The motor's encoder counts [[cpr_motor]] steps per turn of its shaft, and the turret turns [[ratio_t]]× slower:

\[ [[cpr_motor]] \times [[ratio_t]] = [[counts]]\ \text{counts per turret turn} \;\Rightarrow\; \frac{360^\circ}{[[counts]]} = [[deg_count]]^\circ\ \text{per count} \]

How precise does it need to be? The opening is 20 in wide, so a Pollen's center can be up to [[half_w]] cm off-center and still fit. From 2.5 m away that's \( \arctan([[half_w_m]]/2.5) = \pm[[aim_deg]]^\circ \). That uses the opening's widest point, so it's a best case. Near the peaked top, the opening is narrower.

What it means: the encoder is far finer than needed. The real limits on aim are gear backlash (the small wiggle room between gear teeth) and knowing exactly where the robot is on the field.

8 · Belt length: finding the center distance

Belts only come in stock lengths. How far apart must the pulleys be for one to fit?

Take two pulleys with pitch diameters \( D_1, D_2 \) (the circle where the belt's teeth sit), with centers \( C \) apart. The belt length is:

\[ L = 2C + \frac{\pi\,(D_1 + D_2)}{2} + \frac{(D_2 - D_1)^2}{4C} \]

HTD 5 mm belts have a tooth every 5 mm, so a pulley's pitch circle has a diameter of \( D = N \times 5\ \text{mm} / \pi \): \( D_1 = [[d1]] \) mm and \( D_2 = [[d2]] \) mm. The design picks the stock [[belt]] mm belt and works out \( C = [[C]] \) mm. Check it:

\[ L = 2([[C]]) + \frac{\pi([[d1]] + [[d2]])}{2} + \frac{([[d2]] - [[d1]])^2}{4([[C]])} = [[L_calc]]\ \text{mm} \]

What it means: the motor mount's middle position is cut at exactly that distance. The adapter slides ±2 mm, which changes the center distance by about ±1.4 mm, so you can set the belt tension on the robot. The jackshaft belt uses the same formula (24T to 24T, 410 mm belt, \( C = 145.00 \) mm) but it can't slide. That's why its test plate matters.

9 · The cable loop's rolling fold

If the cables cross the joint in a rolling loop (one of the options), how far does the U-shaped fold move around its channel when the turret turns?

The ribbon lies along the drum (radius \( r_\text{in} = [[rin]] \) mm), folds, and comes back along the fixed wall (\( r_\text{out} = [[rout]] \) mm; example sizes for a channel around the turret). It never slides, so its length stays the same. An arc's length is radius × angle (in radians), so:

\[ L = r_\text{in}(\theta_U - \theta_\text{in}) + \pi r_b + r_\text{out}(\theta_U - \theta_\text{out}) \]

\( \theta_\text{out} \) is fixed, and \( \theta_\text{in} \) turns with the turret. (\( \theta_U \) is where the fold is, and \( r_b \) is the fold's radius.) Since \( L \) doesn't change, its derivative (rate of change) is zero. That gives:

\[ \frac{d\theta_U}{d\theta_\text{in}} = \frac{r_\text{in}}{r_\text{in} + r_\text{out}} = \frac{[[rin]]}{[[rin]] + [[rout]]} = [[u_ratio]] \]

What it means: the fold moves at [[u_ratio]] of the turret's speed, like a gear rolling between two others. Swinging the turret ±[[travel]]° moves the fold only [[u_travel]]° in total. So it never reaches either end of the [[cable_len]] mm ribbon.

10 · The height budget

How much room is left under the turret for the drivetrain, intake and indexer?

\[ \underbrace{[[lim]]}_{18''\ \text{start cube}} - \underbrace{[[margin]]}_{\text{margin}} - \underbrace{[[start_top]]}_{\text{turret, hood steep}} = [[base_max]]\ \text{mm} \]

After the start, the robot may be up to 29 in tall ([[match_lim]] mm). With the hood flattened for a long shot, the robot is at most \( [[base_max]] + [[match_top]] = [[robot_match]] \) mm ([[robot_match_in]] in).

What it means: the parts below the turret get [[base_max]] mm. Even the tallest position during the match is still far under the limit.

11 · How deep is a counterbore?

On the ball side of each hood carrier, a button-head screw sits in a counterbore (a round, flat-bottomed recess), so nothing sticks out into the ball's path. How deep is it, and how much wood is left under the head?

The laser can't cut halfway into a sheet. So the counterbore is an 8.2 mm hole cut right through the ball-side layer, and the other layer makes its floor. With 3.0 mm layers, the recess is 3.0 mm deep. An M4 button head (ISO 7380) is 2.2 mm tall:

\[ \text{gap} = 3.0 - 2.2 = 0.8\ \text{mm} \]

The plate is [[plate_t]] mm thick in the model. Take away the 3.0 mm recess, and the whole second layer (about 3 mm of wood) is left under the head.

What it means: the head sits 0.8 mm below the ball-side face, so it can't rub a ball. The head presses on the second layer, whose grain runs across the first, so the load is spread over the wood.

Words to know

New to shooters or to goBILDA parts? These are the terms this page uses, in plain language.

HIVE, cell, up-cell
The HIVE is the scoring structure. It's made of cells, boxes the balls go into. The HIVE tips 30° to one side, and an up-cell is a cell on the raised side, whose opening faces you and tilts 30° upward.
Pollen, Nectar
The two game balls. Pollen is 2.8 in (71 mm) and 25 g. Nectar is 3.6 in (91 mm) and 41 g. Both get softer over a season.
Turret
The part of the robot that spins around to aim, so the robot doesn't have to turn.
Flywheel
A spinning wheel that throws the ball. It's heavy on purpose, so it stores energy and doesn't slow down much when a ball goes through.
Pinch
The gap between the two wheels where the ball is squeezed and thrown. It's a little smaller than the ball.
Hood, hood angle
The tilting frame that holds the upper wheel. Tilting it changes the launch angle, which is the angle the ball leaves at.
Indexer
The mechanism below the turret that pushes one ball at a time up into the pinch.
Jackshaft
An in-between shaft that passes spin from one shaft to another. Here it carries the drive from the main wheel up to the upper wheel.
Swing arm
The arm holding the upper wheel. It pivots, so a bigger ball can push the wheel out of the way.
Constant-force spring
A coiled steel strip that pulls with almost the same force however far it's pulled out, unlike a normal spring, which pulls harder the more you stretch it.
Encoder
A sensor that counts rotation. It's used to measure how fast a wheel spins or which way the turret points.
Free speed, stall torque
A motor's speed with nothing slowing it, and its twisting force when it's held still. Real work happens in between.
rpm, rad/s
Two ways to measure spin. rpm is turns per minute. rad/s is radians per second (one turn = 2π radians), which is what physics formulas use.
Backspin
The ball spinning backward as it flies. A little helps it settle in the cell instead of bouncing out.
HTD belt, pulley
A toothed timing belt and pulley. These have a tooth every 5 mm. The teeth stop the belt slipping as long as it's tight enough; a loose belt can jump ("skip") a tooth under load.
Motor adapter, clamp bolts
The flywheel motor bolts to a small printed plate (the adapter) that can slide inside the side plate. Four clamp bolts lock it in place.
Jack screw, lug, yoke
The belt tightener. The lug is a printed block clamped to the adapter, so it moves with the motor. The yoke is a printed block bolted to the side plate in front of it. The jack screw goes through the yoke into the lug: turning it pulls the lug, and the motor, forward.
MOD 0.8 gear
"Module" measures tooth size: the gear's pitch diameter (the circle where it meets the other gear) ÷ its number of teeth, in mm. Gears only mesh with gears of the same module.
Center distance
The distance between two shaft centers. For a belt or gear pair it has to be exactly right.
REX shaft
goBILDA's 8 mm shaft with a rounded-hex shape, so pulleys and hubs can't spin on it.
Sonic Hub, collar, set screw
A hub bolts a wheel or gear to a shaft. A collar clamps onto a shaft to stop parts sliding along it. A set screw is a small screw that presses on the shaft to lock a part in place.
Bearing, inner / outer race, flange
A bearing lets a shaft spin in a plate. The inner ring (race) turns with the shaft, and the outer race stays in the plate. A flange is a lip that stops the bearing from pushing through the hole.
Spacer, shaft stack
A spacer is a short tube that holds parts apart on a shaft. The shaft stack is the full list of what goes on a shaft, in order.
Counterbore, countersink
A counterbore is a round, flat-bottomed recess, so a button-head screw's head sits flush with the surface. A countersink is a cone-shaped recess for a flat-head screw. The plywood plates use only counterbores, because a flat head would crush the wood; the one countersink is in the printed swing arm.
Heat-set insert
A small threaded brass sleeve that's melted into a 3D-printed part with a soldering iron, to give it strong threads.
Baltic birch plywood
A strong plywood made of many thin birch layers with almost no gaps inside. It cuts cleanly on a laser. We use 1/8 in (3 mm) sheets.
Laminate
A part made of layers glued together. Each frame plate is a laminate of two plywood layers, with the grain of one turned 90° to the other so it's strong in every direction.
Dowel
A small wooden pin. Three 1/8 in hardwood dowels go through matching holes in both layers of a plate, so the layers line up exactly while the glue dries.
Square nut
A thin nut with four flat sides. Pressed into a square pocket in the wood, it can't turn, so a screw can thread into it. It gives the plywood the strong threads wood can't hold by itself.
PA-CF
Nylon (PA) filled with short carbon fibers (CF): a stiff, tough 3D-printing material. It needs a hardened nozzle and dry filament.
DXF, STL, STEP
File types. DXF is a flat outline for laser cutting. STL is a 3D shape for printing. STEP is an exact 3D model for CAD programs.
AprilTag, Limelight
AprilTags are printed square codes on the field. The Limelight is a smart camera that finds them and works out where the robot is.
Odometry, IMU
Ways the robot tracks its own position. Odometry counts wheel turns, and an IMU senses turning and tilt.
Soft limits, homing
Soft limits are travel stops set in software. Homing means finding a known "zero" position, here with a magnetic switch, at the start.
Slip ring
A spinning electrical connector that lets wires pass through a joint that turns forever. We don't use one (see "How it works" 7).
Starting configuration
The robot's shape when the match begins. The rules limit it to an 18-inch cube.
Launch angle, hood angle
The launch angle is the angle the ball leaves at, measured up from the floor. The hood angle is the launch angle the hood's shape aims for. The ball's real launch angle can be a few degrees different, so measure it.
Exit speed, speed room
Exit speed is how fast the ball leaves the wheels. Speed room is how far the exit speed can be off (for example ±4%) and the ball still goes in. More room means a more forgiving shot.
Air drag
Air pushing back on the flying ball and slowing it down. The simulations include it.
Simulation
A computer model that works out what would happen (a ball's flight, or how it's squeezed between the wheels) before anything is built. Good for comparing ideas, but real tests have the final say.
Firing gate
A rule in the robot code: only release the next ball when the encoder shows the wheels are within ±1% of the right speed.
Torque
Twisting force. A motor needs torque to get the flywheels back up to speed after each shot.
Pinion, mesh, backlash
A pinion is the small gear that drives a bigger one. Gears mesh when their teeth fit together. Backlash is the small wiggle room between meshed teeth.
Hood carrier
One of the two tilting plates that make up the hood. They pivot on the main shaft and carry the jackshaft and the upper wheel's arm.
Hard stop, stop cam, bumper
A hard stop is a fixed block a moving part rests against. The stop cams are adjustable stops (turn them to move the stop) that set how close the upper wheel comes. The bumper is a cushioned stop that catches the arm if it swings open too far.
Preload
A squeeze set on purpose during assembly. The goBILDA turret bearing comes preloaded from the factory.
Kerf
The width of material a laser or cutter removes as it cuts. It can make holes and edges come out a little different from the drawing, which is one reason to cut a test plate first.
Nyloc nut
A nut with a nylon ring inside that grips the bolt threads, so it doesn't shake loose.