[FRC Blog] WPILib

From: WPILib | FIRST

Written by Kevin O’Connor, Robotics Engineer, FIRST Robotics Competition.

*Perhaps it would be nice to have a Frank blog post about the WPILib team, the history, who they are, how they work, how to report bugs or feature requests, etc.

        -Brian Rozmierski

Great questions, Brian! As the FIRST Staff member responsible for managing the FRC Control System team, Frank asked me to share a little bit about the WPILib team. Before anyone TL;DRs or falls asleep, there may be a special opportunity tucked away at the end of this blog post (no, it’s not a game hint!).

https://www.firstinspires.org/sites/default/files/uploads/frc/Blog/2019/2019-wpilib-logo.png

History
WPILib was originated in 2005 by WPI professor Brad Miller as a way to simplify program development for the IFI robot control system being used in FRC at the time. The intent was to abstract away some of the lower level details of the hardware (interrupt routines, voltage measurements and conversions, communications details, etc.) and allow students to focus on solving higher level problems. When National Instruments (NI) was working on the cRIO control system for the 2009 FRC season, WPILib was identified as a good supplement to provide support for teams programming in C++ and became an official part of the system. A year later, Java support was added as a result of work done by WPI students working on a senior project (MQP). Since then WPILib has continued to grow and evolve as the primary library used by C++ and Java teams in FRC.

Who Are They?
“Modern” (cRIO and later) WPILib development was originally done by Brad and a small number of WPI students with additional support on the initial release from DEKA, BAE Systems, NI (especially Joe Hershberger), and a few other volunteers. As WPILib has migrated closer to an Open Source model, we have assembled a larger group of “Core Developers” who handle most of the development of the library and tools. These folks are a combination of current and former WPI students and FRC community members who were asked to become Core Developers based on consistent or significant contributions to the libraries. The current list of Core Developers (alphabetical):

FIRST: Kevin O’Connor

WPI (current): Ryan Benasutti, Sam Carlberg, Arjun Gandhi, Evan Gilgenbach, Ryan Lapoint, Brad Miller, Austin Shalit, Griffin Tabor

WPI (alumni): Jonathan Leitschuh, Patrick Plenefisch, Fred Silberberg

Volunteer: Jaci Brunning, Thad House, Peter Johnson, Joe Ross, Dustin Spicuzza, Tyler Veness

You can see a video depicting a graphical history of WPILib development from 2012 to 2018 here. A full list of contributors can be found on the Contributors tab of the Github repos for each project: Contributors to wpilibsuite/allwpilib · GitHub

Additional development support is also provided by Cross The Road Electronics (CTRE) and NI as members of the Control System team.

How Do They Work?
The WPILib development team uses a few different tools/methods for communication and coordination:

  • Control System Team calls: Throughout the year members of the FRC Control System team (FIRST, NI, CTRE, WPI) have weekly calls to track status on Control System development
  • WPILib Developer Slack: A Slack Workspace set up to allow WPILib Core Developers to communicate with each other and with other members of the CS Team. Note: This Slack is also connected to a WPILib Gitter that community members can use to talk with the WPILib team.
  • GitHub: GitHub Issues and PRs are used to communicate regarding specific issues or changes

Each year we brainstorm and collect ideas for improvements in the period shortly after Championship, implement over the summer, test in the fall, and prep to ship by Kickoff. During the FRC build and competition seasons, changes are limited to bug fixes we believe are impacting teams and unlikely to break existing functional code.

Where is the Code?
How Do I Report Bugs?
How Do I Contribute?

Yes, the three headings in a row is on purpose! The answer to all of these questions is GitHub! The WPILib developers have code for all of the WPILib libraries and tools contained in a single GitHub Organization. The code for all of the robot libraries (including CameraServer/cscore, NetworkTables/ntcore, and WPIUtil) is contained in the “allwpilib”](GitHub - wpilibsuite/allwpilib: Official Repository of WPILibJ and WPILibC) repository. Code for other tools such as SmartDashboard, Shuffleboard, RobotBuilder, OutlineViewer, and more are contained in their own repositories inside the organization.

To report bugs, or request features, open an Issue in the appropriate repository on GitHub. Want to learn more about GitHub Issues? See GitHub’s Issues documentation

Contributions to the library are definitely welcome! To see what types of contributions we may be looking for, and to learn more about contributing, see the Contributing.md file in the allwpilib repository.

As mentioned above, WPILib developers also monitor the WPILib Gitter if you’re looking to ask questions, get pointers on Issues that you may be able to help with, etc.

Special WPILib Alpha Test
Way back up at the top of this blog, I promised a special opportunity for those that stuck around to the end. For the 2019 season, C++ and Java development are moving from Eclipse (with deploy based on Ant scripts) to Microsoft’s VS Code (with deploy based on Gradle via GradleRIO). Given this significant change, we wanted to provide an opportunity for all teams to be able test the new IDE and tooling. The alpha is open to everyone to try, and will use existing 2018 core libraries (wpilib, ntcore, cscore, etc), meaning it is compatible with your robots, existing code and vendor libraries (like NavX, Phoenix, etc). More info about the alpha test, and instructions on how to get started with the new VS Code system can be found on ScreenSteps.

I feel a little cheated here at the end of the post. I suppose all the none Chief Delphi people didn’t know about the announcement last week but I have been previewing the alpha release for a week already.

Big shoutout to the whole WPILib team for the tremendous improvement in the library over the past few years, and the great responsiveness to issues reported on the github.

I’m a big fan of these types of behind the scenes kind of blogs, similar to some of the ones The Blue Alliance has posted. WPILib is one of those amazing resources that is really easy to take for granted, especially since it’s seemingly been around “forever”. This post did a great job of teaching us about the history and giving us an idea of how it all works. Cool stuff.

I kinda agree. They take feedback seriously and even though my attempt at getting ROS recognized (I lost a bet - thanks Kevin!) was met with some skepticism - the change was seriously implemented not that long ago and I’m looking forward to seeing it in the 2019 report data.

Also, Brad is a rock star and knows all the cool people at OSRF.

I was going to reply to my post but that work thing got in the way.

Seeing as Frank and Kevin were so gracious to out me as the muse behind this post, RIP phone battery, I wanted to say a few words.

As my team enters our 4th year in FRC we have a far clearer picture of the FIRST ecosystem, and some conversations in Slack a few weeks ago brought to light the work the WPILib team and contributors do every year. When I went to find some answers to the questions I eventually posed to Frank to base a blog post on, I found they were not easy to find.

Everyone knows who makes the KoP chassis, who offers CAD software, the radios, etc. The people beind WPILib, which powers a large percentage of our robots (at least until ROS takes off :rolleyes: ) toil in relative obscurity.

So, to them I say thank you, take a bow, you deserve it.

See that I was somewhat negative about the information in the latest blog post… Thanks Kevin and The Other Frank!! It is nice to have the story of WPILIB to be able to refer our rookies to. Also nice to be able to learn the new programing tools before the rush of kick off. Good Job.

Don’t worry, I try to bring up ROS into as many official discussions on the WPIlib Slack as I can. :wink: :smiley:

“Excuse me, have you heard about our turtle-lord and savior, ROS?”

Why use bxd synthesis when you can use turtlesim?

Gazebo would probably be more analogous but Isaac Sim has my attention at the moment.