Changes for page Ball Physics
Last modified by Soeren Domroes on 2025/01/30 12:18
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Objects (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,55 +1,131 @@ 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 -== =Pointsof 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 - === Flipperrange===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 +== Configuration == 22 22 23 - \\25 +---- 24 24 25 - \\27 +=== Prediction parameters === 26 26 27 -[[image:attach:physics2.png]] 29 +(% class="wrapped" %) 30 +|=((( 31 +Parameter 32 +)))|=((( 33 +Description 34 +)))|=((( 35 +Default value 36 +))) 37 +|((( 38 +PREDICTION_FRAME 39 +)))|((( 40 +window size for prediction - How far 28 28 29 -\\ 42 +into the future are predctions calculated at most. 43 +)))|((( 44 +70ms 45 +))) 46 +|((( 47 +PREDICTION_STEP_SIZE 48 +)))|((( 49 +size of the steps for the forward search 50 +)))|((( 51 +10ms 52 +))) 53 +|((( 54 +REFINEMENT_FACTOR 55 +)))|((( 56 +The prediction step size for the reverse search is 57 +PREDICTION_STEP_SIZE divided by REFINEMENT_FACTOR. 58 +)))|((( 59 +10 60 +))) 30 30 31 -=== Inlane Area === 62 +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. 63 +Nevertheless it is reasonable to calculate predictions beyond the next frame in case a ball is not recognized on the next frame. 32 32 33 - [[image:attach:physics_inlane.png]]65 +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. 34 34 67 +The REFINEMENT_FACTOR is also the worst case number of predictions calculated during the reverse search part of the prediction process. 68 + 35 35 \\ 36 36 37 -=== Predictionparameters===71 +=== Flipper range === 38 38 39 - \\73 +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 40 40 41 - \\75 +and should not need further adjustment after the camera is correctly calibrated (see [[doc:World Coordinate System]]). 42 42 43 - \\77 +The values for the left flipper are set to be symmetrical. 44 44 45 - \\79 +[[image:attach:physics_points.png]] 46 46 47 -\\ 81 +(% class="wrapped" %) 82 +|=((( 83 +Point# 84 +)))|=((( 85 +Description 86 +))) 87 +|((( 88 +1 89 +)))|((( 90 +center point of the circle that the flippers tip moves o 91 +))) 92 +|((( 93 +2 94 +)))|((( 95 +highest point a ball can be at when it hits the resting flipper 96 +))) 97 +|((( 98 +3 99 +)))|((( 100 +lowest point a ball can be at when it hits the resting flipper 101 +))) 102 +|((( 103 +4 104 +)))|((( 105 +lowest point a ball can be at when it hits the fully triggered flipper 106 +))) 107 +|((( 108 +5 109 +)))|((( 110 +highest point a ball can be at when it hits the fully triggered flipper 111 +))) 48 48 49 49 \\ 50 50 51 - \\115 +From these points an area, where the ball is deemed to be hittable, is computed. 52 52 53 - \\117 +[[image:attach:physics2.png]] 54 54 55 55 \\ 120 + 121 +=== Inlane Area === 122 + 123 +Since the trajectory prediction does not consider collisions in general, we need a different kind of predictions for the inlanes, 124 +i.e. the path feeding a falling ball from the playfield to the flippers, behind the slingshot. 125 +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 126 +and the other by a point at highest, outermost position of the angled part of the inlane. 127 + 128 +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. 129 +Though in reality the still is some accelleration, a simple linear prediction has shown to be practical in this less critical area. 130 + 131 +[[image:attach:physics_inlane.png]]
- Confluence.Code.ConfluencePageClass[0]
-
- Id
-
... ... @@ -1,1 +1,1 @@ 1 -714016 391 +71401661 - URL
-
... ... @@ -1,1 +1,1 @@ 1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/PP18/pages/714016 39/Ball Physics1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/PP18/pages/71401661/Ball Physics