Ball spin axis detection

By smoothing and matching sensor data to estimate the spin axis of a sports ball in flight, the method addresses noise issues in existing technologies, enhancing accuracy and utility for player training and equipment development.

JP2026510471APending Publication Date: 2026-04-07TOPGOLF SWEDEN AB
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-10-12
Publication Date
2026-04-07

AI Technical Summary

Technical Problem

Existing methods for determining the spin axis of a sports ball in flight are prone to noise due to inaccurate wind speed measurements, camera models, and sensor precision, leading to unreliable trajectory predictions.

Method used

A method involving sensor data processing to estimate the spin axis by smoothing the observed trajectory with polynomials, calculating an estimated spin vector, and matching simulated trajectories to observed data to determine the spin axis accurately.

Benefits of technology

Reduces noise in spin axis calculations, providing more accurate and robust spin axis determination for improved player performance and equipment development.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026510471000001_ABST
    Figure 2026510471000001_ABST
Patent Text Reader

Abstract

A method and apparatus for determining the spin axis of a ball in flight. At least a portion of the ball's observed trajectory is obtained. The observed trajectory includes the ball's three-dimensional position over time. At a selected point in three-dimensional space, an estimated spin vector is determined based on the ball's acceleration calculated for the selected point. The estimated spin vector is used to calculate the ball's simulated trajectory. Multiple match scores are calculated between the simulated trajectory and at least a portion of the observed trajectory. The estimated spin axis associated with the match score that exceeds a predefined match score threshold or has the highest match score among the multiple match scores is selected as the ball's spin axis and used to generate ball trajectory information to be presented on an output device.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to determining the spin axis of an object, and more particularly, to determining the spin axis of a sports ball moving in the air.

Background Art

[0002] The spin axis of a sports ball (e.g., a golf ball, hereinafter simply referred to as "ball") refers to the axis around which the ball rotates during flight. The rotation around the spin axis generates a lift force acting on the ball. The direction of the spin axis affects the direction of the lift force on the ball, and thus also affects the degree of curvature of a golf shot. The spin axis remains constant throughout the flight of the ball, typically relative to the horizontal line, even if the wind "pushes" the ball in different directions. The spin axis can be considered similar to the wing of an airplane, i.e., when the spin axis is parallel to the horizontal line, the ball flies straight, when the spin axis is tilted to the left (i.e., the right wing is higher than the left wing), the ball curves to the left, and when the spin axis is tilted to the right (i.e., the left wing is higher than the right wing), the ball curves to the right.

[0003] For example, for the purpose of developing clubs or other equipment, or for the purpose of providing information to players so that players can reasonably accurately infer how the ball will move in the air when the ball is hit in a particular way by a particular type of equipment, it is often desirable to know the spin axis.

[0004] It is well known that three main forces act on a rotationally symmetric ball in flight: gravity, air resistance (also called "drag"), and the "lift" of the ball as described above. These forces can be represented by vectors and together form the ball's total acceleration. The total acceleration can be determined from the ball's position measurements taken by cameras and / or radar sensors as it moves through the air along its trajectory. Typically, the trajectory is measured in three orthogonal planes: the horizontal plane (X direction), the vertical plane (Y direction), and the depth plane (Z direction).

[0005] Using a simplified set of assumptions and mathematical calculations, an estimate of "lift" can be derived, which can be used to estimate the ball's spin vector. From the estimated spin vector, the ball's spin axis can be derived. However, the measured trajectory values ​​are typically very noisy due to several factors, to name just a few possible sources of error: inaccurate wind speed measurements, the mathematical model used to represent the camera when converting camera images to distances, the precision that can determine direction / vectors, and the camera hardware (e.g., the type of image sensor). [Overview of the Initiative] [Means for solving the problem]

[0006] In some embodiments, the techniques described herein relate to a method for estimating the spin axis of a ball in flight, the method comprising: obtaining at least a portion of the observed trajectory of the ball, the observed trajectory including the three-dimensional position of the ball over time determined from individual observations of the ball by one or more sensors; determining an estimated spin vector at a selected point in three-dimensional space based on the acceleration of the ball calculated for a selected point in three-dimensional space; using the estimated spin vector to compute a simulated trajectory of the ball; calculating a match score between the simulated trajectory and at least a portion of the observed trajectory; repeating the steps of determining, using, and calculating to generate a plurality of match scores; selecting an estimated spin axis associated with a match score that exceeds a predefined match score threshold or has the highest match score among the plurality of match scores as the spin axis of the ball; and using the selected spin axis of the ball to generate ball trajectory information to be presented in an output device.

[0007] In some embodiments, a smoothed orbit is generated by applying a single polynomial to each dimension of the observed orbit.

[0008] In some embodiments, the estimated spin vector is based on the acceleration determined for a point on a smoothed trajectory corresponding to a selected three-dimensional position.

[0009] In some embodiments, the step of adapting a polynomial includes using a Random Sample Consensus (RANSAC) model, a least-squares model, a Huber loss function model, or a Savitzky-Golay filter for individual observations from a sensor.

[0010] In some embodiments, the step of adapting a polynomial to each dimension of the observed trajectory includes the steps of selecting four three-dimensional positions of the ball and, for each dimension, adapting a cubic polynomial to the four selected positions of the ball.

