Ten lessons for an FTC team, from 3,300 simulated matches

We are the students and mentors of the three FTC teams at NCSSM: 5064, 8569, and 22377. This post is for a team that is deciding what to build, what to practice, and how to plan a match. We simulated BIOBUZZ, the 2026-2027 FIRST Tech Challenge game, about 3,300 times and changed one thing at a time. The game details are BIOBUZZ, but most of the lessons carry to any season in which robots collect, launch, and race a clock.

The Match Lab page shows the same results as charts, and it estimates the score of a robot that you configure.

Each lesson starts with the advice. The numbers follow, and then something to try at practice. Read the ranking as "where to look first", not as a prediction for your robot. The section What a simulator can't tell you lists what the numbers leave out.

How to read the numbers

BIOBUZZ in one paragraph: robots collect POLLEN and NECTAR and launch them into the raised CELL of their HIVE. About 8 POLLEN tip the HIVE for 20 points, which dumps that CELL onto the floor and raises the other one. FLOWERS are a slower second objective. PARK is 5 points at the end.

The ten lessons

1. Make your launcher repeatable before anything else

Nothing else comes close. The baseline launcher varies by 0.08 m/s3.1 in./s in speed, 1° in elevation, and 1.2° in yaw. Three times that spread costs a third of the score.

Launch spreadScoreChange
Baseline412
3 times the baseline270-142
5 times the baseline162-250
8 times the baseline98-314

A miss isn't one lost point. It delays a 20-point TIP, and the element has to be collected again. AUTO suffers most, because an open-loop AUTO can't correct: AUTO points fall from 88 to 42 at 3 times the spread.

Stop before you shoot, too. Letting the robot launch while it still moved at 0.35 m/s14 in./s cost about 18 points and saved no time.

At practice: launch 20 elements from one spot and measure the group. Then chase the causes: flywheel speed control, how each element seats, battery voltage, and worn wheels.

2. Find your scoring window, and launch from the middle of it

The window is a distance, not an angle. The baseline shot scores from any standoff between about 1.16 m46 in. and 1.58 m62 in. along the line of the shot. Launching from either edge of that window costs 96 to 98 points. A robot never stops exactly on its spot, and at the edge of the window a few centimeters off is a miss.

Angled launches are fine. In every match here, the second robot of each alliance launches from a spot 0.62 m24 in. to the side, about 40° off the HIVE's axis, and it scores as well as the robot in front. Two launch spots are also what lets partners launch at the same time.

At practice: find the nearest and the farthest distance that still scores, from straight on and from an angle, and mark the middle of each on your practice field. Teach your drivers those spots, not "somewhere near the goal".

3. Run an AUTO, and plan it with your partner

AUTO planAUTO pointsScoreChange
A planned pair88412
Both robots run a good solo routine34363-49
One solo routine, the partner only parks49375-37
Both robots only LEAVE and PARK16345-67
No AUTO0331-81

Two good solo routines collide at the same launch spot and score less than half of a planned pair. The value of AUTO is also more than its points: a planned pair starts TELEOP with full hoppers and a loaded CELL.

What made the pair work:

Before a match: ask your partner where they start, where they launch from, and what they collect. Agree on who goes where.

4. Keep doing the thing that pays, and send at most one robot to the side objective

TELEOP plan for the two robotsScoreChange
Both keep tipping412
One tips, the partner works FLOWERS from 30 s414+2
One tips, the partner works FLOWERS from 45 s401-10
Both work FLOWERS from 30 s388-24
Both work FLOWERS from 45 s367-45
Both work FLOWERS from 66 s332-80

A TIP is 20 points for 6 to 8 elements. A finished FLOWER is 17 points for 6 elements, and it takes longer. One robot on FLOWERS for the last 30 s costs nothing and takes those FLOWERS away from the opponent. Two robots on FLOWERS for the last minute is the worst plan tested.

The answer changes if your launcher is poor. At 8 times the launch spread, FLOWER work from 45 s adds 33 points, because placing doesn't depend on aim.

In general: work out the points per element and per second for every way to score, and check it against how well your robot does each one.

5. Watch where your robot waits

Where a robot's 120 s of TELEOP went in these matches:

