Home
Scouting Methodology

Estimating Individual Fuel Contribution with OPR

The official field only reports an alliance's combined fuel total — never how much each individual robot scored. Here's exactly how we split that total into a per-team estimate, shared openly so other teams can understand, critique, or reuse the method.

The Core Formula

Team Fuel = Alliance Fuel (actual) × Team OPR Alliance OPR

Each team gets a slice of the alliance's actual fuel, sized by its share of the alliance's combined OPR. Computed separately for auto and teleop, then rounded to whole fuel.

The Problem

During a match, the official FRC scoring system (and The Blue Alliance) tells us how much fuel an alliance scored — all three robots combined. It does not tell us how much each individual robot contributed. We want a per-team estimate, so we split the alliance's total fuel between its three teams using OPR as a weighting factor.

What is OPR?

OPR (Offensive Power Rating) is a single number per team that estimates that team's average expected contribution. We don't calculate it ourselves — we pull it directly from The Blue Alliance's Component OPR (COPR) endpoint for the event, using three components:

ComponentWhat it estimates
Hub Auto Fuel CountAverage fuel scored in auto
Hub Teleop Fuel CountAverage fuel scored in teleop
Hub Total Fuel CountAverage total fuel scored

How TBA derives OPR (the short version)

TBA looks at every match at the event. For each match it knows the total an alliance scored and which three teams were on it. It then solves a large system of equations (a least-squares best fit) to find the single number per team that best explains all of those alliance totals across the whole event. That number is the team's OPR — roughly, "on average, how much does this team add to its alliance's score?"

OPR is a statistical best-fit estimate, not a direct measurement. It works best after teams have played several matches.

Step by Step

  1. 1

    Pull each team's OPR

    From TBA's COPR data we get auto, teleop, and total OPR for every team at the event.

  2. 2

    Get the alliance's actual fuel for the match

    From the official score breakdown we read the real fuel the alliance scored (auto, teleop, and total). This is a measured value, not an estimate.

  3. 3

    Add up the alliance's OPR

    Sum the OPRs of the three teams on the alliance (done separately for auto and teleop): Alliance OPR = Team1 + Team2 + Team3.

  4. 4

    Take this team's slice of the pie

    Team Fraction = Team OPR / Alliance OPR, then Team Fuel = round(Alliance Actual Fuel × Team Fraction).

Worked Example

Suppose the Red alliance actually scored 30 teleop fuel, with teleop OPRs of 12, 6, and 2 — an alliance OPR of 20.

TeamOPRFraction (OPR / 20)Estimated Fuel (× 30)
Team A120.6018
Team B60.309
Team C20.103
Total201.0030

The three estimates add back up to 30 — the real alliance total. OPR only decides how to divide the pie, not how big the pie is.

Try It Yourself

Drag the sliders to set each team's OPR and the alliance's actual fuel for the match. Watch how every team's estimated contribution shifts in real time — the slices always sum back to the real total.

600
240
120
40

Estimated Split

Alliance OPR = 400

60.0%
30.0%
10.0%
Team A

360 fuel

240 / 400 = 60.0%

Team B

180 fuel

120 / 400 = 30.0%

Team C

60 fuel

40 / 400 = 10.0%

Estimates sum to 600 — exactly the alliance's actual fuel.

Why It Works This Way

  • OPR ratios, not raw OPR. What matters is a team's OPR relative to its alliance-mates. Stronger teammates mean a smaller slice of the same pie.
  • We anchor to reality. We scale OPR fractions by the actual fuel scored that match. OPR is the "how to split"; the real count is the "how much."
  • Auto and teleop split independently, each using its own OPR component, then combined into a total.
  • It's an estimate, not a measurement. An unusually good or bad match, or missing/early OPR data, can throw the split off.
  • Safe fallback. If alliance OPR is 0 or a required value is missing, the system returns a blank value instead of guessing.

Analogy for Students

Three friends split a restaurant bill — but not evenly. They split it in proportion to how much each person usually eats (their OPR). The bill total (the actual fuel scored) is fixed and real; OPR only decides each person's percentage of it.

Limitations & Honest Caveats

  • OPR assumes contributions are additive and consistent across matches. Real robots vary match to match (defense played against them, breakdowns, strategy changes).
  • Early in an event, OPR is unreliable because few matches have been played.
  • A team that plays defense (helping without scoring fuel) will have its fuel contribution underestimated — defense doesn't show up in fuel OPR.
  • This is a shared-credit model: it distributes the alliance total, so it can never say a robot scored more than the alliance actually did.

Summary

We take the alliance's real fuel total and divide it among the three teams in proportion to their OPR. OPR (from The Blue Alliance) tells us each team's typical share; the actual match total keeps the estimate grounded in reality.

ScoutingHQ · Built for FIRST Robotics Competition teams