Wind speed estimation
By using multiple trajectory measurements to calculate aggregated wind speed estimates, the system enhances the accuracy of wind speed estimation for sports balls in flight, addressing the limitations of single-trajectory methods.
Patent Information
- Application Number
- JP2024569568
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-05-24
- Filing Date
- 2023-05-16
- Publication Date
- 2025-06-12
- Estimated Expiration
- 2043-05-16
AI Technical Summary
Existing methods for estimating wind speed and direction when a sports ball is flying in the air are prone to inaccuracies due to small deviations in data from a single trajectory, leading to unreliable wind speed estimations.
The system obtains measurements from multiple ball trajectories, compares modeled and observed accelerations to determine wind speed estimates for each trajectory, and calculates an aggregated wind speed estimate as a weighted average of these individual estimates.
This approach improves the accuracy of wind speed estimation by reducing the impact of data variations from single trajectories, providing a more robust and reliable calculation of wind conditions for determining ball trajectories.
Smart Images

Figure 2025518062000001_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to the estimation of wind speed and wind direction, and more particularly to the estimation of wind speed and wind direction when a sports ball is flying in the air.
Background Art
[0002] For various reasons, it is generally desired to know the trajectory of a sports ball (e.g., a golf ball, hereinafter abbreviated as "ball") when it moves in the air. Generally, various types of hardware devices such as radar or cameras can be used to measure a number of instantaneous positions of the ball during a shot. Then, by combining the measurement data using software, the trajectory of the ball can be created.
[0003] Knowing the wind conditions is useful for calculating as accurate a trajectory as possible because having this information reduces the number of free parameters used by the physical models used in the software to calculate the trajectory of the ball. Further, for example, when a player wants to obtain information about a "normalized" version of their shot (i.e., a version compensated for weather conditions and the type of ball used) so that they can better compare each of two shots and determine how adjustments to their stance or equipment affect those shots, it is important to have accurate information regarding wind speed and wind direction.
[0004] In some physical models, the wind speed is a free parameter, i.e., the wind vector is unknown and is estimated based on the wind speed and wind direction that best fit the portion of the trajectory observed by the radar and / or optical sensors.
Summary of the Invention
Means for Solving the Problems
[0005] Wind speed estimation using the systems and techniques described herein can provide one or more advantages, including avoiding variations in wind speed estimation associated with performing physical modeling using only data from a single trajectory at a time. It should be noted that small deviations in the data measured in a single shot by a radar and / or a camera can cause the wind speed estimation to be very inaccurate when using conventional techniques. By using the systems and techniques described herein, the estimation of wind speed and / or wind direction can be improved, enabling more accurate calculations in cases where wind is a factor, such as in determining the trajectory of a ball.
[0006] In some aspects, the techniques described herein include obtaining measurements indicative of two or more trajectories through which a flying ball passes, comparing a modeled acceleration of the ball to an observed acceleration of the ball derived from the measurements for each of the two or more trajectories to determine a wind speed estimate for each of the two or more trajectories, and calculating the aggregated wind speed estimate as a weighted average of the determined wind speed estimates for each of the two or more trajectories. The aggregated wind speed estimate is used to generate ball trajectory information presented to an output device.
[0007] In some embodiments, the trajectory measurements are performed at least in part by a radar and / or a camera.
[0008] In some embodiments, determining each wind speed estimate includes solving an optimization problem involving minimizing a loss function that compares the modeled acceleration of the ball to the observed acceleration of the ball.
[0009] In some embodiments, the modeled acceleration is calculated as the sum of a gravitational acceleration component, a drag acceleration component, and a lift acceleration component.
[0010] In some embodiments, the optimization problem optimizes for the initial spin rate of the ball, the spin decay coefficient of the ball, and / or the spin angle of the ball, in addition to optimizing for wind speed.
[0011] In some embodiments, each of the two or more trajectories meets a minimum criterion regarding the minimum observed fraction of the flight distance and / or the length of the trajectory.
[0012] In some embodiments, the two or more trajectories include trajectories for which measurements were collected during a predefined time window.
[0013] In some embodiments, the predefined time window is about 2 to 4 minutes.
[0014] In some embodiments, the aggregated wind speed estimate is calculated in response to new trajectories generated by the flying ball.
[0015] In some embodiments, calculating the aggregated wind speed estimate is performed at regular time intervals.
[0016] In some embodiments, the method further includes using the aggregated wind speed estimate as an initial wind speed estimate for subsequent trajectory estimation.
[0017] In some embodiments, the method further includes using the aggregated wind speed estimate to model a normalized trajectory that is not affected by any wind.
[0018] In some embodiments, the weighted average is determined using an exponentially weighted moving average.
[0019] In some embodiments, separate aggregated wind speed estimates are determined for different parts of the playing area.
[0020] In some aspects, the techniques described herein relate to a computer software product that, when executed, causes a data processing apparatus associated with a wind aggregator to execute one or more of the above methods.
[0021] In some aspects, the techniques described herein relate to a system for estimating wind speed, including an acquisition means, a determination means, and a calculation means. The acquisition means acquires measurement values indicating two or more trajectories through which a flying ball passes. The determination means determines the wind speed estimation for each of the two or more trajectories. The determination includes comparing the modeled acceleration of the ball derived from the measurement values with the observed acceleration of the ball. The calculation means calculates the aggregated wind speed estimation as a weighted average of the determined wind speed estimations for each of the two or more.
[0022] In some aspects, the techniques described herein relate to a system for estimating wind speed, the system including means for generating an aggregated wind speed estimation obtained by each of two or more wind speed estimations for two or more measured trajectories of a ball based on a ball acceleration model and an observed acceleration of the ball, and means for providing trajectory information of the ball prepared based on the aggregated wind speed estimation.
[0023] Details of one or more embodiments of the present invention are described in the accompanying drawings and the following description. Other features, objects, and advantages of the present invention will become apparent from the description and drawings, as well as from the claims.
Brief Description of the Drawings
[0024]
Figure 1
Figure 2
Figure 3
Figure 4A
Figure 4B
Figure 5A
Figure 5B
DETAILED DESCRIPTION OF THE INVENTION
[0025] Like reference symbols in the various figures refer to like elements.
[0026] Various embodiments of the present invention relate to a technique for estimating wind speed based on trajectory data through which a recorded ball (e.g., a golf ball) passes. Generally, when a ball flies through the air, data captured by sensors such as cameras and / or radars is processed by software to generate a trajectory of the ball. The wind speed (i.e., a wind vector that describes the wind direction and the magnitude of the wind speed) is estimated from the data regarding each collected trajectory. Then, using the estimated wind speeds from several trajectories, an aggregated wind speed estimate is calculated. Thus, a more robust and accurate wind speed estimate can be obtained compared to the wind speed that can be derived from each trajectory alone. The aggregated wind speed estimate can be updated over time using data from the latest set of trajectories so as to always provide an accurate wind speed for various purposes. The estimated wind speed can be used for various purposes, such as an initial wind speed estimate when estimating subsequent trajectories, or a “normalized” trajectory that approximately describes a trajectory in the absence of wind.
[0027] FIG. 1 is a block diagram showing a general architecture of a wind estimation system 100 according to some embodiments. As shown in FIG. 1, the wind estimation system 100 includes a wind database 102 and a wind aggregator 104 that communicate via a network 114. Optionally, the wind estimation system 100 may include one or more sensors 106, a shot normalizer 110, and / or a client 112, depending on the particular embodiment at hand. Although only each wind database 102, each wind aggregator 104, etc. are shown in FIG. 1, this is for illustrative purposes only, and it should be noted that in various implementations, the wind estimation system 100 may be much larger and may include some of these (and possibly other types of) components.
[0028] In the embodiment shown in FIG. 1, the wind database 102 includes current and historical data for each trajectory, as well as the calculated average wind speed of a plurality of trajectories calculated by the wind aggregator 104. However, it should be recognized that in other embodiments, additional weather-related data such as the calculated wind speed for each trajectory, and temperature, humidity, and / or time stamps for each trajectory can be stored. Therefore, the embodiment shown in FIG. 1 should not be limiting. The wind aggregator 104 obtains data regarding each trajectory of the ball collected by one or more sensors 106, applies a physical model 108 to the data to determine the estimated wind speed for each trajectory. Then, the wind aggregator 104 calculates a weighted average of each estimated wind speed as an aggregated wind speed estimate, which can then be used for various purposes. Hereinafter, with reference to the flowchart of FIG. 3, the wind aggregator 104 according to some embodiments will be described in more detail.
[0029] The wind database 102 and the wind aggregator 104 communicate via the network 114, which can be any combination of wired networks and / or wireless networks including local networks such as intranets or global networks such as the Internet. The network 114 can also include any combination of public networks and / or private networks. These various types of network configurations are well known to those skilled in the art.
[0030] The wind estimation system 100 can optionally include a physical or virtual client 112 for displaying data related to single-shot, individual or aggregated wind speeds, statistical data, player data, etc. on the user interface. Various software applications can be executed on the client 112 to display the data in a manner preferred by the users of the wind estimation system 100. FIGS. 4A - 4B and 5A - 5B show examples of windows that can be displayed to the user on the user interface in response to selections made by the user. In FIGS. 4A - 4B, the user has selected to view data for one shot.
[0031] More specifically, FIG. 4A shows the measured position of the ball along the trajectory. The length of the shot is shown on the horizontal axis (i.e., the Z-axis), and the height of the shot is shown on the vertical axis (i.e., the Y-axis). Further, the user may further select additional information to be displayed, such as lift, drag, wind, etc., indicated by the arrows along the trajectory. FIG. 4B shows a view similar to FIG. 4A, in which case the user selects to view how the ball moves horizontally (i.e., within the horizontal plane) during the shot, which is indicated by the X-axis in FIG. 4A. Conceptually, this has a bird's-eye view and can be thought of as looking straight at the ball during the shot. In some embodiments, FIGS. 4A-4B may be combined into a 3D representation of the trajectory where all three axes are shown at once, and the user can also select different advantageous positions to view the ball's trajectory. The display of the trajectory and any additional information can be performed using the virtual reality or augmented reality system provided by the client 112.
[0032] Some embodiments of the wind estimation system 100 include a shot normalizer 110 for determining a "normalized" trajectory that "subtracts" the wind speed estimate aggregated from the recorded trajectories to determine how the trajectory would be without wind. The client 112 can be used by the user of the wind estimation system 100 to visualize such information. FIGS. 5A-5B each show a user interface corresponding to FIGS. 4A-4B. However, in this case, the user selects to show a comparison between two trajectories of the ball, one measured trajectory 502 (shown in FIGS. 4A-4B) and one "normalized" trajectory 504. The normalized trajectory 504 shows how the shot would look without wind. That is, the calculated wind speed is "subtracted" before displaying the shot to the user on the user interface. The user can select to view the original shot 502, the normalized shot 504, or a comparison of both, and useful information is obtained to inform the user, for example, how to adjust for the user's technique or club selection, as shown in FIGS. 5A-5B on the user interface.
[0033] As described above, the wind estimation system 100 obtains input data from a set of sensors 106 that capture data regarding a ball flying in a three-dimensional (3D) space. The ball may be, for example, a golf ball or another type of object (e.g., a baseball, a soccer ball, or a football / rugby ball) that is struck, kicked, or thrown to move through the air. In some embodiments, the 3D space is a golf driving range, a grass field, or another open area such as a golf practice area where an object can be launched. For example, the 3D space may be a sports play area such as a golf course, and the ball is struck from a launch area such as a golf tee of a particular hole on the golf course or an intermediate landing point of the ball during play to a target such as a cup at the end of the particular hole being played on the golf course or an intermediate landing point of the ball during play. Other embodiments are possible. For example, the launch area may be one of a plurality of designated tee areas along a tee line where a golfer can drive a ball into an open field, or the launch area may be one of a plurality of designated tee areas on a stadium stand where a golfer can drive a ball onto the play field of a sports arena.
[0034] Typically, two or more sensors, such as cameras (e.g., a stereo camera pair), radar devices (e.g., Doppler radar devices), or combinations thereof (e.g., a combination of a camera for sensing the angle of the ball and a radar for sensing the distance to the ball), are connected to the wind estimation system 100 as shown in FIG. 1 or via one or more computer devices, and these computer devices can perform various levels of processing on the data collected by the sensors 106 before transmitting the processed data to the wind aggregator 104 of the wind estimation system 100.
[0035] Generally, sensor 106 is located near the ball's launch area. However, in some embodiments, one or more sensors 106 may be located along one or both sides of the 3D space and / or on the other side of the 3D space on the opposite side of the launch area. For example, in a golf tournament, a camera can be positioned behind the green, facing the golfer, assuming the shot is being hit towards the green. Thus, in various embodiments, the sensor can observe and track objects moving away from, towards, and / or through the field of view of the sensor.
[0036] Sensor 106 may have different sensitivities (e.g., different resolutions of image sensors) and can be of various types (e.g., radar, camera, or a combination thereof) that can affect the quality of the data transmitted to wind estimation system 100. However, the sensitivity of sensor 106 does not affect the way wind aggregator 104 operates, as will be described in more detail later with reference to FIG. 3. Thus, to those skilled in the art, many variations of sensor setups and configurations are apparent based on the situation at hand.
[0037] In this system, different types of computers can be used. The basic 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" can include a server computer, a client computer, a personal computer, an embedded programmable circuit, or special-purpose logic circuitry. FIG. 2 is a schematic diagram of a data processing system including a data processing device 200, which represents an embodiment of wind aggregator 104. Data processing device 200 may be connected to one or more computers 290 via network 280.
[0038] The data processing device 200 can include various software modules that can be distributed between the application layer and the operating system. These can include executable and / or interpretable software programs or libraries, such as, for example, a single-trajectory wind speed estimation program or a program 230 that operates as an aggregated wind speed estimator. The number of software modules used can vary depending on the embodiment. Also, in some cases, the program 230 can be implemented in embedded firmware, and in other cases, the program 230 can be implemented as software modules distributed over one or more data processing devices connected by one or more computer networks or other suitable networks.
[0039] The data processing device 200 can include a hardware or firmware device that includes one or more hardware processors 212, one or more additional devices 214, a non-transitory computer-readable medium 216, a communication interface 218, and one or more user interface devices 220. The processor 212 is capable of processing instructions executed within the data processing device 200, such as, for example, instructions stored in the non-transitory computer-readable medium 216 (such as the instructions of program 230), and the non-transitory computer-readable medium 216 includes a storage device such as one of the additional devices 214.
[0040] In some embodiments, the processor 212 is a single-processor or multi-core processor, or two or more central processing units (CPUs). The data processing device 200 communicates with one or more computers 290 using its communication interface 218, for example, via a network 280. Thus, in various embodiments, the processes described can be executed in parallel or sequentially on a single-core or multi-core computing machine, and / or a computer cluster / cloud, etc.
[0041] Examples of user interface device 220 include a display, a touch screen display, a speaker, a microphone, a haptic feedback device, a keyboard, a mouse, and a headset or a head-up display of a virtual reality or augmented reality environment system. Further, the user interface device(s) need not be local device(s) 220, but may be remote from the data processing device 200, such as user interface device(s) 290 accessible via one or more communication network(s) 280. For example, the user interface device(s) 220 / 290 may be, for example, the user's smartphone or tablet computer for an augmented reality implementation. The data processing device 200 can store instructions for performing the operations described herein, for example, on a non-transitory computer-readable medium 216 including one or more additional devices 214 such as one or more of a device, a hard disk device, an optical disk device, a tape device, and a solid state memory device (e.g., a RAM drive).
[0042] Further, the instructions for performing the operations described herein can be downloaded from one or more computers 290 (e.g., from the cloud) via the network 280 to the non-transitory computer-readable medium 216. In some embodiments, the data processing device 200 is a smartphone or a tablet computer. In some embodiments, the RAM drive is a volatile memory device and instructions are downloaded each time the computer is powered on.
[0043] FIG. 3 is a flowchart showing a method 300 that is executed when a wind aggregator 104 according to some embodiments determines an aggregated wind speed estimate. As shown in FIG. 3, method 300 begins with obtaining 302 sensor data of two or more ball trajectories collected by sensor 106 as described above. Obtaining 302 can obtain data from another computer / system or from local memory where the data has been actively pushed, or obtaining 302 can passively receive data continuously. Depending on the embodiment at hand, the sensor data can be pre-processed to varying degrees by other computing devices before being obtained by the wind aggregator 104, or it can be obtained as raw data, and the wind aggregator 104 can directly manipulate the raw data from sensor 106.
[0044] In some embodiments, such pre-processing can include, for example, noise reduction, because the parameters measured by the sensor are subject to noise from many factors, for example, the camera hardware (e.g., the type of image sensor affects the resolution, i.e., the accuracy of the position of the ball center in the image), the mathematical model of the camera used when converting the camera image to distance (i.e., a pinhole camera is assumed), determining the accuracy of the direction / vector, etc. Therefore, it is beneficial to perform noise reduction pre-processing on the sensor data before it is sent to the wind aggregator 104, whereby the observed data from sensor 106 is enhanced in a sense compared to the original data.
[0045] Such noise reduction includes, for example, selecting a plurality of points along a measurement trajectory, fitting a polynomial to those points, and determining the difference values between a large number of measurement points along the trajectory and the corresponding points along the fitted polynomial, for example, using the least squares difference method or other statistical methods for a common purpose. This method is repeated multiple times, fitting different polynomials to different measurement points until a satisfactory fitted polynomial is found, and the values of the obtained "polynomial trajectory" can be used as the input values for the wind aggregator 104. In this case, what is considered "satisfactory" may depend on many factors such as available time and processing resources, but usually it is to find a polynomial track that provides better input values to the wind aggregator 104 than the original data measured by the sensor 106. It is either to repeat until a predetermined quality threshold is reached or to repeat until a polynomial track is found. This noise filtering reduces the potential adverse effects of "outlier" due to defects in the measurement data from the sensor 106 and provides better input parameters to the wind aggregator 104 as described below.
[0046] The wind aggregator 104 determines (304) the wind speed estimate for each shot (i.e., each trajectory). In this process, the wind aggregator 104 uses a physical model 108 in which the wind speed estimate is determined as the solution of an optimization problem, as described below. However, it should be noted that there may be other methods for determining the wind speed and variations of the methods presented herein that consider additional physical parameters. Therefore, the physical model 108 and the optimization problem presented herein should not be construed as limiting the scope of the present invention. Further, for clarity, it should be noted again that the meaning of speed used herein is not one or the other commonly used in spoken language, but a vector, i.e., it refers to direction and amplitude.
[0047] As described above, when calculating the wind speed estimate value for one shot, the wind speed estimation model uses the calculated model acceleration and trajectory of the golf ball [Number] It compares with the actual acceleration observation value of [[ID=]], and uses an optimization problem to minimize the mean squared error loss function L. [Number] Model acceleration [Number] is obtained by the following formula. [Number] In the formula, g is the gravitational vector affecting the ball. [Number] is the drag acceleration of the model. [Number] is the lift acceleration of the model. The accelerations of drag and lift are defined as follows: [Number] In the formula, [Number] is the drag coefficient as a function of the ball's velocity and spin. [Number] is the lift coefficient as a function of the ball's velocity and spin. [Number] is the velocity of the ball (relative to the air). K is a constant related to the mass (m) of the ball, the surface area (A) of the ball, and the density (ρ) of the air. In this model, the constant K is defined as follows:
Number
Number
Number
[0048] In some embodiments, the wind velocity vector v w is assumed to have a y - component that is always set to zero. However, in other embodiments, the wind velocity vector v w can have a non - zero y - component, i.e., a 3D vector, or a vector that varies according to the height of the ground. As is known to those skilled in the art, there are different normalized wind models that describe how the wind varies with the height above the ground. For example, the World Meteorological Organization (Geneva, Switzerland, 2008) describes such models in the "Guide to Meteorological Instruments and Methods of Observation" WMO - No.8.
[0049] The unknown variables to be optimized are θ 1 , θ 2 , α d , v wThis means that through optimization, the initial spin rate, spin decay coefficient, spin angle, and wind speed of the specified trajectory are found.
[0050] The loss function L can be minimized, for example, using a descent-based optimization method such as Newton's method, quasi-Newton's method, or gradient method, which are well-known to those skilled in the art.
[0051] In some embodiments, instead of directly using the second loss, using the Huber loss function was found by the inventors to be less sensitive to abnormal data compared to the second loss function, so the Huber loss function can enhance numerical stability and convergence.
[0052] In some embodiments, the direction vectors u D and u L are made into unit vectors after each optimization step to prevent the norm of the direction vectors from becoming larger or smaller than 1. This normalization has been proven to enhance the numerical stability of the optimization model. In alternative embodiments, the direction vectors u D and u L can instead be represented by angles, thereby eliminating the need to normalize the vectors. A full 3D vector can be represented by two angles, or by a single angle if it is assumed that the ball has no gyro spin (i.e., rotation along the direction of travel).
[0053] In some embodiments, a memory-limited Broyden-Fletcher-Goldfarb-Shanno (BFGS) optimization algorithm with line search (using strong Wolfe criteria) is used. This is a quasi-Newton type optimization algorithm that uses an iterative method to solve unconstrained non-linear optimization problems and is well-known to those skilled in the art.
[0054] Some embodiments use the Limited-memory BFGS (L-BFGS) algorithm, which approximates the BFGS algorithm using a limited amount of computer memory. The BFGS / L-BFGS algorithms are standard algorithms for solving unconstrained numerical optimization problems and are well known to those skilled in the art. It should be noted that the various embodiments of the invention described herein are not limited to one or the other with respect to both the formulation of the optimization problem (e.g., the loss function) and the selection of the particular optimization algorithm used to solve this problem.
[0055] There are several standard algorithms that can be used in this context, including gradient descent, Newton's method, BFGS, and L-BFGS. It should be noted that this is not a complete list of possible algorithms, but rather a suggestion of suitable algorithms. When choosing an algorithm to use, there are several considerations, such as the number of iterations it takes for the algorithm to converge, the time taken for each iteration, and the stability of the algorithm.
[0056] For example, gradient descent tends to be relatively stable but usually requires many iterations to converge. However, typically, the calculations for each iteration are fast. Overall, though, the time to converge is usually the longest among the above algorithms. Newton's method converges quickly but can be unstable. Each iteration also has a higher computational cost compared to other methods. BFGS converges at approximately the same speed as Newton's method and is more stable. The computational cost for each iteration is much cheaper than that of Newton's method but slightly more expensive than gradient descent. In terms of time, BFGS usually converges the fastest. As mentioned above, L-BFGS is a slight modification of BFGS to speed up the algorithm and reduce the memory used. Such efficiency considerations are often important for use cases, and thus the L-BFGS algorithm can be a better choice than the traditional BFGS algorithm.
[0057] Two important issues relate to the method of managing the amount of noise and the method of managing outliers in the data. These issues are addressed by smoothing the data, using the Huber loss function as described above to normalize the spin vector so that it does not deviate from the unit vector, and using only the shots that can provide accurate wind speed estimation, as will be explained in more detail below.
[0058] Furthermore, the amount of spin α m (t) is represented above as a linear function in the above embodiment, but it should be noted that in other alternative embodiments it can be any decreasing function of t such as exponential decay, quadratic decay, etc.
[0059] Since the acceleration observed by sensor 106 is affected by noise, some embodiments use a polynomial moving window approach to reduce the noise. Specifically, a Savitzky-Golay filter can be applied to the data points collected by sensor 106 to smooth the data. This is achieved by convolution and fitting a continuous subset of adjacent data points using a low-order polynomial by the linear least squares method. When the data points are equally spaced, an analytical solution of the least squares equation can be found in the form of a single set of "convolution coefficients" that can be applied to all data subsets to give an estimate of the smoothed signal (or the derivative of the smoothed signal) at the center point of each subset, giving an estimate of the smoothed t_min. In other embodiments, noise reduction can be achieved, for example, by using Gaussian kernel convolution or by using a moving average window. The choice of window size and polynomial degree typically depends on the time resolution and noise level of sensor 106 and thus varies based on the particular setup at hand. However, such a choice of parameters can be made by one of ordinary skill in the art without undue experimentation.
[0060] Returning now to FIG. 3, once several wind speed estimations have been determined, the wind aggregator 104 calculates an aggregated wind speed estimation. In some embodiments, the aggregated wind speed estimation is calculated in a two-step process. First, an average wind speed is calculated using all of the wind speeds calculated during a time window representing the last N minutes. This average wind speed is the value of the "original wind speed" of the time window. The length of the time window depends on the number of shots necessary to perform an accurate wind estimation. The longer the time window, the higher the likelihood that a sufficient number of shots will occur during that time window. Generally, the more shots there are, the higher the estimation tends to be. In this case, the number of shots considered sufficient depends primarily on the accuracy of the tracking sensor. However, it should be noted that as the time window increases, the wind may change during the time window, and the assumption that the wind is constant during the time window is no longer valid, which can lead to inaccurate wind estimations. Therefore, it is important to find a good balance between these competing factors. Some embodiments use a fixed time window, while other embodiments use a dynamic time window. For example, the time window can be made shorter as the number of available shots increases, depending on the number of available shots. In some embodiments, N is about 2-4 minutes.
[0061] Then, an exponentially weighted moving average (EWMA) is applied to this time series to obtain an aggregated wind speed estimation. The EWMA is chosen because it is easy to implement and allows for applying a larger weight and importance to the most recent data point rather than applying the same weight to all observations within the period. However, the EWMA is just one of many available models, and many other models will be apparent to those skilled in the art. For example, in some embodiments, a moving average can be used, and the weights can be such that new data points have a higher weight, e.g., when averaging three data points, the weights are "0.2, 0.3, 0.5".
[0062] In some embodiments, the aggregated wind speed estimate is calculated using only the wind speed estimates of each shot having a minimum length. The reason is that in shorter shots, the ball speed is lower, so the influence of the estimated spin on the wind speed increases, and the uncertainty of the estimated wind speed increases. As a result, shots that are too short may actually have an adverse effect on the estimated wind speed of the shot, so it is better not to include such shots in the calculation. What "sufficiently long" means in this context is a parameter that can be determined by those skilled in the art using experiments. However, one exemplary criterion is that when the flight distance is at least 100 meters, at least 70% of the trajectory is observed (not estimated / estimated) by the sensor 106. Of course, this also depends on the sensitivity and noise level of the sensor 106. 70% may be appropriate for a certain type of sensor, but there may be other sensors that can use smaller or larger flight distances and / or percentages.
[0063] Once the weighted average wind speed is calculated, it is stored in the wind database 102 at 308, displayed to the user at the client 112 (or the device 200 or the device 220), and / or can be used by the shot normalizer 110. As described above with reference to FIGS. 4A-4B and FIGS. 5A-5B respectively, the process ends. Usually, the wind database 102 also stores the time when the weighted average wind speed was calculated. Usually, the process 300 is executed according to a schedule, for example, when N seconds have elapsed since the latest average wind speed was calculated. Alternatively, the process can be executed each time a new shot is recorded. Of course, these are just two examples, and there can be many other trigger mechanisms that those skilled in the art can envision for when the process 300 should be executed.
[0064] In some embodiments, each time process 300 is executed, process 300 uses data collected for any shots that have occurred since the previous execution of process 300, thereby ensuring that all shots that meet the qualification criteria (e.g., as described above, at least 100 meters where at least 70% of the trajectory was observed) are considered.
[0065] As described above, the aggregated wind speed estimate uses only the most recent shots. Thus, in some embodiments, if no new shots have occurred (and no new aggregated wind speed estimates have been calculated), any aggregated wind speed estimate has an expiration time (e.g., 20 minutes). However, of course, this expiration time parameter is configurable.
[0066] In some embodiments, each time the wind aggregator 104 processes a new shot using the physical model 108, the most recent aggregated wind speed estimate is used as the initial wind speed in the first iteration of a convergence calculation model such as those described above. Thus, the aggregation method described herein can be used with any physical model that takes the current wind force estimate as an input.
[0067] Furthermore, as described above, one use of the aggregated wind speed estimate can be used as an input to the shot normalizer 110 for calculating the normalized shot. When determining the shot normalized by the shot normalizer 110, the aggregated wind speed used as the initial wind speed in the physical model of the shot can be used. Selecting and normalizing this aggregated wind speed estimate rather than a more recent one is because this aggregated wind speed estimate is the best possible wind speed estimate at the time of the shot. A more recent aggregated wind speed estimate may be affected by subsequent shots, the wind may have changed when the cut was made, and it may not accurately reflect the wind conditions at the time of the cut. Shot normalization is only one use where the aggregated wind speed estimate can be used, and various other uses of the aggregated wind speed estimate may be made. In any case, the resulting normalized shot (or other shot data resulting from other uses of the aggregated wind speed estimate) can be displayed to the user on the client 112 (or device 200 or device 220) and / or further processed to provide useful information to the user.
[0068] Typically, the aggregated wind speed estimate is calculated as a single value for the entire play area. However, since the play area (e.g., range) can be quite large, the wind can vary between different parts of the play area, such as the outer edges and the center. Thus, in some embodiments, the aggregated wind speed estimate can be calculated as separate estimates for different subsections of the play area, using only the shot data from each subsection, and the wind database can include data regarding which part of the play area the aggregated wind speed estimate applies to. The number of subsections can vary depending on, for example, the size of the play area, or the specific layout and configuration of the play area. For example, as described herein, the play area can be divided into different regions based on the location of the shots, and each region can have its own wind estimate. In some cases, the regions may overlap. It should be noted that in such a region division method, it is assumed that the wind is constant or highly dependent (but constant at a given altitude). In reality, the distance of a golf shot is long, and there are different wind conditions at the start and end of the ball trajectory (i.e., the hitting area and the place where the ball lands, respectively), which can depend on, for example, the surrounding terrain (trees, buildings, etc.). The general principles described herein also apply to these situations, but more advanced modeling is required to account for the effects of wind variations along the trajectory.
[0069] The present invention also relates to a computer software function for estimating wind speed according to the above. Such a computer software function is then configured to execute the acquisition trajectory described above at runtime, determine each wind speed estimate value, and calculate the aggregated wind speed estimate value. The computer software function is configured to execute on the physical or virtual hardware of the wind aggregator 104 and / or the data processing device 200 of the system 100 as described above.
[0070] Embodiments and functional operations of the subject matter described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware that includes the structures disclosed in this specification and their structural equivalents, or combinations of one or more of them. Embodiments of the subject matter described in this specification can be implemented using one or more computer program instruction modules encoded on a non-transitory computer-readable medium for a data processing apparatus to execute or control the operation of the data processing apparatus. The computer-readable medium can be a manufactured product such as a hard drive of a computer system, an optical disk sold through a retail channel, or an embedded system. The computer-readable medium can be separately acquired and later encoded with one or more modules of computer program instructions, such as delivery via a wired network or a wireless network of one or more modules of computer program instructions. 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 of them.
[0071] The term "data processing apparatus" includes all means, devices, and machines for processing data, such as programmable processors, computers, or multiple processors or computers. The apparatus can also include code for creating an execution environment for related computer programs, such as processor firmware, protocol stacks, database management systems, operating systems, runtime environments, or code constituting one or more combinations of these. Further, the apparatus can adopt the infrastructure of various computing models, such as web services, distributed computing, grid computing, etc.
[0072] A computer program (also referred to as a program, software, software application, script, or code) can be written in any suitable programming language, including compiled languages, interpreted languages, declarative, or procedural languages, and can be arranged in any suitable form, as an independent program or as including modules, components, subroutines, or other units suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. The program can be stored as part of a file that stores other programs or data (such as one or more scripts stored in a document of a markup language), in a single file dedicated to the relevant program, or in multiple related files (such as files storing one or more modules, subprograms, or portions of code). A computer program can be arranged to be executed on one computer or on multiple computers located in one place or distributed across multiple places and interconnected by a communication network.
[0073] One or more programmable processors can perform functions by executing the processes and logic flows described herein, executing one or more computer programs, and operating on input data to generate output. The processes and logic flows may also be executed by dedicated logic circuitry, such as an FPGA (Field Programmable Gate Array) or ASIC (Application Specific Integrated Circuit), and the apparatus may be implemented as dedicated logic circuitry.
[0074] Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, as well as one or more processors of any suitable digital computer. Generally, a processor may receive instructions and / or data from a read only memory (ROM), a random access memory (RAM), or both. The basic elements of a computer are a processor for executing instructions, and one or more memory devices for storing instructions and data. Generally, a computer may also receive data from, or transfer data to, or be operatively coupled to one or more mass storage devices used for storing data, such as a magnetic disk, magneto-optical disk, or optical disk. However, a computer need not have such devices. Further, a computer may be embedded in 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), just to name a few. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, such as semiconductor memory devices, e.g., EPROM (erasable programmable read only memory), EEPROM (electrically erasable programmable read only memory), and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; CD-ROM disks and DVD-ROM disks; network attached storage; and various forms of cloud storage. The processor and memory may be supplemented and incorporated by dedicated logic circuitry.
[0075] To interact with a user, embodiments of the subject matter described herein can be implemented on a computer having a display device, such as an LCD (Liquid Crystal Display), an OLED (Organic Light Emitting Diode), or other display, for displaying information to the user, and a keyboard and a pointing device, such as a mouse or a trackball, through which the user can provide input to the computer. Other types of devices can also be used to interact with the user. For example, the feedback provided to the user can be sensory feedback, such as visual feedback, auditory feedback, or tactile feedback, and the input received from the user can be in various forms, including acoustic, voice, or tactile input.
[0076] A computing system can include a client and a server. The client and the server are generally far apart from each other and always communicate through a communication network. The relationship between the client and the server is created by computer programs operating on respective computers and by having the relationship between the client and the server with each other. Embodiments of the subject matter described herein can be implemented in a computer that includes a backend component as a data server, or (for example) a middleware component such as an application server, or a frontend component such as a client computer having a graphical user interface or a web browser through which a user can interact with the implementation of the systems and techniques described in this application, or a combination of one or more such backend, middleware, or frontend components. The components of the system can be interconnected by any form of digital data communication or medium (for example, a communication network). Examples of communication networks include local area networks ("LANs") and wide area networks ("WANs"), Internet networks (such as the Internet), and peer-to-peer networks (such as ad hoc peer-to-peer networks).
[0077] This specification includes details of many embodiments, but these details should not be construed as limitations on the scope of the invention or on the content that may require protection, but rather as descriptions of the distinctive features of the embodiments of the invention. Some features described in the context of individual embodiments herein can also be implemented in combination in a single embodiment. In contrast, various features described in the context of a single embodiment may be implemented alone in multiple embodiments or in any suitable sub-combination. Further, features, even if initially protection is claimed, may in some cases have one or more of the features from the claimed combination removed from that combination, and the claimed combination can refer to a sub-combination or a variation of a sub-combination. Thus, unless otherwise explicitly stated or clearly indicated by the knowledge of those skilled in the art, any feature of the above-described embodiments can be combined with any other feature of the above-described embodiments.
[0078] Similarly, although operations are depicted in the drawings in a particular order, this should not be understood as requiring that these operations be performed in the order or sequence shown, or as requiring that all of the illustrated operations be performed to achieve the desired result. In certain circumstances, multitasking and / or parallel processing may be advantageous. Further, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and the described program components and systems may be integrated together in a single software product or packaged in multiple software products.
[0079] Accordingly, embodiments of the present invention have been described. Other embodiments are within the scope of the following claims. For example, while the above description has focused on wind speed estimation in the context of golf, the systems and techniques described can also be applied to other types of objects that move through the air and are affected by the wind, such as baseballs or skeet shooting, and non-sports application uses. Further, in the embodiments described herein, two sensors are used to measure the trajectory of the ball, but there are other embodiments where a single sensor (e.g., Doppler radar, etc.) can be used to measure angle and distance, and it should be noted that additional sensors are not necessary.
Description of Reference Numerals
[0080] 100 Wind Estimation System 102 Wind Database 104 Wind Aggregator 106 Sensor 108 Physical Model 110 Shot Normalizer 112 Client 114 Network 200 Data Processing Device 212 One or More Hardware Processors 214 One or More Additional Devices 216 Non-Temporary Computer Readable Medium 218 Communication Interface 220 One or More User Interface Devices 230 Program 280 Network 290 One or More Computers
Claims
1. A method for estimating wind speed, comprising: obtaining measurement values indicating two or more trajectories through which a flying ball passes; determining a wind speed estimate for each of the two or more trajectories, the determining including comparing a modeled acceleration of the ball with an observed acceleration of the ball derived from the measurement values; calculating an aggregated wind speed estimate as a weighted average of the determined wind speed estimates for each of the two or more trajectories; using the aggregated wind speed estimate to generate ball trajectory information presented to an output device.
2. The method of claim 1, wherein the measurement of the trajectory is at least partially performed by one or more of radar, a camera, or both.
3. Determining each wind speed estimate includes: solving an optimization problem related to minimizing a loss function that compares the modeled acceleration of the ball with the observed acceleration of the ball, the method of claim 1.
4. The method of claim 3, wherein the modeled acceleration is calculated as a sum of a gravitational acceleration component, a drag acceleration component, and a lift acceleration component.
5. The optimization problem of claim 4 is optimized for one or more of the initial spin speed of the ball, the spin decay coefficient of the ball, the spin angle of the ball, and combinations thereof, in addition to optimizing for wind speed.
6. The method according to any one of claims 1 to 5, wherein each of the two or more trajectories meets at least one minimum criterion of flight distance and a minimum observed percentage of the length of the trajectory.
7. The method according to any one of claims 1 to 5, wherein the two or more trajectories include trajectories for which measurement values are collected during a predefined time window.
8. The method of claim 7, wherein the predefined time window is 2 to 4 minutes.
9. The method according to any one of claims 1 to 5, wherein calculating the aggregated wind speed estimate is performed in response to a new trajectory generated by a flying ball.
10. The method according to any one of claims 1 to 5, wherein calculating the aggregated wind speed estimate is performed at fixed time intervals.
11. The method according to any one of claims 1 to 5, further comprising using the aggregated wind speed estimate as an initial wind speed estimate for subsequent trajectory estimation.
12. The method according to any one of claims 1 to 5, further comprising modeling a normalized trajectory that is not affected by any wind using the aggregated wind speed estimation.
13. The method according to any one of claims 1 to 5, wherein the weighted average is determined using an exponentially weighted moving average.
14. The method according to any one of claims 1 to 5, wherein separate aggregated wind speed estimations are determined for different parts of the play area.
15. A computer software product configured to execute the steps of the method according to any one of claims 1 to 14 when executed.
16. A system for estimating wind speed, comprising: receiving means for receiving measurements indicative of two or more trajectories through which a fly ball passes; determining means for determining a wind speed estimate for each of the two or more trajectories, the determining including comparing a modeled acceleration of the ball with an observed acceleration of the ball derived from the measurements; calculating means for calculating an aggregated wind speed estimate as a weighted average of the wind speed estimates for each of the two or more trajectories for which the aggregated wind speed estimate has been determined; generating means for generating ball trajectory information to be presented to an output device using the aggregated wind speed estimate.
Citation Information
Patent Citations
Golf field
JP1987170275A
Portable terminal, recommendation method, and computer program
JP2011183067A
Golf player support system, user terminal device, method of supporting golf player, and program
JP2012095914A
Wind estimation system, wind estimation method, and program
WO2017098571A1
Trajectory extrapolation and origin determination for objects tracked in flight
WO2021148560A1