ActivitySeconds
Driving to elements and collecting49
Driving to the launch spot38
Slowing down onto the spot13
Launching6
Waiting at the spot for the CELL to rise4
Recovering from a collision3
PARK6

Driving is about 73% of the match, and launching is 5%. Fixing decisions, with no change to the robot, was worth about 32 points per alliance. The mistakes were ones that a drive team makes too:

At practice: film a match, and count the seconds in which a robot holds elements and doesn't launch, waits for something, or drives past an element with room in the hopper.

6. Release your whole load fast, and face the shooter away from the intake

ShooterScoreChange
Two at a time, 0.3 s between releases (baseline)412
All four at once465+53
Two at a time, 0.15 s between releases446+34
One at a time, in intake order434+22
Two at a time, 0.6 s between releases375-37
Shooter on the same side as the intake373-39

The one-at-a-time row is within the noise. Time at the launch spot is paid on every cycle, about 14 times per match. The HIVE also tips faster under a heavy overload: 1.2 s, against 1.7 s when the load barely crosses the threshold.

The shooter's side matters for a reason that carries to other games. With the shooter opposite the intake, the robot arrives at the launch spot from a pickup without turning around, and its intake faces the wall where the dumped elements land.

7. Build light, stay small, and don't chase top speed

Robot massScoreChange
7 kg15 lb434+22
10 kg (baseline)22 lb (baseline)412
13 kg29 lb394-18
17 kg37 lb381-31
Chassis, squareScoreChange
46 cm18 in., the legal maximum404-8
38 cm15 in. (baseline)412
34 cm13.4 in.419+7
30 cm11.8 in.438+27
Drive gearing, at the wheelScoreChange
312 rpm404-8
435 rpm428+16
500 rpm429+17
600 rpm (baseline)412
700 rpm404-8
850 rpm382-30

Mass is the clear one: about 5 points per kilogramabout 2.4 points per pound, in a straight line. The field is 3.7 m12 ft across and crowded, so a robot spends its time speeding up and stopping, and traction limits how fast any robot speeds up. A light robot stops sooner, and a robot that settles sooner launches sooner.

Size pays only at the extreme, where a robot slips past its partner and through the HIVE frame. Gearing between 312 rpm and 700 rpm makes no measurable difference, and 850 rpm hurts.

The simulator doesn't check whether your mechanisms fit in 30 cm12 inches or weigh 7 kg15 lb. Treat the tables as the price of every pound and every inch.

8. Check what your intake can actually reach

Elements end up against walls and in corners. An intake that is narrower than the chassis can't reach an element on a wall while the robot drives along that wall. In this model the gap was 4.5 cm1.8 in. on each side, and a wall sweep missed the elements by 1 cm0.4 in. to 2 cm0.8 in..

IntakeScoreChange
Front, 8.9 cm3.5 in. narrower than the chassis (baseline)412
Front, full width425+13
Front and rear438+26
Front and rear, full width444+32
Succeeds 80% of the time405-7
Succeeds 60% of the time356-56

An idea from one of our mentors fixed the wall problem without a new mechanism: turn the robot 30° toward the wall, put the front corner on the wall, and drive to the field corner. At that angle the wall crosses the mouth of the intake. One such sweep filled a hopper in 0.8 s, where a straight pass took 6 s to find two elements.

An intake on both ends lets the robot take an element with whichever end is nearer, so it turns less. It was worth 26 points in one test and about 10 in another. With intakes on both ends, the shooter's side stops mattering: 434 with the shooter at the front, and 438 at the rear. A rear intake has to share a face with a rear shooter, which is a packaging problem that the simulator ignores.

At practice: put elements against a wall and in a corner, and find out how your robot gets them.

9. Go where the elements end up, and let them land first

A TIP dumps 8 elements, and that dump is most of the supply for the next TIP. Three measurements changed how the robots collect:

The supply is finite. Changes that collected more in AUTO raised AUTO points and barely moved the match score, because those elements weren't there in TELEOP. The changes that raised the match score removed waiting and driving.

In general: learn where game elements come to rest after every scoring event, and plan your routes to end there.

10. Know what your last 8 seconds are worth

