Integrated tilting platform for golf simulator
The integration of a tilting platform with inclinometer and an Integration Hub in golf simulators addresses the lack of terrain realism, offering a highly immersive and accurate golf simulation experience by dynamically adjusting the playing surface to match virtual terrain data.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- PLATFORM GOLF LTD
- Filing Date
- 2026-01-20
- Publication Date
- 2026-07-23
AI Technical Summary
Current golf simulators lack the ability to replicate the nuanced terrain features of real golf courses, particularly in putting and full-swing shots, leading to an unrealistic and inconsistent golfing experience.
Integration of a tilting platform with inclinometer technology and an Integration Hub to dynamically adjust the playing surface to match virtual terrain data, combined with ball tracking and projection systems for seamless synchronization and realistic feedback.
Provides a highly immersive and accurate golf simulation experience by replicating outdoor golf conditions, enhancing both putting and full-swing realism with precise slope validation and consistent ball movement.
Smart Images

Figure 00000063_0000 
Figure 00000064_0000 
Figure 00000065_0000
Abstract
Description
PPI-00225 INTEGRATED TILTING PLATFORM FOR GOLF SIMULATOR CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of priority to U.S. Provisional Application No.63 / 747,290, filed January 20, 2025, the contents of which are herein incorporated by reference in their entirety.BACKGROUND
[0002] Embodiments of the present disclosure relate to golf simulation training systems and methods, and more specifically, to golf simulators with an integrated tilting platform, ball tracking systems, projection systems, and their methods of operation.BRIEF SUMMARY
[0003] According to embodiments of the present disclosure golf simulating systems integrating a tilting platform are disclosed.
[0004] In some implementations, a golf simulation system comprises a tilting platform including a planar golf stroke surface, and at least one inclinometer affixed to the golf stroke surface; a projection screen located at one end of the tilting platform; at least one platform ball tracking system including a visual sensor, at least one simulation ball tracking system including a trigger and a sensor; at least one platform projection system including a projector; at least one simulation projection system including a projector; and an integration hub operatively connected to the tilting platform, the at least one platform and simulation ball tracking systems, and the at least one platform and simulation projection systems, the integration hub configured to perform a method comprising: instructing the simulation projection system to display a visual rendering of an environment surrounding a ball on the projection screen or the platform projection system toPPI-00260Page 1 of 63FOLEYHO AGUS 13248651.3PPI-00225 display a visual rendering on the tilting platform, actuating the tilting platform to tilt to a predetermined slope, and synchronizing the visual rendering with an incline of the tilting platform.
[0005] In some implementations, the method further comprises: instructing the platform ball tracking system to record ball movement data; and instructing the platform projection system to display a ball placement marker and a virtual hole on the tilting platform when a user performs a short putt.
[0006] In some implementations, actuating the tilting platform to tilt to a pre- determined slope comprises obtaining the ball movement data by the platform ball tracking system and translating the data into a slope, when the user performs a short putt.
[0007] In some implementations, the method further comprises instructing the platform ball tracking system to record ball movement data and the simulation ball tracking system to record ball flight data; and instructing the simulation projection system to display a flight path of the ball on the projection screen based on the ball movement data, when a user performs a long putt.
[0008] In some implementations, the ball movement data includes XY coordinates.
[0009] In some implementations, the method further comprises instructing the simulation ball tracking system to record ball flight data; instructing the simulation projection system to display a flight path of the ball on the projection screen based on the ball flight data, when a user performs an extra-long putt or full shot.
[0010] In some implementations, actuating the tilting platform to tilt to a pre-determined slope comprises calculating the slope based on the ball flight data from the simulation ball tracking system, when the user performs a shot that is not a short putt.
[0011] In some implementations, the ball flight data includes ball speed, launch angle, and / or spin.PPI-00260Page 2 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0012] In some implementations, the planar surface of the tilting platform comprises a platform hitting region and a simulation hitting region, located behind the platform hitting region.
[0013] In some implementations, the platform hitting region comprises fibers of a first length and the simulation hitting region comprises fibers of a second length, and wherein the second length is longer than the first length.
[0014] In some implementations, the method further comprises: validating the slope of the tilting platform by an inclinometer; and displaying a ready message to the user when the slope of the tilting platform matches the pre- determined slope.
[0015] In some implementations, the method further comprises: determining a shot to be a short putt, long putt, extra long putt, or full shot by comparing a dimensions of the tilting platform to the position of the ball within a virtual golf course.
[0016] In some implementations, a method for conducting a simulated golf game, comprises providing a system comprising: a tilting platform including a planar golf stroke surface, and at least one inclinometer affixed to the golf stroke surface; a projection screen located at one end of the tilting platform; at least one platform ball tracking system including a visual sensor, at least one simulation ball tracking system including a trigger and a sensor; at least one platform projection system including a projector; at least one simulation projection system including a projector; and an integration hub operatively connected to the tilting platform, the at least one platform and simulation ball tracking systems, and the at least one platform and simulation projection systems; instructing the simulation projection system to display a visual rendering of an environment surrounding a ball on the projection screen or the platform projection system to display a visual rendering on the tilting platform by the integration hub; actuating the tiltingPPI-00260Page 3 of 63FOLEYHO AGUS 13248651.3PPI-00225 platform to tilt to a pre- determined slope; and synchronizing the visual rendering with an incline of the tilting platform.
[0017] In some implementations, the method further comprises instructing the platform ball tracking system to record ball movement data; and instructing the platform projection system to display a ball placement marker and a virtual hole on the tilting platform when a user performs a short putt.
[0018] In some implementations, actuating the tilting platform to tilt to a pre- determined slope comprises obtaining the ball movement data by the platform ball tracking system and translating the data into a slope, when the user performs a short putt.
[0019] In some implementations, the method further comprises: instructing the platform ball tracking system to record ball movement data and the simulation ball tracking system to record ball flight data; and instructing the simulation projection system to display a flight path of the ball on the projection screen based on the ball movement data, when the user performs a long putt.
[0020] In some implementations, the ball movement data includes XY coordinates.
[0021] In some implementations, the method further comprises: instructing the simulation ball tracking system to record ball flight data; and instructing the simulation projection system to display a flight path of the ball on the projection screen based on the ball flight data, when the user performs an extra-long putt or full shot.
[0022] In some implementations, actuating the tilting platform to tilt to a pre-determined slope comprises calculating the slope based on the ball flight data from the simulation ball tracking system, when the user performs a shot that is not a short putt.PPI-00260Page 4 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0023] In some implementations, the ball flight data includes ball speed, launch angle, and / or spin.
[0024] In some implementations, the planar surface of the tilting platform comprises a platform hitting region and a simulation hitting region, located behind the platform hitting region.
[0025] In some implementations, the platform hitting region comprises fibers of a first length and the simulation hitting region comprises fibers of a second length, and wherein the second length is longer than the first length.
[0026] In some implementations, the method further comprises validating the slope of the tilting platform by an inclinometer; and displaying a “ready” message to the user when the slope of the tilting platform matches the pre- determined slope.
[0027] In some implementations, the method further comprises determining a shot to be a short putt, long putt, extra long putt, or full shot by comparing dimensions of the tilting platform to the position of the ball within a virtual golf course.BRIEF DESCRIPTION OF THE DRAWINGS
[0028] Fig. 1 is a block diagram illustrating systems communication in accordance with one or more embodiments of the present disclosure.
[0029] Fig. 2 is a top view of the layout of a simulation booth in accordance with one or more embodiments of the present disclosure.
[0030] Fig. 3 is a diagram of hardware tracking systems and hitting locations of a simulator booth in accordance with one or more embodiments of the present disclosure.
[0031] Fig. 4 is a top view of the tilting platform and simulator screen of a simulator booth, in accordance with one or more embodiments of the present disclosure.PPI-00260Page 5 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0032] Fig. 5 is a block diagram of message logic between the simulator API and tilting platform when various shots are performed, in accordance with one or more embodiments of the present disclosure.
[0033] Fig. 6 is a block diagram of the workflows that occur when various shots are performed, in accordance with one or more embodiments of the present disclosure.
[0034] Fig. 7 is a block diagram of computer logic taking place when various golf shots are performed, in accordance with one or more embodiments of the present disclosure.
[0035] Fig. 8 is a block flow diagram illustrating an exemplary method for determining putt results, in accordance with one or more embodiments of the present disclosure.
[0036] Fig. 9A-9D is a flow chart illustrating the session-level workflow that coordinates the simulator subsystem, the tilting platform, and, when enabled, the SAM subsystem as a golf session is carried out, in accordance with one or more embodiments of the present disclosure.
[0037] Fig. 10 is a sequence diagram illustrating session lifecycle, in accordance with one or more embodiments of the present disclosure.
[0038] Fig. 11 is a sequence diagram illustrating hole lifecycle, in accordance with one or more embodiments of the present disclosure.
[0039] Fig. 12 is a sequence diagram illustrating shot lifecycle, in accordance with one or more embodiments of the present disclosure.
[0040] Fig. 13 is a sequence diagram illustrating platform movement sequence, in accordance with one or more embodiments of the present disclosure.
[0041] Fig. 14 is a sequence diagram illustrating tracking expectations and two-step completion, in accordance with one or more embodiments of the present disclosure.PPI-00260Page 6 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0042] Fig. 15 depicts a computing node suitable for implementation of an integration hub according to one or more embodiments of the present disclosure.DETAILED DESCRIPTION
[0043] Golf simulators are typically limited to flat surfaces for both putting and full-swing shots, failing to replicate the terrain variety and nuances of real golf courses. Putting surfaces, in particular, lack the feel and roll of actual greens because they often use industrial or commercialgrade carpet. The fibers in these carpets tend to lay inconsistently, causing the ball to bounce unpredictably and roll in a manner that does not replicate the smoothness of outdoor putting greens. This inconsistency makes it difficult for players to practice or experience the subtleties of real putting. Additionally, full-swing shots are restricted to flat lies, even when the virtual course depicts slopes like uphill, downhill, or side-hill lies. These limitations detract from the realism and challenge of indoor golf.
[0044] In one potential approach, a tilting platform is incorporated in the hitting area. This platform, for example, a 5-foot by 5-foot square, tilts along the x-y axis to provide both pitch and roll, simulating various lies for full swings and chip shots. The platform is also designed to split in half, allowing the player’s feet to be on a different slope than the ball. For example, the feet can simulate an uphill or downhill lie, while the ball remains on a flat or opposing slope.
[0045] While this potential approach may provide slope simulation for full shots and chips, it does not address putting. It cannot replicate the slope or breaks of a putting surface, nor does it improve the consistency or realism of putting in a golf simulator. As a result, it falls short of providing a comprehensive solution for simulating the nuances of real golf terrain, particularly for the critical aspect of short-game practice.
[0046] Another potential approach is a configurable putting surface with numerous actuators or jacks positioned underneath. Each jack could be individually adjusted to create specific contours on PPI-00260Page 7 of 63FOLEYHO AGUS 13248651.3PPI-00225 the surface, such as double breaks or transitions from flat to sloped areas. This technology may be capable of generating irregular putting contours that mimic outdoor greens.
[0047] Despite the ability to create irregular slopes, such an approach has not been integrated into the golf simulator experience. A key limitation is that while such a system can control the height of each actuator to shape the surface, it lacks the ability to validate or match the created slope with the terrain data provided by the simulator software. For instance, the system cannot confirm or accurately replicate a 2% left-to-right break specified by the simulation software. This disconnect limits its potential for seamless integration and precision, leaving a gap in achieving a fully realistic and synchronized putting experience.
[0048] Therefore, there exists a need in the art to truly replicate the outdoor golf experience.Simulators must incorporate dynamic terrain features that enhance both the putting and full-swing experiences, addressing the lack of realism in current systems.
[0049] Unlike alternative simulators that fail to replicate outdoor conditions, the systems and methods described in the present disclosure provide players with a more realistic and engaging experience. The combination of ball tracking systems, projection systems, and an integrated tilting platform allow a player to experience nuances that would not typically be captured by conventional systems. Further, the synchronization between the hardware and software components of the described system allows users to practice a variety of shots (e.g., putts and long range-shots) and receive visual feedback regarding the outcomes of their strokes.
[0050] In some embodiments, a putting surface material is provided that is designed to create a smoother and more consistent ball roll, mimicking the speed and feel of a fast outdoor putting green. Traditional simulators often use indoor carpet, which can cause the ball to bounce and roll inconsistently, detracting from the authenticity of the experience. By addressing this issue, the quality of practice and gameplay for putting is improved.PPI-00260Page 8 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0051] User-friendly automation ensures minimal interaction is required, allowing players to focus solely on their performance.
[0052] The systems and methods described in the present disclosure integrate a tilting platform into golf simulators to replicate realistic slopes and breaks for both putting and full-swing shots. This enhances the physical realism of the playing surface. In various embodiments, an Integration Hub is provided that provides a central communication layer that ensures seamless interaction between the tilting platform’s hardware and software, the simulator software, and other integrated technologies.
[0053] In various embodiments, Inclinometer technology enables precise validation and confirmation that the slope created on the tilting platform matches the slope data provided by the golf simulation software. The Inclinometer measures the actual pitch and roll of the platform in real time, ensuring alignment with the intended terrain characteristics of the virtual course. This capability not only guarantees accuracy and consistency in slope replication but also sets the present disclosure apart from alternative solutions by enabling seamless integration and synchronization between the physical platform and the virtual environment. In various embodiments, the titling platform and Inclinometer may be those as described in U.S. Patent 11,465,026, which is hereby incorporated by reference.
[0054] In various embodiments, an Integration Hub manages the communication and data exchange necessary for this system. The simulator software provides terrain and ball position data to the Integration Hub, which processes this information and sends the required commands to the tilting platform. Additionally, the system incorporates a ball tracking and projection system that projects critical gameplay elements onto the platform’s surface, such as, but not limited to a virtual cup for short putts and the designated ball placement position, ensuring the correct starting location for recreating specific putts.PPI-00260Page 9 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0055] When a golfer hits a putt, the ball tracking system captures key metrics, including start direction, speed, and whether the ball successfully reaches the virtual cup. This data is sent to the Integration Hub, which relays the results to the simulator software. The simulator software updates the player’ s shot count and score accordingly, ensuring an accurate and immersive gameplay experience.
[0056] For short putts within a certain distance, the entire putting experience occurs on the tilting platform. For longer putts, the system provides a mixed experience: the golfer experiences the slope underfoot while starting the putt on the platform, and the ball tracking system captures start direction and speed when the ball hits the screen.
[0057] This data is transmitted to the Integration Hub and sent to the simulator software, where the virtual ball continues the simulated trajectory for scorekeeping and gameplay purposes.
[0058] By seamlessly integrating the tilting platform, ball tracking system, projection system, and simulator software through the Integration Hub, this solution transforms golf simulators, delivering a truly immersive and realistic experience.
[0059] As set out herein, embodiments of the present disclosure provide a tilting platform technology that integrates into golf simulators, allowing the hitting and putting surfaces to dynamically adjust to simulate realistic terrain slopes and breaks. This approach bridges the gap between indoor and outdoor golf by recreating the nuanced challenges of varying lies and putting greens. In various embodiments, Inclinometer technology is used to validate and confirm that the slope created on the physical platform matches the slope data provided by the golf simulation software. This ensures precise alignment between the physical and virtual environments. The platform’s seamless integration with simulator software enables automated adjustments to match the conditions of the virtual course, enhancing immersion, accuracy, and authenticity.PPI-00260Page 10 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0060] Exemplary systems and methods according to the present disclosure include various components. In various embodiments, the system includes a tilting platform. The platform surface may be covered with synthetic grass carpeting, for example short-nap carpeting used for putting, or for example deeper-nap carpeting for non-putting golf strokes. In various embodiments, the putting surface may comprise fibers of a first length, and the non-putting surface may comprise fibers of a second length. In such embodiments, the fibers of the nonputting surface may be longer than the fibers of the putting surface. The synthetic grass carpeting may include an even distribution of fibers to prevent the fibers from bunching and rolling and causing a textured pattern from forming after repetitive use.
[0061] In some implementations, the system may project a cup or hole on the surface of the tilting platform for the user to aim for.
[0062] The tilting platform may be capable of adjusting pitch and roll to simulate slopes in the x-y axis. Movement of the planar surface may be facilitated using a plurality of actuators, such as electric actuators, attached, such as directly attached, to the underside of the planar putting stroke surface. In some implementations, the plurality of actuators may be located at each comer as well as at the middle of the planar putting stroke surface. In other implementations, the plurality of actuators may be located at the corners of the surface only. In other implementations, the plurality of actuators may be located at the middle of the surface only. In some implementations, the tilting platform may be actuated to adjust the tilt of the surface to create an uphill or downhill surface (defined as the pitch of the surface), as well as tiling in the left-to-right or right- to-left directions (defined as the roll of the surface), generating a desired slope. In such implementations, the pitch and roll of the surface may be represented, measured, recorded, and adjusted as percentages, units or length, or by any other suitable means. In operation, thePPI-00260Page 11 of 63FOLEYHO AGUS 13248651.3PPI-00225 actuators enable precise movements based on data from the golf simulation software and support both full- swing and putting experiences.
[0063] In various embodiments, the system also includes an Inclinometer. The inclinometer may be positioned on the underside of the planar surface and coupled to the plurality of actuators. In operation, the inclinometer validates that the physical slope created by the platform matches the terrain data provided by the simulation software. The inclinometer provides real-time feedback to ensure alignment between the physical and virtual environments.
[0064] In various embodiments, an existing ball tracking system is integrated into the systems provided herein for tracking putts. One suitable system is the Science and Motion (SAM) ball tracking system. An exemplary ball tracking system may comprise a visual sensor mounted to a frame or ceiling of the platform simulation booth. In some instances, the visual sensor may include but is not limited to a camera, ultrasonic sensor, or infrared sensor and may allow for at least 180 degrees of detection. In some instances, the visual sensor may be housed in a moveable or stationary free-standing body, which may be placed next to a user as they perform a shot. In other instances, the visual sensor may be mounted in any suitable or conventional location. The visual sensor may be actuated to record to a golfer as he / she takes a putt. The camera may send said recording to a Science and Motion (SAM) PuttWare device and an Integration Hub for processing (described in more detail below), which tracks ball movement data, which includes the direction, speed, XY coordinates, and resting position of the ball after each putt or shot. Further, the system is adapted to determine whether the ball enters the virtual / projected cup for short putts or records data for longer putts that transition to the virtual environment. In some implementations, any other suitable or conventional ball tracking systemPPI-00260Page 12 of 63FOLEYHO AGUS 13248651.3PPI-00225 may be implemented. For example, and without limitation, the ball tracking system may include NFC or RFID tracking systems and methods.
[0065] In various embodiments, a simulation ball tracking system is also integrated into the systems provided herein. The simulation ball tracking system may detect longer range putts and full shots. The system may include a single or plurality of cameras or radars mounted in any suitable location to capture images and recording of the platform surface. For example, and without limitation, the cameras or radars may be mounted overhead on a ceiling or at a side of the platform. In some implementations, the simulation ball tracking system may include a trigger. The trigger may be any suitable motion sensor which detects when a golfer is on the platform and generates a signal to actuate the cameras / radar. When actuated by signals from the trigger, the cameras / radars may capture images of the ball’s positions and / or the golfer’s stroke which are sent to a computer / controller / API where they are processed according to conventional ball tracking computational methods. Such ball flight data includes the ball speed, launch angle, spin, and is used to generate a simulated flight path which can be displayed on the projection screen. In some instances, the simulation ball tracking system may include the system described in U.S. Patent 11,167,203, the contents of which are incorporated herein by reference, any other components of conventional systems, or may function according to any other known methods in the art.
[0066] In various embodiments, the system further includes a projection system comprising a projector and screen. The projector may be mounted at one distal end of the booth or room and the screen may be mounted at the other distal end, such that the two are directly across from one another. The projector may include any suitable projector capable of projecting visual elements, such as the virtual cup and designated ball placement position / marker, onto the platform surfacePPI-00260Page 13 of 63FOLEYHO AGUS 13248651.3PPI-00225 and / or screen. The golfer may stand on the tilting platform positioned between the screen and projector in order to hit a ball. The projection system enhances user experience by clearly indicating where the golfer should position the ball and visualizing putting outcomes.
[0067] In some instances, the system may include a second, simulation projection system for specifically projecting elements only onto the screen. In other instances, the two projection systems may be partially or wholly combined into one projecting device.
[0068] In various embodiments, an Integration Hub serves as the central communication layer for the system. The Integration Hub (described further below) may include a communication processor of any suitable type adapted to send and receive data from the various hardware and software components of the system. The Integration Hub may receive terrain and ball position data from the simulator software and sends commands to the tilting platform, ball tracking system, and projection system. Further, the hub may process data from the ball tracking system and communicate results back to the simulator software to update the player’s score and gameplay. In some instances, the Integration Hub may be a cloud-based API.
[0069] In operation, the system performs a series of steps. The first step includes a golf simulation application processing integration (API) sending terrain data, including slope angles and ball position, to the Integration Hub. The Integration Hub translates this data into commands for the tilting platform to adjust its pitch and roll.
[0070] The second step includes slope validation. The Inclinometer measures the platform’s physical slope and compares it to the intended slope from the software. Adjustments are made in real-time to ensure precise alignment.
[0071] The next step is gameplay. For example, when the golfer is taking short putts, he / she places the ball on the designated ball placement marker projected onto the platform. The ballPPI-00260Page 14 of 63FOLEYHO AGUS 13248651.3PPI-00225 tracking system monitors the putt’s direction and speed, determining whether it enters the virtual cup. For longer putts, the ball tracking system collects initial data as the ball transitions to the virtual environment, where the simulation software continues the ball’s trajectory.
[0072] Next, Score Updates are generated. The Integration Hub processes data from the ball tracking system and communicates results back to the simulator software. The player’s shot count and score are updated based on the putt or shot outcome.
[0073] In some implementations, the above-described method is implemented by the Integration Hub, which may include one or more processing devices (e.g., a digital processor, an analog processor, a digital circuit designed to process information, a state machine, and / or other mechanisms for electronically processing information). The one or more processing devices may include one or more devices configured through hardware, firmware, and / or software to be specifically designed for execution of one or more of the operations of method. More generally, the Integration Hub may be implemented by any suitable computing node as described more fully below.
[0074] In various embodiments, the terms “hardware ball tracking system” and “simulator ball tracking system” refer to the same components and the two terms are used interchangeably herein. In particular, a simulator ball tracking system uses hardware-based ball tracking.Furthermore, the terms “SAM ball tracking system” and “platform ball tracking system”, and terms “SAM projection system” and “platform projection system” refer to the same components and the two terms are used interchangeably herein.
[0075] Fig. 1 is a block diagram 100 illustrating systems communication components and connections with respect to one another, in accordance with one or more embodiments of the present disclosure. The systems may include a Science and Motion (SAM) sub-system 101, aPPI-00260Page 15 of 63FOLEYHO AGUS 13248651.3PPI-00225 platform sub-system 102, and a golf simulator sub-system 103. The SAM system may include a SAM PuttWare device 101a, the SAM projection system 101b, and the SAM ball tracking system 101c. The components and orientation of the projection system and ball tracking system are described above. The SAM PuttWare 101b may be any conventional or suitable computer or processor capable of receiving and transmitting computer-readable instructions. It may allow for communication and synchronization between the SAM projection system 101a and the SAM ball tracking system 101c. In operation, the SAM projection system 101a may be disposed overhead relative to a golfer and project a marker for the placement of the golf ball on a tilting platform. In some implementations, the projection system 101a may also project the putting path corridor and the ball’s movement path onto the surface of the platform. The golfer may then hit the ball with the intention of landing it in the projected cup. From there, the overhead SAM ball tracking system 101c may collect ball movement data to measure the distance traveled by the ball and other relevant data for determining the direction and final distance traveled by the ball and the projection system 101a may project the ball path onto the platform as the ball travels towards the hole. Said data may be passed to the SAM PuttWare 101b to determine the next position for marking the location of the ball. The position data of the ball may be passed back to the projection system 101a from the SAM PuttWare 101b for the process to be repeated again. Data may also be transmitted in both directions. For example, the ball tracking system 101c and projection system 101a may both send and receive data from the SAM PuttWare 101b.
[0076] The communication system may also include a platform sub- system 102. The platform sub-system may include a platform controller 102a, Integration Hub 102b, and the moveable tilting platform 102c. The platform controller 102a may be any standard, suitable computer or processor for actuating the movement of the moveable tilting platform according to receivedPPI-00260Page 16 of 63FOLEYHO AGUS 13248651.3PPI-00225 information from the Integration Hub 102b. Data may be exchanged between the platform controller 102a and Integration Hub 102b in both directions.
[0077] In operation, when a golfer is putting, the Integration Hub 102b may receive information from the SAM PuttWare 101b, which includes data received from the SAM projection system 101a and SAM ball tracking system 101c, to properly actuate the movement of the moveable platform. During a putt, the SAM ball tracking system 101c may utilize the ball movement data to track the location of the ball and use said data to calculate the ball’s final position as well as the topography at that location within the virtual golf course. The information may be transmitted to the SAM PuttWare 101b and passed to the Integration Hub 102b. The Integration Hub 102b may pass information regarding the slope and tilt of the ball’s final location such that the platform controller may instruct the moveable platform 102c to move and mimic said slope and tilt by the actuators on the underside of the platform. The inclinometer may then verify that the actual slope of the platform matches the slope transmitted by the SAM PuttWare device 101b. The projection system 101a may then project a ball placement marker onto the platform 102c, providing instruction for where the golfer should position the ball for their next stroke.
[0078] In some implementations, SAM ball tracking may automatically be initialized when a user takes a short or long putt. In some other implementations, SAM ball tracking may be turned off for short and / or long putts, either by the user or automatically by the Integration Hub 102b.
[0079] The communication system may also include a golf simulator sub-system (Simulator) 103. The golf- simulator sub-system may include a hardware ball tracking system 103a, a simulator API 103b, and simulator software 103c. The hardware ball tracking system 103a may be capable of tracking ball flight data, including a ball’s distance traveled and location inside the projected golfing simulation. Based on the ball flight generated when a golfer takes a shot, thePPI-00260Page 17 of 63FOLEYHO AGUS 13248651.3PPI-00225 Simulator API 103b may interact with the simulation software 103c to generate the proper visuals (e.g., the location on a golf course where the ball lands and the flight path trajectory of the ball) onto the projection screen. The Simulator API 103b may also determine the slope at the resting position of the ball within the virtual golf course and pass said data to the Integration Hub 102b. Data may also be transmitted and received in both directions. The hardware tracking system 103a may send and receive data to the simulator API 103b and the simulator software 103c may send and receive data from the simulator API 103b. Likewise, the simulator API 103b may be connected to the Integration Hub 102b to send and receive data in order to adjust the position of the moveable platform 102c based on information received from the golf simulator sub-system 103. The inclinometer may then verify that the actual slope of the platform is correct before a golfer takes a shot.
[0080] In operation, when a golfer takes a shot that is not a short putt (e.g., a chip, drive, fairway shot, extra-long putt / long putt, extra-long putt, full shot), the hardware ball tracking system 103a may be initialized. The system 103a may determine the distance traveled by the ball and its final location. The simulator API 103b may receive said ball flight data and interface with the simulator software 103c to project visuals of the ball within the golf course at the appropriate locations. For example, if the ball travels at a certain angle, speed, and distance, the hardware ball tracking system 103a and simulator API 103b may extrapolate said data to determine the simulated flight path trajectory and final position of the ball within the simulation. Said information may also be passed to the Integration Hub 102b where it is used to instruct the platform controller 102a and platform 102c to adjust to a corresponding angle.PPI-00260Page 18 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0081] In various embodiments, both the SAM ball tracking system and hardware ball tracking system may be initialized to capture ball movement and ball flight data when a golfer performs a long putt.
[0082] Putt types are defined with respect to the size and configuration of the platform 102c surface. In various implementations, the platform surface may be a variety of sizes. Therefore, short putts are defined as putts that travel within the perimeter of the platform surface. Long putts are defined as putts that travel within the perimeter and up to the edge where the platform and screen meet. In some implementations, short putts and long putts may be defined by numerical distance values. In such implementations, short putts may be defined as putts of up to 12 feet; long putts may be defined as putts of up to 30 feet. Extra-long putts are defined as putts which would travel past the platform surface perimeter and contact the projection screen, and accommodate simulator tracking systems with limited putt tracking ability. All other shots, such as drives, are those that would extend past the length of the platform surface and would contact the projection screen.
[0083] The Integration Hub may automatically recognize a shot as a short putt, long putt, extra long putt, or full shot based on the distance between the ball and the hole within the virtual golf course and with respect to the dimensions of the platform. For example, and without limitation, the Integration Hub may receive information about the ball’s position within the virtual golf course with respect to the hole and compare it to the dimensions of the platform. If the distance from the ball to the hole is within the area of the tilting platform, the shot may be recognized as a short putt. In another example, the if the distance from the ball to the hole matches the length of the platform, the shot may be classified as a long putt. In another example, if the distance from the ball to the hole matches the length of the platform plus the distance to the projection screen,PPI-00260Page 19 of 63FOLEYHO AGUS 13248651.3PPI-00225 the shot may be classified as an extra-long putt. In another example, if the distance from the ball to the hole exceeds the length of the platform plus the distance to the screen, the shot may be classified as a long putt.
[0084] Fig. 2 is a top view of the layout of a simulation booth / enclosure 200 in accordance with one or more embodiments of the present disclosure. The booth 200 may include a simulator screen positioned at one end. A moveable tilting platform 102c may be positioned in front of the screen and fill the floor of the booth. In some implementations, the width of the platform 102c may match the width of the projector screen. In other implementations, the width of the platform 102c may be shorter than the width of the projector screen, leaving static, unmoving floor area 205 on the sides surrounding the platform.
[0085] The booth may further include a SAM projecting system 101a and SAM ball tracking system 101c (components discussed above), and a simulator overhead projector 204 and a hardware / simulator ball tracking system 103a (discussed above). In some implementations the SAM projection system 101a, SAM ball tracking system 101c, and the simulator ball tracking system 103a may all be located overhead of a user performing a golf shot. In some implementations, the SAM overhead projector 101a and SAM overhead ball tracking system 101c may be positioned at a forward location (closer to the screen) relative to the simulator overhead projector 204 and simulator overhead ball tracking system 103a. In operation, when a short putting stroke is performed by the golfer, the SAM overhead projector 101a and SAM overhead ball tracking system 101c are actuated to track the ball’s location and project corresponding imaging onto the platform 102c surface. Alternatively, when a long putt is performed by the golfer, the SAM tracking system 101c may be actuated to track the ball’s movement, but the simulation projector 204 may display the ball’s movement on the projectionPPI-00260Page 20 of 63FOLEYHO AGUS 13248651.3PPI-00225 screen. When a stroke that is not a short or long putt (e.g., drive, fairway shot) is performed, the simulator overhead projector 204 and simulator overhead ball tracking system 103a may be actuated to track the ball’s location and project corresponding imaging onto the screen.
[0086] In some implementations, the SAM ball tracking 101c and projection system 101a and simulation ball tracking 103a and projections 204 systems may be mounted at any suitable location with respect to the platform surface and projection screen.
[0087] Referring to Fig. 3 and Fig. 4, diagrams 300, 400 of the hardware tracking systems and hitting locations of the platform integration simulator booth and putting and hitting surfaces are shown. As discussed above, the booth may include a SAM system and a simulator system. The moveable tilting platform 102c may include two regions. A first region, the platform hitting location 207, may be located directly in front of the screen and extending a distance back. The second region, the simulator (SIM) hitting location 208, may be located directly behind the first region, separated from the screen by the first region. In various embodiments, platform hitting location 207 may comprise fibers of a first length, and the simulator (SIM) hitting location 208 may comprise fibers of a second length. In such embodiments, the fibers of the simulator (SIM) hitting location 208 may be longer than the fibers of the platform hitting location 207. The platform hitting location 207 may be the area where the golfer stands in order to perform a short or long putt. Conversely, the simulator hitting region 208 may be where the golfer stands in order to perform a stroke that is not a short or long putt. The material on the platform hitting location 207 may imitate a putting green, whereas the material of the SIM hitting location 208 may imitate the fairway or the rough of a golf course.PPI-00260Page 21 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0088] In some instances, the platform hitting location 207 may be longer than the SIM hitting location 208. In other instances, the SIM hitting location 208 may be longer than the platform hitting location 207.
[0089] In some implementations, the SAM ball tracking system may be actuated when a golfer interacts with the platform hitting location 207. On the other hand, the simulator ball tracking and projection system may be actuated when a golfer interacts with the SIM hitting location 208.
[0090] Fig. 5 is a block diagram 300 of the message logic between the simulator API and tilting platform when various shots are performed, in accordance with one or more embodiments of the present disclosure. In operation, when a golfer is ready to perform a shot at step 301, the simulator API is actuated. A user may set up to perform a full shot, extra-long putt, or long putt at step 302. Data will be received from the Simulator API, through the Integration Hub, and to the platform controller as to the appropriate slope of the platform at step 303 based on the terrain of the virtual course. The platform controller will then control the platform to move to the appropriate slope at step 304. Once the platform is ready and tilted in the corrected position, the simulator API may be notified. The Simulation software may display a cue, such as the phrase “READY” to the golfer through the projection screen at step 305. The golfer may then hit their shot at step 306.
[0091] Alternatively, when a golfer is ready to perform a shot other than a full shot, long putt, or extra-long putt at step 302, the simulator API is actuated in order to send and receive data for updating the ball’s position (e.g., XY coordinates) within the virtual golf course and communicate with the golfer. A user may set up to perform a short putt at step 302. Data will be received from the Simulator API at step 303, through the Integration Hub, and to the platform controller as to the appropriate slope of the platform at step 304. At this point, the IntegrationPPI-00260Page 22 of 63FOLEYHO AGUS 13248651.3PPI-00225 Hub may also receive data (e.g., XY coordinates) from the SAM ball tracking system as to the ball’s physical location on the platform in order to control the platform to the appropriate slope at step 304. Data will also be transmitted to notify the golfer as to where the ball should be positioned with respect to the platform. The SAM overhead projector may use said data to project a designated ball marker on the platform for the user to place the ball. The platform controller will then control the platform to move to the appropriate slope. Once the platform is tilted in the correct position and the designated ball placement marker is displayed, the simulator API may be notified. The SAM ball tracking system will actuate in preparation for tracking the shot. The Simulation software may display the phrase “READY” to the golfer at step 305. The golfer may then hit their shot at step 306.
[0092] Fig. 6 is a block flow diagram 400 of the workflows that occur when various shots are performed, in accordance with one or more embodiments of the present disclosure. A golfer may set up to perform a shot at step 401. In an instance where the golfer takes a full shot or an extra-long putt at step 402, the simulator tracking and projection system may be actuated. The golfer performs a shot at step 404. Shot data is not necessarily collected by the SAM ball tracking or projection system in these instances at step 405, and the simulation software may not actuate any change at step 406. At step 407, the golfer may finish the shot and the workflow may be ended.
[0093] In an instance where the golfer takes a long putt at step 402, the SAM ball tracking system only may be actuated at step 403. In some implementations, both the SAM and simulation ball tracking systems may both be actuated at step 403. The simulation projection system may display cup / hole on the projection screen. Once the golfer hits the ball at step 404, the SAM ball tracking system may collect ball movement data including the ball speed andPPI-00260Page 23 of 63FOLEYHO AGUS 13248651.3PPI-00225 direction at step 405. Said data may be used to display the movement of the ball on the projection screen at step 406. The simulation projection system may then show a user how their ball traveled after impact with the club, its final resting position, and whether it made it into the cup / hole.
[0094] In an instance the golfer takes a short putt at step 402, the SAM ball tracking and projection system may be actuated at step 403. The SAM projection system may display a projection overlay of a designated ball marker, where the ball is to be placed before taking the shot, as well as a virtual cup / hole on the surface of the tilting platform. Once the golfer hits the ball at step 404, the SAM ball tracking system may collect data regarding the ball speed and direction at step 405. Said data may be used to project tracking contours on the tilting platform to enable the golfer to visualize how the ball moved upon impact at step 406. In some implementations, at step 406, the SAM projection system may be configured to automatically project ball path contours onto the platform surface. In some implementations, the SAM projection system may be toggled to turn the projection of the putting corridor and ball path contours on or off. Putting corridor is defined as the ideal visual and physical path for a putter head to travel and the acceptable range of start lines for a golf ball, creating a "corridor of forgiveness," to help golfers visualize and practice hitting putts with better consistency and speed control. The projection may enable the golfer to see the ball’s final resting position, and whether it made it into the cup / hole.
[0095] Fig. 7 is a block diagram 500 of a method taking place when various golf shots are performed, in accordance with one or more embodiments of the present disclosure. Prior to the user taking a shot, the tilting platform may be actuated the proper pitch and roll. In some implementations, the SAM putting system may use ball movement data, which includes the X,PPI-00260Page 24 of 63FOLEYHO AGUS 13248651.3PPI-00225 Y, and Z coordinates of the platform surface at the ball’s previous end point / the ball’s new starting position, which includes the starting angle and direction, to calculate the specifications of the tilting platform. In other implementations, the simulation system may use the average slope from about 5-6 feet around the hole to determine the platform’s position in addition to recorded ball flight data.
[0096] At step 501, the golfer may perform a shot. In instances where the golfer takes an extralong putt, the ball will hit the simulator screen at step 502. Shot data is not necessarily collected from the SAM ball tracking or projection systems at step 503. Extrapolative calculations are carried out by the simulation ball tracking system in order to determine the ball’s total distance traveled and simulated flight path trajectory. These are optionally projected onto the screen by the simulation projection system for user viewing at step 504. In instances where the golfer takes a long putt, the ball will contact the simulator screen at step 502. The SAM ball tracking system may be actuated to determine the ball’s speed and direction at step 503. However, the ball’s motion and the virtual cup / hole are displayed by the simulation projection system on the projection screen at step 504. In instances where the golfer takes a short putt that rolls over / lands in the cup / hole at step 502, the SAM ball tracking system and projection system is actuated. The SAM projection system may project a virtual cup / hole onto the platform and a marker for where the ball should be placed before the shot is performed. When a golfer performs the shot at step 501, the SAM projection system may project the ball’s travel path contours onto the platform as well as the ball’s speed. When the ball lands in the cup / hole at step 502, the SAM ball tracking system record’s the ball’s finish location as “0” at step 503. Thus, a follow up ball placement marker to inform the user of the ball’s new position on the platform will not be generated.In instances where the golfer takes a short putt that misses the cup / hole at step 502, the SAM ballPPI-00260Page 25 of 63FOLEYHO AGUS 13248651.3PPI-00225 tracking system and projection system is actuated at step 503. The SAM projection system may project a virtual cup / hole onto the platform and a marker for where the ball should be placed before the shot is performed. When a golfer performs the shot, the SAM projection system may project the ball’s travel path contours onto the platform as well as the ball’s speed. When the ball comes to rest in an end position after impact, the SAM ball tracking system records the ball’s finish location relative to the virtual cup / hole. A follow up projection to inform the user of the ball’s new position on the platform will be generated for the next shot until the ball lands in the cup / hole.
[0097] Fig. 8 is a block flow diagram 600 illustrating an exemplary method for determining putt results, in accordance with one or more embodiments of the present disclosure. In some instances, the simulation API may be adapted to keep track of a golfer’s score / the number of putts taken for the ball to land in the cup / hole.
[0098] In practice, putts are categorized into three types as discussed above: extra-long putt, long putt, and short putt. When a golfer sets up to take a shot, the simulator API is actuated to display a position on a golf course where the golfer will take their swing at step 601 and the Science and Motion (SAM) sub-system 101, a platform sub-system 102, and a golf simulator sub-system 103 may initialize to process a new golf shot at step 602. When the golfer performs the putt at step 603, the putt type may be determined at step 604. In instances where the putt taken is an extra-long putt or long putt at step 605, the SAM ball projection system is not actuated at step 606. Instead, the simulation projection system is actuated to display the virtual cup / hole on the projection screen at step 607. In some implementations, both the SAM ball tracking system and simulation ball tracking system are actuated during a long putt. The ball’s movement pattern and speed are replicated on the projection screen for display to the golfer. ThePPI-00260Page 26 of 63FOLEYHO AGUS 13248651.3PPI-00225 ball’s final position within the simulated golf course may be recorded and transmitted back to the Simulator API for setting up subsequent shots.
[0099] In instances where the golfer performs a short putt at step 605, the SAM ball tracking and projection system are actuated at step 606. The ball’s starting position, movement contour, speed, and a virtual cup / hole may be projected onto the platform by the SAM projection system. Short putts may travel on the platform without contacting the screen. Therefore, a golfer will interact primarily with the ball on the platform, although the golfer’s score may be projected onto the simulation screen. The SAM system is adapted to measure the ball’s final position after the golfer takes the putt at step 608. This information may be passed to the Simulator API. At step 609, the simulator software may perform a series of determinations to calculate a player’s score. If the ball’s finish location is equal to “0”, the Simulator API will record that the ball landed in the cup / hole. One “fake shot’Vpoint may be added to the golfer’s score before ending the golfer’ s turn for that shot.
[0100] When the golfer misses the cup / hole (e.g., the ball’s final position is not equal to “0”), the SAM ball tracking system may determine whether the ball’s final position is within a “Gimme” range. The Gimme range is defined by a putt that is considered so short that it can be counted automatically without being played. When a ball lands within the Gimme range, two “fake shots’Vpoints will be added to the golfer’s score before ending a golfer’s turn for that shot.
[0101] If the final position of the ball is not within the “gimme” range, one “fake shot’Vpoint will be added to the golfer’s score before ending a golfer’s turn for that shot and the virtual ball on the simulation screen is moved to a new location. In some instances, a single golfer may use the system alone. In other instances, two or more golfers may use the system in conjunction, taking turns, to emulate playing on an outdoor golf course.PPI-00260Page 27 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0102] Referring now to Fig. 9A-D, a flowchart depicting the session-level workflow that coordinates the simulator subsystem, the tilting platform, and, when enabled, the SAM subsystem, as a golf session is carried out, is shown in accordance with the embodiments of the disclosure described above. At step 701, the simulator API requests a new session to begin by sending a message to the Integration Hub. In various embodiments, the simulator API may perform step 701 at the prompting of a user. For example, and without limitation, the user may prompt the simulator API to request the start of a new session by selecting a button on a user interface.
[0103] At this point, the simulator API may send certain preferences to the Integration Hub to guide the new session. In various embodiments, these preferences may include a shot clock length, whether the SAM ball tracking system should be used, and / or whether metric or imperial units should be used in ball tracking and slope calculations.
[0104] At step 702, the Integration Hub may check whether another session is currently running. If another session is active, the Hub may send the simulator API a “Active Session In Progress” message at step 703. The Integration Hub may then check whether the tilting platform is physically connected and responsive at step 704, and if the SAM ball tracking system has been requested, whether it is online. Should any one of the checks fail, the failure information may be transmitted to the Simulator API and the request may be rejected at step 705. For example, the should the titling platform be disconnected from the rest of the system, the Integration Hub may send the Simulator API a “platform not ready” message at step 705.
[0105] At step 706, if all of the checks are passed, the Integration Hub may check whether putt tracking is required for the duration of the session. If the answer is no, the tilting platform may be locked for exclusive use throughout the entire session at step 707.PPI-00260Page 28 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0106] If the answer at step 706 is yes, the Integration Hub may then check whether the SAM subsystem is ready and connected at step 708. If the SAM sub-system is not connected and ready, the Integration Hub may send the simulator API a “Putt Tracking Not Available” message at step 708. If the SAM sub- system is connected and ready at step 708, the platform may be locked, and the Integration Hub may send the Simulator API a “Session started with Putt Tracking Message” at step 709. At this point, the Simulator API may start the session with or without SAM ball tracking.
[0107] Following steps 703, 705, and 708, the Simulator API may send the golf session, performs a “clean up” which places the components of the system in an idle state, and displays a “Session Ended” message to the user at step 710.
[0108] Referring now to Fig. 9B-C a continuation of the flow chart depicting the shot-level workflow that coordinates the simulator subsystems, the tilting platform, and, when enabled, and SAM subsystems during a golf session, is shown in accordance with the embodiments of the disclosure. The following steps are repeated for each shot a user takes during the session until it is over. At the shot level, the Integration Hub implements pre-flight checks, platform positioning, and an orchestrator that adapts to shot type.
[0109] At step 711, the Integration Hub may receive a “start shot” request from the simulator API identifying a shot category and movement parameters. At step 712, the Integration Hub checks whether a session is active. If no session is active, the Integration Hub may relay a “No Active Session in Progress Message” at step 713. If the Integration Hub verifies that a session is active, it may check whether another shot is in progress at step 714, it may continue to step 715 to confirm the platform is online and ready. If another shot is active at step 714, the Integration Hub may relay an “Active Shot in Progress” message at step 715.PPI-00260Page 29 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0110] The Integration Hub may then check whether the platform is online and ready at step 716.If the platform is not connected or malfunctioning, the Integration Hub may relay “Platform is Not Ready Message” at step 717. If the platform is connected and ready, at step 718, the Integration Hub may check whether the shot requires putt tracking (that the SAM ball tracking system must be active). If the Integration Hub verifies that putt tracking is required, it may proceed to step 719 where it also verifies that the putt- tracking is ready. If the SAM ball tracking system is not initialized and ready, the Integration Hub may relay a “Putt Tracking Not Ready” message at step 720.
[0111] The Hub then validates the shot request at step 721, when it determines that the SAM ball tracking system is ready and initialized or that putt tracking is not required. At step 722, the Integration Hub may determine whether the incoming movement data is valid (whether the SAM ball system is operational and not malfunctioning). If the movement data at step 722 is invalid, the Integration hub may relay an “Invalid Movement Data” message at step 723.
[0112] At step 724, the Integration Hub may assess the shot type based on the terrain and simulation data received from the Simulator API. For short putts, the Hub may request the SAM ball tracking system to translate the ball’s XY position and aiming data into slope values used to compute a desired platform pose at step 725. If the response / data received from the SAM ball tracking system is “OK” at step 726, the Hub may proceed to translate the ball’s XY position and aiming data into slope values used to compute a desired platform pose at step 727.
[0113] If the response is not “OK”, the Integration Hub may relay a “Putt Tracking is not Available” message at step 728. Response data from the SAM ball tracking data may be unsuitable when the system is non- operational or unable to capture accurate XY coordinates for ball movement and resting position (e.g., the system is being obstructed by an object).PPI-00260Page 30 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0114] For other shot categories (e.g., long putts, extra-long putts, full shots) the Hub computes the platform pose directly from simulator-provided slope percentages at step 729. If the platform is already in the desired position at step 730, the Hub confirms “platform in position” at step 731.Otherwise, it issues an advance warning and then moves the platform in the background at step 732, reporting success or a movement error at step 733.
[0115] When the platform is in position, the system may project a message on the screen queuing the golfer to begin their shot at step 734.
[0116] Referring now to Fig. 9D, a continuation of the flowchart shown in Fig, 9A-C is depicted, showing the steps involved in shot orchestration is depicted in accordance with embodiments of the disclosure. Once the platform is confirmed to be in position, the shot orchestrator proceeds along one of two branches by determining the shot type to be taken at step 735. For shots with putt tracking (e.g., short and long putts, when tracking is enabled), the Hub commands the putt-tracking subsystem to start in a mode appropriate to the shot length at step 736; it waits up to a defined readiness window for confirmation at step 737, then signals the simulator that the ball is ready to be struck and begins the shot clock at step 738. In some embodiments, the defined readiness window may be 15 seconds. During the shot clock interval, the Hub awaits the tracking outcome at step 739; if the outcome arrives it formats and transmits the appropriate putt result to the simulator (e.g., “short putt outcome,” including holed / missed and updated ball coordinates if missed at step 740; or “long putt outcome,” including ball start direction and speed at step 741). If readiness fails, the tracking response errors, or the shot times out, the Hub returns a relevant status message at step 742 or step 743.PPI-00260Page 31 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0117] If during the defined readiness window, the SAM ball tracking system fails to record data or malfunctions, the Integration Hub may relay a “Putt Tracking Not Available Message” at step 744.
[0118] For shots without SAM putt tracking (e.g., full shots and extra-long putts, or when tracking is explicitly disabled), the Hub signals “ready to hit” and starts the shot clock at step 745 and waits for simulator ball tracking system acknowledgement that the shot completed at step 747 or timing out with a corresponding status at step 748. In some implementations, the shot clock may run for up to 30 seconds while waiting for a user to perform a shot. In some implementations, the shot clock may run for up to 45 seconds while waiting for a user to perform a shot. In some implementations, the shot clock may run for up to 60 seconds while waiting for a user to perform a shot. In some implementations, the shot clock may run for up to 75 seconds while waiting for a user to perform a shot. In some implementations, the shot clock may run for up to 90 seconds while waiting for a user to perform a shot. In some implementations, the shot clock may run for up to 120 seconds while waiting for a user to perform a shot. In some implementations, the shot clock duration may be adjustable by the user.
[0119] In all cases, the Hub’s cleanup routine stops any active tracking, clears the “active shot” state, and cancels background tasks, returning the system to a known idle state consistent with the workflows described above at step 749.
[0120] The workflows described in Figs. 9A-9D ensure that issues are discovered before a session or shot begins. Furthermore, the messages relayed by the Integration Hub convey to the rest of the system clearly issues that arise. The incorporation of a shot clock ensures that the session is never excessively prolonged. Lastly, the Integration Hub’s cleanup routine ensures that the system remains in an idle state after each shot, prepared for the next shot.PPI-00260Page 32 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0121] The Integration Hub’s internal software is architected using a modular, interface-driven approach that maintains consistent workflow and logic core. In various embodiments, alternative hardware and protocol adapters for simulator and putt-tracking providers can be used. Under this design, session management, shot lifecycle, validation, timing, and message semantics remain invariant, while provider- specific adapters implement transport and device particulars. This separation allows new simulators or tracking systems to be added without altering the core orchestration depicted in the flowcharts.
[0122] The Integration Hub also relies on structured configuration and state objects.Configuration values, such as whether to use the putt-tracking system, the short- and long-putt maximum lengths, metric or imperial units, projection toggles for start line, corridor, and ball path, and the shot clock timeout duration, are set at session start. The Hub persists and references a session state object holding the active options and a shot state object that tracks whether a shot is in progress and the most recent shot request. These structures support the conditional paths of the flowcharts shown in Fig. 9A-D and as described above, and the logic described herein.
[0123] Consistent with the flow diagrams, method entry points include: starting a new session, ending the current session, cancelling the current shot, setting putt-tracking projection options, and starting a new shot. Supporting methods queue background movement jobs to reposition the platform, queue the shot orchestrator job, run cleanup, and deliver standardized messages and outcomes to the simulator and the putt-tracking system. These methods implement the state transitions and messaging in the flowcharts in a manner that ensures a seamless simulation experience for the user.
[0124] Exemplary Software SpecificationsPPI-00260Page 33 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0125] In some implementations, the software by which the Integration Hub, Simulator API, and SAM Puttware system operate on may define various enums, classes, and methods. Exemplary systems and methods described herein may operate based on the following specifications.However, one of ordinary skill in the art will readily recognize that the various specifications described herein are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments.
[0126] Enums
[0127] In some implementations, the Integration Hub may define an enum PlatformMovementType which may represent the directional modes of inclination achievable by the tilting platform, including left-to-right roll, right-to-left roll, uphill pitch, and downhill pitch, each corresponding to a commanded change about one of two substantially orthogonal axes to realize lateral or longitudinal slope conditions.
[0128] In some implementations, the Simulator API may define an enum ShotType which may represent the classification of golf strokes used to select distinct orchestration workflows, including FullShot for any stroke not on the green or within the short-putt range, ExtraLongPutt for putts longer than a configured long-putt maximum length, LongPutt for putts longer than a configured short-putt maximum and at or below the configured long-putt maximum, ShortPutt for putts at or below the configured short-putt maximum, and explicit variants LongPuttWithoutPuttTracking and ShortPuttWithoutPuttTracking indicating that putt tracking is not to be used notwithstanding general session settings.
[0129] In some implementations, the Simulator API may define an enum ShotClockTimeoutType which may represent selectable durations for a shot clock timeout usedPPI-00260Page 34 of 63FOLEYHO AGUS 13248651.3PPI-00225 to bound waiting intervals during orchestration, including options such as ThirtySeconds, FortyFiveSeconds, SixtySeconds, SeventyFiveSeconds, NinetySeconds, and OneHundredTwentySeconds, each corresponding to the number of seconds indicated by its name.
[0130] In some implementations, the Simulator API may define an enum SimulatorAimingPointDirectionType which may represent the lateral direction of an aiming point relative to the center of the cup for short-putt setups, including Left to denote an aiming offset to the left of cup center and Right to denote an aiming offset to the right of cup center.
[0131] In some implementations, the SAM PuttWare may define an enum PuttTrackingSystemOutcomeType which may represent the binary outcome states determined by the putt-tracking subsystem for short-putt workflows, including Missed for a putt that does not enter the cup and Holed for a putt that enters the cup.
[0132] In some implementations, the Simulator API may define an enum SimulatorMessageType which may represent standardized status and outcome messages transmitted to the simulator during session and shot lifecycles, including PlatformlsInPo sition to indicate that the platform has reached the desired pose, PlatformWillMoveToPosition to provide an advance warning of platform motion, ActiveShotlnProgress to indicate that a new shot request conflicts with an ongoing shot, PlatformlsNotReady to indicate that the platform is offline or unavailable, PuttTrackinglsNotAvailable to indicate a tracking readiness failure or timeout, InvalidMovementData to indicate validation failure for slope or ball-position inputs, ErrorMovingPlatform to indicate a motion control fault, ErrorGettingPuttTrackingResponse to indicate a tracking-response fault, ShotClockTimeout to indicate expiration of the configured shot clock, NonPuttTrackingShotCompleted to acknowledge completion of a non-tracked shot,PPI-00260Page 35 of 63FOLEYHO AGUS 13248651.3PPI-00225 ReadyToHit to signal that the user may strike the ball, SessionStartedWithPuttTracking and SessionStartedWithoutPuttTracking to acknowledge session start with or without tracking, SessionEnded to acknowledge session termination, NoActiveSessionlnProgress and ActiveSessionlnProgress to reflect session state queries, UpdatedPuttTrackingProjectionOptions to acknowledge projection-option updates, and ShotCancelled to acknowledge cancellation of an active shot.
[0133] In some implementations, the SAM PuttWare may define an enum PuttTrackingSystemMessageType which may represent standardized commands and notifications exchanged with the putt-tracking subsystem, including PlatformlsInPo sition to confirm that the platform pose is ready for tracking, PlatformWillMoveToPosition to warn of imminent motion that may affect tracking readiness, StartPuttTrackingLongPutt to command initialization of long-putt tracking, StartPuttTrackingShortPutt to command initialization of short-putt tracking, and StopPuttTracking to command termination of an active tracking session.
[0134] Exemplary Classes
[0135] In some implementations, the Integration Hub exports the Simulator API, which defines various classes.
[0136] In some implementations, the Simulator API may define a class SimulatorConfigurationOptions which may represent configurable options supplied at session start, including whether an external putt-tracking system is used, the unit system for lengths, short- and long-putt distance thresholds, projection toggles for ideal start line, putting corridor, and ball path overlays, and the selected shot-clock timeout duration. In these implementations, the Integration Hub may read and persist these options for subsequent orchestration and validation.PPI-00260Page 36 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0137] In some implementations, the Simulator API may define a class SimulatorSessionState which may represent internal session state for the active simulator session, including a stored SimulatorConfigurationOptions instance and a SimulatorShotState instance reflecting the current shot lifecycle.
[0138] In some implementations, the Simulator API may define a class SimulatorShotState which may represent the active shot status and data, including a boolean flag indicating whether a shot is in progress and, when present, a cached SimulatorShotRequest corresponding to the most recent request received from the simulator.
[0139] In some implementations, the Simulator API may define a class SimulatorShotRequest which may represent a normalized request object for initiating any shot type and may include a required ShotType enumeration value together with either slope data or ball-position data as appropriate to the shot type; in particular, Slope is required for full shots, extra-long putts, long putts, and explicitly non-tracked variants, while BallPosition is required for short putts.
[0140] In some implementations, the Simulator API may define a class SimulatorSlope which may represent slope parameters for platform positioning, including roll and pitch components. The roll component may include a PlatformMovementType value indicating left-to-right or right-to-left roll together with a roll percentage bounded within a defined range, and the pitch component may include a PlatformMovementType value indicating uphill or downhill pitch together with a pitch percentage bounded within a defined range.
[0141] In some implementations, the Simulator API may define a class SimulatorBallPosition which may represent short-putt positioning inputs and may include the AimingPoint and the HolePosition (which may be determined based on the average slope within the 5-6 ft radius surrounding the hole) associated with the contemplated putt.PPI-00260Page 37 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0142] In some implementations, the Simulator API may define a class SimulatorAimingPoint which may represent aiming guidance relative to the cup and may include a distance from the cup center and a direction value indicating whether the aim point lies to the left or right of the cup center.
[0143] In some implementations, the Simulator API may define a class SimulatorHolePosition which may represent hole-relative geometry for the current short-putt setup and may include a distance-to-hole from the ball position and a hole-elevation value, with positive elevation denoting uphill, negative elevation denoting downhill, and zero denoting level.
[0144] In some implementations, the Simulator API may define a class SimulatorLongPuttOutcome which may represent a putt-tracking outcome for long-putt workflows and may include a ball start- direction angle measured relative to the straight line from ball to hole and a measured ball speed.
[0145] In some implementations, the Simulator API may define a class SimulatorShortPuttOutcome which may represent a putt-tracking outcome for short-putt workflows and may include an outcome type indicating a holed or missed putt and, when the putt is missed, updated ball-position coordinates along X and Y relative to the cup for subsequent placement and play.
[0146] Exemplary Methods
[0147] In some implementations, the Integration Hub may define a method StartNewSession(SimulatorConfigurationOptions options) which may start a new simulator session by validating readiness of required subsystems, persisting configuration options, and locking the tilting platform for exclusive use by the simulator for the duration of the session.PPI-00260Page 38 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0148] In some implementations, the Integration Hub may define a method EndCurrentSessionQ which may terminate the active session by running cleanup routines, unlocking the tilting platform for general use, and notifying the simulator that the session has ended.
[0149] In some implementations, the Integration Hub may define a method EndCurrentShotQ which may cancel a shot that is currently in progress by immediately invoking the cleanup routine and notifying the simulator that the shot has been cancelled.
[0150] In some implementations, the Integration Hub may define a method SetPuttTrackingProjection(bool projectldealStartLine, bool projectPuttingCorridor, bool projectB allPath) which may configure projection options for the putt-tracking system, including toggles for an ideal start line, a putting corridor, and a projected ball path, and may acknowledge that the projection options have been updated.
[0151] In some implementations, the Integration Hub may define a method StartNewShot(SimulatorShotRequest request) which may initiate processing of a new shot request by validating session state, checking platform readiness, verifying putt-tracking availability where applicable, validating movement data, positioning the platform as required, and queuing the appropriate orchestration workflow for putt-tracked or non-putt-tracked shots.
[0152] In some implementations, the Integration Hub may define a method QueueMovePlatformAsBackgroundJobO which may handle movement of the tilting platform to a desired position as a background task, including issuing advance motion warnings, monitoring motion completion, reporting “platform in position,” and surfacing motion control errors.
[0153] In some implementations, the Integration Hub may define a method QueueShotOrchestratorAsBackgroundJob() which may execute the shot workflow as a background task, branching logic between putt-tracked and non-putt-tracked scenarios.PPI-00260Page 39 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0154] In some implementations, the Integration Hub may define a method RunCleanUpTaskQ which may clear active shot state, stop any active putt-tracking session, cancel outstanding background tasks, and restore the system to a known idle state ready for subsequent requests.
[0155] In some implementations, the Simulator API may define a method SendMessageToSimulator(SimulatorMessageType messageType) which may transmit standardized status or outcome messages to the simulator components, including platformposition notifications, readiness signals, error conditions, session lifecycle messages, shot-clock timeouts, and acknowledgements.
[0156] In some implementations, the Simulator API may define a method SendLongPuttOutcomeToSimulator(SimulatorLongPuttOutcome outcome) which may deliver a long-putt result to the simulator components, including at least a measured ball start- direction relative to the hole line and a measured ball speed.
[0157] In some implementations, the Simulator API may define a method SendShortPuttOutcomeToSimulator(SimulatorShortPuttOutcome outcome) which may deliver a short-putt result to the simulator components, including whether the putt was holed or missed and, when missed, updated ball-position coordinates relative to the cup.
[0158] In some implementations, the SAM PuttWare may define a method SendMessageToPuttTrackingSystem(PuttTrackingSystemMessageType messageType) which may communicate commands and notifications to the putt-tracking subsystem, including warnings before platform motion, confirmation of platform position, commands to start shortputt or long-putt tracking, and commands to stop tracking.
[0159] In some implementations, the Integration Hub may operate based on an API that utilizes Representational State Transfer (REST) framework or Remote Procedure Call (gRPC)PPI-00260Page 40 of 63FOLEYHO AGUS 13248651.3PPI-00225 framework. The system comprises an engine library that executes a deterministic state machine with validation and messaging, an API host that exposes REST and gRPC endpoints with optional webhooks, and demo or production simulators and putt-tracking clients interfacing via the defined contracts.
[0160] In some implementations, the engine enforces deterministic state transitions through a single SemaphoreSlim gate, ensuring serialized access, and publishes a message stream through a channel and a MessageEmitted event while allowing only a single active session and shot in the SsgState at any time. In certain implementations, the state model constrains operations so that a session must be active to start a hole, a hole must be active to start a shot, and ending a hole is blocked while a shot is in progress, thereby preserving ordered lifecycle semantics.
[0161] In some implementations, injected dependencies include a connection manager for platform readiness and slope control, an asynchronous delay mechanism for movement warnings, a system clock for deterministic timestamps, and a tracker availability checker for external tracker health when tracking is required.
[0162] In some implementations, the engine maintains a provider model that allows registration of at most one simulator and one tracker at a time, associates providers with environment allowances, and ends tracked sessions upon tracker unavailability. In certain implementations, the engine state includes exclusive lock status, session and shot states, hole activity and numbering, current shot type and slope, provider identifiers, and pending telemetry / ball tracking and projection options.
[0163] In some implementations, a configuration model specifies Environment (e.g., Prod, Uat, Dev), Mode (SimulatorOnly, PuttTrackingOnly, or SimulatorAndTracker), and MovementWamingDelaySeconds within a range of 3 to 10 seconds. The configuration modelPPI-00260Page 41 of 63FOLEYHO AGUS 13248651.3PPI-00225 may operate in a SimulatorOnly, PuttTrackingOnly, or SimulatorAndTracker mode based on the scenario and user preferences. In some implementations, configuration must precede provider registration and session initiation, and configuration changes are prevented while a session is active. In certain implementations, an environment allowance ladder is enforced per provider call such that Dev-only providers cannot operate in Uat or Prod, and Uat providers are restricted to Dev environments per defined rules.
[0164] A system may be tracked via the following variables, which may be at the following states:ExclusiveLockState: Unlocked, LockedSessionState: Inactive, ActiveShotState: None, InProgressShotAwaiting: None, TrackerOutcome, SimulatorcompletionIsHoleActive, CurrentHoleNumberActiveSession, CurrentShotType, CurrentShotSlopeProviderOnline, SimulatorProviderld, TrackerProviderldPendingShotTelemetry, AppliedProjectionOptions
[0165] A session must be active to start a hole, and a hole must be active to start a shot. The EndHole mode is blocked while ShotState is InProgress.
[0166] In some implementations, the engine emits error messages for invalid requests, unauthorized operations, and environment violations, and may cancel shots or terminate sessions when provider availability or state constraints are not satisfied. In certain implementations, tracked sessions may conclude with a ProviderUnavailable reason when a tracker goes offline, preserving integrity of the session state.PPI-00260Page 42 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0167] Referring now to Fig. 10, a sequence diagram illustrating session lifecycle in accordance with one or more embodiments of the present disclosure is depicted.
[0168] In some implementations, starting a session transitions the engine to an active state and is permitted in SimulatorOnly or SimulatorAndTracker modes for simulators, and in PuttTrackingOnly for trackers, with corresponding session started and ended messages emitted. In certain implementations, control can be reclaimed by the host, and session conclusion may occur by host directive or normal termination.
[0169] Referring now to Fig. 11, a sequence diagram illustrating hole lifecycle in accordance with one or more embodiments of the present disclosure is depicted.
[0170] In some implementations, a hole may be started only during an active session, and EndHole mode is blocked while a shot is in progress to preserve atomicity of shot execution. In certain implementations, the engine emits hole started and ended messages with the relevant hole number payloads.
[0171] Referring now to Fig. 12, a sequence diagram illustrating shot lifecycle in accordance with one or more embodiments of the present disclosure is depicted.
[0172] In some implementations, shot initiation defines a shot type and target slope, and the platform readiness and motion sequence is orchestrated through messages such as PlatformWillMove, PlatformlnPosition, and ReadyToHit prior to a strike. Completion differs by shot type: full shots, long putts, extra-long putts, and short putts are validated with type-specific telemetry / tracking rules, and trackers may be expected to supply telemetry before the shot is finalized.
[0173] Referring now to Fig. 13, a sequence diagram illustrating platform movement sequence in accordance with one or more embodiments of the present disclosure is depicted.PPI-00260Page 43 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0174] In some implementations, a movement sequence includes readiness evaluation, optional delayed movement warnings based on configured delay seconds, motion to a specified slope, and confirmation that the platform is within tolerance before declaring readiness to hit.
[0175] In certain implementations, slope may be provided directly as pitchPercent and rollPercent clamped to [-4, +4], or indirectly through a surface normal vector in canonical axes where +X is right, +Y is forward, and +Z is up with level defined as (0, 0, 1). In some implementations, conversion from a surface normal uses arctangent-based computations for rollAngle and pitchAngle, and applies tangent transformations to percent slope with clamping to safety limits, and a movement tolerance of 0.01 percent is enforced.
[0176] In some implementations, telemetry / ball tracking objects include LongPuttTelemetry with ballSpeed, startLine, xMm, yMm, and optional outcome, and ShortPuttTelemetry with required outcome and conditional xMm and yMm when the outcome is missed.
[0177] In certain implementations, validation rules prohibit putt telemetry / tracking for full shots, require long putt telemetry for long or extra-long putts, and require short putt telemetry / tracking for short putts, including that a missed short putt must include positional coordinates. In some implementations, the coordinate system origin is the hole center, units are millimeters, +X is the player’s right at address, and +Y extends beyond the hole from the address position.
[0178] Referring now to Fig. 14, a sequence diagram illustrating tracking expectations and two-step completion in accordance with one or more embodiments of the present disclosure is depicted.
[0179] In some implementations, when tracking is required for long putts or short putts, the engine enables TrackerLongPuttExpected or TrackerShortPuttExpected modes, receives telemetry, signals outcome readiness, and then finalizes the shot with completion messages. ThePPI-00260Page 44 of 63FOLEYHO AGUS 13248651.3PPI-00225 engine ensures that telemetry is supplied by the appropriate provider and declares ShotOutcomeReady prior to ShotFinalised, enforcing an orderly two-step completion.
[0180] In some implementations, a tracker declares supported PuttProjectionFeature flags, a simulator queries tracker capabilities, and the simulator sets projection options that are then applied subject to capability constraints, with unsupported flags reported in the applied payload. In certain implementations, the engine emits a ProjectionOptionsApplied payload containing requested, applied, and unsupported features to enable deterministic projection behavior.
[0181] In some implementations, the engine emits messages as MessageEnvelope instances comprising a unique message identifier, UTC timestamp, optional correlation identifier, message category, message type, a description, optional details, and a typed payload. In certain implementations, categories may include session, shot, platform, tracker, and error, and message types include events such as SessionStarted, SessionEnded, PlatformWillMove, PlatformlnPosition, ReadyToHit, HoleStarted, HoleEnded, ShotStarted, ShotOutcomeReady, ShotFinalised, TrackerLongPuttExpected, TrackerShortPuttExpected, TrackerCapabilities, ProjectionOptionsApplied, various error types, and HostShutDown. In some implementations, payload shapes correspond to event semantics, such as hole numbers, delay seconds and target slope for platform motion, shot type and slope for shot start, telemetry and provider context for outcome readiness, and reasons for cancellations or errors.
[0182] Representational State Transfer (REST) Host
[0183] In some implementations, a REST API is exposed at a base route of / api / ssg using camelCase JSON with numeric enums, and supports authentication using API keys in headers or bearer tokens. In certain implementations, the API response schema includes success, error, andPPI-00260Page 45 of 63FOLEYHO AGUS 13248651.3PPI-00225 message fields, and provides endpoints for configuration, provider registration and state, sessions, holes, shots, projection, platform control, control / stop, diagnostics, and webhooks.
[0184] In some implementations, webhooks are registered with a POST to / api / ssg / webhooks, the host posts SsgApiMessage payloads for each message, and optional HMAC signing uses an X-Ssg- Signature based on the raw payload and provider API key.
[0185] Remote Procedure Protocol (gRPC) Host
[0186] In some implementations, a gRPC service mirrors the REST endpoints under a service identified as PlatformGolf.Ssg.Grpc.SsgService with authentication via metadata keys, supports streaming message subscriptions, and may support UDP discovery via configurable options. In certain implementations, custom adapters may interface directly with the engine through an adapter bridge and lifecycle callbacks, and a host shutdown pathway emits a HostShutdown event and invokes corresponding callbacks during application stop.
[0187] Examples
[0188] In some implementations, the Integration Hub may operate based on an API that utilizes varying architectural styles / frameworks as described above.
[0189] Example#!: REST
[0190] In some implementations, the Integration Hub, simulation ball tracking system, and platform ball tracking system may operate based on an API that utilizes Representational State Transfer (REST) framework.
[0191] In this example, the sequence assumes SimulatorAndTracker mode with usePuttTracking: true, platform ready, and initial slope at 0,0. Each step performed by the components of the system may include a call, payload, a resulting next step, and / or state change.PPI-00260Page 46 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0192] During a set up phase, the Simulator registers the provider. The call: POST / api / ssg / providers / register. Payload: Simulator ProviderDefinition. Next: mark simulator online.
[0193] The ball tracking systems register the provider. Call: POST / api / ssg / providers / register. Payload: Tracker ProviderDefinition. Next: mark tracker online and available.
[0194] The Simulator marks online. Call: POST / api / ssg / providers / connection. Payload: { "isOnline": true }.
[0195] The ball tracking systems are marked online. Call: POST / api / ssg / providers / connection. Payload: { "isOnline": true }.
[0196] The ball tracking systems are marked available. Call: POST / api / ssg / providers / availability. Payload: { "isAvailable": true }.
[0197] The Simulator configures the engine. Call: POST / api / ssg / configure. Payload: { "environment": 2, "mode": 2, "movementWamingDelaySeconds": 5 }.
[0198] The Simulator registers webhooks. Call: POST / api / ssg / webhooks. Payload: { "url": "https: / / sim-host / webhooks / ssg" }.
[0199] The ball tracking system registers webhook. Call: POST / api / ssg / webhooks. Payload: { "url": "https: / / tracker-host / webhooks / ssg" }.
[0200] During a subsequent phase, a session is started. Call: POST / api / ssg / session / start.Webhook: SessionStarted (MessageType 0). State change: SessionState -> Active.
[0201] While playing a first hole, a first shot is performed. Simulator starts FullShot. Call: POST / api / ssg / shot / start. Webhooks in order: ShotStarted (8), PlatformWillMove (3), PlatformlnPosition (4), ReadyToHit (5).PPI-00260Page 47 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0202] Simulator completes FullShot. Call: POST / api / ssg / shot / complete. Payload: { "shotType": 0, "longPutt": null, "shortPutt": null, "correlationld": null }. Webhook:ShotFinalised (9). State change: ShotState -> None.
[0203] During a second shot, playing the same hole, Simulator starts LongPutt. Call: POST / api / ssg / shot / start. Webhooks: ShotStarted (8), PlatformWillMove (3), PlatformlnPosition (4), ReadyToHit (5), TrackerLongPuttExpected (11).
[0204] The platform ball tracking system sends telemetry. Call: POST / api / ssg / shot / complete. Webhook: ShotOutcomeReady (10). State change: ShotAwaiting -> Simulatorcompletion.
[0205] Simulator finalizes LongPutt. Call: POST / api / ssg / shot / complete. Payload: { "shotType": 2, "longPutt": null, "shortPutt": null, "correlationld": null }. Webhook:ShotFinalised (9). State change: ShotState -> None.
[0206] During a third shot while playing the same hole, the Simulator starts ShortPutt. Call: POST / api / ssg / shot / start. Webhooks: ShotStarted (8), PlatformWillMove (3), PlatformlnPosition (4), ReadyToHit (5), TrackerShortPuttExpected (12).
[0207] The ball tracking system(s) sends telemetry. Call: POST / api / ssg / shot / complete.Webhook: ShotOutcomeReady (10).
[0208] The Simulator finalizes ShortPutt. Call: POST / api / ssg / shot / complete. Payload: { "shotType": 3, "longPutt": null, "shortPutt": null, "correlationld": null }. Webhook:ShotFinalised (9).
[0209] The Simulator then ends hole 1. Call: POST / api / ssg / hole / end. Payload: { "correlationld": null }. Webhook: HoleEnded (7). State change: IsHoleActive -> false.
[0210] The steps performed during the first hole are then repeated for subsequent holes, updating holeNumber to 2, 3, etc.PPI-00260Page 48 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0211] Simulator then ends session. Call: POST / api / ssg / session / end. Payload: { "correlationld": null }. Webhook: SessionEnded (1). State change: SessionState -> Inactive.
[0212] Example #2: gRPC
[0213] In some implementations, the Integration Hub, simulation ball tacking system, and platform ball tracking system may operate based on an API that utilizes a remote procedure call (gRPC) framework.
[0214] In this example, the sequence assumes SimulatorAndTracker mode with usePuttTracking: true, platform ready, and initial slope at 0,0. Each step performed by the components of the system may include a call, payload, a resulting next step, and / or state change.
[0215] During a setup phase, the Simulator registers the provider. Call: RegisterProvider with Simulator ProviderDefinition.
[0216] The ball tracking systems register the provider. Call: RegisterProvider with Tracker ProviderDefinition.
[0217] The Simulator is marked as online. Call: NotifyProviderConnection { isOnline: true }.
[0218] The ball tracking systems are marked as online and available. Call:NotifyProviderConnection { isOnline: true }. Call: NotifyProvider A vailability { isAvailable: true }.
[0219] The Simulator configures the engine. Call: Configure { environment: DEV, mode:SIMULATOR_AND_TRACKER, movementWarningDelaySeconds: 5 }.
[0220] A message stream is started (both simulator and tracker). Call: SubscribeMessages { includeExisting: false, clearExisting: false }.PPI-00260Page 49 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0221] A session may be started, simulating a first hole. Simulator starts session. Call:StartSession { usePuttTracking: true, shotClockSeconds: null, correlationld: "" }. Stream:SESSION_STARTED.
[0222] The Simulator starts hole 1. Call: StartHole { holeNumber: 1 }. Stream:HOLE_STARTED.
[0223] Simulator starts a FullShot. Call: StartShot { shotType: FULL_SHOT, pitchPercent: 0.5, rollPercent: 0.25 }. Stream: SHOT_STARTED, PLATFORM_WILL_MOVE, PLATFORM_IN_POSITION, READY_TO_HIT.
[0224] The Simulator completes FullShot. Call: CompleteShot { shotType: FUEE_SHOT }. Stream: SHOT_FINAEISED.
[0225] The Simulator starts EongPutt. Call: StartShot { shotType: EONG_PUTT, pitchPercent: 0.5, rollPercent: 0.25 }. Stream: SHOT_STARTED, PEATFORM_WILE_MOVE, PEATFORM_IN_POSITION, READY_TO_HIT, TRACKER_EONG_PUTT_EXPECTED.
[0226] The ball tracking system sends telemetry. Call: CompleteShot { shotType:LONG_PUTT, longPutt: { ballSpeed: 2.5, startLine: 0.2, xMm: 80, yMm: -40 } }. Stream:SHOT_OUTCOME_READY.
[0227] The Simulator then finalizes LongPutt. Call: CompleteShot { shotType: LONG_PUTT }. Stream: SHOT_FINALISED.
[0228] Simulator starts a ShortPutt. Call: StartShot { shotType: SHORT_PUTT, pitchPercent: 0.5, rollPercent: 0.25 }. Stream: SHOT_STARTED, PLATFORM_WILL_MOVE, PLATFORM_IN_POSITION, READY_TO_HIT, TRACKER_SHORT_PUTT_EXPECTED.
[0229] The ball tracking systems send telemetry / tracking data. Call: CompleteShot { shotType: SHORT_PUTT, shortPutt: { outcome: HOLED } }. Stream: SHOT_OUTCOME_READY.PPI-00260Page 50 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0230] The Simulator finalizes ShortPutt. Call: CompleteShot { shotType: SHORT_PUTT }. Stream: SHOT_FINALISED.
[0231] The Simulator ends hole 1. Call: EndHole { }. Stream: HOLE_ENDED.
[0232] The steps performed during the first hole are then repeated for subsequent holes, updating holeNumber to 2, 3, etc.
[0233] Simulator then ends the session. Call: EndSession { }. Stream: SESSION_ENDED.
[0234] The operations of methods presented in Fig. 1-14 are intended to be illustrative. In some implementations, the methods are accomplished with one or more additional operations not described and / or without one or more of the operations discussed. The operations of the methods may be performed in another order. Additionally, the order in which the operations of methods are illustrated in Fig. 1-14 and described above are not intended to be limiting.
[0235] Fig. 15 illustrates a computing node 10 in the form of a general-purpose computing device suitable for implementation of the Integration Hub described herein. The components of system 12 may include, but are not limited to, one or more processors or processing units 16, a system memory 28, and a bus 18 that couples various system components including system memory 28 to processor 16.
[0236] Bus 18 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, Peripheral Component Interconnect (PCI) bus, Peripheral Component Interconnect Express (PCIe), and Advanced Microcontroller Bus Architecture (AMBA).PPI-00260Page 51 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0237] Computer system / server 12 typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system / server 12, and it includes both volatile and non-volatile media, removable and non-removable media.
[0238] System memory 28 can include computer system readable media in the form of volatile memory, such as random access memory (RAM) 30 and / or cache memory 32. Computer system / server 12 may further include other removable / non-removable, volatile / non- volatile computer system storage media. By way of example only, storage system 34 can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a "hard drive"). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk"), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to bus 18 by one or more data media interfaces. As will be further depicted and described below, memory 28 may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of embodiments of the disclosure.
[0239] Program / utility 40, having a set (at least one) of program modules 42, may be stored in memory 28 by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. Program modules 42 generally carry out the functions and / or methodologies of embodiments as described herein.PPI-00260Page 52 of 63FOLEYHO AGUS 13248651.3PPI-00225
[0240] Computer system / server 12 may also communicate with one or more external devices 14 such as a keyboard, a pointing device, a display 24, etc.; one or more devices that enable a user to interact with computer system / server 12; and / or any devices (e.g., network card, modem, etc.) that enable computer system / server 12 to communicate with one or more other computing devices. Such communication can occur via Input / Output (I / O) interfaces 22. Still yet, computer system / server 12 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and / or a public network (e.g., the Internet) via network adapter 20. As depicted, network adapter 20 communicates with the other components of computer system / server 12 via bus 18. It should be understood that although not shown, other hardware and / or software components could be used in conjunction with computer system / server 12. Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.
[0241] The present disclosure may be embodied as a system, a method, and / or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present disclosure.
[0242] The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computerPPI-00260Page 53 of 63FOLEYHO AGUS 13248651.3PPI-00225 diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
[0243] Computer readable program instructions described herein can be downloaded to respective computing / processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and / or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and / or edge servers. A network adapter card or network interface in each computing / processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing / processing device.
[0244] Computer readable program instructions for carrying out operations of the present disclosure may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk,PPI-00260Page 54 of 63FOLEYHO AGUS 13248651.3PPI-00225 C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user’ s computer, partly on the user’ s computer, as a stand-alone software package, partly on the user’s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user’s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure.
[0245] Aspects of the present disclosure are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer readable program instructions.
[0246] These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in the flowchart and / or block diagram block or blocks. These computerPPI-00260Page 55 of 63FOLEYHO AGUS 13248651.3PPI-00225 readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and / or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function / act specified in the flowchart and / or block diagram block or blocks.
[0247] The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions / acts specified in the flowchart and / or block diagram block or blocks.
[0248] The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and / or flowchart illustration, and combinations of blocks in the block diagrams and / or flowchart illustration, can be implemented by special purpose hardware-based systems thatPPI-00260Page 56 of 63FOLEYHO AGUS 13248651.3PPI-00225 perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
[0249] The descriptions of the various embodiments of the present disclosure have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.PPI-00260Page 57 of 63FOLEYHO AGUS 13248651.3
Claims
PPI-00225CLAIMSWhat is claimed is:
1. A golf simulation system comprising:a tilting platform including a planar golf stroke surface, and at least one inclinometer affixed to the golf stroke surface; a projection screen located at one end of the tilting platform;at least one platform ball tracking system including a visual sensor,at least one simulation ball tracking system including a trigger and a sensor;at least one platform projection system including a projector;at least one simulation projection system including a projector; andan integration hub operatively connected to the tilting platform, the at least one platform and simulation ball tracking systems, and the at least one platform and simulation projection systems, the integration hub configured to perform a method comprising: instructing the simulation projection system to display a visual rendering of an environment surrounding a ball on the projection screen or the platform projection system to display a visual rendering on the tilting platform,actuating the tilting platform to tilt to a pre-determined slope, and synchronizing the visual rendering with an incline of the tilting platform.
2. The golf simulation system of Claim 1, wherein the method further comprises:instructing the platform ball tracking system to record ball movement data; and instructing the platform projection system to display a ball placement marker and a virtual hole on the tilting platform when a user performs a short putt.Page 58 of 63FOLEYHO AGUS 13248651.3PPI-00225 3. The golf simulation system of Claim 2, wherein actuating the tilting platform to tilt to a pre-determined slope comprises obtaining the ball movement data by the platform ball tracking system and translating the data into a slope, when the user performs a short putt.
4. The golf simulation system of Claim 1, wherein the method further comprises instructing the platform ball tracking system to record ball movement data and the simulation ball tracking system to record ball flight data; andinstructing the simulation projection system to display a flight path of the ball on the projection screen based on the ball movement data, when a user performs a long putt.
5. The golf simulation system of any one of Claims 2-4, wherein the ball movement data includes XY coordinates.
6. The golf simulation system of Claim 1, wherein the method further comprises instructing the simulation ball tracking system to record ball flight data;instructing the simulation projection system to display a flight path of the ball on the projection screen based on the ball flight data, when a user performs an extra-long putt or full shot.
7. The golf simulation system of Claim 6, wherein actuating the tilting platform to tilt to a pre-determined slope comprises calculating the slope based on the ball flight data from the simulation ball tracking system, when the user performs a shot that is not a short putt.
8. The golf simulation system of Claims 4 or 7, wherein the ball flight data includes ball speed, launch angle, and / or spin.
9. The golf simulation system of Claim 1, wherein the planar surface of the tilting platform comprises a platform hitting region and a simulation hitting region, located behind the platform hitting region.Page 59 of 63FOLEYHO AGUS 13248651.3PPI-00225 10. The golf simulation system of Claim 9, wherein the platform hitting region comprises fibers of a first length and the simulation hitting region comprises fibers of a second length, and wherein the second length is longer than the first length.
11. The golf simulation system of Claim 1, wherein the method further comprises:validating the slope of the tilting platform by an inclinometer; anddisplaying a ready message to the user when the slope of the tilting platform matches the pre-determined slope.
12. The golf simulation system of Claim 1, wherein the method further comprises:determining a shot to be a short putt, long putt, extra long putt, or full shot by comparing a dimensions of the tilting platform to the position of the ball within a virtual golf course.
13. A method for conducting a simulated golf game, comprising:providing a system comprising:a tilting platform including a planar golf stroke surface, and at least one inclinometer affixed to the golf stroke surface; a projection screen located at one end of the tilting platform;at least one platform ball tracking system including a visual sensor, at least one simulation ball tracking system including a trigger and a sensor; at least one platform projection system including a projector;at least one simulation projection system including a projector; and an integration hub operatively connected to the tilting platform, the at least one platform and simulation ball tracking systems, and the at least one platform and simulation projection systems;Page 60 of 63FOLEYHO AGUS 13248651.3PPI-00225 instructing the simulation projection system to display a visual rendering of an environment surrounding a ball on the projection screen or the platform projection system to display a visual rendering on the tilting platform by the integration hub;actuating the tilting platform to tilt to a pre-determined slope; andsynchronizing the visual rendering with an incline of the tilting platform.
14. The method of claim 13, further comprising:instructing the platform ball tracking system to record ball movement data; and instructing the platform projection system to display a ball placement marker and a virtual hole on the tilting platform when a user performs a short putt.
15. The method of claim 14, wherein actuating the tilting platform to tilt to a pre-determined slope comprises obtaining the ball movement data by the platform ball tracking system and translating the data into a slope, when the user performs a short putt.
16. The method of Claim 13, wherein the method further comprises:instructing the platform ball tracking system to record ball movement data and the simulation ball tracking system to record ball flight data; andinstructing the simulation projection system to display a flight path of the ball on the projection screen based on the ball movement data, when the user performs a long putt.
17. The method of any one of Claims 14-16, wherein the ball movement data includes XY coordinates.
18. The method of Claim 13, wherein the method further comprises:instructing the simulation ball tracking system to record ball flight data; andPage 61 of 63FOLEYHO AGUS 13248651.3PPI-00225 instructing the simulation projection system to display a flight path of the ball on the projection screen based on the ball flight data, when the user performs an extra-long putt or full shot.
19. The method of Claim 18, wherein actuating the tilting platform to tilt to a pre-determined slope comprises calculating the slope based on the ball flight data from the simulation ball tracking system, when the user performs a shot that is not a short putt.
20. The method of Claims 16 or 19, wherein the ball flight data includes ball speed, launch angle, and / or spin.
21. The method of Claim 13, wherein the planar surface of the tilting platform comprises a platform hitting region and a simulation hitting region, located behind the platform hitting region.
22. The method of Claim 21, wherein the platform hitting region comprises fibers of a first length and the simulation hitting region comprises fibers of a second length, and wherein the second length is longer than the first length.
23. The method of Claim 13, further comprising:validating the slope of the tilting platform by an inclinometer; anddisplaying a “ready” message to the user when the slope of the tilting platform matches the predetermined slope.
24. The method of Claim 13, further comprising: determining a shot to be a short putt, long putt, extra long putt, or full shot by comparing dimensions of the tilting platform to the position of the ball within a virtual golf course.Page 62 of 63FOLEYHO AGUS 13248651.3