Trajectory extrapolation and origin determination of flight-tracked objects

By installing ball sensors and computer systems in multiple well-defined physical locations, determining the three-dimensional trajectory of balls and inferring the starting point position, the accuracy problem of determining ball flight trajectory and starting point position in the prior art is solved, and high-precision ball tracking and starting point recognition are achieved.

JP7663586B2Active Publication Date: 2025-04-16TOPGOLF SWEDEN AB

Patent Information

Application Number
JP2022544141
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-01-21
Filing Date
2021-01-21
Publication Date
2025-04-16
Estimated Expiration
2041-01-21

AI Technical Summary

Technical Problem

In the prior art, in tracking balls in flight, such as golf balls, especially in multiple starting positions, it is difficult to accurately determine the three-dimensional trajectory and starting position of the balls, especially when the system starts late or the angle is incorrect, there are large errors.

Method used

Multiple well-defined physical positions are used as the starting point of the ball, and multiple ball sensors and computer systems are equipped with data processing through hardware processors and memory devices to determine the three-dimensional trajectory of the ball, and infer the trajectory through time inversely, calculate the distance from multiple starting points, and estimate the system error, so as to accurately determine the starting point of the ball.

Benefits of technology

The accurate trajectory tracking and starting position determination of the balls in flight in three-dimensional space is realized, which reduces the error allocation due to errors and improves the accuracy and efficiency of the system.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007663586000019
    Figure 0007663586000019
  • Figure 0007663586000020
    Figure 0007663586000020
  • Figure 0007663586000021
    Figure 0007663586000021
Patent Text Reader

Abstract

and awaiting further observations of the golf ball by the sensors when the error measure does not meet the criterion. A method, system, and apparatus, including a computer program product encoded on media, for 3D flight tracking of an object, comprising: determining a golf ball trajectory based on observations by a sensor; extrapolating the trajectory back in time; calculating a distance measure between the extrapolated trajectory and a physical location; estimating systematic errors of the observations that affect the observed ball location; estimating random errors associated with the observations that affect the angle of the trajectory determined from the observed ball location; combining the estimated systematic errors and the estimated random errors to generate an error measure for the distance measure; identifying one of the physical locations as the starting point of the golf ball when the error measure meets a criterion; and awaiting further observations of the golf ball by the sensors when the error measure does not meet the criterion.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] This specification relates to flight tracking of objects, such as golf balls, using data obtained from cameras, radar, and / or other sensor devices. [Background technology]

[0002] US Patent No. 5,413,345 describes a golf shot tracking and analysis system in which a range camera and a locator camera are positioned to view the golf ball as it is struck or after it has flown. As described in US Patent No. 5,413,345, the locator camera displays the golf shot as it leaves the tee area, and the range camera displays the shot from a nearly vertical position downrange. Furthermore, the starting point of a particular tee box of the ball in flight is determined even if the camera cannot "see" the ball on the tee. In addition, US Patent Publication No. 20180011183 describes a system for tracking multiple projectiles using radar, in which one or more radar devices are positioned to maximize the radar device's field of view (beam coverage), each radar device has its own associated computer for defining its own three-dimensional radar coordinate system, and a central computer can trace the trajectory of each object backwards to identify the striking bay from which each object was launched. Summary of the Invention [Problem to be solved by the invention]

[0003] This specification describes techniques for flight tracking of objects such as golf balls using data obtained from cameras, radar, and / or other sensor devices, and in particular for trajectory extrapolation and starting point determination during full-flight three-dimensional (3D) tracking.

[0004] In general, one or more aspects of the subject matter described herein may be embodied in one or more systems including two or more defined physical locations at which a golf ball is launched into a three dimensional physical space, one or more golf ball sensors positioned relative to the three dimensional physical space to detect the golf ball in flight after it is launched into the three dimensional physical space from the two or more defined physical locations, and one or more computers communicatively coupled to the one or more golf ball sensors, the one or more computers including at least one hardware processor and at least one memory device coupled to the at least one hardware processor, the at least one memory device encoding instructions configured to cause the at least one hardware processor to perform operations.The at least one hardware processor is configured to determine a three dimensional trajectory of the golf ball in a three dimensional physical space based on an initial observation of the golf ball by one or more golf ball sensors, the at least one hardware processor is configured to extrapolate the three dimensional trajectory of the golf ball back in time to generate an extrapolated trajectory, the at least one hardware processor is configured to calculate one or more distance measures between the extrapolated trajectory and two or more defined physical locations, the at least one hardware processor is configured to estimate a systematic error affecting an observed ball position of at least one of the initial observations of the golf ball by the one or more golf ball sensors ... The at least one hardware processor is configured to estimate a random error that affects an angle of trajectory determined from the observed ball positions associated with at least one of the initial observations of the golf ball by the golf ball sensor, the at least one hardware processor is configured to combine the estimated systematic error and the estimated random error to generate one or more error measures of the one or more distance measures, the at least one hardware processor is configured to identify one of the two or more defined physical locations as a start of the golf ball when the one or more error measures meet a predefined criterion, and the at least one hardware processor is configured to await further observations of the golf ball by the one or more golf ball sensors when the one or more error measures do not meet a predefined criterion. Other embodiments of this aspect include corresponding methods, apparatus, and computer program products. [Means for solving the problem]

[0005] These and other embodiments may optionally include one or more of the following features: the two or more defined physical locations include two or more tee locations within the two or more tee areas, the at least one hardware processor may be configured to calculate a first distance measure for a first one of the two or more tee locations within a first one of the two or more tee locations and calculate a second distance measure for a second one of the two or more tee locations within a second one of the two or more tee areas, the at least one hardware processor may be configured to identify the first tee area including the first tee location as a starting point of the golf ball when the first distance measure meets a predefined threshold and the second distance measure does not meet a predefined threshold, and to identify a second tee area including the second tee location as a starting point of the golf ball when the first distance measure meets a predefined threshold and the second distance measure meets a predefined threshold and the second tee location is after the first tee location along the extrapolated trajectory.

[0006] The one or more golf ball sensors may include at least two separate golf ball sensor systems that independently track the golf ball in three-dimensional physical space, the initial observation is from a first golf ball sensor system of the at least two separate golf ball sensor systems, the at least one hardware processor may be configured to obtain a further observation of the golf ball from the first golf ball sensor system before a second golf ball sensor system of the at least two separate golf ball sensor systems detects the golf ball, the at least one hardware processor may be configured to update the three-dimensional trajectory of the golf ball based on the further observation to determine an updated three-dimensional trajectory, the at least one hardware processor may be configured to extrapolate the updated three-dimensional trajectory of the golf ball back in time to generate an updated extrapolated trajectory, the at least one hardware processor may be configured to update one or more error measures according to the updated three-dimensional trajectory, and the at least one hardware processor may be configured to identify one of the two or more defined physical locations as a starting point of the golf ball when the one or more updated error measures meet a predefined criterion.

[0007] The initial observation is from a first golf ball sensor system of the at least two separate golf ball sensor systems, and the at least one hardware processor may be configured to obtain a further observation of the golf ball from a second golf ball sensor system of the at least two separate golf ball sensor systems, and the at least one hardware processor may be configured to determine a respective three-dimensional trajectory of the golf ball in three-dimensional physical space based on the further observation of the golf ball by the second golf ball sensor system, and the at least one hardware processor may be configured to extrapolate the three-dimensional trajectory of the respective golf ball back in time to generate a respective extrapolated trajectory, and the at least one hardware processor may be configured to calculate one or more respective distance measures between the respective extrapolated trajectories and the two or more defined physical locations. the at least one hardware processor may be configured to estimate an individual systematic error of at least one of the further observations of the golf ball by the second golf ball sensor system, the at least one hardware processor may be configured to estimate an individual random error associated with at least one of the further observations of the golf ball by the second golf ball sensor system, the at least one hardware processor may be configured to combine the individual estimated systematic errors and the individual estimated random errors to generate one or more individual error measures for the one or more individual distance measures, and the at least one hardware processor may be configured to identify one of the two or more defined physical locations as a start of the golf ball when the one or more individual error measures meet a predefined criterion.

[0008] The one or more golf ball sensors may include a camera, and the at least one hardware processor may be configured to estimate an intrinsic calibration error based on a focal length of the camera. The camera may be a stereo camera, and the at least one hardware processor may be configured to calculate a disparity of the stereo camera based on a distance between the stereo camera and an initial observation point, and the at least one hardware processor may be configured to estimate a stereo calibration error of the stereo camera as an estimated error of a calibrated rotation of the stereo camera. The at least one hardware processor may be configured to estimate a total random disparity error of the extrapolated trajectory, and the at least one hardware processor may be configured to adjust an error measure from the total random disparity error based on a distance from the initial observation point to a baseline of the stereo camera.

[0009] The extrapolated trajectory may be within the field of view of one or more golf ball sensors, but no observations of the golf ball need be identified for this portion of the golf ball's flight. The at least one hardware processor can be configured to check for intersections of the extrapolated trajectory with geometric shapes representing two or more defined physical locations, the at least one hardware processor can be configured to determine distances between the extrapolated trajectory and impact locations within respective geometric shapes representing the two or more defined physical locations, the at least one hardware processor can be configured to select one of the two or more defined physical locations to identify as a starting point for estimating systematic and random errors based on the determined distances when only one of the determined distances is below a threshold distance, and the at least one hardware processor can be configured to select one of the two or more defined physical locations to identify as a starting point for estimating systematic and random errors based on a last intersection point along the extrapolated trajectory toward at least one of the initial observation points when both or none of the determined distances are below the threshold distance.

[0010] The geometric shapes representing the two or more defined physical locations may include three-dimensional geometric shapes. The at least one hardware processor may be configured to determine a hitting location based on inputs to the system. The inputs may include inputs from at least one electronic location system. The at least one hardware processor may be configured to set a hitting location for a golfer based on sensor data obtained at one or more test golf shots hit by the golfer and location data from a mobile communication device associated with the golfer, the mobile communication device being communicatively coupled to the at least one electronic location system. The at least one electronic location system may include a global navigation satellite system. The two or more defined physical locations may be a golf bay or tee area of ​​a golf driving range and various targets for golf balls that include a three-dimensional physical space.

[0011] Additionally, one or more aspects of the subject matter described herein may include determining a three-dimensional trajectory of a golf ball in a three-dimensional physical space based on initial observations of the golf ball by one or more golf ball sensors; extrapolating the three-dimensional trajectory of the golf ball back in time to generate an extrapolated trajectory; calculating one or more distance measures between the extrapolated trajectory and two or more defined physical locations; estimating a systematic error affecting an observed ball position of at least one of the initial observations of the golf ball by the one or more golf ball sensors; and calculating an angle of the trajectory determined from the observed ball position associated with at least one of the initial observations of the golf ball by the one or more golf ball sensors. The present invention may be embodied in one or more methods and / or one or more tangible computer-readable media (e.g., at least one memory device) encoding instructions configured to cause at least one hardware processor to perform operations including estimating a random error that will impart a given distance to the golf ball; combining the estimated systematic error and the estimated random error to generate one or more error measures for the one or more distance measures; identifying one of the two or more defined physical locations as the starting point of the golf ball when the one or more error measures meet a predefined criterion; and waiting for further observations of the golf ball by one or more golf ball sensors when the one or more error measures do not meet the predefined criterion.

