The 2021 release of WPILib includes a modern controls addition that has been more than a year in the making, and includes code for physics simulation, system identification, model-based mechanism control, filtering and sensor fusion, and robot localization. The addition is also accompanied by a full suite of documentation that covers the API usage and the underlying math. The development effort involved five contributors, four of whom started contributing while still students on FRC teams, and added nearly 25,000 lines of C++ and Java to WPILib. This blog post aims to highlight these accomplishments and new features, while also showcasing an often-unseen side of the development process in a fun, visual way.
One part we’re really excited about in the modern controls addition are the "pose estimators,” which are easy-to-use wrappers around a variety of Kalman filters. Pose estimators latency-compensate noisy global pose measurements (e.g. vision measurements) and fuse them with wheel odometry measurements to allow teams to correct for drift and accurately localize the robot throughout the match. The pose estimators don’t require any prior knowledge of state-space modeling to use, and they’re even drop-in replacements for the existing odometry classes! While developing and testing the estimators and the Kalman filters they use, we encountered many bugs which generated “interesting” looking plots. We think our buggy plots are so visually appealing that they deserve a showcase—they’re not just examples of modern controls, they’re modern art! So, without further ado, we present the first ever WPILib modern (controls) art exhibition.
Steps Through Time
Study in Spaghetti
Plots in the Rain
Study in Two Snakes
I Fell Asleep While Drawing a Logarithmic Spiral
Runge-Kutta instability on 600:1 reduction elevator simulation (stiff ODE); no voltage was applied in the making of this plot
Why is computer graphics/visualization one of my favorite areas of programming?
Even the bugs are beautiful.