[PROS] Olympic Steel Eagle I (7701) Skyrise Code Release/Review

This past season, my team utilized Git as a version control for our code repository, instead of resorting to Google Drive. As my final robotics season is wrapping up (you can expect the status quo sappy thank-you post soon), I thought it would be fitting to share the hard work we’ve put into developing the software for the Olympic Steel Eagles. This year, we worked with PROS as it is a free alternative to ROBOTC and granted us more freedom with how and where we work with our code. For instance, I could use Visual Studio and my partner could use Kate, however we’re able to both write and build code. We also chose PROS because Boiler Up! We hosted the repository on Visual Studio Online which allowed us to maintain a private repository throughout the year. We have since migrated over to GitHub, and you can view the repository by going to github.com/edjubuh/ose.

The OSE Code repository contains three primary “projects.” The first (vulcan) is the source code for our robot, and contains all the competition and subsystem code. The second and third projects are libraries that extend motor and LCD screen functionality and are called libsml and liblcd, respectively. libsml contains a generic PID controller implementation (SingleThreadPIDController) and a master/slave PID implementation that runs on a separate task for use in applications such as lift stabilization. libsml also provides a MotorManager which accomplishes linear acceleration and handles motor reversals in a separate task. liblcd mostly contains extended lcdprint functions that enable duration printing, scrolling, and text alignment on the LCD screen, and also contains a buggy LCD background text cycler and a complete basic LCD menu. Oh, I might as well mention that a Buttons API is fully implemented and is a stupid-simple way to have “press-once trigger control” that inevitably pops up everywhere on the forum.

That should cover all the basics of the repository and everything else should be well-documented. Feel free to reuse any of the code posted, however, as always, I recommend that you rewrite whatever you want to use rather than copying and pasting as you will learn more that way. I will probably be accepting fork requests on the repository if you want to make any public changes.