Changes for page Ball Physics

Last modified by Soeren Domroes on 2025/01/30 12:18

From version 3.1
edited by stu104225
on 2020/03/03 18:55
Change comment: There is no comment for this version
To version 11.1
edited by stu104225
on 2020/03/09 08:29
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,55 +1,137 @@
1 +The **ball physics model**'s main objective is to provide a point in time to the controller, when the ball is predicted to be hittable, in order to not let the ball fall into the drain.
2 +
1 1  \\
2 2  
3 -== Task ==
5 +\\
4 4  
5 -The ball physics model is meant to do things ...
6 6  
7 -\\
8 8  
9 -== Configuration ==
9 +{{toc/}}
10 10  
11 -=== Points of interest ===
11 +== Ball trajectory ==
12 12  
13 -\\
13 +----
14 14  
15 -[[image:attach:physics_points.png]]
15 +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.
16 +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.
16 16  
17 -=== Flipper range ===
18 +[[image:attach:Bildschirmfoto von 2020-03-07 12-21-22.png]]
18 18  
19 -\\
20 +The incline of the playfield causes a vertical acceleration, which is modeled via a graviatational pull with the factor //g = sin(6°) * 9.81 m/s²//.
21 +The value of 6° is the incline of the playfield  measured on the physical device.
20 20  
21 -\\
23 +== Prediction ==
22 22  
23 -\\
25 +----
24 24  
25 -\\
27 +It systematically tests future times for if the corresponding predicted position is in the flipper range.
26 26  
27 -[[image:attach:physics2.png]]
29 +== Configuration ==
28 28  
29 -\\
31 +----
30 30  
31 -=== Inlane Area ===
33 +=== Prediction parameters ===
32 32  
33 -[[image:attach:physics_inlane.png]]
35 +(% class="wrapped" %)
36 +|=(((
37 +Parameter
38 +)))|=(((
39 +Description
40 +)))|=(((
41 +Default value
42 +)))
43 +|(((
44 +PREDICTION_FRAME
45 +)))|(((
46 +window size for prediction - How far
34 34  
35 -\\
48 +into the future are predctions calculated at most.
49 +)))|(((
50 +70ms
51 +)))
52 +|(((
53 +PREDICTION_STEP_SIZE
54 +)))|(((
55 +size of the steps for the forward search
56 +)))|(((
57 +10ms
58 +)))
59 +|(((
60 +REFINEMENT_FACTOR
61 +)))|(((
62 +The prediction step size for the reverse search is
63 +PREDICTION_STEP_SIZE divided by REFINEMENT_FACTOR.
64 +)))|(((
65 +10
66 +)))
36 36  
37 -=== Prediction parameters ===
68 +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.
69 +Nevertheless it is reasonable to calculate predictions beyond the next frame in case a ball is not recognized on the next frame.
38 38  
39 -\\
71 +With the default values up to 7 predictions are calculated if the ball is not predicted to be in flipper range roughly within the next two frames.
40 40  
41 -\\
73 +The REFINEMENT_FACTOR is also the worst case number of predictions calculated during the reverse search part of the prediction process.
42 42  
43 43  \\
44 44  
45 -\\
77 +=== Flipper range ===
46 46  
47 -\\
79 +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 meter
48 48  
49 -\\
81 +and should not need further adjustment after the camera is correctly calibrated (see [[doc:World Coordinate System]]).
50 50  
51 -\\
83 +The values for the left flipper are set to be symmetrical.
52 52  
85 +[[image:attach:physics_points.png]]
86 +
87 +(% class="wrapped" %)
88 +|=(((
89 +Point#
90 +)))|=(((
91 +Description
92 +)))
93 +|(((
94 +1
95 +)))|(((
96 +center point of the circle that the flippers tip moves o
97 +)))
98 +|(((
99 +2
100 +)))|(((
101 +highest point a ball can be at when it hits the resting flipper
102 +)))
103 +|(((
104 +3
105 +)))|(((
106 +lowest point a ball can be at when it hits the resting flipper
107 +)))
108 +|(((
109 +4
110 +)))|(((
111 +lowest point a ball can be at when it hits the fully triggered flipper
112 +)))
113 +|(((
114 +5
115 +)))|(((
116 +highest point a ball can be at when it hits the fully triggered flipper
117 +)))
118 +
53 53  \\
54 54  
121 +From these points an area, where the ball is deemed to be hittable, is computed.
122 +
123 +[[image:attach:physics2.png]]
124 +
55 55  \\
126 +
127 +=== Inlane Area ===
128 +
129 +Since the trajectory prediction does not consider collisions in general, we need a different kind of predictions for the inlanes,
130 +i.e. the path feeding a falling ball from the playfield to the flippers, behind the slingshot.
131 +A ball is considered to be in an inlane, when it is in a rectangualar area, with one edge given by the begin of the flipper
132 +and the other by a point at highest, outermost position of the angled part of the inlane.
133 +
134 +In this area the vertical accelleration is deactivated in the prediction, since it would cause the prediction to assume the would slide into the wall.
135 +Though in reality the still is some accelleration, a simple linear prediction has shown to be practical in this less critical area.
136 +
137 +[[image:attach:physics_inlane.png]]
Confluence.Code.ConfluencePageClass[0]
Id
... ... @@ -1,1 +1,1 @@
1 -71401639
1 +71401665
URL
... ... @@ -1,1 +1,1 @@
1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/PP18/pages/71401639/Ball Physics
1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/PP18/pages/71401665/Ball Physics