This description generally relates to sensor-equipped athletic garments, and specifically to determining muscle stress measurements using physiological data from the sensors.
Sensors record a variety of information about the human body. For example, electrocardiograph (ECG) electrodes can measure electrical signals from the skin of a person that are used to determine the person's heart rate. In addition, electromyography (EMG) electrodes can measure electrical activity generated by a person's muscles. Heart rate and muscle activation information may be useful for evaluating the person's physiological condition, for instance, while exercising. It is difficult to provide comparable metrics between different muscle groups for a given athlete and between different athletes since the muscle response depends on muscle physiology and body composition, which may vary between muscles and between athletes. A system that generates inconsistent metrics of athletic performance provides a poor user experience, and the athletes may not be able to improve their athletic training with unreliable feedback on exercises.
An exercise feedback system determines muscle stress measurements using physiological data generated by a sensor-equipped athletic garment. A muscle stress measurement represents an accumulated normalized signal from one or more of the sensors corresponding to a given muscle or set of muscles over a period of time. By normalizing the physiological data, the exercise feedback system may determine muscle stress measurements, biofeedback, or other metrics for comparison between different muscle groups of an athlete or different athletes. In some embodiments, the exercise feedback system improves the accuracy of muscle stress measurements by classifying the physiological data, for example, based on active or inactive periods of time during an exercise set or program, or based on a type of the exercise.
The exercise feedback system may customize exercise programs, determine risks of injury, or generate biofeedback for presentation on graphical user interfaces using the muscle stress measurements. In an embodiment, the exercise feedback system accesses pre-determined muscle stress measurement models that define criteria for the aforementioned features. For instance, responsive to determining that an athlete is becoming fatigued and exercising with improper form based on a muscle stress measurement, the exercise feedback system modifies the athlete's exercise program to help target and improve the athlete's weaknesses. Additionally, responsive to determining that the athlete's improper form leaves the athlete susceptible to injury, the exercise feedback system notifies the athlete of the risk of injury. In use cases involving a team of athletes, the exercise feedback system may provide biofeedback to a coach of the team that aggregates muscle stress measurement from multiple athletes on the team and highlights athletes that the coach should be aware of due to inefficiencies or potentially injury risk.
The figures depict embodiments of the present invention for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein.
The client device 110 is a computing device capable of receiving user input as well as transmitting and/or receiving data via the network 140. A client device is a device having computer functionality, such as a smartphone, personal digital assistant (PDA), a mobile telephone, tablet, laptop computer, desktop computer, a wearable computer (such as a smart watch, wrist band, arm band, chest band, or the like), or another suitable device. In one embodiment, a client device executes an application allowing a user of the client device to interact with the exercise feedback system 100. For example, a client device executes a browser application to enable interaction between the client device and the exercise feedback system 100 via the network 140. In another embodiment, a client device 110 interacts with the exercise feedback system 100 through an application programming interface (API) running on a native operating system of the client device, such as IOS® or ANDROID™.
An athlete 120 wears the athletic garment 130 (further described below with reference to
In the embodiment shown in
It should be noted that while the athletic garment 200 shown in
The exercise program engine 300 manages exercise programs for athletes of the exercise feedback system 100. In some embodiments, an athlete joins the exercise feedback system 100 by completing an onboarding process during which the exercise program engine 300 receives user information and physiological data associated with the athlete and stores the user information and physiological data in the athlete data store 310. User information includes, for example, demographic data (e.g., age, gender, ethnicity, etc.), geographic data, exercise related data (e.g., sports played, a specific position for sport, or sports team information), or physiological data (e.g., height or weight). Physiological data may include data generated by the sensors of athletic garment 200 while the user performs prescribed onboarding baseline exercises. The sensor data generated during the onboarding baseline may be used to set calibration parameters or reference levels for each muscle group such that subsequent metrics for that muscle can be reported as a relative percentage from the onboarding baseline. Calibration parameters are stored in the calibration data store 340. Exercise programs may include various exercises or other athletic related activities (e.g., diet or medical health data), and the exercise program engine 300 may customize the types and number of exercises for a given athlete based on user information retrieved from the athlete data store 310.
The exercise program engine 300 may generate or update exercise programs based on information from the exercise program data store 320, which includes a database of exercises and other types of athletic training information or guidelines. An exercise program may include exercise sets (also referred to as a “set”), where a set includes a number of repetitions of an exercise to be performed in sequence. As an example use case, the exercise program engine 300 determines that a given athlete is a basketball player aiming to increase their vertical jump height. Thus, the exercise program engine 300 updates an exercise program for the given athlete that includes exercises for developing lower body strength such as squats and calf raises. Moreover, the exercise program engine 300 may determine a suitable weight for the exercises and update the weight over time based on the athlete's performance, e.g., responsive to determining that the athlete has increased strength, the exercise program engine 300 increases the amount of weight to lift per repetition of an exercise. By personalizing exercise programs, the exercise program engine 300 determines strengths and weaknesses specific to an athlete, which helps improve the effectiveness of the athlete's training.
The data processing engine 330 processes physiological data generated by sensors of an athletic garment (e.g., athletic garment 200 shown in
Additionally, physiological data generated by the sensors may vary due to athlete-to-athlete differences in physiological traits, sensor contact quality, among other factors. For instance, thicker hair on the athlete's skin or skin dryness may result in poor sensor contact quality, and thus reduce the amplitude of physiological data generated by the sensors and increase the amplitude of measured noise. As another example, skin oiliness or sweat may improve sensor contact quality, and thus increase the amplitude of physiological data generated by the sensors and reduce the amplitude of measured noise. The data processing engine 330 may determine a quality of physical contact between a sensor and the athlete's skin based on bioimpedance data, which is generated by another sensor or the same sensor. In some embodiments, the amplitude of physiological data generated by a sensor and the signal to noise ratio is inversely proportional to the bioimpedance between the sensor and the skin of the athlete.
The data processing engine 330 normalizes physiological data between different types of muscles and different athletes to account for the above described sources of physiological data variation. Using normalized physiological data, the exercise feedback system 100 may provide biofeedback for a given type of muscle relative to other types of muscles. For example, as described below with reference to
The muscle stress engine 350 determines a muscle stress measurement for a muscle by accumulating the normalized physiological data from the data processing engine 330. In an embodiment, the muscle stress engine 350 determines a start and stop time bound over which the muscle stress measurement is to be calculated, and the muscle stress engine 350 accumulates the normalized physiological data over the time bound. The start and stop time bound may indicate the start and end of a set or repetition. For example, the exercise feedback system 100 instructs an athlete to perform a set of squats including ten repetitions during an exercise program. By determining the time bound, the muscle stress engine 350 avoids accumulating physiological data generated by the sensors when the athlete is not performing the exercises, e.g., while resting between sets of exercises. Thus, the muscle stress engine 350 may determine a more accurate measurement of the muscle stress for the set by not accumulating physiological data generated outside of the time bound.
In some embodiments, the muscle stress engine 350 accumulates normalized physiological data based on classifications determined by the classification engine 360. As an example, the classification engine 360 classifies normalized physiological data by determining a period of time during which an athlete actively performed an exercise or periods of time during which the athlete did not actively perform the exercise. The classification engine 360 can determine these periods of time without requiring manual input from the athlete. For instance, the classification engine 360 uses physiological data generated by the EMG sensors and motion data received from motion sensors of the athletic garment to determine whether the athlete is actively training, performing exercises, or performing a particular type of exercise. Based on the type of classification, the muscle stress engine 350 may perform active segmentation of sensor data received from the athletic garment, e.g., to provide exercise metrics and biofeedback. Similar to the time bound feature described above, the muscle stress engine 350 may improve the accuracy of muscle stress measurements by accumulating normalized physiological data received (or generated) during the active periods of time and not the inactive periods of time. In addition to resting between sets, an athlete may also briefly rest between repetitions or otherwise temporarily interrupt the exercise, e.g., to adjust the athletic garment. Classifying the active and inactive periods of time helps the muscle stress engine 350 account for these discrepancies in the physiological data.
In some embodiments, the classification engine 360 determines active or inactive periods of time for a given muscle or type of exercise. As an example, while an athlete is performing squat exercises, the classification engine 360 classifies the received sensor data to differentiate between physiological data for upper body muscles and lower body muscles. Since squat exercises are intended to train the lower body muscles, the classification engine 360 may determine active periods of time when the received physiological data for the lower body muscles has an amplitude or accumulated muscle stress greater than a threshold value. On the other hand, the classification engine 360 may process received physiological data for the upper body muscles when the athlete is performing exercises such as pullups, overhead lifts, pushups, or curls. In some embodiments, the classification engine 360 disregards physiological data—for determining muscle stress measurements of a particular muscle—generated during a given exercise responsive to determining that the given exercise is not directed to training that particular muscle. For instance, physiological data of the glutes and quads generated while the athlete is performing certain upper body exercises may not be normalized or accumulated for determining muscle stress measurements of the lower body muscles.
The classification engine 360 may also classify normalized physiological data based on quality of physical contact between a sensor and the athlete's skin. In particular, responsive to determining that the quality of physical contact during a period of time is less than a threshold quality (e.g., indicative of poor contact quality), the muscle stress engine 350 may exclude or modify the physiological data received during the period of time from accumulation for determining muscle stress measurement. Other types of classification include, e.g., determining whether the received physiological data corresponds to a low, medium, or high intensity level of exercise; aerobic or anaerobic exercise; or a power, strength, endurance, speed, or hypertrophy type of exercise.
In some embodiments, the muscle stress engine 350 modifies or interprets physiological data received from a sensor over periods of poor contact quality, as classified by the classification engine 360. For example, if the contact quality is intermittently poor over short periods, the muscle stress engine 350 interprets physiological data during these short periods using sensor data received during other periods of good contact quality as boundary conditions for linear or polynomial curve fitting. Additionally, physiological data corresponding to sensors with poor contact quality (e.g., less than a given threshold) may be modified or interpreted by the muscle stress engine 350 using data from other sensors with good contact quality (e.g., equal to or greater than the given threshold). For example, when determining a stress measurement for the right hamstring muscle during a period of poor contact quality, the muscle stress engine 350 may use alternate physiological data corresponding to the left hamstring muscle, responsive to determining that the alternate physiological data has good contact quality. Additionally, the muscle stress engine 350 may combine physiological data from multiple sensors to determine an approximate data set during a period of poor contact quality.
The muscle stress engine 350 may determine muscle stress measurements for a group of muscles. For instance, the muscle stress engine 350 accumulates the stress for both a group of lower body muscles and a group of upper body muscles. Additionally, the muscle stress engine 350 may accumulate stress for groups of muscles of the left and right sides (or anterior and posterior sides) of symmetry of the athlete's body. In some embodiments, the muscle stress engine 350 determines muscle stress measurements based on historical muscle stress measurements of exercises previously performed by the athlete. The historical muscle stress measurements may indicate a pattern of performance such as an increase or decrease over time of the strength of a given muscle of the athlete. Further, the muscle stress engine 350 may determine a fatigue state of the athlete based on the pattern of performance, magnitude of a muscle stress measurement, or a frequency of a muscle stress measurement.
The exercise program engine 300 modifies an exercise program based on a muscle stress measurement determined by the muscle stress engine 350, in one embodiment. In particular, the muscle stress engine 350 accesses a pre-determined muscle stress measurement model (also referred to herein as a “model”) stored in the model data store 370. The model defines one or more criteria for modifying the exercise program. For example, a criteria may be satisfied by the muscle stress engine 350 determining that a muscle stress measurement of an athlete exceeds a threshold deviation relative to athlete population norms, e.g., based on aggregate data retrieved from the athlete data store 310. Specifically, the model may indicate a target motion profile (e.g., indicative of proper form of an exercise to avoid injury) or muscle stress profile (e.g., indicating a change in muscle exertion as an athlete lifts a weight), which may be customized based on the athlete's demographic or physiological data. If the athlete exceeds the threshold deviation, the muscle stress engine 350 may determine that the exercise program is currently too challenging (e.g., resulting in improper exercise form) or not challenging enough (e.g., resulting in under-utilization of muscles) for the athlete. Thus, responsive to the muscle stress engine 350 determining that the criteria is satisfied by the muscle stress measurement, the exercise program engine 300 may adjust the difficulty of the exercise program to provide an appropriate level of challenge to the athlete.
The exercise program engine 300 may also modify an exercise program based on an imbalance of muscle stress associated with a criteria of a pre-determined muscle stress measurement model. The muscle stress engine 350 may determine the imbalance by determining that the muscle stress of the left body side or right body side is greater than the muscle stress of the other side by at least a threshold difference. Responsive to the muscle stress engine 350 determining that the criteria is satisfied by an athlete's muscle stress measurement, the exercise program engine 300 may add or remove an exercise from the exercise program to address the imbalance. For instance, the exercise program engine 300 adds exercises to increase the muscle stress of the “weaker” side of the body that currently has lower muscle stress.
Further, the exercise program engine 300 may modify exercise programs based on other factors such as a fatigue level of an athlete, which may be determined based on historical muscle stress measurement. For instance, responsive to determining that the fatigue level is greater than a threshold level (e.g., indicative of chronic fatigue), the exercise program engine 300 removes exercises from the exercise program to alleviate the stress experienced by the athlete and mitigate injury risk from over training. In addition, the exercise program engine 300 may reduce the number or training stress of exercises during a period of time prior to an identified high stress event in the exercise program such as an athletic competition at which the athlete plans to participate. The exercise program engine 300 may provide a notification to an athlete describing a modification to an exercise program as well as relevant context. For example, the exercise program engine 300 notifies the athlete that chronic fatigue is detected and that the number of exercise sessions per week will be reduced accordingly, e.g., to mitigate injury risk. In some embodiments, the exercise program engine 300 presents an exercise program modification in a graphical user interface, e.g., highlighting a updated number of repetitions, sets, or weight for an exercise in a list, timeline, or calendar display of the athlete's exercise program. Additionally, the exercise program engine 300 may dynamically reformat or resize components of a graphical user interface based on modifications. For instance, a calendar display shows graphics (e.g., a window indicating a number of reps and weight for a particular type of exercise) corresponding to exercises for completion by the athlete on various days or times of the week. Responsive to a modification, the exercise program engine 300 removes existing graphics (e.g., with a cross mark or a faded color) or adds new graphics to the calendar (e.g., which may be emphasized in bold, with brighter colors, or with enlarged size).
Since the exercise program engine 300 can dynamically modify an exercise program and provide a notification of the modification while the athlete is performing the exercise program, the exercise feedback system 100 improves the athlete's training in real-time, instead of having the athlete or a coach review the athlete's performance after an exercise workout or session has been completed. Additionally, the exercise feedback system 100 may maintain accurate and continuous accumulation of physiological data even as the exercise program is modified. In particular, responsive to increasing the weight lifted per repetition of a squat exercise, the muscle stress engine 350 determines muscle stress measurements subsequent to the modification based on the increased weight rather than an initial weight per repetition. The exercise feedback system 100 may automatically update physiological data normalization or classifications for any number or type of modification of an exercise program, which allows athletes and coaches to receive reliable metrics and biofeedback while training.
In a “return to play” use case when an athlete is undergoing rehabilitation after an injury or other type of physical treatment, the exercise program engine 300 may increase training stress of the exercise program responsive to determining that an athletic metric of the athlete improved over a duration of time. For example, the muscle stress engine 350 determines that the athlete's lower body strength or mobility improved based on analyzing trends in historical muscle stress measurements of the athlete. The exercise program engine 300 may gradually increase the training stress to reduce the likelihood of aggravating a healing injury. On the other hand, responsive to determining that the athlete's metrics are not improving as expected or do not satisfy a training goal (e.g., lift a certain volume of weights or repetitions), the exercise program engine 300 may modify the exercise program accordingly, or may take additional action such as notify the athlete or a coach that the athlete may have a risk of injury. Additionally, the exercise program engine 300 may provide remedial information to the athlete or coach such as recommended exercise routines and practices to alleviate the risk of injury. Moreover, based on the feedback from the exercise program engine 300, a coach may adjust an athlete's training program, e.g., to set a new target timeline before the athlete is ready to return to play.
In some embodiments, the exercise feedback system 100 uses the models to perform other functionality such as providing biofeedback by the biofeedback engine 380. The biofeedback engine 380 may generate or update various graphical user interfaces (examples of which are shown in
In addition to providing the notification of injury risk, the biofeedback engine 380 may also generates and provide other types of biofeedback for athletes based on the muscle stress measurements. The biofeedback indicates, for example, a metric of athletic performance such as a percentage value, a Boolean value (e.g., satisfactory or unsatisfactory), or any suitable type of value. In some embodiments, the biofeedback indicates a measure of progress of an athlete over a period of time and is generated based on context describing the corresponding exercise (e.g., using information from the athlete data store 310 or exercise program data store 320). The context may include a type of exercise, or a volumetric load based on a product of a number of repetitions and corresponding weights lifted by an athlete. The biofeedback may be generated based on heart rate data captured by sensors of an athletic garment or associated with a particular muscle, muscle group, repetition, or set. Based on normalized physiological data, the biofeedback engine 380 may generate biofeedback including a comparison between contributions of a set of muscles with that of a different set of muscles of the athlete while performing an exercise.
In some embodiments, the biofeedback engine 380 generates a graphical depiction of muscles of an athlete. In particular, the biceps and quads (among other types of muscles) may be overlaid on the arm and leg portions, respectively, of a human body graphic (e.g., resembling a silhouette, avatar, or the like) of the athlete. The biofeedback engine 380 may present muscle stress measurements, biofeedback, or other metrics the muscles by dynamically updating a color or size of the graphic depiction of the corresponding muscle. For instance, as the muscle stress measurement increases, the graphic of the muscle becomes a brighter color or increases in size to illustrate that the muscle is being contracted for an exercise. Thus, the athlete can view a real-time progression of multiple muscles that increase or decrease in stress or activation levels throughout stages of an exercise, e.g., the athlete utilizes the arm and leg muscles for different motions of an Olympic lift.
As an example use case, an athlete using the exercise feedback system 100 is part of an athletic team including multiple athletes, coaches, or other personnel. The biofeedback engine 380 may generate biofeedback including a comparison between the athlete and another athlete of the same team (e.g., as shown in
In some embodiments, some or all of the functionality of the exercise feedback system 100 may be performed by or implemented within a client device 110. For example, the client device 110 stores pre-determined muscle stress measurement models and uses a local muscle stress engine to determine whether a model's criteria for modifying an exercise program is satisfied. This can be advantageous because the client device 110 may not always have a network connection while an athlete is exercising (e.g., the athlete's gym does not have internet available). Thus, muscle stress measurements are determined and analyzed locally on the client device 110 without having to upload the physiological data to the exercise feedback system 100 for processing.
In one embodiment, the data processing engine 330 receives 710 physiological data from an athletic garment worn by a user (athlete), where the physiological data describes muscle activation of muscles of the user while performing an exercise. The muscle stress engine 350 determines 720, for each of the muscles, a muscle stress measurement for the exercise based on the received physiological data. Specifically, the data processing engine 330 normalizes 730 the physiological data corresponding a given muscle relative to the physiological data corresponding to one or more other muscles. Additionally, the muscle stress engine 350 accumulates 740 the normalized physiological data. The exercise feedback system presents 750 the muscle stress measurement to the user, e.g., by displaying biofeedback generated by the biofeedback engine 380 via a client device 110.
In one embodiment, the data processing engine 330 retrieves 810 physiological data captured by sensors of an athletic garment worn by a user (athlete) while performing an exercise using a set of muscles for an exercise program presented to the user by a client device 110. The muscle stress engine 350 determines 820 a muscle stress measurement for the set of muscles that is representative of a magnitude of exertion by the set of muscles during the exercise (e.g., using the process 700 shown in
The foregoing description of the embodiments of the invention has been presented for the purpose of illustration; it is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Persons skilled in the relevant art can appreciate that many modifications and variations are possible in light of the above disclosure.
Some portions of this description describe the embodiments of the invention in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are commonly used by those skilled in the data processing arts to convey the substance of their work effectively to others skilled in the art. These operations, while described functionally, computationally, or logically, are understood to be implemented by computer programs or equivalent electrical circuits, microcode, or the like. Furthermore, it has also proven convenient at times, to refer to these arrangements of operations as modules, without loss of generality. The described operations and their associated modules may be embodied in software, firmware, hardware, or any combinations thereof.
Any of the steps, operations, or processes described herein may be performed or implemented with one or more hardware or software modules, alone or in combination with other devices. In one embodiment, a software module is implemented with a computer program product including a computer-readable non-transitory medium containing computer program code, which can be executed by a computer processor for performing any or all of the steps, operations, or processes described.
Embodiments of the invention may also relate to a product that is produced by a computing process described herein. Such a product may include information resulting from a computing process, where the information is stored on a non-transitory, tangible computer readable storage medium and may include any embodiment of a computer program product or other data combination described herein.
Finally, the language used in the specification has been principally selected for readability and instructional purposes, and it may not have been selected to delineate or circumscribe the inventive subject matter. It is therefore intended that the scope of the invention be limited not by this detailed description, but rather by any claims that issue on an application based hereon. Accordingly, the disclosure of the embodiments of the invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.
This application is related to co-pending U.S. application Ser. No. ______ (Atty. Docket No: 32971-37329/US) entitled “MUSCLE STRESS MEASUREMENT IN A SENSOR EQUIPPED GARMENT,” filed on an even date herewith.