Customized ball delivery games
The ball delivery system dynamically adjusts game parameters based on real-time data to enhance gameplay engagement and adaptability, addressing the limitations of static gameplay in existing systems.
Patent Information
- Authority / Receiving Office
- US · United States
- Patent Type
- Applications(United States)
- Current Assignee / Owner
- AIRBORNE ATHLETICS
- Filing Date
- 2026-01-15
- Publication Date
- 2026-07-23
AI Technical Summary
Existing automated ball delivery systems lack the ability to customize game play based on real-time player performance and environmental conditions, leading to static and less engaging gameplay experiences.
A ball delivery system equipped with sensors and an action engine that processes real-time data to dynamically adjust game parameters such as shot locations, point values, defender interactions, and notifications based on user performance and game conditions, allowing for customizable and dynamic gameplay.
Enhances gameplay engagement by providing personalized and adaptive experiences, enabling dynamic adjustments to game scenarios, and accommodating various playing environments and skill levels.
Smart Images

Figure US20260208018A1-D00000_ABST
Abstract
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional Application No. 63 / 747,556, filed Jan. 21, 2025, and U.S. Provisional Application No. 63 / 774,577, filed Mar. 19, 2025, the contents of which are incorporated by reference herein.BACKGROUND
[0002] Automated ball delivery systems can be used in training to allow more efficient playing of games by a player. Automated ball delivery systems can collect a ball after it has been shot by a player and return the ball back to the player so that the player does not have to chase or otherwise collect the ball thereby prevent game play disruptions.SUMMARY
[0003] This specification describes technologies for customizing ball delivery games. These technologies generally involve a ball delivery system and a suite of sensors that can detect various aspects of a ball sport. A data file indicating a customized game to be played can be used to perform actions in response to detected conditions within a game. Actions can include delivering balls to different areas of a playing area in response to different conditions occurring within a game.
[0004] The specification describes numerous enhancements for increased functionality for a ball delivery system. The enhancements include various customizations for dynamic ball sport games or training. Aspects for customizations can include: shooting area, game flow, defender details, notifications, ball delivery, point allocation, elimination of players, performance-based game adjustments, or a combination of these among others.
[0005] In some implementations, user performance can determine a next shot to be attempted by a user. For example, a system monitoring a user attempting one or more shots can determine if a user makes or misses a first shot. In response to determining whether the user makes or misses the first shot, the system can direct the user to attempt different shots, e.g., a shot from one location if the user makes the first shot and a shot from another location if the user does not make the first shot. The system can change a location of a next shot, a point value of a next shot, or both, e.g., based on prior performance of a user, such as the user's last made one or more shots.
[0006] In some implementations, a user programs or customizes a workout. For example, a user can select a location within a playing area from which to shoot. A user can select one or more areas that are awarded more or less points per shot than other areas. In some implementations, a user selects the one or more areas from one or more templates. The templates can include one or more locations from which shots will be attempted by a user. The templates can include an indication of a number of points per shot from the one or more locations. Some locations may be awarded more points than others. Knockdown locations may award more points, such as double a normally awarded point value for a shot. In some implementations, a user selects the areas within a graphical interface depicting a playing area, e.g., where the user can select any area.
[0007] In general, one innovative aspect of the subject matter described in this specification can be embodied in methods that include the actions of receiving, by one or more sensors of a ball delivery system, sensor data of a shooter, the sensor data indicating a shot attempt by the shooter; detecting an action to be performed by a ball delivery device of the ball delivery system based on (i) the received sensor data and (ii) a game template that is stored in memory and indicates a set of customizations; and controlling the ball delivery device to perform the detected action. Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
[0008] The foregoing and other embodiments can each optionally include one or more of the following features, alone or in combination. In particular, one embodiment includes all the following features in combination. Feature 1: The actions include providing a set of one or more templates to a client device communicably connected to the ball delivery system; and in response to providing the set of the one or more templates, receiving the game template that indicates the set of customizations. Feature 2: The actions include providing an interface for a user to select the set of customizations, wherein receiving the game template that indicates the set of customizations comprises receiving data indicating selections made by the user from the interface. Feature 3: Detecting the action is based on a customization of the set of customizations that indicates shooting defender. Feature 4: Detecting the action is based on a customization of the set of customizations that indicates (i) the action and (ii) a triggering event for the action. Feature 5: Detecting the action is based on a customization of the set of customizations that indicates a size of a playing area used by the shooter. Feature 6: Detecting the action is based on a customization of the set of customizations that indicates point values for one or more shots. Feature 7: Detecting the action is based on a customization of the set of customizations that indicates one or more notifications to be provided by the ball delivery system in response to one or more triggering events.
[0009] The technology described in this specification can be implemented so as to realize one or more of the following advantages. For example, using sensor suites and determined triggering events of a customized game, the ball delivery systems described in this document can improve automated ball games by allowing users to customize games or specific aspects of training. The customization can indicate what actions are to be performed in response to the system detecting one or more sensed conditions. Customization allows a ball delivery system to be used in areas that are atypical (e.g., less than a full-size court) or games with locations that are determined by actions taken by players of the game (e.g., Around the world, PIG, or HORSE).
[0010] The details of one or more embodiments of the subject matter of this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims.BRIEF DESCRIPTION OF THE DRAWINGS
[0011] FIG. 1 shows an environment that includes a ball delivery system.
[0012] FIG. 2 shows an element of an interface for customizing a basketball game.
[0013] FIG. 3 is a flowchart of an example process for performing actions in a customized ball game.
[0014] Like reference numbers and designations in the various drawings indicate like elements.DETAILED DESCRIPTION
[0015] FIG. 1 shows an environment that includes a ball delivery system 100. The ball delivery system 100 can be used for customized training. For example, a user can provide customizations that indicate a game to be played. Customizations can include shot locations in sequence, randomized shot locations within a sequence, point values or consequences associated with given shot locations, among others.
[0016] A shooter 102 shoots a ball 104 at a hoop 106 that includes a ball delivery device 110. The shot can be a part of customized training. Customized training can include games for pleasure, that are televised, or in front of fans. The ball delivery system 100 includes a computing system 112 of one or more computers that control elements of the ball delivery system 100. The ball delivery system 100 includes indicator(s) 114a and 114b and sensor(s) 116a and 116b. Based on one or more customizations provided by a user, the ball delivery system 100 can process sensor data and perform responsive actions.
[0017] The ball delivery system 100 receives sensor data 122 from the sensor(s) 116a and 116b. Sensors, such as the sensor(s) 116a and 116b, can include a camera, motion detector, infrared sensor, LIDAR, heat sensor, heart rate monitors, glucose monitors, moisture detectors, or a combination of these among others. Sensors can include Wi-Fi position sensors. Sensors can indicate aspects of a shot attempt, such as ball movement, arc, impact on goal, goal result, or a combination of these among others. In basketball, sensors, such as at least one of the sensor(s) 116a and 116b, can indicate aspects, e.g., of the ball 104, before, during, or after, a shot attempt, such as ball spin, ball arc in flight, velocity, shooter follow through, shooter stance, shooter handedness, shooter consistency, shooter jump height, or a combination of these among others.
[0018] Sensors can be worn by the shooter 102, placed within a goal for the ball sport (such as the rim of a basketball hoop), within a surrounding area of a goal, or on a ceiling above a playing area. The sensor data can indicate a shot attempt by the shooter 102.
[0019] A sensor engine 120 receives data from the sensor(s) 116a and 116b and the generates and provides the sensor data 122 to an action engine 124. The action engine 124 can be configured to detect an action to be performed based at least on the sensor data 122. The action engine 124 can receive a game template that indicates one or more customizations, such as customized game data 123. The action engine 124 can use the game template to detect an action to be performed. An action can include allotting points for one or more shots, shooting a ball to a next location specified by the detected action, providing a notification, e.g., using one or more of the indicator(s) 114a and 114b, or a combination of these among others.
[0020] In one implementation, a user can specify aspects of a game to be played with a ball delivery system, such as number of balls thrown, pace of balls, arc of ball delivery, among others. In a legacy implementation, locations, or other aspects of a game, are static and are not dependent upon actions taken, or that occur, within a game. For example, a legal implementation can provide ten balls to a first location within a playing area.
[0021] In some implementations, systems described offer numerous enhancements for increased functionality for a ball delivery system, e.g., in relation to a legacy implementation of a ball delivery system. Enhancements can include one or more customizations that allow for dynamic games that change based on actions taken, or that occur, within a game. For example, customizations provided by a user can be configured to cause a ball delivery system to dynamically take actions in response to received sensor data. Customizations can include customization of: shooting area, game flow, defender details, notifications, ball delivery, point allocation, elimination of players, performance-based game adjustments, or a combination of these among others. Customizations can include dynamic shot location, or other aspects of a game, based on received sensor data—e.g., performance, or features, of a shooter, detected elements within a playing area, characteristics of a shot attempted by a shooter, or a combination of these among others.
[0022] In some implementations, the sensor data 122 can indicate a location of another shooter in a game of PIG or HORSE. The action engine 124 can use the sensor data 122 to detect an action of providing a ball to the same location of the other shooter for the shooter 102, e.g., in response to detecting the other shooter made their shot.
[0023] The action engine 124 can control the ball delivery device 110 to perform the detected action. For example, the action engine 124 can detect that user specified customizations indicated that if the shot shown in FIG. 1 is made, a shot at location A will be attempted and if the shot is not made, a shot at location B will be attempted. The action engine 124 can detect, using the sensor data 122, whether or not the shooter 102 made the shot. In response to detecting the shooter 102 made the shot, the action engine 124 can control the ball delivery device 110 to deliver a ball to the location A where the next shot will be attempted. In response to detecting the shooter 102 did not make the shot, the action engine 124 can control the ball delivery device 110 to deliver a ball to the location B where the next shot will be attempted.
[0024] In some implementations, the ball delivery system 100 provides a set of one or more templates to a client device communicably connected to the ball delivery system 100. For example, the ball delivery system 100 can provide templates indicating one or more games, such as around the world, three-point contests, HORSE, PIG, or the like. Templates can include a series of shots to be made at one or more locations. The templates can be provided on a client device, such as a computer or smartphone. A user of the computer or smartphone can use the interface to make one or more selections, e.g., using drop down interfaces, touch screen input, or the like. The selections can either confirm a template, alter the template, or specify a game that is created from scratch. In any case, the selections can be said to indicate a set of customizations in that a user customizes play. Customizations can be included in the customized game 123.
[0025] In some implementations, the ball delivery system 100 receives a game template that indicates a set of customizations, e.g., in response to providing one or more templates. For example, whether or not the ball delivery system 100 provides templates, the ball delivery system 100 can receive data that indicates a game to be played. Prior to the shooter 102 attempting to make the shot with the ball 104, a user, which could be the shooter 102 or another person or automated program, can provide a set of customizations to the ball delivery system 100. The set of customizations, e.g., included in the customized game 123, specify a game to be played.
[0026] In some implementations, the ball delivery system 100 provides an interface for a user to select one or more customizations. The ball delivery system 100 can receive a game template after providing the interface where the game template indicates one or more customizations made by a user within the provided interface.
[0027] Various aspects of a game can be customized, e.g., shooting areas, game flow, defender details, notifications, ball delivery, or a combination of these among others.
[0028] In some implementations, defender details are customized. For example, a user can provide a set of customizations that indicate a shooting defender. Games can sometimes include defenders. Defenders can be allotted points based on shots not being made or other aspects of a game. The ball delivery system 100 can keep track of one or more players and one or more points or next shots for one or more players. The ball delivery system 100 can allot points to one or more players based on detected one or more events. An action of the action engine 124 can include allotting points to one or more players.
[0029] In some implementations, a defender is allotted points if a shooter does not score within a specified time period. For example, the shooter 102 may attempt a shot at a first location while be defended by a defender. The customized game data 123 can specify the existence and points to be allotted for the defender. The customized game data 123 can indicate that, if the shooter 102 does not score within a time period, such as five seconds, from receiving a ball delivered by the ball delivery system 100 or from the ball delivery system 100 delivering the ball, then the ball delivery system 100 will allot a specified number of points to the defender.
[0030] In some implementations, aspects of a defender can be sensed and actions taken in response. For example, the customized game data 123 can specify that a blocked shot is worth three points, an airball is worth two points, and a missed shot is worth one point for the defender. The ball delivery system 100 can use one or more of the sensor(s) 116a or 116b to detect movement of a defender, shooter, or ball. Based on the sensed data, the action engine 124 can determine an action to take, such as allotting a specified number of points to a defender.
[0031] In some implementations, a game flow can be customized. A game flow can include customizations that indicate an action and a triggering event that triggers that action. A game can include a set of actions triggered by a set of triggering events. For example, a game of around the world can include one or more shooters taking shots around the key of a basketball court. A shooter may miss one shot at a location but not two. Different versions of the game can be played to allow for greater or fewer misses. A triggering event for a game of around the world can include a shooter making a first shot. The corresponding action is the ball delivery system 100 providing a ball to the next location specified within the customized game 123. Another triggering event for the game of around the world can include a shooter missing a shot. If a shooter misses, the ball delivery system 100 can provide a ball, again, to the same location so that the shooter can shoot again. If a shooter misses for a second time, or other specified number of times, the shooter must start from the beginning. The specified number of misses can be a triggering event that triggers the action engine 124 to change a next location at which a ball will be provided to the starting location.
[0032] A game flow can include eliminating one or more players from a game. For example, a game can include the shooter 102 and one or more other shooters. The game might be PIG or some other shooting game where a player that misses one or more shots is eliminated while the remaining players continue to play. The customized game data 123 can indicate a type of game that requires elimination and a triggering event for that elimination. In response to the ball delivery system 100 receiving data indicating the triggering event for elimination, the action engine 124 can perform an elimination action. An elimination action can include notifying one or more players with an appropriate notification using one or more of the indicator(s) 114a or 114b. An elimination action can include updating a stored value indicating a number of players playing a game. Elimination can cause the ball delivery system 100 to skip providing a ball to the eliminated player in a next round of the game.
[0033] In some implementations, games can be made harder or easier. For example, a user can customize an easier setting for a game or the ball delivery system 100 can sense a level of skill or success in a game and dynamically adjust a difficulty level. In a game that requires making one or more shots without missing, the ball delivery system 100 can increase the allowed number of missed shots to progress to a next round or shot location after detecting a shooter is struggling to progress. A difficulty level can be recorded by the ball delivery system 100 or used to notify the shooter. As the shooter progresses, difficulty can be increased and previous scores or games stored in a database can indicate at which difficulty level certain scores were reached.
[0034] In some implementations, one or more shooting locations can be customized. For example, particular locations or zones can be selected by a user for one or more shots. A game can include a sequence of shots to be taken. Each of the shots taken can specify a location from which to take the shot, such as a general location or zone or a specific point within a playing area. Shot customization can include randomized locations—e.g., a fifth shot in a sequence can be a shot from a random location. A randomizing element of the ball delivery system 100 can be used to generate a random point from within a playing area at which a shooter will then have to take the randomized shot.
[0035] In some implementations, a size of a playing area can be customized. A player, which can include a shooter, may not have the luxury of an entire court, half court, or other player area. Games can be customized, e.g., by a user or the ball delivery system 100, to account for a playing area size available to a given player. A user can specify a region on an interface showing a current expected region of the system which will then be the playing area. The ball delivery system 100 can use one or more sensors to detect an area that does not have any obstructions, such as cars or other players. The ball delivery system 100 can include one or more object detection algorithms to classify or detect obstructions. The ball delivery system 100 can detect the unobstructed area as available for a playing area. Each game can specify an area size. If an area size specified by a game does not match an available playing area, the ball delivery system 100 can scale the game playing size to the size that is available. For example, if a full-size key is not available for around the world, the game can be played within a different area that is available.
[0036] In some implementations, point values can be customized. Point values assigned to shot locations need not be the same as point values of a traditional game of the ball sport, such as basketball. A game can include a set of shots to be made. A user can specify that one or more shots are to be worth more points than others. In some cases, a higher value ball, or rack of balls, can be designated that, if made, gives the shooter more points than a typical shot. The location of higher value balls, or racks of balls, can be random or specified within a sequence of shots. In some cases, shots are worth more when made in a sequence. The action engine 124 can use the sensor data 122 and point values for shots specified in the customized game 123 to perform an action that includes allotting one or more points.
[0037] In some implementations, notifications can be customized. For example, indicator(s) 114a and 114b can be used to notify the shooter 102 of points made or other relevant actions in the game and detected by the ball delivery system 100. The indicator(s) 114a and 114b can include visual, physical, or auditory indicators. Physical indicators can include devices worn by the shooter 102 that vibrate in response to receiving a signal generated by the ball delivery system 100.
[0038] In some cases, audio notifications get louder if a shooter is detected to be taking a shot that is further away. For example, the action engine 124 can obtain the sensor data 122 that may indicate the shooter 102 made a shot. The action engine 124 can use the sensor data 122, the customized game data 123, or a combination of both, to determine a likely location of the shooter 102. The action engine 124 can perform an action that includes notifying the shooter 102, e.g., of the made shot, point values, or other aspects of a game. For auditory notifications, the action engine 124 can increase a volume if the shooter 102 is further away from an auditory indicator, such as the indicator 114a.
[0039] Although shown and described in reference to basketball, the described techniques can be applied to other ball sports, such as baseball, golf, hockey, football, soccer, among others.
[0040] FIG. 2 shows an element of an interface for customizing a basketball game. Panel 202 shows a collection of shot locations specified by a user for a game. Location 204 indicates that the shot is worth more points than the others. Panels 206, 208, and 210 show alternative shot location customizations. The panels shown in FIG. 2 can be provided to a user within an interface to allow a user to select customizations, such as shot locations, point values, or other customizations, for a game to be played. A user may select one or more locations within a playing area by tapping or clicking a screen at a location depicted within an interface. Other customizations described in this specification can be selected by a user via a template or adjustments to one or more templates on a provided interface.
[0041] FIG. 3 is a flowchart of an example process 300 for performing actions in a customized ball game. For convenience, the process 300 will be described as being performed by a system of one or more computers, located in one or more locations, and programmed appropriately in accordance with this specification. For example, a ball delivery system, e.g., the ball delivery system 100 of FIG. 1, appropriately programmed, can perform the process 300.
[0042] The process 300 includes receiving sensor data of a shooter, the sensor data indicating a shot attempt by the shooter (302). For example, sensor(s) 116a and 116b can be used to receive sensor data of the shooter 102.
[0043] The process 300 includes detecting an action to be performed by a ball delivery device of the ball delivery system based on (i) the received sensor data and (ii) a game template that is stored in memory and indicates a set of customizations (304). For example, the action engine 124 can detect one or more actions to be performed by the ball delivery device 110. A ball delivery device can include a non-delivery element of the ball delivery system 100, such as a computer system that controls one or more point values, indicators, or other aspects of the system. Detecting the action to be performed by a ball delivery device can include detecting an action for a particular notification, point allotment, or a combination of actions.
[0044] The process 300 includes controlling the ball delivery device to perform the detected action (306). For example, the action engine 124 can control the ball delivery device 110 to perform a detected action, such as delivering a ball to a next location or performing a non-delivery action, such as point allotment or notification using one or more of the indicator(s) 114a or 114b.
[0045] Techniques can include artificial intelligence (AI)-powered shot analysis, multi-player training, augmented reality-based defensive simulation, or a combination of these among others.
[0046] In some cases, a ball delivery system can provide AI-based shot analysis. The system can provide adaptive training in addition to, or instead of, AI-based shot analysis. The system can perform actions as part of these, or other, operations. Actions can be performed as part of a customized ball game, AI-based shot analysis, adaptive training, or other operations. Some operations can include the same, or similar, actions as other operations. For example, a customized ball game can include actions for AI-based shot analysis or adaptive training. Operations can include multi-player training, competitive gaming using a ball delivery system, augmented reality-based defensive simulation, or a combination of these among others. The following actions can be performed as part of one or more operations of a ball delivery system.
[0047] In some implementations, a ball delivery system can perform actions that include receiving, by one or more sensors, shot attempt data. Shot attempt data can include data that represents various aspects of a shot attempt, such as data that represents a shooting player or a ball being shot. Data can represent a shot arc, release speed, ball rotation, shooting consistency, shooting motion, player actions, or a combination of these among others.
[0048] In some implementations, a ball delivery system can perform actions that include analyzing, e.g., using a machine learning model, shooting data. Actions can include detecting patterns, strengths, areas for improvement, or a combination of shooting data elements. Shooting data can include historical data, e.g., from previous games or workouts of a user or from games or workouts of other users.
[0049] In some implementations, a system can generate adaptive coaching recommendations. For example, a ball delivery system can generate output data that includes recommended changes in shot mechanics, suggested drills, or strategic adjustments. Recommendations can be generated by one or more processes based on real-time or historical performance data. Processes can include one or more machine learning models trained using a set of data representing a ball sport being played, such as drills or games, and data representing known recommendations for the player represented in the ball sport data. The models can be trained to approximate recommendation output of the known recommendations. New data representing a ball sport being played can be processed by the one or more models to generate new output indicating new recommendations, e.g., that may be similar, identical, or different from the known recommendations used in training.
[0050] One or more machine learning models can be trained using a form of supervised or unsupervised learning. One or more models can be trained using training data representing at least one shot or other action performed by a player or an element within a playing area. The models can process labeled data, such as one or more shooting data elements. The models can learn an association between various input data and shooting data elements. The models can learn an association between one or more shooting data elements and one or more feedback mechanisms. Feedback can include at least one of audio cues, recommendations for shooting adjustment, or changes to a trajectory, speed, or frequency of one or more delivered balls. In some cases, the models can use a baseline model to determine one or more actions of feedback. The models can analyze subsequent data to determine whether selected feedback resulted in an expected or positive outcome—e.g., a player increasing a shot made percentage or improving in one or more technique measurements. Over time, the models can determine one or more feedback actions that are specifically tailored to a given player or group of players for which it is operating. By tailoring feedback, over time, to a specific player or group of players, the models can enable more rapid improvement compared to static ball delivery systems—e.g., that simply deliver balls where requested. In some cases, the models can select one or more playing modes based on processing historical data captured for a specific player or group of players—e.g., a playing mode that is generated previously and stored in memory or is generated by the models in response to one or more detected shooting data elements. A selected playing mode can focus on one or more weaknesses of a player or group of players to further increase a rate of improvement.
[0051] The models can include a set of parameters that control output according to provided input. A shot can include a player throwing a basketball towards a basketball hoop. The shot can be recorded as a video in RGB or other format. In some cases, extracted features of data are stored to reduce training data storage. This can be helpful in cases of training in ball sports where training data can be large. In some cases, training data is stored on edge devices, such as one or more ball delivery systems. Edge devices may have less storage capacity compared to cloud servers or the like. To enable offline, edge computing of training data, features of training data can be extracted and provided as input for training one or more models. In some cases, extracted features can be used as input in cases where servers are in use, e.g., to reduce required data transmissions between an edge device and a server.
[0052] In some implementations, a ball delivery system can adjust various features, such as shot difficulty, sequence of shots, locations of shots, or a combination of these, among others. The system can adjust features based on user progress over time.
[0053] In some implementations, a system can provide a networked interface, e.g., for multiple users to participate in shooting challenges, either in real-time or asynchronously. A system can track or store performance data for each player. Performance data can include shooting accuracy, reaction time, shot success rates, spin, shot arc, or a combination of these among others. A system can output data, such as comparative output. Output can indicate player rankings, shot charts, performance trends over time, or a combination of these among others. Networked interface games can include customizable game formats, such as head-to-head challenges, time-based competitions, or skill-based ranking systems. The system can store data from one or more users and indicate a competition against a live player or pre-recorded data from the same or different system.
[0054] In some implementations, a system can include augmented reality (AR) virtual defenders, AI coaching, or a combination of these, among others. A system can detecting player movement or shot trajectory, among other aspects of a ball game, using one or more sensors. The system can render virtual defenders in AR, adjust positioning, contest shots, or react in response to detected user actions. The system can provide visual overlays or cues, e.g., displaying recommended shooting angles, defensive strategies, or shot difficulty indicators. The system can dynamically adjust defensive difficulty, e.g., increasing defender movement speed or reaction time in response to a user's shooting accuracy. The system can deliver real-time AI coaching feedback. Such feedback can guide a user on shot selection, defensive reads, decision-making, or other aspects.
[0055] In this specification the term “engine” is used broadly to refer to a software-based system, subsystem, or process that is programmed to perform one or more specific functions. Generally, an engine will be implemented as one or more software modules or components, installed on one or more computers in one or more locations. In some cases, one or more computers will be dedicated to a particular engine; in other cases, multiple engines can be installed and running on the same computer or computers.
[0056] The subject matter and the actions and operations described in this specification can be implemented in digital electronic circuitry, in tangibly-embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. The subject matter and the actions and operations described in this specification can be implemented as or in one or more computer programs, e.g., one or more modules of computer program instructions, encoded on a computer program carrier, for execution by, or to control the operation of, data processing apparatus. The carrier can be a tangible non-transitory computer storage medium. Alternatively or in addition, the carrier can be an artificially-generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. The computer storage medium can be or be part of a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them. A computer storage medium is not a propagated signal.
[0057] The term “data processing apparatus” encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. Data processing apparatus can include special-purpose logic circuitry, e.g., an FPGA (field programmable gate array), an ASIC (application-specific integrated circuit), or a GPU (graphics processing unit). The apparatus can also include, in addition to hardware, code that creates an execution environment for computer programs, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.
[0058] A computer program can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages; and it can be deployed in any form, including as a stand-alone program, e.g., as an app, or as a module, component, engine, subroutine, or other unit suitable for executing in a computing environment, which environment may include one or more computers interconnected by a data communication network in one or more locations.
[0059] A computer program may, but need not, correspond to a file in a file system. A computer program can be stored in a portion of a file that holds other programs or data, e.g., one or more scripts stored in a markup language document, in a single file dedicated to the program in question, or in multiple coordinated files, e.g., files that store one or more modules, sub-programs, or portions of code.
[0060] The processes and logic flows described in this specification can be performed by one or more computers executing one or more computer programs to perform operations by operating on input data and generating output. The processes and logic flows can also be performed by special-purpose logic circuitry, e.g., an FPGA, an ASIC, or a GPU, or by a combination of special-purpose logic circuitry and one or more programmed computers.
[0061] Computers suitable for the execution of a computer program can be based on general or special-purpose microprocessors or both, or any other kind of central processing unit. Generally, a central processing unit will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a central processing unit for executing instructions and one or more memory devices for storing instructions and data. The central processing unit and the memory can be supplemented by, or incorporated in, special-purpose logic circuitry.
[0062] Generally, a computer will also include, or be operatively coupled to, one or more mass storage devices, and be configured to receive data from or transfer data to the mass storage devices. The mass storage devices can be, for example, magnetic, magneto-optical, or optical disks, or solid state drives. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device, e.g., a universal serial bus (USB) flash drive, to name just a few.
[0063] To provide for interaction with a user, the subject matter described in this specification can be implemented on one or more computers having, or configured to communicate with, a display device, e.g., a LCD (liquid crystal display) monitor, or a virtual-reality (VR) or augmented-reality (AR) display, for displaying information to the user, and an input device by which the user can provide input to the computer, e.g., a keyboard and a pointing device, e.g., a mouse, a trackball or touchpad. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback and responses provided to the user can be any form of sensory feedback, e.g., visual, auditory, speech, or tactile feedback or responses; and input from the user can be received in any form, including acoustic, speech, tactile, or eye tracking input, including touch motion or gestures, or kinetic motion or gestures or orientation motion or gestures. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's device in response to requests received from the web browser, or by interacting with an app running on a user device, e.g., a smartphone or electronic tablet. Also, a computer can interact with a user by sending text messages or other forms of message to a personal device, e.g., a smartphone that is running a messaging application, and receiving responsive messages from the user in return.
[0064] This specification uses the term “configured to” in connection with systems, apparatus, and computer program components. That a system of one or more computers is configured to perform particular operations or actions means that the system has installed on it software, firmware, hardware, or a combination of them that in operation cause the system to perform the operations or actions. That one or more computer programs is configured to perform particular operations or actions means that the one or more programs include instructions that, when executed by data processing apparatus, cause the apparatus to perform the operations or actions. That special-purpose logic circuitry is configured to perform particular operations or actions means that the circuitry has electronic logic that performs the operations or actions.
[0065] The subject matter described in this specification can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface, a web browser, or an app through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), e.g., the Internet.
[0066] The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some implementations, a server transmits data, e.g., an HTML page, to a user device, e.g., for purposes of displaying data to and receiving user input from a user interacting with the device, which acts as a client. Data generated at the user device, e.g., a result of the user interaction, can be received at the server from the device.
[0067] While this specification contains many specific implementation details, these should not be construed as limitations on the scope of what is being claimed, which is defined by the claims themselves, but rather as descriptions of features that may be specific to particular embodiments of particular inventions. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially be claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claim may be directed to a subcombination or variation of a subcombination.
[0068] Similarly, while operations are depicted in the drawings and recited in the claims in a particular order, this by itself should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system modules and components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
[0069] Particular embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. For example, the actions recited in the claims can be performed in a different order and still achieve desirable results. As one example, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In some cases, multitasking and parallel processing may be advantageous.
Examples
Embodiment Construction
[0015]FIG. 1 shows an environment that includes a ball delivery system 100. The ball delivery system 100 can be used for customized training. For example, a user can provide customizations that indicate a game to be played. Customizations can include shot locations in sequence, randomized shot locations within a sequence, point values or consequences associated with given shot locations, among others.
[0016]A shooter 102 shoots a ball 104 at a hoop 106 that includes a ball delivery device 110. The shot can be a part of customized training. Customized training can include games for pleasure, that are televised, or in front of fans. The ball delivery system 100 includes a computing system 112 of one or more computers that control elements of the ball delivery system 100. The ball delivery system 100 includes indicator(s) 114a and 114b and sensor(s) 116a and 116b. Based on one or more customizations provided by a user, the ball delivery system 100 can process sensor data and perform res...
Claims
1. A method comprising:receiving, by one or more sensors of a ball delivery system, sensor data of a shooter, the sensor data indicating a shot attempt by the shooter;detecting an action to be performed by a ball delivery device of the ball delivery system based on (i) the received sensor data and (ii) a game template that is stored in memory and indicates a set of customizations; andcontrolling the ball delivery device to perform the detected action.
2. The method of claim 1, comprising:providing a set of one or more templates to a client device communicably connected to the ball delivery system; andin response to providing the set of the one or more templates, receiving the game template that indicates the set of customizations.
3. The method of claim 2, comprising:providing an interface for a user to select the set of customizations,wherein receiving the game template that indicates the set of customizations comprises receiving data indicating selections made by the user from the interface.
4. The method of claim 1, wherein detecting the action is based on a customization of the set of customizations that indicates shooting defender.
5. The method of claim 1, wherein detecting the action is based on a customization of the set of customizations that indicates (i) the action and (ii) a triggering event for the action.
6. The method of claim 1, wherein detecting the action is based on a customization of the set of customizations that indicates a size of a playing area used by the shooter.
7. The method of claim 1, wherein detecting the action is based on a customization of the set of customizations that indicates point values for one or more shots.
8. The method of claim 1, wherein detecting the action is based on a customization of the set of customizations that indicates one or more notifications to be provided by the ball delivery system in response to one or more triggering events.
9. One or more non-transitory computer storage media encoded with computer program instructions that when executed by one or more computers cause the one or more computers to perform operations comprising:receiving, by one or more sensors of a ball delivery system, sensor data of a shooter, the sensor data indicating a shot attempt by the shooter;detecting an action to be performed by a ball delivery device of the ball delivery system based on (i) the received sensor data and (ii) a game template that is stored in memory and indicates a set of customizations; andcontrolling the ball delivery device to perform the detected action.
10. The media of claim 9, wherein the operations comprise:providing a set of one or more templates to a client device communicably connected to the ball delivery system; andin response to providing the set of the one or more templates, receiving the game template that indicates the set of customizations.
11. The media of claim 10, wherein the operations comprise:providing an interface for a user to select the set of customizations,wherein receiving the game template that indicates the set of customizations comprises receiving data indicating selections made by the user from the interface.
12. The media of claim 9, wherein detecting the action is based on a customization of the set of customizations that indicates shooting defender.
13. The media of claim 9, wherein detecting the action is based on a customization of the set of customizations that indicates (i) the action and (ii) a triggering event for the action.
14. The media of claim 9, wherein detecting the action is based on a customization of the set of customizations that indicates a size of a playing area used by the shooter.
15. The media of claim 9, wherein detecting the action is based on a customization of the set of customizations that indicates point values for one or more shots.
16. The media of claim 9, wherein detecting the action is based on a customization of the set of customizations that indicates one or more notifications to be provided by the ball delivery system in response to one or more triggering events.
17. A system comprising:one or more computers and one or more storage devices on which are stored instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:receiving, by one or more sensors of a ball delivery system, sensor data of a shooter, the sensor data indicating a shot attempt by the shooter;detecting an action to be performed by a ball delivery device of the ball delivery system based on (i) the received sensor data and (ii) a game template that is stored in memory and indicates a set of customizations; andcontrolling the ball delivery device to perform the detected action.
18. The system of claim 17, wherein the operations comprise:providing a set of one or more templates to a client device communicably connected to the ball delivery system; andin response to providing the set of the one or more templates, receiving the game template that indicates the set of customizations.
19. The system of claim 18, wherein the operations comprise:providing an interface for a user to select the set of customizations,wherein receiving the game template that indicates the set of customizations comprises receiving data indicating selections made by the user from the interface.
20. The system of claim 17, wherein detecting the action is based on a customization of the set of customizations that indicates shooting defender.