[0012] The calculating may include calculating a first distance measure for a first one of the two or more tee locations in a first tee area of ​​the two or more tee areas and calculating a second distance measure for a second one of the two or more tee locations in a second tee area of ​​the two or more tee areas, and the identifying may include identifying a first tee area including the first tee location as a starting point of the golf ball when the first distance measure meets a predefined threshold and the second distance measure does not meet a predefined threshold, and identifying a second tee area including the second tee location as a starting point of the golf ball when the first distance measure meets a predefined threshold and the second distance measure meets a predefined threshold and the second tee location is after the first tee location along the extrapolated trajectory.

[0013] The one or more golf ball sensors may include at least two separate golf ball sensor systems that independently track the golf ball in three-dimensional physical space, the initial observation being from a first golf ball sensor system of the at least two separate golf ball sensor systems, and the operations may include obtaining a further observation of the golf ball from the first golf ball sensor system before a second golf ball sensor system of the at least two separate golf ball sensor systems detects the golf ball, updating the three-dimensional trajectory of the golf ball based on the further observation to determine an updated three-dimensional trajectory, extrapolating the updated three-dimensional trajectory of the golf ball back in time to generate an updated extrapolated trajectory, updating one or more error measures according to the updated three-dimensional trajectory, and identifying one of the two or more defined physical locations as a starting point of the golf ball when the one or more updated error measures meet a predefined criterion.

[0014] the initial observation is from a first golf ball sensor system of the at least two separate golf ball sensor systems, and the operations may include obtaining a further observation of the golf ball from a second golf ball sensor system of the at least two separate golf ball sensor systems, determining an individual three-dimensional trajectory of the golf ball in three-dimensional physical space based on the further observation of the golf ball by the second golf ball sensor system, extrapolating the three-dimensional trajectory of the individual golf ball back in time to generate an individual extrapolated trajectory, calculating one or more individual distance measures between the individual extrapolated trajectory and the two or more defined physical locations, estimating an individual systematic error of at least one of the further observations of the golf ball by the second golf ball sensor system, estimating an individual random error associated with at least one of the further observations of the golf ball by the second golf ball sensor system, combining the individual estimated systematic error and the individual estimated random error to generate one or more individual error measures of the one or more individual distance measures, and identifying one of the two or more defined physical locations as a starting point of the golf ball when the one or more individual error measures meet a predefined criterion.

[0015] The one or more golf ball sensors may include a camera, and estimating the systematic error may include estimating an intrinsic calibration error based on a focal length of the camera. The camera may be a stereo camera, and estimating the intrinsic calibration error may include calculating a disparity of the stereo camera based on a distance between the stereo camera and an initial observation point, and estimating the systematic error may include estimating a stereo calibration error of the stereo camera as an estimated error of a calibrated rotation of the stereo camera. Estimating the random error may include estimating a total random disparity error of the extrapolated trajectory and adjusting an error measure from the total random disparity error based on a distance from the initial observation point to a baseline of the stereo camera.

[0016] The extrapolated trajectory may be within the field of view of one or more golf ball sensors, but observations of the golf ball need not be identified for this portion of the golf ball's flight. Calculating the one or more distance measures may include checking an intersection of the extrapolated trajectory with a geometric shape representing two or more defined physical locations, determining a distance between the extrapolated trajectory and a strike location within each of the geometric shapes representing the two or more defined physical locations, selecting one of the two or more defined physical locations to identify as a starting point and to estimate systematic and random errors based on the determined distance when only one of the determined distances is below a threshold distance, and selecting one of the two or more defined physical locations to identify as a starting point and to estimate systematic and random errors based on a final intersection point along the extrapolated trajectory toward at least one of the initial observation points when both or none of the determined distances are below the threshold distance.

[0017] The geometric shapes representing the two or more defined physical locations include three-dimensional geometric shapes, and the operations include determining a hitting location based on inputs to the system, the inputs may include inputs from at least one electronic location system. Determining the hitting location includes setting a hitting location for a golfer based on sensor data obtained at one or more test golf shots hit by the golfer and location data from a mobile communication device associated with the golfer, the mobile communication device being communicatively coupled to the at least one electronic location system. The at least one electronic location system may include a global navigation satellite system. The two or more defined physical locations may be a golf bay or tee area of ​​a golf driving range and various targets for golf balls that include a three-dimensional physical space.

[0018] Various embodiments of the subject matter described herein can be implemented to achieve one or more of the following advantages: Even when a golf ball tracking system is used to simultaneously track golf balls coming from multiple different golf bays (or other defined physical locations), the start of the tracked golf ball can be quickly and accurately identified, thus reducing the number of golf shots that are assigned to an incorrect start golf bay and / or cannot be assigned to a start golf bay until after the golf shot is hit. This can occur when the golf ball tracking system begins tracking the golf ball later than normal and the golf ball is at an angle relative to the golf bays that creates a significant error (e.g., parallax error in a stereo camera system) that results in an error in selecting the correct start golf bay.

[0019] To address this issue, an error associated with the first point of each trajectory of a detected golf shot can be estimated and an assessment can be made as to how the error affects the selection of a golf bay. This can include estimating the error in two parts: (1) a systematic error, which affects the position error of the first point in the same way as a point extrapolated behind a golf bay, and (2) a random error, which affects the angle of the extrapolated trajectory generated from a point in each trajectory with a random position error. The systematic error can be calculated by estimating the vector value error of the first observation of the trajectory, projecting this value onto the selected golf bay to determine how much this error affects the selection of a golf bay. The random error can be calculated by estimating the angular error of the first observation of the trajectory, determining how much this error affects the backward extrapolation algorithm, and multiplying this error by the distance to the selected golf bay to determine how much this error affects the selection of a golf bay. Taking these two types of errors into account can significantly reduce the number of golf shots that are incorrectly assigned to a starting point without increasing the delay (e.g., waiting for more data and / or a new version of the trajectory) before the golf shot is presented to the golfer.

[0020] Additionally, a separate dedicated golf ball tracking system is not required for each golf bay, thereby reducing the cost of a system where multiple golfers hit golf balls simultaneously. Using fewer golf ball tracking systems at a venue, such as a golf driving range, reduces the work required to manage the system and correct hardware errors or repair malfunctions. Additionally, a wider field of view can be achieved and fewer components need to be placed near the golfers, e.g., at the golf bays. For example, a golf ball tracking system using the systems and techniques detailed in this disclosure does not need to include a tracking unit installed in each golf bay of a golf entertainment facility. Additionally, having fewer tracking systems reduces the overall complexity of the system from a software perspective, especially when the golf facility is fully covered by only a single system.

[0021] The details of one or more embodiments of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the invention will become apparent from the description, drawings, and claims.

[0022] Like reference numbers and designations in the various drawings indicate like elements. [Brief description of the drawings]

[0023] [Figure 1] FIG. 1 illustrates an example of a system that performs 3D flight tracking of a golf ball through three-dimensional space. [Figure 2A] 1 is a schematic diagram of two golf bays, one of which is identified by a golf ball sensor system as the starting point of a golf shot. [Figure 2B] 1 is a schematic diagram of a data processing system for identifying one of two or more golf bays as a starting point for a golf shot. [Figure 3A] 1 is a flowchart illustrating an example process for determining the starting physical location of a golf ball to be detected and tracked in flight. [Figure 3B]FIG. 1 illustrates an example of systematic errors caused by errors in the tracking device and / or calibration of the tracking system. [Figure 3C] FIG. 13 illustrates an example of how systematic errors affect the estimation error of whether a golf bay is the start of a golf shot. [Figure 3D] FIG. 1 illustrates an example of random errors caused by noise in sensor readings. [Figure 3E] FIG. 13 illustrates an example of how random error affects the estimation error of whether a golf bay is the starting point of a golf shot. [Figure 4A] FIG. 2 illustrates another example of a system for performing 3D flight tracking of a golf ball through three-dimensional space. [Figure 4B] FIG. 4B illustrates an example of a system that performs 3D flight tracking of a golf ball in the context of a golf bay layout that can be used with the system of FIG. 4A. [Figure 5A] 5 is a flowchart illustrating another example of a process for determining the starting physical location of a golf ball detected and tracked in flight. [Figure 5B] FIG. 1 illustrates an example of a system that performs 3D flight tracking of a golf ball in conjunction with a golfer's personal mobile device. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0024] FIG. 1 illustrates an example of a system 100 that performs 3D flight tracking of a golf ball through three-dimensional space. In this example, the system 100 is part of a golf facility that includes targets 120 at a driving range 110 and a building 115 that includes a golf bay 130. Note that in FIG. 1, the building 115 is shown as a rectangle, but a typical implementation has a curved portion of the building that faces the driving range 110 such that the golf bay 130 is in the shape of a half moon. The targets 120 may have radio frequency identification (RFID) tag interrogators that read RFID-tagged golf balls that are hit from the golf bay 130, which is one or more steps higher than the building 115. Additionally, one or more of the targets 120 may have separate zones of netting that direct the golf balls into respective RFID reader boxes associated with the different zones. However, in some implementations, such RFID tags and RFID tag interrogators are not required, as golf ball sensor systems 140, 150 can be used to track a golf ball in flight and identify where the golf ball lands without the use of such RFID systems.

[0025] In the example of FIG. 1, the three-dimensional space in which the golf ball is tracked is a golf driving range 110, which may be of various shapes and sizes, but is typically 300-500 feet wide and 600-900 feet long. The golf driving range 110 may be flat or have small hills or one or more slopes, and may also have hazards such as water and sand traps. Note that such hazards do not necessarily include actual water and sand, but may simply be colored to look like water and sand. The golf driving range 110 may be comprised of real grass or artificial turf. Additionally, the targets may be grouped into categories generally representing their distance from the building 115, and the targets may have various shapes, such as a circular shape for the main targets and a rectangular shape for the trench targets at the edge of the driving range 110, as well as separate colors for each target 120 or group of targets 120. Other shapes and sizes of targets 120, as well as numbers of targets 120 different from those shown, are also possible. However, in some implementations, no specific targets in three-dimensional space are required and / or no buildings are required. For example, golf ball sensor systems 140, 150 may be installed in an open field or a sports stadium or arena.

