This is a nice project, nice to watch and nice to contemplate. Take the parts needed to build a 3D printer and convert them into an air hockey playing robot complete with clever software to make it a challenging opponent.
Jose Julio decided to make use of the parts that would otherwise have gone to build a 3D printer to build an air hockey playing robot instead.
Because his daughter enjoyed playing air hockey and, I suspect, so did he.
He not only built the robot but the air table as well using two old PC fans and a hand drilled board. The key components for the robot from the RepRap 3D were the stepper motors and the slide that they powered. He settled on a three-motor design - two for the y-axis and one for the x-axis. You might guess that the control was an Arduino and it needed custom software to move the robot puck.
The problem of working out what the robot should do was solved using a video camera, a PC and some custom C programming based on OpenCV. The image processing works by detecting the color of the puck. The position of the puck is passed to the Arduino via a serial port and the video information is also used to correct the stepper motor positioning for lost steps.
Next came the game play.
Surprisingly this is implemented in the Arduino. The position of the puck in two frames is used to compute a velocity vector and hence a trajectory. The trajectory also takes account of possible bounces off the wall.
What the robot actually does is controlled by a strategy subsystem that is designed to be modular enough to allow it to be modified independently of the rest of the system. The strategy system can choose to implement a defense, defense+attack or prepare a new attack.
Take a look at the video of it in action:
If you would like to implement the idea then Jose has placed all of the information you need on GitHub and has even created a build manual. It is a great project for teaching robotics, physics, math, woodwork ...
As Jose comments:
"A nice part of this project is that the Strategy subsystem is fully insulated and is very easy for everyone to modify this part and program their own strategy algorithms isolated from the complexities of motor control, vision system and prediction code. The strategy is what makes the robot wins or lose! so in the future we could see Air Hockey robot competitions?"
Sounds fun to me!