Trajectory extrapolation and origin determination and sensor coverage determination for objects tracked during flight

The system effectively addresses the challenge of accurately identifying the origin of a golf shot by using multiple sensors to determine three-dimensional trajectories and estimate errors, ensuring precise and timely assignment of launch locations.

JP7689239B2Active Publication Date: 2025-06-05TOPGOLF SWEDEN AB
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
JP2024503775
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-07-20
Filing Date
2022-06-27
Publication Date
2025-06-05
Estimated Expiration
2042-06-27

AI Technical Summary

Technical Problem

Existing systems for tracking golf balls in flight struggle to accurately identify the origin of a golf shot, especially when multiple golf balls are launched from different physical locations simultaneously, leading to errors in assigning launch locations.

Method used

The system employs multiple sensors, including cameras and radar, to detect golf balls in flight and determine their three-dimensional trajectories. By extrapolating these trajectories backwards in time, the system calculates distance measures between the extrapolated trajectory and defined physical locations, and estimates systematic and random errors to accurately identify the launch origin.

Benefits of technology

This approach allows for quick and accurate identification of the golf ball origin, even in scenarios with multiple launch locations, reducing errors and latency in assigning launch locations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007689239000020
    Figure 0007689239000020
  • Figure 0007689239000021
    Figure 0007689239000021
  • Figure 0007689239000022
    Figure 0007689239000022
Patent Text Reader

Abstract

Methods, systems and apparatus, including media-encoded computer program products, for 3D flight tracking of an object include a method including determining a three-dimensional trajectory based on initial observations, extrapolating the three-dimensional trajectory backward in time to generate an extrapolated trajectory, calculating distance measures between the extrapolated trajectory and defined physical locations, waiting for additional observations if none of the distance measures meet a threshold distance, identifying one of the defined physical locations as an origin if only one of the distance measures meets the threshold distance and the error measure meets a predefined criterion, identifying one of the defined physical locations as an origin if two of the distance measures meet the threshold distance and only one of the first and second error measures meet the predefined criterion, and waiting for additional observations if neither the first error measure nor the second error measure meets the predefined criterion.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] This specification relates to tracking an object in flight, such as a golf ball, 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 balls as they are struck or after they are in flight. As explained in US Patent No. 5,413,345, the locator camera views the golf shot as it leaves the tee area, while the range camera views the shot from a generally vertical position along the intended flight path. Moreover, even if the camera cannot "see" the ball on the tee, the specific tee box origin of the ball in flight can be determined. In addition, US Patent Publication No. 20180011183 describes a system for tracking multiple projectiles using radar, where one or more radar devices are positioned to maximize the field of view (beam coverage) of the radar device(s), each radar device can have its own associated computer to define its own three-dimensional radar coordinate system, and the 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

[0003] This specification describes techniques related to tracking an in-flight object, such as a golf ball, using data obtained from cameras, radar, and / or other sensor devices, and specifically related to trajectory extrapolation and origin determination during full-flight three-dimensional (3D) tracking.

[0004] In general, one or more aspects of the subject matter described herein can be embodied in one or more systems including two or more defined physical locations from which a golf ball is launched into the three dimensional physical space, one or more golf ball sensors positioned with respect 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, 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 including determining a three dimensional trajectory for 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 backwards in time to generate an extrapolated trajectory, calculating a distance measure between the extrapolated trajectory and the two or more defined physical locations, and if none of the distance measures meet a threshold distance, waiting for additional observations of the golf ball by the one or more golf ball sensors. If only one of the distance measures satisfies the threshold distance, an error measure is formed for one of the two or more defined physical locations corresponding to only one of the distance measures from an estimated systematic error for at least one of the initial observations of the golf ball by the one or more golf ball sensors and an estimated random error associated with the at least one of the initial observations of the golf ball by the one or more golf ball sensors, and if the error measure satisfies a predefined criterion, one of the two or more defined physical locations is identified as an origin for the golf ball, and if the error measure does not satisfy the predefined criterion, the one or more golf ball sensors await an additional observation of the golf ball.If two of the distance measures satisfy the threshold distance, a first error measure is formed from the estimated systematic error and the estimated random error for a first one of the two or more defined physical locations corresponding to the first one of the two distance measures, and a second error measure is formed from the estimated systematic error and the estimated random error for a second one of the two or more defined physical locations corresponding to the second one of the two distance measures, and if the first error measure satisfies a predefined criterion and the second error measure does not satisfy the predefined criterion, the first one of the two or more defined physical locations is identified as an origin for the golf ball and the second error measure satisfies the predefined criterion and if the first error measure does not satisfy the predefined criterion, the second one of the two or more defined physical locations is identified as an origin for the golf ball, and if neither the first error measure nor the second error measure meets the predefined criterion, the one or more golf ball sensors await an additional observation of the golf ball. These and other embodiments can optionally include one or more of the following features.

[0005] The operations may include presenting the golf ball tracking data on a display device associated with the defined physical location identified as the origin for the golf ball, and the presenting may include selectively presenting one or more metrics for the golf ball in flight within the three dimensional physical space based on the estimated systematic error, the estimated random error, or both the estimated systematic error and the estimated random error.

[0006] Selectively presenting the one or more metrics may include calculating a measure of error for a ball velocity using the estimated random error, and presenting on a display device a ball velocity value calculated for a three-dimensional trajectory for the golf ball if the measure of error for the ball velocity is below a threshold. Selectively presenting the one or more metrics may include calculating a measure of error for a ball spin vector using the estimated systematic error and the estimated random error, and presenting on a display device a ball spin value calculated for a three-dimensional trajectory for the golf ball if the measure of error for the ball spin vector is below a threshold. Selectively presenting the one or more metrics may include calculating a measure of error for a launch angle using the estimated systematic error and the estimated random error, and presenting on a display device a launch angle calculated for a three-dimensional trajectory for the golf ball if the measure of error for the launch angle is below a threshold.

[0007] Presenting the golf ball tracking data on a display device associated with a defined physical location identified as an origin for the golf ball may include presenting one or more metrics at different times than presenting a golf shot animation or a ball trace overlay for the golf ball in flight within the three-dimensional physical space.

[0008] Calculating the distance measure may include checking an intersection between the extrapolated trajectory and a geometric shape representing the two or more defined physical locations. The operations may include determining impact locations for two or more golfers to define two or more physical locations from which the golf ball is to be hit in the three-dimensional physical space, and specifying a location of the geometric shape using the impact locations.

[0009] Determining the hitting location may include using input from at least one electronic location system in communication with the mobile devices of the two or more golfers. Additionally, determining the hitting location may include locating a mobile device of a given golfer using the at least one electronic location system, offsetting a location of the mobile device in a first direction to determine the hitting location for the given golfer in response to the given golfer being right-handed, and offsetting a location of the mobile device in a second direction opposite the first direction to determine the hitting location for the given golfer in response to the given golfer being left-handed.

[0010] One or more aspects of the subject matter described in this specification 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 the operations described above.

[0011] Additionally, one or more aspects of the subject matter described herein 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 determining at least one three-dimensional trajectory for at least one golf ball launched within a three-dimensional physical space based on observations by at least one golf ball sensor positioned adjacent the three-dimensional physical space, calculating systematic and random errors for the at least one three-dimensional trajectory according to a golf ball launch location, a variation in location for the at least one golf ball sensor, or both, and presenting a report summarizing the calculated systematic and random errors to indicate a preferred strike location, a different location for the at least one golf ball sensor, or both. These and other embodiments may optionally include one or more of the following features.

[0012] The calculating may include calculating systematic and random errors for the at least one three-dimensional trajectory according to variations in position for the at least one golf ball sensor, and the method / operations may include identifying at least one different position for the at least one golf ball sensor that results in a lower systematic and random error, and the presenting may include presenting a report summarizing the calculated systematic and random errors to indicate the at least one different position for the at least one golf ball sensor.

[0013] The method / operations may include moving the at least one golf ball sensor to at least one different location. The calculating may include calculating systematic and random errors according to variations in parameters for the at least one golf ball sensor. The at least one golf ball sensor may be at least two golf ball sensors adjacently positioned in three-dimensional physical space, and the method / operations may include preparing the report using the lowest values ​​of systematic and random errors calculated for the at least two golf ball sensors for each available tee location.

[0014] The parameters may include a field of view, and the method / operations may include identifying a different field of view for the at least two golf ball sensors that is a variation in the initial field of view that results in low systematic and random error, and the presenting may include presenting a report that summarizes the calculated systematic and random errors to indicate the different fields of view for the at least two golf ball sensors. The method / operations may include adjusting the initial field of view of the at least two golf ball sensors to the different fields of view.

[0015] The at least one golf ball sensor may include a camera, and calculating 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 for the stereo camera based on a distance between the stereo camera and the first observation, and calculating the systematic error may include estimating a stereo calibration error for the stereo camera as an estimated error in a calibrated rotation of the stereo camera. Furthermore, calculating the random error may include estimating an aggregate random disparity error for the extrapolated trajectory, and adjusting a measure of error from the aggregate random disparity error based on a distance from the initial observation to a baseline for the stereo camera. Finally, one or more aspects of the subject matter described herein may be embodied in one or more systems and / or devices implementing the aforementioned methods / operations.

[0016] Various embodiments of the subject matter described herein can be implemented to achieve one or more of the following advantages: The origin of a tracked golf ball can be quickly, yet simultaneously accurately, identified even when a golf ball tracking system is used to simultaneously track golf balls being launched from multiple different golf bays (or other defined physical locations), thus reducing the number of golf shots that are assigned to an incorrect launch location and / or cannot be assigned to a launch location until much later than the golf shot is hit. This can occur when a golf ball tracking system begins tracking a golf ball slower than normal and at an angle that introduces more error (e.g., parallax error in a stereo camera system that translates into error in selecting the correct launch location).

[0017] To address this issue, an error associated with the first point in each trajectory for a detected golf shot can be estimated and an evaluation can be made as to how the error affects launch location selection. This can involve estimating the error in two parts: (1) a systematic error that affects the position error in the same way for the extrapolated point back to the launch location as for the first point, and (2) a random error that affects the angle of the extrapolated trajectory resulting from the 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, and projecting this value back to the selected launch location to determine how much this error may affect the launch location selection. The random error can be calculated by estimating the angle error of the first observation of the trajectory to determine how much this error may affect the back extrapolation algorithm, and multiplying this error by the distance to the selected launch location to determine how much this error may affect the launch location selection. Taking these two types of errors into account, the number of golf shots that are incorrectly assigned to origins can be significantly reduced without increasing the delay (e.g., to wait for more data and / or new versions of the trajectory) before the golf shots are presented to the golfer. Effect of the Invention

