This year has been a massive leap for Team 1706. We made it to Einstein’s for the first time in our team’s history, and we went undefeated in a world-class division. One of the many reasons behind our success has been the scouting data. I am the head scout for 1706, The Ratchet Rockers, and over this most recent game, I have learned and created a lot.
The Scouting App
Our data is generated by a group of scouts using the Android application that I developed in-house. This app collects data, such as the scout’s name, the team number, the round number, and the alliance. Some other raw data is standard, but we also collect missed shots and auto accuracy, which plays a massive role in how our team selects alliance partners. We allow scouts to write notes to help us know why the data may seem different, such as a team playing defense in one specific match. I also added some Easter Eggs to keep things interesting for the scouts, but the Easter Eggs are so simple that they do not cause any noticeable data inaccuracies.
The Data Exporting
Our app exports a .txt file onto the Android device’s hard drive in a specific folder. From there, the data is grabbed by a Bluetooth file transfer program or a direct wire transfer to a host computer. We use a python script to convert the text file into a .csv form. Following that, it is a simple copy and paste into our data analysis tool.
The Data Analysis Tool
This raw data is then converted into averages and then parsed down to get the most crucial data. While that is the entire function, I added a lot more behind the scenes. To go through the tabs, the first one that is not just data or averages is the Match Schedule Strategy.
This tab forces us to look at a Google Script to understand the functionality. This script exports a team list into the setup tab as well as their match schedules. This is accessed through The Blue Alliance API and uses an auth key to access and download data from the API. This is also possible with =IMPORTHTML inside Google sheets.
Changing the match number on the first tab will cause all the teams to update from the setup tab, resulting in a match strategy that is often within 8-10 points per game (unless something catastrophic happens). The next tab is a Team Parser, which allows for the input of any team number, and it will give back the match by match data of any team, a trend line of that team and how they played across matches, and their average data, along with a rank, of each of the categories of scoring.
It also shows a list of comments, match by match, to see why data may be funky for a match (this is why we encourage our scouts to take sufficient notes). The next tab is the Picklist tab, which goes through the list of teams that we are contemplating inviting to our alliance, and then we compare them on all of their average stats.
This tab is not used as often, since we have the Team Parser, but it is good for a nice quick look at some data. The next tab is my favorite. The Team Comparer allows for the display of a radar chart (thing of an ability chart or spider chart) showing off a team’s strengths.
A good team will have a large area, and a smaller area indicates a team that is a little worse. The best part about it is that it can compare teams on each of the 5 traits at the same time in a comprehensive form. The next tab is a standard Match Strategy, which helps during eliminations as it allows for the custom importing of teams into the boxes, making the customization choices include the teams of the opposing alliance.
The next tab is a charts and graphs tab, a sort of visual aid so that the rest of the team can easily see what data matters most. This is filtered down to the top teams so we don’t get overwhelmed by a bunch of lines.
The bubble chart on this page is convenient to figure out the best cargo scorers by looking at accuracy vs. shots, and then for fun, I plotted all of the points on a standard graph and got the line of best fit, which looks like a natural log curve.
Next to that tab, there is the Driver Info tab, which is the data that we collect and send to the drivers before a match, alongside the Match Schedule Strategy.
The Validation tab is still a WIP and was intended to verify from TBA API what data was incorrect.
Using and Sending the Data
Having all of this data is nice, but making the data do anything involves sending it down to the pits. Before a match, our scouting mentor and I create a match strategy that takes the data we have collected thus far and we write a comprehensive plan from auto to teleop to the endgame. This being said, the data gets more and more accurate as the day goes on, so we scout practice matches beforehand to get a decent baseline. Once we scout enough qualifiers, we remove the practice match data points, since they are mostly inaccurate. In qualifiers, our goals were to get all of the ranking points, so we determined that climbing would be a big component of that, and wrote our strategy around that aspect of the game.