FIRST Robotics Scouting App Screenshot

FIRST Robotics Scouting App


Android app for streamlined, digital collection of robot performance data


Android, Java


January - March 2018


This is a really old project from when I was still in high school. It was my first app, so it’s certainly not representative of my current work. I've included it in my portfolio to show that I've been committed to learning and working towards my career as a software developer for a long time.

This is an Android app allowing for the streamlined, user-friendly collection and storage of scouting data (data about other teams' robot performance). It was developed for the FIRST Robotics Competition 2018 season. Once collected, data is stored in a series of CSV files for analysis by other software. The goal of the data collected in this app is to the calculate average amount of time taken for a robot to complete particular tasks as well as their capabilities and reliability.

Setting Up

Every match, the user is assigned a team to scout (collect data on). Assignment is dependent on the user's ID (specified in Settings) and the match schedule (stored as a CSV, see 'Match Schedule' section). Alternatively, match and team number may be manually specified by the user.

Autonomous Period

Once scouting has begun, the user is presented the Autonomous scouting screen. The data collected on this screen corresponds to the first 15 seconds of the match where the robots are autonomously controlled; no driver control. The scouter is asked to specify the starting position of the robot and whether or not the robot crossed the autoline, put a cube on the switch, put a cube on the scale, or picked up another cube. At the conclusion of the Autonomous period, the user will press "Start Teleop"

Teleoperated Period

The user is presented with a top down map of the game field. This should correlate with the scouter's view of the field (by the default the Red alliance's side appears on the left, this may be changed in Settings). The scouter will press the button correlatng to the game element the robot interacts with once when the robot approaches it. The button will light up lime green indicating this is now the robot's current location. The timer at the top of the screen indicates the time that the robot has spent at that location thus far. The user will press once more when the robot leaves. This is continued throughout the match, after which the user will press "Stop" at the top of the screen.

Match End

At the end of the match, the scouter is prompted to input data relating to that match. If the scouter believes their data is problematic they can opt to mark their scouting data as such. After the relevant information is filled out, the user will press "Submit".


After submission, the user is presented with the raw text of the data they collected for that match. This is saved on the device in /BOBScout/Matches/ as [MATCH NUM]:[TEAM NUM].csv. This data can then be consollidated from all scouters and analyzed.

Match Schedule

A match schedule can be preloaded so that each scouter will automatically be assigned to a robot. The match schedule must be saved as 'schedule.csv' and saved in /BOBScout/. The match schedule CSV specifies what teams are playing in which match, every line represneting a match. Each line should contain the list of teams playing following this format: Red1, Red2, Red3, Blue1, Blue2, Blue3. NOTE: The first line of each CSV is ignored. This is to accomodate headers to make the CSV more human-friendly. Do not start listing teams on the first line.