[0011] In some embodiments, the acceleration of the ball includes an acceleration component due to gravity, an acceleration component due to drag, and an acceleration component due to lift, and the acceleration component due to lift is used to estimate the initial spin axis.

[0012] In some embodiments, the step of calculating the match score includes comparing the three-dimensional position of the ball, represented by the observed trajectory, with the positional deviation between the ball and the corresponding point on the simulated trajectory.

[0013] In some embodiments, the step of calculating the match score includes comparing the three-dimensional position of the ball, represented by the smoothed trajectory, with the positional deviation between the ball and the corresponding point on the simulated trajectory.

[0014] In some embodiments, the repeated step is performed a predetermined number of times, or until a match score lower than a match score threshold is determined.

[0015] In some embodiments, the step of selecting a spin axis for a ball includes selecting a spin axis associated with the lowest match score from among a number of match scores lower than a predefined match score threshold.

[0016] In some embodiments, the ball is a golf ball, and the method is performed at a practice range.

[0017] In some embodiments, the step of determining the estimated spin vector further includes the step of adjusting for wind speed.

[0018] In some embodiments, the sensor includes radar, a camera, or both.

[0019] In some embodiments, the step of selecting a three-dimensional position is performed by randomization.

[0020] In some embodiments, the techniques described herein relate to computer software products configured to perform the actions of the method when executed.

[0021] In some embodiments, the techniques described herein relate to a system for estimating the spin axis of a ball in flight, the system comprising means for obtaining at least a portion of the observed trajectory of the ball, wherein the observed trajectory includes the three-dimensional position of the ball over time determined from individual observations of the ball by one or more sensors; means for determining an estimated spin vector at a selected point in three-dimensional space based on the acceleration of the ball calculated for a selected point in three-dimensional space; means for using the estimated spin vector to compute a simulated trajectory of the ball; means for computing a match score between the simulated trajectory and at least a portion of the observed trajectory; means for repeating determining, using, and computing to generate a plurality of match scores; means for selecting an estimated spin axis associated with a match score that exceeds a predefined match score threshold or has the highest match score among the plurality of match scores as the spin axis of the ball; and means for using the selected spin axis of the ball to generate ball trajectory information to be presented in an output device.

[0022] In some embodiments, the techniques described herein relate to a system for estimating the spin axis of a ball, the system comprising means for obtaining at least a portion of the observed trajectory of the ball in three-dimensional space, and means for generating a plurality of match scores between the plurality of simulated trajectories and the at least a portion of the observed trajectory, each of the plurality of simulated trajectories being based on an estimated spin vector and a calculated acceleration of the ball at a newly selected point in three-dimensional space, and means for presenting ball trajectory information on an output device based on an estimated spin axis associated with a selected match score that exceeds a predefined match score threshold among the plurality of match scores or has the highest match score among the plurality of match scores.

[0023] Details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features and advantages of the invention will be apparent from the description and drawings, and from the claims.

Brief Description of the Drawings

[0024] [Figure 1] It is a schematic diagram of a spin axis determination system according to some embodiments. [Figure 2] It is a schematic diagram of a data processing system of a spin axis determination system according to some embodiments. [Figure 3] It is a flowchart showing the operation of a spin axis determination system when determining the spin axis of a ball in flight according to some embodiments. [Figure 4A] They are graphs of the observed acceleration values and the smoothed acceleration values of a ball in flight, respectively, according to some embodiments. [Figure 4B] They are graphs of the smoothed acceleration values and the estimated acceleration values of a ball in flight, respectively, according to some embodiments. [Figure 5A]A diagram schematically showing a user interface that shows the ball trajectories of an observed shot having a particular spin axis and an estimated shot under the same circumstances but having a different spin axis, according to some embodiments. [Figure 5B] A diagram schematically showing a user interface that shows the ball trajectories of an observed shot having a particular spin axis and an estimated shot under the same circumstances but having a different spin axis, according to some embodiments.

Best Mode for Carrying Out the Invention

[0025] Like reference symbols in the various drawings indicate like elements.

[0026] Various embodiments of the present invention belong to techniques for determining the spin axis of a ball in flight based on recorded data regarding the trajectory followed by a ball such as a golf ball. Generally, observations by sensors such as cameras and / or radars as the ball flies through the air are processed by software to generate a trajectory of the ball. From the generated trajectory, the spin axis of the ball is determined using a physical model that describes the relationship between the acceleration of the ball and the spin axis.

[0027] The spin axis determination using the systems and techniques described herein enables reducing noise in the observed trajectory and thus can provide one or more advantages, including a more robust and accurate spin axis determination compared to what is currently possible, or alternatively enable the use of different types of sensors that would otherwise be too noisy for use in the context of spin axis calculations. Such sensors tend to be simpler, more affordable, and at the same time more robust, which allows for a wider range of use compared to what is currently possible.

