A Mentor-started and Student-coded App

The short story of a small app

During the 2016 season of FIRST Robotics Competition, titled “Stronghold,” a programming mentor from Team 3489, Category 5, started this app. Students from Teams 3489 and 342 contributed feedback, submitted bug reports, and suggested feature enhancements. Team 3490 used the app both in regional competitions and in the World Championships.

Between the end of the 2016 competition season and the beginning of the 2017 competition season, this app will be moving from mentor-coded to student-coded with help from mentors. Also, the open-source app will go from being a mostly one-team effort to an app that teams from all across the world will contribute to.

How can my team get involved?

This web site will host tutorials to take you from never having developed a mobile app before to working on the code base of this app, adding features, fixing bugs, changing layouts, and more.

The tutorials will include the following topics:

  • Creating a free account on GitHub to host your version of the code base
  • Creating a free account on Cloud9 to edit your code
  • Creating a free account on Adobe PhoneGap Build to build your code
  • “Branching” the code base using GitHub and Git
  • Making a small edit to the code
  • Compiling your changes
  • Loading the updated code onto your tablet or large phone

Jump to the tutorials section

App Features

Pit Scouting

Prior to the matches beginning, many teams to “pit scouting,” during which students speak with Pit Ambassadors to find out what capabilities each team's robot has.

On this screen in the app, the scouts select the team name and answers to various questions. The questions asked will depend on each team's particular strategy, and is part of the customizations you might make to the common code base.

Pit Scouting screen

Match Scouting screen

Match Scouting

A team may tell you what their robot can do, and then there's what the robot actually does during competition. This is called Match Scouting, and it involves students watching each robot in each match and capturing the accomplishments and setbacks of each team's robot.

Because speed of data entry is important during the matches, this screen is configured to require no scrolling. Note the tabbed interface that moves between data capture during the Autonomous period, the Teleop period, and the post-match. Breaking this up makes it easier to capture the most-complete data possible.

As with the Pit Scouting screen, you will want to modify the shared code base to put in your own questions.


Syncing involves importing the team roster for an event, which is a data set that includes team names and numbers, and exporting data collected during Pit and Match scouting.

Importing the team roster happens only once each event, but the Pit and Match scouting data can be exported as often as needed to keep the full data set up-to-date.

Sync screen

Settings screen


This screen is used to set the number of matches in an event, which is then used to populate the Match # field on the Match Scouting screen.

In addition, there are some troubleshooting features available from this screen for when things go wonky on a particular tablet. This screen is reserved for the programming mentor and data manager to use on our team, but you'll need to decide how you want to handle this on your own team.

Future Functionality Plans

Cloud-based data storage. With the first version of the app, data was synchronized by exporting text files from the tablets onto a laptop. The data manager then merged the data into a spreadsheet by hand. This is not the ideal arrangement, and we want to add the capability to store the data in the cloud using a connection to a cell-enabled device using Bluetooth connections. (Remember, setting up a wifi hotspot is against the rules due to the risk of frequency saturation; frequency saturation can cause the Field Management System to fail.)

We're looking at Firebase as the most-likely implementation, but if you have other ideas, you should consider branching the code base and trying your own implementation!

Firebase cloud-based data storage services

Robot photos

Robot photos

While it's great to capture text-based data about robots, you can get a lot more out of a photo than the app can capture using text fields. One of the most-requested features for the app is to start using the tablets' cameras to capture images of the robots. This would be done during Pit scouting.


Ready to dig in? Take a look at the following tutorials to learn how to make a copy of the code base and start making modifications!

Tutorials to help students to work on the Cat5Scouting app