Skip to main content

Software Notes

Learning Java

Blue Pelican.

Software Notes

My software is based on Team 254's. This allows me to borrow techniques and constructs from them. For example:

  • Actions example
  • Their implementation of State machines example
  • Poses, Rotations and Transforms
  • Trajectories
  • InterpolatingTreeMaps example

Following their model also helps with collaboration - Team 195 also follows this model. This means that we can more easily collaborate and share ideas, methodologies, and sometimes even full autonomouses.

For most function of the robot, I stick to a pretty fundamental set of language features. There are a couple of places I do some whacky inheritance magic or use very language specific features but I try and keep that out of the core of the robot code.

Here's a list of important language features used:

Here's a list of software constructs used:

Here's an explanation of some Aces High constructs used:

Variable Naming Conventions

k*** (i.e. kDriveWheelTrackWidthInches): Final constants, especially those found in the Constants.java file
m*** (i.e. mPathFollower): Private instance variables

Other notes

  • I've standardized on using Hz everywhere.
  • Prefer using Interrupt Loopers. Thread.sleep() isn't the best on the RIO and the InterruptLooper uses a Notifier based on triggers or 'notifications' from the FPGA
  • Prefer using AcesRobotStatus.getFPGATimestamp() rather than Timer.getFPGATimestamp() as AcesRobotStatus will automatically pick the most appropriate timesource when running on the RIO, in a unit test, or on a co-processor
  • SparkMax subsystems were autogenerated this year. There was a lot of redundant code so to increase consistency they were moved to being generated from a template.