[0028] Even small differences of 1-2 degrees in spin axis calculations can lead to significant differences in determining the ball's trajectory; therefore, the noise reduction methods described herein can greatly impact the accuracy of spin axis calculations. The techniques described herein improve computer capabilities by efficiently providing players with more accurate information about the ball's trajectory than is currently possible, both in outdoor environments and indoor environments such as game facilities where space constraints may necessitate trajectory simulation. Spin axis information can be presented to players in various formats. For example, some players may want numerical information, while others may be satisfied with knowing whether a shot is a slice, fade, draw, or hook. However, other players may prefer to see graphical information summarizing the shot on a display screen. Ultimately, the information provided can improve players' skills, which not only enhances the enjoyment of the game but also increases the safety of those sharing the space with the players. Spin axis information can also be used to evaluate how well various types of equipment (e.g., balls, clubs, etc., made from various materials and designs) perform under various conditions, and therefore ultimately contribute to the development of better equipment.

[0029] Figure 1 shows a system in which a computer 102 is configured to communicate with one or more sensors 106 via a network 104 to acquire observations of a ball flying in three-dimensional (3D) space. Examples of observations may include the identification of a golf ball in a video sequence, as well as / or radar measurements of the golf ball's position and velocity. In some embodiments, observations are acquired by so-called "sensor fusion," i.e., information from different sensors is combined to create an observation. It should be noted that in some embodiments, the computer 102 does not communicate directly with the sensors 106, but instead communicates via an intermediate repository that stores the observations. It should also be noted that the sensors 106 do not need to be permanently connected to the network 104, but can be detachably connected via various types of interfaces, such as USB-3. The computer 102 acquires observations of the ball's trajectory from one or more sensors 106, applies a physical model 108 to the data to determine the spin axis, which can then be used for various purposes. A more detailed description of the computer 102 in several implementation forms is provided below with respect to the flowchart in Figure 3.

[0030] Network 104 can be any combination of wired and / or wireless networks, including local networks such as intranets, or global networks such as the Internet. Network 104 can also include any combination of public and / or private networks.

[0031] Computer 102 may optionally communicate with a client computer 110, which can be used to display data on a user interface, such as, for example, a single shot, wind speed, statistics, and player data, as described above. Various software applications can be run on the client computer 110 to display data in a manner preferred by the user of the spin axis determination system. For example, the client computer 110 may include software that presents the spin axis calculation of a recent shot, along with recommendations for one or more different types of clubs to try, and how such equipment changes are predicted to affect the ball's trajectory. Computer 102 and / or the client computer 110 can be created using dedicated computer hardware or using shared computer hardware that can be programmed to generate a virtual processing environment corresponding to any suitable computer architecture.

[0032] Figures 5A and 5B show examples of graphs that can be displayed to the user on the user interface in response to selections made by the user. In this case, the user has chosen to show a comparison between two trajectories of a golf ball: one observed trajectory 502 with a calculated spin axis, and one estimated trajectory 504 showing how the shot would look if, for example, the spin axis were slightly different as a result of using a different club, while other factors remain unchanged. By visualizing such a comparison on the user interface, the user can obtain valuable information that informs them, for example, how to adjust their technique or choose clubs in order to become a better player.

[0033] As described above, the computer 102 acquires input data from a set of sensors 106 that capture data about a ball flying through three-dimensional (3D) space. The ball can be, for example, a golf ball, or another type of object that is hit, kicked, or thrown to move through the air (e.g., a baseball, soccer ball, football / rugby ball). On a more general scale, the principles of the various embodiments of the invention described herein apply to any object in which the Magnus effect (i.e., the path of a rotating object is deflected in a way that does not exist when the object is not rotating, due to the pressure difference and rotational velocity of the fluid on the opposite side of the rotating object) forms a significant part of the resultant force acting on the object.

[0034] In some embodiments, the 3D space is a golf practice area, such as a golf driving range, a grass field, or another open area from which objects can be launched. For example, the 3D space could be a sports play area, such as a golf course, in which a ball is struck from a launch area, such as a golf tee on a particular hole on the golf course, or from an intermediate landing point of the golf ball while it is in play on the course, towards a target, such as a cup at the end of a particular hole on the golf course, or from an intermediate landing point of the golf ball while it is in play on the course. Other implementations are also possible, for example, the launch area is one of several designated tee areas along a tee line from which a golfer can launch a golf ball into an open field, or the launch area is one of several designated tee areas on the playing field of a sports stadium and within the stands of a sports stadium from which a golfer can launch a golf ball onto the playing field.

[0035] Two or more sensors 106, such as cameras (e.g., a stereo camera pair), radar devices (e.g., a Doppler radar device), or a combination thereof (e.g., a camera used to sense the angle relative to a ball, combined with radar used to sense the distance and / or speed of a ball), are connected to a computer 102 directly or via one or more computing devices, which may perform various levels of processing on the data collected by the sensors 106 before transmitting the processed data to the computer 102.

[0036] Generally, the sensor 106 is positioned near the ball launch area. However, in some implementations, one or more sensors 106 can be positioned along one or both sides of the 3D space, or on the other side of the 3D space opposite the launch area. For example, in a golf tournament, the camera can be positioned behind the green, assuming the shot is hit towards the green, and can look back at the golfer. Thus, in various implementations, the sensor can observe and track objects moving away from the sensor, objects moving towards the sensor, and / or objects passing through the sensor's field of view.

