Ctrl-Z Hybrid Scouting System Release: QRScout + SPAMalytics

Team 4096 Ctrl-Z is excited to release our scouting system from the 2024 season! Rather than building something from scratch, we opted to combine the easy-to-use data collection of QRScout with the barebones-but-effective data processing of SPAMalytics. This thread includes an overview of the changes we have made to each system and includes links to source documents for further exploration.

QRScout

QRScout Release Thread | 4096’s Hosted QRScout | 4096’s QRScout GitHub Repo

This PWA gets heaps of praise, and it is super well warranted. Alongside being easy to configure, our scouters really enjoyed using it. Ease of access on the open web made it trivial to make scouting alliances at our events. Two important notes:

  1. I rewrote much of the UI styling to make it look better, although that is subjective, and incorporates 4096’s team colors. There is potential to use https://frc-colors.com/ and this redeveloped theme on the main project, and I may attempt to contribute upstream accordingly if I have the time.

  2. Self-hosting makes a big difference, as it allows our students and other teams to open the app on their own without configuration. I may write a guide to self-hosting via GitHub Pages at some point.

Shoutout to Team 2713 for this huge contribution to the FRC community!

SPAMalytics

SPAMalytics Release Thread | 4096’s SPAMalytics Implementation

SPAMalytics is made to be beginner friendly, but it is designed for use with paper scouting sheets. This introduces a time-consuming and potentially error-prone conversion step. Our modified version of SPAMalytics for Google Sheets effectively bolts on a QR data conversion step onto the front. The steps:

  1. “Data Input” sheet - QRScout data is scanned directly into this sheet
  2. “Data Processing” sheet (hidden) - reformats the “Data Input” data into the data structure that SPAMalytics is designed to process. This consists mostly of re-ordering columns and de-constructing dropdown data into separate columns.
  3. “Match Data” sheet - this is the sheet where paper scouting data is traditionally entered. Instead, it now pulls from “Data Processing”. Duplicate entries are averaged, allowing multiple scouters to scout the same match.

We also made several minor quality-of-life adjustments, as follows. We added a “Match Notes” sheet for our lead scouter to gather qualitative information about each match. A “Practice Summary” sheet provides fallback data for the match predictor that gets ignored once a team has their first qual match. The “Match Strategy” sheet has been split into two: one option for team-by-team entry and another that pulls by qual match number. We added Statbotics links to the “Team Report” and rebuilt the “Robot Attributes” sheet based on our pit scouting needs.

Thanks to Team 180 SPAM and the SPAMalytics contributors for providing such a great foundation to build from!

Over the season, this system enabled us to form scouting alliances at the Midwest Regional and Champs. Shoutout to teams 2040, 5822, and 5847 for scouting with us this season! We are planning to use this system again next season, and we hope to continue collaborating with other teams at our events.

9 Likes

Love how you implemented this data abstraction layer! For those of you who don’t have this, you’ll thank me later when you implement this and it saves your sanity :wink:

2 Likes

This is an awesome resource. We have been using the paper version of SPAMalytics for years and last weekend at an off season comp was our first attempt at using electronic scouting methods. The system was so user friendly for a team that was already familiar with SPAMalytics that we seamlessly made the transition. It was so successful in fact we came away on the winning alliance.

2 Likes