[0026] In general, golf ball sensor system 140, 150 is used to identify from which of a plurality of defined physical locations 130 a golf ball is being hit. Golf ball sensor system 140, 150 includes at least one golf ball sensor 140 and at least one computer 150 communicatively coupled to golf ball sensor 140. Golf ball sensor 140 may be one or more sensors of one or more different types. For example, golf ball sensor 140 may be an optical sensor (e.g., a stereo camera or two cameras operating together to provide stereo vision of a golf ball in flight), a radar sensor, or a combination thereof. In some implementations, two or more stereo cameras 140 are used to track a golf ball in flight in three-dimensional space. In some implementations, at least one golf ball sensor 140 is a sensor unit that integrates a radar device and a camera to track the golf ball in three dimensions, where the camera is used to provide angular information of the golf ball in a two-dimensional plane, the radar device is used (in combination with the camera) to provide depth information of the golf ball in a dimension perpendicular to the plane, for example, at each in-flight camera observation of a golf shot, and the radial distance to the golf ball is used to calculate a depth distance to the ball based on the camera angle of the in-flight camera observation (using a pinhole camera model, trigonometry, and a known separation distance between the camera and the radar device, which may be zero). Other sensor types and combinations of sensor data are also possible, such as one or more phased array radar devices to determine the angle and distance to the ball and convert this information to a 3D position, or two or more radar devices to combine the measurement data to construct a 3D flight trajectory.

[0027] The golf ball sensor 140 is positioned relative to the three-dimensional physical space to detect the golf ball in flight after it is launched into the three-dimensional physical space from the defined physical location 130. In some implementations, the golf ball sensor 140 is positioned such that the sensor is unable to observe the golf ball at the moment the golf ball is launched from the defined physical location 130. For example, the golf ball sensor 140 is mounted to a sunshade above and in front of the golf bay 130, which provides the golf ball sensor 140 with a wider field of view, and the systems and techniques detailed in this disclosure avoid the need to include a tracking unit within the golf bay. In some implementations, the golf ball sensor 140 is positioned such that the sensor is able to observe the golf ball at the moment the golf ball is launched from the defined physical location 130. However, it will be appreciated that even with such placement, each individual golf ball may not be detected until the launch has occurred, and thus sensor observation of the golf ball near the launch point may often be unavailable. Thus, regardless of whether the golf ball sensor 140 is able to observe the tee location, the systems and techniques detailed in this disclosure can be used to determine the ball trajectory and identify the location 130 from which each ball was launched.

[0028] Golf ball sensors 140 are communicatively coupled to one or more computers 150. This may be a wired connection that allows golf ball sensor 140 to provide data to computer 150, a wireless connection that allows golf ball sensor 140 to provide data to computer 150, or a combination thereof, and these connections may be simplex, duplex, or half-duplex. In some implementations, at least one computer 150 is connected or integrated with each of two or more sensors 140 to create separate sensor systems that independently / separately detect and track golf balls in three-dimensional space, thus providing separate trajectory predictions based on separate observations of the same golf ball moving through three-dimensional space. An "observation" as used herein is the identification of sensor data indicative of a golf ball based on predefined criteria, regardless of the type of sensor used.

[0029] Such individual golf ball sensor systems may also be communicatively coupled to a central computer system 150, e.g., one or more server computer systems, which consolidates the trajectory predictions received from the individual golf ball sensor systems and makes the final determination as to which of the defined physical locations 130 should be confirmed and reported as the starting point of the particular golf ball being tracked. It should be noted that the central computer 150 may be part of a computer system (e.g., of a golf facility) that manages the golf game and transmits information regarding the golf shot (e.g., a simulated golf shot animation in a virtual golf game and / or a ball trace overlay in an augmented reality golf shot viewer) to a display device associated with the physical locations 130. In any event, the computer 150 includes at least one hardware processor and at least one memory device coupled to the at least one hardware processor that is constructed and / or programmed to perform the operations detailed in this disclosure.

[0030] Additionally, the defined physical location 130 may be a golf bay, a tee location within the golf bay, or a tee location in general. In some implementations, the three-dimensional space is not a golf driving range as shown. Thus, the defined physical location 130 where the golf ball is hit may be a designated hitting location, for example, indicated by chalk, tape, or rope on the ground, and the three-dimensional space may be any place safe to hit a golf ball, for example, within a sports stadium or arena or open field reserved for golf events. For example, in some implementations, the three-dimensional space is an open grass field, and the defined physical location 130 is a spot along a tee line selected by an individual golfer. References to a "golf bay" as used herein should be understood to include a tee area or tee location in general, unless expressly described as an implementation limited to a golf bay having more than one tee area within the golf bay.

[0031] FIG. 2A is a schematic diagram of two golf bays 220A, 220B, one of which is identified by golf ball sensor system 200 as the starting point of a golf shot. Golf ball sensor system 200 is an example of golf ball sensor system 140, 150 from FIG. 1. Golf ball sensor system 200 detects golf ball 210 in flight after being struck from one of two or more golf bays. From this initial observation of the golf ball and one or more subsequent observations of the golf ball, system 200 determines a three-dimensional trajectory 212 (note that the diagram only represents two dimensions for clarity of illustration). Three-dimensional trajectory 212 is then extrapolated back in time to generate extrapolated trajectory 214, which intersects with both golf bay 220A and golf bay 220B. Thus, it is not easy to know from the initial observation which of the two golf bays 220A, 220B should be identified as the starting point location of the golf shot.

[0032] Measuring and estimating the trajectory of a golf ball is useful in many applications to improve the golf experience. One example is a driving range where such processing of golf ball observations by sensors is used to provide feedback and metrics to golfers, but such processing is also useful for entertainment purposes such as playing virtual golf courses and other games. In any case, when one golf ball sensor system 200 is used to track golf balls launched from two or more golf bays 220A, 220B, for example to save costs associated with having a dedicated sensor system for each golf bay, the system estimating the trajectory should be able to handle multiple golfers simultaneously and therefore distinguish which shots were hit by which golfers. In the example shown in FIG. 2A, the system 200 can wait for further observations of the golf ball 210 to improve the accuracy of the estimated trajectory, but this would result in a delay in identifying the starting golf bay. In contrast, the earlier the system 200 identifies the starting golf bay of a golf shot, the greater the chance of misidentifying which of the golf bays 220A, 220B is the starting golf bay, which is unacceptable from a user's perspective. This creates an undesirable trade-off between (1) unnecessarily delaying the identification of the starting golf bay for golf shots with trajectories that are easily tracked back to a single bay, even when only a few observations are made, and (2) misidentifying the starting golf bay for golf shots with trajectories that are more difficult to distinguish as starting from one of two adjacent golf bays. Using the systems and techniques described in this application, this undesirable trade-off can be eliminated, thus avoiding both 1 and 2.

[0033] 2B is a schematic diagram of a data processing system including a data processing device 250 that identifies one of two or more golf bays as a starting point for a golf shot. The data processing device 250 may be connected to one or more computers 290, display devices 290, or both through a network 280. Although only one computer is shown as the data processing device 250 in FIG. 2A, multiple computers may be used. Thus, the data processing device 250 may be used to implement one or more of the golf ball sensor systems 140, 150, 200, 410, 420, 490, 500 from FIG. 1, FIG. 2A, FIG. 4A, FIG. 4B, and FIG. 5.

[0034] The data processing device 250 may include various software modules that may be distributed between the application layer and the operating system. These may include executable and / or interpretable software programs or libraries that may include a program 270 that operates as a 3D object flight tracking system. The number of software modules used may vary from implementation to implementation, and the software modules may be distributed on one or more data processing devices connected by one or more computer networks or other suitable communication networks. Furthermore, in some cases, the described functionality is implemented (partially or fully) in firmware and / or hardware of the data processing device 250 to increase the speed of operation. Thus, the program and / or circuitry 270 may be used to implement a ball detector, tracker, and trajectory determination & ball start point identifier, as detailed in this disclosure.

[0035] The ball detector, tracker, and trajectory determination & ball start identifier program / circuit 270 uses a physical model of the flight of a golf ball to extrapolate portions of the trajectory that are outside the field of view of the sensor or are otherwise missed by the sensor. The data processing device 250 may include hardware or firmware devices, including one or more hardware processors 252, one or more further devices 254, a computer readable medium 256, a communication interface 258, and one or more user interface devices 260. Each processor 252 can process instructions for execution within the data processing device 250. In some implementations, the processor 252 is a single-threaded or multi-threaded processor. Each processor 252 can process instructions stored in a storage device, such as the computer readable medium 256 or one of the further devices 254. The data processing device 250 uses its communication interface 258 to communicate with one or more computer / display devices 290, for example via a network 280. Thus, in various implementations, the described processes may be performed in parallel or serially, on single-core or multi-core computing machines, and / or on a computer cluster / cloud, etc.

[0036] Examples of user interface devices 260 include a display device, a touch screen display device, a camera, a speaker, a microphone, a haptic feedback device, a keyboard, and a mouse. The data processing apparatus 250 can store instructions for performing the operations detailed in this disclosure, for example, in a computer readable medium 256 or one or more further devices 254, such as one or more of a floppy disk device, a hard disk device, an optical disk device, a tape device, and a solid state memory device. In general, the computer readable medium 256 and one or more further devices 254 for storing instructions are examples of at least one memory device encoding instructions configured to cause at least one hardware processor to perform the operations detailed in this disclosure.

[0037] The additional devices 254 may also include one or more sensors 140, 410, such as when the sensor and computer are integrated into a self-contained golf ball sensor system, e.g., systems 200, 490, 500. One or more sensors 140, 410 may also be located remotely from the data processing device 250, and data from such sensors 140, 410 may be obtained using one or more communication interfaces 258, such as a wired or wireless technology interface. Such communication interfaces 258 may also be used to communicate the extrapolated trajectory, the proposed starting golf bay, the confidence (one or more error measures) of the proposed starting golf bay, and / or other data to another computer system. For example, the two or more data processing devices 250 may be separate golf ball sensor systems that independently track a golf ball in three-dimensional physical space and report their results to another data processing device 250, which determines which results to use and which golf bay 220A, 220B to identify as the starting golf bay, and this information may be communicated to a computer / display device 290, which may be a display device located at the identified golf bay, or to a data processing device 250 (e.g., a smart phone or tablet computer carried by a person at the identified golf bay).

[0038] FIG. 3A is a flow chart illustrating an example process for identifying the starting physical location of a golf ball detected and tracked in flight. Note that this is merely an example. The described operations may be performed in a different order and still achieve the desired results. At 300, an observation of a golf ball is identified in the sensor data (e.g., by computer 150, 200, 250, 420, 490, 500). This involves processing data received from one or more sensors (e.g., sensors 140, 200, 410, 490, 500) to find data indicative of a golf ball based on predefined criteria for each type of sensor. For example, in the case of radar data, a ball speed criterion may be used that follows a known range of speeds of a golf ball immediately after being struck, or that corresponds to the expected measure of a previously detected golf shot that is currently being tracked. As another example, in the case of camera data, streaming image data may be processed in real time (e.g., using an object classifier) ​​to identify various objects in the video stream that are candidate golf balls.