[0037] Sensor 106 may have different sensitivities (e.g., different image sensor resolutions) and may be of various types (e.g., radar, camera, or a combination thereof), which may affect the quality of data transmitted to computer 102. However, the sensitivity of sensor 106 does not affect how computer 102 operates, which will be explained in more detail below with reference to Figure 3. Therefore, many variations of sensor setup and configuration are possible based on the given situation.

[0038] Different types of computers can be used in the system. Essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. As used herein, “computer” may include server computers, client computers, personal computers, embedded programmable circuits, or dedicated logic circuits. Figure 2 is a schematic diagram of a data processing system including a data processing device 200, representing an implementation of computer 102. The data processing device 200 can be connected to one or more computers 290 via a network 280.

[0039] The data processing device 200 may include various software modules that can be distributed between the application layer and the operating system. These may include executable and / or interpretable software programs or libraries, such as program 230 which acts as a program for determining the spin axis of an orbit. The number of software modules used may vary depending on the implementation. In some cases, program 230 may be implemented in embedded firmware, while in other cases, program 230 may be implemented as a software module distributed across one or more data processing devices connected by one or more computer networks or other suitable communication networks.

[0040] The data processing device 200 may include hardware or firmware devices, including one or more hardware processors 212, one or more additional devices 214, a non-temporary computer-readable medium 216, a communication interface 218, and one or more user interface devices 220. The processor 212 can process instructions for execution within the data processing device 200, such as instructions (of program 230) stored on the non-temporary computer-readable medium 216, which may include a storage device such as one of the additional devices 214.

[0041] In some implementations, the processor 212 is a single-core or multi-core processor, or two or more central processing units (CPUs). The data processing unit 200 uses its communication interface 218 to communicate with one or more computers 290, for example, via the network 280. Thus, in various implementations, the processes described can be executed in parallel, simultaneously, or serially on single-core or multi-core computing machines and / or computer clusters / clouds.

[0042] Examples of user interface devices 220 include displays, touchscreen displays, speakers, microphones, haptic feedback devices, keyboards, mice, and headsets or head-up displays for virtual reality or augmented reality environment systems. Furthermore, the user interface device does not have to be a local device 220 and can be remote from the data processing unit 200, for example, a user interface device 290 accessible via one or more communication networks 280. For example, the user interface device 220 / 290 could be, for example, a user's smartphone or tablet computer for an augmented reality implementation. The data processing unit 200 can store instructions for implementing the operations described herein on a non-temporary computer-readable medium 216, which may include, for example, one or more additional devices 214, such as floppy disk devices, hard disk devices, optical disk devices, tape devices, and solid-state memory devices (e.g., RAM drives).

[0043] Furthermore, instructions for implementing the operations described herein can be downloaded from one or more computers 290 (e.g., from the cloud) via a network 280 to a non-temporary computer-readable medium 216. In some implementations, the data processing device 200 is a smartphone or tablet computer. In some implementations, the RAM drive is a non-volatile memory device from which instructions are downloaded each time the computer is turned on.

[0044] Figure 3 is a flowchart of methods 300 performed by computer 102 when determining the spin axis, according to several embodiments. As seen in Figure 3, method 300 begins by acquiring (302) sensor observations that define at least a portion of the observed ball trajectory. Acquiring (302) may include acquiring observations from another computer / system or local memory where the observations are actively pushed, or acquiring (302) may include continuously receiving observations passively.

[0045] Next, several points are selected on the observed trajectory (304), and a polynomial is applied to the selected points for each dimension to create a smoothed trajectory. In this context, a point refers to its position in 3D(x,y,z) at a specific time t. That is, in this embodiment, the same points are selected and fitted to each dimension. The points used to create the smoothed trajectory are randomly selected, as the observed trajectory tends to be noisy overall, and experiments have shown that there is little or no benefit in selecting points in a more systematic way. However, it should be noted that point selection can, of course, be done systematically, such as by selecting points that are equally spaced over a specific period of time. In some embodiments, it may also be possible to select different points for each dimension, in which case it should be noted that the polynomial application is not necessarily for the same points. However, such methods also carry the risk that point selection may not be possible if there is not enough data available to describe the ball's trajectory in 3D.

[0046] The jagged curve in Figure 4A shows the acceleration data calculated for the ball based on position observations made by sensor 106. For clarity, it should be noted again that the concept of acceleration used in this description refers to a vector quantity, i.e., direction and magnitude, and does not represent only one or the other, as is often done in colloquial language. Furthermore, the acceleration of the ball at any given point along its trajectory can be determined as the first derivative of the ball's velocity or the second derivative of the ball's position. Thus, graph 402a shown in Figure 4A shows the observed magnitude of the ball's acceleration (vertical axis) against time (horizontal axis). The following graph 404a shows the observed acceleration in the horizontal direction (i.e., along the x-axis) against time. The following graph 406a shows the observed acceleration in the vertical direction (i.e., along the y-axis) against time. Finally, graph 408a at the bottom of Figure 4A shows the observed acceleration along the depth direction (i.e., along the z-axis) against time. In other words, graphs 404a to 408a collectively show the acceleration components of the ball along the three orthogonal axes. These three components, along with the observed magnitude 402a, form the total acceleration of the ball. As can be seen from the jagged lines in Figure 4, this data can be very noisy, especially in the z direction (i.e., graph 408a), and is not very useful on its own for the purpose of calculating the spin axis. For this reason, polynomials are applied to the points in each dimension to create a smoothed version of the data.

