The trajectory of a ball can be modeled to be parabolic. From two point p and p_old with corresponding timestamps, the velocity v is computed.
For a future point in time t, with t=0 being the timestamp of p, we can then approximately approximately predict the corresponding ball position using the following formulas.
The incline of the playfield causes a vertical acceleration, which is modeled via a graviatational gravitational pull with the factor g = sin(6°) * 9.81 m/s².
The value of 6° is the incline of the playfield measured on the physical device.
The controller calls the function full_prediction passing it two subsequent ball positions with timestamps. From these a ball trajectory is infered inferred as described above.
Along the trajectory future times times are stepwisetested stepwise tested for whether the corresponding predicted position is in the flipper range.
Once a position inside the flipper range is found the search is contiunued continued both forwards and backwards in smaller steps in order to find a good enough estimate of the first and last possible time to hit the ball.
If the trajectory does not intersect the flipper range within a certain prediction frame (see below "Prediction parameters") a value far enough into the future is returned, that will be overwritten by subsequent predictions.
window size for prediction - How far
into the future are predctions predictions calculated at most.
size of the steps for the forward search
The prediction step size for the reverse search is
When setting the PREDICTION_FRAME keep in mind , that predictions, that reach multiple frames into the future, are likely to be overwritten, when new frames arrive and new predictions are calculated.
Nevertheless it is reasonable to calculate predictions beyond the next frame in case a ball is not recognized on the next frame.
The model of the area, where the the flippers can hit a ball is computed from a set of five points. These points are set to real world coordinates in metermeters
and should not need further adjustment after the camera is correctly calibrated (see World Coordinate System).
Since the trajectory prediction does not consider collisions in general, we need a different kind of predictions for the inlanes,
i.e. the path feeding a falling ball from the playfield to the flippers, behind the slingshot.
A ball is considered to be in an inlane, when it is in a rectangualar rectangular area, with one edge given by the begin beginning of the flipper
and the other by a point at highest, outermost position of the angled part of the inlane.
In this area the vertical accelleration acceleration is deactivated in the prediction, since it would cause the prediction to assume the ball would slide into the wall.
Though in reality the there is still is some accellerationacceleration, a simple linear prediction has shown to be practical in this less critical area.