[0018] In addition, the systematic and random error calculations can be used to improve the performance of object tracking systems in unstructured environments. For example, in the case of a grass tee line on an open field or driving range, the systematic and random error calculations can be used to identify the origins of golf shots taken by multiple golfers standing very close together on the tee line. Moreover, the systematic and random error calculations can be used to improve the golfer's experience and / or improve the object tracking system setup, thereby facilitating the deployment of an effective system with a minimum number of sensors for a given range.

[0019] Furthermore, a separate, dedicated golf ball tracking system is not required for each launch location, which reduces costs in systems where multiple golfers hit golf balls simultaneously. Using fewer golf ball tracking systems at a site, such as a golf driving range, reduces the work required to manage the system and correct hardware errors or repair malfunctions. Moreover, a wider field of view can be achieved, and fewer components need to be placed near the golfers, for example, within a golf bay. For example, there is no requirement for a golf ball tracking system using the systems and techniques detailed in this disclosure to install a tracking unit within each golf bay of a golf entertainment facility. Moreover, fewer tracking systems reduces the overall complexity of the system from a software perspective, especially if the golf facility is fully covered with only a single system.

[0020] 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. [Brief description of the drawings]

[0021] [Figure 1] 1 illustrates an example of a system that performs 3D tracking of a golf ball in flight 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 origin of a golf shot. [Figure 2B] 1 is a schematic diagram of a data processing system for identifying a golf bay among two or more golf bays as an origin of a golf shot. [Figure 3A] 1 is a flow chart illustrating an example process for locating the launch physical location of a golf ball detected and tracked in flight. [Figure 3B] 1 shows an example of a systematic error caused by errors in the calibration of the tracking device and / or tracking system. [Figure 3C]An example of how systematic errors affect the error in estimating whether a golf bay is the origin of a golf shot is shown. [Figure 3D] 1 shows an example of a random error caused by noise in the sensor readings. [Figure 3E] An example of how random error affects the error of estimating whether a golf bay is the origin of a golf shot is shown. [Figure 4A] 1 shows another example of a system that performs 3D tracking of a golf ball in flight through three-dimensional space. [Figure 4B] 4B shows an example of a system that performs in-flight 3D tracking of a golf ball with respect to a layout relative to a golf bay, such as may be used in the system of FIG. 4A. [Figure 5A] 5 is a flow chart illustrating another example of a process for locating the launch physical location of a golf ball detected and tracked in flight. [Figure 5B] 1 illustrates an example of a system that performs in-flight 3D tracking of a golf ball with respect to a personal mobile device for a golfer. [Figure 6A] 5 is a flow chart illustrating another example of a process for locating the launch physical location of a golf ball detected and tracked in flight. [Figure 6B] 5 is a flow chart illustrating another example of a process for locating the launch physical location of a golf ball detected and tracked in flight. [Figure 6C] 1 illustrates another example of a system that performs in-flight 3D tracking of a golf ball with respect to a personal mobile device for a golfer. [Figure 7] 1 is a flow chart illustrating an example of a process for selectively presenting metrics for a golf shot. [Figure 8A] 1 is a flowchart illustrating an example of a process for determining effective coverage of one or more sensors in an object tracking system. [Figure 8B] 1 shows an example of a map of errors for a deployed object tracking system. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

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

[0023] FIG. 1 illustrates an example of a system 100 that performs 3D tracking of a golf ball during flight through three-dimensional space. In this example, the system 100 is part of a golf facility that includes targets 120 on a driving range 110 and a building 115 that includes golf bays 130. Note that in FIG. 1, the building 115 is shown as a rectangle, but an exemplary embodiment has a curved portion of the building facing the driving range 110, such that the golf bays form a crescent shape. The targets 120 can include radio frequency identification (RFID) tag interrogators that read radio frequency identification (RFID) tags on golf balls struck from golf bays 130 located on two or more levels of the building 115. Additionally, one or more of the targets 120 can include discrete sections of netting that direct the golf balls to respective RFID reading boxes associated with different sections. However, in some embodiments, neither such an RFID tag nor an RFID tag interrogator is required, as the golf ball sensor systems 140, 150 can be used to track a golf ball in flight and identify where the golf ball landed without the use of such an RFID system.

[0024] In the example of FIG. 1, the three-dimensional space through which the golf ball is tracked is a golf driving range 110, which may be of various shapes and sizes, but would typically be 300-500 feet wide and 600-900 feet long. The golf driving range 110 may be flat or may include a small hill or one or more slopes, and may also include hazards, such as ponds and bunkers. Note that such hazards need not include actual water or sand, but may simply be colored to look like water or sand. The golf driving range 110 may be comprised of real grass or artificial turf. Moreover, the targets may be divided into categories that roughly represent 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 groove targets at the ends of the driving range 110, as well as distinct colors for each target 120 or group of targets 120. Other shapes and sizes for the targets 120, as well as numbers of targets 120 different from those shown, are also possible. However, in some implementations, a specific target in three-dimensional space is not required and / or no buildings are required. For example, golf ball sensor systems 140, 150 can be installed on an open field or in a sports stadium or arena.

[0025] In general, a golf ball sensor system 140, 150 is used to identify from which of a plurality of defined physical locations 130 the golf ball was struck. The golf ball sensor system 140, 150 includes at least one golf ball sensor 140 and at least one computer 150 communicatively coupled to the golf ball sensor 140. The golf ball sensor 140 can be one or more sensors of one or more different types. For example, the golf ball sensor(s) 140 can be an optical sensor (e.g., a stereo camera or two cameras operated together to provide a stereoscopic view of the golf ball in flight), a radar sensor, or a combination thereof. In some implementations, two or more stereo cameras 140 are used to track the 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 angle information for the golf ball in a two-dimensional plane, the radar device is used (in combination with the camera) to provide depth information for the golf ball in the dimension perpendicular to the plane for 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 (using a pinhole camera model, trigonometry, and a known separation distance between the camera and the radar device, which distance may be zero) based on the camera angle for the in-flight camera observation. 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, which information can be converted to a 3D position, or two or more radar devices that combine their measured data to construct a 3D flight trajectory.

[0026] Golf ball sensor(s) 140 are positioned with respect to 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, golf ball sensor(s) 140 are positioned such that the sensor does not allow the sensor to observe the golf balls at the moment of their launch from the defined physical location 130. For example, golf ball sensor(s) 140 could be mounted in a sunshade at the top front of golf bay 130, which could provide a wider field of view for golf ball sensor(s) 140, although the systems and techniques detailed in this disclosure do not require the inclusion of a tracking unit inside the golf bay.

[0027] In some implementations, the golf ball sensor(s) 140 are positioned to enable the sensors to observe the golf balls at the moment of their launch from a defined physical location 130. However, as will be appreciated, even with such positioning, each individual golf ball may not be detected until after launch has already occurred, and thus sensor observations of the golf ball near the launch point may often not be available. Thus, regardless of whether the golf ball sensor(s) 140 are able to observe the tee location, the systems and techniques detailed in this disclosure can be used to determine ball trajectory and to identify the location 130 from which each ball was launched.

[0028] Golf ball sensor(s) 140 are communicatively coupled to one or more computers 150. This can be a wired connection that allows golf ball sensor(s) 140 to provide data to computer(s) 150, a wireless connection that allows golf ball sensor(s) 140 to provide data to computer(s) 150, or a combination thereof, and these connections can be unidirectional, duplex, or half-duplex. In some implementations, at least one computer 150 is connected to or integrated with each of two or more sensors 140 to create a discrete sensor system that detects and tracks golf balls singularly / separately in three-dimensional space, thereby providing individual trajectory predictions based on separate observations of the same golf ball flying through three-dimensional space. As used herein, an "observation" is the identification of sensor data indicative of a golf ball based on predefined criteria, regardless of the type of sensor(s) being used.

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

[0030] Moreover, the defined physical location 130 may be a golf bay, a tee location within the golf bay, or tee locations in general. In some implementations, the three-dimensional space is not a golf driving range, as illustrated. Thus, the defined physical location 130 from which the golf ball is launched may be a designated hitting location, such as indicated by chalk, tape, or rope on the ground, and the three-dimensional space may be any location within a sports stadium or arena, or an open field reserved for golf events, where it is safe to hit a golf ball. For example, in some implementations, the three-dimensional space is an open grass field, and the defined physical location 130 is a location along a tee line selected by an individual golfer. In this specification, references to a "golf bay" 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 origin 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 it is 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 for clarity of illustration, the diagram represents only two dimensions). Three-dimensional trajectory 212 is then extrapolated backwards in time to generate extrapolated trajectory 214, which intersects both golf bay 220A and golf bay 220B. Thus, from the initial observation, it is not readily identifiable which of the two golf bays 220A, 220B should be identified as the launch location of the golf shot.

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

[0033] FIGURE 2B is a schematic diagram of a data processing system including a data processing device 250 for identifying a golf bay among two or more golf bays as the origin of 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 FIGURE 2A, multiple computers may be used. Thus, one or more of the golf ball sensor systems 140, 150, 200, 410, 420, 490, 500 from FIGURES 1, 2A, 4A, 4B, 5, and 6C may be implemented using the data processing device 250.

[0034] The data processing device 250 may include various software modules, which may be distributed between the application layer and the operation system. These may include executable and / or interpretable software programs or libraries, which 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. Moreover, in some cases, the described functionality is implemented (partially or fully) in firmware and / or hardware of the data processing device 250 to improve the speed of operation. Thus, the program(s) and / or circuitry 270 may be used to implement a ball detector, tracker, and trajectory determination & ball origin identifier, as detailed in this disclosure.

[0035] The ball detector & tracker and trajectory determination & ball origin identifier program / circuit 270 employs a physical model for golf ball flight to extrapolate portions of the trajectory that are outside the field of view of the sensor or are missed by the sensor for other reasons. The data processing device 250 may include hardware or firmware devices, including one or more hardware processors 252, one or more additional devices 254, a computer readable medium 256, a communication interface 258, and one or more user interface devices 260. Each processor 252 is capable of processing instructions for execution within the data processing device 250. In some implementations, the processor 252 is a single or multi-threaded processor. Each processor 252 is capable of processing instructions stored on a storage device, such as the computer readable medium 256 or one of the additional 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 processes described may be performed in parallel or serially, such as on single or multi-core computing machines, and / or on a computer cluster / cloud.