[0039] At 302, the observation of the golf ball is associated with previously detected golf shots and new golf shots are detected (e.g., by computer 150, 200, 250, 420, 490, 500). Note that detection & association 302 and identification 300 can be performed together as sensor data of the golf ball in flight is received. This may include simultaneous and / or parallel processing using parallel processing or multitasking processor architectures. In the case of camera data, a golf shot can be detected at 302 when a series of candidate balls across a set of video frames meets or exceeds one or more established criteria for a golf shot. In some implementations, analysis of the image data involves automatic adjustment of one or more thresholds (e.g., per-pixel optimized thresholds) to maximize sensitivity to objects of interest (e.g., objects that look like golf balls), as well as real-time filtering to allow the golf shot to be detected before all image data for the golf shot is received.

[0040] In the case of radar data, a ball speed criterion can be used so that the radar time series only starts at a certain speed range that corresponds to the likely speed range of a golf ball (e.g., 10-250 miles per hour). Similarly, if range data is available directly from the radar sensor, objects detected outside a predefined range can be ignored. Further criteria can be used for a series of radar measurements as these measurements are received in real time. For example, a series of radar measurements of a golf shot should show a decrease in speed over time, which can be used to identify golf shots in the radar data. Thus, golf balls detected at unexpected distances or speeds can be simply ignored, as well as other objects such as birds and planes.

[0041] Furthermore, when more than one sensor type is used, data from the different sensor types can be used to enhance the detection and tracking of golf shots. For example, when a golf shot is identified in the radar data, a signal can be sent to trigger an adjustment of one or more criteria used in analyzing image data from the camera. This prioritizes the selection of an object identification set corresponding to the golf shot in the analysis, thus increasing the likelihood of identifying the golf shot. It is noted that the interaction between the processing of data from different sensor types (e.g., data from a radar device and a camera device) can go in both directions to improve the robustness of shot detection. By implementing more than one such cross-check of data from different sensor types, the system can be made more robust in driving ranges (or similar golf-themed entertainment venues) with multiple golfers.

[0042] It should be noted that when using radar in combination with optical tracking, e.g., using the depth distance calculations discussed above, correlating the radar ball speed with the correct optical tracking may involve designing or programming (e.g., by mode setting) the radar device to report the speed of multiple objects for each measurement. Thus, rather than picking out the fastest speed (or strongest reflection) and transmitting only that speed, the radar device can be set to report the speed of the fastest object or the speed of the object with the strongest radar reflection. In such an operating mode, some robustness to multiple balls in the air can be achieved by: (1) identifying the correct radar time series based on time correlation; (2) for each new set of radar measurements, trying all received speeds against the speed predicted by the model; and (3) if any of the reported speeds are within a threshold distance of the ball speed predicted by the existing radar time series model, the value is added to the time series, the model is updated, and the system then waits for the next set of measurements. Nonetheless, in some implementations, only one sensor type is used, e.g., two or more stereo camera systems.

[0043] The process continues to receive and analyze incoming sensor data to identify ball observations at 300 unless there are any unassociated observations remaining in the current sensor data at 304. If ball observations are identified at 300 and cannot be associated with a previously detected golf shot at 302, these ball observations are considered in an attempt to detect a new golf shot at 302, and the process continues to receive and analyze incoming sensor data unless there are any unassociated observations remaining in the current sensor data at 304 and a new golf shot has not yet been detected at 306. In addition, when a new golf shot is detected at 306, a separate process is spawned to determine the start of the new golf shot. This separate process operates even while the new sensor data is being received and analyzed to identify further golf ball observations at 300 and associate the new ball observations at 302 with a newly detected golf shot, the start of which may or may not have been determined. In other words, the detection of the golf shot, the determination of the start point of the golf shot, and the flight tracking of the golf ball can all be performed simultaneously, in real-time, for multiple golf balls while the golf balls are still in flight and additional golf balls are being hit.

[0044] When a new golf shot is detected, a three-dimensional trajectory of the golf ball in three-dimensional physical space is determined (e.g., by computer 150, 200, 250, 420, 490, 500) at 310 based on an initial observation of the golf ball identified at 300. This may include using a physical model of the flight of a golf ball applied to the three-dimensional coordinates in three-dimensional space determined from the initial observation of the golf ball. Thus, at least the effects of gravity (e.g., drag, lift, and gravity) may be taken into account, and other physical parameters such as wind speed and direction, estimated ball spin, etc.

[0045] In some implementations, physical modeling and extrapolation of the trajectory is performed prior to correlating the different shots. The physical model can be determined from all observations of the golf ball, not just the initial observation. The physical model can include modeling of the forces that affect the golf ball in flight, including gravity, drag, and lift, which are environmentally dependent, the physical properties of the golf ball, wind speed and direction, ball velocity, and spin of the golf ball.

[0046] At 312, the three-dimensional trajectory of the golf ball is extrapolated back in time (and possibly forward) to generate an extrapolated trajectory (e.g., by computer 150, 200, 250, 420, 490, 500). However, rather than simply finding the intersection of the extrapolated trajectory with the geometric shape representing the golf bay, which may result in two intersections as shown in FIG. 2A, at 314, one or more distance measures between the extrapolated trajectory and two or more defined physical locations are calculated (e.g., by computer 150, 200, 250, 420, 490, 500). For example, at 314, each intersection of the extrapolated trajectory with one or more geometric shapes (e.g., a square, rectangle, circular sector, cube, box, cuboid, 3D circular sector, etc.) representing one or more golf bays may be calculated, and the distance between the center point of each golf bay (or of a predefined teeing area within a golf bay, or of a primary hitting location within a golf bay or teeing area) may be calculated as a distance measure.

[0047] As another example, at 314, a minimum distance may be calculated between the extrapolated trajectory and the exterior of geometric shapes representing the golf bay (or predefined teeing areas within the golf bay, or primary hitting locations within the golf bay or teeing areas), or between the extrapolated trajectory and center points of these geometric shapes. Other distance measures are possible, including a combination of two or more measures, such as the average of the shortest distances between (1) the exterior of the trajectory and the geometric shapes, and (2) the trajectory and center points of the geometric shapes. The distance measure may also take into account the geometric relationship of the golf bay (or teeing area or hitting location) to the current golf shot, for example, when the last geometric shape intersected (from the modeled starting point of the golf shot) is considered to be preferred over the first geometric shape intersected.

[0048] A measure of certainty of the calculated distance measure can then be determined to address errors in the observation of the trajectory as well as errors in extrapolating the trajectory behind the location of the golf bay for use in determining whether and when to identify a golf bay as the starting point of the golf shot. This may be particularly important when the extrapolated trajectory of the golf shot intersects two bays at similar distances from the center points of both bays as shown in FIG. 2A, since it may be better not to display the shot at all than to display the shot to the wrong user, especially when there are more than one tracking system in the field and another tracking system may immediately provide better results. Thus, an estimate of the error of the extrapolated trajectory, for example at the point where it intersects with the golf bay, can be calculated to estimate the certainty level of the starting golf bay, and the system can choose not to display the golf shot to the user if there is too much uncertainty about its starting point.

[0049] It should be noted that the error measures generated for the distance measures calculated in 314 need not be used as inputs, although some implementations may. For example, a first distance measure may be calculated to determine which golf bays to consider as possible starting bays, and a second distance measure may be calculated for use in generating the error measure for the selected golf bay. Additionally, one or more error measures may be calculated based on a geometric relationship between (1) at least one of the initial observations and the extrapolated trajectory, and (2) one or more of the two or more defined physical locations.

[0050] Although the error in the extrapolated trajectory depends on various characteristics of the tracking sensors, to facilitate the construction of a viable system that can rapidly generate useful estimates, the error in the extrapolated trajectory can be reduced to two types of errors: (1) systematic errors that affect the observed ball position, and (2) random errors that affect the angle of the trajectory determined from the observed ball position. Furthermore, the system can estimate these two types of errors separately. At 316, a systematic error of at least one of the initial observations of the golf ball by one or more golf ball sensors can be estimated (e.g., by computer 150, 200, 250, 420, 490, 500), and at 318, a random error associated with at least one of the initial observations of the golf ball by one or more golf ball sensors can be estimated (e.g., by computer 150, 200, 250, 420, 490, 500). For example, the one or more golf ball sensors may include a stereo camera (one or more cameras), and estimating the systematic error may include estimating an intrinsic calibration error based on the focal lengths of the cameras and the parallax of the stereo cameras, and estimating a stereo calibration error of the stereo cameras as an estimated error of a calibrated rotation of the stereo cameras.

[0051] 3B shows an example of a systematic error caused by errors in the tracking equipment and / or the calibration of the tracking system. Systematic errors can be caused by errors when calibrating the sensors themselves or when the system is set up, e.g., when a system of sensors is calibrated together. For example, in the case of a stereo camera sensor system, systematic errors can be caused by the inherent calibration of each camera and by the stereo calibration of each stereo system.

[0052] A systematic error generally introduces some offset and affects two successive sensor readings in a similar manner. This means that the error of one observation is approximately equal to the error of the previous observation. Thus, as shown in FIG. 3B, the error between the actual position 316BO of the ball observed by the sensor and the observed position 316SO remains constant, including the extrapolated part of the trajectory. Thus, this position error remains the same between the unobserved actual position 316BE of the ball and the extrapolated ball position 316SE all the way to the golf bay 316GB. Furthermore, while the systematic error can be estimated for any observation 316SO of the golf ball, what is needed is an estimate of the error vector e1 of the first observation of the golf ball, which is then added to the error vector e bay This is a systematic position error at golf bay 316GB because systematic errors in the first (or subsequent) golf ball observations will produce errors of similar size and direction at the golf bay, i.e., this error is independent of extrapolation behind golf bay 316GB.

[0053] Thus, an estimate of the systematic error may be calculated using the first, second, third, fourth or subsequent observations of the golf ball to determine an error vector, which may be considered to be the same as the error vector of the position of the ball in the bay. This error vector may then be projected onto a direction vector pointing along a row of adjacent golf bays to determine how the systematic error affects the selection of a golf bay as the starting golf bay for a golf shot. Thus, the geometric relationship of the golf bay to the current golf shot is taken into account.