[0047] Many suitable methods exist for adapting polynomials to observations to create smoothed trajectories. Some examples include the RANSAC (Random Sample Consensus) model, least-squares models, Huber loss function models, and Savitzky-Golay filters. While the exact model applied depends on the specific situation at hand, a general rule is that the model selection should strike a good compromise between reducing signal noise and not reducing noise to the point where the signal itself is lost or degraded. Furthermore, since the spin axis calculation results must be displayed to the user as "real-time" on the client computer 110, it is desirable to use a method that is not overly complex. "Real-time" in this context means that all spin axis calculations should preferably be completed within approximately 0.5 seconds, which may influence the model selection. Regardless of the model used, the ultimate goal is to reduce the noise in the measurements so that a ball trajectory can be obtained, enabling a meaningful comparison between the observed and calculated ball trajectories, as will be discussed in more detail below.

[0048] Through experiments, the inventors determined that RANSAC generally provides good results for adapting polynomials to data recorded by sensor 106. In particular, the advantage of RANSAC is that each iteration in several embodiments provides improved results, and thus the number of iterations can be limited so that a reasonably well-adapted polynomial representing the recorded data can still be achieved, while adhering to the constraints on the time that can be spent on spin axis calculations before displaying the results to the user. Accordingly, this specification uses polynomial adaptation using RANSAC as an example. However, it should be noted again that this is only one of many possible models for adapting polynomials, and many alternative models may yield useful results for the remainder of the method described herein.

[0049] In one or more embodiments, when adapting polynomials using the RANSAC model, the orbit is considered to be a cubic polynomial (one for each axis), and each polynomial is cubic. Thus, four observation points are selected, and a cubic polynomial is adapted to these points for each dimension. Many iterations are performed, as will be explained in more detail below, and in each of these iterations, four points are selected. Thus, when the process is complete, a large number of points will have been selected. Since each selection of four points is done randomly, there is a theoretical possibility that the same four points may be selected in different iterations, but if appropriate randomization is used, the likelihood of this happening is very low and therefore not a practical concern.

[0050] The adapted polynomial in different dimensions appears to have peaks and valleys in Figure 4A, but it is much smoother than the raw data. In a sense, this is similar to applying a low-pass filter to the data recorded by sensor 106 to reduce noise in the measurements.

[0051] Next, a point on the orbit is randomly selected (306), and the following set of equations is used to estimate the spin vector for the selected point.

[0052]

number

[0053] This was decided,

[0054]

number

[0055] And here, a is the resultant acceleration, g is the acceleration due to gravity, a D This is the acceleration due to the drag force, a LThis is the acceleration due to lift,

[0056]

number

