 Note that the cmucam is not a full computer vision system. All it can tell you is the x,y location of the ball at any given moment (the ball being a brightly colored region to the cmucam, which allows it to return the x,y region center).To compute a trajectory you will need to plot the change in the x,y coordinate over time by collecting periodic samples of the ball position and noting the time on the system clock (System.currentTimeMillis()). With some math from basic physics, the ball's velocity can be calculated, from which predictions can be made about future ball location. These coordinates in frontfacing x,y will need to be translated into playingfield x,y coordinates using 3D geometry relating to visual perspective.More math from basic physics will allow you to compute the intersection of the ball trajectory (based on its current position and velocity) and the line of action of the robot (the path along which it moves). The robot can then travel to that point over time, with its position as represented in a model updated as it moves.The robot may want to continue to track the ball as it moves. Future ball positions will need to be translated geometrically relative to the robot's estimated current position, as compensating for this visual parallax is necessary to translate the ball's visual position into accurate playing field x,y coordinates.The robot Java program would need to be a continuous loop that estimates its position, the ball's position, the likely point of intersection of the ball with its path, and makes an adjustment to the robot's current movement speed (or stops).This 2 page article I found online discusses an algorithm for lanning goalie position in robot soccer:Kalman filters are useful math for estimating the velocity of a moving target from several imperfect measurements taken over time. It was developed 50 years ago for target tracking in radar systems.Best,Paul (another IntelliBrain user) Original Message From: COESent: Friday, October 02, 2009 6:43 AMSubject: [intellibrain] Soccer Robot ...
Good day Guys...
we bought intellebrain bot and sonar at ridgesoft and cmucmu cam at seattle robotics few weeks ago...
I'm going to use that for my project entitled Soccer Robot Goalie Behavior..
The rule of the Gaolie is to depend the goal, if the robot in the goal area detect a ball coming to the goal, the robot must calculate a trajectory line of the ball, where the ball possibly pass...if the robot in the goal detect the intersection point of the trajectory line and the line of action in the goal are, the robot must come the to the intersection point ahead of time...
we use sensor fusion., the cmu cam 2 and sonar sensor
my problem are
how does the robot determine the trajectory line of the ball using cmucam?
if the robot determine the trajectory line, how does the robot determine the intersection point between the trajectory line of the ball and the line of action?
if the robot determine the intersection point, how the does robot able to come to that point, to obstruct the ball???
please help us....the intellebrain bot,sonar and cmucam are expensive... we are in the philippines. ..  The following might work...* the y coordinate (vertical) of the cmucam should be a direct, linear measure of how far down the field the ball is. That is, the y coordinate is an estimate for the distance the ball is from the goalie.* The size of the ball in the cmu cam is also an approximate estimate for the distance (it gets larger as its gets closer)* the sonar sensor may be able to measure ball distance, but may often be confused by other things* these three measures could be combined into an estimated distance down the field the ball isOnce you have a measure of where the ball is down the field, you can estimate its x (horizontal) coordinate. The playing field should appear on the cmucam as a trapezoid. That is, horizontal distances compress toward the vanashing point the farther away they are. So it should be possible to take the x coordinate from the cmu cam, normalize it relative to center (so that at center, x = 0), and then multiply the x coordinate by the distance (also multiply by a calibrated coefficient that translates distance into perspective compression). This should give an estimate for the x coordinate on the field.With two measurements of the ball's x,y coordinate spaced by known time intervals, it's velocity can be estimated. The only part of the velicoty that matters is how fast the x coordinate is changing. The bot will want to "chase" the changing x coordinate to get slightly ahead of it, and just wait there.In fact, the x coordinate may be the only thing that matters. It may be possible to ignore distance altogether. If the robot changes its position so that the trajectory of the ball will take it to center bottom of the cmucam screen, that may put it in the right place to block the ball. It that case, all coordinate systems can be ignored, and the robot only needs to deal with "handeye" coordination: moving itself so that the ball's trajectory on the screen forms a line that ends at the robot.Just some thoughts...Paul Original Message From: COE SECTIONBSent: Thursday, October 08, 2009 7:49 AMSubject: Re: [intellibrain] Re: Soccer Robot ...
To All:
Have try to use the dead reckoning? It let the Ibrain bot to know it's position(x,y) and its orientation. ..i will try to experiment this one...maybe it will help me to get the coordinates of the moving ball...
Ike G.
 On Wed, 10/7/09, Peter Chatterton <peter@peterChattert on.com> wrote:
From: Peter Chatterton <peter@peterChattert on.com>
Subject: Re: [intellibrain] Re: Soccer Robot ...
To: intellibrain@ yahoogroups. com
Date: Wednesday, October 7, 2009, 11:27 AM"...the time it takes the ball to get from one point to the other is your ball.x and ball.y velocities."Isn't it the speed of the endon image? I don't see how that would be the speed of the ball,except by chance.Though I'm not saying your algorithm won't work.Peter Original Message From: blescohierSent: Tuesday, October 06, 2009 4:26 PMSubject: [intellibrain] Re: Soccer Robot ...Take the center of the goal as (0,0).
y (vertical axis)
^

0 
ball 

< x > (horizontal)
 In intellibrain@ yahoogroups. com, "Peter Chatterton" <peter@...> wrote:
>
> How can you 'capture the x and y' positions when you just have
> an endon view?
>
> Are you sure that the height of the ball isn't variable as well?
>
> Peter
>
>  Original Message 
> From: blescohier
> To: intellibrain@ yahoogroups. com
> Sent: Tuesday, October 06, 2009 11:17 AM
> Subject: [intellibrain] Re: Soccer Robot ...
>
>
> What are you considering as the x and y axes? I assume that x is 'right and left' as the goalie looks at the playing field, and that y is up and down.
>
> In that case, 2 points define a line and the time it takes the ball to get from one point to the other is your ball.x and ball.y velocities. Capture the x and y position of the ball every t milliseconds, use the distance formula (http://www.purplema th.com/modules/ distform. htm) to determine the distance traveled, and then use the velocity of the ball (v = d/t) to predict the position where the ball will cross the goal line. If that position is inside the goal, move the robot to that position... if that position is outside your goal, let it go... it will miss the goal and be a goalie kick.
>
> Bill
>
>  In intellibrain@ yahoogroups. com, COE SECTIONB <coesectionb@ > wrote:
> >
> > To Peter and Paul:
> > Thank you guys for your effort and idea.....i appreciate it so much...But if you have any idea about soccer robot (goal keeper) using cmucam, please post it here..especially it discuss about getting the trajectory line of the ball and getting the global coordinates of it....
> >
>