Challenges

While our strategy was usually very effective, we encountered some challenges along the way. One of the most annoying problems we had was our inability to implement a timer so that the robot knew when the match was almost over so it could score whatever balls it was holding. Our design allowed for 3 tennis balls to be held and scored at once, but we often found practice matches ending while we still held one or two balls, and it seemed like a waste of points to not score whatever we picked up. We finally decided to just score every time we picked up a ball, which worked well but wasted time constantly driving to the wall to score. We thought this problem would be easy to solve, so we didn't really leave ourselves enough time to come up with a fix.

Another challenge was the fact that our robot had to be extremely accurate in any moves towards a tennis ball because if we were off by just an inch or two, we would knock the ball away. The first mock competition showed us that we could navigate very effectively, but when we built the lift mechanism, we saw our robot consistently missing targets by just a few inches. After some very helpful advice from one of the organizers, we realized that the geometry involved with the viewing angle of the camera was possibly affecting our accuracy. Basically, our robot was a foot tall and the tennis balls are about 3 inches (more like 2.8, but who's counting?), so that's a difference of 9 inches (math!) in height. The camera, however, sees everything in just one plane. Its plane of view was actually at the height of the walls (6 inches), so both the tennis balls and the robot were at a different height, which basically put them in their own coordinate frame based on the viewing angle of the camera. Some pretty complicated geometry went down, and Kevin came up with some equations to normalize the tennis balls and the robot to basically the correct height in the camera's eye. After implementing these formulas, we were much more accurate and able to pick up tennis balls reliably. 

The obvious problem with our robot that can be seen when comparing it to other robots (most notably Team Hungry's robot) was that we could only lift one ball at a time. We had no idea the servos were strong enough to lift even one ball, let alone 2 or 3 at once. Had we known the strength of the servos, our design probably would have been different. Overall, the lift mechanism was very effective and reliable, but it would have been nice to be able to pick up multiple balls at once.