Prototypes are still continually being tested and modified. However, due to the many minuscule changes that often take place, it is often difficult to continually write about it all. Today was a light work day, partially due to the fact that many other activities often schedule events and gatherings on Wednesday. It was partially due to this that we left Wednesdays as a no-build day last year for the first few weeks of build. In the coming weeks, we will have much more consistent and thorough updates to this blog as we pick up the pace and decide what our robot will look like and what mechanisms we will use. Most prototypes just had CAD done on them today. So instead of that, let us tell a story.
OutOfMemoryException: A Saga
Let’s begin with some backstory. Way, way back at St. Louis champs, Grant took 2 unsuspecting programmers on a trip to see the Cheezy Poofs win their division. Ritik and Isaac AJ were mesmerized by the smooth autonomous that the Cheezy Poofs possessed. In a mad attempt to recreate their beautiful autonomous, Ritik tried implementing a system called “Trajectories” that would drive the robot along a trajectory by controlling position and speed simultaneously.
It was a failure.
Cut to late November. A mathematical genius — Andrew Gazelka — has become active on the team and started trying to recreate the smooth autonomous using a different system called “Pure Pursuit”, explained in a previous blog post. Gazelka initially used a simulator (that he built from scratch for the sole purpose of testing his code) to test his algorithm.
In the simulator, Pure Pursuit was a success.
By Winter Break, Andrew had ported all of his Pure Pursuit code from the simulator to the robot. However, it would not get tested until after Kickoff. Once it did get tested, the programmers were shocked at what they saw.
No Robot Code
Ritik, remembering from past experiences, SSH’d into the robot and attempted to manually start the script.
The programmers had never seen such an exception before. They cleared the memory with a restart of the robot, and tried again.
Donovan, being the local expert on the inner workings Java, noted that Andrew’s code made extensive use of double precision decimal numbers. After converting a great many variables to single precision floating point numbers (which are 32-bit, as opposed to the 64-bit doubles), Donovan was satisfied. Ritik pulled from GitHub and deployed.
To be continued . . .