RoboHockey

I'm in an EE Senior Design class right now and our project is to design a robot to play air hockey against. They've done it for 3 years now
and have not even gotten close to anything decent. Luckily we're a talented group. We've done a lot of research and are thinking of going with a CMUCam2 http://www.cs.cmu.edu/~cmucam2/
It seems like the perfect tool for our use. It quickly tracks the brightest object it sees (which will be the puck) and then can be programmed to control upto 5 servos (to control the arm). We're a bit nervous about it as one, most of us haven't done a project like this before, and two, it would eat most of our budget. So if its the wrong thing we would be screwed. If you have any experience with the CMUCam or really fast vision and robotics systems your advice and experience would be greatly appreciated.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Dave,
If you're interested in the vision direction be sure to check out http://www.roborealm.com/ which is a software app that can be used with a quickcam to do much more powerful image processing than what the CMUCam is capable of. We've (RoboRealm) also helped with a couple projects that are similar (i.e. using vision to track moving objects) and would be glad to help out as possible. Can you post any pictures of the last events? Perhaps one with the 'bright' puck?
Feel free to contact us at snipped-for-privacy@roborealm.com
RoboRealm.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
I don't have any pictures yet. I will see if I can get some this weekend. It is a very simple board. Black background and we can color the puck any color we would like. Working with robots you would know well, what are the best and fastest ways to control servos with a pc? How much of a delay do you think there would be in such a system?
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
I think that is making it too complicated, and the cmucam is too slow.
I saw an app that did this, no camera. 2 banks of reflective beam sensors over center of table tracked the puck's velocity and trajectory.
Single linear actuator to hit the puck.
I have seen it done with a

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
It looks like your post got cut off. We thought of this idea but didn't come up with much when we researched it. If you have any additional info or links we'd appreciate it.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
What's the budget?

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
400 bucks
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Yeah, I can think of a bunch of different ways to do this, but a 2D camera isn't one of them.
Mike

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Take a look at:
http://www.itiomar.it/pubblica/progetti/visione_w.wmv
and also:
http://www.itiomar.it/studenti/omarobot/fotop/index.htm
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
dave,
a few comments:
1. cmucams can control rc servos. for the speed and power it will need to play a human you'll need real servos, not rc servos. they're way more expensive (though cheap on ebay) and much more of a pain to drive but i just don't see a robot driven by rc servos beating a human.
2. air hockey is a fast game and latency is going to be critical. i don't know how good the cmucam is. cheap usb cameras are almost certainly out of the question. if you can engineer the table such that the problem is just "find the bright spot on the black background" maybe you could just use an analog monochrome video camera ($40 ish) and some simple circuitry to figure out the position from the video signal. i have done something similar to this before so let me know if you have questions.
chris
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Yes,
You need to figure out the problem, before stabbing at a solution.
Velocity of the puck, and force required to hit it.
I think that simple sensing, a cheap micro, and an inexpensive actuator are the key.

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
The table is very small as is the size and weight of the puck. We are building this for one of those cheap 4 foot tables. I am fairly sure that rc servos would do the trick. On a full size air hockey table the puck is usually pretty heavy and can be hit with a great deal of force. This table is much less hard core. I will mention to my team that we should take some mass and velocity measurements.
blueeyedpop, you mention 'simple sensing' and that you can think of a number of ways of doing it but none are with a vision system. Could you elaborate?
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Break beam sensors can be built cheaply, and connected to a microcontroller, produce very accurate timing, for instance. Two of these would give you a velocity. That is 1/2 the problem.
Why don't you think about it a while, bounce some ideas out here, and let the group give opinions.
Mike

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Thanks for the input everyone, I am one of Dave's teammates on this project, and I had a few questions.
Break beam sensors would give the velocity, but as far as position relative to blocking a goal, we would need to set up an array of crossing beams to form a checkerboard like pattern across the table to get accurate velocity AND position.
If a detection scheme can give us the position, it should be able to give us the velocity too, we would need 2 frames minimum to decide where the puck will eventually go, and if these frames are at controlled intervals, it gives us velocity too. That is why a camera based operation seems much more viable.
While break beam sensors can also do this, to find just velocity, yes you only need two, but to find velocity AND position, you would need several, I myself am not familiar with any software kits that could handle a single break beam sensor, (looking for an interfacing scheme, not sure how to word it), let alone a more complex array of them.
We have not been able to come to a firm decision on what camera we are planning on using (or if, still trying to find the best route). The problem for me personally is that until a detection scheme is decided, only very general algorithm style work can be done on the rest of the project, so we will probably make a decision in the next few days.
Thanks for the all help from everyone who contributed, its very much appreciated.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

You only need two pairs of beams (4 beams total). One pair of beams will give you the velocity perpendicular to the beams, a second pair at 90deg to the first will give you an X and Y component velocity.
Since you know the X and Y velocities, and the time the X and Y beams were broken, you can calculate the position of the puck at any time (ignoring friction -not huge anyway).
If you rotate the cross of beams to be at 45deg to the table, the puck cannot cross the table without breaking all 4 beams. (Though if the puck bounces off the side it will affect the calculation. If the puck MUST bounce you can do it with just 3 beams, one of which is broken twice)
Andy.

--


Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
DaveFowler wrote:

Very cool project...sounds like a lot of fun to tackle. As was mentioned by others, the mechanical details are really going to need some consideration here, in addition to the vision issues you identified. Presuming that the speed your are hoping to attain is a "normal" air-hockey game, you are definitely talking about some serious mechanics.
Regarding the vision portion: if you haven't already checked it out, look into the AVRcam too. It is similar in function to the CMUcam but cheaper and all open-source (so you can make modifications if needed). It doesn't provide direct servo output, though I'm not really sure if standard servos are going to be sufficient for the task at hand. This is where some experimentation would be quite helpful. I'd suggest perhaps rigging up a joystick that lets you control a servo acting as the goalie on the air-hockey table to test out some of the mechanics here. You can probably assume your visual processing of the puck will be on par with what a vision system can do (at least regarding frame-rate), and you'll be able to see if the lag in response of the servo will be an issue.
You can get more info on the AVRcam at http://www.jrobot.net/Projects/AVRcam.html . Standard disclaimer: I designed and sell the AVRcam. But its meant for hobbyists, and all sorts of projects just like this.
And there is a comparison I put together between the AVRcam and the CMUcam2 a few months back, which can be found here:
http://www.jrobot.net/Forums/viewtopic.php?p#0#230
Good luck, and keep us posted of your progress!
John O www.jrobot.net
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here. All logos and trade names are the property of their respective owners.