[0054] A detailed example of this is provided here in the context of a stereo camera tracking system. Note that in a stereo camera system, position errors can be affected by the following sources of errors: (1) errors in intrinsic calibration, and (2) errors in stereo calibration. Intrinsic calibration errors can be understood to have the following effects on a stereo camera system: (1) errors in focal length, which increase linearly from zero at the principal point of the image to larger errors toward the edges (errors proportional to the distance r to the principal point of the image); (2) errors in distortion coefficients, which exhibit a polynomial increase from zero at the principal point of the image to larger errors (r 2 +r 4 (error proportional to f(x,y)), and (3) distortion model error, which increases and / or decreases nonlinearly from zero at the principal point of the image to other magnitudes of error (error proportional to f(x,y)). In light of these factors that affect the error, to simplify the error model, the second and third, these two factors (polynomial increase and nonlinear increase / decrease) can be ignored and the error of the inherent calibration can be considered to be zero at the center of the image and to increase linearly toward the edge of the image. It is noted that the system can employ a distortion model that attempts to eliminate all these errors. However, because the distortion model and attempts to eliminate the distortion are not perfect, some residual error may remain in the system, some of which are more significant than others.

[0055] Furthermore, the error in stereo calibration can be understood to have the following effects on a stereo camera system: (1) an error in the calibrated rotation of the camera, which is approximately equal to the distance from the camera to the point multiplied by the angular error of the rotation, and (2) an error in the calibrated position of the camera, which translates directly into the position error of the point. Note that this (2) is likely to be very small and has negligible impact on the position error for a given stereo camera implementation. Therefore, the impact of this (2) can be safely ignored. It is the more significant part of the residual error that needs to be addressed for its impact on selecting a golf bay as the source of golf shots.

[0056] In the detailed example below, variables in bold are vectors, the "hat" (^) symbol denotes a directional (unit) vector of length 1, |x| denotes the absolute value of x, ||a|| denotes the vector norm of a, × denotes the cross product between two vectors, and · denotes the scalar (dot) product between two vectors. A systematic error vector e1 of one or more observations of a golf ball may be calculated according to the following formula:

number

number

number

number

[0057] The extent to which the error vector e1 influences the estimation error of the golf bay is determined by the direction of the error vector e1 compared to the (hit) direction as shown in Figure 3C. In Figure 3C, e is the error vector e bay It can be calculated according to the following formula:

number

number

[0058] 3D shows an example of random errors caused by noise in the sensor readings. Random errors can be caused by errors in tracking the golf ball, for example, by noise present in various tracking operations. For example, a stereo camera tracking system has small random errors in the two-dimensional (2D) tracking operation, which can cause pixel errors in the image coordinates of the observation of the golf ball, parallax errors that affect the estimated depth (distance) e_disp to the golf ball, and / or errors in the estimated direction e_dir of the golf ball. This causes an angle error between the first and last observation points, causing the physics model to perform a backward extrapolation in a slightly wrong direction.

[0059] Thus, random errors affect different parts of the observed trajectory differently, and the error of each observation of the golf ball is independent of the error of the previous observation. As shown in the example of FIG. 3D, the error between the actual position 316BO of the ball observed by the sensor and the observed position 318SO is not constant. The extrapolation algorithm used to determine the trajectory of the golf ball is based on physical forces acting on the golf ball, and therefore the algorithm attempts to estimate the change in the state of the golf ball between time steps. This means that it is more sensitive to relative errors between data points. Therefore, the position error between the unobserved actual position 316BE of the ball in this golf bay 316GB and the extrapolated ball position 318SE can be significantly different from the position error between any given actual ball position 316BO and its observation 318SO.

[0060] As with systematic errors, the estimation of random errors can begin at the first (or any subsequent) observation point. In general, random errors can be estimated at any point in the trajectory, but in many implementations, the estimation of random errors begins at the first point in the trajectory because the accuracy and usefulness of the data can decrease the further away from the first observation of the golf ball. In any case, to understand how this error affects the error in the extrapolated position at golf bay 316GB, this error is converted to an angular error, since the extrapolation algorithm is more sensitive to the angular error at the first point (or any subsequent point) than the offset (position error). Furthermore, the random error is "angular" in the sense that this error produces an error in the position of golf bay 316GB that increases with extrapolation distance.

[0061] In some implementations, this angular error is estimated in the following way: calculate the magnitude M of the error vector e1 of the first observation of the golf ball, determine the length L (either time or space) over which the golf ball is observed, construct a function f(L) of L that may be nonlinear to take into account that observations beyond a certain point are not useful for extrapolation, and then calculate the angle a of the triangle with sides M, f(L), and f(L). For example, f(L)=x * L / (y * (time_of_last_observation-time_of_first_observation), where x and y are experimentally determined variables.

[0062] This angle a is the angular error of the first (or subsequent) observation point. This angle is then multiplied by the distance between the first (or subsequent) observation point and golf bay 316GB to obtain the effect of this error on the extrapolated position at golf bay 316GB. The direction of this error can be thought of as perpendicular to the direction of travel of the golf ball at the first (or subsequent) observation position. Thus, this error vector e bay is also projected onto a vector orthogonal to the general hitting direction from that golf bay 316GB to determine how much this error affects the selection of the golf bay, thus taking into account the geometric relationship between the golf bay and the current golf shot.

[0063] Referring to FIG. 3D, the random error vector e1 of the first observation of the golf ball can be calculated according to the following formula:

number

number

number

number

number

[0064] As for systematic errors, this error is converted into a position error with the parallax formula, and since this error is also caused by the parallax error, the direction of the error is the same (see equation (7)). Furthermore, random pixel errors can also affect the position error in the direction orthogonal to the parallax. In this case, it is a directional error, whose magnitude is proportional to the distance from the baseline and can be calculated with the pinhole camera formula (see equation (8)).

[0065] As already mentioned, the part of this error that is of interest is the part perpendicular to the impact direction. This can be calculated according to the following formula:

number

number

number

number

number

[0066] It should be noted that the estimation of the random error does not have to start exactly at the first observation position of the golf ball, but can start at the second, third, fourth, or subsequent observation positions. In general, the estimation of the random error can be calculated using two or more of the first, second, third, fourth, and subsequent observations of the golf ball (or using all observations currently associated with the identified golf shot). In other words, it is also possible to take into account the number of observation points. In that case, the angle β is calculated not at p0 and p1, but at p0 and p2. n where n depends on the number of available observations. Furthermore, the error can also be added to p0 instead of p1 and the angle β at p1 can be calculated, which gives very similar results. Thus, the total random disparity error can be estimated if the error in the 2D tracking is considered to be the only source of this error.

[0067] Another way to estimate how much the angle β affects the random error in the bay is to construct a function f(β,r) that expresses how much the angle error β and the extrapolation distance r affect the error in the bay. For example, f(a)=sin(β). * (r+z * r * r), where z is the quadratic factor of the angular error. The components sin(β) * z * r *r captures some of the nonlinear effects that extrapolation may have on the error, and the value of z is determined experimentally. Other techniques are possible to estimate how sensitive the extrapolation is to angular error. Note, however, that the relationship is not linear, i.e., it is a more generalized function of the (angular) error and the extrapolation distance, rather than just angle times distance.

[0068] Other modifications are possible. The calculated error measure can be adjusted based on the direction from the golf bay to the observation point and the effective area of ​​the golf bay, which can vary depending on the geometric shape of the golf bay. For example, if the geometric shape representing the golf bay is rectangular, then when this shape is viewed in perspective, the effective width of that rectangle decreases. This can be taken into account by comparing the direction of the golf shot to the direction of the rectangular bay and scaling the error accordingly:

number

number

[0069] In general, however, separate treatment of systematic and random errors (same and multiplying errors at bay locations) results in improved system performance, regardless of the geometry of a particular golf bay and the specific error sources identified in a given implementation. When using different types of sensors, e.g. radar and stereo camera sensors, the formulas for calculating the actual errors are different, but how different types of errors affect the bay selection is generally the same. For example, when using an FMCW (frequency modulated continuous wave) radar, the expected errors are similar to those of a stereo camera pair. Systematic errors of angle and range relative to the ball are expected. In addition, random errors of angle and range are also expected. This is true for all data points in the trajectory measured by the radar. The same or very similar error propagation can therefore be used to determine the bay errors of a radar-based system.

[0070] Returning to FIG. 3A, at 320, the estimated systematic error and the estimated random error may be combined (e.g., by computer 150, 200, 250, 420, 490, 500) to generate one or more error measures for one or more distance measures. For example, the estimated systematic error and the estimated random error may be added together. Other combinations are possible. The addition of the two errors is one way to estimate the "worst case" scenario, i.e., a scenario in which both errors affect observations / measures in the same direction. If this is shown not to be the case, the errors may be combined in another way. Additionally, the combining at 320 may take into account a geometric relationship between (1) at least one of the original observations and the extrapolated trajectory, and (2) one or more of the two or more defined physical locations, as well as the geometry and / or layout of the golf bay and / or tee locations therein.

[0071] At 322, a check is made (e.g., by computer 150, 200, 250, 420, 490, 500) as to whether one or more error measures meet a predefined criterion. When at 322, one or more error measures do not meet the predefined criterion, the process may wait for further observations of the golf ball by one or more golf ball sensors. Thus, the process may return to updating 310 the three-dimensional trajectory of the golf ball in three-dimensional physical space based on new observations of the golf shot. For example, if the same (or another redundant) system provides a newer version of that golf shot with lower error within a short time frame, the first version may be safely discarded, so that the identified golf shot is not immediately displayed to the user if the total error is higher than a certain threshold. Note that while FIG. 3A shows that the systematic and random errors are also recalculated 316, 318, in some implementations, it is not necessary to recalculate one or both of the systematic and random errors for the updated trajectory, depending on the details of how these error measures are calculated in a given implementation.

[0072] For example, as mentioned above, the systematic error may be the same as that previously calculated, so no updated calculation is required when the updated trajectory does not change the systematic error. In contrast, the random error may change substantially as new ball observations are received from the sensors, so this portion of the error may be recalculated 318 in the second and subsequent error estimates of the updated trajectory. In some implementations, the entire length of the observed trajectory may be used as an input to the error equation, and thus information from further observations may also be used. Each recalculation 318 may therefore use information about the entire trajectory to calculate the complete error combined at 320 of the starting position of the ball in the golf bay.

[0073] Additionally, the predefined criteria checked at 322 may be a single criteria, e.g., a single error threshold, or more than one criteria. For example, two error measures for each of two golf bays may be determined, and if both of these error measures are below an error threshold, the two error measures may be compared to each other to identify the golf bay corresponding to the lower error measure as the starting point of the golf shot at 322. As another example, in a multi-detector system, after a certain period of time has elapsed where no other detection system picks up the golf shot, the first detector of a golf shot may test its tracked trajectory against a more generous error threshold to give it a better chance of identifying the starting golf bay of the golf shot.

[0074] For example, using the combined error calculated in equation (12), a first version of a golf shot detected by a stereo camera golf ball tracking system may be compared to a threshold of 0.15, while a second and subsequent versions of the golf shot detected by the same stereo camera golf ball tracking system may be compared to a threshold of 0.25. As another example, a stricter threshold (e.g., 0.15) may be applied only to the first version of the golf shot detected by any of the two or more golf ball tracking systems, while a more lenient threshold (e.g., 0.25) may be applied to all subsequent versions of the golf shot (detected by any of the two or more golf ball tracking systems). Using such a two-level criterion at 322 may allow a first version of a golf shot (e.g., from a non-primary system for that golf bay, rather than from a primary system for that golf bay) to be accepted only if the error of the golf bay selection is very low, thus potentially further reducing the latency of the golf bay selection without the risk of incorrectly selecting the golf bay in the more general case.

[0075] FIG. 4A shows an example of a system 400 that performs 3D flight tracking of a golf ball through a three-dimensional space. Two or more sensors 410 are communicatively coupled (wired, wireless, or both) to a computer system 420. The number of sensors 410 used depends on the size of the three-dimensional space to be covered, but typically a set of sensors 410 is installed to cover the entire three-dimensional space (e.g., the entire driving range). Furthermore, the number of sensors 410 can be increased to provide redundancy of spatial coverage, e.g., at least two sensors 410 covering each golf bay. In the example of FIG. 4A, only two sensors 410A, 410B are shown for clarity of this description, with each sensor 410 covering all golf bays 430 arranged in three tiers.

[0076] As shown, golf bay 430 is a 3D space within a building, e.g., building 115 in FIG. 1. Because it is a 3D structure, the geometry representing golf bay 430 in the golf ball tracking system may also be three-dimensional (having width and height) so as to be able to identify starting golf bays on different floors of the building. Furthermore, each sensor 410 (or a combination of sensors 410A, 410B) tracks all golf balls within its field of view, and a physical model of the golf ball's flight (running on computer system 420) is used to extrapolate portions of the trajectory that are outside the field of view or are otherwise missed by the sensor. It should be noted that a single sensor 410A may have multiple sensor components, such as in the case of a stereo camera that may have two optical sensors but output one signal. Additionally, even when multiple sensors 410A, 410B share computer hardware 420 (as shown) rather than having dedicated processing hardware, the sensor and computer combinations 410A, 420 and 410B, 420 may be separate sensor systems that independently identify golf shots, extrapolate each identified golf shot both forward and backward in time, and attempt to determine a starting golf bay based on the backward extrapolation of the golf shot. A cooperative process, which may be executed by computer 420 or even a separate computer, can take the data from these separate sensor systems and make the final determination as to which golf bay to identify as the starting point of a particular golf shot.

[0077] Using the extrapolated trajectory, the system calculates the physical location where each golf ball was hit so that a 3D track of the golf ball can be displayed to the correct person in the correct golf bay. For example, a first individual golf ball sensor system 410A, 420 may identify an initial observation of a golf shot 412 and detect the golf shot 412, but there may not be enough confidence in the originally identified starting bay (a first error threshold is not met) to cause the golf shot 412 to be displayed in any of the golf bays 430. Further observations of the golf shot 412 may then be obtained by the first individual golf ball sensor system 410A, 420 before the second individual golf ball sensor system 410B, 420 detects the golf shot 412. Thus, updating the 3D trajectory based on further observations, extrapolating this updated trajectory back in time, calculating an updated distance measure, updated error estimation (e.g., updating the probabilistic error using the entire currently observed trajectory), and combining the estimated systematic error and estimated probabilistic error to generate an updated error measure for the updated distance measure may all occur before the second separate golf ball sensor system 410B, 420 detects the golf shot 412.

[0078] After this update, the first individual golf ball sensor system 410A, 420 can identify the golf bay 432 as the start of the golf shot 412 when the updated error measure meets a predefined criterion, e.g., a second (easier) error threshold (than that used for the first check). In this case, using such an easier error threshold is advantageous since it is possible that the second individual golf ball sensor system 410B, 420 may not actually detect the golf shot 412 at all. Furthermore, even if later versions of the golf shot 412 obtained by the first system 410A, 420 do not significantly improve the error measure, these later versions are considered again with a more lenient threshold to ensure that the start golf bay of every golf shot is identified. In other words, if no further observations are available within a certain predefined time, the first observation (and further observations) can be processed and compared to another (less strict) predefined criterion. In some implementations, more than two thresholds are used over a given time.

[0079] In some implementations, multiple systems track golf balls simultaneously and deliver new versions at specific intervals. A stricter threshold is used for the first version of a detected golf shot, meaning that a second tracking system has time to deliver its first version before the first tracking system delivers its second version of the golf shot. Only if the first version from a system passes the stricter threshold is that version of the golf shot used to determine the starting golf bay. This helps keep latency down and also ensures that bay selection is not based on an incorrect shot version when a better version is readily available.

[0080] For example, a first system 410A, 420 may identify an initial observation of a golf shot 414 and detect the golf shot 414, but there may not be enough confidence in the originally identified origin bay (a first error threshold is not met) to cause the golf shot 414 to appear in any of the golf bays 430. Then, while the first system 410A, 420 continues to track the golf shot 414, further observations of the golf shot 414 may be obtained by the second system 410B, 420, and the same golf shot 414 may be detected by the second system 410B, 420. The second system 410B, 420 can determine an individual three-dimensional trajectory of the golf ball in three-dimensional physical space based on further observations, extrapolate the individual three-dimensional trajectory of the individual golf ball back in time, calculate individual distance measures between the individual extrapolated trajectory and golf bay 434 and golf bay 436, estimate individual systematic errors and individual random errors, combine the individual estimated systematic errors and the individual estimated random errors to generate individual error measures for the individual distance measures, and identify one of golf bay 434 and golf bay 436 as the start of the golf shot 414 when a first error threshold is met.

[0081] Thus, while the first system 410A, 420 may initially detect the golf shot 414 and then use a less stringent error threshold to determine either golf bay 434 or golf bay 436 as the starting point of the golf shot 414, the second system 410B, 420 may detect the golf shot 414 and accurately identify golf bay 434 as the starting golf bay due to its position relative to the ball's trajectory. It should also be noted that while this is happening, a simultaneous process can take place in which the second system 410B, 420 first detects the golf shot 416, but does not have enough confidence to identify one of the golf bays 434 and 436 as the starting point, and then the first system 410A, 420 also detects that golf shot 416, and there is less error affecting the selection of the golf bay for that golf shot 416 (due to the geometric relationship between the trajectory of the golf shot 416, the position of the sensor 410A, and the positions of the golf bays 434, 436), and therefore the first system 410A, 420 can quickly identify the golf bay 436 as the starting point of the golf shot 416.

[0082] Returning to Figure 3A, when one or more error measures meet a predefined criterion at 322, one of the two or more defined physical locations is identified (e.g., by computer 150, 200, 250, 420, 490, 500) as the start point of the golf ball at 324. The identified start point is then used (e.g., by computer 150, 200, 250, 420, 490, 500) as an input for further processing at 326, such as by using the identified start point to facilitate further tracking of the golf ball in flight and / or presenting golf ball tracking data on a display device associated with the identified start point location (e.g., by computer 150, 200, 250, 420, 490, 500). Various types of display devices can be used and can be located at different physical locations within, for example, various golf bays of a building.

[0083] Furthermore, each golf bay in a building, such as building 115 in FIG. 1, may be the same or there may be different levels of accommodation for different types of golf bays, as well as different shapes, sizes, and layouts. Golf bays on the first level may have direct access to a driving range, while golf bays on higher levels usually have safety nets extending horizontally from the building to prevent injury if someone accidentally falls off the front of the bay. Additionally, each golf bay may include one or more tee-off locations.

[0084] Figure 4B illustrates an example of a system performing 3D flight tracking of a golf ball in conjunction with an example layout of two golf bays 440A, 440B that can be used in the system of Figure 4A. The golf bays 440A, 440B may include furniture 445, such as sofas and tables, to facilitate dining and conversation during the game. As will be appreciated, many layouts of the furniture 445 are possible, and the furniture 445 and layouts of the golf bays 440A, 440B can be designed to provide versatility in allocating the golf bays 440A, 440B to one or more groups of people to play a game together or separately.

[0085] Each golf bay 440A, 440B includes two teeing locations, each including a teeing area 450 and a golf ball dispenser 455. Each golf ball dispenser 455 can be directly connected to a pneumatic tubing system, so that golf balls can be automatically removed from the target and delivered back to the player without human intervention. Alternatively, golf balls can be collected from a central location in a building, such as building 115 of FIG. 1, and manually dropped into a receptacle in the golf ball dispenser 455.

[0086] The two golf bays 440A, 440B may share an electronics hub, which may include various power lines and cables supporting separate display devices for each golf bay, such as display device 470, which may include a computer processor that controls what is displayed on each display device or may be a dumb terminal communicatively coupled (wired, wireless, or both) to a computer processor. In some implementations, a shared electronics hub is not included and the display devices are individually associated with each golf bay 440A, 440B, each teeing area 450 or dispenser 455 in golf bays 440A, 440B, and / or each person's portable electronic device 475, such as a smartphone or tablet computer, in golf bay 440A, 440B. Each display device may include a touch screen device that connects to a central computer system in the building, such as building 115 in FIG. 1, and provides players with direct control of game play, including selecting the type of game they will play and the current player.

[0087] In any event, one or more players may step into the teeing area 450, obtain a golf ball from the dispenser 455, and then hit the ball. The golf ball sensor system 490 is an example of the golf ball sensor system 140, 150 from FIG. 1 and includes both a computer (e.g., the data processing device 250) and a sensor (e.g., the stereo camera 254 integrated with the data processing device 250). The system 490 detects a golf ball 460 in flight after being hit from one of the four teeing areas 450. From this initial observation of the golf ball 460 and one or more subsequent observations of the golf ball 460, the system 490 determines a three-dimensional trajectory 464 (note that the diagram represents only two dimensions for clarity of illustration). The three-dimensional trajectory 464 is then extrapolated back in time to generate an extrapolated trajectory 462, which intersects with both the teeing area 450A in the golf bay 440A and the teeing area 450B in the golf bay 440B. Thus, from an initial observation, it is not readily apparent which golf bay 440A, 440B and which tee area 450A, 450B should be identified as the starting physical location of the golf shot.

[0088] Therefore, the system 490 needs to determine which of the teeing areas 450A, 450B to consider as a potential starting teeing area. In some implementations, the system 490 generates one or more error measures for each teeing area 450A, 450B and compares them. In some implementations, the error measures of adjacent teeing areas 450A, 450B (or golf bays) may be very similar in value, so such a comparison may not be useful, even though the error measures of either of these adjacent teeing areas 450A, 450B (or golf bays) may be very useful in determining when to confirm the start of a golf shot. Therefore, in some implementations, the system 490 selects only one of the teeing areas 450A, 450B based on one or more calculated distance measures and generates one or more error measures for only the selected teeing area in relation to the current extrapolated trajectory 462. For example, the system 490 may determine which teeing areas 450A, 450B to consider as potential starting points for a golf shot based on the distance between the intersection of the extrapolated trajectory 462 with a geometric shape representing the teeing areas 450A, 450B and a predefined point within the teeing areas 450A, 450B. Detailed examples are provided below, but as noted above, various distance measures may be used in various combinations.

[0089] In some implementations, the system 490 compares the distances DA, DB between (1) the intersections of the extrapolated trajectory 462 with the teeing areas 450A, 450B and (2) the midpoints or centers of the teeing areas 450A, 450B. The system 490 may also use the last golf bay and / or teeing area that the golf ball intersects with the extrapolated trajectory 462 as it travels forward as a distance measure, since it is believed that golfers do not hit golf balls through each other's golf bays or teeing areas. Thus, in the example intersections shown in FIG. 4B, the teeing area 450B may be designated as the starting teeing area.

[0090] Additionally, the system 490 can use other predefined (or on-the-fly defined) locations within the golf bay or teeing area to measure distances. For example, the system 490 can compare the distance between (1) the intersection of the extrapolated trajectory 462 with the teeing areas 450A, 450B and (2) the respective hitting locations HA, HB within the teeing areas 450A, 450B. These hitting locations HA, HB can be predefined in the system based on information about the typical stance a player takes when playing golf, or by details of the teeing area, such as the tee location in a teeing system. These hitting locations HA, HB can also be determined based on inputs to the system. For example, if the current golfer assigned to the teeing area is known to be left-handed, the hitting location can be adjusted accordingly, or if a camera image from the teeing area shows where the ball is located prior to a golf shot, the hitting location for that teeing area can be updated on-the-fly based on the camera image.

[0091] In some implementations, the system 490 checks whether the extrapolated trajectory 462 is within a predefined distance of the hitting positions HA, HB of the teeing areas 450A, 450B. If it is within the predefined distance, the golf shot is deemed to have hit that tee. If the extrapolated trajectory hits only one tee, this tee can be selected by the system 490 for determining the error measure and for potential identification as the starting tee. If the extrapolated trajectory hits more than one tee based on the predefined distance, the system 490 can select the last tee area intersected, e.g., tee 450B in the example of FIG. 4B. If the extrapolated trajectory does not hit a tee based on the predefined distance, the system 490 can similarly select the last tee area intersected. It should be noted that this process can be similarly applied to golf bays, such as when there is only one tee area in each golf bay.

[0092] Additionally, the selection of the teeing area and / or golf bay is used to identify a display device to show a rendering or animation of the golf shot in the virtual golf game, which may include information about the golf shot, such as golf shot statistics, and / or a representation of the golf course or other virtual game features. For example, if teeing area 450A is selected as the source of the golf shot and the error measure provides a sufficient degree of certainty, the golf shot information is shown on a display device 470 associated with golf bay 440A or teeing area 450A. As another example, if teeing area 450B is selected as the source of the golf shot and the error measure provides a sufficient degree of certainty, the golf shot information may be shown on a display device 475 associated with golf bay 440B or teeing area 450B or a person associated with golf bay 440B or teeing area 450B.

[0093] Additionally, as described above, multiple versions of each golf shot may be generated by the same golf ball sensor system 490 and / or by other golf ball sensor systems observing golf balls struck from the same golf bay 440A, 440B. Figure 5A is a flow chart illustrating another example of a process for identifying a starting physical location of a golf ball detected and tracked in flight. At 560, a strike location may be determined (e.g., by computer 150, 200, 250, 420, 490, 500) within a geometric shape that represents a defined physical location (e.g., of a golf bay, teeing area, or other physical location). These strike locations may be predefined or dynamically determined for the system, and the geometric shape may be a three-dimensional shape.

[0094] As noted above, inputs to the system used to dynamically determine the hitting location may be information about the current golfer or camera images of the teeing area. Additionally, in some implementations, inputs to the system used to dynamically determine the hitting location may be inputs from an electronic location system, including a mobile device associated with the golfer and a communication system such as a Global Navigation Satellite System (GNSS), e.g., a Global Positioning System (GPS), a mobile telephone network, or other wireless network, e.g., a WiFi network. Figure 5B illustrates an example of a system that performs 3D flight tracking of a golf ball in association with a golfer's personal mobile device.

[0095] 5B is similar to the example of FIG 4B in that it may be used in the system of FIG 4A, and golf ball sensor system 500 is similar to golf ball sensor system 490 described above. Areas 510A, 510B may be golf bays or teeing areas, or simply possible areas of a golfer, such as designated areas along a tee line. In either case, areas 510A, 510B may be collectively referred to as golf bays 510A, 510B, and may have geometric shapes representing them so that intersections of the extrapolated trajectory with these geometric shapes may be easily identified.

[0096] System 500 detects golf ball 540 in flight after being struck from one of golf bays 510A, 510B. From this initial observation of golf ball 540 and one or more subsequent observations of golf ball 540, system 500 determines a three-dimensional trajectory 546 (note that the diagram only represents two dimensions for clarity of illustration). Three-dimensional trajectory 546 is then extrapolated back in time to generate extrapolated trajectory 542, which intersects both golf bay 510A and golf bay 510B. System 500 must therefore determine which of regions 510A, 510B to consider as a potential starting region.

[0097] To aid in this determination, signals from mobile devices 520A, 520B associated with golfers in the respective golf bays / areas 510A, 510B can be obtained to determine hitting locations 530A, 530B associated with the golfers. For example, the mobile devices 520A, 520B can be GPS devices, or smartphones or tablet computers communicating over a wireless network that allows for triangulation or other device location services, as shown in FIG. 5B. In some implementations, hitting locations 530A, 530B are established for each golfer based on sensor data acquired by the system 500 on one or more test shots by each golfer and location data from the respective mobile devices 520A, 520B associated with the golfer. These hitting locations 530A, 530B can then be used as described above or in more detail below in connection with FIG. 5A. It should be noted that the mobile devices 520A, 520B can also be display devices to which golf shot information is transmitted once the start of the golf shot is identified.

[0098] Referring again to Fig. 5A, at 562, one or more golf shot versions are generated or received (e.g., by computers 150, 200, 250, 420, 490, 500). For example, in some implementations, each sensor 410A, 410B of Fig. 4A has dedicated computer hardware that processes the sensor data using a physical model of the flight of a golf ball, extrapolates portions of the trajectory that are outside its field of view (or are otherwise missed by the sensor), and performs an evaluation of an error measure, thus forming an individual sensor system 410A, 410B that can report their results to a central computer system 420 that can take the results from these individual sensor systems 410A, 410B and make the final decision as to which golf bay 430 to identify as the starting point of a particular golf shot. Thus, the central computer 420 can receive different versions of a golf shot from each golf ball sensor system 410A, 410B, as well as more than one version of a golf shot from the same golf ball sensor system 410A, 410B.

[0099] In some implementations, as soon as a golf ball sensor system in a larger system starts tracking a golf ball, it generates several versions of that golf shot at regular intervals. A first version includes a first portion of the trajectory, and a second version includes all the observations from the first version plus additional newer observations. In some implementations, subsequent versions inherit the golf bays assigned to the first version. In some implementations, the assigned golf bays are determined again for each new version of the golf shot. In any case, the version generation process can reduce the wait time before the system starts showing the trajectory to the golfer.

[0100] At 564, intersections of the extrapolated trajectory with geometric shapes representing two or more defined physical locations (e.g., intersections of the extrapolated trajectory 542 with the regions 510A, 510B) are identified (e.g., by the computer 150, 200, 250, 410, 490, 500), and at 564, distances are determined (e.g., by the computer 150, 200, 250, 410, 490, 500) between the extrapolated trajectory and the hitting locations within the respective geometric shapes (e.g., hitting locations 530A, 530B). In some implementations, such as that shown in FIG. 5B, intersections are generally found, except possibly for the extrapolated trajectory around both ends of a full set of golf bays. Thus, the distance calculation may be between the intersection and the defined hitting location. In situations where there is no intersection of the extrapolated trajectory with a given golf bay, the distance calculation may be the length of a line perpendicular to the extrapolated trajectory that intersects with the hitting location.

[0101] At 566, the calculated distance to the impact location can be compared to a threshold, which can be empirically set in a given implementation, e.g., 40 centimeters. If only one of these calculated distances to the impact location passes the threshold (i.e., is less than the threshold), then at 568, a golf bay containing the impact location is selected (e.g., by the computer 150, 200, 250, 410, 490, 500) to estimate the systematic and random errors. If both of these calculated distances to the impact location pass the threshold, or if none of these calculated distances to the impact location pass the threshold, then at 570, the golf bay last intersected along the extrapolated trajectory (towards the initial observation direction of the golf ball) is selected (e.g., by the computer 150, 200, 250, 410, 490, 500) to estimate the systematic and random errors.

[0102] Then, at 572, one or more error measures are calculated / updated (e.g., by computer 150, 200, 250, 410, 490, 500). This may include operations 316, 318, 320 described above in relation to Figure 3A. At 574, a check is made (e.g., by computer 150, 200, 250, 420, 490, 500) as to whether one or more error measures meet a predefined criterion. This may include operations described above for the check at 322 in relation to Figure 3A. Thus, at 574, when one or more error measures do not meet the predefined criteria, the process may wait for further observations of the golf ball by one or more golf ball sensors, and thus may wait for the next set of one or more versions of the golf shot to be generated at 562 (e.g., by computer 150, 200, 250, 410, 490, 500) and received at 562 (e.g., by computer 150, 250, 420).

[0103] For example, the central computer 420 can receive different versions of a golf shot from each golf ball sensor system 410A, 410B having different perspectives of the same golf shot. Each version of the golf shot received can include both an extrapolated trajectory and a confidence (one or more error measures) of the starting golf bay of the golf shot. Thus, each golf ball sensor system 410A, 410B can perform its own independent calculation of all parameters of each golf ball shot trace it finds and send the results of its independent calculations to the central computer 420. The central computer 420 can compare the trajectory data to determine whether the two golf ball sensor systems 410A, 410B are observing the same in-flight golf ball, and then the central computer 420 can use the best set of trajectory data from the two sensor systems 410A, 410B according to the received confidence provided by the two sensor systems 410A, 410B.

[0104] This process may then be repeated, and as discussed above, the criteria may change with each check at 574. Additionally, when one or more error measures meet the predefined criteria at 574, the selected golf bay is identified (e.g., by computer 150, 200, 250, 420, 490, 500) as the start point of the golf shot at 576. The identified start point is then used (e.g., by computer 150, 200, 250, 420, 490, 500) as an input for further processing, such as by using the identified start point to facilitate further tracking of the golf ball in flight and / or presenting golf shot information on a display device associated with the identified start point location, as described in detail above.

[0105] The subject matter and functional operations described herein may be implemented in digital electronic circuitry, or computer software, firmware, or hardware, including the structures disclosed herein and their structural equivalents, or any combination or combinations thereof. The subject matter described herein may be implemented using one or more modules of computer program instructions encoded on a computer-readable medium for execution by or to control the operation of a data processing apparatus. The computer-readable medium may be a hard drive of a computer system, or an optical disk sold through retail outlets, or an industrial product such as an embedded system. The computer-readable medium may be obtained 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 may be a machine-readable storage device, a machine-readable storage substrate, a memory device, or any combination or combinations thereof.

[0106] The term "data processing apparatus" encompasses all apparatus, devices, and machines for processing data, including, by way of example, a programmable processor, computer, or multiple processors or computers. In addition to hardware, an apparatus may include code that creates an environment for the execution of the computer program, such as code constituting a processor's firmware, a protocol stack, a database management system, an operating system, a runtime environment, or one or more combinations thereof. Additionally, an apparatus may employ various computing model infrastructures, such as web services, distributed computing, and grid computing infrastructures.

[0107] A computer program (also known as a program, software, software application, script, or code) can be written in any suitable form of programming language, including compiled or interpreted, declarative, or procedural languages, and can be deployed in any suitable form, such as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored as part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program, or in several associated files (e.g., a file that stores one or more modules, subprograms, or portions of code). A computer program can be deployed to be executed on one computer, or on several computers that are located at one site or distributed across several sites and interconnected by a communications network.

[0108] The processes and logic flows described herein may be implemented by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows may also be implemented by, and apparatus that may be implemented as, special purpose logic circuitry, such as an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).

[0109] Processors suitable for executing computer programs include, by way of example, both general-purpose and special-purpose microprocessors. Typically, a processor receives instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer also includes or is operatively coupled to one or more mass storage devices for storing data, such as magnetic, magneto-optical, or optical disks, for receiving data or transmitting data or both. However, a computer need not have such devices. Furthermore, a computer can be incorporated in another device, such as 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), to name just a few. Suitable devices for storing computer program instructions and data include, by way of example, all forms of non-volatile memory, media, and memory devices, including 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 and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in, special purpose logic circuitry.

