Preview: ScoutLess 2022, a way to scout less, letting the data work for you

For years, the FIRST (and through it, TBA) API has provided extremely helpful match breakdowns. Yet, every year, I see teams scouting that same data.

We don’t have the API match breakdown for this year yet, but it will likely tell us what each robot did in auto AND what each robot did in the endgame. That means the only quantitative thing left for scouts is game pieces scored.

Why I'm not waiting till the API comes out

I know teams are hard at work developing their scouting systems whether that’s a person with a notepad or an elaborate application. For folks that don’t know this data is available or how easy it can be to leverage it, I want them to see this before they spend a bunch of time creating a form to track the very same data.

By leveraging the API, you’ll:

  • Reduce the number of scouts needed
  • Improve your data accuracy (API data will always be 100% accurate to what happened in the match – people might be, or might not)
  • Allow your scouts to focus on a more substantive, holistic analysis of the match

I know that not everyone running scouting on their teams has the know-how to leverage the API. Let me say two things to that: (1) I figured it out…so it can’t be that hard (2) you don’t need to, I’m doing it for you. Introducing…

(Almost) Introducing ScoutLess, a way to scout less

I’m not releasing it yet since we don’t have the 2022 API spec, but it is ready to go as soon as I get my hands on it. Screenshots below show 2020 match data.

Configure your event
Simply grab an API key from The Blue Alliance (takes just a minute), enter your event code, and go. The config page also supports custom API data you may want to collect.

The data will appear
You now have an accurate dataset to integrate with your existing systems and analysis. Sort it, color code it, vlookup it – whatever you wanna do.

Refresh after every match, or once a day, or whatever. I’m a sign, not a cop.

Let me be clear

There’s nothing original here. This is probably not even close to the best way to do this. You can replicate this pretty easily and build it into your own system. But if you’re not already doing that, feel free to start here. And for the love of all things…please don’t scout the data you don’t have to scout. Please. I’m begging you. Your scouts are begging you.

I’ll share a workable version with the 2022 API when we get it – for sure before events! And if you think of ways to make this better, let me know.

22 Likes

Curious to know how one takes into account in this system if a robot is awarded traversal rung points if an opponent robot violates G208. Going purely based off memory, I recall similar foul systems being in place for prior years (blue team is awarded climb points for red team violating X rule). If I recall correctly (and who knows if it will be the same again this year), the match breakdown on TBA only indicated a successful climb. Not that an opponent robot earned a foul, causing those climb points.

3 Likes

That’s the sort of thing you’ll probably want to capture by hand. This will be limited to whatever is made available in the TBA API match breakdown, which is limited by whatever is made available in FIRST’s match breakdown.

For nerds

Here is an example of the TBA 2020 match breakdown. Most recent years, we get the same general components, so this should give a pretty good idea of what to expect in 2022.

"score_breakdown": {
    "blue": {
      "adjustPoints": 0, 
      "autoCellPoints": 0, 
      "autoCellsBottom": 0, 
      "autoCellsInner": 0, 
      "autoCellsOuter": 0, 
      "autoInitLinePoints": 5, 
      "autoPoints": 5, 
      "controlPanelPoints": 0, 
      "endgamePoints": 10, 
      "endgameRobot1": "Park", 
      "endgameRobot2": "None", 
      "endgameRobot3": "Park", 
      "endgameRungIsLevel": "NotLevel", 
      "foulCount": 0, 
      "foulPoints": 0, 
      "initLineRobot1": "None", 
      "initLineRobot2": "None", 
      "initLineRobot3": "Exited", 
      "rp": 0, 
      "shieldEnergizedRankingPoint": false, 
      "shieldOperationalRankingPoint": false, 
      "stage1Activated": false, 
      "stage2Activated": false, 
      "stage3Activated": false, 
      "stage3TargetColor": "Unknown", 
      "tba_numRobotsHanging": 0, 
      "tba_shieldEnergizedRankingPointFromFoul": false, 
      "techFoulCount": 1, 
      "teleopCellPoints": 5, 
      "teleopCellsBottom": 0, 
      "teleopCellsInner": 1, 
      "teleopCellsOuter": 1, 
      "teleopPoints": 15, 
      "totalPoints": 20
    }, 
    "red": {
      "adjustPoints": 0, 
      "autoCellPoints": 0, 
      "autoCellsBottom": 0, 
      "autoCellsInner": 0, 
      "autoCellsOuter": 0, 
      "autoInitLinePoints": 10, 
      "autoPoints": 10, 
      "controlPanelPoints": 0, 
      "endgamePoints": 5, 
      "endgameRobot1": "None", 
      "endgameRobot2": "None", 
      "endgameRobot3": "Park", 
      "endgameRungIsLevel": "IsLevel", 
      "foulCount": 0, 
      "foulPoints": 15, 
      "initLineRobot1": "Exited", 
      "initLineRobot2": "None", 
      "initLineRobot3": "Exited", 
      "rp": 2, 
      "shieldEnergizedRankingPoint": false, 
      "shieldOperationalRankingPoint": false, 
      "stage1Activated": false, 
      "stage2Activated": false, 
      "stage3Activated": false, 
      "stage3TargetColor": "Unknown", 
      "tba_numRobotsHanging": 0, 
      "tba_shieldEnergizedRankingPointFromFoul": false, 
      "techFoulCount": 0, 
      "teleopCellPoints": 0, 
      "teleopCellsBottom": 0, 
      "teleopCellsInner": 0, 
      "teleopCellsOuter": 0, 
      "teleopPoints": 5, 
      "totalPoints": 30
    }
  },
1 Like

This is great, and I’d wager this year is the perfect time for this type of easily accessible data. I know our team’s typical roster is between 1/2 and 1/4 its typical size, and we will be struggling to get decent scouting data (and I know we’re not alone). This should help bolster what we’re able to do at a competition significantly.

3 Likes

The one thing to keep in mind in that breakdown is any value prefixed with tba_ is a Blue Alliance generated item, and isn’t in FIRST’s breakdown.

This is a very cool tool Jared, ty for the work put in to it :slight_smile:

1 Like

Pardon my denseness but is it because the refs are keeping track of points scored in auto that the API is able to track it or how does blue alliance know how many auto points are scored in the beginning of the match?

Yes the referees keep track separately, because they score one per robot. On the referee Screen it asks you to check the 3 robots had completed the auton task (like driving out of the tarmac) however auton balls are counted the normal way.

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.