SQL Scouting Algorithms

Hello!
Our rookie team had a hard time choosing an alliance during the Livonia eliminations, and since I have some experience in using python with SQL, I am going to attempt making a simple command line interface program for scouting.

Since it will be a pain for my team to type in sql arguments, I’ll just use a GUI sql database editor so that they can easily add and edit team data.

However I would like to make a python program that can read my database and figure out the capabilities of my team and the enemy team, then come up with possible defense selections.

I would also like to make it list the teams that would work best with our robot in an alliance, based on data about defenses they cross, and how efficiently they can score.

Of course this is alot to ask for, but the key is in what you put into the database.

For example, visibility was a major issue scouting teams overlooked. The database could tell us what teams had the camera extender poles, cameras on bots, or positioning flags (quite genius!), so we could decide if we want to pick big defenses to block vision.

Another issue in deciding teams is simplicity and speed. Some teams that shot for the high goal where actually less point efficient then low goal shooters, and some drivers breached defenses Waaay faster than others.

This last bit of data may be hard to get, but what about “percentage of tournament robot is broken” or “percentage of matches the robot dies on the field” or “average points”?

Any ideas on what I should put into my database? (Or what I should put into each category ie. 0-1 for defense categories, or points added together for each extra vision add-on) So far I’ve got:
low goal
high goal
defenses
visibility
average points
speed

We are only a rookie team with 10ish people, so most of the data I mentioned we probably won’t have time to gather or code.

Any recommendations?

(sorry for any misspelling, I typed this on a phone)

Our team will be scouting at the Ann Arbor district along with 3542 “The Greengineerz”. We are more than happy to help with any of your scouting needs. If youd like to scout with us and share data that can be doable. All up to what your team wants to do, but we’ed love to help.

I finished creating an SQL database that will hold the info for the Ann Arbor event. I set up JetBrain’s DataGrip software so that my scouting team can edit it easily like an excel document.

I’ve also written a basic python program that retrieves data from the database and prints it into terminal based on the team numbers that you enter. I am working on using matplotlib to make a more visual graphic.

Code (Should be working but still in progress):

I’ve been rewatching the matches from the livonia tournament, and alot of teams we met there will be at the Ann Arbor competition, so I am working on putting their stats into my database. I would be willing to share this info with your team when I finish filling in everything I can in my database.

Always keep the UI as simple and user friendly as possible, always have a column that calculates how many points the scouted team scored in that match, OPR/average alliance score doesn’t say anything. I’d suggest NOT using a scouting system that requires each scout to have a laptop, either. Batteries die, and unless you have easily accessible power, you may lose out on a ton of data switching laptops. They’re also big, hot, and fragile. Keep in mind that most venues don’t have WiFi (you’re in Michigan, so this maybe this isn’t the case) and, unless you have a reliable mobile data connection, you likely won’t have internet. Looks like you guys are already more organized than most veteran teams, if you have any questions I’d be happy to help! :slight_smile:

Skyline should have WiFi available (unless something unexpected happens).

That being said, I’d recommend a paper scouting system for what you’re describing. We use paper sheets that then get passed to one person with a laptop who enters the data. If you’re interested in our system, send me a message, or just find me at Skyline.

The really important thing when ranking teams based on your scouting is to make sure that you score them according to your priorities- not necessarily their overall performance. If you breach, and want a shooting team, then obviously you would make sure that shooting contributes more to placement on your list than breaching. If you can’t do a category of defense (or do it really badly), but want to ensure you can still breach, then you would obviously prioritize that defense.

During our most recent competition, we ranked teams in a spreadsheet according to the four categories we found to be most relevant to us (cheval de frise, other defenses, goals, and auto) with that order of priority, and scored each category from 0-3 for each team, with 0 being that they can’t do it, and 3 being that they do it quickly many times.

Ultimately, your scouting should be based around what suits your team, even if you can’t have someone tracking every single match.