Trajectory extrapolation and origin determination for object tracked in flight and sensor coverage determination
The system accurately identifies the origin of golf balls in flight by calculating systematic and random errors, addressing the challenge of incorrect assignments and delays in existing tracking systems, enhancing golfer experience and reducing system complexity and costs.
Patent Information
- Application Number
- JP2025087156
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2021-07-20
- Filing Date
- 2025-05-26
- Publication Date
- 2025-08-20
- Estimated Expiration
- 2042-06-27
AI Technical Summary
Existing golf ball tracking systems struggle to accurately identify the origin of a golf ball when multiple golfers hit from adjacent locations, leading to incorrect assignments and delayed identification, especially in unstructured environments like open fields or driving ranges.
A system that uses multiple sensors to determine a golf ball's three-dimensional trajectory, calculates systematic and random errors, and identifies the origin by extrapolating the trajectory backward in time, accounting for both systematic and random errors to quickly and accurately assign the launch location.
The system reduces incorrect assignments and delays by estimating and mitigating errors, allowing for rapid and precise identification of the golf ball's origin, even in complex environments, thus improving golfer experience and reducing system complexity and costs.
Smart Images

Figure 2025122141000001_ABST
Abstract
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] U.S. 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 golf balls as they are struck or after they are in flight. As explained in U.S. 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. Furthermore, even if the camera cannot "see" the ball on the tee, the specific tee box origin of the ball in flight can be determined. Additionally, U.S. Patent Publication No. 20180011183 describes a system for tracking multiple projectiles using radar, in which one or more radar devices are positioned to maximize the 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 a central computer can trace the trajectory of each object backward to identify the hitting bay from which each object was launched. Summary of the Invention
[0003] This specification describes techniques related to tracking an object in flight, 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 within 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 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 distance measures between the extrapolated trajectory and the two or more defined physical locations; and, if none of the distance measures satisfy 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 two or more defined physical locations corresponding to only one of the distance measures from the estimated systematic error for at least one of the initial observations of the golf ball by the one or more golf ball sensors and the estimated random error associated with 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 the predefined criteria, 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 criteria, the one or more golf ball sensors wait for 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 wait for 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 in three-dimensional physical space based on an estimated systematic error, an 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 an error measure for ball velocity using the estimated random error, and presenting, on a display device, a ball velocity value calculated for the three-dimensional trajectory for the golf ball if the error measure for ball velocity is below a threshold. Selectively presenting the one or more metrics may include calculating an error measure for 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 the three-dimensional trajectory for the golf ball if the error measure for ball spin vector is below a threshold. Selectively presenting the one or more metrics may include calculating an error measure for launch angle using the estimated systematic error and the estimated random error, and presenting, on a display device, a launch angle calculated for the three-dimensional trajectory for the golf ball if the error measure for launch angle is below a threshold.
[0007] Presenting the golf ball tracking data on a display device associated with the defined physical location identified as the origin for the golf ball may include presenting one or more metrics at different times than presenting a golf shot animation or ball trace overlay for the golf ball in flight within three-dimensional physical space.
[0008] Calculating the distance measure may include checking an intersection between the extrapolated trajectory and a geometric shape representing 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 three-dimensional physical space, and specifying the 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 two or more golfers. Further, determining the hitting location may include locating the mobile device of a given golfer using the at least one electronic location system, offsetting the 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 the 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 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 the operations described above.
[0011] Additionally, one or more aspects of the subject matter described herein can 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, variations 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 impact location, a different location for the at least one golf ball sensor, or both. These and other embodiments can 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 lower systematic and random errors, and the presenting may include presenting a report summarizing the calculated systematic and random errors for the at least one different position for the at least one golf ball sensor.
[0013] The method / operation may include moving at least one golf ball sensor to at least one different position. 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 positioned adjacently in three-dimensional physical space, and the method / operation 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 position.
[0014] The parameter 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 a 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 field 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 field 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 the stereo calibration error for the stereo camera as an estimated error in a calibrated rotation of the stereo camera. Further, 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 that implement 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 accurately, identified, even when the 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 long after the golf shot is hit. This can occur when the golf ball tracking system begins tracking the golf ball slower than usual 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, the error associated with the first point in each trajectory for a detected golf shot can be estimated, and an evaluation can be made of how that error affects launch location selection. This can involve estimating the error in two parts: (1) a systematic error, which affects the position error for the extrapolated point back to the launch location in the same way as for the first point, and (2) a random error, which affects the angle of the extrapolated trajectory resulting from the point in each trajectory with random position error. The systematic error can be calculated by estimating the vector value error of the first observed position 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 angular error of the first observed position of the trajectory to determine how much this error may affect the backward 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. By accounting for these two types of errors, 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. [Effects of the Invention]
[0018] Additionally, 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, 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, systematic and random error calculations can be used to improve the golfer's experience and / or improve object tracking system setup, thereby facilitating the deployment of effective systems using 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 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, requiring fewer components to be placed near 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 recreation facility. Moreover, fewer tracking systems reduces the overall complexity of the system from a software perspective, especially if the golf facility is fully covered by 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 explanation of the drawings]
[0021] [Figure 1] 1 shows 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 one golf bay among two or more golf bays as the origin of a golf shot. [Figure 3A] 1 is a flowchart illustrating an example process for determining the launch physical location of a golf ball detected and tracked in flight. [Figure 3B] 1 illustrates 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 random errors caused by noise in sensor readings. [Figure 3E] An example of how random error affects the error in 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 illustrates an example of a system that performs in-flight 3D tracking of a golf ball relative to a layout for a golf bay, such as may be used in the system of FIG. 4A. [Figure 5A] 10 is a flowchart 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] 10 is a flowchart illustrating another example of a process for locating the launch physical location of a golf ball detected and tracked in flight. [Figure 6B] 10 is a flowchart 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] 10 is a flowchart illustrating an example 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 INVENTION
[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 its flight through three-dimensional space. In this example, 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 while building 115 is shown as a rectangle in FIG. 1 , a typical implementation has a curved portion of the building facing driving range 110, such that the golf bays form a crescent shape. Targets 120 may include radio frequency identification (RFID) tag interrogators that read RFID tags on golf balls struck from golf bays 130 located on two or more levels of building 115. Additionally, one or more of targets 120 may include discrete sections of netting that funnel golf balls to respective RFID reader 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 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 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 sand bunkers. Note that such hazards need not contain actual water or sand but may simply be colored to resemble water or sand. The driving range 110 may be comprised of real grass or artificial turf. Moreover, the targets may be grouped 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 target and a rectangular shape for the groove targets at the end 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 embodiments, no specific target in three-dimensional space is required, and / or no building is required. For example, golf ball sensor systems 140, 150 can be installed on an open field or in a sports stadium or arena.
[0025] Generally, golf ball sensor systems 140, 150 are used to identify where a golf ball was struck from among a plurality of defined physical locations 130. Golf ball sensor systems 140, 150 include at least one golf ball sensor 140 and at least one computer 150 communicatively coupled to golf ball sensor 140. Golf ball sensor 140 can be one or more sensors of one or more different types. For example, golf ball sensor(s) 140 can be optical sensors (e.g., a stereo camera or two cameras operated together to provide a stereoscopic view of the golf ball in flight), radar sensors, 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 a dimension perpendicular to the plane for, for example, the camera observation during each flight 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 camera observation during flight. 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 defined physical location 130. In some implementations, golf ball sensor(s) 140 are positioned such that the sensors do not allow the sensors to observe the golf balls at the moment of their launch from 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 embodiments, the golf ball sensor(s) 140 are positioned to allow 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 be unavailable. 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 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 enables golf ball sensor(s) 140 to provide data to computer(s) 150, a wireless connection that enables 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 independently / separately detects and tracks golf balls in three-dimensional space, thereby providing individual trajectory predictions based on separate observations of the same golf ball traveling 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. Note that 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 about the golf shot (e.g., simulated golf shot animation within a virtual golf game and / or ball trace overlay within an augmented reality golf shop viewer) to display devices associated with the physical locations 130. In either case, computer(s) 150 include at least one hardware processor and at least one memory device coupled with the at least one hardware processor, which are 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 embodiments, the three-dimensional space is not a driving range, as shown. 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 a 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 embodiments, 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. References herein to a "golf bay" should be understood to include tee areas or tee locations in general, unless the embodiment is explicitly described as being limited to a golf bay having two or more tee areas 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 systems 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 three-dimensional trajectory 212 (note that for clarity of illustration, the diagram represents only two dimensions). Three-dimensional trajectory 212 is then extrapolated backward 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 for the golf shot.
[0032] Measuring and estimating golf ball trajectories is useful in numerous applications to enhance the golfing 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 either 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 costs associated with having a dedicated sensor system for each golf bay, the trajectory estimation system should be able to accommodate multiple golfers simultaneously and thus distinguish which shots were hit by which golfers. In the example shown in FIG. 2A , system 200 could wait for more observations of 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 system 200 identifies the launch golf bay for a golf shot, the greater the likelihood of incorrectly identifying which of 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 having 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 having trajectories that are more difficult to distinguish as having been launched from one of two adjacent golf bays. The systems and techniques described herein enable the elimination of this undesirable trade-off, thereby avoiding both (1) and (2).
[0033] FIGURE 2B is a schematic diagram of a data processing system including a data processing device 250 that identifies one golf bay among two or more golf bays as the origin of a golf shot. Data processing device 250 can be connected to one or more computers 290, display devices 290, or both through a network 280. While only one computer is shown as data processing device 250 in FIGURE 2A, multiple computers can be used. Thus, one or more of golf ball sensor systems 140, 150, 200, 410, 420, 490, 500 from FIGS. 1, 2A, 4A, 4B, 5, and 6C can be implemented using 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 operating 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 across 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 operational speed. 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 of golf ball flight to extrapolate portions of the trajectory that are outside the field of view of the sensors or are missed by the sensors 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, e.g., via a network 280. Thus, in various implementations, the described processes may be performed in parallel or serially, such as on single or multi-core computing machines and / or on computer clusters / clouds.
[0036] Examples of user interface devices 260 include a display device, a touchscreen display device, a camera, a speaker, a microphone, a haptic feedback device, a keyboard, and a mouse. Data processing device 250 can store instructions implementing the operations detailed in this disclosure on computer-readable medium 256 or one or more additional devices 254, such as, for example, a floppy disk drive, a hard disk drive, an optical disk drive, a tape drive, and / or a solid-state memory device. Generally, computer-readable medium 256 and one or more additional devices 254 storing instructions are examples of at least one memory device encoding instructions configured to cause at least one hardware processor to perform the operations detailed in this disclosure.
[0037] The additional device(s) 254 may also include one or more sensors 140, 410, such as when the sensor and computer are integrated together in an integrated 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 bay, a measure of confidence in the proposed launch bay (one or more error measures), 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 independently in three-dimensional physical space and reports those results to another data processing device 250 that determines which results to use and which golf bay 220A, 220B to identify as the launch golf bay, and this information can be communicated to a computer / display device 290, which may be a disk drive placed within the identified golf bay or a data processing device 250 (e.g., a smartphone or tablet computer) held by a person within the identified golf bay.
[0038] FIG. 3A is a flowchart illustrating an example process for locating the launch physical location of a golf ball detected and tracked in flight. Note that this is merely an example, and the described operations can be performed in a different order and still achieve desirable results. An observation of a golf ball is identified (300) within 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 locate data indicative of a golf ball based on predefined criteria for the sensor type(s). For example, for radar data, a ball velocity criterion can be used according to a known velocity range for the golf ball, corresponding to an expected velocity for a golf shot that was just hit or that was 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] Observations of the golf ball are 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. For camera data, a golf shot can be detected (302) when a series of candidate balls across a set of video frames meets or exceeds one or more established criteria for a golf shot. In some implementations, analysis of the image data involves automatic adjustment of one or more thresholds (e.g., 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 has been received.
[0040] For radar data, a ball speed criterion can be used to ensure that radar time series only originate within a certain speed range, corresponding to the range of possible speeds for a golf ball (e.g., 10 to 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 is received in real time, additional criteria can be used across those measurements. For example, a series of radar measurements of a golf shot should exhibit a decreasing speed over time, and this fact can be used to identify golf shots within the radar data. Thus, golf balls detected at unexpected distances or speeds, as well as other objects such as birds and airplanes, can be easily ignored.
[0041] Moreover, when two or more sensor types are used, data from the different sensor types can be used to enhance the detection and tracking of golf shots. For example, if a golf shot is identified in the radar data, a signal can be sent to trigger adjustment of one or more criteria used in analyzing image data from the camera. This allows the analysis to assist in selecting a set of object identifications corresponding to the golf shot, thus increasing the likelihood of identifying the golf shot. Note that interaction 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] Note that when radar is used in combination with optical tracking, e.g., using the depth distance calculations described above, correlating radar ball speed with the correct optical tracking may involve designing or programming (e.g., via mode setting) the radar device to report the speeds of multiple objects with every measurement. Thus, rather than choosing the fastest speed (or strongest return) and transmitting only that speed, the radar device can be configured to report the speed of the fastest object, or the object with the strongest radar return. Using such an operational 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, testing all received velocities against the model-predicted speeds; and (3) if any of the reported velocities fall within a threshold distance of the predicted ball speed in the existing radar time series model, a value is added to that series, the model is updated, and the system waits for the next set of measurements. Nevertheless, 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, which 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 applied to three-dimensional coordinates in 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 embodiments, 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 more. 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) backward in time (and potentially forward) (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 could 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., square, rectangle, circular sector, cube, box, cuboid, 3D circular 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 predefined teeing area within a golf bay, or 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 point 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 point of the geometry. The distance measure(s) can also take into account the geometric relationship 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] To address errors in observing the trajectory and in extrapolating the trajectory back to the location of the golf bay, a measure of certainty can then be determined for the calculated distance measure(s) for use in determining whether and when to identify the golf bay as the origin of the golf shot. As shown in FIG. 2A , this can be particularly important when the extrapolated trajectory of the golf shot intersects both bays at similar distances to their center points, especially if there are more than one tracking system on 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 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] Note 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 can be calculated to determine which golf bays should be considered potential launch bays, and a second distance measure can be calculated for use in generating the error measure for that selected golf bay. Additionally, one or more error measures can 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 the focal length of the cameras and a parallax 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 errors 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] Systematic errors generally result in some kind of offset, affecting two consecutive 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 systematic errors can be estimated for any observation 316SO of the golf ball, all that is required is an estimate of the error vector e1 for the first observation of the golf ball, which 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 the 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 bay 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 to have the following effects in a stereo camera system: (1) error in focal length, which increases linearly as a person moves toward the edge (error proportional to the distance r to the principal point of the image), from zero at the principal point of the image to some large amount of error; and (2) error in distortion coefficients, which increases polynomially 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 center of the image and increase linearly as one moves toward the edge of the image. Note that the system can employ a distortion model that attempts to remove all of these errors. However, distortion models 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 from the camera to the point, 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. Therefore, the second of these effects can be safely ignored. It is the more significant portion of the residual errors that should 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 e1 for one or more observations of a golf ball can be calculated according to the following formula:
number
number
number
[0057] How much the error vector e1 influences the error of the golf bay estimation is determined by the direction of the error vector e1 compared to the (hit) direction, as shown in Figure 3C, where e is the error vector e1 that influences the golf bay selection. bay This is part of:
number
number
[0058] 3D shows an example of random error caused by noise in the sensor readings. Random error 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 the two-dimensional (2D) tracking operation that cause pixel errors in the image coordinates of the golf ball observations, errors in 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 angular error between the first and last observation points, which causes the physical model to perform a backward extrapolation slightly in the wrong direction.
[0059] Thus, random errors affect different portions of the observed trajectory differently, and the error in each observation of the golf ball is independent of the error in previous observations. As shown in the example of FIG. 3D , the error between the actual position 316B of the ball observed by the sensor and the observed position 318S is inconsistent. The extrapolation algorithm used to determine the golf ball's trajectory is based on physical forces acting on the golf ball, and therefore, the algorithm attempts to estimate changes in the state of the golf ball between time steps. This means that it is more sensitive to relative errors between data points. Therefore, this position error between the ball's unobserved actual position 316BE in the golf bay 316GB and the extrapolated ball position 318S can be significantly different from the position error between any given actual ball position 316B and its observation 318S.
[0060] As with systematic errors, random error estimation can begin at the first (or later) observation point. Generally, random error can be estimated for any point in the trajectory, but in many embodiments, random error estimation begins at the first point in the trajectory because the accuracy and usefulness of the data likely decreases the 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 angular error because the extrapolation algorithm is more affected by angular error at the first point (or later point) than by offset (position error). Furthermore, 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: calculate the magnitude M of the error vector e1 for the first observation of the golf ball to determine the length L (either time or space) over which the golf ball is 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 assumed to be perpendicular to the direction of travel of the golf ball at the first (or later) observation position. Therefore, 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 e1 for the first observation of the golf ball 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). Furthermore, 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 that 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 portion of this error that is of interest is the portion perpendicular to the direction of impact, which 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 later observation position. In general, the random error estimate can be calculated using two or more of the first, second, third, fourth, and later 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 not calculated with respect to p0 and p1, but rather with respect to p0 and p1. n where n depends on the number of available observations. Furthermore, the error can be added to p0 instead of p1, and the angle β at p1 can be calculated, which yields very similar results. Thus, the total random disparity error can be estimated, and then errors in the 2D tracking are assumed to be the only source of this error.
[0067] Another way to estimate how the angle β may affect random errors in the bay is to construct a function f(β,r) that describes how the angular error β and extrapolation distance r affect the error in the bay. For example, f(α) = 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 extrapolation may have on the error, where the value of z is determined experimentally. Other approaches to approximating how extrapolation is affected by angular error are also possible. However, it should be noted that the relationship is not linear, i.e., it is not just angle multiplied by 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 rectangular, the effective width of that rectangle will be reduced when this shape is seen from the field of view. 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] In general, however, separate treatment of systematic versus random errors (same versus increasing errors in bay position) results in improved system performance, regardless of the specific golf bay geometry and the specific sources of error identified in a given implementation. Although the formulas for calculating the actual errors differ when using different types of sensors, e.g., radar sensors versus stereo camera sensors, 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 relative to the ball can be expected. Additionally, random errors in 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 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 observation / measure in the same direction. If it can be shown that this is not the case, the errors may be combined differently. Additionally, 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 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 criteria (322). If one or more error measures do not satisfy the predefined criteria (322), the process can wait for additional observations of the golf ball by one or more golf ball sensors. Thus, the process can 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 may not be immediately displayed to the user because the first version may be safely discarded if the same (or another, redundant) system provides a new version of the golf shot with a lower error within a short time frame. Note that while FIG. 3A shows that the systematic and random errors are similarly recalculated (316, 318), in some embodiments, one or both of the systematic and random errors need not 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 in 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 embodiments, 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) can use information about the entire trajectory to calculate the complete, combined (320) error in the starting position of the ball in the golf bay.
[0073] Additionally, the predetermined criterion that is checked (322) can be a single criterion, such as a single error threshold, or two or more criteria. For example, in the case where two error measures are determined for two respective golf bays and both of these error measures are below an error threshold, the two error measures can be compared (322) to each other 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 that golf shot, the first detector for 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 two or more golf ball tracking systems, while 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 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 more typical cases.
[0075] FIG. 4A shows an example of a system 400 that performs 3D tracking of a golf ball during its flight through a three-dimensional space. Two or more sensors 410 are communicatively coupled (either 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 typically a set of sensors 410 is installed to cover the entire three-dimensional space (e.g., the entire golf driving range). Additionally, the number of sensors 410 can be increased to provide redundancy of coverage for that space, e.g., 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 enable distinguishing between launch golf bays on different floors of the building. Furthermore, each sensor 410 (or 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 the trajectory that are outside the field of view or missed by the sensor for other reasons. Note 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 struck 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 golf shot 412 and detect golf shot 412, but may not have enough confidence in the originally identified launch bay (a first error threshold is not met) to cause golf shot 412 to appear in any of golf bays 430. Additional observations of golf shot 412 may then be acquired by the first discrete golf ball sensor system 410A, 420 before the second discrete golf ball sensor system 410B, 420 even detects golf shot 412. Thus, the updating of the 3D trajectory based on additional observations, the extrapolation of this updated trajectory backward 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 the 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 golf bay 432 as the origin for golf shot 412 if the updated error measure(s) satisfy a predefined criteria, e.g., a second, simpler error threshold (as used for the first check). Using such a simpler error threshold is advantageous in this case because the second discrete golf ball sensor system 410B, 420 may never actually detect golf shot 412. Moreover, even if later versions of golf shot 412 captured by the first discrete golf ball sensor system 410A, 420 do not significantly improve 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 predetermined time horizon.
[0079] In some embodiments, multiple systems simultaneously track golf balls and deliver new versions at specified intervals. A stricter threshold is used for a first version of a detected golf shot, meaning a second tracking system has time to deliver its first version before the first tracking system delivers its second version of the golf shot. Only if the first version from a system passes the stricter threshold is that version of the golf shot used to determine the launch golf bay. This helps reduce latency while also ensuring that bay selection is not based on an inaccurate shot version when a better shot version is readily available.
[0080] For example, a first system 410A, 420 may identify an initial observation of golf shot 414 and detect golf shot 414, but may not have enough confidence in the initially identified launch bay (a first error threshold is not met) to cause golf shot 414 to appear in one of golf bays 430. Additional observations of golf shot 414 may then be obtained by a 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 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 backward in time, calculates discrete distance measure(s) between the discrete extrapolated trajectory and golf bay 434 and golf bay 436, estimates discrete systematic error and discrete stochastic error, integrates the discrete estimated systematic error and discrete estimated stochastic error to form discrete error measure(s) for the discrete distance measure(s), and can identify one of golf bay 434 and golf bay 436 as the origin for golf shot 414 if a first error threshold is satisfied.
[0081] Thus, between the time the first system 410A, 420 initially detects 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 golf shot 414, the second system 410B, 420 can detect 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 initially 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 small 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 criterion (322), then one of the two or more defined physical locations is identified (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) as an origin for the golf ball (324). 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 in 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 the first level may have direct access to a driving range, while golf bays on higher levels typically have safety netting extending horizontally away from the building to prevent injury if a person accidentally falls from the front of the bay. Additionally, each golf bay may include one or more tee-off locations.
[0084] 4B shows 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 layout 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 golf bays 440A, 440B can include two teeing locations, each including a teeing area 450 and a golf ball dispenser 455. Each golf ball dispenser 455 can be directly connected to a pneumatic tube system so 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 in FIG. 1, and manually dispensed into containers within golf ball dispenser 455.
[0086] The two golf bays 440A, 440B can share an electronics hub, which can include various power lines and cables to support a separate display device for each golf bay, such as display device 470, which can include a computer processor communicatively coupled (by wire, wirelessly, or both) to control what is presented on each display device, or can be a dumb terminal. In some implementations, a shared electronics hub is not included, and display devices are individually associated with each golf bay 440A, 440B, each teeing area 450 or dispenser 455 within golf bays 440A, 440B, and / or each person within golf bays 440A, 440B, such as a portable electronic device 475, e.g., a smartphone or tablet computer. Each display device can include a touchscreen device that connects with a central computer system for the building, e.g., building 115 in FIG. 1 , to provide players with direct control over their gameplay, including selecting the type of game being played and the current player.
[0087] In either case, 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 it 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 diagram depicts only two dimensions). Three-dimensional trajectory 464 is then extrapolated backward in time to generate extrapolated trajectory 462, which intersects both teeing area 450A within golf bay 440A and teeing area 450B within golf bay 440B. Thus, from an initial observation, it is not readily recognizable which golf bay 440A, 440B and which teeing area 450A, 450B should be identified as the physical launch location for the golf shot.
[0088] Therefore, the system 490 needs to determine which of the tee areas 450A, 450B should be considered as a potential launch tee area. In some embodiments, the system 490 generates one or more error measures for each tee area 450A, 450B and compares them. In some embodiments, the error measures for adjacent tee areas 450A, 450B (or golf bays) have very similar values, so such a comparison may not be useful, even if the error measure for either of these adjacent tee areas 450A, 450B (or golf bays) would be very useful for determining when it is time to confirm the origin of the golf shot. Therefore, in some embodiments, the system 490 selects only one of the tee areas 450A, 450B based on one or more calculated distance measures and generates one or more error measures for only the selected tee area relative 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 embodiments, system 490 compares distances DA, DB between (1) the intersections of extrapolated trajectory 462 with teeing areas 450A, 450B and (2) the midpoints or center points of 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, system 490 can also use the last golf bay or teeing area that extrapolated trajectory 462 intersects as it progresses forward as a distance measure. Thus, in the example intersections shown in FIG. 4B , 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 from. 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 indicates 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 embodiments, the system 490 checks whether the extrapolated trajectory 462 is within a predefined distance of the hitting locations HA, HB relative to the teeing areas 450A, 450B. If so, the golf shot is considered to have hit that tee. If the extrapolated trajectory hits only one tee, the system 490 can select this tee to determine an error measure and potential identification as the launch tee. If the extrapolated trajectory hits more than one tee based on the predefined distance, the system 490 can select the last teeing 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 teeing area intersected. Note 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 accuracy, the golf shot information is displayed on display device 470 associated with golf bay 440A or teeing area 450A. As another example, if teeing area 450B is selected as the golf shot source and the error measure provides sufficient accuracy, the golf shot information can be displayed on display device 475 associated with golf bay 440B or teeing area 450B, or a person associated with golf bay 440B or teeing area 450B.
[0093] 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 flowchart illustrating another example 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 representing 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, input to the system used to dynamically determine the impact location may be information about the current golfer or camera images of the tee area. Additionally, in some implementations, input to the system used to dynamically determine the impact 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 golfer's personal mobile device.
[0095] The example of Figure 5B is similar to the example of Figure 4B in that it can be used within the system of Figure 4A, and golf ball sensor system 500 is similar to golf ball sensor system 490 described above. Regions 510A, 510B may be golf bays or teeing areas, or may simply be areas extrapolated to a golfer, such as designated areas along a tee line. In either case, regions 510A, 510B may be generally referred to as golf bays 510A, 510B, and may have geometric shapes that represent them so that intersections of extrapolated trajectories with these geometric shapes 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 diagram represents only two dimensions). Three-dimensional trajectory 546 is then extrapolated backward in time to generate extrapolated trajectory 542, which intersects both golf bay 510A and golf bay 510B. Thus, system 500 must determine which of regions 510A, 510B to consider as a potential launch area.
[0097] To aid in this determination, signals from mobile devices 520A, 520B associated with golfers within the respective golf bays / areas 510A, 510B can be acquired to determine impact 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 enables triangulation or other device location services, as shown in FIG. 5B . In some implementations, impact locations 530A, 530B are established for each golfer based on sensor data acquired 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 impact locations 530A, 530B can then be used as described above or in further detail below in connection with FIG. 5A . Note 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] 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 embodiments, 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 missed by the sensor for other reasons), and performs error measure evaluation, resulting in discrete sensor systems 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 within a larger system begins 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, later versions inherit 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 geometries representing two or more defined physical locations (e.g., the intersection point of the extrapolated trajectory 542 and regions 510A, 510B) is identified (564) (e.g., by computer(s) 150, 200, 250, 410, 490, 500), and a distance between the extrapolated trajectory and a hit location within each geometry (e.g., hit locations 530A, 530B) is determined (564) (e.g., by computer(s) 150, 200, 250, 410, 490, 500). In some implementations, the intersection point will be found roughly, except for the extrapolated trajectory around two ends of a complete set of golf bays in some cases, as shown in FIG. 5B. Thus, a distance calculation can be between the intersection point and the defined hit 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 set empirically for a given implementation, e.g., 40 centimeters. If only one of these calculated distances to the impact location passes (i.e., is below) the threshold, 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, 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 with respect 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 the 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, central computer 420 can receive different versions of a golf shot from each golf ball sensor system 410A, 410B, each having a different perspective 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 ball 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 central computer 420. Central computer 420 can compare the trajectory data to determine whether the two golf ball sensor systems 410A, 410B are observing the same golf ball in flight, and 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, and as previously mentioned, the criteria may change with each check 574. Further, 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 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 can be a tee location generally, and the golf ball sensor system can be set up in a sports stadium or arena, or on an open field, so the defined physical location can be a point along a tee line selected by an individual golfer. In such an embodiment, there may not be a clearly designated area or region for each individual golfer, and 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 golfers will not hit balls through each other's "tee areas," and therefore, there are situations in which it may be desirable to form one or more error measures (from estimated systematic error and estimated random error) for each of two different physical locations.
[0106] 6A and 6B are flowcharts 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) backward in time (and potentially forward) (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, for example, in connection with FIG. 3A .
[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 impact location (e.g., a center point) within those geometries, as described above, for example, in connection with FIG. 3A. In some implementations, 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 measure meets 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 for intersections between the extrapolated trajectory and geometric shapes that represent two or more defined physical locations (e.g., square, rectangle, circular sector, circle, cube, box, cuboid, 3D circular sector, cylinder, sphere, etc.) Figure 6C shows 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.
[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 golf ball sensor system 660 is similar to golf ball sensor system 490 described above. However, in this case, there is no estimated area 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 assist in this determination, signals from a mobile device 670A, 675A associated with the golfer can be obtained to determine the strike location 670C, 675C associated with that golfer. For example, the mobile devices 670A, 675A may be GPS devices, or smartphones or tablet computers, 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 driving range to triangulate the location of the user device, as shown in FIG. 6C.
[0110] In some implementations, the location of each mobile device 670A, 675A is determined (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 locations 670C, 675C are then set (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660) based on the locations of the mobile devices 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 impact locations 670C, 675C for the golfers may involve offsetting the position of the mobile device in a first direction responsive to a given golfer being right-handed, e.g., impact location 675C is offset to the right (with respect to impact location relative to the golfer) from the position of the mobile device because the mobile device 675A is known to be associated with a right-handed golfer, and offsetting the position of the mobile device in a second direction, opposite the first direction, responsive to a given golfer being left-handed, e.g., impact location 670C is offset to the left (with respect to impact location relative to the golfer) from the position 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 confirmed, 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 embodiments, 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 above the grass tee and driving range. The user selects their 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 temporarily stores in memory. The new shot being hit from the grass tee can then be checked for intersection with a sphere (or similar geometry) centered at the location stored in memory, and the golf shot can be sent to any client with 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 impact location, which is 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 locations 670C, 675C, which are determined by where each golfer happens to decide to stand when hitting the golf ball. Additionally, the determination of the impact locations 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 locations for that golfer. In any event, 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, cylinder, or 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 the geometric shapes 670B, 675B are intersected by the extrapolated trajectory.
[0114] System 660 detects golf ball 665 in flight after it is struck. From this initial observation of golf ball 665 and one or more subsequent observations of golf ball 665, system 660 determines a three-dimensional trajectory 665B (note that for clarity of illustration, the diagram depicts only two dimensions). Three-dimensional trajectory 665B is then extrapolated backward in time to generate extrapolated trajectory 665A. In the example shown, extrapolated trajectory 665B intersects both geometries 670B, 675B. However, this is not necessarily the case. In some situations, only one of geometries 670B, 675B will be intersected by extrapolated trajectory 665B. In some situations, neither of geometries 670B, 675B will be intersected by extrapolated trajectory 665B, and additional ball observations will be required to determine which of impact 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 may 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 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 second distance measure(s) satisfies one or more thresholds, the process waits for additional observations of the golf ball by one or more golf ball sensors (612). Accordingly, the process returns to update the three-dimensional trajectory for the golf ball in three-dimensional physical space based on new observations of the golf shot (600). 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 determining that the first distance measure(s) do not satisfy one or more thresholds but the second distance measure(s) satisfy 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, the systematic and random errors being calculated as described above. Also as before, the one or more error measures for the second 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 waits for 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 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 of the defined physical locations as the origin of the golf shot.
[0118] In response to determining that the first distance measure(s) satisfy one or more thresholds but the second distance measure(s) do 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, the systematic and random errors being 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 waits for 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 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 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 one or more golf ball sensors (612), and the process returns to update the three-dimensional trajectory for the golf ball in 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 criteria 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 origin. Thus, the predefined criteria that are 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 the launch location for the golf shot is determined, the process presents golf ball tracking data on a display device associated with the defined physical location identified as the origin for the golf ball (e.g., by computer(s) 150, 200, 250, 420, 490, 500, 660), such as on one of the mobile devices 670A, 675A. Referring to FIG. 6B , the process first presents golf ball tracking data representing the currently determined trajectory of the golf shot (642). 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 trajectory of the golf shot, 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 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) and updates 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 relative to each other and relative to the presented animation and / or trace overlay, depending on different error measures that integrate systematic and random error calculations for the ball trajectory determined from observations of the ball in flight.
[0123] In other words, in instances where error estimates are used to display 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 predetermined 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 systematic and random errors, or both, can be used. For example, if the metric is calculated as the difference between multiple observations (such as with respect to ball velocity), random errors can be used because the metric of interest compares subsequent trajectory points; 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, velocity will be unaffected by this. However, if the metric depends on the absolute position of the ball, systematic errors can also be taken into account.
[0125] 7 is a flowchart 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 ball velocity is calculated (700) using the estimated random error. In some implementations, this involves using the component of the error vector for ball velocity that is in the direction of impact with respect to three-dimensional physical space. The measure of error for 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 errors in the ball's location at that point. Similarly, the error in ball velocity for the first observation can be determined using a normal formula for how to calculate ball velocity for the first observation twice: once when the systematic and random errors are zero and once when they are at the estimated value for the point 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), while random errors do not, since we cannot assume that they act in the same direction for two adjacent points. The ball velocity is the norm of the difference between the first two observations, p1 and p0, divided by the time difference between these points:
number
number
number
[0128] An error measure for the ball spin vector is calculated using the estimated systematic error and the estimated random error (708). The error measure 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 on a display device (714).
[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 increases spin in this case because 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 without assuming any errors in position, and then compare that result to the number obtained when errors are included. 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 for the time series x, thereby estimating the spin vector for each 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 spin vector error in the first observation. This number can be multiplied by the spin decay factor mentioned above along with the extrapolation distance to get the spin vector error for the shot launch.
[0130] An error measure for the launch angle is calculated (716) using the estimated systematic error and the estimated random error. The error measure 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 embodiments, a first component of the error vector for the launch angle that lies in the impact direction with respect to three-dimensional physical space is checked against a first threshold, and a second component of the error vector for the launch angle that lies in a vertical axis that is perpendicular to the impact direction is checked against a second threshold. In some embodiments, 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, at 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 at 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 they are in the estimated value, and then comparing the difference in 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, the error in position will increase when extrapolating, but the error in the angle itself will stay the same.
[0133] Additionally, whether or not shot metrics are selectively presented, systematic and random error calculations can be used to improve the effectiveness of an object tracking system. Figure 8A is a flowchart illustrating an example of a process for determining the 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 are likely 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. Similar grid search patterns can be used to determine which errors are likely 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] Generally, 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, a camera-based sensor has a focal length parameter, which, along with the camera's orientation (rotation), principal point and distortion parameters, different lens characteristics, and image capture element characteristics such as resolution, affect the field of view. Different sensor parameters (e.g., different positions and / or different fields of view) that improve the 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 indicates 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 are two or more sensors in the system, a report can be prepared (806) for each available tee position using the lowest values of systematic and random error calculated for the at least two golf ball sensors.
[0137] A report is presented (808) to indicate a desired hitting location and / or to indicate different, improved sensor parameters that can be used with the sensor system. FIG. 8B shows an example of an error map 850 for a deployed object tracking system. Map 850 shows the estimated total systematic and random error 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 bar 855. This map 850 can be used by a golfer selecting a tee location, or by someone deciding where to place the object tracking system's sensor(s). In the latter case, the 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 displays expected error values for certain positions on a grass tee, allowing a driving range owner to physically mark areas on the grass tee where reliability is better, or allowing customers to select hitting positions with 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 fall within the field of view of each sensor when hit from this position when determining parameters to enter into the formula for calculating systematic and random error. If there are two or more tracking systems with different sensors, the error 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 location error for each position. The length of the arrows indicates the focal length of the cameras—longer arrows indicate a longer focal length (and shorter field of view). The orientation of 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 the grass tee, the number of points to measure can be defined therein to determine its shape and geometry. 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 users navigate the map and place it in context. If other landmarks are measured, they can 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 in terms of launch location error projections. In this case, different maps for different sensor locations and orientations can be created, for example, during a dynamic mapping and sensor reconfiguration process. Thus, a driving range owner can be given guidance regarding how many sensors should be deployed at which specific locations for an object tracking system relative 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) relative 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 (810) to at least one different position indicated by the report. 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 this manner (to minimize random and systematic errors) can improve the reliability and coverage of the object tracking system, for example, relative 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] 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 thereof, or in one or more combinations thereof. 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 apparatus. The computer-readable medium can be an article of manufacture, such as a hard drive or optical disk in a computer system sold through retail channels, 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 distribution of one or more modules of computer program instructions over a wired or wireless network. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, or 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, a 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 runtime environment, or one or more combinations thereof. Furthermore, a 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 within 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., files storing 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 communications 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. Typically, a processor receives instructions and data from a read-only memory or a random-access memory, or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer also includes 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 or transfer data to or from 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 types 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 can 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; for example, 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, speech, 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. Embodiments of the subject matter described herein may be implemented in a computing system that includes back-end components, e.g., data servers, or middleware components, e.g., application servers, or front-end components, e.g., client components having a graphical user interface or web browser through which a user can 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] While 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 variations of the subcombination. Thus, unless otherwise specified or clearly dictated otherwise by the knowledge of one of ordinary skill 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 as requiring 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 as requiring such separation in all embodiments, and it should be understood that the described program components and systems may generally be integrated together in a single software product or packaged in multiple software products.
[0151] Accordingly, 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 foregoing 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. Additionally, the actions recited in the claims can be performed in a different order and still achieve desired results.
Claims
1. 1. A method comprising: determining at least one three-dimensional trajectory for at least one golf ball launched into 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 golf ball launch location, variations in location relative to the at least one golf ball sensor, or both; presenting a report outlining the calculated systematic and random errors to indicate preferred impact locations, different locations for the at least one golf ball sensor, or both; A method comprising:
2. 2. The method of claim 1, wherein the calculating includes 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, the method includes identifying at least one different position for the at least one golf ball sensor that results in lower systematic and random errors, and the presenting includes presenting a report outlining the calculated systematic and random errors to indicate the at least one different position for the at least one golf ball sensor.
3. The method of claim 2 , comprising moving the at least one golf ball sensor to the at least one different location.
4. The method of claim 2 , wherein said calculating comprises calculating said systematic and random errors according to variations in parameters for said at least one golf ball sensor.
5. 5. The method of claim 4, wherein the at least one golf ball sensor is at least two golf ball sensors positioned adjacently in the three-dimensional physical space, and the method includes preparing the report using the lowest values of the systematic and random errors calculated for the at least two golf ball sensors for each available tee position.
6. 6. The method of claim 5, wherein the parameters include a field of view, the method includes identifying different fields of view for the at least two golf ball sensors that are variations in initial field of view that result in lower ones of the systematic and random errors, and wherein presenting includes presenting a report outlining the calculated systematic and random errors to indicate the different fields of view for the at least two golf ball sensors.
7. The method of claim 6 , further comprising adjusting an initial field of view of the at least two golf ball sensors to the different field of view.
8. The method of claim 1 , wherein the at least one golf ball sensor includes a camera, and calculating the systematic error includes estimating an intrinsic calibration error based on a focal length of the camera.
9. 9. The method of claim 8, wherein the camera is a stereo camera, and wherein estimating the intrinsic calibration error includes calculating a disparity for the stereo camera based on a distance between the stereo camera and a first observation, and calculating the systematic error includes estimating a stereo calibration error for the stereo camera as an estimated error in a calibrated rotation of the stereo camera.
10. 10. The method of claim 9, wherein calculating the random error comprises estimating a total random disparity error for an extrapolated trajectory and adjusting a measure of error from the total random disparity error based on a distance from an initial observation to a baseline for the stereo camera.
11. 1. A system comprising: at least one hardware processor; at least one computer readable medium tangibly encoding a computer program operable to cause said at least one hardware processor to perform operations in accordance with the method of any one of claims 1 to 10; A system comprising:
12. 1. A method comprising: using the trajectory determined for each of two or more golf shots from ball observations made using at least one golf ball sensor, evaluating an estimated error for each of the two or more golf shots, each of the errors affecting an identification of a launch location for the detected golf shot through a first value and a second value, the first value being projected back to the launch location and the second value being multiplied by a distance to the launch location, the evaluating being done according to a variation in position at at least one location relative to the at least one golf ball sensor; providing a map indicating at least one preferred location for the at least one golf ball sensor for use in installing an object tracking system that uses the at least one golf ball sensor; A method comprising:
13. The method of claim 12 , wherein the evaluating is done according to variations in golf ball launch location, and the map indicates a preferred hitting location.
14. The method of claim 13 , wherein the evaluating includes using a signal from a mobile device associated with a golfer to determine impact locations for the two or more golf shots.
15. The method of claim 12 , wherein the evaluating is done according to variations in sensor parameters, and the map indicates different fields of view for the at least one golf ball sensor.
16. The method of claim 12 , including using a grid search pattern to determine the error for a range of different sensor positions and shot trajectories.
Citation Information
Patent Citations
Golf driving range distance determination device and method
JP2001521403A
A method and system for determining the landing position of a falling golf ball.
JP2010504786A
System for tracking multiple projectiles
JP2019530852A
Sensing device for a moving ball and method for calculating motion parameters of the ball using the same
JP2021505324A
Trajectory extrapolation and origin determination and sensor coverage determination for objects tracked during flight
JP2024529928A