This post is about how little differences might cause huge effects in the end. Our team was building a Robot Arm for the Science Olympiad, Division C event. After telling it where the bonus box is located and giving it the start command, it was supposed to be working completely autonomous via a per-determined script to move all elements into their respective target boxes.
The main brain of the arm was again a little Arduino Mega ADK supported by a Maestro Servo Controller to handle the RC servo commands. The motors were different RC servos, selected for the required torque. Many support elements came from the lynxmotion servo erector set or were build by hand. The Arduino sketch and all the required supporting docs are available @ my (the dad’s) github account;-)
This worked pretty well in the test environment in our living room. One early test run in November 2012 looked ok:
This was gradually improved with the extra ball claws and updated programming.
BUT on the day of the competition, not much worked as expected. The arm caught the West goal box pretty early one and pushed that around on the field which in turn pushed many of the elements away from the program expected them:-( So a little problem caused the run to end up with a score of 23 points or so:-( Not what we expected. Thanks to the event supervisors for the video. This was a closed event, so the video was all I saw.
After the competition, I tried it one last time before the arm was partially dismantled and stored. That run was again much better and I calculated a possible score above 80 points.
So what did we learn? Autonomous works ok for the time limit, but a little difference can quickly screw up everything:-(
As always, have fun exploring!