[0057] This is the relative velocity of the ball (i.e., the ball's velocity minus the wind speed).

[0058] It should be noted that these formulas can use either the original sensor observations or the smoothed data. However, generally speaking, smoothed data is more accurate because it generally has less noise, so when formulas use smoothed data (i.e., adapted polynomials), the accuracy tends to be better. Assuming the sensor measures the position of a ball, the 3D velocity for a given point in time can be obtained using either numerical differentiation (for raw data) or analytical differentiation (for smoothed data).

[0059] As can be seen from the set of equations above, when calculating the ball's relative velocity to the air, it is important to make an accurate wind estimate so that the wind speed can be subtracted from the ball's velocity, in order to do this as accurately as possible and to avoid systematic errors due to wind. In some embodiments, the wind speed is obtained from an external, dedicated wind measuring instrument. In some embodiments, the wind vector can be estimated by calculating the wind speed for each of several individual shots within a predefined time window and determining a weighted average of the overall wind speeds. This eliminates the uncertainty associated with calculating the wind speed based on individual shots and provides a more robust value for the wind vector.

[0060] Once the estimated spin vector is determined, the simulated trajectory is calculated based on the ball's position, velocity, and the "state" of the ball described by the estimated spin vector, along with the wind vector at that time (308). Having this state information along with the physical model makes it possible to apply numerical integration and calculate the simulated trajectory. It is assumed that the spin vector is constant throughout the shot. It should be noted that this assumption is a simplification assumption, not a requirement, and it is also possible to calculate simulated trajectories with a variable spin vector if a model exists for how the spin vector changes over time. In general, there are three main such models that describe how the spin vector changes over time. The first model assumes a constant spin vector over time, as described above. The second model assumes a magnitude that decreases over time in a constant direction, for example, exponential decay. The third model assumes both a changing spin axis direction and a changing magnitude over time. However, at present, most data show that the spin axis direction does not change over time, or changes only slightly. The first and second models tend to provide results with similar accuracy and simpler calculations, and are therefore currently preferred over the third model. Figure 4B is similar to Figure 4A and shows graphs 402b-408b representing accelerations at different points along the smoothed trajectory determined in Figure 4A and the simulated trajectory calculated based on the determined "state" of the ball. The simulated trajectory can be seen as a curve with a smoother shape in graphs 402b-408b of Figure 4B. Thus, in a sense, the smoothed trajectory in Figure 4B can be considered as "raw data" from which the simulated trajectory is determined.

[0061] Next, a match score is calculated that describes how well the simulated trajectory matches the smoothed trajectory (310). As mentioned above, in some embodiments, matching is performed by referring instead to observations by a sensor. The match score can be calculated in several ways, for example, by comparing several discrete points on the simulated trajectory with a corresponding set of discrete points on the smoothed trajectory and calculating the least-squares error or by counting the number of outliers. The comparison can be made, for example, in terms of the ball's position, velocity, or acceleration, and the result of the comparison is the match score. A lower match score generally indicates a better overall match (i.e., a smaller distance) between the two curves, but of course, the match score can be defined in any way that makes it possible for the comparison to be performed. Furthermore, if the sensor 106 can observe a larger portion of the complete ball trajectory, more comparison points become available, and the reliability of the match score tends to be better. At least four points are required to adapt the cubic polynomial to the observation points, and as can be seen from the above equation, wind conditions form an important factor. For example, in a windless indoor environment, the portion of the track may be much smaller than the portion required in an outdoor environment with strong winds.

[0062] Next, the method checks whether a sufficient number of match scores have been obtained (312). That is, the overall idea is to create several simulated trajectories and find the simulated trajectory that best matches the smoothed trajectory representing the observed ball trajectory. Since a single match score is insufficient, the method returns to 304 and proceeds as described above to obtain another match score. The sequence of actions described in blocks 304-312 is repeated several times. Different criteria may exist for the number of match scores considered sufficient, i.e., when to stop iterating actions 304-312. This may depend on the available time before the calculation results are displayed to the user in order to achieve "real-time" results for the user (e.g., within a few seconds). In some embodiments, the actions in 304-312 may be repeated a predetermined number of times. In some embodiments, there may be mathematical criteria that describe when further improvement cannot be reasonably expected with more iterations, for example, as a function of the "desirable probability of success" commonly used in the context of RANSAC. Given the random nature of point selection in 304, there is no guarantee of convergence. However, experiments have shown that generally good agreement scores can be found after about 100 iterations. Therefore, as long as the selection of points in 304 is "sufficiently random", in each iteration, points are selected from the same data set describing the trajectory, and previously selected points do not affect the sampling process, so the search space is usually explored.

[0063] If a sufficient number of match scores are obtained, the spin axis corresponding to a simulated trajectory with a match score below a predetermined threshold is selected as the spin axis of the shot (314). Often, it is desirable to select the lowest or "best" match score to obtain the best accuracy. However, this is not a requirement, and in some embodiments, it may be sufficient to select a "good enough" match score, e.g., any match score below a predetermined threshold. This may occur after the iteration is complete or may even serve as a criterion for when to stop iterating the actions in 304-312. In some embodiments, once the actions in 304-312 are performed, only the best spin axis is stored. That is, whenever a better match score than the current match score is obtained, the current match score is replaced by the new, better match score. The spin axis determined in 314 can optionally be stored, used, or presented in various types of applications (316), for example, enabling the user to benefit from the spin axis information to improve their game by being provided with, for example, statistics and / or suggestions of different tools to use, thus terminating method 300.

[0064] Embodiments of the present invention described herein also relate to computer software functions for determining spin axes in accordance with those described above. Such computer software functions are configured, at runtime, to perform the measurement, selection, determination, use, calculation, iteration, selection, and use operations described above, as also described in the claims. The computer software functions are configured to run on the physical or virtual hardware of computer 102 and / or data processing device 200, as described above.

[0065] The subject matter and functional embodiments described herein can be implemented in digital electronic circuits, or in computer software, firmware, or hardware, or a combination of one or more thereof, including the structures and structural equivalents disclosed herein. Embodiments of the subject matter described herein can be implemented using one or more modules of computer program instructions encoded on a non-temporary computer-readable medium for execution by a data processing device or for controlling the operation of a data processing device. The computer-readable medium can be a hard drive in a computer system, an optical disc sold through a retail channel, or a manufactured product such as an embedded system. The computer-readable medium can be acquired separately and later encoded with one or more modules of computer program instructions, such as by distribution of one or more modules of computer program instructions over a wired or wireless network. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, or a combination of one or more thereof.

[0066] The term "data processing device" encompasses all devices, machines, and equipment for processing data, including, for example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, a device may include code that creates the execution environment for the computer program in question, such as processor firmware, a protocol stack, a database management system, an operating system, a runtime environment, or a combination of one or more of these. Furthermore, a device may utilize various computing model infrastructures, such as web services, distributed computing, and grid computing infrastructures.

[0067] Computer programs (also known as programs, software, software applications, scripts, or code) can be written in any suitable programming language, including compiled or interpreted languages, declarative or procedural languages, and can be deployed in any suitable form, including as standalone programs or as modules, components, subroutines, or other units suitable for use in a computing environment. Computer programs do not necessarily have to correspond to files in a file system. A program can be stored in part of a file that holds other program data or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple collaborative files (e.g., a file storing one or more modules, subprograms, or parts of code). Computer programs can run on one computer, be located in one site, or be distributed across multiple sites and deployed to run on multiple computers interconnected by a communication network.

[0068] The processes and logic flows described herein can be executed by one or more programmable processors that execute one or more computer programs to perform a function by acting on input data and producing outputs. The processes and logic flows may also be executed by dedicated logic circuits, such as FPGAs (Field-Programmable Gate Arrays) or ASICs (Application-Specific Integrated Circuits), and the device may be implemented as such.

[0069] Processors suitable for executing computer programs include, for example, both general-purpose and dedicated microprocessors, and one or more processors in any suitable digital computer. Generally, a processor receives instructions and data from read-only memory (ROM) or random-access memory (RAM), or both. Essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer also includes one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, or is operably coupled to them to receive data from them, transfer data to them, or both. However, a computer does not necessarily have such devices. Furthermore, a computer can be incorporated into another device, for example, a mobile phone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a Universal Serial Bus (USB) flash drive). Devices suitable for storing computer program instructions and data include, for example, semiconductor memory devices such as EPROM (Erasable Programmable Read-Only Memory), EEPROM (Electronically Erasable Programmable Read-Only Memory), and flash memory devices; magnetic disks such as internal hard disks or removable disks, magneto-optical disks, CD-ROMs and DVD-ROMs; network-attached storage; and all forms of non-volatile memory, media, and memory devices, including various forms of cloud storage. Processors and memory can be complemented by or integrated into dedicated logic circuits.