[0110] To provide for interaction with a user, embodiments of the subject matter described herein may be implemented in a computer having a display device, e.g., an LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode), or other monitor, for displaying information to the user, and a keyboard and pointing device, e.g., a mouse or trackball, by which the user may provide input to the computer. Other types of devices may be used to provide interaction with the user as well, e.g., feedback provided to the user may be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback, and input from the user may be received in any form, including acoustic input, speech input, or tactile input.

[0111] A computing system may include clients and servers. Clients and servers are generally remote from one another and typically interact through a communications network. The relationship of client and server arises by virtue of computer programs running on respective computers having a client-server relationship to one another. An embodiment of the subject matter described herein may be implemented in a computing system that includes a back-end component, e.g., a data server, or includes a middleware component, e.g., an application server, or includes a front-end component, e.g., a client computer having a graphical user interface or web browser through which a user can interact with an implementation of the subject matter described herein, or includes any combination of one or more such back-end, middleware, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication, e.g., a communications network. Examples of communications 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).

[0112] Although this specification contains many implementation details, these should not be construed as limitations on the scope of the invention or what may be claimed, but rather as descriptions of features specific to particular embodiments of the invention. Certain features described herein in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Furthermore, even if features are described above as functioning in a particular combination and initially claimed as such, one or more features from the claimed combination may, in some cases, be separated from the combination, and the claimed combination may be directed to a subcombination or subcombination variation. Thus, unless expressly stated otherwise or unless the knowledge of one skilled in the art clearly indicates otherwise, any feature of the aforementioned embodiments may be combined with any other feature of the aforementioned embodiments.

