Valor ScoutPersonal project to dynamically calculate component OPRs and give match predictions:
Verified it still works in 2020 this morning now that the first event is underway (Israel)
I have been doing OPR calculations since 2010 when it was just becoming big. (10 years ago.... Where did the time go?) I created an Android app in 2013 using a crappy knock-off Android phone, and 2G service, to dynamically calculate OPRs on the fly and predict match outcomes. Keep in mind, most OPR numbers at the time were posted by Ed Law and Ether on Sunday night in CSV files. TBA didn't calculate OPR until MUCH later.
Now, 10 years later, everyone seems to have OPR calculators and it is instantly available on TBA. New metrics are available, and "generalized" scouting apps are a thing.
So why do I still keep doing this?
- I enjoy coding and I learned to code via OPR calculations. Wouldn't be here today without it
- I learn what data needs to be collected to properly assess a match
- I learn what I need going into a match, and can ask my scout lead for the right data elements
Lastly, I want to clarify that me personally and 6800 does not use OPR as the sole metric for scouting and selection. It is just another datapoint, another reference, that we can use when assessing matches. Use whatever data points you feel add to your existing scouting report
The normal OPR equations take the match schedule and the final scores to generate OPRs:
Ax=B - where A is the matrix representing who played who, and B is the matrix representing the sums of the match scores each team has played in.
What this doesn't capture is penalties, or how those points are broken up. By swapping out the B matrix with different sums, we can capture component OPRs.
- Auto low cells
- Teleop Inner cells
TBA (thebluealliance.com) simplified this a few years ago by adding game element counts to their post-match breakdowns. Now, we can obtain how many auto low cells were scored in each match, and use this to calculate the B matrix - therefore allowing us to make a component OPR for auto low cells.
On top of just calculating component OPRs, we can also improve our overall OPR calculation. Instead of using the score of the match in our B matrix for overall OPR, we can add up the component OPRs of each team to obtain an OPR that doesn’t include penalties.
Heck, you can even subtract penalties from OPRs now using this method. TBA reports a robot-by-robot breakdown of climbs and auto starts. Therefore you can swap out the component OPRs for climbing and auto starts with real datapoints and averages instead of estimates. Now your OPR is even more accurate! Tons of cool stuff you can do
Using component OPRs, you can look at a future match and see a picture of what that alliance *could* be doing. Again, don't substitute this for your own scouting data - use it to enhance it.
I can use the component OPRs to give me a quick look at who scores more in auto, inner vs outer port, who scores more in teleop, etc.
Let me know if you have any questions. Site should be live all season. I do not intend to add more features, but things can change - who knows!