Design

The robot was designed to be highly modular. Up until the final days before competition, every part of our robot could easily be disassembled to allow for adjustments, such as when we changed our gear ratio from 62.5 to 1 to 125 to 1. We would highly recommend that any team taking 6.270 in the future seeks to make their design as modular as possible.

We drove Oliver with a differential drive mechanism powered by two motors—one per wheel. This allowed us to drive forward or backward by turning both rear wheels in the same direction and turn by rotating them in opposite directions. Additionally, we used shaft encoders made out of Lego pulleys and breakbeam sensors to drive the robot straight with a PID controller. We mounted our breakbeam sensors very high up in the gear box, which allowed for our readings to be of higher resolution and in turn, made the PID controller more accurate. To turn the correct number of degrees, we simply turned until the gyro indicated that the robot had rotated the proper number of degrees, accounting for a small amount of offset. Two castor wheels allowed Oliver to maintain balance and distributed weight.

Oliver collected balls by corralling them underneath the front part of the chassis. The balls stayed in place due to a "mouth" which had a limited range of free motion and was controlled by our servo. When Oliver was collecting balls, the servo stayed in the same position and the limited range of free motion allowed the balls to enter the corral while the robot was moving, but not leave it. The same servo is also attached to two Lego arms. When the position of the servo changed from the "closed" corral position to the "open" position, the "mouth" opened by raising up its Lego assembly and the arms pushed forward to propel the small red balls into our goal.

The robot also had wheels on its right side which were going to be used to move the gears on the flag box. The three wheels were on separate axles and had gears connecting them together via Lego chain. A third motor powered this assembly.

Our robot was designed to determine where it was on the game board based on four distance sensor readings. Given another chance to create a robot for this specific competition, we would have focused on reading the colors on the floors with a LED/phototransistor pair. Originally, we had chosen to use the distance sensors to avoid dead reckoning until our robot was near the black lines on the game board. In hindsight, dead reckoning would have worked well enough to get to the lines effectively—so long as we always charged Oliver's battery before each round (as the charge of the battery affected how quickly the motors spun).