[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 device 250 can store instructions implementing the operations detailed in this disclosure on a computer readable medium 256 or one or more additional devices 254, such as, for example, one or more of a floppy disk drive, a hard disk drive, an optical disk drive, a tape drive, and a solid state memory device. In general, the computer readable medium 256 and one or more additional devices 254 having instructions stored thereon 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 device(s) 254 may also include one or more sensors 140, 410, such as when the sensor and computer are integrated together in a self-contained golf ball sensor system, e.g., system 200, 490, 500, 660. One or more sensors 140, 410 may also be located remotely from the data processing device 250, and data from such sensor(s) 140, 410 may be obtained using one or more communication interfaces 258, such as an interface to wired or wireless technology. Such communication interface(s) 258 may also be used to communicate the extrapolated trajectory, the proposed launch golf bay, a measure of confidence (one or more error measures) for the proposed launch golf bay, and / or other data to another computer system. For example, the two or more data processing devices 250 may be a discrete golf ball sensor system that tracks the golf ball solely in three-dimensional physical space and reports those results to another data processing device 250 that determines which results should be used and which golf bay 220A, 220B should be identified as the launch golf bay, and this information can be communicated to a computer / display device 290, which may be a disk device placed within the identified golf bay or a data processing device 250 (e.g., a smart phone or tablet computer) held by a person who is within the identified golf bay.

[0038] FIG. 3A is a flow chart illustrating an example of a process for locating the launch physical location of a golf ball detected and tracked in flight. It should be noted that this is only an example and that the operations described can be performed in a different order and still achieve the desired results. An observation of a golf ball is identified (300) in the sensor data (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660). This involves processing data received from one or more sensors (e.g., sensors 140, 200, 410, 490, 500, 660) to find data indicative of a golf ball based on predefined criteria for the sensor type(s). For example, for radar data, a ball speed criterion can be used according to a known speed range for a golf ball that corresponds to an expected speed for a golf shot that has just been hit or that has been previously detected and is currently being tracked. As another example, for camera data, the streaming image data can be processed in real-time (eg, using an object classifier) ​​to identify various objects within the video stream that are candidate golf balls.

[0039] The observation of the golf ball is associated with previously detected golf shots and new golf shots are detected (302) (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660). 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 involve simultaneous and / or concurrent processing using parallel processing or multitasking processor architectures. A golf shot can be detected (302) when, for the camera data, a series of candidate balls across a set of video frames meet or exceed 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 enable detection of the golf shot before all image data for the golf shot is received.

[0040] For radar data, a ball speed criterion can be used so that the radar time series can only originate within a certain speed range, corresponding to the range of possible speeds for 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. Because a series of radar measurements are received in real time, additional criteria can be used across those measurements. For example, a series of radar measurements of a golf shot should decrease in speed over time, and this fact can be used to identify golf shots in the radar data. Thus, golf balls detected at unexpected distances or speeds, as well as other objects such as birds and planes, can be easily ignored.

[0041] Moreover, 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 the analysis of image data from the camera. This allows the analysis to assist in the selection of a set of object identifications corresponding to the golf shot, and therefore increases the likelihood of identifying the golf shot. Note that the back and forth between the processing of data from different sensor types (e.g., data from radar and camera devices) can go both ways to improve the robustness of shot detection. By implementing two or more such matching of data from different sensor types, the system can be made even more robust for golf driving ranges (or golf-themed entertainment venues) with multiple golfers.

[0042] It should be noted that if radar is used in combination with optical tracking, e.g., using the depth distance calculations discussed above, correlating 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 with every measurement. Thus, rather than picking the fastest speed (or strongest return) and transmitting only that speed, the radar device can be set to report the speed of the fastest object, or the object with the strongest radar return. With such an operation mode, some robustness to multiple balls in the air can be achieved by: (1) identifying the correct radar time series based on correlation in time, (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 fall within a threshold distance of the predicted ball speed in the existing radar time series model, a value is added to the series, the model is updated, and the system 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 (300) ball observations while no unassociated observations remain in the current sensor data (304). If ball observations are identified (300) but cannot be associated (302) with previously detected golf shots, these ball observations continue to be considered (302) when attempting to detect new golf shots, and the process continues to receive and analyze incoming sensor data to identify (300) ball observations while unassociated observations remain in the current sensor data (304) but new golf shots are still being detected (306). Additionally, if a new golf shot is detected (306), a separate process can be created to determine the origin of the new golf shot. This separate process operates even while new sensor data is being received and analyzed to identify (300) additional golf ball observations and associate (302) the new ball observations with newly detected golf shots that may or may not yet have an origin determined for that golf shot. In other words, golf shot detection, golf shot origin determination, and golf ball flight tracking 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 for the golf ball in three-dimensional physical space is determined (310) (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) based on initial observations (300) of the identified golf ball. This may involve using a physics model for the golf ball flight that is applied to the three-dimensional coordinates in the three-dimensional physical space as determined from the initial observations of the golf ball. Thus, at least the effects of gravity (e.g., drag, lift, and gravity) are taken into account, and other physical parameters such as wind speed and direction, estimated ball spin, etc. may also be taken into account.

[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 one or several. The physical model can include modeling the forces that affect the golf ball throughout its flight, including gravity, drag and lift, which are dependent on the environment, the physical properties of the golf ball, wind speed and direction, ball speed and spin of the golf ball.

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

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

[0048] A measure of certainty can then be determined for the calculated distance measure(s) for use in determining whether and when to identify a golf bay as the origin of a golf shot to address errors in observing the trajectory and in extrapolating the trajectory back to the location of the golf bay. As shown in FIG. 2A, this can be particularly important when the extrapolated trajectory of a golf shot intersects both bays at similar distances to their center points, especially if there are more than one tracking system at the site and another tracking system may soon provide better results, as it may be better not to display the shot at all than to display it to the wrong user. Thus, for example, an estimate of the error in the extrapolated trajectory at the point where it intersects with the golf bay can be calculated to estimate a level of certainty for the launch golf bay, and the system can choose not to display the golf shot to the user if there is too much uncertainty about its origin.

[0049] It should be noted that the error measure generated for the calculated (314) distance measure need not use the distance measure as an input, although some implementations may do so. For example, a first distance measure may be calculated to determine which golf bays should be considered potential launch bays, and a second distance measure may be calculated for use in generating the error measure for that 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 errors in the extrapolated trajectory vary depending on various characteristics of the tracking sensors, to facilitate the construction of an effective system capable of rapidly generating information estimates, the extrapolated trajectory errors can be reduced to two types of errors: (1) systematic errors, which affect the observed ball position, and (2) random errors, which affect the angle of the trajectory determined from the observed ball position. Moreover, the system can estimate these two types of errors separately. A systematic error for at least one of the initial observations of the golf ball by one or more golf ball sensors can be estimated (316) (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660), and 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 (318) (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660). 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 a focal length of the cameras and a disparity for the stereo camera, and estimating a stereo calibration error for the stereo camera as an estimated error in a calibrated rotation of the stereo camera.

[0051] 3B shows an example of a systematic error caused by an error in the calibration of the tracking device and / or tracking system. Systematic errors can arise from errors either when calibrating the sensor itself 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 arise from the inherent calibration of each camera and also from the stereo calibration of each stereo system.

[0052] A systematic error will generally result in some kind of offset, affecting two successive sensor readings in the same way. This means that the error in one observation is roughly equal to the error in 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 portion 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 back to the golf bay 316GB. Furthermore, while the systematic error can be estimated for any observation 316SO of the golf ball, all that is required is an error vector e for the first observation of the golf ball. 1 is only an estimate of the error vector e 1 is essentially the error vector e bay Since a systematic error in the first (or subsequent) golf ball observation will cause an error of similar size and direction in the golf bay, it is a systematic position error in golf bay 316GB, i.e., this error is independent of extrapolation back to golf bay 316GB.

[0053] Thus, an estimate of the systematic error can be calculated using the first, second, third, fourth or later observation of the golf ball to determine an error vector, which can be estimated to be the same as the error vector of the ball's position in the bay. This error vector can then be projected onto a direction vector pointing along a row of adjacent golf bays to determine how it affects the selection of that golf bay as the launch golf bay for the golf shot. Thus, the geometric relationship between the golf bays and the current golf shot is taken into account.

[0054] A detailed example of this in the context of a stereo camera tracking system is provided here. Note that in a stereo camera system, position error can be affected by the following sources of error: (1) error in intrinsic calibration, and (2) error in stereo calibration. Error in intrinsic calibration can be understood in a stereo camera system as having the following effects: (1) error in focal length, which increases linearly from zero at the principal point of the image to some large amount of error as a person moves towards the edge (error proportional to the distance r to the principal point of the image), (2) error in distortion coefficients, which shows a polynomial increase from zero at the principal point of the image to some large amount of error (r 2 +r 4 (error proportional to f(x,y)), and (3) an error in the distortion model, which error increases and / or decreases nonlinearly from zero at the principal point of the image to some other amount of error (error proportional to f(x,y)). Given these factors that affect the error, to simplify the error model, the second and third of these two factors (polynomial increase and nonlinear increase / decrease) can be ignored, and the error in the intrinsic calibration can be assumed to be zero in the middle of the image and to increase linearly as one moves toward the edge of the image. It is noted that the system may employ a distortion model that attempts to remove all of these errors. However, the distortion model and attempts to remove the distortion are not perfect, and some of this residual error is more significant than others, so some residual error is likely to remain in the system.

[0055] Furthermore, errors in stereo calibration can be understood to have the following effects in a stereo camera system: (1) errors in the calibrated rotation of the camera, which is roughly the angular error of the rotation times the distance of the point from the camera, and (2) errors in the calibrated position of the camera, which translates directly into position errors of the point. Note that the second of these is likely to be very small and have little effect on the position error in a given stereo camera implementation. Thus, the second of these effects can be safely ignored. It is the more significant portion of the residual errors that must be addressed for their impact on the selection of a golf bay as the starting point for a golf shot.

[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. The systematic error vector e for one or more observations of a golf ball is 1 can be calculated according to the following formula:

number

number

number

[0057] Error vector e 1 The extent to which the error of the golf bay estimation is affected by the error vector e compared to the (hit) direction, as shown in Figure 3C. 1 In FIG. 3C, e is the error vector e that affects the golf bay selection. bay This is part of:

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 different tracking operations. For example, a stereo camera tracking system may have small random errors in two-dimensional (2D) tracking operations that cause pixel errors in the image coordinates of the observation of the golf ball, errors in the disparity, affecting the estimated depth (distance) to the golf ball, e_disp, and / or errors in the estimated direction to the golf ball, e_dir. This results in an angle error between the first and last observation points, which causes the physical model to perform an extrapolation slightly in the wrong direction behind it.

[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 in 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 consistent. The extrapolation algorithm used to determine the trajectory of the golf ball is based on the physical forces acting on the golf ball, and therefore, the algorithm tries to estimate the changes in the state of the golf ball between time steps. This means that it is more sensitive to the relative errors between the data points. Therefore, this position error between the unobserved actual position 316BE of the ball in the 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, random error estimation can begin from the first (or later) observation point. In general, random error can be estimated for any point in the trajectory, but in many implementations, the random error estimation begins from the first point in the trajectory because the accuracy and usefulness of the data likely decreases further away from the first observation of the golf ball. In any case, to understand how this error affects the error of the extrapolated point at golf bay 316GB, this error is converted to an angular error because the extrapolation algorithm is more affected by the angular error at the first point (or later point) than the offset (position error). Moreover, the random error is "angular" in the sense that it causes an error in the position of golf bay 316GB that increases with extrapolation distance.

[0061] In some embodiments, this angular error is estimated in the following manner: For a first observation of the golf ball, an error vector e 1 Calculate the magnitude M of to determine the length L (either time or space) over which the golf ball has been observed, construct a function f(L) of L, which may be nonlinear to account for the fact that observations beyond a certain point are no longer 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 later) observation point. This angle is then multiplied by the distance between the first (or later) 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 estimated to be perpendicular to the direction of travel of the golf ball at the first (or later) observation position. Thus, this error vector e bayis also projected onto a vector orthogonal to the general hitting direction from golf bay 316GB to determine how much this error affects golf bay selection, 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 e for the first observation of the golf ball 1 can be calculated according to the following formula:

number

number

number

[0064] Regarding systematic errors, this error is converted to a position error via 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). In addition, random pixel errors can also affect the position error in a direction orthogonal to the parallax. In this case, it is a directional error, and the size of the error is proportional to the distance from the baseline and can be calculated using the pinhole camera formula, see equation (8).

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

number

number

number

[0066] It should be noted that the random error estimate need not start from exactly the first observation position of the golf ball, but rather may start from the second, third, fourth or subsequent observation position. In general, the random error estimate 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 possible to take into account several observation points. In that case, the angle β is determined by the angle p 0 and p 1 Instead of being calculated with respect to p 0 andp n where n depends on the number of available observations. Moreover, the error is 1 Instead of p 0 can also be added to p 1 We can calculate the angle β at,which gives very similar results.,Hence, we can estimate the total random disparity error,,where we assume that errors in the 2D tracking are the only source of this,error.

[0067] Another way to estimate how the angle β may affect the random error in the bay is to construct a function f(β,r) that describes how the angular error β and the extrapolation distance r affect the error in the bay. For example, f(a)=sin(β)*(r+z*r*r), where z is a quadratic factor of the angular error. The component sin(β)*z*r*r is a way to capture some of the nonlinear effects that the extrapolation may have on the error, where the value of z is determined experimentally. Other approaches to approximating how the extrapolation is affected by the angular error are also possible. However, it should be noted that the relationship is not linear, i.e., it is not just the angle multiplied by the distance, but rather is a more generalized function of the (angular) error and the extrapolation distance.

[0068] Other corrections are possible. The calculated error measure(s) can be adjusted based on the effective area of ​​the golf bay, which can vary based on the direction from the golf bay to the observation point and the geometry of the golf bay. For example, if the geometry representing the golf bay is a rectangle, then when this shape is seen from the field of view, the effective width of that rectangle is reduced. This can be taken into account by comparing the direction of the golf shot to the direction of the bay-rectangle and scaling the error accordingly:

number

number

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

[0070] Referring again to FIG. 3A, the estimated systematic error and the estimated random error may be combined (320) (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) to form one or more error measures for one or more distance measures. For example, the estimated systematic error and the estimated random error may be summed. Other combinations are possible. Summing the two errors is a way to estimate the "worst case" scenario, i.e., that both errors affect the observations / measures in the same direction. If it can be shown that this is not the case, the errors may be combined differently. In addition, the combination (320) may take into account (1) the geometric relationship between at least one of the initial 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 the tee location(s) therein.

[0071] A check is made (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) as to whether one or more error measures satisfy a predefined criterion (322). If one or more error measures do not satisfy the predefined criterion (322), the process can wait for additional observations of the golf ball by one or more golf ball sensors. The process can then return to update (310) the three-dimensional trajectory for the golf ball in three-dimensional physical space based on the new observations of the golf shot. For example, if the total error is higher than a certain threshold, the identified golf shot is not immediately displayed to the user because the first version can be safely discarded if the same (or another, redundant) system provides a new version of that golf shot with a lower error within a short time frame. Note that while FIG. 3A shows that the systematic and random errors are recalculated in a similar manner (316, 318), in some embodiments, one or both of the systematic and random errors do not need to be recalculated for the updated trajectory, depending on the specifics of how these error measures are calculated in a given embodiment.

[0072] For example, as mentioned above, the systematic error may be the same as that previously calculated, so if the systematic error does not change with the updated trajectory, no updated calculation is needed. In contrast, the random error may be recalculated (318) for the second and any subsequent error estimates for the updated trajectory, since this portion of the error may change significantly as new ball observations are received from the sensor(s). In some implementations, the length of the complete observed trajectory may be used as an input to the error formula, so that information from the additional observations is also used. Thus, each recalculation (318) may use information about the entire trajectory to calculate a complete, combined (320) error for the starting position of the ball in the golf bay.

[0073] Additionally, the predefined criteria checked (322) can be a single criteria, e.g., a single error threshold, or two or more criteria. For example, two error measures are determined for two respective golf bays, and in the case where both of these error measures are below an error threshold, the two error measures can be compared to each other (322) to identify the golf bay corresponding to the lower error measure as the origin of the golf shot. As another example, in a multi-detector system, after a period of time in which no other detection system has picked up the golf shot, the first detector of a golf shot can check its tracked trajectory against a more lenient error threshold to increase the likelihood of identifying the launch golf bay for the golf shot.

[0074] For example, using the integrated error calculated in equation (12), a first version of a golf shot detected by a stereo camera golf ball tracking system can be compared to a threshold of 0.15, while a second and subsequent versions of the golf shot detected by that same stereo camera golf ball tracking system can be compared to a threshold of 0.25. As another example, a stricter threshold (e.g., 0.15) can be applied to only the very first version of a golf shot detected by any of the two or more golf ball tracking systems, and a more lenient threshold (e.g., 0.25) can be applied to all subsequent versions of the golf shot (detected by any of the two or more golf ball tracking systems). The use of such a two-level criterion at 322 allows a first version of a golf shot (e.g., from a non-primary system for that golf bay) to be accepted only if the error in the golf bay selection is very low, thus further reducing the latency for golf bay selection in some cases without risking an incorrect golf bay selection in the more typical cases.

[0075] FIG. 4A shows an example of a system 400 that performs 3D tracking of a golf ball during flight through a three-dimensional space. Two or more sensors 410 are communicatively coupled (wired connection(s), wireless connection(s), or both) to a computer system 420. The number of sensors 410 used varies with the size of the three-dimensional space to be covered, but generally, a set of sensors 410 is installed to cover the entire three-dimensional space (e.g., the entire golf driving range). In addition, the number of sensors 410 can be increased to provide redundancy of coverage for that space, for example, having at least two sensors 410 covering each golf bay. In the example of FIG. 4A, for clarity of this description, only two sensors 410A, 410B are shown, 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 within the golf ball tracking system may also be three-dimensional (having width and height) to allow for identification of launch golf bays on different floors of the building. Moreover, each sensor 410 (or a combination of sensors 410A, 410B) tracks all golf balls within its field of view, and a physical model for golf ball flight (operating within computer system 420) is used to extrapolate portions of trajectories that are outside the field of view or missed by the sensor for other reasons. It should be noted that a single sensor 410A may have multiple sensor components, as in the case of a stereo camera, which may have two optical sensors within it but output one signal. Additionally, even if 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 can be discrete sensor systems that independently identify golf shots, extrapolate each identified golf shot both forward and backward in time, and attempt to determine a launch golf bay based on the backward extrapolation of the golf shot. An orchestration process, which may run on computer 420 or even a separate computer, can take the data from these discrete sensor systems and make the final decision as to which golf bay should be identified as the origin of a particular golf shot.

[0077] Using the extrapolated trajectory, the system calculates the physical location from which each golf ball was hit so that the 3D tracking of the golf ball can be displayed to the correct person in the correct golf bay. For example, a first discrete golf ball sensor system 410A, 420 may identify an initial observation of a golf shot 412 and detect the golf shot 412, but does not have enough confidence in the originally identified launch bay (a first error threshold is not satisfied) to cause the golf shot 412 to be displayed in any of the golf bays 430. Additional observations of the golf shot 412 may then be obtained by the first discrete golf ball sensor system 410A, 420 before the second discrete golf ball sensor system 410B, 420 even detects the golf shot 412. Thus, the updating of the 3D trajectory based on additional observations, the extrapolation of this updated trajectory backwards in time, the calculation of the updated distance measure(s), any updated error estimation (e.g., updating the random error using the entirety of the currently observed trajectory), and the integration of the estimated systematic error and estimated random error to form updated error measure(s) for the updated distance measure(s) may all occur before the second discrete golf ball sensor system 410B, 420 detects the golf shot 412.

[0078] After this update, the first discrete golf ball sensor system 410A, 420 can identify the golf bay 432 as the origin for the golf shot 412 if the updated error measure(s) meet a predefined criteria, e.g., a second, simpler error threshold (used for the first check). Using such a simpler error threshold is advantageous in this case, since the second discrete golf ball sensor system 410B, 420 never actually detects the golf shot 412. Moreover, even if later versions of the golf shot 412 captured by the first discrete golf ball sensor system 410A, 420 do not improve significantly in the error measure(s), those later versions are reconsidered with a more lenient threshold to help ensure that the launch golf bay is identified for all golf shots. In other words, if no additional observations are available within a certain predefined time period, the initial observations (along with any additional observations) can be processed and compared to another (less stringent) predefined criteria. In some implementations, three or more thresholds are used over a predefined time horizon.

[0079] In some implementations, multiple systems track golf balls simultaneously and deliver new versions at designated intervals. A stricter threshold is used for a first version of a detected golf shot, meaning that a second tracking system has time to deliver its first version of the golf shot 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 launch golf bay. This helps keep latency down while at the same time ensuring that bay selection is not based on an inaccurate shot version when a better shot version is readily available.

[0080] For example, the first system 410A, 420 may identify an initial observation of the golf shot 414 and detect the golf shot 414, but may not have enough confidence in the originally identified launch bay (a first error threshold is not met) to cause the golf shot 414 to appear in any of the golf bays 430. Additional observations of the golf shot 414 may then be obtained by the second system 410B, 420 and the same golf shot 414 may be detected by the second system 410B, 420 while the first system 410A, 420 continues to track the golf shot 414. The second system 410B, 420 determines a discrete three-dimensional trajectory for the golf ball in three-dimensional physical space based on the additional observations, extrapolates the discrete three-dimensional trajectory of the golf ball backwards in time, calculates discrete distance measure(s) between the discrete extrapolated trajectory and the golf bay 434 and the golf bay 436, estimates discrete systematic errors and discrete stochastic errors, integrates the discrete estimated systematic errors and discrete estimated stochastic errors to form discrete error measure(s) for the discrete distance measure(s), and can identify one of the golf bay 434 and the golf bay 436 as the origin for the golf shot 414 if a first error threshold is satisfied.

[0081] Thus, between the time the first system 410A, 420 initially detects the golf shot 414 and later uses a less stringent error threshold to determine either golf bay 434 or golf bay 436 as the origin for the golf shot 414, the second system 410B, 420 is able to detect the golf shot 414 and also accurately identify golf bay 434 as the launch golf bay due to its location relative to the ball's trajectory. It should also be noted that while this is happening, a parallel process may occur 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 origin, but then the first system 410A, 420 subsequently also detects the golf shot 416 and has a smaller error affecting the golf bay selection for the 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) so that the first system 410A, 420 can quickly identify the golf bay 436 as the origin for the golf shot 416.

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

[0083] Furthermore, each of the golf bays within a building, e.g., building 115 of Figure 1, can be the same or there can be different levels of accommodation for different types of golf bays, as well as different shapes, sizes and layouts. Golf bays on a first level may have direct access to a driving range, while golf bays on higher levels typically have safety netting that extends horizontally away from the building to prevent injury if a person accidentally falls out the front of the bay. Additionally, each golf bay may include one or more tee-off locations.

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

[0085] Each of the golf bays 440A, 440B can include two teeing off 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 tube system such that golf balls can be automatically picked up from the target and returned to the player without human intervention. Alternatively, golf balls can be collected from a central location within a building, such as building 115 of FIG. 1, and manually dispensed into containers within 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 to support separate display devices for each golf bay, such as display device 470, which may include a computer processor communicatively coupled (by wire, wirelessly, or both) to a computer processor that controls what is presented on each display device, or may be a dumb terminal. In some implementations, a shared electronics hub is not included, and the display devices are individually associated with each golf bay 440A, 440B, each tee area 450 or dispenser 455 in golf bays 440A, 440B, and / or with each person in golf bays 440A, 440B, such as a portable electronic device 475, e.g., a smart phone or tablet computer. Each display device may include a touch screen device that interfaces with a central computer system for the building, e.g., building 115 in FIG. 1, to provide players with direct control over their game play, including selecting the type of game being played and the current player.

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

[0088] Therefore, the system 490 needs to determine which of the teeing areas 450A, 450B should be considered as a potential launch teeing area. In some embodiments, the system 490 generates one or more error measures for each teeing area 450A, 450B and compares them. In some embodiments, the error measures for adjacent teeing areas 450A, 450B (or golf bays) have very similar values, so such a comparison may not be useful even if an error measure for either of these adjacent teeing areas 450A, 450B (or golf bays) would be very useful for determining that it is time to confirm the origin of the golf shot. Thus, in some embodiments, 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 with respect to the current extrapolated trajectory 462. For example, the system 490 can determine which of the teeing areas 450A, 450B to consider as potential starting points for a golf shot based on the distance between the intersections of the extrapolated trajectory 462 with the geometric shapes representing the teeing areas 450A, 450B and predefined points within the teeing areas 450A, 450B. Detailed examples are provided below, but as noted above, various distance measures can 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 center points of the teeing areas 450A, 450B. Because it can be assumed that the golfer will not hit the golf ball through each other golf bay or teeing area, the system 490 can also use as a distance measure the last golf bay or teeing area that the extrapolated trajectory 462 intersects as it progresses forward. Thus, in the example intersections shown in FIG. 4B, the teeing area 450B can be designated as the launch teeing area.

[0090] Additionally, the system 490 can use other predefined (or on the fly) locations within the golf bay or teeing area to measure distances therefrom. 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 within the system based on information about the typical stance taken by a player when playing golf, or by details of the teeing area, such as the tee location within 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 will be placed 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 location HA, HB relative to the teeing areas 450A, 450B. If so, the golf shot is considered to hit that tee. If the extrapolated trajectory hits only one tee, this tee can be selected by the system 490 to determine the error measure and potential identification as a launch 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 any 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 also be applied to golf bays, such as when each golf bay has (or is) only one teeing area.

[0092] Additionally, the teeing area and / or golf bay selection is used to identify a display device on which to display a golf shot rendering or animation within 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 golf shot source and the error measure provides sufficient certainty, the golf shot information is displayed on display device 470 associated with golf bay 440A or with teeing area 450A. As another example, if teeing area 450B is selected as the golf shot source and the error measure provides sufficient certainty, the golf shot information can be displayed on display device 475 associated with golf bay 440B or with teeing area 450B or with a person associated with golf bay 440B or with teeing area 450B.

[0093] Moreover, as previously mentioned, multiple versions of each golf shot can be generated by the same golf ball sensor system 490 and / or by other golf ball sensor system(s) observing golf ball strikes from the same golf bay 440A, 440B. FIG. 5A is a flow chart illustrating another example of a process for locating the launch physical location of a golf ball detected and tracked in flight. Strike locations can be determined (560) (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) within a geometry that represents a defined physical location (e.g., relative to a golf bay, teeing area, or other physical location). These strike locations can be predefined for the system or dynamically determined, and the geometry can be three-dimensional.

[0094] As previously mentioned, the input to the system used to dynamically determine the hitting location may be information about the current golfer or camera image of the tee area. Additionally, in some implementations, the input to the system used to dynamically determine the hitting location may be input from an electronic positioning system including a mobile device and communication system associated with the golfer, such as a Global Navigation Satellite System (GNSS), e.g., a Global Positioning System (GPS), a cellular network, or other wireless network, e.g., a WiFi network. Figure 5B shows an example of a system that performs in-flight 3D tracking of a golf ball with respect to a personal mobile device for a golfer.

[0095] 5B is similar to the example of FIG 4B in that it can be used within the system of FIG 4A, where 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 areas extrapolated to a golfer, such as areas designated along a tee line. In either case, areas 510A, 510B may be generally referred to as golf bays 510A, 510B, and may have geometries that represent them so that intersections of extrapolated trajectories with these geometries are easily identifiable.

[0096] System 500 detects golf ball 540 in flight after it is 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 for clarity of illustration, the figure only represents two dimensions). Three-dimensional trajectory 546 is then extrapolated backwards 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 launch 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 obtained by the system 500 for 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 further 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 origin of the golf shot has been confirmed.

[0098] Referring again to FIG. 5A, one or more golf shot versions are generated or received (562) (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660). For example, in some implementations, each of the sensors 410A, 410B in FIG. 4A has dedicated computer hardware that processes the sensor data using a physical model for golf ball flight, extrapolates portions of the trajectory that are out of field of view (or are missed by the sensor for other reasons), and performs error measure evaluation, resulting in a discrete sensor system 410A, 410B that can receive the results from these discrete sensor systems 410A, 410B and report those results to a central computer system 420 that makes the final decision regarding which golf bay 430 should be identified as the origin of a particular golf shot. Thus, central computer 420 can receive different versions of a golf shot from each golf ball sensor system 410A, 410B, as well as two or more versions of a golf shot from the same golf ball sensor system 410A, 410B.

[0099] In some embodiments, as soon as a golf ball sensor system in a larger system starts tracking a golf ball, it periodically generates versions of that golf shot. A first version includes a first portion of the trajectory, and a second version includes all observations from the first version plus additional new observations. In some embodiments, the later version inherits the golf bays assigned to the first version. In some embodiments, the assigned golf bays are re-determined for each new version of the golf shot. In either case, the versioning process can reduce the wait time before the system begins displaying the trajectory to the golfer.

[0100] An intersection point between the extrapolated trajectory and a geometry representing two or more defined physical locations (e.g., an intersection point between the extrapolated trajectory 542 and the region 510A, 510B) is identified (564) (e.g., by the computer(s) 150, 200, 250, 410, 490, 500), and a distance between the extrapolated trajectory and a hitting location within each geometry (e.g., hitting location 530A, 530B) is determined (564) (e.g., by the computer(s) 150, 200, 250, 410, 490, 500). In some implementations, the intersection point will be found roughly, except for the extrapolated trajectory around the two ends of a complete set of golf bays in some cases, as shown in FIG. 5B. Thus, a distance calculation may be between the intersection point 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 that intersects the hit location and is perpendicular to the extrapolated trajectory.

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

[0102] One or more error measures are then calculated / updated (572) (e.g., by computer(s) 150, 200, 250, 410, 490, 500). This may involve operations 316, 318, 320, as described above with respect to FIG. 3A. A check is then made (574) (e.g., by computer(s) 150, 200, 250, 410, 490, 500) as to whether one or more error measures satisfy a predefined criterion. This may involve the operations described above for check 322 in relation to FIG. 3A. Thus, if one or more error measures do not satisfy (574) the predefined criteria, the process can wait for additional observations of the golf ball by one or more golf ball sensors, and thus, the process can wait for a next set of one or more versions of the golf shot to be generated (562) (e.g., by computer(s) 150, 200, 250, 410, 490, 500) and received (562) (e.g., by computer(s) 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 received version of the golf shot can include both an extrapolated trajectory and a confidence measure (one or more error measures) of the launch golf bay for the golf shot. Thus, each respective golf ball sensor system 410A, 410B can perform its own independent calculation of all parameters for each golf ball shot trace it finds and pass the results of that independent calculation to the central computer 420. The central computer 420 can compare the trajectory data to determine if the two golf ball sensor systems 410A, 410B are observing the same golf ball in flight, and the central computer 420 can then use the best set of trajectory data from the two sensor systems 410A, 410B according to the received confidence measures provided by the two sensor systems 410A, 410B.

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

[0105] Additionally, as previously mentioned, the defined physical location may be a tee location generally, and the golf ball sensor system may be set up within a sports stadium or arena, or on an open field, so that the defined physical location may be a point along a tee line selected by an individual golfer. In such an embodiment, there may not be an area or region clearly designated for each individual golfer, and the golfers may select locations that are very close to each other. In such cases, it may not be reasonable from the perspective of the golf ball sensor system to infer that the golfers will not hit the ball through each other's "tee area," and so there are situations in which it may be desirable to form one or more error measures (from the estimated systematic error and the estimated random error) for each of two distinct physical locations.

[0106] 6A and 6B are flow charts illustrating another example of a process for locating the launch physical location of a golf ball detected and tracked in flight. When a new golf shot is detected, a three-dimensional trajectory for the golf ball in three-dimensional physical space is determined (600) (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) based on initial observations of the identified golf ball, and the three-dimensional trajectory of the golf ball is extrapolated (602) backwards (and potentially forwards) in time (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) to generate an extrapolated trajectory. This may involve performing the physical modeling and trajectory extrapolation described above in connection with FIG. 3A, for example.

[0107] A distance measure between the extrapolated trajectory and the two or more defined physical locations is calculated (604) (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660). This may involve finding an intersection between the extrapolated trajectory and geometries representing the two or more defined physical locations and / or determining a distance to an estimated strike location (e.g., a center point) within those geometries, as discussed above, for example, in connection with FIG. 3A. In some embodiments, the distance measures are compared (606) (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) to one or more threshold distances, and the process decision flow varies based on checks 608, 610, 622 as to whether (1) neither the first nor the second distance measures meet one or more threshold distances, (2) only the first or only the second distance measures meet one or more threshold distances, or (3) both the first and second distance measures meet one or more threshold distances.

[0108] Additionally, in some implementations, process operations 604, 606, 608, 610, 622 that determine which physical locations are potentially the origin of a golf shot involve checking the intersection between the extrapolated trajectory and a geometric shape that represents two or more defined physical locations (e.g., a square, rectangle, circular sector, circle, cube, box, cuboid, 3D circular sector, cylinder, sphere, etc.) Figure 6C illustrates another example of a system that performs in-flight 3D tracking of a golf ball with respect to a personal mobile device relative to a golfer.

[0109] The example of Figure 6C is similar to the example of Figure 5B in that it can be used within the system of Figure 4A, and the golf ball sensor system 660 is similar to the golf ball sensor system 490 described above. However, in this instance, there is no area estimated for the golfer. Rather, two or more physical locations from which the golf ball is struck in three-dimensional physical space are defined by determining a strike location 670C, 675C for the golfer (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660), for example, along a tee line on the turf. To aid in this determination, signals from a mobile device 670A, 675A associated with the golfer can be obtained to determine a strike location 670C, 675C associated with that golfer. For example, the mobile devices 670A, 675A may be a GPS device, or a smartphone or tablet computer, communicating over a wireless network that enables triangulation or other device location services, such as triangulation using WiFi and / or Bluetooth beacons installed at a golf driving range to triangulate the location of a user device, as shown in FIG. 6C.

[0110] In some implementations, the location of each mobile device 670A, 675A is located (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) using data from an electronic location system, for example using WiFi and / or Bluetooth technology, and the strike location 670C, 675C is then set (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) based on the location of the mobile device 670A, 675A. Note that each strike location 670C, 675C may be offset somewhat from the location of each respective mobile device 670A, 675A based on other information. For example, determining the hit locations 670C, 675C for a golfer may involve offsetting the location of the mobile device in a first direction responsive to a given golfer being right-handed, e.g., the hit location 675C is offset to the right (in terms of the hit location for the golfer) from the location of the mobile device because the mobile device 675A is known to be associated with a right-handed golfer, and offsetting the location of the mobile device in a second direction, opposite the first direction, responsive to a given golfer being left-handed, e.g., the hit location 670C is offset to the left (in terms of the hit location for the golfer) from the location of the mobile device because the mobile device 670A is known to be associated with a left-handed golfer.

[0111] Other systems and techniques can also be used to determine the impact locations 670C, 675C associated with a golfer. In some implementations, the impact locations 670C, 675C are determined for each golfer based on sensor data acquired by the system 660 for one or more test shots by each golfer, and optionally using position data from a respective mobile device 670A, 675A associated with the golfer. As mentioned above, it should be noted that the mobile devices 670A, 675A can also be display devices to which golf shot information is transmitted once the origin of the golf shot has been identified, and these mobile devices 670A, 675A can also be used in the test shot process to determine the impact locations 670C, 675C.

[0112] For example, in some implementations, a golfer hits one or more shots that meet criteria, such as having a launch angle greater than NN degrees, e.g., greater than 18 degrees. All shots hit from the same grass tee can be displayed to the user in a 3D view looking down from the grass tee and driving range. The user selects his shot(s) in this view. The client application determines the launch locations of these shots and sends this location back to the server requesting a new shot that matches this location, which the server stores temporarily in memory. The new shot being hit from the grass tee can then be checked for intersection with a sphere (or similar geometry) centered on the location stored in memory, and the golf shot can be sent to any clients that have a matching location (i.e., where the trajectory intersects or is sufficiently close to the geometry surrounding that location) if it meets the following criteria: systematic error and random error are sufficiently small, and these errors are determined using the hitting location used as the "bay location" in the formula as in this disclosure.

[0113] In some implementations, the geometries 670B, 675B are stored only in temporary memory (e.g., on a client-side device in a golf ball tracking system) because they vary with the impact location 670C, 675C, which is determined by where each golfer happens to decide to stand when hitting the golf ball. Additionally, the determination of the impact location 670C, 675C can be done once using one or more test shots, as described above, and / or can be done continuously by tracking the movement of each golfer's mobile device and / or by using each new golf shot from the golfer to update the impact location for that golfer. In any case, once the impact locations 670C, 675C are determined, the positions of the geometric shapes 670B, 675B are specified (e.g., by the computer(s) 150, 200, 250, 420, 490, 500, 660) using the determined impact locations 670C, 675C, where, for example, each geometric shape may be a circle, a cylinder, or a sphere with the impact location at its center point. Once the positions of these geometric shapes 670B, 675B are specified, it is straightforward to identify which of those geometric shapes 670B, 675B are intersected by the extrapolated trajectory.

[0114] The system 660 detects the golf ball 665 in flight after it has been struck. From this initial observation of the golf ball 665 and one or more subsequent observations of the golf ball 665, the system 660 determines a three-dimensional trajectory 665B (note that for clarity of illustration, the diagram depicts only two dimensions). The three-dimensional trajectory 665B is then extrapolated backwards in time to generate the extrapolated trajectory 665A. In the example shown, the extrapolated trajectory 665B intersects both geometries 670B, 675B. However, this is not necessarily the case. In some situations, only one of the geometries 670B, 675B will be intersected by the extrapolated trajectory 665B. In some situations, neither of the geometries 670B, 675B will be intersected by the extrapolated trajectory 665B, and further ball observations will be required to determine which of the strike locations 670C, 675C is the launch location for the golf shot.

[0115] 6A , in some implementations, finding an intersection between the extrapolated trajectory and one or more geometric shapes (e.g., a sphere in three dimensions or a circle in two dimensions) around one or more strike locations, where the size of the geometric shape can be set according to a threshold (e.g., a radius equal to the threshold), constitutes process operations 604, 606, 608, 610, 622. In some implementations, process operations 604, 606, 608, 610, 622 involve calculating and checking one or more distance measures, or more generally, for example, first checking for an intersection and then checking a different distance measure, such as checking the distance between the intersection and the estimated strike location, as described in this disclosure.

[0116] In response to determining that neither the first nor the second distance measure(s) satisfy one or more thresholds, the process awaits additional observations of the golf ball by one or more golf ball sensors (612). The process then returns to update (600) the three-dimensional trajectory for the golf ball in three-dimensional physical space based on new observations of the golf shot. As more observations are made, the trajectory is updated and the extrapolated trajectory becomes more accurate until the distance measure(s) is satisfied for at least one of the defined physical locations, e.g., locations 670B, 675B.

[0117] In response to a determination that the first distance measure(s) does not satisfy the one or more thresholds but the second distance measure(s) satisfies the one or more thresholds, an error measure for a second of the defined physical locations is formed (614) (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) from the estimated systematic error for at least one of the initial observations of the golf ball and a random error associated with at least one of the initial observations of the golf ball, where the systematic and random errors are calculated as described above. Also as before, the one or more error measures for the second one of the defined physical locations are compared (616) to predefined criteria (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660), and if the one or more error measures do not satisfy the predefined criteria (618), the process awaits additional observations of the golf ball by one or more golf ball sensors (612), and the process returns to update (600) the three-dimensional trajectory for the golf ball in the three-dimensional physical space based on the new observations of the golf shot. Further, if the one or more error measures satisfy the predefined criteria (618), the process identifies the second one of the defined physical locations as the origin of the golf shot.

[0118] In response to a determination that the first distance measure(s) satisfies the one or more thresholds but the second distance measure(s) does not, an error measure for the first of the defined physical locations is formed (624) (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) from the estimated systematic error for at least one of the initial observations of the golf ball and a random error associated with at least one of the initial observations of the golf ball, where the systematic and random errors are calculated as described above. Also as before, the one or more error measures for the first of the defined physical locations are compared (626) to predefined criteria (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660), and if the one or more error measures do not satisfy the predefined criteria (628), the process awaits additional observations of the golf ball by one or more golf ball sensors (612), and the process returns to update (600) the three-dimensional trajectory for the golf ball in the three-dimensional physical space based on the new observations of the golf shot. Further, if the one or more error measures satisfy the predefined criteria (628), the process identifies (630) the first of the defined physical locations as the origin of the golf shot.

[0119] In response to determining that both the first distance measure(s) and the second distance measure(s) satisfy the one or more thresholds, an error measure is formed (632) for each of the first and second defined physical locations from the estimated systematic error for at least one of the initial observations of the golf ball and a random error associated with at least one of the initial observations of the golf ball (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660), the systematic and random errors being calculated as described above. Further, the one or more error measures for each of the first and second defined physical locations are compared (634) to a predefined criteria (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660). If the one or more error measures for either the first or second defined physical locations do not satisfy the predefined criteria (636), the process waits for additional observations of the golf ball by the one or more golf ball sensors (612), and the process returns to update the three-dimensional trajectory for the golf ball in the three-dimensional physical space based on the new observations of the golf shot (600). If the one or more error measures for the first defined physical location satisfy the predefined criteria (636), the process identifies the first one of the defined physical locations as the origin of the golf shot (638). If the one or more error measures for the second defined physical location satisfy the predefined criteria (636), the process identifies the second one of the defined physical locations as the origin of the golf shot (640).

[0120] In some implementations, the error measure(s) are calculated in such a way that it is not possible to simultaneously satisfy the predefined criterion for both the first and second locations. For example, the check 636 may involve comparing the error measure(s) for the first and second locations to each other, so that only the location with the best error measure(s) is selected as the starting point. Thus, the predefined criterion that is checked (618, 628, 636) can be a single criterion, e.g., a single error threshold, or two or more criteria, as discussed above.

[0121] In any event, once a launch location for the golf shot has been determined, the process presents the golf ball tracking data on a display device associated with the defined physical location identified (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) as the origin for the golf ball, for example, on a display device of one of the mobile devices 670A, 675A. Referring to FIG. 6B, the process first presents (642) the golf ball tracking data representative of the currently determined trajectory of the golf shot. This may include presenting a golf shot animation or a ball trace overlay (over a live video of the golf shot) for the golf ball in flight. After this initial presentation of the golf shot trajectory, which may be updated in real time as new ball observations are made, the presentation of the golf ball tracking data on the display device may be accompanied by the selective presentation of one or more metrics for the golf ball in flight in three-dimensional physical space based on an estimated systematic error, an estimated random error, or both an estimated systematic error and an estimated random error.

[0122] One or more golf shot metrics (e.g., ball speed, ball spin, launch angle, etc.) are calculated (644) (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) based on the sensor observations. One or more error measures for the one or more golf shot metrics are calculated (646) (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) using the estimated systematic and / or random errors, and these error measure(s) for the metrics are compared (648) to one or more thresholds (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) to determine if the threshold(s) are satisfied (650). For each metric whose error measure(s) are satisfied, that metric is presented on the display device (652) before the process updates the three-dimensional trajectory based on additional sensor observations (654) to update the trajectory data shown to the user on the display device (642). Thus, one or more different golf shot metrics are presented to the user at different times with respect to each other and with respect to the presented animation and / or trace overlay according to different error measures that incorporate systematic and probabilistic error calculations for the ball trajectory determined from observations of the ball in flight.

[0123] In other words, in cases where error estimates are used to display the metrics, they use somewhat different error measures and different thresholds so that the golf shot itself can be displayed to the user first while waiting to display one or more of the metrics. For example, the predefined threshold for random error may be different for each metric, so that it coincides with the difficulty of determining the correct value for the metric based on the available data.

[0124] Furthermore, depending on the metric, either one of systematic and random errors, or both, can be used. For example, if the metric is calculated as the difference between multiple observations (such as for ball speed), random errors can be used since the metric of interest compares subsequent trajectory points, and therefore systematic errors for subsequent points will cancel each other out; since systematic errors are the same for adjacent points, if you subtract the two numbers from each other, they will cancel out. For example, if the system has a systematic error that places all observations one inch to the right of their true position, then the speed will not be affected by this. However, if the metric depends on the absolute position of the ball, systematic errors can also be taken into account.

[0125] FIG. 7 is a flow chart illustrating an example of a process (e.g., performed by computer(s) 150, 200, 250, 420, 490, 500, 660) for selectively presenting metrics for a golf shot. A measure of error for the ball velocity is calculated (700) using the estimated random error. In some implementations, this involves using the component of the error vector for the ball velocity that is in the direction of impact with respect to three-dimensional physical space. The measure of error for the ball velocity is compared (702) to a threshold and, in response to the threshold being satisfied (704), a calculated ball velocity value for the three-dimensional trajectory for the golf ball is presented (706) on a display device.

[0126] In some implementations, the actual error in velocity e_spd in the first observation (e.g., based on random errors for the first observation) is propagated back to the physical location along with the extrapolated distance: e_spd_location=e_spd*||p0-a||. Note that the systematic and random errors in the first observation are the errors in the location of the ball at that point. Similarly, the error in the ball velocity for the first observation can be determined using a normal formula for how to calculate the ball velocity for the first observation twice, once when the systematic and random errors are zero and once at the value estimated for the point it was involved in the calculation, and then comparing the difference in ball velocities.

[0127] If we do this, we see that systematic errors do not affect the error in ball velocity because they are the same for two adjacent points (and therefore cancel out when subtracting the positions of two adjacent points to get the ball velocity), whereas random errors do not, because we cannot assume that they act in the same direction for two adjacent points. The ball velocity is the product of the first two observations, p 1 and p 0 is the norm of the difference between the points divided by the time difference between these points:

number

number

number

[0128] A measure of error for the ball spin vector is calculated using the estimated systematic error and the estimated random error (708). The measure of error for the ball spin is compared to a threshold (710) and, in response to the threshold being satisfied (712), a ball spin value calculated for the three-dimensional trajectory for the golf ball is presented (714) on a display device.

[0129] In some implementations, the spin vector error, e_spin, in the first observation, when extrapolated, is relatively constant except for a small spin decay factor, which in this case increases the spin since the trajectory extrapolation is backwards. Furthermore, a method similar to that described above for ball velocity can be used for ball spin, i.e., calculate the spin number assuming no error in position, and then compare that result to the number obtained when including error. In general, let x be a time series of observations of a golf ball, and let ω=f(x) be a function that estimates the spin vector for all observations of the ball, one vector for each time step in x. A function g is then applied to the stochastic noise, and a function h is applied to the systematic noise to the time series x, thereby estimating the spin vector for each time step x. i is:x i =p i +e i sto +e i sys It can be expressed as ω and ω ~ =h(g(x)), and |ω 0 -ω 1 ~ can be used as an estimate for the error in the spin vector at the first observation. This number can be multiplied by the spin damping factor mentioned above along with the extrapolation distance to obtain the error in the spin vector for the shot launch.

[0130] A measure of error for the launch angle is calculated (716) using the estimated systematic error and the estimated random error. The measure of error for the launch angle is compared (718) to a threshold, and in response to the threshold being satisfied (720), the calculated launch angle for the three-dimensional trajectory for the golf ball is presented (722) on a display device. In some implementations, a first component of the error vector for the launch angle that is in the hit direction with respect to the three-dimensional physical space is checked against a first threshold, and a second component of the error vector for the launch angle that is in a vertical axis, perpendicular to the hit direction, is checked against a second threshold. In some implementations, only the angle between the launch direction of the shot and the ground is checked against a single threshold.

[0131] In some implementations, since the actual launch angle error, e_la, in the first observation is already an angle error, it can be assumed that e_la does not grow with extrapolation in the same way as e_spd. As previously mentioned, the systematic and random errors in the first observation are errors in the position of the ball at that point. Similarly, the error in the launch angle can be determined by using a normal formula for how to calculate the launch angle twice, 1 degree when the systematic and random errors are zero and 1 degree when it is an estimate, and then comparing the difference in the launch angles. The launch angle is generally:

number

[0132] Note that this error does not increase with extrapolation distance due to the assumption that the extrapolation method itself continues the extrapolation in roughly the same direction as the last (or first, if extrapolating backwards) point indicated, so if there is an error in the angle there, the error in the position will increase when extrapolating, but the error in the angle itself will stay the same.

[0133] In addition, whether or not shot metrics are selectively presented, systematic and random error calculations can be used to improve the effectiveness of the object tracking system. Figure 8A is a flow chart illustrating an example of a process for determining effective coverage of one or more sensors in an object tracking system (e.g., performed by computer(s) 150, 200, 250, 420, 490, 500, 660). One or more three-dimensional trajectories for one or more ball strikes within a three-dimensional physical space (adjacent to the sensor system) are determined (800) based on observations by at least one golf ball sensor positioned adjacent to the three-dimensional physical space.

[0134] Systematic and random errors are calculated (802) for one or more three-dimensional trajectories according to variations in golf ball launch locations and / or sensor parameters. In some embodiments, a grid search pattern is used to determine which errors may be for a range of different impact locations and shot trajectories. In some embodiments, calculation 802 involves calculating systematic and random errors for at least one three-dimensional trajectory according to variations in location for at least one golf ball sensor. A similar grid search pattern can be used to determine which errors may be for a range of different sensor locations and shot trajectories. Additionally, one or more other variations in parameters for at least one golf ball sensor can be used during calculation 802.

[0135] In general, sensor parameters include position and field of view. Certain sensor types have additional parameters, such as beam width for radar devices, that affect the field of view. For example, camera-based sensors have a focal length parameter, which affects the field of view along with the camera's orientation (rotation), principal point and distortion parameters, different lens characteristics, and image capture element characteristics, such as resolution. Different sensor parameters (e.g., different positions and / or different fields of view) that improve systematic and random errors for the sensor system can be identified (804). For example, at least one different position for at least one golf ball sensor that produces lower systematic and random errors can be identified (804). As another example, different fields of view for one or more golf ball sensors can be identified (804), where these different fields of view are variations in their initial fields of view that produce lower systematic and random errors than the initial fields of view.

[0136] A report is prepared (806), for example, using the lowest values ​​of systematic and random error for the available tee positions. In some embodiments, the prepared report shows the different, improved sensor parameters. For example, a report can be prepared to show a summary of the systematic and random error calculated for at least one different position for the at least one golf ball sensor. Additionally, if there is more than one sensor in the system, a report can be prepared (806) using the lowest values ​​of systematic and random error calculated for the at least two golf ball sensors for each available tee position.

[0137] A report is presented (808) to indicate a desired hitting position and / or to indicate different, improved sensor parameters that can be used with the sensor system. FIG. 8B shows an example of a map 850 of errors for a deployed object tracking system. The map 850 shows the total estimated systematic and random errors for a typical golf shot when hit from different positions on the grass tee. It is a top-down view of the grass tee, with each position colored (or otherwise indicated) according to the error, as defined by horizontal bars 855. This map 850 can be used by a golfer who is choosing a tee position, and this map 50 can also be used by a person deciding where to place the object tracking system's sensor(s). In the latter case, that person can input the camera position and rotation, and a new map can be generated. This map can then be used to determine whether the sensor placement is good enough and whether the entire grass tee is covered by the planned system, and different sensor positions and rotations can be examined in this regard.

[0138] This example shows expected error values ​​for certain positions on a grass tee, allowing a driving range owner to physically mark areas on the grass tee that have better reliability, or allowing customers to select hitting positions that have better expected reliability, or both. This map can be calculated by dividing the grass tee into small regions and calculating the "Bay Error" for a "typical shot" for each of these regions, taking into account when these shots are in the field of view of each sensor when hit from this position when determining the parameters that go into the formula for calculating the systematic and random errors. If there are two or more tracking systems with different sensors, the errors can be calculated for each of the systems and the lowest of these values ​​can be used on the map.

[0139] In map 850, arrows 860, 865 indicate the current positions of the cameras used to determine launch position error for each position. The length of the arrows indicates the focal length of the cameras - the longer the arrow, the longer the focal length (and the shorter the field of view). The orientation of the arrows 860, 865 indicates the direction each camera is pointed. The base of the arrow is the camera position. Dot 880 indicates a measured position on the grass tee. When measuring a grass tee, the number of points to be measured to determine its shape and geometry can be defined therein. Rectangle 870 visualizes the area on the grass tee and represents the main area within which each camera system is expected to track. Note that these features are included to help the user navigate the map and put it into context. If other landmarks are measured, they may also be added to the map to help understand the situation.

[0140] It should be noted that a similar map of error can be generated using variations in sensor placement as opposed to using variations in impact location. Thus, this type of map can be used to virtually try different sensor locations and orientations to understand the pros and cons of different sensor mounting locations from the perspective of launch location error. In this case, different maps for different sensor locations and orientations can be created, for example, in a dynamic mapping and sensor reconfiguration process. Thus, a driving range owner can be given guidance as to how many sensors should be deployed in which specific locations for an object tracking system in relation to a given unstructured environment (e.g., a grass tee), thereby improving coverage in that environment, reducing the cost of the deployed system (by reducing the number of sensors required) in relation to the reliability achieved, or both.

[0141] Referring again to FIG. 8A, the sensor system can be modified (810) to use one or more different sensor parameters. For example, at least one golf ball sensor can be moved to at least one different location indicated by the report (810). As another example, the initial field of view(s) of the golf ball sensor can be adjusted (810) to a different field of view. Testing and modifying the sensor system in such a manner (to minimize random and systematic errors) can improve the reliability and coverage of the object tracking system, for example, to a grass tee area. This is true whether the object tracking system uses other types of sensor devices, such as camera sensors and / or radar devices.

[0142] The embodiments and functional operations of the subject matter described herein can be implemented in digital electronic circuitry, or computer software, firmware, or hardware, including structures disclosed herein and equivalents of those structures, or in one or more combinations thereof. The embodiments of the subject matter described herein can 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 device. The computer-readable medium can be an article of manufacture, such as a hard drive or optical disk in a computer system sold through a retail outlet, or an embedded system. The computer-readable medium can be obtained separately and later encoded with one or more modules of computer program instructions, such as by delivery of one or more modules of computer program instructions over a wired or wireless network. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, or one or more combinations thereof.

[0143] The term "data processing device" encompasses all devices, apparatus, and machines for processing data, including, by way of example, a programmable processor, computer, or multiprocessor or computer. In addition to hardware, the device may include code that creates an execution environment for the computer program in question, such as processor firmware, a protocol stack, a database management system, an operating system, code that constitutes the execution environment, or one or more combinations thereof. Additionally, the device may employ a variety of different computing model infrastructures, such as web services, distributed computing, and grid computing infrastructures.

[0144] 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 languages, declarative or procedural languages, and it can be deployed in any suitable form, including 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 in a portion 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 in question, or in multiple coordinated files (e.g., a file that stores one or more modules, subprograms, or portions of code). A computer program can be deployed to run on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.

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

[0146] Processors suitable for executing computer programs include, by way of example, both general-purpose and special-purpose microprocessors. Generally, 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. Generally, a computer also includes one or more mass storage devices, such as magnetic, magneto-optical, or optical disks, for storing data, or is operatively coupled to receive data from them, transfer data to them, or both. However, a computer need not have such devices. Moreover, a computer can be embedded within 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. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including, by way of example, semiconductor memory devices, such as EPROM (erasable programmable read-only memory), EEPROM (electrically erasable programmable read-only memory), and flash memory devices, magnetic disks, such as internal hard disks or removable disks, magneto-optical disks, and CD-ROMs and DVD-ROMs. The processor and memory may be supplemented by, or incorporated in, special purpose logic circuitry.

[0147] To provide for user interaction, embodiments of the subject matter described herein can be implemented on a computer that has a display device, e.g., an LCD (liquid crystal display), OLED (organic light emitting diode) or other monitor, for displaying information to the user, as well as a keyboard and pointing device, e.g., a mouse or trackball, by which the user can provide input to the computer. Other types of devices can also be used to provide for user interaction, e.g., feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback, and input from the user can be received in any form, including acoustic, voice, or tactile input.

[0148] A computing system may include clients and servers. Clients and servers are generally remote from each other and typically interact through a communications network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. An embodiment of the subject matter described herein may be implemented in a computing system that includes back-end components, e.g., as data servers, or middleware components, e.g., as application servers, or front-end components, e.g., client components having a graphical user interface or web browser through which a user may interact with an embodiment of the subject matter described herein, or 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).

[0149] 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. Moreover, although features may be described above as operating in a combination and even initially claimed as such, one or more features from a claimed combination may in some cases be implemented from that combination, and the claimed combination may be directed to a subcombination or variation of the subcombination. Thus, unless otherwise specified or clearly dictated otherwise by the knowledge of one skilled in the art, any feature of the aforementioned embodiments can be combined with any other feature of the aforementioned embodiments.

[0150] Similarly, although operations are shown in a particular order in the figures, this should not be understood to require that such operations be performed in the particular order or sequence shown, or that all of the illustrated operations be performed, to achieve desired results. In some situations, multitasking and / or parallel processing may be advantageous. Moreover, the separation of various system components in the foregoing embodiments should not be understood to require such separation in all embodiments, and it should be understood that the program components and systems described may generally be integrated together in a single software product or packaged into multiple software products.

[0151] 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 for baseball or skeet shooting, as well as non-sports applications. In addition, the operations recited in the claims can be performed in a different order and still achieve the desired results.

Claims

1. 1. A system comprising: two or more defined physical locations from which a golf ball is to be launched into 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, 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 providing to the at least one hardware processor: determining a three-dimensional trajectory for a golf ball within the three-dimensional physical space based on initial observations of the golf ball by the one or more golf ball sensors; extrapolating the three-dimensional trajectory of the golf ball backward in time to generate an extrapolated trajectory; calculating a distance measure between the extrapolated trajectory and the two or more defined physical locations; if none of the distance measures meet a threshold distance, waiting for an additional observation of the golf ball by the one or more golf ball sensors; If only one of the distance measures satisfies the threshold distance, forming an error measure for one of the two or more defined physical locations from an estimated systematic error for at least one of the initial observations of the golf ball by the one or more golf ball sensors and an estimated random error associated with at least one of the initial observations of the golf ball by the one or more golf ball sensors, the error measure corresponding to only one of the distance measures; identifying one of the two or more defined physical locations as an origin for the golf ball if the error measure satisfies a predefined criterion; if the error measure does not satisfy the predefined criteria, waiting for additional observations of the golf ball by the one or more golf ball sensors; If two of the distance measures satisfy the threshold distance, forming a first error measure for a first of the two or more defined physical locations from the estimated systematic error and the estimated random error, the first error measure corresponding to a first of two of the distance measures; forming a second error measure for a second of the two or more defined physical locations from the estimated systematic error and the estimated random error, the second error measure corresponding to a second of two of the distance measures; identifying a first one of the two or more defined physical locations as an origin for the golf ball if the first error measure satisfies the predefined criterion and the second error measure does not satisfy the predefined criterion; identifying a second one of the two or more defined physical locations as an origin for the golf ball if the second error measure satisfies the predefined criterion and the first error measure does not satisfy the predefined criterion; if neither the first error measure nor the second error measure meets the predefined criteria, waiting for additional observations of the golf ball by the one or more golf ball sensors. a computer encoding instructions configured to cause the computer to perform operations including: A system comprising:

2. 2. The system of claim 1, wherein the operations include presenting golf ball tracking data on a display device associated with a defined physical location identified as an origin for the golf ball, and the presenting includes selectively presenting one or more metrics for the golf ball in flight within the three-dimensional physical space based on the estimated systematic error, the estimated random error, or both the estimated systematic error and the estimated random error.

3. Selectively presenting the one or more metrics may include: calculating a measure of error for the ball velocity using the estimated random error; and presenting, on the display device, a ball velocity value calculated for a three-dimensional trajectory for the golf ball if the error measure for the ball velocity is below a threshold; The system of claim 2 , comprising:

4. Selectively presenting the one or more metrics may include: calculating a measure of error for a ball spin vector using the estimated systematic error and the estimated random error; presenting on the display device a ball spin value calculated for a three-dimensional trajectory for the golf ball if a measure of error for the ball spin vector is below a threshold; The system of claim 2 , comprising:

5. Selectively presenting the one or more metrics may include: calculating a measure of error for launch angle using the estimated systematic error and the estimated random error; presenting on the display device a calculated launch angle for a three-dimensional trajectory for the golf ball if the measure of error for the launch angle is below a threshold; The system of claim 2 , comprising:

6. 3. The system of claim 2, wherein presenting the golf ball tracking data on a display device associated with a defined physical location identified as an origin for the golf ball includes presenting the one or more metrics at a time different than presenting a golf shot animation or ball trace overlay for the golf ball in flight within the three-dimensional physical space.

7. The system of claim 1 , wherein calculating the distance measure comprises checking an intersection between the extrapolated trajectory and a geometric shape representing the two or more defined physical locations.

8. The operation is determining strike locations for two or more golfers to define two or more physical locations from which a golf ball is to be struck within said three-dimensional physical space; specifying a location of the geometric shape using the strike location; The system of claim 7 , comprising:

9. The system of claim 8 , wherein determining the hitting location includes using input from at least one electronic location system in communication with mobile devices of the two or more golfers.

10. Determining the striking position includes: locating a given golfer's mobile device using said at least one electronic location system; offsetting a position of the mobile device in a first direction in response to the given golfer being right-handed to determine a hitting location for the given golfer; offsetting a position of the mobile device in a second direction opposite the first direction in response to the given golfer being left-handed to determine a hitting location for the given golfer; The system of claim 9 , comprising:

11. 1. A method comprising: determining a three-dimensional trajectory for a golf ball within a three-dimensional physical space based on an initial observation of the golf ball by one or more golf ball sensors, wherein there are two or more defined physical locations from which the golf ball is launched into the three-dimensional physical space, the one or more golf ball sensors being positioned with respect 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; extrapolating the three-dimensional trajectory of the golf ball backward in time to generate an extrapolated trajectory; calculating a distance measure between the extrapolated trajectory and the two or more defined physical locations; if none of the distance measures meet a threshold distance, waiting for an additional observation of the golf ball by the one or more golf ball sensors; If only one of the distance measures satisfies the threshold distance, forming an error measure for one of the two or more defined physical locations from an estimated systematic error for at least one of the initial observations of the golf ball by the one or more golf ball sensors and an estimated random error associated with at least one of the initial observations of the golf ball by the one or more golf ball sensors, the error measure corresponding to only one of the distance measures; identifying one of the two or more defined physical locations as an origin for the golf ball if the error measure satisfies a predefined criterion; if the error measure does not satisfy the predefined criteria, waiting for additional observations of the golf ball by the one or more golf ball sensors; If two of the distance measures satisfy the threshold distance, forming a first error measure for a first of the two or more defined physical locations from the estimated systematic error and the estimated random error, the first error measure corresponding to a first of two of the distance measures; forming a second error measure for a second of the two or more defined physical locations from the estimated systematic error and the estimated random error, the second error measure corresponding to a second of two of the distance measures; identifying a first one of the two or more defined physical locations as an origin for the golf ball if the first error measure satisfies the predefined criterion and the second error measure does not satisfy the predefined criterion; identifying a second one of the two or more defined physical locations as an origin for the golf ball if the second error measure satisfies the predefined criterion and the first error measure does not satisfy the predefined criterion; if neither the first error measure nor the second error measure meets the predefined criteria, waiting for additional observations of the golf ball by the one or more golf ball sensors; A method comprising:

Citation Information

Patent Citations

  • A method and system for determining the landing position of a falling golf ball.

    JP2010504786A

  • Golf ball tracking system

    JP2018502688A

  • System for tracking multiple projectiles

    JP2019530852A

  • Three dimensional object tracking using combination of radar speed data and two dimensional image data

    US10898757B1

  • Multiple sensor tracking system and method

    US20160059072A1