[FRC Blog] 2018 Season by the Numbers

Posted on the FRC Blog, 6/14/2018: https://www.firstinspires.org/robotics/frc/blog/2018-season-by-the-numbers

2018 Season by the Numbers
*Some awe-inspiring numbers from the 2018 FIRST Robotics Competition POWER UP season, and 2018 ‘usage reporting’ data!

Written by Frank Merrick.

Here are some numbers from the FIRST POWER UP season we wrapped up in April.

**30,000,000+ **
Minutes Twitch viewers spent watching official *FIRST *Robotics Competition events on FIRST Twitch channels

Total points scored in non-practice matches

Views during events on *FIRST *Robotics Competition Twitch channels

Attendees at *FIRST *Championship

Power ups played

Motor controllers used*

Non-practice matches played

Encoders used*

Teams not coding in C++, Java, or LabVIEW*

*FIRST *Robotics Competition field sets in use worldwide

8 minutes 4 seconds
Average match cycle time

4 minutes 58.027 seconds


Fastest recorded match cycle time, Wisconsin Regional Match Q50

And Finally, 205

Days until Kickoff for the 2019 game DESTINATION: DEEP SPACE!


  • The *FIRST *Robotics Competition software has a feature called ‘usage reporting’ that tracks what WPILib objects are created in each team’s code and reports that data back to the field when the robot is connected. Here’s the full set of usage data from the 2018 season, and some notes from Kevin O’Connor, *FIRST *Robotics Competition Robotics Engineer:
  • 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 a team creates extra motor controllers that aren’t on the robot, they will still be captured by this system. If a team creates 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).

Any team with rookie year 2000 and coding in python want to own up to using 212 PIDController’s? I’m a bit curious :slight_smile:

I’m curious what other languages teams are using and what support is out there for those languages.

“Anonymized” data is more anonymous for some teams than others…

Is there a larger “real world” lesson here?

I find the number of encoders (2481) to be the biggest surprise. I would have expected a lot more. And I wonder if the sub 5-minute turnaround is the fastest since Aerial Assist.

The other languages are almost entirely Python, and there are 2 teams using “Unknown” languages (rookie years 2001 and 2002). There was a .NET port of wpilib floating around a couple of years ago, not sure where that left off.

401 Copperhead Robotics as well as a few other teams program in Kotlin, a JVM language that is cleaner than Java. Plus it doesn’t have null pointer exceptions. Check out their code here:

Python is also supported through the the wpilib port RobotPy, maintained by virtuald. I think most of those 66 teams were using python. They say the best language is the language your team knows, so my team will be joining the python ranks next year.

It doesn’t count encoders connected to Talons. We had 7 but it shows up as zero.

64 teams were using Python. The remaining two were probably using C#. Kotlin (and all other JVM languages) will be reported as Java so that doesn’t show up in the “other language” data.

It should be noted that Kotlin probably shows up as Java to the usage reporting, since it still uses wpilibj.

Kotlin and other JVM languages like Scala, which was used by my team the past two years (https://github.com/team846/potassium), unfortunately aren’t included in the count of teams using non-standard languages. The statistics for those are based on language IDs that WPILib reports, so any robot code that uses the WPILib Java libraries will just show up as a Java robot.

Fun aside, our Scala code this year technically wasn’t even JVM based. We reimplemented WPILib in Scala (https://github.com/Team846/scala-native-wpilib) so that we could compile it to native code with Scala Native. But we never changed what language ID the rewrite reports so we still show up as a Java bot.

I’m not sure it is counting encoders connected directly to the Talons.

Edit: Looks like mman1506 beat me to it.

Some stats I whipped together.

Motor controller data seems pretty weird still/labeled strangely. Not 100% I got it all sorted out. I also didn’t get the same total # of motor controllers as FIRST did, but it was close.

Found it pretty funny that more teams are using Jaguars than are using Nidec motors.

Also to the** three teams using 16 solenoids**… Wow that’s crazy

4476’s personal team data (or what I believe to be) seems kinda sketchy for some things. Unsure of the data’s integrity.

Still waiting on our official language to be supported. :wink:

For reasons that are entirely unclear* to me, we are listed as a LabVIEW team… definitely not this year. You can find us on line 352.

*Unclear like a bug in some janky reporting code. :wink:

All but 9 teams are missing out on the biggest thing in robotics since wheels. What a shame:rolleyes:

Likely 8 double solenoids

C++ is slowly dying.

2016: 13.97%
2017: 12.9%
2018: 11.28%


Python is catching up to C++! :smiley:

Some summary data for 2018. 2017 data is available here.

I always learn something about my programmers from this spreadsheet. As usual, it isn’t good this year. We pulled the servos about two weeks after bag, but they’re still there. I don’t want to know why we have FIVE joysticks in our code.


Still, that’s a lot of nominally independent pneumatics devices for a year with only short-range launching. It’s hard to imagine more than two for the drive train (shifting and articulated wheels), one for a gripper, one for intake arms, one for a launcher, and maybe a separate one to push cubes into the vault. Surely pneumatic climbs and elevators were rare or nonexistent? Eight pairs seem reasonable for games like Recycle Rush, where some teams might have decided to make an all-pneumatic tetherbot to stack totes, or just had that many two-state moving pieces (e.g. Ninjabots), or Aerial Assault using the 2015+ control system and no spikes, where each solenoid valve on a launcher needed separate PCM channels.