A few weeks ago, my computer programming class began to work with Scribbler 2 robots. The scribbler robots are small, simple robots that can easily be programmed using the Institute for Personal Robots in Education's Myro library. The scribblers can communicate with their controlling device over a Bluetooth connection using IRPE's Fluke extension. While the Scribbler robots are very easy to program and control, and can do a large variety of things including taking pictures, recognizing other Scribbler's, draw, et cetera... they are most certainly not without their faults. Through first-hand experience, my class learned that consistently producing the same result from executing the same code is impossible.
In typical use, one operating a Scribbler robot using the standard Myro module cannot specify precise movement procedures such as turning to a specific degree or moving a specific distance. Instead, users must specify a duration to move the robot and hope that it is the proper duration for the exact measurement of movement they desire. However, even if one does manage to find the correct timing for the movement they desire, that timing will not be consistent. The RPM of the Scribbler's wheel motors slows perpetually as the voltage of the battery lowers from full.
This decay in speed as battery voltage decreases has proven it to be impossible to accurately and precisely control the movement of a Scribbler while maintaining consistency in results from the same exact execution of code in repeated tests. Code that will cause the Scribbler to move forward exactly 10 centimeters today, might cause the same Scribbler to move forward 8 centimeters tomorrow, or 15 centimeters the next day. This poses problems when trying to create precise sequences of movements that are consistent.
Through much experimentation, mathematics, and some head-banging, I was able to develop a formula to correctly correlate voltage to RPM.
The resulting program, I called GPSS- GPSS is a Precise Scribbling System. Using GPSS, a user can specify the exact degree they want the Scribbler to turn to, or the exact distance they want the Scribbler to move to, and the Scribbler will consistently reproduce the same results regardless of battery voltage. (Almost).