Fastest recorded match cycle time, Wisconsin Regional Match Q50
And Finally, 205
Days until Kickoff for the 2019 game DESTINATION: DEEP SPACE!
Frank
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).
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.
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.
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.
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.
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.
Edit:
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.