One of the under-the-hood features of the FRC Control System software is a system called Usage Reporting. This system tracks what WPILib objects are created in each team's code and reports the data back to FMS when the robot is connected to the field. This data helps FIRST and our Suppliers understand how teams are using the Control System which can give us insight into things such as adoption of new features or usage of legacy classes.

Here are a few numbers from the data that teams may find interesting:

152,572

The total number of Usage Data records captured by FMS

22,607

The total number of motor controllers used on 2016 robots

6,402

The total number of USB input devices used to control those motors

2,156

Total Encoders used to get feedback from those motors

1,4021

The number of teams that used pneumatics (with the PCM) on their 2016 robot

764

The number of USB cameras streamed back to the Driver Station

489

The number of Digital Outputs used to control non-actuators (lights, sensors, etc.) on 2016 robots

17

The number of Analog Outputs used to control non-actuators (sounds, lights, etc.) on 2016 robots

1

The number of teams using the GearTooth sensor class which was made for the GearTooth sensors from the 2006-2008 KOP

The complete processed data set can be found here.

A few notes on this data:

- The data has been semi-anonymized. Team numbers have been replaced with rookie years and the data has been resorted so teams are not in order by team number.

- We can only track the objects teams create in code. If you create extra motor controllers that aren't on your robot2, they will still be captured by this system. If you create motor controller objects of the wrong type, that wrong type will be captured by this system.

- Counted objects and TRUE/FALSE show the largest number of any given object used in any one match (i.e. if a Robot had 2 Encoders in match 1 and 3 Encoders in match 7, 3 will be reported). Language and Framework report what was used in the last recorded match.

- Some objects naturally result in double counting (Encoders use Digital Inputs)

1Compressor may not show for C++ and Java teams that didn't use the Compressor object. Counting the # of teams that had > 1 Solenoids is a more accurate count of teams using pneumatics.

2Example: 43 teams report more than 4 relays with only 4 relay ports on the roboRIO.