Our senior design project (at Georgia Tech) was an open ended design. We chose to create an autonomous foosball table. The ball as well as the opponent players are tracked in a vision system — a downward looking webcam. All the main processing is done on an 800 MHz pentium 3 PC in Java, using the Java Media Framework. Once the processing is finished, the PC issues commands to a PIC microcontroller across a serial line. The microcontroller then issues commands to servos to move or kick.
$500 (plus an old laptop, but any computer would do)
- Michael Aeberhard (Computer Engineering)
- Shane Connelly (Electrical Engineering) [Me!!]
- Evan Tarr (Electrical Engineering)
- Nardis Walker (Electrical Engineering)
The project worked pretty well, but there were a few major setbacks:
- The gears weren’t large enough to attain the lateral speeds we wanted. We tried looking up larger gears, but every company wanted to charge us a $1500+ setup/tooling cost, which was out of our price range.
- We bought the Philips SPC-900NC, which boasts an impressive 90FPS @ 640×480. It turns out Philips is a big bunch of liars. The “90fps” must be via a software (driver) interpolation or frame multiplication scheme in Windows, because the webcam actually does a maximum of 30FPS (though we had to run it in a compressed image mode at 15FPS to get even 320×240 resolution)
- Because of the camera thing, I think if we were to do it again and we had some more time/money, we would do the entire software implementation on an FPGA and just mount a CCD camera directly to it. This would eliminate communication delays and any restrictions imposed by USB (or any other standard) as well as speed up processing efficiency.
- We’re not mechanical engineers! We probably should have never considered the gear/rack setup and gone directly to a belt system. The servos just aren’t fast enough and the gears slip off the tracks too easily. Most MEs probably would have realized this at the onset.
- The kicking servos (HS-81s) were fast, but not fast enough. At 0.09 seconds per 60 degrees of rotation, they had a hard time kicking a ball hard enough to really beat an intelligent player.
- A more intelligent AI would have been nice, but with all the other setbacks, it wasnt really feasible to implement a lot of ideas. For example, the kicking servos only rotated 90 degrees (though we tried, and failed, to modify them to 180). This prevented us from making complicated moves like “pass between offense, set servo back to open a shot, then kick.” Also, without being able to get to the ball quickly in a lateral motion, it becomes difficult to do complicated moves.