[0113] Similarly, although operations are shown in the figures in a particular order, this should not be understood as implying that such operations must be performed in the particular order or sequential order shown, or that all of the operations shown must be performed, to achieve desirable results. In some situations, multitasking and / or parallel processing may be advantageous. Furthermore, the separation of various system components in the above embodiments should not be understood as requiring such separation in all embodiments, and it should be understood that the program components and systems described may generally be integrated into a single software product or packaged into multiple software products.

[0114] Thus, specific embodiments of the present invention have been described. Other embodiments are within the scope of the following claims and / or the teachings of this application. For example, while the above description focuses on tracking golf ball shots, the described systems and techniques are applicable to other types of object / projectile flight tracking, such as baseball or skeet shooting, as well as non-sports applications. Additionally, the actions recited in the claims may be performed in a different order and still achieve desirable results.

Claims

1. Two or more defined physical locations for projecting a golf ball into a three-dimensional physical space; one or more golf ball sensors positioned relative to the three-dimensional physical space to detect the golf ball in flight after the golf ball is launched into the three-dimensional physical space from the two or more defined physical locations; one or more computers communicatively coupled to the one or more golf ball sensors; A system comprising: the one or more computers comprising at least one hardware processor and at least one memory device coupled to the at least one hardware processor; The at least one memory device determining a three-dimensional trajectory of the golf ball within the three-dimensional physical space based on an initial observation of the golf ball by the one or more golf ball sensors; extrapolating the three-dimensional trajectory of the golf ball back in time to generate an extrapolated trajectory; calculating one or more distance measures between the extrapolated trajectory and the two or more defined physical locations; estimating a systematic error affecting an observed ball position of at least one of the initial observations of the golf ball by the one or more golf ball sensors; estimating a random error that is associated with at least one of the initial observations of the golf ball by the one or more golf ball sensors and that affects an angle of trajectory determined from the observed ball position; combining the estimated systematic error and the estimated random error to generate one or more error measures for the one or more distance measures; identifying one of the two or more defined physical locations as a starting point of the golf ball when the one or more error measures meet a predefined criterion; waiting for further observations of the golf ball by the one or more golf ball sensors when the one or more error measures do not meet the predefined criteria; encoding instructions configured to cause the at least one hardware processor to perform operations including: system.