The robots used to PARK whenever the clock said so. A robot holding four elements that would finish a TIP drove off to PARK for 5 points instead of 20.

Choice in the last secondsPoints
A launch that finishes a TIP20
A launch that doesn't2 per element in the CELL
PARK5

Choosing by value was worth about 5 points per alliance, measured to within 1 point.

Ranking points change the answer. In a qualification match, the SWARM ranking point is worth more than 15 match points, so a robot whose PARK the alliance still needs for it must PARK. A normal AUTO already secures SWARM with LEAVE and AUTO PARK. In a playoff match, only points count, so take the TIP.

Before a match: decide who parks and who takes a last cycle, and what on the scoreboard changes that.

The build that these lessons point to

The tables change one thing at a time, so we tested whether the traits stack. Two robots with every design choice from lessons 6 to 8 played 24 matches against two baseline robots.

TraitThe combined buildBaseline
ReleaseAll four at onceTwo at a time
ShooterOpposite the intakeOpposite the intake
Mass7 kg15.4 lb10 kg22 lb
Chassis30 cm12 in. square38 cm15 in. square
Gearing500 rpm600 rpm
IntakeFront and rearFront
Launcher spreadBaselineBaseline

The combined build scored 508, and its baseline opponents scored 412. The margin is 96 points, with a standard error of 9. With baseline robots on both sides, the same seeds give 417 to 416. So the traits stack: the build is worth about 90 points per alliance, which is close to the sum of its parts.

How that alliance plays is lessons 2 to 5, 9, and 10: a planned AUTO pair, launches from the middle of the scoring window, both robots on the main cycle, routes that end where the dumps land, and a last launch over a PARK when the ranking points allow it.

Hold the build loosely, for four reasons:

When to play defense

We tested one robot that defends for all of TELEOP. It goes after the opponent that carries the biggest load: it takes that robot's launch spot if it can get there first, and otherwise it drives into it. It breaks contact every 1.6 s, and no PIN was called in any match.

Your allianceThe defender gives upIt takes from the opponentYour marginYour wins
Equal to the opponent9287+3 to -313 of 24 to 14 of 24
Both robots at 3 times the launch spread6872-125 to -1210 to 0
Both robots at 5 times the launch spread2969-236 to -1960 to 0
A strong robot with a partner at 5 times the spreadNothing: the score rises by 2170-97 to -50 to 15 of 24

Defense rarely wins a match, for the reason that experienced teams give: the best defense against defense is a lead after AUTO. A robot with a poor TELEOP has a poor AUTO too. At 3 times the launch spread, AUTO points fall from 88 to about 43. A weak alliance that defends improves its margin and still loses every match, with a lower score for both sides. Between equal alliances, defense is a wash.

The exception is a mixed alliance, which is what a qualification schedule deals you. A strong robot with a weak partner lost all 24 matches while both scored, and won 15 of 24 with the weak partner on defense, from about 47 points behind after AUTO. Two things moved: the opponent lost 70 points, and the alliance's own score rose by 21. A poor launcher scatters elements and takes up the launch spot and the floor elements that its strong partner uses better.

Before a match: if your partner can't score reliably, ask them to defend, or at least to stay clear of your launch spot and your elements. If you are that partner, offer it.

A lighter version did nothing: a robot that shoves an opponent that is lined up to launch, and then launches itself, moved the margin by 3 points.

Two limits. The only contact rule in the simulator is the PIN rule, G421, so check your game's rules on contact near a scoring zone. And the opponents here don't adapt: a real drive team launches from another spot when a defender takes theirs.

What didn't help

What a simulator can't tell you

How the matches were run

Every match is a full 2:30 MATCH with four robots in a rigid-body physics simulator built from the official field CAD. AUTO is a fixed script per robot that reads only its own pose, its hopper count, and the AprilTags of the HIVE. In TELEOP, a planner picks pickups, plans paths around the field elements and the other robots, and launches only when the predicted shot scores.

To rerun the design tables, run npx tsx scripts/exp-run.ts all 12 11 101 TAG with a tag of your own, and then run npx tsx scripts/exp-report.ts. To watch a match, run npm run dev. To configure a robot, click the gear icon next to its number.