Clawrence

A Tennis-Ball Collecting LEGO Robot

Team 25, Jonah Baskerville and Jesse Thornburg


Strategy:

We aimed to score points by finding tennis balls then driving to them in a lawn-mower type pattern. Our 3-pronged claw picked up tennis balls and lifted them up above the height of the partition wall, so one-by-one the balls could be collected and deposited onto the opponent’s side.

In a step-by-step explanation: Orient robot to drive straight along the back wall of given side of the field, reading the vision positioning system (VPS) coordinates for robot position and tennis ball positions. Calculate the position of the closest tennis ball to the robot and turn to face tennis ball. Drive straight along the back wall until square with the tennis ball. Turn 90 degrees towards tennis ball, now facing the center partition wall. Advance towards tennis ball, slowing as robot draws close to the ball, and stop right before it or when it hits the long bump switch on the robot’s front. Lower arm and close claw around ball. Raise arm to lift tennis ball above level of partition wall. Drive straight up to wall, and when front caster wheel is within 2 in. of the wall (and tennis ball is hanging over), open the claw to release the ball. Turn 180 degrees, drive to back wall, then turn 90 degrees to drive parallel to back wall. Repeat for remaining tennis balls. If golf balls are bumped into along the way, take no notice but hope they roll under the partition for more points!


Challenges:

Programming in C, specifically the concepts of threading and PID control, were difficult to implement on our robot. As neither of us are Course 6’ers, we had to change our strategy considerably from our original grandiose schemes because of programming setbacks and time consuming debugging.

Mechanically, we took too long finalizing our design to integrate all the necessary sensors so they worked as planned. We had to change many components late in the month after an unforeseen problem arose. On the last weekend, for example, we realized that the method of lifting and lowering our immense arm and claw would never work. We had planned to turn the arm on a pivot with one servomotor, but the shaft at this pivot would visibly twist without the arm moving at all. The weight of the arm, our materials, and the limited strength of the servomotor prevented our plan from being feasible so we had to quickly design and build a new lifting method – putting a shaft on the servo horn and having it pull a chain connected to the front of the claw. Many such mechanical changes made our robot a constantly-changing, unpredictable contraption.

We learned much about both the programming and mechanical sides through this experience, ending up with a machine that consistently moved if not being able to consistently score.



Acknowledgements:

We want to thank the 6.270 Coordinators for all your work setting up the class and assisting throughout the month (and through all hours of the night over the last week)! Many thanks also to the class’s corporate sponsors for funding the class and to Professor Leeb for allowing us to use his lab space.