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,23 +1,93 @@ 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 6 +{{toc/}} 7 + 7 7 == Ball trajectory == 8 8 9 - The trajectory of a ball can be modeled to be parabolic.10 +---- 10 10 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 approximately predict the corresponding ball position using the following formulas. 14 + 15 +[[image:attach:Bildschirmfoto von 2020-03-07 12-21-22.png]] 16 + 17 +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²//. 18 +The value of 6° is the incline of the playfield measured on the physical device. 19 + 20 +== Prediction == 21 + 22 +---- 23 + 24 +The controller calls the function //full_prediction// passing it two subsequent ball positions with timestamps. From these a ball trajectory is infered as described above. 25 +Along the trajectory future times are stepwisetested for whether the corresponding predicted position is in the flipper range. 26 +Once a position inside the flipper range is found the search is contiunued 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. 28 + 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. 31 + 11 11 == Configuration == 12 12 13 - === Points of interest ===34 +---- 14 14 36 +=== Prediction parameters === 37 + 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 50 + 51 +into the future are predctions 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 +))) 70 + 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. 73 + 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. 75 + 76 +The REFINEMENT_FACTOR is also the worst case number of predictions calculated during the reverse search part of the prediction process. 77 + 78 +\\ 79 + 80 +=== Flipper range === 81 + 15 15 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 16 16 17 17 and should not need further adjustment after the camera is correctly calibrated (see [[doc:World Coordinate System]]). 18 18 86 +The values for the left flipper are set to be symmetrical. 87 + 19 19 [[image:attach:physics_points.png]] 20 20 90 +(% class="wrapped" %) 21 21 |=((( 22 22 Point# 23 23 )))|=((( ... ... @@ -51,16 +51,8 @@ 51 51 52 52 \\ 53 53 54 - ===Flipper range===124 +From these points an area, where the ball is deemed to be hittable, is computed. 55 55 56 -From the aforementioned points 57 - 58 -\\ 59 - 60 -\\ 61 - 62 -\\ 63 - 64 64 [[image:attach:physics2.png]] 65 65 66 66 \\ ... ... @@ -67,32 +67,12 @@ 67 67 68 68 === Inlane Area === 69 69 70 -\\ 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 rectangualar area, with one edge given by the begin of the flipper 135 +and the other by a point at highest, outermost position of the angled part of the inlane. 71 71 72 -[[image:attach:physics_inlane.png]] 137 +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. 138 +Though in reality the still is some accelleration, a simple linear prediction has shown to be practical in this less critical area. 73 73 74 -\\ 75 - 76 -=== Prediction parameters === 77 - 78 -\\ 79 - 80 -\\ 81 - 82 -\\ 83 - 84 -\\ 85 - 86 -\\ 87 - 88 -\\ 89 - 90 -\\ 91 - 92 -\\ 93 - 94 -\\ 95 - 96 -\\ 97 - 98 -\\ 140 +[[image:attach:physics_inlane.png]]
- Confluence.Code.ConfluencePageClass[0]
-
- Id
-
... ... @@ -1,1 +1,1 @@ 1 -7 14016411 +73072930 - URL
-
... ... @@ -1,1 +1,1 @@ 1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/PP18/pages/7 1401641/Ball Physics1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/PP18/pages/73072930/Ball Physics