Howdy, everyone!
Several of us on Team 245 have been developing a nifty scouting application for FRC, hosted on the Adambots website, that does OPR calculations and other event analysis on the fly. It’s cross-browser compatible, and it works on most Javascript-enabled mobile devices.
Here’s the link: Adambots Automated Scouting Kit
We’ve also made the source code available here.
AASK will begin displaying results for the Michigan State Championship as soon as the match schedule is posted. We hope to integrate global OPR calculations by Friday morning, which will be used in predicting matches and displaying information about specific teams. As of this post, those features have not yet been published.
I hope you all find it useful as the World Championship approaches! Please respond to this thread with any bug reports, suggestions, or comments you may have!
Below is a description of the tool, copied mostly from the website.
About This Tool
Below is a description of each of the calculations provided by AASK:
Rank: The team’s rank at the event, in terms of Qualification Points, as reported by FIRST.
Autonomous Rating: An estimate of the number of points a team scores, on average, during the autonomous period.
Teleoperated Rating: An estimate of the number of points a team scores, on average, during the teleoperated period.
Climb Rating: An estimate of the number of points a team earns, on average, by climbing.
OPR: Offensive Power Rating. An estimate of the number of points the team scores overall, on average. This number represents the offensive utility of a team. Comparable to the OPR reported by other teams.
DPR: Defensive Power Rating. An estimate of the defensive utility of a team. May be interpreted as the number of points that a team takes away from its opposing alliance, on average.
CCWM: Calculated Contribution to Winning Margin. An estimate of the number of points a team contributes to the winning margin of its alliance.
Should My Team Still Scout?
Yes! AASK is meant only as a secondary source of information, either as a basis for comparison or to replace missing or faulty information. We do not guarantee that the results of our estimates will accurately reflect the capabilities of each team.
How Does This Work?
For each point category, our system solves a system of linear equations for the “average contribution” of each team per match. Each equation corresponds to a single team and expresses the total accumulated points earned by that team as a linear combination of that team’s average contribution and the average contributions of every other team that has competed on an alliance with that team. Naturally, we represent the system of equations with a single matrix equation of the form Ax=b
[ul]
[li]Vector b contains the aggregate point value (one of AP, CP, TP, or their sum) for each team.
[/li][li]Each element A(i,j) of matrix A represents the number of times team i has played with team j. Each element on the diagonal, therefore, is the total number of matches played by the team represented by that row and column. As a result, our matrix has the following properties:
[/li][LIST]
[li]It is symmetric.
[/li][li]It is irreducibly diagonally dominant.
[/li][/ul]
[li]We solve for the vector x, which contains the average contribution of each team.
[/li][/LIST]
Because of the special properties of our matrix, we can easily find an exact solution when the matrix is nonsingular using LU Factorization (without pivoting!) followed by forward- and back-substitution. When the matrix is singular, we approximate the solution iteratively with the Gauss-Seidel method and display a warning to the user.
The Defensive Power Rating (DPR) for a team is calculated by iterating through the list of completed matches and using the calculated OPR values to predict the outcome of each match. For each match, for both alliances, the difference between this expected outcome and the true outcome of the match is credited to the defensive utility of the opposing alliance. For each team, we sum up these differences and solve a linear system similar to the one above using this new tabulated data.
The Calculated Contribution to the Winning Margin (CCWM) for each team is calculated by summing up the alliance score difference for each team for each match and solving our favorite system of linear equations for the x vector with these margins in our b vector.
AASK is dependent on the match schedule and rankings reported by www.USFIRST.org. Occasionally, the FIRST website will experience an outage, rendering our tool temporarily incapacitated. We have implemented a simple caching system, designed to reduce the frequency of such failures, but ultimately the status of the FIRST website controls the functionality of this tool.