[0070] To provide user interaction, embodiments of the subject matter described herein can be implemented on a computer having a display device for displaying information to the user, such as an LCD (liquid crystal display), an OLED (organic light-emitting diode), or other monitor, and a keyboard and pointing device, such as a mouse or trackball, on which the user can provide input to the computer. Other types of devices can also be used to provide user interaction; for example, the feedback provided to the user may be sensory feedback, such as visual feedback, auditory feedback, or tactile feedback, and input from the user may be received in various forms, including acoustic input, voice input, or tactile input.

[0071] A computing system may include a client and a server. The client and server are generally remote to each other and interact via a communication network. The client-server relationship arises from computer programs running on each computer that have a client-server relationship with each other. Embodiments of the subject matter described herein can be implemented in a computing system that includes, for example, a backend component as a data server, or a middleware component, for example, an application server, or a frontend component, for example, a client computer having a graphical user interface or a web browser that allows a user to interact with the implementation of the subject matter described herein, or any suitable combination of one or more such backend components, middleware components, or frontend components. The components of the system can be interconnected by any suitable form or medium of digital data communication, for example, a communication network. Examples of communication networks include local area networks ("LANs") and wide area networks ("WANs"), internetworks (e.g., the Internet), and peer-to-peer networks (e.g., ad-hoc peer-to-peer networks).

[0072] This specification includes details of numerous implementations, which should not be construed as limitations on the scope of the invention or what can be claimed, but rather as descriptions of features specific to the implementations of the invention. Certain features described herein in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented separately in multiple embodiments or in any suitable subcombination. Furthermore, features may be described above as acting in a particular combination, and may even be initially claimed as such, but one or more features from a claimed combination may, in some cases, be excluded from that combination, and the claimed combination may be directed to a subcombination or a variation of a subcombination. Thus, unless expressly stated otherwise, or unless clearly indicated otherwise by the knowledge of those skilled in the art, any of the features of the embodiments described above may be combined with any of the other features of the embodiments described above.

[0073] Similarly, while the actions are shown in a specific order in the drawings, this should not be understood as requiring that such actions be performed in the illustrated order or sequentially, or that all illustrated actions be performed, in order to achieve the desired result. In certain situations, multitasking and / or parallel processing may be advantageous. Furthermore, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments. The described program components and systems can be integrated into a single software product or packaged into multiple software products.

[0074] Embodiments of the present invention have been described above. Other embodiments are within the scope of the appended claims. For example, while the above description focuses on determining the spin axis in the context of the motion of a golf ball, the described system and technique are also applicable to other types of objects that move through the air and are affected by wind, such as baseballs or skeet shooting, as well as to non-sports applications. The determination of the spin axis can be further improved by improving the wind speed estimation, for example, by considering that wind changes with ground height. Furthermore, in the above example, it was assumed that the acceleration of the ball is affected only by gravity, lift, and drag. However, other forces may be at work, such as a certain type of Coriolis effect, which can be used to further improve the physical model. Improvements that can be achieved by such modifications to the physical model must take into account the accuracy of the data registered by the sensor, wind measurements / estimates, etc., which may have a greater overall impact on the resulting determination of the spin axis.

[0075] The above example refers to selecting four points and fitting a cubic polynomial, but it should be noted that the number of points selected depends on the number of unknowns in the model. For example, a cubic polynomial requires the selection of four points. For higher or lower-order polynomials, the number of points may differ. Observed data may be processed using techniques different from polynomial fitting, and therefore the number of points may also differ. Using five or more points to fit a cubic polynomial results in an over-determined system that may have to be solved using some kind of least-squares method, which is undesirable as described above.

