I had some questions about your closed-loop driving as it seems very interesting!
- Reading your code, it seems like you dynamically generate motion profiles to your goal (Calculated off of joystick input?)
- How do you account for drift? We used a Spartan Board this year and saw something like 2 degrees of drift per a match. Knowing Austin, he wouldn't tolerate misalignment by 2 degrees

- In what file are you actually running your overall robot code? I can't seem to find where you use your 2016 drive classes to actually run the closed-loop drive.
- If you are generating a motion profile based on every joystick input (or every 5ms cycle?), how are you not overloading the roboRIO?
Thanks for the help!
Sorry if any of the questions are strange or ignorant, I'm not super familiar with C++ and some of the more advanced syntax and features of it. Following your code has been somewhat difficult because of that. (That said, it is written very well and is pretty well commented.)