2. the two or more defined physical locations include two or more tee locations within two or more tee areas, said calculating including calculating a first distance measure for a first one of said two or more tee locations within a first one of said two or more tee areas and calculating a second distance measure for a second one of said two or more tee locations within a second one of said two or more tee areas, and said identifying including: identifying the first tee area including the first tee location as the starting point of the golf ball when the first distance measure meets a predefined threshold and the second distance measure does not meet the predefined threshold; identifying the second tee area including the second tee location as the starting point of the golf ball when the first distance measure meets the predefined threshold, the second distance measure meets the predefined threshold, and the second tee location is after the first tee location along the extrapolated trajectory; The system of claim 1 , comprising:

3. The system of claim 1 , wherein the one or more golf ball sensors include at least two separate golf ball sensor systems that independently track the golf ball in the three-dimensional physical space.

4. the initial observation is from a first golf ball sensor system of the at least two separate golf ball sensor systems, and the operation comprises: obtaining the further observation of the golf ball from the first golf ball sensor system before a second golf ball sensor system of the at least two separate golf ball sensor systems detects the golf ball; updating the three-dimensional trajectory of the golf ball based on the further observations to determine an updated three-dimensional trajectory; extrapolating back in time the updated three-dimensional trajectory of the golf ball to generate an updated extrapolated trajectory; updating the one or more error measures according to the updated three-dimensional trajectory; identifying one of the two or more defined physical locations as the starting point of the golf ball when the one or more updated error measures meet the predefined criteria; The system of claim 3 , comprising:

5. the initial observation is from a first golf ball sensor system of the at least two separate golf ball sensor systems, and the operation comprises: obtaining the additional observations of the golf ball from a second golf ball sensor system of the at least two separate golf ball sensor systems; determining a respective three-dimensional trajectory of the golf ball within the three-dimensional physical space based on the further observations of the golf ball by the second golf ball sensor system; extrapolating back in time the individual three-dimensional trajectories of the golf ball to generate individual extrapolated trajectories; calculating one or more individual distance measures between the individual extrapolated trajectories and the two or more defined physical locations; estimating a respective systematic error of at least one of the additional observations of the golf ball by the second golf ball sensor system; estimating an individual random error associated with the at least one of the additional observations of the golf ball by the second golf ball sensor system; and combining the estimated individual systematic errors and the estimated individual random errors to generate one or more individual error measures for the one or more individual distance measures; identifying one of the two or more defined physical locations as the starting point of the golf ball when the one or more individual error measures meet the predefined criteria; The system of claim 3 , comprising:

6. The system of claim 1 , wherein the one or more golf ball sensors include a camera, and estimating the systematic error includes estimating an inherent calibration error based on a focal length of the camera.

7. 7. The system of claim 6, wherein the camera is a stereo camera, and estimating the intrinsic calibration error includes calculating a disparity of the stereo camera based on a distance between the stereo camera and the initial observation point, and estimating the systematic error includes estimating a stereo calibration error of the stereo camera as an estimated error of a calibrated rotation of the stereo camera.

8. 8. The system of claim 7, wherein estimating the random error comprises estimating a total random disparity error of the extrapolated trajectory and adjusting an error measure from the total random disparity error based on a distance from the initial observation point to a baseline of the stereo camera.

9. 2. The system of claim 1, wherein the extrapolated trajectory is within the field of view of the one or more golf ball sensors, but no observations of the golf ball are identified for the extrapolated portion of the trajectory of the golf ball's flight.

10. Calculating the one or more distance measures comprises: checking an intersection of the extrapolated trajectory with a geometric shape representing the two or more defined physical locations; determining a distance between the extrapolated trajectory and a strike location within each of the geometric shapes representing the two or more defined physical locations; estimating systematic and random errors based on the determined distances and selecting one of the two or more defined physical locations to identify as the starting point when only one of the determined distances is below a threshold distance; selecting one of the two or more defined physical locations to estimate systematic and random errors and identify as the starting point based on a last intersection along the extrapolated trajectory toward the at least one of the initial observation points when both or neither of the determined distances are below the threshold distance; The system of claim 1 , comprising:

11. The system of claim 10 , wherein the geometric shapes representing the two or more defined physical locations include three-dimensional geometric shapes.

12. The system of claim 10 , wherein the action includes determining the strike location based on inputs to the system.

13. The system of claim 12 , wherein the input includes input from at least one electronic location system.

14. 14. The system of claim 13, wherein determining the hitting location includes setting a hitting location for a golfer based on sensor data obtained from one or more test golf shots hit by the golfer and location data from a mobile communication device associated with the golfer, the mobile communication device being communicatively coupled to the at least one electronic location system.

15. The system of claim 14 , wherein the at least one electronic location system includes a global navigation satellite system.

16. The system of claim 12 , wherein the two or more defined physical locations are a golf bay or tee area of ​​a golf driving range that includes the three-dimensional physical space and various targets for the golf ball.

Citation Information

Patent Citations

  • JP1974098963A

  • Passenger ticket issuing device

    JP1987070994A

  • Shot ball tracking display device

    JP1996266701A

  • Golf driving range distance determination device and method

    JP2001521403A

  • Method, apparatus, and systems to custom fit golf clubs

    JP2009226216A

Cited By

  • Trajectory extrapolation and origin determination for objects tracked in flight

    JP2025111493A