BASKETBALL TRAINING SYSTEM
20250312673 ยท 2025-10-09
Inventors
- Julia M. Ploof (Minneapolis, MN, US)
- Eric David Drommerhausen (Maplewood, MN, US)
- Jefferson William Mason (Maple Grove, MN, US)
- Lucas Pillman (Burnsville, MN, US)
- Douglas Brad Campbell (Loretto, MN, US)
- Justin Royer (Maricopa, AZ, US)
Cpc classification
A63B69/40
HUMAN NECESSITIES
A63B2024/0068
HUMAN NECESSITIES
A63B2024/0009
HUMAN NECESSITIES
A63B24/0062
HUMAN NECESSITIES
A63B71/0622
HUMAN NECESSITIES
International classification
A63B69/00
HUMAN NECESSITIES
A63B24/00
HUMAN NECESSITIES
A63B71/06
HUMAN NECESSITIES
Abstract
Methods, systems, and apparatus, including computer programs encoded on computer storage media, for a basketball training system. One method can include, while a ball delivery system is executing a workout for a user, obtaining sensor data from one or more sensors of the ball delivery system; generating a workout signature using the sensor data, the workout signature including representations of actions that occurred at different times during the workout; evaluating the generated workout signature; and providing a result of evaluating the generated workout signature using an indicator of the ball delivery system.
Claims
1. A computer-implemented method comprising: while a ball delivery system is executing a workout for a user, obtaining sensor data from one or more sensors of the ball delivery system; generating a workout signature using the sensor data, the workout signature including representations of actions that occurred at different times during the workout; evaluating the generated workout signature; and providing a result of evaluating the generated workout signature using an indicator of the ball delivery system.
2. The method of claim 1, wherein evaluating the generated workout signature comprises: comparing at least a portion of the workout signature with a previously generated workout signature.
3. The method of claim 2, wherein the previously generated workout signature was previously generated during a previous workout of the user.
4. The method of claim 1, wherein providing the result of evaluating the generated workout signature using the indicator of the ball delivery system comprises: activating an audio device of the ball delivery system to play an audio file.
5. The method of claim 4, wherein the audio file includes recorded or generated spoken words indicating the result of evaluating the workout signature.
6. The method of claim 1, comprising: determining, using the evaluation of the generated workout signature, whether the user has improved or declined relative to a previous workout, wherein providing the result comprises: providing an indication that the user has improved or declined relative to the previous workout.
7. The method of claim 1, wherein generating the workout signature using the sensor data comprises: providing the sensor data to one or more machine learning models; and generating an element of the workout signature using output of the one or more machine learning models.
8. The method of claim 1, wherein the sensor data represents biomechanical input.
9. The method of claim 8, wherein the sensor data representing the biomechanical input includes one or more images captured from a camera of the ball delivery system.
10. The method of claim 9, comprising: detecting, using a trained machine learning model, human features in the one or more images; and generating, using the detected human features, the biomechanical input.
11. The method of claim 1, wherein the sensor data includes biometric input.
12. The method of claim 11, wherein obtaining the sensor data comprises: obtaining the biometric input from a wearable device of the user.
13. The method of claim 1, wherein the sensor data includes features of a shot of the user.
14. The method of claim 1, wherein the sensor data includes (i) biomechanical input, (ii) biometric input, and (iii) features of a shot of the user.
15. The method of claim 1, comprising: updating, during the workout of the user, the workout signature.
16. The method of claim 1, wherein the workout for the user includes the user shooting a basketball towards a basketball hoop of the ball delivery system.
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: while a ball delivery system is executing a workout for a user, obtaining sensor data from one or more sensors of the ball delivery system; generating a workout signature using the sensor data, the workout signature including representations of actions that occurred at different times during the workout; evaluating the generated workout signature; and providing a result of evaluating the generated workout signature using an indicator of the ball delivery system.
18. The system of claim 17, wherein evaluating the generated workout signature comprises: comparing at least a portion of the workout signature with a previously generated workout signature.
19. The system of claim 18, wherein the previously generated workout signature was previously generated during a previous workout of the user.
20. One or more computer storage media encoded with instructions that, when executed by one or more computers, cause the one or more computers to perform operations comprising: while a ball delivery system is executing a workout for a user, obtaining sensor data from one or more sensors of the ball delivery system; generating a workout signature using the sensor data, the workout signature including representations of actions that occurred at different times during the workout; evaluating the generated workout signature; and providing a result of evaluating the generated workout signature using an indicator of the ball delivery system.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0009]
[0010]
[0011] Like reference numbers and designations in the various drawings indicate like elements.
DETAILED DESCRIPTION
[0012]
[0013] In more detail, the ball delivery system 106 can use one or more sensors, e.g., sensor(s) 109a-b, to track the shooter 102 to provide evaluation results by, e.g., adjusting the workout, using visual or audio indicators, device notifications, starting new workouts, or the like. For example, sensor 109a can include sensors that track the shooter 102 at a distance, such as a camera, electromagnetic sensor, or a combination of these among others. The sensor 109b can include wearable or mobile devices, such as a user smartphone, smartwatch, or a combination of these among others.
[0014] The ball delivery system 106 includes an indicator 108, sensor(s) 109a-b, a return system 110, and a control unit 112. The indicator 108 can include a display or audio device configured to provide information, e.g., to the shooter 102. In some cases, the indicator 108 includes the return system 110e.g., a pace or frequency of balls provided to the shooter 102 can help indicate evaluation results. The sensor(s) 109a-b can include one or more sensorse.g., a camera, motion detector, infrared sensor, LIDAR, heat sensor, heart rate monitors, glucose monitors, moisture detectors, among others. The return system 110 can include a device to provide a ball to the shooter 102. The device can include mechanical elements configured to project a ball to a particular location for the shooter 102 to, e.g., catch the ball and shoot. The control unit 112 can include one or more computers. The control unit 112 can include edge devices affixed to the ball delivery system 106 and cloud computing components communicably connected to one or more computers affixed to the ball delivery system 106.
[0015] The ball delivery system 106 starts a workout for the shooter 102. The ball delivery system 106 can start a workout in response to determining a current time, obtaining input from a user, such as the shooter 102 or other user, or in response to a previous workout ending. The workout can include one or more drillse.g., shoot a number of shots at a number of different locations over a period of time. The ball delivery system 106 can cycle through drills to complete a workout. Multiple workouts can be performed in sequence.
[0016] In some implementations, the ball delivery system 106 determines a specific workout, including one or more specific drills, in response to performance of a previous workout. For example, the ball delivery system 106 can perform one or more data processes, as described in this document, and use results of the data processes to generate a workout. The ball delivery system 106 can then start the generated workoute.g., by providing a ball to the shooter 102 or indicating a start of a workout using the indicator 108.
[0017]
[0018] The control unit 112 includes a sensor engine 114, a signature engine 116, an evaluation engine 118, and an action engine 120. The engines perform processes, e.g., using one or more computer processors, as described in reference to each respective engine.
[0019] The sensor engine 114 of the control unit 112 obtains sensor data from one or more of the sensor(s) 109a-b. The sensor engine 114 can obtain sensor data over wired or wireless networks from one or more of the sensor(s) 109a-b. The sensor engine 114 can perform one or more data transformations to convert sensor data from a raw type captured by one or more of the sensor(s) 109a-b to a type for processing by the control unit 112.
[0020] In some implementations, sensor data represents biomechanical input. For example, sensor data can include one or more images. The control unit 112 can generate biomechanical input using the one or more images. Biomechanical input can include motion of the shooter 102, such as body movement or arm movement during a shot or between shots. In some cases, biomechanical input can be represented in wearable device data obtained by the sensor engine 114. For example, the control unit 112 can generate biomechanical input using data from a wearable device, such as accelerometer data, GPS data, wideband data, among others. The control unit 112 can generate biomechanical input using data from one or more computer vision modelse.g., models using one or more images captured by a camera, where the one or more images include one or more representations of the shooter 102. The camera can include a camera, such as a smartphone or digital camera, positioned to capture images of the shooter 102. A camera can be affixed to a basketball hoop or situated on a tripod or other means of fixing a camera view to capture movement of the shooter 102.
[0021] Biomechanical input can be provided by the sensor engine 114 to the signature engine 116, e.g., to be included as one or more elements of a generated signature. In general, any sensor data can be used to generate any element of a signature based on processing performed by the control unit 112, including processing performed by one or more machine learning models trained to predict one or more elements.
[0022] The signature engine 116 generates a workout signature using sensor data obtained by the sensor engine 114. Example workout signature 117 is shown visually in
[0023] The signature engine 116 can process sensor data to determine one or more elements of a workout signature. Elements of a workout signature can include one or more of: (1) start time of workout, (2) end time of workout, (3) date of workout, (4) shots attempted, (5) shots made, (6) number of shots made in sequence without missing, (7) features of a shotsuch as velocity of ball, arc, spin, among others, (8) locations from which shots are attemptede.g., determined using sensor data, such as (i) visual recognition algorithms that detect a location of the shooter 102 shooting from image or other sensor data, (ii) processes that identify a trajectory of ball and determine location based on the trajectory, or (iii) determining shot location using sensor data from wearable device of the shooter, or (iv) based on predetermined location indicated by the workout, (9) features of pass to shootere.g., velocity, arc, spin of pass from the return system 110 to the shooter 102, (10) a number of shots taken at one or more locations, (11) a number of shots made at one or more locations, (12) a frequency or velocity of balls being launched from the return system 110, (13) location of the ball delivery system 106, (14) leaderboard rankinge.g., global or local ranking corresponding to workout, drill within workout, or shooter, (15) drills or workouts previously performed, (16) number of previous days spent performing at least a part of a workoute.g., a workout streak or a number of days within a threshold number of days where at least a part of a workout was performed, (17) heatmap data indicating attempts and made shots corresponding to location, (18) total shots attempted by the shooter 102 using the ball delivery system 106, (19) total hours spent by the shooter 102 using the ball delivery system 106, (20) achievements received or working towards, (21) goals set or completed, (22) distance of one or more passes from the return system 110, (23) bias of shot attemptse.g., to which side a ball missed a target, (24) bias of made shotse.g., use of backboard, rim hits, among others, (25) height of each playere.g., determined using visual recognition algorithms operating on obtained image data by the ball delivery system 106, (26) shooting form of the shooter 102e.g., using pose estimation software using one or more visual recognition algorithms, (27) an arc of one or more shots, (28) a release speed of one or more shots, (29) a path of a ball, (30) a release point of a ball, or (31) presence of lack of virtual defenders or other obstacles rendered in augmented or virtual reality.
[0024] In some implementations, the signature engine 116 processes sensor data using one or more machine learning algorithms. For example, the signature engine 116 can process image data to detect visual elements, such as the shooter 102 or the ball 104. By detecting visual elements over time, the signature engine 116 can generate one or more elements of a signature, such as one or more elements described in this document.
[0025] In some implementations, the ball delivery system 106 includes a machine learning training system. For example, the ball delivery system 106 can train one or more machine learning algorithms using ground truth data indicating sensor data for which known elements occurred. In some cases, ground truth data can indicate whether or not a shot arc corresponds to a particular angular degree, a particular velocity of a ball shot at the ball delivery system 106, a bias of an attempt or made shot, among others. Using such ground truth data, the ball delivery system 106 can train one or more models to predict one or more elements of a signature. The predicted elements can be included in a generated workout signature, e.g., a workout signature generated for the shooter 102.
[0026] In some implementations, the signature engine 116 generates a workout signature using attributes of the shooter 102. For example, the signature engine 116 can generate a workout signature using one or more of: workouts performed by the shooter 102, activities of the shooter 102, a determined skill level of the shooter 102, age of the shooter 102, gender of the shooter 102, among others. In some cases, the signature engine 116 can generate a signature using one or more attributes. For example, the signature engine 116 can increase or decrease one or more values in response to detecting one or more attributes. Some of the attributes can be used to perform categorial rankinge.g., the signature engine 116 can generate one or more signatures for the shooter 102 with identifiers indicating attributes such as age or gender. The identifiers can then be used by a ranking engine to rank signatures based on categories, such as age or gender. For example, a shooter with a signature that indicates making X out of Y shots in Z minutes can be in the top N % of users in a specific age or gender category.
[0027] In some implementations, signatures generated by the signature engine 116 are shared or edited. For example, the control unit 112 can generate one or more signatures and write data representing the one or more signatures into memory components of one or more computers of the control unit 112. The representative data can be manipulated automatically or using input from a user. Manipulation can include sharing the data with other devices. In some cases, data of a workout can be shared to enable competition between users. For example, competition can include a first user performing the same or similar workout as a second user and the control unit 112 evaluating a performance of the first user in relation to the second user. In some cases, the second user is the same person as the first usere.g., performing a workout at a different time or different location.
[0028] In some implementations, signatures include point values. For example, point values can indicate a number of shots made. In some cases, the number of shots made in a row can increase a point value for the shots made. For example, if a shot is made, a point value of a signature can increase by 1 or some other value. But if a shot is made within a sequence of one or more made shots, the point value can increase by more than the point value for a single shote.g., a multiple or increased value. Thus, the point value can indicate how many shots were made in a streak and help to identify consistent shooting from inconsistent shooting.
[0029] In some implementations, the signatures generated by the signature engine 116 are baseline signatures. Baseline signatures can be used to evaluate a user of the ball delivery system 106, such as the shooter 102. Evaluation can include comparison of one or more baseline signatures and a current workout signature. Evaluation can be performed by the evaluation engine 118.
[0030] The example of
[0031] In some implementations, the signature engine 116 generates baseline signatures from generated workout signatures. For example, a baseline signature can include a previously generated workout signature for a user, such as the shooter 102. In some implementations, the signature engine 116 generates baseline signatures using data from other userse.g., from other workout sessions performed by other users. The other users can be of a same or different skill level compared with the shooter 102e.g., for generating a baseline signature for the shooter 102. The other users can be using the ball delivery system 106 or another instance of the ball delivery system 106 or other system that provides data directly, or to one or more computers communicably coupled, to the control unit 112 of the ball delivery system 106.
[0032] The evaluation engine 118 evaluates one or more generated workout signatures. For example, the evaluation engine 118 can obtain one or more workout signatures, either complete or partially complete, from the signature engine 116. Evaluation by the evaluation engine 118 can include comparing one or more signature elements or values generated from one or more signature elements. Comparison can include comparisons of elements or values corresponding to a single signature or between elements or values of different signatures, where different signatures can be generated for different workouts of the same user or for different users performing the same or different workout.
[0033] In some implementations, the evaluation engine 118 compares a workout signature of the shooter 102 with a workout signature previously generated for the shooter 102. For example, the signature engine 116, or a signature engine of another system, can generate a signature that can be used as a baseline by the evaluation engine 118 for evaluating the shooter 102 performing the workout shown in
[0034] In some implementations, the evaluation engine 118 evaluates the shooter 102 per shot. For example, the evaluation engine 118 can compare a shot of the shooter 102 in a current workout to another workoute.g., another workout performed by the same shooter 102 or another user. One or more per shot evaluations can indicate if the particular shot indicates an improvement or decline for the shooter 102. In some cases, elements of the signature can be used to indicate whether one shot indicates increased performance compared to another shote.g., whether the shot was made or not, whether the ball entered the hoop cleanly without hitting backboard or rim, whether the ball had a particular spin or arc, among others. In some cases, the evaluation engine 118 can determine increased performance using time-based signature elements. For example, the evaluation engine 118 can obtain values indicating a number of made shots in a row per number of shots taken along a time-series of data in a signature. The evaluation engine 118 can determine a shooter had a streak of made shots that was longer, shorter, or the same as a previously performed workout. Based on the comparison with the previous workoute.g., using a previously generated workout signaturethe evaluation engine 118 can evaluate increased or decreased performance of a given shooter, e.g., for a particular workout identified using an identifier embedded within the corresponding workout signature. In some cases, in response to determining a longer streak of made shots in a current workout when comparing a current workout signature to a previous workout signature of the same or similar workout, the evaluation engine 118 can generate an indication for the given shooter that performance has increased.
[0035] In some implementations, the shooter 102 competes against themselves. For example, the evaluation engine 118 can obtain a signature of the shooter 102 performing a same drill or same workout. The signature can be generated by the signature engine 116 or other system, e.g., during a previous workout performed by the shooter 102. The evaluation engine 118 can then evaluate the shooter 102 against the previously generated signature. Evaluation can include indicating whether a previous shot was made or missed. Evaluation can include tracking one or more elements as described in this document.
[0036] Evaluation can include providing data to one or more machine learning models to determine whether a current workout is an improvement or decline compared to the previously generated signature. For example, one or more models can be trained using one or more signatures labeled with one or more values indicating an improvement or decline compared with one or more other signatures. In some cases, each signature can be represented using a vector or single value. A machine learning model can be trained to generate a vector or single value that represents a signaturee.g., provided a signature as input and output a vector or single value that is compared with labels for corresponding signatures. A distance between a vector or single value of a previously generated signature and a current workout of the shooter 102 can then indicate an evaluation of the shooter 102e.g., where a positive difference can indicate improvement and negative difference can indicate a decline.
[0037] The action engine 120 performs an action using a result of an evaluation. For example, the action engine 120 can obtain data indicating a result from the evaluation engine 118. In some cases, the evaluation engine 118 can indicate that a performance of the shooter 102 is improved compared to one or more previously generated signatures. The action engine 120 can use one or more indicators to provide a result of an evaluation.
[0038] In some implementations, the action engine 120 uses the indicator 108 to provide a result. For example, the action engine 120 can activate a display or audio device of the indicator 108 to provide a message to the shooter 102. The message can include text, colors, or other symbols. For example, the message can include an audio recording that encourages the shooter 102 to keep going. The message can indicate a green, yellow, or red symbol indicating an evaluation with one or more previously generated signaturese.g., where green indicates improvement, yellow indicates slight improvement, and red indicates decline, or other suitable scheme.
[0039] In some implementations, in addition to, or instead of, providing a result on the indicator 108, the action engine 120 suggests workouts or other actions using other communication means. For example, the action engine 120 can generate a digital message indicating specific workouts or interventions to be performed by a shooter to increase performance. The digital message can be generated and transmitted by the action engine 120 using various communication means, such as email, SMS, in-app notifications, or a combination of these among others. The actions suggested can be determined using output from the evaluation engine 118. For example, the evaluation engine 118 can determine that biomechanical input indicates a tightness on the right side of a shooter and, in response, the action engine 120 can generate a digital message suggesting that the shooter perform one or more specific stretches to alleviate the performance inhibition. The evaluation engine 118 can determine that movement data indicates decreased movement later in a workout and, in response, the action engine 120 can generate a digital message suggesting that the shooter perform cardio workouts to increase stamina or VO2 improving exercises. The action engine 120 can suggest or generate additional workouts or other actions (e.g., via the indicator 108 or other communication means). For example, the action engine 120 can prescribe, assign, or otherwise suggest workouts to the shooter 102. The workouts can include conditioning workouts based on results from the evaluation engine 118, the conditioning workouts can include running, exercises (e.g., pushups), skill drills (e.g., dribbling, passing, defending) before returning to a shooting drill (e.g., shooting drills, free throws, etc.). The workouts can include consequence workouts based on the results from the evaluation engine 118 (e.g., after missed shot, the action engine 120 can instruct the shooter to perform exercises such as a run down and back with time tracking of run time and next shot time). The workouts (e.g., conditioning workouts, consequence workouts, or otherwise) can simulate game-like conditions for the shooter and add pressure to the shooter (e.g., physiological pressure, mental pressure).
[0040] An action suggestion can be based on one or more machine learning models trained using expert suggestions paired with determined evaluations, where the one or more models predict and are adjusted using error terms generated by comparing predicted suggestions with suggestions from experts. The suggestion can also be based on a tree of possibilities where leaves of the tree indicate suggestions and nodes within the tree indicate specific elements of a shooter's performance.
[0041] In some cases, techniques described can reduce storage or processing requirements. For example, the ball delivery system 106 can remove data items based on a determination or prediction of use. In some cases, the ball delivery system 106 can determine or predict that an item of recorded data or a stream from a sensor is not used or is not likely to be used, e.g., in processing or in generating a workout signature. In response to such a determination, the ball delivery system 106 can not store the recorded data or data from the stream of the sensor or can initiate a turning off procedure of a sensore.g., by generating and sending a signal configured to turn of the sensor to the sensor.
[0042] In some cases, the ball delivery system 106 can remove data previously stored. For example, the ball delivery system 106 can delete a first baseline signature after an improved workout is recordede.g., the ball delivery system 106 can maintain a single baseline signature to avoid storing data for all previously recorded workouts. In some cases, only a best workout is retained and is deleted when a subsequent workout is recorded that is better. Best and better can refer to a comparison of a workout signature indicating that values of the signature indicate an improved performance of one or more elements of a workout. In some cases, data indicating one or more portions of workouts are retained but additional data is kept only for a subset of workoutse.g., only video or other data requiring significant storage is stored for a best, or top N number of best workouts and is deleted for workouts that fall below a top or top N number of best workouts. In this way, storage requirements for a system can be reduced. Reducing data can also reduce latency for searching or other processinge.g., by reducing the size of datasets to be searched.
[0043]
[0044] Example indication 108b includes audio output from an audio device of the ball delivery system 106. The audio device can be a speaker configured to play real time or pre-recorded audio files. The example indication 108b can include motivational words or updates. The example indication 108b can represent updates indicating an evaluation performed by the evaluation engine 118e.g., indicating whether the shooter 102 is improving or not or beating another user or not. In some cases, the shooter 102, or other user, can select preferences of indications. In some cases, preferences are determined dynamically by the ball delivery system 106. For example, the ball delivery system 106 can learn, using one or more machine learning models, which indications result in the best performance by the shooter 102e.g., as measured by comparisons of one or more values recorded using obtained sensor data. In some cases, users can respond beste.g., can achieve the most positive workout values-when indications of evaluation include positive reinforcement. In some cases, users can respond best to factual information indicating a current evaluatione.g., movement slower than normal, form is off, score is lower than at corresponding point in previously recorded signature, among others. In some cases, the ball delivery system 106 can adjust an output so that a user receives varied types of feedback. In some cases, varied feedback can help a user manage different types of feedback when playing in a real world or game environmente.g., jeering or boos during an away game versus cheers during a home game.
[0045] In some implementations, the action engine 120 performs actions, e.g., one or more actions described in this document, per shot. In some implementations, the action engine 120 performs actions after a workout. In some implementations, the action engine 120 provides results as a recommendatione.g., a personalized recommendation.
[0046] In some implementations, the action engine 120 adjusts a current workout. For example, the action engine 120 can adjust a frequency or speed that the return system 110 provides balls to the shooter 102. In some cases, the action engine 120 can increase a frequency of balls to the shooter 102, e.g., in response to a sequence of made shots without misses, in response to a heartbeat of the shooter 102 satisfying a range or a threshold heartbeat level, among other determinations. The action engine 120 can decrease a frequency of balls to the shooter 102, e.g., in response to one or more missed shots, in response to a heartbeat satisfying a different range or a threshold heartbeat level, among other determinations.
[0047] In some implementations, the action engine 120 provides a custom workoute.g., in response to evaluation data. The custom workout can include custom times for working oute.g., times corresponding with improved performance.
[0048] In some implementations, the action engine 120 provides predictive data. Predictive data can include one or more of (1) a timeline for mastering one or more skills, (2) short or long term training goals, or (3) predictive optimal training loads.
[0049] In some implementations, the action engine 120 provides output for player or team management. For example, the action engine 120 can provide one or more of: (1) personalized achievements or badges for players based on what the player should strive to achieve to be the most successful, (2) predictive practice patterns or pairings for player versus player challenges, (3) personalized weekly practice plans, e.g., based on player strengths or weaknesses, (4) progress reports or recommendations to coaches, e.g., regarding team performance, (5) recommendations for optimal player groupings based on strengths and weaknesses, (6) efficiency, consistency, skill retention, quality scores or other metrics, e.g., for each session or workout, (7) optimal game shot for each player, e.g., based on workout data, (8) optimal practice lengths, (9) personalized off-season practice plans, e.g., based on workout data or game statistics, (10) a predictive best player for each position or role on the team, (11) a matched player indicating a well-known or respected professional basketball player whose workout data best matches the player's workout data, (12) an optimal starting lineup prediction, e.g., using workout data from multiple players on a team, (13) a practice plan, (14) qualitative written feedback indicating a players' improvement or decline, e.g., using one or more recorded workout signatures provided to a large language learning model.
[0050]
[0051] The process 200 includes obtaining sensor data from one or more sensors of a ball delivery system (202). For example, obtaining sensor data can occur while a ball delivery system is executing a workout for a user, such as the shooter 102. The sensor engine 114 can obtain sensor data from one or more sensor(s) 109a-b.
[0052] The process 200 includes generating a workout signature using the sensor data (204). For example, the signature engine 116 can generate a workout signature for the shooter 102. The workout signature can include representations of actions that occurred at different times during the workout. Actions can include action taken by the shooter 102 and actions in the environment 100. Actions can include prior actions recorded by the control unit 112.
[0053] The process 200 includes evaluating the generated workout signature (206). For example, the evaluation engine 118 can evaluate the workout signature generated by the signature engine 116. Evaluation can include comparing the signature to one or more previously generated signatures or one or more thresholds. For example, evaluation can include comparing the signature to one or more threshold indicating goal values for the shooter 102. The evaluation can include comparing the signature to previously generated signatures representing a similar workout or drill performed either by the shooter 102 or another user.
[0054] The process 200 includes providing a result of evaluating the generated workout signature using an indicator of the ball delivery system (208). For example, the ball delivery system 106 can include the indicator 108 that provides information. The indicator 108 can include a screen, audio device, or other means for providing information. The information can include a representation of the evaluatione.g., an indication of whether or not the shooter 102 is performing well or poorly compared to goal values or compared to previously generated workout signatures. Indications can include audio, visual, or other cues. The indicator 108 can be configured with appropriate mechanisms to provide indications, such as an audio device or digital screen.
[0055] Although techniques and technologies are described in reference to basketball, the same techniques or technologies can be applied, with suitable adjustments, to various sports or activities. Other ball sports, such as ping-pong, bowling, tennis, golf, among others, can be aided by systems similar to the basketball implementation of the training system and techniques shown and described. For example, a training system described in this document can be applied to other ball sports by using similar sensor methods and an appropriate ball delivery system for the sporte.g., a golf ball distributor located near a golf club swinger connected to one or more sensors and a control unit, similar to the ball delivery system 106. A training system for a ball sport can include elements shown in
[0056] In this specification, the term engine or software engine refers to a software implemented input/output system that provides an output that is different from the input. An engine can be an encoded block of functionality, such as a library, a platform, a software development kit (SDK), or an object. Each engine can be implemented on any appropriate type of computing device, e.g., servers, mobile phones, tablet computers, notebook computers, music players, e-book readers, laptop or desktop computers, PDAs, smart phones, or other stationary or portable devices, that includes one or more processors and computer readable media. Additionally, two or more of the engines may be implemented on the same computing device, or on different computing devices.
[0057] 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.
[0058] 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.
[0059] 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.
[0060] 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.
[0061] 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.
[0062] 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.
[0063] 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.
[0064] 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.
[0065] 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.
[0066] 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.
[0067] 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.
[0068] 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.
[0069] 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.
[0070] 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.