Aspects of the present disclosure relate generally to systems and methods for a platform for an artificial intelligent system for generating and providing one or more recommendations corresponding to a golf shot. More particularly, the present disclosure provides for utilizing statistical distribution patterns derived from ball flight data collected from golf simulators or launch monitors to recommend a club, a shot aim, and a probability distribution for a player.
Golfers, both amateur and professional, often rely on subjective judgment or generalized guidance when selecting clubs and determining the best aim point during a round. The same can be said about players in other similar sports, such as ultimate frisbee or the like. These decisions typically consider factors such as distance, wind conditions, and hazards but rarely incorporate the player's personal shot tendencies or historical performance data with different clubs. In fact, many players are unaware of their swing or throwing tendencies. Existing solutions like GPS rangefinders and course management apps provide basic yardages and hazard locations but lack the capability to offer data-driven club and aim recommendations tailored to each golfer's unique shot patterns and based on measured data. As a result, golfers are often left making strategic decisions based on incomplete information, which can lead to suboptimal outcomes on the course.
It is with these observations in mind, among others, that various aspects of the present disclosure were conceived and developed.
Implementations described and claimed herein address the foregoing problems by providing systems and methods for processing golf shot data. One particular implementation may include a system comprising a communication interface receiving shot data corresponding to at least one golf shot of a user generated by a simulator device, one or more data processors, and a non-transitory computer-readable storage medium containing instructions which, when executed by the one or more data processors. The instructions may cause the one or more data processors to receive, via a user interface in communication with the system via the communication interface, a geolocation of the user associated with the shot data, generate, based on the shot data, a dispersion pattern corresponding to the user associated with the shot data, and determine, based on geolocations of one or more aspects of a selected course, a likelihood value for the dispersion pattern to overlap with the geolocations of the one or more aspects of a selected course. The instructions may also cause the one or more data processors to select, based on the likelihood value and a recommendation setting, a recommended club and transmit, for display on a mobile device executing the user interface, the generated dispersion pattern and recommended club.
In another implementation, a computer-implemented method for processing golf shot data is provided. The method may include the operations of communicating, via a communication interface, shot data corresponding to at least one golf shot of a user generated by a simulator device and a geolocation of the user associated with the shot data and generating, based on the shot data, a dispersion pattern corresponding to the user associated with the shot data. The operations may also include determining, based on geolocations of one or more aspects of a selected course, a likelihood value for the dispersion pattern to overlap with the geolocations of the one or more aspects of a selected course, selecting, based on the likelihood value and a recommendation setting, a recommended club, and transmitting, for display on a mobile device executing the user interface, the generated dispersion pattern and recommended club.
Other implementations are also described and recited herein. Further, while multiple implementations are disclosed, still other implementations of the presently disclosed technology will become apparent to those skilled in the art from the following detailed description, which shows and describes illustrative implementations of the presently disclosed technology. As will be realized, the presently disclosed technology is capable of modifications in various aspects, all without departing from the spirit and scope of the presently disclosed technology. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not limiting.
The various features and advantages of the technology of the present disclosure will be apparent from the following description of particular embodiments of those technologies, as illustrated in the accompanying drawings. It should be noted that the drawings are not necessarily to scale; however, the emphasis instead is being placed on illustrating the principles of the technological concepts. The drawings depict only typical embodiments of the present disclosure and, therefore, are not to be considered limiting in scope.
Aspects of the present disclosure involve systems and methods for a cloud-based or other computing-based system for utilizing statistical distribution patterns derived from ball flight data collected from golf simulators or launch monitors to generate and provide one or more shot recommendations to a user during play. Such a system may analyze a player's personal shot history and statistical tendencies with each club and calculate or otherwise determine the probability of hitting various areas on the course, including target areas of the course such as fairways and greens, as well as penalty areas like bunkers and water hazards. The invention provides real-time, personalized club and aim recommendations, optimizing shot selection based on data rather than guesswork. This approach enables golfers to make more informed decisions, improving their course management and overall performance. These and other advantages may become apparent from the discussion included herein.
To begin a detailed discussion of an example seizure management system 100, reference is made to
A server 108 may, in some instances, host the system. In one implementation, the server 108 also hosts a website or an application that users may visit to access the network environment, including the shot strategy platform 102. The server 108 may be one single server, a plurality of servers with each such server being a physical server or a virtual machine, or a collection of both physical servers and virtual machines. In another implementation, a cloud hosts one or more components of the system. For example, cloud services 116 may be offered by the network 104 to host any aspect of the operation and/or component of a mobile-executed application or shot strategy platform 102, such as storage capabilities, compute capabilities, networking capabilities, and the like. Cloud services 116 may host a portion or all of the varied components of the shot strategy platform 102 to provide a cloud-based solution. The shot strategy platform 102, the user devices 106, the server 108, the mobile devices 112, and other resources connected to the network 104 may access one or more additional servers for access to one or more websites, applications, web services interfaces, etc. that are used for executing the systems and methods described herein.
The data transferred to and from various devices in operating environment 100 can include secure data. Therefore, it can be desirable to protect transmissions of such data using secure network protocols and encryption and to protect the integrity of the data when stored on the various computing devices within the software deployment system. For example, a file-based integration scheme or a service-based integration scheme can be utilized for transmitting data between the various computing devices. Data can be transmitted using various network communication protocols. Secure data transmission protocols and/or encryption can be used in file transfers to protect the integrity of the data, for example, File Transfer Protocol (FTP), Secure File Transfer Protocol (SFTP), and/or Pretty Good Privacy (PGP) encryption. In many implementations, one or more web services can be implemented within the various computing devices. Web services can be accessed by authorized external devices and users to support input, extraction, and manipulation of data between the various computing devices in the operating environment 100. Web services built to support a personalized display system can be cross-domain and/or cross-platform and can be built for enterprise use. Such web services can be developed in accordance with various web service standards, such as the Web Service Interoperability (WS-I) guidelines. Data can be transmitted using the Secure Sockets Layer (SSL) or Transport Layer Security (TLS) protocol to provide secure connections between the computing devices. Web services can be implemented using the WS-Security standard, which provides for secure SOAP messages using XML encryption. In still other examples, a security and integration layer can include specialized hardware for providing secure web services. For example, secure network appliances can include built-in features such as hardware-accelerated SSL and HTTPS, WS-Security, and/or firewalls. Such specialized hardware can be installed and configured in the operating environment 100 in front of one or more computing devices describe herein such that any external devices can communicate directly with the specialized hardware.
It will be appreciated that the network connections shown are illustrative and other means of establishing a communications link between the computers can be used. The existence of any of various network protocols such as TCP/IP, Ethernet, FTP, HTTP and the like, and of various wireless communication technologies such as GSM, CDMA, WiFi, and WiMAX, is presumed, and the various computing devices described herein can be configured to communicate using any of these network protocols or technologies.
The shot selection strategy platform 206 may include a shot selection application 212 executed to perform one or more of the operations described herein. The shot selection application 212 may be stored in a computer readable media 210 (e.g., memory) and executed on a processing system 208 of the shot selection strategy platform 206 or other type of computing system, such as that described below. For example, the shot selection application 212 may include instructions that may be executed in an operating system environment, such as a Microsoft Windows™ operating system, a Linux operating system, or a UNIX operating system environment. By way of example and not limitation, non-transitory computer readable medium 210 comprises computer storage media, such as non-transient storage memory, volatile media, nonvolatile media, removable media, and/or non-removable media implemented in a method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data.
The shot selection application 212 may also utilize a data source 228 of the computer readable media 210 for storage of data and information associated with the shot selection strategy platform 206. For example and as explained in more detail below, the shot selection application 212 may store received data or inputs, processing details, and/or output information, and the like associated with any aspect of determining an aspect of a shot recommendation or analysis. As described in more detail below, data associated with a player's shot data, data corresponding to a course, environmental data, shot dispersion data, and the like may be stored and accessed via the user interface 205, among many other types of data. Data stored in the data source 228 may include any type of data associated with the shot selection strategy platform 206, including shot data, video files, audio files, logging information, image files, and the like.
The shot selection strategy system 200 includes methodology and components that allow for the display of recommended aspects of a golf shot in a mobile application, the aspects including aim line, suggested club, dispersion of likely shot locations, and the like based on shot data associated with a player. Several of the components of the shot selection strategy system 200 are illustrated in the block diagram of
In one implementation, the shot selection application 212 of the shot selection strategy platform 206 may include a shot data ingestor 214 to receive shot data 230 corresponding to a user of the platform. In general, shot data may include any measurable aspect of shot data associated with the user and obtained from a sensor device. For example, a shot simulator device may be utilized to measure aspects of shot data for one or more types of golf clubs. The simulator may include one or more sensors for measuring various aspects of the the movement of the golf ball after being struck with the club. To obtain these measurements, the simulator may include any optical sensor device, such as radar-based sensors, lidar-based sensors, cameras, laser-based sensors, or any other type of sensor utilized to capture the movement of an object. The shot simulator device may also process these measurements to calculate or otherwise determine aspects of the user's shot. For example, the simulator may determine an estimated distance of flight of the ball, a total distance traveled (determined based on a spin of the ball), a right or left carry of the ball in flight, a spin rate of the ball, an axis of spin for the ball, an estimated peak height of the ball, and the like. In other implementations, the shot data may include aspects of the user's swing dynamics when swinging one or more of the user's clubs. For example, the simulator may capture the movement of the user while swinging a club and generate measurements of the captured movement, including the movement and orientation of the user and/or the club. Such information may be included in the shot data associated with the user.
The above calculations, and others, may be obtained for each of a plurality of clubs of the user. For example, the user may select a first club and provide an input to the simulator device that indicates the club selected (such as a “driver” for a driver-type club or “5-Iron” for a 5-Iron club). Once the club is selected, the user may hit or more balls in the simulator and aspects of the ball movement, user movement, and/or club movement may be captured by the simulator. The collected data may be processed to determine one or aspects of the flight of the ball for the selected club. The simulator may also store the determined aspects or data along with the indication of the selected club. In this manner, shot data for each club used by the user may be collected by and stored by the simulator. As explained in more detail below, this data may be utilized by the shot selection application 212 for determining shot strategy when on a golf course.
In one implementation, the shot data 230 may be ingested into the shot selection application 212 through the shot data ingestor 214.
Beginning in operation 302, shot data as described above may be collected for one or more of a plurality of clubs of the user from a simulator device. In some instances, the shot data for the user may be obtained through the simulator device as described above. Further, a computing device in communication with the simulator may store the shot data for each club of the user. In operation 304, it may be determined if the user has a cloud account for storing shot data. If the user does not have a cloud account, the shot data may be converted from the simulator to a data file in operation 306. In general, the shot data may be in any data form, including text data or image data. For example, the shot data may be exported to a spreadsheet file or other text-based data file. In another example, the user may take an image or photo of the shot data displayed by the simulator device to export the data to an image file. Regardless of the type of data file, the shot data may be exported to the user's mobile device 112 through the exporting of the shot data to the data file. For example, the mobile device 112 may be in communication with the simulator device, either through a wired or wireless connection, to upload the data file to the mobile device. In another example, a camera or other optical sensor may capture an image of a display screen of the simulator device to transfer the shot data to the mobile device via the image file. It should be appreciated that components of the shot selection strategy platform 206 may be instituted in the user's mobile device. For example, the shot data ingestor 214 of the platform 206 may be executed by a mobile application on the mobile device 112 to export the shot data 230 from the data file. As such, the operations of the method 300 of
In operation 308, a shot selector application executed on the mobile device 112 or other computing device may be initiated and an option to upload the shot data from the data file may be selected and, in operation 310, the shot selector application may export the user's shot data from the data file into the application.
In some instances, the mobile application may be configured to analyze the data file through an optical character recognition (OCR) process to extract the shot data from the data file. For example, in instances in which the data file is an image file, the mobile application may process the data of the image file through one or more OCR processes to obtain the shot data 230 from the image file. In a similar manner, a text-based data file may be processed through the one or more OCR processes to extract the relevant shot data from the data file. For example, the data file may include one or more columns and/or rows of types of shot data generated or otherwise determined by the simulation device. The OCR process of the mobile application may analyze the rows and/or columns of the shot data in the text file and obtain portions of the shot data, including types of clubs identified and the corresponding shot data for the included clubs. In general, however, the shot data from the data file may be uploaded to the mobile device and/or the shot selection strategy platform 206 for use in providing shot selection recommendations.
Returning to
With the shot data 230 for the user, the shot selection strategy platform 206 may be available for providing shot recommendation data to the user through the platform. In particular, the user may access an application executed by the mobile device 112 while playing a round of golf to aid the user in selecting certain aspects of a golf shot, such as a club selection recommendation, an aim line or direction to hit the golf ball, and the like. Such recommendations may be based on the shot data 230 received at the shot selection application 212 as determined by the simulator device. Thus, the shot selection application 212 may receive data corresponding to each club of the user that provides insight into the user's real-world tendencies and mechanics when hitting a golf ball with each of the clubs. As explained in more detail below, this information may be used to calculate and display shot dispersion graphs for the user and provide various shot recommendations during the round of play through the user's mobile device.
Beginning in operation 502, the shot selection application 212 may receive course selection information. In one implementation, a golf course being played or intended to be played by a user of the mobile device 112 may be selected, perhaps through the executed mobile application. Once selected, the mobile application may provide some indication of the selected course to the shot selection application 212 through the network environment 100, such as through a wireless communication network. In response to the selected golf course, the shot selection application 212 may obtain one or more course feature data from a course database in operation 504. In one implementation, a course data ingestor 216 of the shot selection application 212 may obtain course data 232 from one or more course databases. Course data may include any features or aspects of a golf course, such as hole layouts, geolocations of the features of the golf course (such as green placements, sand traps, hole boundaries, tee placements, water hazards, tree placements, etc.). The course data 232 may be gathered and stored in one or more public databases of course data and provided to the shot selection application 212. Thus, the course data ingestor 216 may access such databases, perhaps through an API or by providing some identifying information to the databases. Once accessed, the shot selection application 212 may provide an indicator of the selected golf course to the databases to receive the course data 232. In general, any course layout or geolocation information of aspects of the selected golf course may be obtained from the course databases by the course data ingestor 216.
Similarly, in operation 506, the shot selection application 212 may obtain one or more environmental data from an environmental database. In general, environmental data 234 may include any data or information of the environment around or near the selected golf course, such as temperature, wind speed, wind direction, precipitation, humidity, forecasts of future weather events, or any other environmental data that may affect the flight of a struck golf ball. The environmental data 234 may be gathered and stored in one or more public databases and provided to the shot selection application 212 upon request. In one implementation, an environment data ingestor 218 may access such databases, perhaps through an API or by providing some identifying location information to the databases, and request the stored environmental data 234 for the golf course location.
In operation 508, the shot selection application 212 may identify the geolocation of the user. For example, the mobile application and/or mobile device 112 may include a global positioning system (GPS) device to geolocate the mobile device. The geolocation of the mobile device may then be provided to the shot selection application 212 to determine the location of the user on the golf course. For example,
In addition, the shot selection application 212 may adjust the baseline shot data 230 received from the simulator device in response to the environmental data 234 at operation 510. For example, the shot selection application 212 may determine a geolocation of player and a relative direction of the player's current hole. In addition, the environmental data 234 may provide a wind speed and a direction of the wind. With this information, the shot selection application 212 may determine a direction and speed of the wind relative to the player's position and direction of the player's next golf shot to assess the wind's effect on the flight of the golf ball. For example, a golf shot hit directly into a high wind may travel a shorter distance than the same golf shot without wind. Similarly, a cross-wind may push a golf shot to the left or the right, depending on the direction of the wind relative to the player. The shot selection application 212 may therefore adjust the baseline shot data for the user based on the player location, the hole direction, and the environmental data 234. For example, a user's shot data 230 may indicate that a driver shot is likely to travel 200 yards in normal conditions. However, in a circumstance in which the environmental data indicates a headwind condition, the shot selection application 212 may reduce the expected travel distance of the ball. In a similar manner, the baseline shot data 230 may be adjusted for other environmental conditions, such as humidity, temperature, barometric pressure, elevation, and any other environmental condition that may affect the flight of a struck golf ball. As the adjustment to the baseline shot data 230 may be dependent upon a location of the user and/or the likely direction of flight of the golf ball, the adjustment to the baseline shot data 230 may occur for each suggested shot provided by the mobile application and/or shot selection application 212, as explained in more detail below.
In operation 512, the shot selection application 212 may continue preparing a display of recommendations for a golf shot strategy by building a plurality of dispersion patterns for the user based on the adjusted shot data and user information. In one implementation, a shot dispersion generator 220 of the shot selection application 212 may generate a dispersion pattern for each club associated with the user as determined by the shot data 230 of the user. Each dispersion pattern represents a statistical dispersion of a likelihood for the resting place of the golf ball after being struck by the user with the corresponding club, given the user's shot data, geolocation, and/or the environmental data 230. Initially, the dispersion patterns for each club of the user may be generated in an 180-degree circle around the user's location. In general, however, the dispersion patterns may be generated in any direction from the user's geolocation. For example, to reduce the computational requirement on the shot selection application 212, the dispersion pattern may be generated for each club in a 90-degree arc from the user's location. As described in more detail below, the dispersion generator 220 may generate the dispersion patterns to represent some likelihood of the user landing the golf ball within the dispersion pattern. For example, the dispersion pattern may indicate an area of 90+% likelihood in which the golf ball will come to rest, an area of 75+% likelihood in which the golf ball will come to rest, an area of 50+% likelihood in which the golf ball will come to rest, etc. in any direction from the user's location.
To apply the generated dispersion patterns to the particular selected course, the shot selection application 212 may map the dispersion patterns to the course data based on the geolocation of the user in operation 514. In particular, the shot selection application 212 may center each of the generated circular dispersion patterns for each club on the geolocation of the user and overlay those dispersion patterns onto the course map data 232, including the geolocation data for features of the golf course, including out-of-bounds areas, water hazards, sand traps, fairways, tee boxes, greens, etc. In this manner, the shot selection application 212 may determine the geolocations of aspects of the dispersion patterns relative to the golf course and/or the user location.
The method 500 for a shot selection strategy platform to provide a best fit shot selection to a user of the platform continues in
With the determined odds for each of the portions of the shot dispersions, the shot selection application 212 may determine a best fit shot dispersion in operation 518 based on the generated odds and one or more configurable settings of the system. In general, one or more course features and/or upper or lower limits of odds of landing on those features may be configurable through the mobile application executed on the mobile device 112 or the shot selection application 212. In one example, the shot selection application 212 may be configured to minimize the distance to the green while keeping the odds of hitting a penalty area (out-of-bounds or a water hazard) at less than 5%. In another example, the shot selection application 212 may be configured to set the odds of landing on the fairway at more than 75% with the longest distance from the location of the shot. In yet another example, the user may only care about hitting the ball as far as possible, regardless of the odds for the ball landing in any noted feature of the course hole. In general, any parameters of the shot selection application 212 may be configurable to provide the best fit shot dispersion for the user's interest in the next golf shot. In some instances, the shot selection application 212 may include one or more default settings of dispersion odds for determining a shot strategy for the user, which may or may not be configurable through the mobile device 112.
With the configurable settings, the shot selection application 212 may determine a particular dispersion pattern of the generated patterns that best fits the user's selections. For example, a user may configure the settings of the shot selection application 212 to provide the dispersion that is closest to the green, regardless of the odds for landing on any feature of the course. With such settings, the shot selection application 212 may determine that a driver club is best fit club for the user, as the driver is the most likely to have the longest distance. Thus, the shot selection application 212 may return, in operation 520, a recommendation to use the driver from the tee box. However, as the user gets closer to the green on subsequent shots, the recommended club may adjust to recommending other clubs as the determined dispersion pattern for the driver exceeds the distance to the green. In a similar manner, the shot selection application 212 may be configured to only recommend a club that provides a likelihood of hitting a penalty area of less than 5%. In such instances, the driver may not be the best club to hit as the dispersion pattern for the driver may increase the odds of hitting a penalty area above the 5% threshold. Thus, the shot selection application 212 may then determine and recommend hitting a shorter club, such as a 3-iron, if the dispersion pattern for the 3-iron indicates that the odds of hitting a penalty area with that club is less than 5%. In this manner, the shot selection application 212 may analyze the various dispersion patterns generated for the user and based on the user's geolocation (and environmental data) to determine which portions of the dispersion patterns best fits the configurable criteria of the shot selection application.
In addition to determining the best fit club selection for the shot selection application 212 settings, the shot selection application may also determine an aim line for hitting the golf ball, such as through an aim line generator 224 component of the shot selection application. The aim line generator 224 may, in general, generate a straight, aim line suggestion for hitting the ball based on the determined best fit dispersion pattern. In general, the generated aim line may not necessarily be a straight line through the center of the best fit dispersion pattern, but may be based on the shape of the best fit dispersion pattern to provide the user an aim line that may result in the highest likelihood of fulfilling the determined dispersion pattern odds. For example, the aim line may take into consideration the environmental data 234 when generating the aim line for the user. In another example, the user shot data 230 may indicate that the player has a tendency to hit the ball right of center, also known as a “slice”. In such instances, the shot selection application 212 may generate the aim line left of the center of the best fit dispersion pattern to adjust the aim line for the player's slice tendency. In general, however, the aim line may be based on the selected best fit dispersion pattern and the shot data of the user to provide a recommended direction for the user to hit the golf ball.
Also in operation 520, the shot selection application 212 may transmit the determined best fit dispersion pattern, aim line, recommended club, and/or other recommendations to the mobile device 112 of the user for display by the mobile device. In general, however, the shot selection application 212 may transmit various information or data during execution of method 500 to the mobile device for display to the user via the user interface. For example,
As illustrated in the user interface 602 of
In addition to the above, the user interface 606 may also display the shot recommendation information, as illustrated in
The user interface 606 may also include an indicator of the determined odds 620 for landing within the various features of the hole. For example, the odds indicator 620 may include a list of features of the hole, including the green, fairway, penalty areas, bunkers, rough, water hazards, and the like. For one or all of the noted features, the determined likelihood or odds that the user's next shot will land in one of the noted features may also be displayed. As noted above, the shot selection application 212 may determine the odds for landing in each of the features based on the dispersion pattern for the user's clubs and the best fit determination. As such, the user interface 606 may also display an indication of the club 622 determined by the shot selection application 212 to provide highest likelihood of satisfying the bet fit criteria or settings. In this manner, the user interface 606 may provide the user with one or more recommendations on shot strategy, including a club selection 622, an aim line 610, a dispersion pattern 608, and one or more determined odds 620 that the user's ball will land on a feature of the course hole. These displayed recommendations are based on the user's measured mechanism and tendencies and are optimized to provide the distance and location requested by the user through the shot selection application 212 settings.
The user may also interact with the user interface 606 to adjust the aim line 610 and customize the user's intended shot. For example, the user may utilize the “Target Aim” button 624 to adjust the aim line 610 left or right. An indication of the adjustment to the aim line 610 by the user may be transmitted from the mobile device to the shot selection application 212 which may, in response, re-calculate the dispersion pattern as outlined above. The new dispersion pattern for the moved aim line 610 may then be transmitted to the mobile device 112 for display in the user interface 606. In some instances, moving of the aim line 610 may cause the odds correlated to the re-calculated dispersion pattern to exceed one or more of the configurable settings for the user. For example, by moving the aim line 610, the odds of landing in a water hazard may exceed a threshold value set by the user. The newly calculated odds may be displayed on the mobile device 112 to inform the user of the likelihoods associated with the adjusted aim line.
In other circumstances, the user may select a club different than the recommended club through the mobile device 112. The shot selection application 212 may, in response to the selection of the club, calculate and display the shot dispersion and likelihood values for the newly selected club as described above. This new club selection, dispersion pattern, and aim line corresponding to the selected club may be displayed in the user interface 606 as discussed above in response to the user club selection within the interface.
As also explained above, baseline shot data 708 of the user may be obtained by a simulation device and transmitted to the shot strategy platform 102. The geolocation data 710 of the user may also be provided to the shot strategy platform 102, perhaps by a mobile device 112 using a GPS component. In addition, the shot strategy platform 102 may also receive ball lie 712 information or data, in some instances of the platform. The ball lie 712 information may be received at the shot strategy platform 102 from the user's mobile device 112 and used to adjust one or more aspects of the shot recommendation discussed above. For example, during a round of golf, the user may take a digital photo of the player's ball lie 712 and upload the photo to the shot strategy platform 102. The shot strategy platform 102 may include an algorithm or other method to analyze the photo and determine a lie of the ball. Further, one or more aspects of the shot selection application 212 may be adjusted in response to the determined lie of the ball. For example, a portion of the user's shot data 230 may correspond to a ball lie, such as hitting from a sand trap, hitting from the rough, hitting from the fairway, etc. Once the ball lie is determined from the photograph, the shot selection application 212 may adjust the baseline shot data in response to the determined ball lie and generate new the dispersion patterns for the user's next shot, similar to the adjustment to the shot data performed in response to the environmental data discussed above. Thus, in addition to the dispersion patterns being based on the clubs of the user, the patterns may be based on a determined ball lie.
In some instances, the algorithms and methods utilized by the shot strategy platform 206 may incorporate one or more machine-learning or artificial intelligent processes. For example, portions of the shot selection strategy platform 200 may utilize feedback data to alter one or more of the operations discussed above to generate and/or optimize the platform. Such operations may be performed by a computing device configured to execute any machine learning or artificial intelligent algorithm, including deep learning techniques. In one implementation, a computing device of the network 100 discussed above may iteratively train multiple models, based on received feedback data, to generate an adaptive model. In particular, the shot selection strategy platform 206 may receive feedback data, such as from the mobile device 204 or other computing devices, corresponding to the accuracy of the model outputs, such as the shot dispersion, recommended club, and/or aim line. In some instances, the feedback data may be provided by a user of the computing device. In other instance, the feedback data may include a geolocation of the ball after being hit. Such feedback data may be provided to a model generation and/or model optimization system. The model generation system may use artificial intelligence technology to generate one or more models using the processed feedback data. In addition, the shot selection strategy platform 200 may use the model optimization system to train the one or more generated models to provide more accurate results. This iterative process of model generation and/or optimization may be repeated thousands of times to enable models with different parameters (aspects unique to the architecture of the model) to be trained and tested. The resulting best model according to standard regression metrics may then be chosen and output as an optimized prediction model.
Referring to
The computer system 800 may be a computing system is capable of executing a computer program product to execute a computer process. Data and program files may be input to the computer system 800, which reads the files and executes the programs therein. Some of the elements of the computer system 800 are shown in
The processor 802 may include, for example, a central processing unit (CPU), a microprocessor, a microcontroller, a digital signal processor (DSP), and/or one or more internal levels of cache. There may be one or more processors 802, such that the processor 802 comprises a single central-processing unit, or a plurality of processing units capable of executing instructions and performing operations in parallel with each other, commonly referred to as a parallel processing environment.
The computer system 800 may be a conventional computer, a distributed computer, or any other type of computer, such as one or more external computers made available via a cloud computing architecture. The presently described technology is optionally implemented in software stored on the data stored device(s) 804, stored on the memory device(s) 806, and/or communicated via one or more of the ports 808-810, thereby transforming the computer system 800 in
The one or more data storage devices 804 may include any non-volatile data storage device capable of storing data generated or employed within the computing system 800, such as computer executable instructions for performing a computer process, which may include instructions of both application programs and an operating system (OS) that manages the various components of the computing system 800. The data storage devices 804 may include, without limitation, magnetic disk drives, optical disk drives, solid state drives (SSDs), flash drives, and the like. The data storage devices 804 may include removable data storage media, non-removable data storage media, and/or external storage devices made available via a wired or wireless network architecture with such computer program products, including one or more database management products, web server products, application server products, and/or other additional software components. Examples of removable data storage media include Compact Disc Read-Only Memory (CD-ROM), Digital Versatile Disc Read-Only Memory (DVD-ROM), magneto-optical disks, flash drives, and the like. Examples of non-removable data storage media include internal magnetic hard disks, SSDs, and the like. The one or more memory devices 806 may include volatile memory (e.g., dynamic random access memory (DRAM), static random access memory (SRAM), etc.) and/or non-volatile memory (e.g., read-only memory (ROM), flash memory, etc.).
Computer program products containing mechanisms to effectuate the systems and methods in accordance with the presently described technology may reside in the data storage devices 804 and/or the memory devices 806, which may be referred to as machine-readable media. It will be appreciated that machine-readable media may include any tangible non-transitory medium that is capable of storing or encoding instructions to perform any one or more of the operations of the present disclosure for execution by a machine or that is capable of storing or encoding data structures and/or modules utilized by or associated with such instructions. Machine-readable media may include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more executable instructions or data structures.
In some implementations, the computer system 800 includes one or more ports, such as an input/output (I/O) port 808 and a communication port 810, for communicating with other computing, network, or reservoir development devices. It will be appreciated that the ports 808-810 may be combined or separate and that more or fewer ports may be included in the computer system 800.
The I/O port 808 may be connected to an I/O device, or other device, by which information is input to or output from the computing system 800. Such I/O devices may include, without limitation, one or more input devices, output devices, and/or environment transducer devices.
In one implementation, the input devices convert a human-generated signal, such as, human voice, physical movement, physical touch or pressure, and/or the like, into electrical signals as input data into the computing system 800 via the I/O port 808. Similarly, the output devices may convert electrical signals received from computing system 800 via the I/O port 808 into signals that may be sensed as output by a human, such as sound, light, and/or touch. The input device may be an alphanumeric input device, including alphanumeric and other keys for communicating information and/or command selections to the processor 802 via the I/O port 808. The input device may be another type of user input device including, but not limited to: direction and selection control devices, such as a mouse, a trackball, cursor direction keys, a joystick, and/or a wheel; one or more sensors, such as a camera, a microphone, a positional sensor, an orientation sensor, a gravitational sensor, an inertial sensor, and/or an accelerometer; and/or a touch-sensitive display screen (“touchscreen”). The output devices may include, without limitation, a display, a touchscreen, a speaker, a tactile and/or haptic output device, and/or the like. In some implementations, the input device and the output device may be the same device, for example, in the case of a touchscreen.
The environment transducer devices convert one form of energy or signal into another for input into or output from the computing system 800 via the I/O port 808. For example, an electrical signal generated within the computing system 800 may be converted to another type of signal, and/or vice-versa. In one implementation, the environment transducer devices sense characteristics or aspects of an environment local to or remote from the computing device 800, such as, light, sound, temperature, pressure, magnetic field, electric field, chemical properties, physical movement, orientation, acceleration, gravity, and/or the like. Further, the environment transducer devices may generate signals to impose some effect on the environment either local to or remote from the example computing device 800, such as, physical movement of some object (e.g., a mechanical actuator), heating or cooling of a substance, adding a chemical substance, and/or the like.
In one implementation, a communication port 810 is connected to a network by way of which the computer system 800 may receive network data useful in executing the methods and systems set out herein as well as transmitting information and network configuration changes determined thereby. Stated differently, the communication port 810 connects the computer system 800 to one or more communication interface devices configured to transmit and/or receive information between the computing system 800 and other devices by way of one or more wired or wireless communication networks or connections. Examples of such networks or connections include, without limitation, Universal Serial Bus (USB), Ethernet, Wi-Fi, Bluetooth®, Near Field Communication (NFC), Long-Term Evolution (LTE), and so on. One or more such communication interface devices may be utilized via the communication port 810 to communicate one or more other machines, either directly over a point-to-point communication path, over a wide area network (WAN) (e.g., the Internet), over a local area network (LAN), over a cellular (e.g., third generation (3G) or fourth generation (4G) or fifth generation (5G) network), or over another communication means. Further, the communication port 810 may communicate with an antenna or other link for electromagnetic signal transmission and/or reception.
The system set forth in
The shot selection strategy platform 200 may provide the various outputs (aim line, shot odds, shot dispersion, club recommendation, etc.) for display in the mobile device through any number of processes of methods. In one example, the outputs may be determined by the shot selection strategy platform 200 from a probabilistic standpoint. Described below are four aspects of the shot selection strategy platform 200 and an example process for each, including the processes of projecting GPS coordinates to a two-dimensional (2D) space, selection of a dispersion model and a maximum likelihood fitting, probability evaluation over closed irregular shapes and club recommendation.
Beginning with the projection of three-dimensional GPS coordinates (such as the geolocation of the aspects of the selected golf course and/or the user) to a 2D space, shot selection strategy platform 200 utilize an equirectangular projection method. In general, this transformation maps north-south meridians to vertical lines with constant spacing and circles of latitude to horizontal lines with constant spacing. While this transformation is common in cartography for thematic mapping, it is not conformal and therefore results in some distortion between the spherical and linear representations. However, for the relatively small spherical areas that each hole spans, these distortions may be negligible. The forward projection from GPS to 2D or X-Y coordinates may be defined as:
where Δ and ϕ are the longitude and latitude, respectively, of the coordinate set in question, R is the radius of the Earth, ϕ0 is the central parallel of the map, λ0 is the central meridian of the map, and ϕ1 is any central parallel where the transformation is true. For simplicity, ϕ1=ϕ0. The reverse projection takes XY coordinates into GPS coordinates via:
There may be two different types of coordinates available for the transformation. In one example, the location at which a golf shot lands may be transformed respect to an arbitrary origin point. This point is represented in yards and each different shot (regardless of true origin) is associated to a common origin e.g. (0, 0). The length of the shot is then denoted as the total or carry distance and the lateral drift is denoted as the offside. In one example of the shot selection strategy platform 200, the vertical coordinate is defined as the carry distance. The set, or distribution, of these shots is referred to as the shot dispersion pattern. The dispersion pattern can be fit with a model that represents the probabilistic distribution of where a shot will land given a specific club. A second type of coordinate may be the real-world GPS coordinates of sub-areas. A sub-area is the point outline of an aspect of the course or hole (bunker, fairway, green, etc.) with points represented by latitude and longitude. An illustration of a dispersion pattern and example course areas are shown in
These two sets of coordinates, dispersions and course aspects, are initially incompatible in their original frame of reference. Thus, transformations may be applied to place both systems into a common reference frame, which then allows for the calculation of the probability for a shot to encounter a course aspect. To perform this transformation, two reference frames may be defined: the dispersion frame and the course frame. The dispersion frame may include each of the shots for a given club such that any shot (from anywhere in real world coordinates) can be integrated into the common dispersion frame when calculated with respect to the user's position as an origin (0, 0). The dispersion frame can be transformed and overlaid onto any real course such that there is a proper definitions of the axes within the course. This leads to the course frame definition, which is constructed around the target axis for a particular hole. In general, the target axis is the line from the user's position (commonly tee-box center) to the hole. The transformation from dispersion to course frame from dispersion vector {right arrow over (X)} to course frame vector {right arrow over (X′)} is as follows:
where R is a 2×2 rotation matrix and θ denotes the angle between the dispersion and course frame. To transform from the dispersion frame to course frame the dispersion system is rotated to align with the target axis of the course frame.
Following the projecting of the GPS coordinates to 2D coordinates, the dispersion patterns for the user may be determined. In general, dispersion patterns in golf follow generally elliptical patterns and may include such characteristics as lateral (offside) and vertical (carry/total) coordinates, localization at/centered on a point in space, symmetric spread around a center, and a pattern not necessarily aligned with lateral-vertical coordinate system. In one implementation, the offside value of a shot may be made to correspond to the x-axis of the 2D plane and the carry to be the y-axis. The choice and transformation of coordinate system has already been discussed. A generic probability model that captures all these aspects of the dispersion patterns is a two-dimensional Gaussian, or normal, probability density function (PDF), defined as:
This PDF is parameterized by its sufficient statistics, its center μ (2×1) and its covariance matrix Σ (2×2). The center can be anywhere on the given 2D real plane such that μ∈R2. Similarly, for the covariance matrix, Σ∈R2×2. However, there are additional requirements for the covariance-namely that it must be symmetric and positive semi-definite (its eigenvalues≥0). These properties not only match the ones outlined earlier for dispersion patterns, but will also allow the Gaussian PDF to be easily visualized as ellipses.
The shot selection strategy platform 200 may obtain a model, a PDF, that describes the dispersion data probabilistically and continuously throughout all space. For example, one chosen functional form is a 2D Gaussian, so that the shot selection strategy platform 200 may obtain the parameters of this PDF. In order to estimate our parameters, some metric is selected to be optimized. The standard procedure for obtaining estimators may come from maximizing the likelihood of the generated model. The likelihood of a model may be considered as the probability of observing the data seen, x, given this data was generated from an underlying model parameterized by θ. This statement can be mathematically expressed as P(x|θ) with \hat {\theta} representing the unique set of parameters that maximize this likelihood to find the model that best fits the given data, or maximizes the probability that the data was sampled from the estimated distribution. In order to obtain the maximum likelihood estimates of the parameters, the derivative of the function from the PDF with respect to the parameter may be estimated and set to 0. Then one may solve for that parameter. Often, to simplify the equations to solve, the log of the likelihood is maximized to cancel exponents and make multiplications into additions. This approach still finds the maximum likelihood solution because the log function is continuous and monotonically increasing, so the values that maximize the likelihood will also maximize the log-likelihood.
For the Gaussian distribution, the maximum likelihood estimate (MLE) of the parameters (denoted by e′) are straightforward to calculate (another reason to choose this PDF to model the data). From solving the derivative equations, the center of the distribution {circumflex over (μ)} is the arithmetic, or sample, mean of the data and the covariance {circumflex over (Σ)} is the sample covariance of the data, giving:
for Xij being the data matrix of n entries, indexed by i, and dimension j such that j=k. Here, {circumflex over (μ)} is a k×1 vector and {circumflex over (Σ)} is a k×k matrix. Thus, our model becomes:
Every golf club creates a dispersion pattern and each may be treated as independent. The shot data that populates each dispersion may be modeled with a 2-D Gaussian. An example fitted dispersion is shown in the graph 1002 of
To evaluate the probability inside a course aspect shape a common lower point may be defined between the top and bottom of the shape. The area difference between the top and bottom gives the area inside the shape. In order to define the top and bottom of the shape, the points may be ordered clockwise or counter-clockwise and the top or bottom is defined based on the sign of the traversal across the x-coordinates. In one example, the process for probability integration may be as follows: for a shape C with a set of ordered points C∈{(x0, y0), . . . , (xn, yn)}, evaluate a sub-integral of a Gaussian function G(x, y) between pairs of point (xi, yi) and (xi+1, yi+1). The two points and a common line ylow<yi form a trapezoid where the upper side is represented by line f(x)=mxi+b between the two y coordinates. The probability inside the trapezoid is then/where:
As there are cross terms present in G(x, y), that is x and y are correlated, the evaluation of the integral may be very complicated and computationally expensive. To simplify the above equation and make the integral tractable, the x-y dependence may be broken through the diagonalization of the covariance matrix Σ in G(x, y). The stacked eigenvectors of Σ provide a change of basis, or transformation matrix, to translate both the shot model and course areas into a diagonalized space. This 2×2 transformation matrix may be dented by VΣ and apply transformations like the following:
This transformation can be thought of as a rotation in the 2D plane, and an example of this transformation is illustrated in
With both the model and course area transformed into the ‘primed’ diagonalized space, the above equation can be simplified to:
The cost of making the Gaussian separable is a loss of resolution in the integration bounds. Note that the trapezoid integration have been reduced to a rectangular one to maintain the independence in x and y. Thus, ymax may be defined as the maximum between yi and yi+1. This bounds adjustment introduces a significant error in the sub integral with respect to the trapezoidal integration if the distance between the two points is large. To overcome this issue, additional points are interpolated along f(x) and each sub-integral is evaluated between the interpolated points rather than between the original points. The spacing chosen between points in the interpolation is a tunable parameter which is a function σx and Σy. The integral estimates maintain precision for interpolation widths less than σ.
After one sub-integral has been computed, the rest may be found by computing (xi+1, yi+1) with (xi+2, yi+2) and so on until the shape is closed with the final point pair (xn, yn) and (x0, y0). The total probability may be the sum (or difference) of sub-integral probabilities based on the traversal direction. This total probability P for a shot to land in the area may thus be defined by:
The computational performance of early implementations of the above processes fell short of desired a total desired runtime of less than 3 seconds, with (machine dependent) sub-integrals taking several seconds, a full course evaluation taking several minutes, and the course sweep taking over an hour when evaluating all club models. However, two developments make possible drastic improvements in the performance: (1) The simplification of the problem by diagonalization and (2) the added implementation of integral evaluation with compiled C++ code. In one implementation, the overall workflow may be constructed in python, but evaluation of probabilities, the course coordinate point management, diagonalization, sub-integral evaluation, and probability calculation are all handled in a compiled C++ module that is embedded in the python workflow. The performance of the C++ module far exceeds the previous implementation with sub integral performance on order micro seconds. With this improvement, the shot selection strategy platform 200 can perform higher precision integration (from interpolation) and increased sweep resolution (by a factors of ˜10-100) and have the total computation time to be approximately 2 seconds or less in full deployment.
In order to decrease computational time, probability integrations may be saved by the shot selection strategy platform 200 only for course shapes that are close enough to a specified dispersion to yield a non-negligible probability. For this prioritization, one heuristic is to only integrate course aspects that are at least 3Σmajor away from the center of the dispersion model, where Σmajor is defined as the length of the major axis for a given model. This ensures that at least roughly 1% of the dispersion model lies at or within a given course aspect.
For club recommendation, prioritization may be included to reduce the computational time as well as the logical selection of the recommended club. In one implementation, each club may be ordered based on a mean distance from the hole, where the smallest distance yields the highest priority. The strategy for determining priority is as follows: find the distance D from the player position to the hole, find the absolute residual distance Δyi with D and course frame i-th club μγ and sort by ascending Δyi.
Another degree of freedom that may be considered in addition to recommending a club is recommending an aim line or aim point. The aim line is defined as the line, or vector, from the origin to the hole (approximated as the green center) for the dispersion model in the original course frame. For example, the player's dispersion pattern may pull right or left of the hole, so the “optimal” shot would be to aim for off the hole by a certain amount of yards. To provide this recommendation, an angle sweep may be conducted, which rotates the dispersion model across a larger angle interval, [−θmax, θmax], in smaller angle sub-intervals, Δθ.
The sub-interval Δθ will change based on the distance of the dispersion model center from the player position, or (0, 0). For example, an angle sub-interval of 10 degrees for a Driver club, whose dispersion model corresponds to a total distance of 400 yards, will cover less area than a PW club, whose dispersion model corresponds to a total distance of 50 yards. To uniformize the “yard resolution”, r, of each angle, this is resolution may be specified first and approximated as the arc length of the angle swept out in the sub-interval such that:
where d is defined as the distance of the dispersion model from (0, 0) in the XY plane. Inverting this equation, given a yard resolution r and distance d, the Δθ for each dispersion model may be calculated. From here, the aim line may be determined, which is a vector that rotates with the dispersion model for a given Δθ. In some instances, θmax may be set to 45 degrees to capture a wide range of possible aim points.
The continuous, 2D Gaussian probability distribution fit to the dispersion data may be visualized as concentric ellipses to demarcate certain areas of probability corresponding to different “sigma” levels. An ellipse or an ellipsoid (a n-dimensional ellipse) can be represented as the set of points x that satisfy the following relationship in n-dimensional space:
Because the model is 2D, the x and m may be expressed as 2×1 vectors and the matrix A as 2×2. The ellipse produced from this equation is centered at m with its principal axes characterized by the eigenvectors of A, v0 and v1 (normalized). The eigenvalues of A correspond to the reciprocals of the squares of this axes, a−2 and b−2, such that:
The form in the equations may be similar to the exponent of a Gaussian, (x−μ)τΣ−1(x−μ), and as such we can visualize a 2D Gaussian as a continuous elliptic field centered at u with its axes set by the eigenvectors and eigenvalues of Σ. This intuitively makes sense since u centers the Gaussian and Σ dictates the width and orientation of the Gaussian through the variances and covariance, respectively. Since in the Gaussian form, the covariance matrix Σ is already inverted, the ellipse axis lengths are the square root of the eigenvalues of Σ. The eigenvectors of Σ correspond to one σ width, so multiplying the second and third terms by s gives the so ellipse. Points t on the interval of [0, 2π] may be generated to give to the above equation to generate the points x to be plotted. This may be done for the 1σ and 2σ ellipses, capturing roughly 68% and 95% of the probability distribution, respectively.
In the present disclosure, the methods disclosed may be implemented as sets of instructions or software readable by a device. Further, it is understood that the specific order or hierarchy of steps in the methods disclosed are instances of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the method can be rearranged while remaining within the disclosed subject matter. The accompanying method claims present elements of the various steps in a sample order, and are not necessarily meant to be limited to the specific order or hierarchy presented.
The described disclosure may be provided as a computer program product, or software, that may include a non-transitory machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the present disclosure. A machine-readable medium includes any mechanism for storing information in a form (e.g., software, processing application) readable by a machine (e.g., a computer). The machine-readable medium may include, but is not limited to, magnetic storage medium, optical storage medium; magneto-optical storage medium, read only memory (ROM); random access memory (RAM); erasable programmable memory (e.g., EPROM and EEPROM); flash memory; or other types of medium suitable for storing electronic instructions.
While the present disclosure has been described with reference to various implementations, it will be understood that these implementations are illustrative and that the scope of the present disclosure is not limited to them. Many variations, modifications, additions, and improvements are possible. More generally, embodiments in accordance with the present disclosure have been described in the context of particular implementations. Functionality may be separated or combined in blocks differently in various embodiments of the disclosure or described with different terminology. These and other variations, modifications, additions, and improvements may fall within the scope of the disclosure as defined in the claims that follow.
This application is related to and claims priority under 35 U.S.C. § 119 (e) from U.S. Patent Application No. 63/623,082, filed Jan. 19, 2024, titled “System and Method for Advising Golfers Based on Personalized Historical Data,” the entire contents of which is incorporated herein by reference for all purposes.
Number | Date | Country | |
---|---|---|---|
63623082 | Jan 2024 | US |