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 13.1
edited by stu122612
on 2023/07/06 14:48
Change comment: Renamed from xwiki:PP18.Ball Physics

Summary

Details

Page properties
Parent
... ... @@ -1,0 +1,1 @@
1 +Project Documentation
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.stu104225
1 +XWiki.stu122612
Content
... ... @@ -1,55 +1,140 @@
1 -\\
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 +The code for what is described in this section can be found in the files "physics.cpp" and "physics.h".
2 2  
3 -== Task ==
4 4  
5 -The ball physics model is meant to do things ...
6 6  
7 -\\
6 +{{toc/}}
8 8  
9 -== Configuration ==
8 +== Ball trajectory ==
10 10  
11 -=== Points of interest ===
10 +----
12 12  
13 -\\
12 +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.
13 +For a future point in time //t//, with //t=0 //being the timestamp of// p//, we can then approximately predict the corresponding ball position using the following formulas.
14 14  
15 -[[image:attach:physics_points.png]]
15 +[[image:attach:Bildschirmfoto von 2020-03-07 12-21-22.png]]
16 16  
17 -=== Flipper range ===
17 +The incline of the playfield causes a vertical acceleration, which is modeled via a gravitational pull with the factor //g = sin(6°) * 9.81 m/s²//.
18 +The value of 6° is the incline of the playfield  measured on the physical device.
18 18  
19 -\\
20 +== Prediction ==
20 20  
21 -\\
22 +----
22 22  
23 -\\
24 +The controller calls the function //full_prediction// passing it two subsequent ball positions with timestamps. From these a ball trajectory is inferred as described above.
25 +Along the trajectory future times are stepwise tested for whether the corresponding predicted position is in the flipper range.
26 +Once a position inside the flipper range is found the search is 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.
27 +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.
24 24  
25 -\\
29 +With the current configuration the controller uses the middle point in time between the first and last possible time in order to be most positive to hit the ball.
30 +The computed velocity is also passed to the controller and used is some more advanced  tactical decisions like catching balls.
26 26  
27 -[[image:attach:physics2.png]]
32 +== Configuration ==
28 28  
29 -\\
34 +----
30 30  
31 -=== Inlane Area ===
36 +=== Prediction parameters ===
32 32  
33 -[[image:attach:physics_inlane.png]]
38 +(% class="wrapped" %)
39 +|=(((
40 +Parameter
41 +)))|=(((
42 +Description
43 +)))|=(((
44 +Default value
45 +)))
46 +|(((
47 +PREDICTION_FRAME
48 +)))|(((
49 +window size for prediction - How far
34 34  
35 -\\
51 +into the future are predictions calculated at most.
52 +)))|(((
53 +70ms
54 +)))
55 +|(((
56 +PREDICTION_STEP_SIZE
57 +)))|(((
58 +size of the steps for the forward search
59 +)))|(((
60 +10ms
61 +)))
62 +|(((
63 +REFINEMENT_FACTOR
64 +)))|(((
65 +The prediction step size for the reverse search is
66 +PREDICTION_STEP_SIZE divided by REFINEMENT_FACTOR.
67 +)))|(((
68 +10
69 +)))
36 36  
37 -=== Prediction parameters ===
71 +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.
72 +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 -\\
74 +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 -\\
76 +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 -\\
80 +=== Flipper range ===
46 46  
47 -\\
82 +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 meters
48 48  
49 -\\
84 +and should not need further adjustment after the camera is correctly calibrated (see [[doc:World Coordinate System]]).
50 50  
51 -\\
86 +The values for the left flipper are set to be symmetrical.
52 52  
88 +[[image:attach:physics_points.png]]
89 +
90 +(% class="wrapped" %)
91 +|=(((
92 +Point#
93 +)))|=(((
94 +Description
95 +)))
96 +|(((
97 +1
98 +)))|(((
99 +center point of the circle that the flippers tip moves o
100 +)))
101 +|(((
102 +2
103 +)))|(((
104 +highest point a ball can be at when it hits the resting flipper
105 +)))
106 +|(((
107 +3
108 +)))|(((
109 +lowest point a ball can be at when it hits the resting flipper
110 +)))
111 +|(((
112 +4
113 +)))|(((
114 +lowest point a ball can be at when it hits the fully triggered flipper
115 +)))
116 +|(((
117 +5
118 +)))|(((
119 +highest point a ball can be at when it hits the fully triggered flipper
120 +)))
121 +
53 53  \\
54 54  
124 +From these points an area, where the ball is deemed to be hittable, is computed.
125 +
126 +[[image:attach:physics2.png]]
127 +
55 55  \\
129 +
130 +=== Inlane Area ===
131 +
132 +Since the trajectory prediction does not consider collisions in general, we need a different kind of predictions for the inlanes,
133 +i.e. the path feeding a falling ball from the playfield to the flippers, behind the slingshot.
134 +A ball is considered to be in an inlane, when it is in a rectangular area, with one edge given by the beginning of the flipper
135 +and the other by a point at highest, outermost position of the angled part of the inlane.
136 +
137 +In this area the vertical acceleration is deactivated in the prediction, since it would cause the prediction to assume the ball would slide into the wall.
138 +Though in reality there is still some acceleration, a simple linear prediction has shown to be practical in this less critical area.
139 +
140 +[[image:attach:physics_inlane.png]]
Bildschirmfoto von 2020-03-07 12-21-22.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +35.9 KB
Content
physics2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +50.7 KB
Content
physics_inlane.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +145.2 KB
Content
physics_points.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +96.5 KB
Content
Confluence.Code.ConfluencePageClass[0]
Id
... ... @@ -1,1 +1,1 @@
1 -71401639
1 +71401594
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/71401594/Ball Physics