[0076] Furthermore, it should be noted that the match score can also be used to determine parameters other than the spin axis. For example, equations (1) and (2) above describe how the spin vector is determined. Since the spin vector includes both direction (i.e., spin axis) and magnitude, the same technique used to simulate the trajectory and calculate the match score can be used to estimate the spin velocity in various embodiments. In some embodiments, the estimated spin velocity can be further used in combination with another method for determining the spin velocity, for example, as a cross-check against the spin velocity determined by radar.

[0077] Furthermore, while two sensors are used to measure the trajectory of the ball in the embodiments described herein, it should be noted that a single sensor (e.g., a Doppler radar) can be used to measure both angle and distance, and therefore other embodiments exist in which no additional sensors are required. Thus, many variations of the above examples are well within the scope of the appended claims and within the capabilities of those skilled in the art. [Explanation of Symbols]

[0078] 102 Computer 104 Network 106 Sensors 108 Physical Models 110 client computers 200 Data Processing Devices 212 hardware processors 214 Additional devices 216 Non-temporary computer-readable media 218 Communication Interfaces 220 User interface devices, local devices 230 programs 280 Networks, Communication Networks 290 Computers, User Interface Devices 402a Graph, observed size 404a Graph 406a Graph 408a Graph 502 Observation Orbit 504 Estimated trajectory

Claims

1. A method for estimating the spin axis of a ball in flight, A step of obtaining at least a portion of the observed trajectory of the ball, wherein the observed trajectory includes the three-dimensional position of the ball over time, determined from individual observations of the ball by one or more sensors; A step of determining an estimated spin vector at a selected point in three-dimensional space based on the acceleration of the ball calculated for a selected point in three-dimensional space, The steps include using the estimated spin vector to calculate the simulated trajectory of the ball, A step of calculating a match score that indicates the amount of agreement between the simulated trajectory and the observed trajectory (at least a portion thereof), To generate multiple matching scores, the steps of determining, using, and calculating are repeated. The steps include selecting, as the spin axis of the ball, the estimated spin axis associated with the match score that exceeds a predefined match score threshold among the multiple match scores, or the match score that has the highest match score among the multiple match scores, To generate ball trajectory information to be presented on an output device, the steps include using the selected spin axis of the ball and Methods that include...

2. The method according to claim 1, further comprising the step of generating a smoothed orbit by applying a polynomial to each dimension of the observed orbit.

3. The method according to claim 2, wherein the estimated spin vector is based on the acceleration determined for a point on the smoothed trajectory corresponding to the selected three-dimensional position.

4. The method according to claim 2, wherein the step of adapting a polynomial includes the step of using a random sample consensus (RANSAC) model, a least squares model, a Huber loss function model, or a Savitzky-Golay filter for the individual observations from the sensor.

5. The step of applying a polynomial to each dimension of the observed orbit is, The steps include selecting the four three-dimensional positions of the ball, For each dimension, the steps include: applying a cubic polynomial to the four selected positions of the ball; The method according to claim 2, including the method described in claim 2.

6. The method according to claim 1, wherein the acceleration of the ball is composed of an acceleration component due to gravity, an acceleration component due to drag, and an acceleration component due to lift, and the acceleration component due to lift is used to estimate the initial spin axis.

7. The step of calculating the match score is The step includes comparing the three-dimensional position of the ball, represented by the observed trajectory, with the positional displacement between the ball and a corresponding point on the simulated trajectory. The method according to claim 1.

8. The step of calculating the match score is The step includes comparing the three-dimensional position of the ball represented by the smoothed trajectory with the positional displacement between the ball and a corresponding point on the simulated trajectory, The method according to claim 2.

9. The method according to claim 1, wherein the repeated step is performed a predetermined number of times or until a match score lower than a match score threshold is determined.

10. The step of selecting the spin axis of the aforementioned ball is, The step includes selecting the spin axis associated with the lowest match score from among a plurality of match scores that are lower than the predefined match score threshold, The method according to claim 1.

11. The method according to claim 1, wherein the ball is a golf ball and the method is performed at a driving range.

12. The method according to claim 1, wherein the step of determining the estimated spin vector further includes the step of adjusting for wind speed.

13. The method according to claim 1, wherein the sensor includes radar, a camera, or both.

14. The method according to claim 1, wherein the step of selecting a three-dimensional position is performed by randomization.

15. Computer software configured to perform, when executed, an operation according to any one of claims 1 to 14.

16. A system for estimating the spin axis of a ball in flight, Means for obtaining at least a portion of the observed trajectory of the ball, wherein the observed trajectory includes the three-dimensional position of the ball over time determined from individual observations of the ball by one or more sensors, Means for determining an estimated spin vector at a selected point in three-dimensional space, based on the acceleration of the ball calculated for a selected point in three-dimensional space, Means for using the estimated spin vector to calculate the simulated trajectory of the ball, Means for calculating a match score indicating the amount of agreement between the simulated trajectory and the observed trajectory (at least a portion thereof), Means for repeating the process of determining, using, and calculating in order to generate multiple matching scores, A means for selecting, as the spin axis of the ball, the estimated spin axis associated with the match score that exceeds a predefined match score threshold among the multiple match scores, or the match score that has the highest match score among the multiple match scores, Means for using the selected spin axis of the ball in order to generate ball trajectory information to be presented on the output device, A system that includes this.