Systems and methods for automatically generating weight loading guidance and control signals based on sensor- derived velocity data
By using sensor-derived velocity data to generate personalized weight-load curves adjusted for daily variations, the systems provide reliable and quantitative weight load recommendations, improving strength training effectiveness and safety.
Patent Information
- Application Number
- PCT/GB2025/050805
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-04-15
- Filing Date
- 2025-04-15
- Publication Date
- 2025-10-23
AI Technical Summary
Current methods for determining weight loads in strength training are inadequate, relying on manual guess-work or inflexible predetermined regimens, and existing automated systems fail to provide reliable, quantitative, and personalized guidance for loading weights based on daily variations in an athlete's performance.
Systems and methods that collect sensor-derived velocity data from workouts to generate personalized weight-load curves, adjusting for daily variations by shifting the curves based on current workout performance, and provide automated recommendations for future sets.
Provides data-driven, quantitative recommendations for weight loads, enhancing workout strategies, simplifying decision-making, improving physiological outcomes, and reducing injury risk.
Smart Images

Figure GB2025050805_23102025_PF_FP_ABST
Abstract
Description
SYSTEMS AND METHODS FOR AUTOMATICALLY GENERATING WEIGHT LOADING GUIDANCE AND CONTROL SIGNALS BASED ON SENSOR- DERIVED VELOCITY DATACROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional Application No. 63 / 634,343, field April 15, 2024, the entire contents of which are incorporated by reference herein.FIELD OF THE DISCLOSURE
[0002] This invention relates generally to strength training equipment, and more specifically to systems and methods for automatically and programmatically determining and prescribing a weight load for strength training based on sensor-derived velocity data.BACKGROUND OF THE DISCLOSURE
[0003] A key challenge in strength training is accurately and dynamically determining a weight load to lift. Different weight loads should be used in different sets depending on the progression of a user’s workout, the number of reps desired for a given set, the number of reps desired to be reserved after completion of a set, and the unavoidable daily variation of an athlete’s energy, strength, and performance. Current methods for determining weight loads rely on predetermined regimens which are inadequately personalized and are not flexible to adjust to an athlete’s different daily needs. Current methods also include relying on determinations made manually and subjectively, either by the athlete or by trainers; manual and subjective methods are unreliable, time-consuming, and insufficiently accurate and effective. Existing automated exercise guidance systems, leveraging historical exercise data and / or data from wearable devices or other sensors, is also primitive and ineffective, providing historical information to users but failing to provide reliable quantitative prescribed guidance for how a user should load weights for a specific future set of a specific workout on a specific day.SUMMARY OF THE DISCLOSURE
[0004] As described above, current techniques for determining how to load weights for strength training (whether using free weights or more sophisticated exercise equipment for lifting of weights) rely on manual guess-work or inflexible predetermined regimens. And, existing systems that collect and display historical exercise information fail to provide reliable and accurate quantitatively-determined personalized guidance for how an athleteshould load weight for a specific future set of a specific workout on a specific day. Accordingly, improved systems and methods leveraging sensor data from prior and current workouts and applying quantitative analyses are needed to automatically generate accurate and effective prescriptions (and / or automated control signals) for loading weight for strength training. Disclosed herein are systems and methods that may address the above-identified need.
[0005] Described herein are systems and methods that collect data from one or more sensors indicative of a user’s performance during historical strength- training workouts and during a current strength-training workout (e.g., during a warmup on the current day). Data may be collected from, for example, an accelerometer-based device attached to a barbell, dumbbell, or weight plate. Velocity data and velocity feature data may then be extracted and stored for reps of a user’s exercise over time, including historical workouts and one or more warmup sets from a current workout. Velocity features may include, for example, mean velocity for a given rep.
[0006] In order to determine a weight load for a future set in the workout, the user may then provide a user input, via a user interface, an indication of a number of reps desired to be performed in a future set (and optionally indicating a number of reps in reserve desired to be reserved following completion of the future set).
[0007] Based on the user input indicating the desired number of reps for the future set, based on velocity features for historical exercise data for the user, and based on velocity features for the warmup rep data, the system may then automatically determine a weight load to be used for the future set having the desired number of reps.
[0008] In order to make the determination, the system may in some embodiments generate and leverage weight-load to velocity curve, generated based on the user’s historical exercise data. The weight-load to velocity curve may be a data structure that represents the user’s historical exercise performance by indicating a personalized correlation between weight load and velocity features for the user. The weight-load to velocity curve may be used to automatically determine a weight load for a future set, by evaluating the curve at a given velocity feature amount, such as a target initial-rep velocity feature for a first rep of a set comprising a target number of reps, or a minimum one-rep-max velocity feature for performing a one-rep max. The curve may be evaluated at the given velocity feature amountto generate, as output, a weight load amount, which may be (or may be used to generate) the weight load for the user’s future set.
[0009] In some embodiments, current warmup velocity feature data can be used to shift the weight-load to velocity curve to provide a “current workout” adjustment, to account for expected daily variations in performance. Current warmup velocity features may be used to adjust the weight-load to velocity curve for the user by shifting the weight-load to velocity curve along the weight-load axis such that the shifted curve intercepts a point defined by a velocity feature and weight load taken from the user’s current warmup data. The shifted curve, when evaluated using an input velocity feature, may then output a different weight for the future set than would otherwise be indicated using an unadjusted curve, accounting for daily variation in the user’s performance as indicating by the collected warmup velocity features.
[0010] The techniques described herein can be used to automatically generate and display feedback to a user including an indication of a weight load that they should lift for a future set. The techniques described herein can be used to automatically generate and display a dynamic indication to a user that their weight load should be increased or decreased. In some embodiments, the techniques described herein may be used to automatically generate control signals for automatically (e.g., mechanically) controlling weight loads and / or other resistance devices of automated exercise equipment.
[0011] According to some embodiments, described herein is an exemplary method for determining a future weight load based on exercise velocity data for a user. The method can be performed by one or more processors of a system comprising a sensor device configured to obtain velocity data for reps performed by the user in exercise comprising lifting of weights. The method can comprise receiving exercise data comprising a plurality of data points for a plurality of respective reps performed by the user comprising lifting of weights, wherein each data point of the plurality of data points comprises velocity data for the rep, an associated number of subsequent reps performed in a set, and an associated weight load for the rep. The exercise data can comprise historical data for a plurality of reps performed by the user during one or more prior workouts, and warmup data for a set performed by the user during a current workout. The method can comprise computing, for one or more of the data points in the plurality of data points in the exercise data, a respective velocity feature data, and receiving a user input comprising an indication of a desired number of reps to be performed in a future set in the current workout. The method can comprise computing —based on velocity feature data for the historical data, velocity feature data for the warmup data, and the user input — a weight load for the future set. The method can comprise providing an output indicating the computed weight load for the future set.
[0012] In some embodiments, computing the weight load for the future set can comprise generating and storing, based on the historical data, a weight-load curve data structure representing a personalized correlation for the user between weight load and velocity feature data; generating and storing, based on the warmup data and the weight-load curve, a shifted version of the weight-load curve; and determining, based on the shifted version of the weightload curve and the user input indicating the desired number of reps to be performed, the weight load for the future set. In some embodiments, computing the weight load for the future set can comprise generating and storing, based on the historical data, a reps-in-reserve curve data structure representing a personalized correlation for the user between reps in reserve and velocity feature data.
[0013] In some embodiments, determining the weight load for the future set based on the shifted version of the weight-load curve can comprise determining a minimum velocity feature for the user; evaluating the shifted version of the weight-load curve at the determined minimum velocity feature to determine a current-workout one-rep maximum weight for the user; and applying a scaling factor to the current-workout one-rep maximum weight to determine the weight load for the future set. In some embodiments, determining the minimum velocity feature for the user can be based on velocity feature data for the historical data. In some embodiments, determining the weight load for the future set based on the shifted version of the weight-load curve can comprise evaluating the reps-in-reserve curve at the desired number of reps indicated by the user input to determine a target velocity feature for the desired number of reps; and evaluating the shifted version of the weight-load curve at the determined target velocity feature to determine the weight load for the future set.
[0014] In some embodiments, generating the reps-in-reserve curve data structure can comprise, for each group of initial reps represented in the historical data for which a given number of remaining reps were successfully performed following the initial reps, comparing velocity feature data of each initial rep in the group to identify, for each such group, a worst initial rep having a minimum velocity feature data amongst reps in the group; and generating the reps-in-reserve curve data structure based on velocity feature data of the identified worst initial reps for a plurality of respective groups of initial reps corresponding to a plurality of different respective numbers of remaining reps.
[0015] In some embodiments, generating the weight-load curve data structure can comprise, for each set represented in the historical data, identifying a best rep in the set having a maximum velocity data feature for the set; for each workout represented in the historical data, generating a workout weight curve representing, for each weight value lifted in the workout, the velocity feature data for the identified best rep; for each of the workout weight curves, determining a plurality of gradients between velocity features across weight values represented in the workout curve; and generating the weight-load curve data structure based the workout weight curves. In some embodiments, computing the weight load for the future set can comprise extrapolating the weight-load curve data structure such that it covers all velocity features down to 0.
[0016] In some embodiments, computing the respective velocity feature data for a given rep can comprise computing an average velocity for the rep. In some embodiments, computing the respective velocity feature data for a given rep can comprise calculating a portion of the rep associated with velocity under a threshold defined with respect to a peak velocity of the rep. In some embodiments, computing the respective velocity feature data for a given rep can comprise cropping the concentric portion of a velocity waveform for the rep; cumulatively summing the cropped portion of the velocity waveform to generate data for distance over time; resampling the original velocity waveform in terms of distance to generate velocity data for each point in a range of motion of the rep; and calculating the portion of the rep associated with the velocity under the threshold defined with respect to the peak velocity of the rep comprises calculating a proportion of the points in the range of motion of the lift that are associated with velocity under the threshold.
[0017] In some embodiments, computing the respective velocity feature data for a given rep can comprise computing a ratio of mean concentric velocity for the rep to peak concentric velocity for the rep. In some embodiments, the respective velocity feature data for a given rep can comprise computing a quantification of symmetricity of a velocity waveform for the rep.
[0018] In some embodiments, the user input further comprises a trait of the user comprising one or more user-specific metrics such as the user’s height, weight, age, sex, limb length, lifting history, or medical history.
[0019] In some embodiments, receiving the exercise data can comprise generating the exercise data by applying a trained machine learning model to reduce noise in raw sensordata to obtain the exercise data in a preprocessed format. In some embodiments, the trained machine learning model can be a deep learning model. The trained machine learning model can be trained using a process comprising: receiving training data comprises a plurality of accelerometer readings paired with a corresponding plurality of standardized readings; and training, based on the training data, the machine learning model to transform accelerometer reading into corresponding standardized readings.
[0020] In some embodiments, the method further comprising generating and transmitting a control signal, based on the computed weight load for the future set, to cause an exercise device to automatically load weight based on the computed weight load.
[0021] According to some embodiments, described herein is an exemplary system for determining a future weight load based on exercise velocity data for a user, the system comprising a sensor device configured to obtain velocity data for reps performed by a user in exercise comprising lifting of weights, one or more processors, and memory storing instructions that, when executed by the one or more processors, can cause the system to receive exercise data comprising a plurality of data points for a plurality of respective reps performed by the user comprising lifting of weights, wherein each data point of the plurality of data points comprises velocity data for the rep, an associated number of subsequent reps performed in a set, and an associated weight load for the rep. In some embodiments, the exercise data can comprise historical data for a plurality of reps performed by the user during one or more prior workouts, and warmup data for a set performed by the user during a current workout. The system can compute, for one or more of the data points in the plurality of data points in the exercise data, a respective velocity feature data. The system can receive a user input comprising an indication of a desired number of reps to be performed in a future set in the current workout. The system can compute — based on velocity feature data for the historical data, velocity feature data for the warmup data, and the user input — a weight load for the future set. The system can provide an output indicating the computed weight load for the future set.
[0022] According to some embodiments, described herein is an exemplary non-transitory computer-readable storage medium storing instructions configured to be executed by a system comprising a sensor device configured to obtain velocity data for reps performed by a user in exercise comprising lifting of weights. In some embodiments, the instructions, when executed by the one or more processors, can cause the system to receive exercise data comprising a plurality of data points for a plurality of respective reps performed by the usercomprising lifting of weights. Each data point of the plurality of data points can comprise velocity data for the rep, an associated number of subsequent reps performed in a set, and an associated weight load for the rep. In some embodiments, the exercise data can comprise historical data for a plurality of reps performed by the user during one or more prior workouts, and warmup data for a set performed by the user during a current workout. The system can compute, for one or more of the data points in the plurality of data points in the exercise data, a respective velocity feature data. The system can receive a user input comprising an indication of a desired number of reps to be performed in a future set in the current workout. The system can compute — based on velocity feature data for the historical data, velocity feature data for the warmup data, and the user input — a weight load for the future set. The system can provide an output indicating the computed weight load for the future set.
[0023] It will be appreciated that any of the variations, aspects, features and options described in view of the systems and methods can be combined.
[0024] Additional advantages will be readily apparent to those skilled in the art from the following detailed description. The aspects and descriptions herein are to be regarded as illustrative in nature and not restrictive.
[0025] All publications, including patent documents, scientific articles and databases, referred to in this application are incorporated by reference in their entirety for all purposes to the same extent as if each individual publication were individually incorporated by reference. If a definition set forth herein is contrary to or otherwise inconsistent with a definition set forth in the patents, applications, published applications and other publications that are herein incorporated by reference, the definition set forth herein prevails over the definition that is incorporated herein by reference.BRIEF DESCRIPTION OF THE FIGURES
[0026] Exemplary embodiments are described with reference to the accompanying figures, in which:
[0027] FIG. 1 depicts an exemplary sensor-based automated process for determining a future weight load of a user, in accordance with some embodiments.
[0028] FIG. 2 depicts an exemplary process for generating and shifting a weight-load to velocity curve of a user, in accordance with some embodiments.
[0029] FIG. 3 depicts an exemplary process for generating a reps-in-reserve to velocity curve of a user, in accordance with some embodiments.
[0030] FIG. 4 depicts an exemplary process for extracting velocity features from exercise data, in accordance with some embodiments.
[0031] FIG. 5 depicts an exemplary machine-learning model for standardizing noisy sensor data, in accordance with some embodiments.
[0032] FIG. 6 depicts an exemplary sensor-based system for collecting exercise data, in accordance with some embodiments.
[0033] FIG. 7 depicts an exemplary method for determining a weight load of a future set, in accordance with some embodiments.DETAILED DESCRIPTION OF THE DISCLOSURE
[0034] As described above, current techniques for quantifying a user’s performance in exercise comprising lifting of weights fail to provide data-driven, quantitative recommendations for how much weight a user should attempt to lift during an exercise. For example, current techniques are unable to generate correlations between the velocity data and weights and / or repetitions (reps) to be performed. Conversely, the systems and methods described herein provide user-specific determinations and recommendations for weights that a user should lift, quantitatively determined based on analysis of velocity data for the movement of weights collected during prior and current user workouts. By leveraging sensor-based automated systems, machine learning techniques, and the algorithms described herein to process sensor data, the systems described herein can analyze the user’s performance across historical and current workouts to provide the user with data-driven, quantitative recommendations. The recommendations can enhance the user’s weight training strategy, simplify decision making processes for users during workouts, improve physiological outcomes, and decrease the risk of injury and / or failure during the user’s workouts.
[0035] Disclosed herein are exemplary systems and methods for quantitatively determining and prescribing a weight load for a user to lift during a strength training exercise, wherein the weight load is determined based on processing sensor data from prior and current exercise performances in combination with a user input indicating a desired number of reps to be performed in a future set.
[0036] The systems and methods described herein leverage sensor data collected during prior workouts to build a database of the user’s exercise data that can be leveraged to determine and prescribe future weight loads. Specifically, the system collects velocity data regarding the velocity at which reps comprising lifting of weights are performed (e.g., the velocities at which a weight is moved through a range of motion during an exercise).
[0037] This velocity data may be collected using one or more accelerometer devices that may physically attach to a weight that is being lifted, for example by clipping onto a barbell, dumbbell, weight plate, or the like. The accelerometer device may then collect acceleration and / or velocity data as the weight to which the device is attached is moved through a range of motion during the exercise. Additionally or alternatively, the velocity data may be collected using, e.g., optical monitoring and automated video analysis to determine the velocities at which a weight is moved through a range of motion during the exercise.
[0038] After sensor data indicative of velocity is collected, the sensor data may be preprocessed to generate processed velocity data for each rep in the data store. The velocity data may then be used to generate one or more velocity features, which may for example include average velocity for a rep, peak velocity for the rep, a quantification of intensity for a rep (e.g., based on the average velocity and peak velocity for the rep), or any other suitable feature data generated based on the velocity data. The velocity feature data may be stored in a database or other corpus along with data indicating the associated weight that was lifted for the rep, the type of lift that was performed, the time of collection, and / or the rep number and order within a set that the rep was performed.
[0039] After the database of historical velocity feature exercise data is collected, and after velocity feature data for the user’s warmup lifts during a current workout are collected, the user may enter a user input (e.g., using a user interface of a mobile electronic device, tablet, desktop or laptop computer, wearable electronic device, or terminal interface of an exercise device) comprising an indication of a number of reps the user intends to perform during a future set. The user input may be entered in the form of a selection of a predefined set count or a manual entry of a set count. The user input may comprise a number of reps for an immediate future set and may optionally include a number of desired reps-in-reserve that the user wishes to remain following the immediate future set.
[0040] Based on the user input indicating the desired number of reps (and optionally the desired number of reps in reserve) for the future set, based on velocity features for historicalexercise data, and based on velocity features for warmup rep data, the system may then automatically determine a weight load to be used for the future set having the desired number of reps (and accounting for the desired number of reps in reserve).
[0041] Historical velocity feature data can be used to generate a weight-load to velocity curve, which represents the user’s historical exercise performance by indicating correlation between weight load and velocity features for the user. The weight-load to velocity curve may be used to determine a weight load for a future set by evaluating the curve at a given velocity feature amount, such as a target initial-rep velocity feature for a first rep of a set comprising X number of reps, or a minimum one-rep-max velocity feature for performing a one-rep max.
[0042] Current warmup velocity feature data can be used to shift the weight-load to velocity curve to provide a “current workout” adjustment, to account for expected daily variations in performance. For example, if the user is struggling to lift a warmup weight during the current workout (e.g., due to tiredness), the extracted current warmup velocity features may be used to adjust the weight-load to velocity curve for the user. Specifically, the weight-load to velocity curve can be shifted along the weight-load axis such that the shifted curve intercepts a point defined by a velocity feature and weight load taken from the user’s current warmup data. The adjusted / shifted curve, when evaluated using an input velocity feature, may then output a lower weight for the future set than would otherwise be indicated using an unadjusted curve.
[0043] The techniques described herein can be used to automatically generate and display feedback to a user including an indication of a weight load that they should lift for a future set, and / or a dynamic indication that their weight load should be increased or decreased. In some embodiments, the techniques described herein may be used to automatically generate control signals for automatically (e.g., mechanically) loading weights or other resistance devices to exercise equipment.
[0044] It should be noted that the specification herein contemplates that exercise comprising lifting of weights is made up of a plurality of reps. A single lift (translating the weight load up and back down, or down and back up, through a range of motion) is referred to as a rep. The rep may consist of a concentric portion, in which the working muscle shortens (e.g., pushing a barbell up during a bench press), and an eccentric portion, in which the working muscle lengthens (e.g., lowering a barbell down to the best during a bench press). Theconcentric portion of the rep can be analyzed to determine the user’s difficulty of performing the rep. A plurality of reps performed in immediate succession using a certain weight load make up a set. This disclosure contemplates that all reps in a given set are done with the same amount of weight. A plurality of different sets may be performed during a single workout, which is a single session on a single day during which multiple sets are performed. Different sets performed during a single workout may be performed at different weight loads.
[0045] The techniques described herein for logging historical and current sensor data and for determining and prescribing a future weight load are contemplated to be performed on a per- exercise-type basis. That is, a single analysis may be performed for analyzing a user’s past workouts, sets, and reps for bench press, to determine and prescribe a future weight load for bench press. And, for example, a separate analysis may be performed for analyzing a user’s past workouts, sets, and reps for squat, to determine and prescribe a future weight load for squat.
[0046] Reference will now be made in detail to implementations and embodiments of various aspects and variations of systems and methods described herein. Although several exemplary variations of the systems and methods are described herein, other variations of the systems and methods may include aspects of the systems and methods described herein combined in any suitable manner having combinations of all or some of the aspects described.
[0047] Disclosed herein are systems and methods that may address one or more of the needs discussed above.Determining Future Weight Load based on Prior Velocity Data
[0048] An advantage of the systems and methods disclosed herein is the ability to quantitatively determine and prescribe how much weight a user should lift for a future set of a workout. When given a user’s current workout performance (e.g., how the user is performing during a warmup based on velocity features), the user’s historical exercise performance during prior workouts, and an input from the user (e.g., desired number of reps the user wants to complete during the future set), the systems described herein can leverage machinelearning, sensor data, and the algorithms described herein to prescribe the amount of weight that the user should lift for the desired number of reps in the future set of the workout.
[0049] FIG. 1 depicts an exemplary sensor-based automated process 100 for determining a future weight load of a user, in accordance with some embodiments. Process 100 can be performed, for example, using a system comprising one or more electronic devicesimplementing processors, memory, and programs on the memory. In process 100, some blocks are, optionally, combined, the order of some blocks is, optionally, changed, and some blocks are, optionally, omitted. In some examples, additional steps may be performed in combination with the process 100. Accordingly, the operations as illustrated (and described in greater detail below) are exemplary by nature and, as such, should not be viewed as limiting.
[0050] The process 100 involves at least three major steps: receiving user exercise data 156 from a sensor device 198, receiving a desired number of reps 158 from a user input device 199, and determining a weight load 160 for a future set comprising the desired number of reps. To break the process 100 down further, the system receives exercise data (e.g., user exercise data 156) comprising a plurality of data points for a plurality of respective reps performed by the user, wherein each data point of the plurality of data points comprises velocity data for the rep, an associated number of subsequent reps performed in a set, and an associated weight load for the rep. The exercise data 156 can be broken down into historical data for a plurality of reps performed by the user during one or more prior workouts and warmup data for a set performed by the user during a current workout. The system then computes a respective velocity feature data for one or more of the data points in the plurality of data points in the exercise data 156. The system receives a user input comprising an indication of a desired number of reps 158 to be performed in a future set in the current workout. The system computes — based on velocity feature data for the historical data, velocity feature data for the warmup data, and the user input — a weight load for the future set, and provides an output (e.g., to the user) indicated the computed weight load for the future set.
[0051] In some embodiments, the system receives raw sensor data 150 from a sensor device 198. The sensor device 198 may be attached to exercise equipment and may comprise an accelerometer for collecting velocity readings associated with lifting of weights during exercise. Raw sensor data 150 received from the sensor device 198 can include data associated with the user’s historical workouts, as well as data associated with the user’s current warmup. The historical exercise data can comprise data pertaining to the user’s historical velocity readings (e.g., historical data described at block 302 of FIG. 3). The user’s current warmup data can comprise data pertaining to velocity readings form the user’s current warmup.
[0052] At block 102, the system applies data preprocessing to the raw sensor data 150 to obtain processed velocity data 152. Because the raw sensor data 150 is frequently noisy, the raw sensor data 150 may undergo a data preprocessing step to clean up and / or standardize the sensor data. In some embodiments, the system may transform raw sensor data 150 using a trained machine learning model to reduce noise. Raw sensor data 150 can be fitted to a waveform that resembles a “gold standard” of sensor data before being processed by the algorithms described herein (e.g., processes 100, 200, 300, and 400 of FIGS. 1, 2, 3, and 4, respectively). The standardized sensor data is referred to as processed velocity data 152. Block 102 may correspond to at least a portion of processes described in FIG. 5.
[0053] At block 104, the system applies velocity feature extraction to the processed velocity data 152 to obtain velocity feature data 154. In some embodiments, the velocity feature data 154 can include a velocity at which the weight or other exercise equipment is moved by the user, such as a mean concentric velocity (MVC) or a peak concentric velocity (PVC). In some embodiments, the velocity feature data 154 is obtained based on further extrapolation of the sensor data. For example, the velocity features described herein may characterize an intensity and / or difficulty of the exercise, as calculated based on the distribution of velocities throughout a given rep. The process for extracting the one or more velocity features can involve the use of an algorithm to resample data associated with the exercise, as described in FIG. 4. Block 104 may correspond to at least a portion of the process 400 of FIG. 4.
[0054] The raw sensor data 150, processed velocity data 152, and velocity feature data 154 may collectively be considered user exercise data 156. Because the collective data pertains to sensor data collected from both historical and current workouts of the user, the user exercise data 156 can represent the user’s current workout performance (e.g., how the user is performing during a warmup based on velocity features) and the user’s historical exercise performance. The user exercise data 156 can be used as an input of the weight load generation process described at block 106.
[0055] In some embodiments, the system receives a user input comprising desired number of reps 158 from a user input device 199. The user input device 199 may be a personal electronic device (e.g., cell phone) of a user that is communicatively coupled with the system. The desired number of reps 158 can be expressed as a user input of how many more reps the user wishes to complete during a future set of a workout (e.g., “5 more reps in this set,” “3 more sets of 8 reps”), a user input of how many reps in reserve (RIR) the user wishes to have (e.g., “finish my current set with 5 RIR”), or as a combination of the two. The desirednumber of reps 158 can be used as an input of the weight load generation process described at block 106. In some embodiments, the system may sum the user inputs of how many more reps the user wishes to complete with the user input of how many RIR the user wishes to have to obtain a total rep number. The total rep number may be considered the desired number of reps 158 and may, similarly, be used as an input at block 106.
[0056] In some embodiments, the user input may further comprise a trait of the user. The trait of the user can include one or more user-specific metrics such as the user’s height, weight, age, sex, limb length, lifting history, medical history, or any other relevant metrics that may affect the user’s current workout performance. Along with the desired number of reps, the trait of the user can be used as an input at block 106.
[0057] At block 106, the system computes a weight load for a future set based on the user exercise data 156 received from the sensor device 198 and the desired number of reps 158 received from the user device 199. Block 106 comprises a weight load generation process involving the generation of weight-load to velocity curves (also referred to herein as “weightload curves”). Upon the completion of block 106, the system can generate output data 160 indicating the determined weight load that a user should lift for the desired number of reps 158 in the future set.
[0058] Blocks 108-122 are steps that can occur within block 106. It is to be understood that to perform the weight load generation process of block 106, not every step of blocks 108-122 needs to occur. Some blocks are, optionally, combined, the order of some blocks is, optionally, changed, and some blocks are, optionally, omitted. In some examples, additional steps may be performed in combination with any of blocks 108-122. Accordingly, the operations as illustrated (and described in greater detail below) are exemplary by nature and, as such, should not be viewed as limiting.
[0059] In some embodiments, the system generates and stores, based on the historical data, a weight-load curve data structure representing a personalized correlation for the user between weight load and velocity feature data. The system generates and stores, based on the warmup data and the weight-load curve, a shifted version of the weight-load curve. The system further generates and stores, based on the historical data, a reps-in-reserve curve data structure representing a personalized correlation for the user between reps in reserve and velocity feature data. The system determines, based on the shifted version of the weight-load curve and the user input indicating the desired number of reps 158 to be performed, theweight load for the future set. Determining the weight load for the future set based on the shifted version of the weight-load curve can comprise evaluating the reps-in-reserve curve at the desired number of reps 158 indicated by the user input to determine a target velocity feature for the desired number of reps, and evaluating the shifted version of the weight-load curve at the determined target velocity feature to determine the weight load for the future set.
[0060] At block 108, in some embodiments, the system generates a weight-load curve based on historical velocity feature data (e.g., from the user exercise data 156). The weight-load curve can represent the correlation between historical velocity features to historical weights lifted, as based on the historical velocity feature data. In some embodiments, the weight-load curve can be generated based, at least in part, on historical velocity feature data obtained from previous workouts associated with the user, providing a personalized weight-load curve. In some embodiments, the weight-load curve can be generated based, at least in part, on aggregated historical data accounting for multiple users’ historical exercise performances. The generation of the weight-load curve can be an algorithmic process that is described in further detail in process 200 of FIG. 2.
[0061] At block 110, in some embodiments, the system shifts the weight-load curve based on current warmup velocity feature data (e.g., from the user exercise data 156). The weight-load curve, which is generated based on historical exercise data, can be shifted and / or scaled based on the user’s performance during the current warmup. For example, a weight-load curve may represent weight along the x-axis and velocity features along the z-axis. If the user lifts a weight X at velocity Z during the current warmup, the data point can be represented as (X, Z). The weight-load curve generated at block 108 can then be shifted along the weight axis (x-axis) such that the weight-load curve intercepts the data point (X, Z). The shifting of the weight-load curve can be an algorithmic process that is described in further detail in process 200 of FIG. 2.
[0062] Blocks 112-116 represent steps that the system may take to perform a fully- personalized method of determining the user’s weight load for the future set. The fully- personalized method determines the weight for the user to lift based on a personalized weight-load curve (e.g., generated and shifted at blocks 108 and 110) and a personalized reps-in-reserve curve (e.g., generated and shifted at blocks 112-116).
[0063] In some embodiments, the system generates and stores, based on the historical data, a weight-load curve data structure representing a personalized correlation for the user betweenweight load and velocity feature data. The system generates and stores, based on the warmup data and the weight-load curve, a shifted version of the weight-load curve. The system determines the weight load for the future set based on the shifted version of the weight-load curve. For example, the system can determine a minimum velocity feature for the user. Determining the minimum velocity feature for the user can be based on velocity feature data for the historical data. The system can then evaluate the shifted version of the weight-load curve at the determined minimum velocity feature to determine a current-workout one -rep maximum weight for the user. The system can then apply a scaling factor to the currentworkout one-rep maximum weight to determine the weight load for the future set.
[0064] At block 112, the system generates a reps-in-reserve to velocity curve (also referred to herein as a “reps-in-reserve curve”) based on historical velocity feature data (e.g., from the user exercise data 156). The reps-in-reserve curve can represent the correlation between historical velocity features to historical reps lifted, as based on the historical velocity feature data. In some embodiments, the reps-in-reserve curve can be generated based, at least in part, on historical velocity feature data obtained from previous workouts associated with the user, providing a personalized reps-in-reserve curve. In some embodiments, the reps-in-reserve curve can be generated based, at least in part, on aggregated historical data accounting for multiple users’ historical exercise performances. The generation of the reps-in-reserve curve can be an algorithmic process that is described in further detail in process 300 of FIG. 3.
[0065] At block 114, the system evaluates the reps-in- reserve curve at the desired number of reps 158 to determine a target velocity feature. The target velocity feature can be a threshold velocity that the user is expected to meet and / or exceed on a rep of the future set in order to successfully complete the set. For example, the reps-in-reserve curve may indicate that a velocity feature of 0.15 m / s (the target velocity feature) is correlated with a desired number of reps 158 equaling 5. This means that, based on historical workouts of the user, the user has successfully completed a set of 5 reps when the starting velocity (the velocity of the first rep of the set) of the set is greater than a velocity of 0.15 m / s. Thus, the velocity of 0.15 m / s is the target velocity feature for a desired number of reps 158 equaling 5.
[0066] At block 116, the system evaluates the shifted weight-load curve at the target velocity feature to determine the user’s weight load for the future set. Because the shifted weight-load curve represents the correlation between weight load and velocity, the weight load value corresponding to the value of the target velocity feature should be the target weight load for the user to complete the desired number of reps 158 in the future set. For example, for atarget velocity feature of 0.15 m / s, as determined at the example at block 114, the shifted weight-load curve may have a corresponding weight load value of 75 kg. Thus, the determined weight load that the user can lift for the desired number of reps 158 (e.g., 5 reps) in the future set is 75 kg. Thus, in the personalized method of determining the user’s weight load for the future set, the weight load is determined using a combination of the reps-in- reserve curve and the shifted weight-load curve.
[0067] Blocks 118-122 represent steps that the system may take to perform a semipersonalized method of determining the user’s weight load for the future set. The semipersonalized method determines the weight for the user to lift based on a personalized weight-load curve (e.g., generated and shifted at blocks 108 and 110) and a generic, nonpersonalized minimum velocity feature value (e.g., obtained from aggregated user data at blocks 118-122).
[0068] At block 118, the system determines a minimum velocity feature value. The minimum velocity feature value may be determined either by looking at user’s minimum performed velocity feature of all time, or by using a generic minimum velocity feature obtained from aggregated user data. In some embodiments, lower average velocities during a repetition may generally be associated with greater intensity / difficulty. Below a certain average velocity threshold, the user may be unable to move the weight fast enough to complete the repetition before tiring out and / or failing the lift. For example, out of all historical attempts of the user to lift 100 kg, the lowest average velocity at which the user managed to successfully complete the repetition was 0.15 m / s. Thus, the minimum historical velocity feature value may equal a velocity of 0.15 m / s. The minimum velocity feature value assumes that the user completes one rep in the set successfully. For a user to complete multiple reps in a set, the set would be less difficult for the user, and the velocity feature value of the set would be higher than compared to a very difficult one-rep set. Accordingly, the minimum velocity feature value is associated with lifting a one -rep max weight of the user.
[0069] At block 120, the system evaluates the shifted weight-load curve at the minimum velocity feature value to determine a one-rep max weight. Because the shifted weight-load curve represents the correlation between weight load and velocity, the weight load value corresponding to the minimum velocity feature value should be the target weight load for the user to lift a one-rep max weight in the future set. For example, for a minimum velocity feature value of 0.15 m / s, as determined at the example at block 118, the shifted weight-loadcurve may have a corresponding weight load value of 100 kg. Thus, the determined weight load that the user can lift for a one -rep max weight in the future set is 100 kg.
[0070] In some embodiments, the minimum historical velocity feature (Zmin) may be represented as a line parallel to the z-axis and running through the Zmin value. The corresponding X- value at which the Zmin line intersects with the transformed weight-load curve is the weight at which the user is expected to successfully complete one repetition (a one-rep max).
[0071] At block 122, the system applies a scaling factor to the one-rep max weight based on the desired rep number 158 to determine the user’s weight load for the future set. The scaling factor may be a predetermined scaling factor determined either by looking at the user’s previous exercise performance, or by using a generic scaling factor obtained from aggregated user data. In some embodiments, the scaling factor can be a predetermined percentage corresponding to a desired rep number 158. For example, the user may wish to perform another two repetitions at a lower intensity level, such that the user will still have three reps in reserve (RIR) upon completion of the two repetitions (five total reps). The desired rep number 158 can equal five in this example. The weight for performing five additional repetitions can be calculated accordingly by scaling the one-rep max weight (obtained at block 120) by a predetermined percentage (e.g., 75% of the one -rep max weight). Thus, in the semi-personalized method of determining the user’s weight load for the future set, the weight load is determined using a combination of the minimum velocity feature value, a scaling factor, and the shifted weight-load curve.
[0072] A third method for determining a weight load for the future set, distinct in at least some ways from (a) curve creation and shifting blocks 108-110, (b) the fully-personalized method of blocks 112-116, and / or from (c) the semi-personalized method of blocks 118-122, may in some embodiments be utilized (in addition or alternatively to one or both of the previously described methods). This third method may be referred to as an alternative semipersonalized method. As explained below, this method may be a semi-personalized method that becomes more personalized over time. The alternative semi-personalized method may be performed as part of block 106. However, the steps for the alternative semi -personalized method are shown separately in FIG. 7 due to space constraints in FIG. 1.
[0073] At block 700 in FIG. 7, in some embodiments, the system may generate a normalized weight-load graph based on an individual’s historical velocity data (e.g., historical velocityfeature data, e.g. from the user exercise data 156). The graph may comprise a scatter-plot of previous relative-speed versus weight. This graph can indicate a historical relationship between a particular weight and the velocity at which the user has lifted it, as based on the user’s historical velocity data. In some embodiments, the weight-load graph can be obtained and normalized based on the velocity data from an individual’s previous sessions, providing a personalized weight-load graph. In some embodiments, the weight-load graph can be generated, at least in part, from aggregated historical data, accounting for multiple users’ historical exercise performances.
[0074] The weight-load graph can be generated using the historical velocity data of an individual or the aggregated historical velocity data of multiple users. At each of a plurality of given weight loads performed during the current session’s warmups, historical velocity data is obtained for each previous session for the given weight. In some embodiments, this data may be gathered only for previous sessions in which the exact weight of interest was performed; in some embodiments, previous sessions that did not include the specified weight may also be included (e.g., using interpolation). This historical data for a given weight (whether exact, non-exact, and / or interpolated) may then be normalized and used to form a distribution of previous velocities at the given weight (e.g., relative to the mean and standard deviation of previous velocities). Once relative velocity performance from previous sessions is generated for all weights performed during the current warm-ups, the data may be plotted as individual data points (X,Z)=(Weight, Relative Velocity). The normalization factors may be kept to calculate relative performance of the current warm-ups in the subsequent steps (e.g., in block 110 as described below).
[0075] Block 700 may be understood as an alternative to block 1080 described above, may share one or more characteristics in common with block 108, and in some embodiments may be combined or substituted in whole or in part with or for block 108.
[0076] At block 701 in FIG. 7, in some embodiments, the system may generate a weight-load curve based on the current warm-up velocity feature data (e.g., from the user exercise data 156). This weight-load curve, which is generated based on the current performance from the current workout / warmup, can be scaled and / or shifted by the historical velocity feature data. For example, a weight-load curve may be represented by weight along the x-axis and relative velocity along the z-axis. If the user lifts a weight X at velocity Z’, which, based on previous velocity data, is normalized to relative velocity Z, then the data point can be represented as (X,Z). The weight-load curve can represent the user’s relative performance today, comparedto their own previous performances or the aggregated performances of multiple users, based on the historical velocity feature data, gathered in block 108. An overall score of relative performance during today’s session can then be calculated, based on historical exercise performance during previous sessions. Block 701 may be understood as an alternative to block 110 described above, may share one or more characteristics in common with block 110, and in some embodiments may be combined or substituted in whole or in part with or for block 110.
[0077] At block 702 in FIG. 7, in some embodiments, the system may generate a reps-in- reserve predictive model based on the aggregated historical velocity and reps-in-reserve feature data from all users (e.g., based at least in part on user exercise data 156). This predictive model can represent the relationship between a given number of reps performed and / or the velocity feature data of a particular set, with the reps-in-reserve of that set. In some embodiments, the reps-in-reserve predictive model can be generated, at least in part, based on aggregated historical data from all / multiple users’ historical exercise performances. The model may be configured such that, for a given set, a predicted reps-in-reserve score (e.g., a predicted number of reps in reserve) may be calculated by the model and provided to the user or to a system.
[0078] For example, in some embodiments, the velocity feature data of a given set, together with the rep count of the set, may be inputted to the predictive model. The model may then return an output of predicted reps-in-reserve associated with this set, based on the users’ historical velocity and reps-in-reserve data and / or the aggregated historical velocity and reps- in-reserve data of multiple users. That score may then be returned as an output to a user (or system), who may have the chance to amend the score if necessary, desired, or advantageous.
[0079] At block 704, in some embodiments, the system may update (e.g., fine-tune) the previously created reps-in-reserve predictive model. As the system collects more data, the predictive model can be intermittently or continually fine-tuned using the newly acquired velocity feature data, together with the user’s historical velocity feature data. Fine-tuning the model allows the model to create reps-in-reserve predictions that are gradually more personalized over time as more data is collected. In some embodiments, the fine-tuning process may utilize only the most recent (e.g., within a predetermined or dynamically determined recency threshold) historical velocity and reps-in-reserve data of an individual to update the model. In some embodiments, the fine-tuning process can utilize the entire historical velocity and reps-in-reserve data of an individual to update the model. In someembodiments, the fine-tuning process can utilize aggregated historical velocity and reps-in- reserve data from multiple users to update the model.
[0080] At block 706, the system may apply the updated reps-in-reserve predictive model to predict one or more predicted numbers of reps-in-reserve for a current workout warmup. The updated model may take as input absolute velocity data from the current set (e.g., rather than adjusted velocity data from block 701), and it may also takes as input the rep count of the current set as an explicit argument (how many reps were performed during the set).
[0081] At block 708, in some embodiments, the system may generate a top set weight prediction model using historical velocity feature data. The system may generate and / or train the top set weight prediction model based on aggregated historical velocity feature data of all / multiple users. This model may encapsulate the relationship between velocity data of warm-ups and weight selection of a new set, as determined by the historical velocity data of an individual or aggregated historical velocity data of multiple users. In some embodiments, this process utilizes both historical velocity feature data and demographic data of users to generate the model. In some embodiments, this model may be generated based on, trained based on, and / or configured to accept as input at inference any one of more of the following: 1) velocity data of current warmup, 2) weight data of current warmup, 3) desired number of reps for the top set (e.g., future set), 4) desired number of reps-in-reserve for the top set (e.g., future set), and / or 5) demographic variables. In some embodiments, this top set weight prediction model may be generated and / or trained using the velocity feature data of previous sessions’ warm-ups and the respective top sets to capture the correlation between warmup velocity and top set weight prescription.
[0082] At block 710, the system may obtain a top set weight prediction (e.g., may compute a weight load for a future set) using a current session warmup velocity feature data and reps-in- reserve predictions, plus desired top set reps and / or reps-in-reserve. The system may generate a top set load prediction using the calculated weight-load curve of the current session’s warm-ups (e.g., as calculated, e.g., at block 110 and / or at block 701), the reps-in-reserve prediction for each respective warm-up, and the desired number of reps and / or reps-in- reserve for the top set. In some embodiments, deomgraphic data of the user may also be used to enhance top set prediction (e.g., 1RM, gender, age).
[0083] In some embodiments, the values from the weight-load curve from block 701 may be used to generate, train, and / or apply the top set prediction model. In some embodiments,only the true velocity of the warmup may be used to generate, train, and / or apply the top set prediction model. In some embodiments, blocks 702-710 may be performed with or without blocks 700 and 701 being performed.
[0084] As the user collects more data, the weight load-curve and reps-in-reserve predictions may gradually become more personalized and hence the top set prediction may move from general / semi-personalized towards more fully-personalized. In some instances, the rate of personalization may be varied and the extent to which aggregated data is relied upon may be enhanced or reduced (e.g., depending on the experience level of the user).
[0085] Upon the completion of block 106, the system can generate output data 160 indicating the determined weight load that a user should lift for the desired number of reps 158 in the future set. The output data 160 can be transmitted to a user device (e.g., user input device 199) so that the user can proceed with the workout based on the determined weight load. The output data can comprise a recommendation to the user. For example, the recommendation can be a weight for the user to lift based on the determined weight load. In some embodiments, the system can recommend that a user attempt to lift a weight of 100 kg on the next repetition to perform one additional repetition at maximum intensity. In some embodiments, the system can recommend that the user attempt to lift a weight of 75 kg on the next two repetitions to perform two additional repetitions at a lower intensity. Based on the quantitative data collected and processed as part of the process 100, the user may rely on the recommendation to refine his or her strength training strategy.
[0086] At block 124, the system can transmit a control signal to exercise equipment based on the determined weight load. For example, the system may instruct a machine to automatically load a certain amount of weight (or other resistance) onto exercise equipment for the user to lift. In some embodiments, generating and providing an output and / or generating and providing a control signal may be performed conditionally upon verification that one or more conditions are met. In some embodiments, the system may generate and provide an output or control signal only upon determining that the prescribed weight amount is not a weight amount that is already loaded (which may be determined, e.g., based on signals received by one or more sensors monitoring weight load amounts mechanically, optically, or otherwise).Algorithm for Generating Weight-Load Curve
[0087] FIG. 2 depicts an exemplary process 200 for generating and shifting a weight-load to velocity curve of a user, in accordance with some embodiments. The process 200 can be integrated within a larger automated workflow (e.g., process 100 of FIG. 1) involving other sensor-based processes, automated processes, and / or machine-learning techniques. For example, the process 200 may be used in conjunction with process 300 of FIG. 3, process 400 of FIG. 4, and machine-learning techniques described in FIG. 5 to provide determinations of the user’s strength.
[0088] Prior to performing process 200, an exemplary system (e.g., one or more electronic devices) can receive historical velocity feature data. For a given weight of X, a user may historically have been able to lift X weight for Y repetitions (also referred to herein as “reps”) before stopping and / or struggling. Stopping and / or struggling to lift weight X is associated with changes in the velocities Z at which the user can lift weight X. These velocities Z can be recorded as historical velocity data, and the corresponding X weight and Y repetitions can be recorded as historical weights lifted and historical rep numbers, respectively. The data can be recorded as the historical velocity feature data used herein.
[0089] In some embodiments, generating the weight-load curve data structure can comprise, for each set represented in the historical data, identifying a best rep in the set having a maximum velocity data feature for the set. For each workout represented in the historical data, the system can generate a workout weight curve representing, for each weight value lifted in the workout, the velocity feature data for the identified best rep. For each of the workout weight curves, the system can determine a plurality of gradients between velocity features across weight values represented in the workout curve. The system can then generate the weight-load curve data structure based the workout weight curves, and extrapolate the weight-load curve data structure such that it covers all velocity features down to 0.
[0090] At block 202, for each set in the historical velocity feature data (e.g., from user exercise data 156 of FIG. 1), the system identifies a rep in the set having the best (e.g., maximum) velocity feature data. The system can associate the best-rep velocity feature with the weight that was lifted during the rep. The best rep may typically be the first rep of the set, since the user is less fatigued at the start of each set and can move the weight with greater force.
[0091] At block 204, for each workout in the historical velocity feature data (e.g., a workout comprising multiple sets at different weights), the system generates and stores a workout curve data structure. The workout curve data structure can represent, for each different weight load lifted during that workout, the identified best velocity feature data for the identified best rep in the corresponding set. For example, if the user lifted a set of reps at 70 kg, a set of reps at 80 kg, and a set of reps 90 kg across the workout, the workout curve data structure could represent the best velocity feature data for the best rep of each of the sets (70 kg, 80 kg, and 90 kg).
[0092] At block 206, for each workout curve data structure representing the historical velocity feature data, the system determines the mean and / or median gradients between velocity features across different weight values represented in the curve. In some embodiments, the system may determine a median gradient between velocity features across weights of the curve (e.g., dVf / dW, where Vf represents a velocity feature for a rep and W represents the corresponding weight for the rep). For example, if the user lifted a set of reps at 70 kg, a set of reps at 80 kg, and a set of reps 90 kg across the workout, the determined gradients could represent gradients between each weight (e.g., a gradient of the change in velocity features between 70 kg to 80 kg, and a gradient of the change in velocity features between 80 kg and 90 kg). The velocity features may change non-linearly between different weights. For example, the drop off in velocity features between 70 kg and 80 kg, may be different from the drop off in velocity features between 80 kg and 90 kg.
[0093] At block 208, the system generates a weight-load curve for the user. Generating the weight-load curve can include determining a summary statistic (e.g., median and / or mean gradient) between each set of weight points, based on the workout curve data structures. The generation of the weight-load curve thus synthesizes the data from each workout curve data structure into a format which can be processed by the system (e.g., as part of process 100 of FIG. 1). In some embodiments, the system generates a weight-load curve based on historical velocity feature data (e.g., from the user exercise data 156). The weight-load curve can represent the correlation between historical velocity features to historical weights lifted, as based on the historical velocity feature data. In some embodiments, the weight-load curve can be generated based, at least in part, on historical velocity feature data obtained from previous workouts associated with the user, providing a personalized weight-load curve. In some embodiments, the weight-load curve can be generated based, at least in part, on aggregated historical data accounting for multiple users’ historical exercise performances.The generation of the weight-load curve is described in further detail in process 100 of FIG.1.
[0094] At block 210, the system can interpolate and / or extrapolate the weight-load curve down to 0 (e.g., 0 m / s) along the velocity feature axis. This ensures that the weight-load curve can represent a greater range of values.
[0095] At block 212, the system can shift the weight-load curve in the weight axis based on current warmup velocity feature data, such that shifted curve intersects data point(s) for weight load and velocity feature from current warmup. For example, a weight-load curve may represent weight along the x-axis and velocity features along the z-axis. If the user lifts a weight X at velocity Z during the current warmup, the data point can be represented as (X, Z). The weight-load curve generated at block 108 can then be shifted along the weight axis (x-axis) such that the weight-load curve intercepts the data point (X, Z). The shifting of the weight-load curve is described in further detail in process 100 of FIG. 1.Algorithm for Generating Reps in Reserve Curve
[0096] FIG. 3 depicts an exemplary process for generating a personalized reps-in-reserve to velocity curve of a user, in accordance with some embodiments. The process 300 can be integrated within a larger automated workflow (e.g., process 100 of FIG. 1) involving other sensor-based system, automated determinations, and / or machine-learning techniques. For example, the process 300 may be used in conjunction with process 200 of FIG. 2, process 400 of FIG. 4, and machine-learning techniques described in FIG. 5 to provide predictions of the user’s strength. In some embodiments, at least a portion of the process 300 can be implemented at block 112 of process 100 of FIG. 1.
[0097] Process 300 can be used to generate and store a correlation between repetitions to be performed and velocity features based on historical exercise data. The number of repetitions a user is still able to perform (e.g., after completing a previous set of several repetitions) is referred to as the user’s reps in reserve (RIR). For example, the user’s RIR may be larger for exercise at a lower intensity (e.g., 10 RIR for a weight of 50 kg) and smaller for exercise at a higher intensity (e.g., 2 RIR for a weight of 90 kg). Because the user’s RIR does not necessarily scale linearly with velocity features such as intensity, it may be necessary to generate a correlation between RIR and velocity features using a large dataset of historical exercise data.
[0098] Generating the reps-in-reserve curve data structure can comprise, for each group of initial reps represented in the historical data for which a given number of remaining reps were successfully performed following the initial reps, comparing velocity feature data of each initial rep in the group to identify, for each such group, a worst initial rep having a minimum velocity feature data amongst reps in the group. The system can then generate the reps-in- reserve curve data structure based on velocity feature data of the identified worst initial reps for a plurality of respective groups of initial reps corresponding to a plurality of different respective numbers of remaining reps. The system can evaluate the reps-in-reserve curve at the desired number of reps indicated by the user input (e.g., desired number of reps 158 of FIG. 1) to determine a target velocity feature for the desired number of reps. The system can evaluate the shifted version of the weight-load curve at the determined target velocity feature to determine the weight load for the future set.
[0099] At block 302, an exemplary system (e.g., one or more electronic devices) receives historical data associated with one or more historical workouts of a user. The historical data can comprise one or more of historical velocity data, historical weights lifted, historical rep numbers, etc. The historical data may share any features of any historical data and / or historical exercise data described herein for other processes, such as process 100 of FIG. 1 and process 200 of FIG. 2, and vice versa. For example, the historical data can comprise historical velocity feature data for each rep in a plurality of sets in the one or more workouts. The velocity feature data for each rep can be associated with the subsequent number of reps in the respective set.
[0100] At block 304, the system can generate, based on the velocity feature data, a reps-in- reserve curve representing a personalized correlation for the user between velocity feature data for a rep and the subsequent number of reps (reps in reserve) performed in the set. In some embodiments, generating the reps-in-reserve curve data structure comprises, for each set represented in the historical data having a given number of remaining reps, comparing velocity feature data of each initial rep of each such set to identify minimum velocity feature data for initial reps in the historical sets having the given number of remaining reps, and generating the reps-in-reserve curve data structure based on the identified minimum velocity feature data for initial reps in the historical sets having each of a plurality of given numbers of remaining reps.
[0101] In other words, in some embodiments, the system can first group the historical velocity data into one or more groups of historical sets based on the historical rep numbersperformed in each historical set. For example, a first group may comprise historical sets in which the user performed 1 rep, a second group may comprise historical sets in which the user performed 2 reps, etc. The system can extract velocity features and total reps / reps in reserve for each group. For example, for each set, the system may extract a starting velocity feature (e.g., MVC on the first repetition of each set). The system may then form a distribution of starting velocity features for different rep numbers (e.g., for sets in which the user completed Y number of reps, the user’s average MVC for the first repetition was Z velocity).
[0102] In some embodiments, sets may be subdivided to obtain additional sets of lower repetition numbers within a set of a higher repetition number. For example, for a set in which the user performed 5 repetitions, the system may generate a sub-set by taking the last 4 repetitions as 4-rep set, and extracting starting velocities of the 4-rep set. A sub-sets can also be generated by taking the last 3 repetitions as a 3-rep set, the last 2 repetitions as a 2-rep set, and the last repetition as a 1-rep set. This can augment the quantity and robustness of the historical exercise data to obtain more accurate correlations between the historical rep numbers and the one or more historical velocity features.
[0103] At block 306, the system receives input data (e.g., from the user input device 199 of FIG. 1) indicated a desired number of reps (e.g., desired number of reps 158 of FIG. 1) to be performed in a future set. At block 308, the system computes, based on the reps-in-reserve curve, a target velocity feature for the future set. The system can find the value on the reps- in-reserve curve that matches the desired number of reps indicated by the input data. The system can then follow the reps-in-reserve curve to determine the corresponding velocity feature (e.g., the target velocity feature) for the desired number of reps. In some embodiments, the target velocity feature can represent a minimum performed velocity feature across all historical exercise data of the user. In some embodiments, the minimum historical velocity feature can comprise the absolute minimum value of the correlation generated at block 304. In some embodiments, the minimum historical velocity feature can comprise a percentile-based (e.g., bottom 5thpercentile) value obtained from the correlation. This can provide the lowest historically successful starting velocity Z at which the user could still complete a set of Y number of reps.
[0104] Following the completion of process 300, the system may determine a weight lifted that is associated with the target velocity using the weight-load curves of process 100 of FIG. 1. For example, a target velocity of 0.2 m / s may be associated with lifting a weight of 50 kgwith a RIR of 3. The same target velocity may be associated with lifting a higher weight for a lower RIR, or a lower weight for a higher RIR.Feature Extraction (Intensity Algorithm)
[0105] FIG. 4 depicts an exemplary process for extracting velocity features from exercise data, in accordance with some embodiments. The process 400 can be integrated within a larger automated workflow (e.g., process 100 of FIG. 1) involving other sensor-based systems, automated determinations, and / or machine-learning techniques. For example, the process 400 may be used in conjunction with process 100 of FIG. 1, process 300 of FIG. 3, and machine-learning techniques described in FIG. 5.
[0106] When performing a rep, the velocity change over time (velocity waveform) of each rep can be measured by the sensor device. On the velocity waveform, one metric that may be especially relevant is the distribution of concentric positive velocity (e.g., positive = the portion of a velocity waveform during which the user is moving the weight upwards). For the purpose of the calculations described herein, the concentric velocities may be used to measure the difficulty of the rep, based on the changes in concentric velocity over the course of the rep. For a given rep, the system can compute a proportion of points that fall under 50% of the peak velocity value. The larger the proportion of these points that falls in the bottom half of this peak value, the more difficult or intense the rep was. Easy (less intense) reps may have an even distribution (e.g., more symmetric distribution) of approximately half the velocities per distance falling above the 50% peak line, and half falling below. Difficult (more intense) reps may have a much larger proportion below the 50% of peak line.
[0107] In some embodiments, computing the respective velocity feature data for a given rep comprises computing an average velocity for the rep. For example, the system can measure mean concentric velocity (MVC) and peak concentric velocity (PVC) directly from the sensor to obtain velocity features. In some embodiments, computing the respective velocity feature data for a given rep can comprise computing a ratio of mean concentric velocity for the rep to peak concentric velocity for the rep. For example, the system can approximate a difficulty of the rep by calculating the ratio of mean concentric velocity to peak concentric velocity. However, additional calculations may be required to generate velocity features that employ a quantitative measurement of difficulty / intensity using the velocity waveform.
[0108] The velocity features extracted from exercise data via process 400 can comprise features beyond the conventionally-collected MVC and PVC. For example, velocity data canindicate an intensity associated with a rep. The intensity may indicate how difficult it was for the user to perform a rep. Generally, the more time and / or distance of a rep that a user spends at a lower velocity, as compared to the maximum velocity of the specific rep, the more difficult the rep was for the user.
[0109] In some embodiments, computing the respective velocity feature data for a given rep can comprise calculating a portion of the rep associated with velocity under a threshold defined with respect to a peak velocity of the rep. In some embodiments, computing the respective velocity feature data for a given rep can comprise cropping the concentric portion of a velocity waveform for the rep; cumulatively summing the cropped portion of the velocity waveform to generate data for distance over time; resampling the original velocity waveform in terms of distance to generate velocity data for each point in a range of motion of the rep; and calculating the portion of the rep associated with the velocity under the threshold defined with respect to the peak velocity of the rep comprises calculating a proportion of the points in the range of motion of the lift that are associated with velocity under the threshold.
[0110] At block 402, an exemplary system (e.g., one or more electronic devices) can receive, using one or more processors, a velocity waveform associated with a rep of a user.
[0111] At block 404, the system can modify, using the one or more processors, the velocity waveform by cropping a concentric portion of the velocity waveform to obtain a cropped velocity waveform and summing the cropped velocity waveform to obtain a distance over time waveform.
[0112] At block 406, the system can resample, using the one or more processors, the velocity waveform in terms of the distance over time waveform to obtain a velocity at each point of the velocity waveform.
[0113] At block 408, the system can compute, using the one or more processors, a peak velocity point and a distribution of points of the velocity waveform relative to the peak velocity point. For example, for a given rep, the system can compute a proportion of points that fall under 50% of the peak velocity value. The larger the proportion of these points that falls in the bottom half of this peak value, the more difficult or intense the rep was.
[0114] In some embodiments, computing the respective velocity feature data for a given rep can comprise computing a quantification of symmetric ity of a velocity waveform for the rep. Easy (less intense) reps may have an even distribution of approximately half the velocities per distance falling above the 50% peak line, and half falling below. The symmetricity of thedistribution may be another velocity feature that can be associated with the intensity of the rep. Difficult (e.g., more intense) reps may have a much larger proportion below the 50% of peak line.
[0115] At block 410, the system can extract, using the one or more processors, a velocity feature associated with an intensity of the rep based, at least in part, on the distribution.Machine-Learning-Based Sensor Data Pre-Processing
[0116] In some embodiments, the system can receive, using the one or more processors, historical data associated with the one or more historical workouts of the user. The system can then transform the historical exercise data using the trained ML model to reduce noise and obtain standardized historical exercise data.
[0117] FIG. 5 depicts an exemplary machine-learning model for standardizing noisy sensor data, in accordance with some embodiments. The machine-learning (ML) model can receive accelerometer data from a sensor attached to exercise equipment that the user is lifting. For example, the sensor may be attached to a barbell that the user may manipulate to perform a squat, bench press, deadlift, overhead press, etc. The raw accelerometer data may frequently be noisy, which would make it difficult to process in any of the processes described herein. Thus, in some embodiments, the system can transform noisy accelerometer data using a machine-learning model (e.g., deep learning model) to obtain standardized accelerometer data that resembles “gold standard” data. The “gold standard” data may comprise a plurality of standardized readings as obtained from linear transducer data, motion capture data, and / or optical sensor data during historical workouts. The “gold standard” data may be paired with noisy readings obtained from accelerometer / sensor readings collecting during the same workouts, such that each noisy historical data point is paired with a historical “gold standard” data point.
[0118] The machine learning model may be trained via a training process 500 of FIG. 5. At block 502, the system can receive, using the one or more processors, training data associated with a plurality of workouts. The training data can comprise a plurality of accelerometer readings paired with a corresponding plurality of standardized readings. At block 504, the system can train, based on the training data, a ML model to transform an accelerometer reading into its corresponding standardized reading to obtain the trained ML model.Sensor Configuration
[0119] FIG. 6 depicts an exemplary sensor-based system 600 for collecting exercise data, in accordance with some embodiments. The sensor-based system 600 can include any computing device or system. The system 600 can include a host computer connected to a network, a client computer, or a server. The sensor-based system 600 can include any suitable type of microprocessor-based device, such as a personal computer, workstation, server or handheld computing device (portable electronic device) such as a phone or tablet. Software residing in memory or a storage device of the system 600 may comprise, e.g., an operating system as well as software for executing the methods described herein.
[0120] In some embodiments, the sensor-based system 600 can include two main physical systems: a sensor 602 (such as sensor device 198 of FIG. 1) configured to be attached to a piece of exercise equipment (such as barbell 604), and the barbell 604. The sensor 602 can include various physical sensor subsystems. In some embodiments, the sensor 602 can include an accelerometer 606 for collecting velocity data based on the movement of the sensor 602 during a workout. The sensor 602 can further comprise a processor 608, memory 610, and a battery 612. In some embodiments, one or more of the physical sensor subsystems of the sensor 602 can be communicatively coupled to a virtual sensor subsystem such as a network 614. The network 614 can enable the sensor 602 to wirelessly communicate with other devices (such as user input device 199 of FIG. 1). The components of the sensor 602 can be connected in any suitable manner, such as via a wired media (e.g. , a physical system bus, Ethernet connection, or any other wire transfer technology) or wirelessly (e.g., Bluetooth®, Wi-Fi®, or any other wireless technology).
[0121] In some embodiments, the accelerometer 606 can include any suitable velocity measurement device capable of recording changes in the movement of the sensor 602. The accelerometer 602 may be an electronic and / or electromechanical device configured to measure static and / or dynamic acceleration. The accelerometer 606 can measure, for example, distance over time, velocity over time, velocity over distance,
[0122] In some embodiments, the processor 608 can include any suitable processing device capable of performing operations specified by executable instructions stored in the memory 610.
[0123] In some embodiments, the memory 610 can include any suitable device that provides storage (e.g. , an electrical, magnetic or optical memory including a RAM (volatile and nonvolatile), cache, hard drive, or removable storage disk). Software can be stored as executableinstructions in the memory 610 and executed by the processor 608. The software can include, for example, an operating system and / or the processes that embody the functionality of the methods of the present disclosure (e.g. , as embodied in the devices as described herein).
[0124] Software can also be stored and / or transported within any non-transitory computer- readable storage medium for use by or in connection with an instruction execution system, apparatus, or device, such as those described herein, that can fetch instructions associated with the software from the instruction execution system, apparatus, or device and execute the instructions. In the context of this disclosure, a computer-readable storage medium can be any medium, such as the memory 610, that can contain or store processes for use by or in connection with an instruction execution system, apparatus, or device. Examples of computer-readable storage media may include memory units like hard drives, flash drives and distribute modules that operate as a single functional unit. Also, various processes described herein may be embodied as modules configured to operate in accordance with the embodiments and techniques described above. Further, while processes may be shown and / or described separately, those skilled in the art will appreciate that the above processes may be routines or modules within other processes.
[0125] Software can also be propagated within any transport medium for use by or in connection with an instruction execution system, apparatus, or device, such as those described above, that can fetch instructions associated with the software from the instruction execution system, apparatus, or device and execute the instructions. In the context of this disclosure, a transport medium can be any medium that can communicate, propagate or transport programming for use by or in connection with an instruction execution system, apparatus, or device. The transport readable medium can include, but is not limited to, an electronic, magnetic, optical, electromagnetic or infrared wired or wireless propagation medium.
[0126] In some embodiments, the battery 612 can include any suitable battery that provides power to the electronic components of the sensor 602, such as the memory 610, the processor 608, and the accelerometer 606. Depending on the configuration of the sensor 602, the battery 612 may provide power wirelessly and / or via wired connections. The battery 612 can be replaced and / or recharged.
[0127] In some embodiments, the network 614 can include any suitable type of interconnected communication system. The network 614 can implement any suitable communications protocol and can be secured by any suitable security protocol. The network 614 can comprise network links of any suitable arrangement that can implement the transmission and reception of network signals, such as wireless network connections, T1 or T3 lines, cable networks, DSL, or telephone lines. The network 614 can comprise, for example, Local Area Network (LAN), Virtual Private Network (VPN), the Internet, an intranet, a virtual private network, a cloud network, a wired network, or a wireless network.
[0128] The system 600 can be configured to perform various analyses to predict the strength of the user and / or to determine a weight load for a user to load for a future set of a workout. The system 600 can analyze immediate information from a user’s current workout and historical information from a user’s previous workouts, and can thus predict a user’s future performance and thereby determine weight loads that the user should use for future sets.
[0129] In some embodiments, the system 600 can perform various actions involving the immediate information from the user’s current workout. In some embodiments, the system 600 can automatically count the number of repetitions that a user has completed during the current workout. The detection of repetitions can be performed by detecting segments of positive velocity as represented in a velocity waveform (e.g., velocity of the sensor over time) obtained from the user’s current workout. In some embodiments, the system 600 can estimate the MVC and PVC of each repetition by finding a velocity value associated with the peaks of the velocity waveform. In some embodiments, the system 600 can estimate the intensity of difficult of a given repetition. The intensity estimation can be performed using the process 400 of FIG. 4, as described above. In some embodiments, the system 600 can calculate the range of motion of the reps that a user has performed. The range of motion can be calculated by integrating the velocity waveform to obtain distance over time (e.g., the distance that the sensor traveled over time). The absolute difference between the distance at the start of the rep and the distance at the peak of the rep is equivalent to the range of motion. In some embodiments, the system 600 can calculate the number of calories (or other unit of energy) that the user burned during the workout or a part thereof. The system can calculate this based on the total distance of each rep (range of motion) and the force produced during each rep (e.g., by calculating acceleration and multiplying it by the weight lifted for each rep). In some embodiments, the system 600 can track a user’s tempo (e.g., the time it takes for the user to perform the concentric vs. eccentric parts of a lift) based on the velocitywaveform. The system 600 can deliver any of these insights to the user in real-time (e.g., via a notification and / or vibration on a user’s watch) to assist the user in completing the current workout.
[0130] In some embodiments, the system 600 can perform various actions involving the historical information from a user’s previous workouts. In some embodiments, the system 600 can assess users’ historical performance based on the combination of recorded velocity waveforms and the user-reported weights lifted, over the entire duration that the user has been using the system 600. In some embodiments, the system 600 can provide insights into the effects of previous sessions and / or the user’s lifestyle on the user’s strength training performance. For example, the system 600 can correlate historical performance with both user-reported labels and system-generated metrics, such as total volume lifted over time (weight multiplied by number of reps). The historical records can be arranged along a distribution, and the user’s relative performance for a given workout can be measured along the distribution. For example, the system 600 may notify a user that, for the given workout, the user is performing 10 percentage points lower than average. To provide a user with overall insights on how a certain status (e.g., bad night’s sleep) has historically affected the user’s performance, the system 600 may notify the user that, for example, a bad night’s sleep (user-added label) is historically correlated with a performance 30% lower than average.
[0131] In some embodiments, the system 600 can perform various actions involving the prediction of future performance and / or determination of weight loads for future sets. In some embodiments, the system 600 can provide insights about how strong he or she is on a given day compared with previous performances, based on one or more of: historical velocity data for a user, and the weight and / or best velocity of the user’s current workout on the given day, as calculated from the accelerometer data. In some embodiments, the system 600 can determine the weight that a user should lift to achieve one or more user-defined goals. The weight determination can be performed using the processes 100 or 200 of FIGS. 1 or 2, as described above. For example, given a user’s desired number of reps to complete, a desired number of reps in reserve (RIR - maximum number of reps they would still be able to perform after finishing the workout, before achieving failure), a user’s performance on the current workout so far, and a user’s historical performance in previous workouts, the system 600 can determine the weight that the user should lift to achieve these parameters.
[0132] For the purpose of clarity and a concise description, features are described herein as part of the same or separate embodiments; however, it will be appreciated that the scope ofthe disclosure includes embodiments having combinations of all or some of the features described.Additional Definitions
[0133] References herein to descriptors such as “worst,” “best,” “minimum,” “maximum,” etc. should be understood to be exemplary. In some embodiments, identifying a worst, best, minimum, or maximum value may be understood to refer to identifying a first value in a distribution that falls outside given percentile, such as below a 5thpercentile or above a 95thpercentile. In some embodiments, identifying a worst, best, minimum, or maximum value may be performed only after eliminating outlier values. For example, when identifying a rep having a “maximum” velocity feature, outlier velocity feature values may first be eliminated, and / or the system may sample a first value (or a statistical measure based on one or more values) falling at, beyond, or around a predefined percentile of the distribution.
[0134] Unless defined otherwise, all terms of art, notations and other technical and scientific terms or terminology used herein are intended to have the same meaning as is commonly understood by one of ordinary skill in the art to which the claimed subject matter pertains. In some cases, terms with commonly understood meanings are defined herein for clarity and / or for ready reference, and the inclusion of such definitions herein should not necessarily be construed to represent a substantial difference over what is generally understood in the art.
[0135] As used herein, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It is also to be understood that the term “and / or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It is further to be understood that the terms “includes, “including,” “comprises,” and / or “comprising,” when used herein, specify the presence of stated features, integers, steps, operations, elements, components, and / or units but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, units, and / or groups thereof.
[0136] The above description is presented to enable a person skilled in the art to make and use the disclosure, and is provided in the context of a particular application and its requirements. Various modifications to the preferred embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the disclosure.Thus, this disclosure is not intended to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein.
Claims
CLAIMS1. A method for determining a future weight load based on exercise velocity data for a user, the method performed by one or more processors of a system comprising a sensor device configured to obtain velocity data for reps performed by the user in exercise comprising lifting of weights, the method comprising: receiving exercise data comprising a plurality of data points for a plurality of respective reps performed by the user comprising lifting of weights, wherein each data point of the plurality of data points comprises velocity data for the rep, an associated number of subsequent reps performed in a set, and an associated weight load for the rep, wherein the exercise data comprises: historical data for a plurality of reps performed by the user during one or more prior workouts; and warmup data for a set performed by the user during a current workout; computing, for one or more of the data points in the plurality of data points in the exercise data, a respective velocity feature data; receiving a user input comprising an indication of a desired number of reps to be performed in a future set in the current workout; computing, based on velocity feature data for the historical data, velocity feature data for the warmup data, and the user input, a weight load for the future set; and providing an output indicating the computed weight load for the future set.
2. The method of claim 1, wherein computing the weight load for the future set comprises: generating and storing, based on the historical data, a weight-load curve data structure representing a personalized correlation for the user between weight load and velocity feature data; generating and storing, based on the warmup data and the weight-load curve, a shifted version of the weight-load curve; and determining, based on the shifted version of the weight-load curve and the user input indicating the desired number of reps to be performed, the weight load for the future set.
3. The method of claim 2, wherein determining the weight load for the future set based on the shifted version of the weight-load curve comprises:determining a minimum velocity feature for the user; evaluating the shifted version of the weight-load curve at the determined minimum velocity feature to determine a current-workout one-rep maximum weight for the user; and applying a scaling factor to the current-workout one-rep maximum weight to determine the weight load for the future set.
4. The method of claim 3, wherein determining the minimum velocity feature for the user is based on velocity feature data for the historical data.
5. The method of any one of claims 2-4, further comprising: generating and storing, based on the historical data, a reps-in-reserve curve data structure representing a personalized correlation for the user between reps in reserve and velocity feature data.
6. The method of claim 5, wherein generating the reps-in-reserve curve data structure comprises: for each group of initial reps represented in the historical data for which a given number of remaining reps were successfully performed following the initial reps, comparing velocity feature data of each initial rep in the group to identify, for each such group, a worst initial rep having a minimum velocity feature data amongst reps in the group; and generating the reps-in-reserve curve data structure based on velocity feature data of the identified worst initial reps for a plurality of respective groups of initial reps corresponding to a plurality of different respective numbers of remaining reps.
7. The method of any one of claims 5-6, wherein determining the weight load for the future set based on the shifted version of the weight-load curve comprises: evaluating the reps-in-reserve curve at the desired number of reps indicated by the user input to determine a target velocity feature for the desired number of reps; and evaluating the shifted version of the weight-load curve at the determined target velocity feature to determine the weight load for the future set.
8. The method of any one of claims 2-7, wherein generating the weight-load curve data structure comprises:for each set represented in the historical data, identifying a best rep in the set having a maximum velocity data feature for the set; for each workout represented in the historical data, generating a workout weight curve representing, for each weight value lifted in the workout, the velocity feature data for the identified best rep; for each of the workout weight curves, determining a plurality of gradients between velocity features across weight values represented in the workout curve; and generating the weight-load curve data structure based the workout weight curves.
9. The method of any one of claims 2-8, further comprising extrapolating the weightload curve data structure such that it covers all velocity features down to 0.
10. The method of any one of claims 1-9, wherein computing the respective velocity feature data for a given rep comprises computing an average velocity for the rep.
11. The method of any one of claims 1-10, wherein computing the respective velocity feature data for a given rep comprises calculating a portion of the rep associated with velocity under a threshold defined with respect to a peak velocity of the rep.
12. The method of claim 11, wherein computing the respective velocity feature data for a given rep comprises: cropping the concentric portion of a velocity waveform for the rep; cumulatively summing the cropped portion of the velocity waveform to generate data for distance over time; resampling the original velocity waveform in terms of distance to generate velocity data for each point in a range of motion of the rep; and calculating the portion of the rep associated with the velocity under the threshold defined with respect to the peak velocity of the rep comprises calculating a proportion of the points in the range of motion of the lift that are associated with velocity under the threshold.
13. The method of any one of claims 1-12, wherein computing the respective velocity feature data for a given rep comprises computing a ratio of mean concentric velocity for the rep to peak concentric velocity for the rep.
14. The method of any one of claims 1-13, wherein computing the respective velocity feature data for a given rep comprises computing a quantification of symmetricity of a velocity waveform for the rep.
15. The method of any one of claims 1-14, wherein the user input further comprises a trait of the user comprising one or more user-specific metrics such as the user’s height, weight, age, sex, limb length, lifting history, or medical history.
16. The method of any one of claims 1-15, wherein receiving the exercise data comprises generating the exercise data by applying a trained machine learning model to reduce noise in raw sensor data to obtain the exercise data in a preprocessed format.
17. The method of claim 16, wherein the trained machine learning model is a deep learning model.
18. The method of any one of claims 16-17, wherein the trained machine learning model is trained using a process comprising: receiving training data comprises a plurality of accelerometer readings paired with a corresponding plurality of standardized readings; and training, based on the training data, the machine learning model to transform accelerometer reading into corresponding standardized readings.
19. The method of any one of claims 1-18, comprising generating and transmitting a control signal, based on the computed weight load for the future set, to cause an exercise device to automatically load weight based on the computed weight load.
20. The method of any one of claim 1-19, wherein computing the weight load for the future set comprises: generating and storing, based on the historical data, a weight-load graph data structure; generating and storing, based on the warmup data and the weight-load graph data structure, a weight-load curve data structure; and determining, based on the weight-load curve and the user input indicating the desired number of reps to be performed, the weight load for the future set.
21. The method of any one of claims 1-20, wherein computing the weight load for the future set comprises: applying a reps-in-reserve predictive model to predict a number of reps-in-reserve based on the warmup data for the set performed by the user during a current workout; applying a weight load model to determine the weight load for the future set based on the number of reps-in-reserve predicted by the reps-in-reserve predictive model and based on the user input comprising an indication of a desired number of reps to be performed in the future set in the current workout.
22. A system for determining a future weight load based on exercise velocity data for a user, the system comprising a sensor device configured to obtain velocity data for reps performed by a user in exercise comprising lifting of weights, one or more processors, and memory storing instructions that, when executed by the one or more processors, cause the system to: receive exercise data comprising a plurality of data points for a plurality of respective reps performed by the user comprising lifting of weights, wherein each data point of the plurality of data points comprises velocity data for the rep, an associated number of subsequent reps performed in a set, and an associated weight load for the rep, wherein the exercise data comprises: historical data for a plurality of reps performed by the user during one or more prior workouts; and warmup data for a set performed by the user during a current workout; compute, for one or more of the data points in the plurality of data points in the exercise data, a respective velocity feature data; receive a user input comprising an indication of a desired number of reps to be performed in a future set in the current workout; compute, based on velocity feature data for the historical data, velocity feature data for the warmup data, and the user input, a weight load for the future set; and provide an output indicating the computed weight load for the future set.
23. A non-transitory computer-readable storage medium storing instructions configured to be executed by a system comprising a sensor device configured to obtain velocity data forreps performed by a user in exercise comprising lifting of weights, wherein the instructions, when executed by the one or more processors, cause the system to: receive exercise data comprising a plurality of data points for a plurality of respective reps performed by the user comprising lifting of weights, wherein each data point of the plurality of data points comprises velocity data for the rep, an associated number of subsequent reps performed in a set, and an associated weight load for the rep, wherein the exercise data comprises: historical data for a plurality of reps performed by the user during one or more prior workouts; and warmup data for a set performed by the user during a current workout; compute, for one or more of the data points in the plurality of data points in the exercise data, a respective velocity feature data; receive a user input comprising an indication of a desired number of reps to be performed in a future set in the current workout; compute, based on velocity feature data for the historical data, velocity feature data for the warmup data, and the user input, a weight load for the future set; and provide an output indicating the computed weight load for the future set.
Citation Information
Patent Citations
Exercise training system and method
US20150151161A1
Interactive Personal Training System
US20210008413A1
Fitness system
US20230310939A1