Software Platform Configured to Provide Analytics and Recommendations
Methods and systems provide a software platform configured to provide analytics and recommendations. The software platform provides a software application that targets functional fitness with features that motivate and attract athletes for long-term use. The software application provides social networking functionalities including groups (e.g., gym, professionals, friends) as well as workout discovery, scalability, and fitness ranking. The software application further provides an engine that presents a workout generator based on available equipment and the user profile. The application includes an analysis tool that determines workout effectiveness including muscle groups, power measurements, equipment and movements, and effectiveness of workouts over time. In some embodiments, the application includes guidance on movements and stretches using instructions, videos, photos, etc.
This application claims priority to U.S. Provisional Application 62/395,071, filed Sep. 15, 2016, incorporated by reference in its entirety.
BACKGROUNDVarious technologies attempt to provide fitness tracking features and, in some instances, fitness analytics. However, heretofore, no existing solution can break down fitness movements to enable, on-demand, computer-generated workouts and provide workout discovery with their friends, gym and groups. Conventional systems also fail to synchronize and allow for offline access with fast response time and relate all movement styles to results such as impacted muscle groups, calories, etc. No existing solution can find complex relationships between workouts across users and groups in a social network. Conventional systems also fail to suggest stretching routines that target the movements that makeup a workout. Furthermore, conventional systems do not identify deficiencies in a user's workout routine; tie fitness, nutrition, sports, gamification, and biosignal in a single solution; learn user's workouts with results to improve specifically to the user; and provide detail analytics with necessary information to assist coaches to improve athlete performance.
Prior systems, methods, and apparatus struggle from several technical problems. For example, no existing solution can express the concept of a workout (from multiple fitness disciplines) into a generic format that can be processed efficiently by a computer. Known systems fail to define a computational model that can be used to define property functions that quantify the different characteristics of an arbitrary workout (e.g., duration, calorie consumption, average power, etc). Similarly, heretofore, systems do not define a computational model that can be used to quantify ‘similarities’ between two arbitrary workouts and they do not define a computational model that includes a set of mutation operators which can be used to both modify existing workouts and create entirely new workouts.
Furthermore, no existing solution defines a computational model that allows users to combine mutation operators with property functions to create optimization functions. Such functions could be used to modify an arbitrary workout in an attempt to optimize a given property of it (duration, calories, muscles, aesthetics, etc.) or synthesize a completely new workout. Prior systems do not define a computational model that can incorporate an athletes performance (both quantitative data like “score” and body metrics (BPM, blood/oxygen level, etc) or qualitative metrics like “how much they enjoyed the workout?”) to both detect training deficiencies and suggest improvements to an athlete's programming routine.
SUMMARYAn illustrative method according to a set of instructions stored on the memory of a computing device includes receiving, at a processor of the computing device, a movement selection; determining, by the processor, a movement repetition for the received movement selection; receiving, at the processor, a group of movement selections, wherein the group of movement selections includes a plurality of movement selections and a plurality of movement repetitions corresponding to each of the plurality of movement selections; determining, by the processor, a group repetition for the received group of movement selections; forming, by the processor, a workout based on the group of movement selections and the group repetitions; and modifying the workout based on data received from use of the workout.
In another aspect, the present disclosure is directed to a method of forming a workout. The method is implemented by one or more processors of a fitness genome apparatus communicatively coupled with a server and according to a set of instructions stored on a memory of the computing device. The method includes identifying, by the fitness genome apparatus, a movement associated with a user. The method includes determining, by the fitness genome apparatus, a movement repetition count associated with the movement. The method includes identifying, by the fitness genome apparatus, a group of movements, wherein the group of movements includes a plurality of movements and a plurality of movement repetition counts corresponding to each of the plurality of movements. The method includes determining, by the fitness genome apparatus, a group repetition count for the group of movements. The method includes forming, by the fitness genome apparatus, a workout based on the group of movements and the group repetition count. The method includes modifying, by the fitness genome apparatus, the workout based on performance data received from use of the workout. In some implementations, identifying the movement includes receiving, by the fitness genome apparatus, physical characteristic data associated with the user. In some implementations, identifying the movement includes detecting, by the fitness genome apparatus, a motion associated with the user. In some implementations, identifying the movement includes identifying, by fitness genome apparatus, the movement based on at least one of the physical characteristic data and the motion associated with the user.
In some implementations, determining the group repetition count is based on at least one of experience data associated with the user, a training regime selected by the user, and historical workout data associated with the user.
In some implementations, the method includes receiving, by the fitness genome apparatus and from the server, social media data comprising a list of people the user follows on a social media group. In some implementations, the method includes identifying, by the fitness genome apparatus, the group of movements based on the social media data.
In some implementations, modifying the workout includes detecting, by the fitness genome apparatus, a motion associated with the user. In some implementations, modifying the workout includes determining, by the fitness genome apparatus, a training regime where the user has difficulty progressing over time. In some implementations, modifying the workout includes decreasing the group repetition count.
In some implementations, modifying the workout includes detecting, by the fitness genome apparatus, a motion associated with the user. In some implementations, the method includes determining, by the fitness genome apparatus, a training regime having difficulty decreasing over time and increasing the group repetition count.
In some implementations, the method includes classifying, by the fitness genome apparatus, the workout based on a property function, a distance function, and an optimization function. In some implementations, the property function quantifies at least one of a duration of the workout, a calorie consumption of the workout, and an average power of the workout. In some implementations, the distance function quantifies a similarity of the workout and a second workout. In some implementations, the optimization function comprises a mutation operator and the property functions.
In some implementations, the method includes modifying the workout using an optimization function. In some implementations, the method includes detecting, by the fitness genome apparatus, training deficiencies based on the performance data. In some implementations, the method includes generating, by the fitness genome apparatus, suggestions to improve the user's performance. In some implementations, the method includes displaying, by the fitness genome apparatus, the suggestions on a screen of the computing device.
In some implementations, the method includes determining, by the fitness genome apparatus, muscles targeted by the movement. In some implementations, the method includes identifying, by the fitness genome apparatus, a stretch exercise associated with the movement. In some implementations, the method includes displaying, by the fitness genome apparatus and on a screen of the computing device, a title of the stretch exercise, a description of the stretch exercise, and a figure performing the stretch exercise.
In another aspect, the present disclosure is directed to a system to form a workout. The system includes a computing device communicatively coupled with a server, the computing device configured to identify a movement associated with a user. The computing device is configured to determine a movement repetition count associated with the movement. The computing device is configured to identify a group of movements. The group of movements includes a plurality of movements and a plurality of movement repetition counts corresponding to each of the plurality of movements. The computing device is configured to determine a group repetition count for the group of movements. The computing device is configured to form a workout based on the group of movements and the group repetition count. The computing device is configured to modify the workout based on performance data received from use of the workout.
In some implementations, the computing device is configured to receive, physical characteristic data associated with the user. In some implementations, computing device is configured to detect, a motion associated with the user. In some implementations, computing device is configured to identify the movement based on at least one of the physical characteristic data and the motion associated with the user.
In some implementations, the computing device configured to determine the group repetition count based on at least one of experience data associated with the user, a training regime selected by the user, and historical workout data associated with the user.
In some implementations, the computing device configured to receive, from the server, social media data comprising a list of people the user follows on a social media group and identify the group of movements based on the social media data. In some implementations, the computing device configured to detect a motion associated with the user, determine a training regime having difficulty increasing over time; and decrease the group repetition count to modify the workout. In some implementations, the computing device configured to detect a motion associated with the user, determine a training regime having difficulty decreasing over time, and increase the group repetition count to modify the workout.
In some implementations, the computing device configured to classify the workout based on a property function, a distance function, and an optimization function. In some implementations, the property function quantifies at least one of a duration of the workout, a calorie consumption of the workout, and an average power of the workout. In some implementations, the distance function quantifies a similarity of the workout and a second workout. In some implementations, the optimization function comprises a mutation operator and the property functions.
In some implementations, the computing device configured to modify the workout based on the optimization function. In some implementations, the computing device configured to detect training deficiencies based on the performance data, generate suggestions to improve the performance data, and display the suggestions on a screen of the computing device.
In some implementations, the computing device configured to determine muscles targeted by the movement, identify a stretch exercise associated with the movement, and display, on a screen of the computing device, a title of the stretch exercise, a description of the stretch exercise, and figure performing the stretch exercise.
Illustrative embodiments will hereafter be described with reference to the accompanying drawings.
Described herein are illustrative embodiments for methods and systems that provide for a software platform configured to provide analytics and recommendations. In an illustrative embodiment, the software platform provides a software application that targets functional fitness with features that motivate and attract athletes for long-term use. The software application provides social networking functionalities including groups (e.g., gym, professionals, friends) as well as workout discovery, scalability, and fitness ranking. The software application further provides an engine that generates on-demand customized workouts based on available equipment and the user profile. The application includes an analysis tool that determines workout effectiveness based on metrics like muscle groups, power measurements, equipment and movements, etc. In some embodiments, the application includes guidance on movements and stretches using instructions, videos, photos, etc.
In some implementations, user 120 may be any number of different types of user electronic devices configured to communicate via a network (e.g., Local Area Network (LAN) or Wide-Area Network (WAN), including without limitation, a laptop computer, desktop computer, a tablet computer, a mobile computing device (e.g., smartphone, smartwatch), or any other type and form of computing device or combinations of devices. In some implementations, user 120 may be a user of fitness analytic system 110. In some implementations, user 120 may include any or all hardware, software, and functionality as fitness genome engine 110.
Fitness genome engine 110 may be included in any number of different types of electronic devices configured to communicate via a network (e.g., Local Area Network (LAN) or Wide-Area Network (WAN), including without limitation, a laptop computer, desktop computer, a tablet computer, a mobile computing device (e.g., smartphone, smartwatch), a server, a cloud computing device, or any other type and form of computing device or combinations of devices.
Fitness genome engine 110 may include a processor 111 (not shown) and memory 112 (not shown). Memory 112 may store machine instructions that, when executed by processor 111 cause processor 111 to perform one or more of the operations described herein. Processor 111 may include a microprocessor, ASIC, FPGA, etc., or combinations thereof. In many implementations, processor 111 may be a multi-core processor or an array of processors. Memory 112 may include, but is not limited to, electronic, optical, magnetic, or any other storage devices capable of providing processor 111 with program instructions. Memory 112 may include a floppy disk, CD-ROM, DVD, magnetic disk, memory chip, ROM, RAM, EEPROM, EPROM, flash memory, optical media, or any other suitable memory from which processor 111 can read instructions. The instructions may include code from any suitable computer programming language such as, but not limited to, C, C++, C#, Java, JavaScript, Perl, HTML, XML, Python and Visual Basic.
Fitness genome engine 110 may include one or more network interfaces 113 (not shown). A network interface 113 may include any type and form of interface, including Ethernet including 10 Base T, 100 Base T, or 1000 Base T (“Gigabit”); any of the varieties of 802.11 wireless, such as 802.11a, 802.11b, 802.11g, 802.11n, or 802.11ac; cellular, including CDMA, LTE, 3G, or 4G cellular; Bluetooth or other short range wireless connections; or any combination of these or other interfaces for communicating with a network or other computing devices. In some implementations, user 120 may include a plurality of network interfaces 113 of different types, allowing for connections to a variety of networks, such as local area networks or wide area networks including the Internet, via different sub-networks.
Fitness genome engine 110 may include one or more user interface or input/output devices 114 (not shown). A user interface device 114 may be any electronic device that conveys data to a user by generating sensory information (e.g., a visualization on a display, one or more sounds, tactile feedback, etc.) and/or converts received sensory information from a user into electronic signals (e.g., a keyboard, a mouse, a pointing device, a touch screen display, a microphone, etc.). The one or more user interface devices may be internal to the housing of fitness genome engine 110, such as a built-in display, touch screen, microphone, etc., or external to the housing of fitness genome engine 110, such as a monitor connected to fitness genome engine 110, a speaker connected to fitness genome engine 110, etc., according to various implementations.
Fitness genome engine 110 may be included in memory 112, may be an application 114 (e.g., as shown in
Fitness genome engine 110 defines a fundamental data type called “workout.” From the workout data type, a variety of functions can be defined such as properties, distance, and optimization. Workouts are represented using a recursive data structure (Abstract Syntax Tree being one example) which allows for complex workouts to be represented as a collection of many, simpler, workouts. The most fundamental workout the system defines is a “Movement” which cannot be broken down into other workouts.
Fitness genome engine 110 includes various property functions (referred to as “Analytics”) capable of processing the recursive data structure used to represent a workout. These property functions allow the system to calculate a number of different metrics that are useful for fitness analysis. The process may include a decomposition phase, an analysis phase, and a composition phase.
In the decomposition phase, the fitness analytic system 110 (via the property function) breaks up the workout into its most fundamental components (referred to hereinafter as “movements”). For example, the fitness analytic system 110 may identify and/or extracts a push-up movement, a sit-up movement, and a back squat movement from the workout. The fitness analytic system 110 (via the property function) may determine the order and/or the number of times each of the identified/extracted movements were completed. In some implementations, the fitness analytic system 110 (via the property function) may determine the order and/or the number of times each of the identified/extracted movements were completed based on the workout “score.” In some implementations, movements are defined so that they are atomic such that the user (e.g., user 120) either completes the entire movement or none of it all. For example, the fitness analytic system 110 does not count the completion of half of a push-up as an official/completed push-up. In some implementations, a movement may have a magnitude component. This applies to movements that allow for variable difficulty (e.g., mass of a dumbbell, height of a rope, distance of a run). In some implementations, a special composite movement (referred to herein as “Movement Complex”) may be defined using other simpler movements as building blocks. This allows us to express a concept that is common to some types of weight training where a group of movements is treated atomically. For example, no breaking in between a Clean and Jerk movement and a Burpee Box Jump movement.
Fitness genome engine 110 is a customizable fitness platform capable of supporting any number of different movement possibilities based on the application. In some implementations, the user (e.g., user 120) selects the one or more movements for the fitness genome engine 110 to support. In some implementations, fitness genome engine 110 includes a custom movement catalog defining an exhaustive list of all supported movements and their associated attributes. In some implementations, fitness genome engine 110 supports the following attributes: symbol, name, equation for work, muscle profile, and equipment. A symbol attribute is a unique variable name that can be used in workout expressions. A name attribute refers to the movement (e.g., singular and/or plural) within the fitness community. In some implementations, a name attribute refers to the movement in many different languages. A muscle profile attribute is the set of all (or a portion) of muscles activated during a movement. In some implementations, A muscle profile attribute includes the extent at which the muscles are activated relative to other muscles in the body (e.g., 0%=No Usage, 100%=Exclusive Usage). An equipment attribute is the set of equipment needed to perform a workout.
In the analysis phase, the fitness analytic system 110 (via the property function) performs calculations at the movement-level, utilizing the some or all of the attributes defined in the movement catalog. In the composition phase, the fitness analytic system 110 (via the property function) uses the values calculated during the analysis phase to derive a metric applying to the entire workout.
Property functions that evaluate the characteristics of a workout can output either scalar values or they may output more complex data structures such as a set. Scalar values can express characteristics such as estimated duration, calorie consumption, and power. Sets can express properties such as active muscles, equipment, and useful stretches. Distance functions are a special type of function that can quantify the similarity of two workouts, for example. Using the functions described above, it possible to design optimization programs that can selectively modify an arbitrary workout to produce one with desired characteristics as defined by one or more property functions (e.g., optimal duration, aesthetics, or movement composition) and potentially some other set of constraints (e.g., thresholds, termination criteria, etc). In some implementations, Property functions may be used to calculate metrics for multiple workouts which can either be related or unrelated. Related workouts may be selected by category (e.g., leg workouts, bicep workouts, shoulder workouts, cardiovascular workouts) and/or based on time range (e.g., day of the week, week, month, year, etc).
Property function may calculate, for example, energy expenditure, average power, muscle impact, and muscle push/pull ratio. Energy expenditure is the total calories consumed by the body during the workout (an example calculation described below). Energy expenditure (referred to herein as ‘E’) may be one of the most vital property functions because fitness analytic system 110 uses energy expenditure to calculate, for example, Average Power, Muscle Ratio, and Muscle Impact.
Average power is the average power output of the body during a workout. In some implementations, fitness analytic system 110 calculates the average power output of the body during a workout by dividing total energy expenditure by the workout duration based on the assumption that average power equates to energy over time.
As shown in
Muscle push/pull ratio is the ratio of pushing to pulling performed by a muscle and its counter muscle. For example, the bicep muscle group pulls, while the triceps muscle group pushes. Fitness analytic system 110 may calculate a muscle push/pull ratio using the ratio of energy expended by each muscle (as described herein).
The energy required to complete a movement is calculated based on the equation, Emovement=Wmovement EFFmovement where EFFmovement is the movement efficiency coefficient. Every movement has a custom equation for mechanical work, Wmovement, defined within the movement catalog as an attribute. These equations can be built on top of existing equations (W=F·s and W=T·θ being examples). Each equation may also include independent variables such as body height, body mass, and movement magnitude. As such, fitness analytic system 110 adjusts its calculations based on the mass of the weight lifted, for example, during a bench press movement or a deadlift movement. This also allows fitness analytic system 110 to adjust calculations to both reflect the anatomy of the person completing the workout and account for movements with a variable magnitude component (e.g., mass for weightlifting, distance for running). These equations may also make assumptions about the different body ratios (e.g., arm spam is approximately equal to height) based on worldwide averages for humans. In some implementations, the efficiency coefficient may be necessary because the human body is not 100% efficient at converting the chemical energy contained within food to the mechanical energy needed to complete a movement. The coefficient encapsulates various concepts, such as genetics, physiological adaptations (caused by diet, age, etc.), technique/muscle recruitment, and fitness levels (from training).
Still referring to
In the adaptive approach, fitness analytic system 110 may define a custom map of coefficients (containing one coefficient for each movement) for each user that can be adjusted over time using workout data provided by the user (i.e., an adaptive map of coefficients). For example, each user starts with a map of coefficients based on the fixed value approach or the unique coefficient approach. After the user (e.g., user 120) logs specific benchmark workouts, fitness analytic system 110 adjusts the coefficient (e.g., for each or a subset of the movements in that workout) to reflect the discrepancy between the user's score with a predefined baseline for that benchmark. For example, good results equate to increased efficiency and bad results equate to decreased efficiency. To derive a benchmark, fitness analytic system 110 (or user 120) selects the appropriate benchmark for the desired application (e.g., based on muscle group). In some implementations, fitness analytic system 110 receives an input selection from user 120 indicating the selected benchmark. Fitness analytic system 110 (or user 120) may determine a mathematical relationship between a score (e.g., time, total work, heart rate, etc.) and a workout efficiency coefficient, EFFworkout (Note: This is different from the movement coefficient, EFFmovement). In some implementations, fitness analytic system 110 (or user 120) may determine this relationship based on empirical data. In some implementations, fitness analytic system 110 calculates the workout efficiency coefficient based on the following equation:
EFFworkout=(Wworkout/Eworkout), (1)
where Eworkout is measured energy expenditure for the workout
In some implementations, equation (1) may be expressed in terms of the efficiency coefficients for each movement included in the workout based on the following equation:
EFFworkout=(EFFmovement1*R1)+(EFFmovement2*R2)+. . . +(EFFmovementN*RN) (2)
where Ri is the total work involved for the movement, Wmovement, divided by the work for the entire workout, Wworkout.
Fitness analytic system 110 may use equation (2) during the optimization process (as discussed below).
The adaptive approach is a multi-variable optimization problem. This allows fitness analytic system 110 to utilize algorithms and heuristics to find an optimal solution. The goal of this algorithm is to optimize a series of equations in the form defined in equation B, where EFFi are the unknown values representing the efficiency coefficients for each of the movements contained in the workout. In some implementations, fitness analytic system 110 may restrict the value of each efficiency coefficient within a predetermined range. For example, fitness analytic system 110 may restrict the value of each efficient coefficient between 0.23 and 0.27. The efficiency coefficient may be any value between 0 and 1. In some implementations, fitness analytic system 110 may use a Genetic Algorithm approach, as described herein.
Fitness analytic system 110 may use the Genetic Algorithm approach to mimic the concept of Natural Selection by creating an environment where a population of candidate solutions compete and evolve towards an optimal solution. The Genetic Algorithm approach is an iterative approach where for each iteration (generation), the fitness (degree of correctness) of each candidate solution is evaluated and used to influence the probability that the solution is stochastically selected and used to form a new generation (after being mutated). The goal of this approach is to continually improve the fitness of candidate solutions from generation-to-generation until either an optimal solution is found or a predefined number of generations have elapsed.
In order for the fitness analytic system 110 to use the Genetic Algorithm approach (as described above), the fitness analytic system 110 identifies/represents a candidate solution (the set of efficiency coefficients EFFi) as a binary array by concatenating the binary form of each individual movement efficiency, EFFi, as fixed point decimal values (precision can be determined by the application) into a single binary array. In some implementations, fitness analytic system 110 may evaluate fitness via equation (2). By performing the Genetic Algorithm approach, fitness analytic system 110 may select an optimal set of efficiency coefficients that can satisfy the widest range of benchmark equations (e.g., via equation 2). This approach will result in an adaptive calorie estimate, which takes into account both the differences in individuals and their progression in the form of technique, fitness, and diet.
The coefficient map may be used to detect a user's (e.g., user 120) fitness strengths and deficiencies based on a movement level analysis and/or a muscle level analysis. For example, using a movement level analysis, fitness analytic system 110 may determine which movements the user needs to work on (either in technique, or in terms of muscle development) based on the low efficiency values. In another example, using muscle level analysis, fitness analytic system 110 may determine (or approximate) the effectiveness of a specific muscle by comparing the efficiencies of all movements that have a high utilization of that muscle of interest. That is, fitness analytic system 110 can filter the efficiency coefficient for every movement associated with a specific muscle group (e.g., bicep muscle group, triceps muscle group) based on a utilization factor greater than a predetermined threshold (for example between 1% and 75%).
The fitness analytic apparatus 210 includes hardware such as an accelerometer, a gyroscope, and other motion detection apparatuses. For example, the fitness analytic apparatus 210 may detect the motion of a user by querying motion data from the one or more motion detection apparatuses. Computer software programmed into memory for execution on processors in the fitness analytic apparatus 210 enable the functionalities described herein. The functionalities include fitness tracking and analysis. In some implementations, fitness analytic apparatus 210 includes conductivity measuring equipment, such as a sweat sensor, and/or temperature measurement equipment, such as a thermocouple.
The combination of hardware and software in the fitness analytic apparatus 210 enables the generation of workouts, including the identification of fitness movements workout discovery with user friends, gym and groups. The fitness analytic apparatus 210 can synchronize and allow for offline access with fast response time and relate all movement style to impacted results such as muscle group, calories, etc. The connectivity of the fitness analytic apparatus 210 to server 220 permits the relation of workouts to friends, group and following pros (social network) as well as relating stretches to workouts and movements.
Advantageously, the fitness analytic apparatus 210 identifies deficiencies of each user workout; it ties fitness, nutrition and biosignal in a single solution; it learns user workout with results to improve specifically to the user; and it provides detail analytics with necessary information to assist coaches to improve athlete performance such as orange theory.
The fitness analytic apparatus 210 provides technical solutions to problems inherent to prior technologies. For example, the fitness analytic apparatus 210 can express the concept of a workout (from multiple fitness disciplines) into a generic format that can be processed efficiently. The fitness analytic apparatus 210 also defines a computational model that can be used to define property functions that quantify a given characteristic of an arbitrary workout (e.g. duration, calorie consumption, average power, etc). The fitness analytic apparatus 210 also defines a computational model that can be used to quantify ‘similarity’ between two arbitrary workouts and they do not define a computational model that includes a set of mutation operators which can be used to either modify an existing workout or create an entirely new workout.
Furthermore, the fitness analytic apparatus 210 defines a computational model that allows users to combine mutation operators with property functions to create optimization functions. Such functions can modify an arbitrary workout in an attempt to optimize a given property of it (duration, calories, muscles, aesthetics, etc.) or synthesize a completely new workout. The fitness analytic apparatus 210 also defines a computational model that can incorporate an athletes performance (both quantitative data like “score” and body metrics (BPM, blood/oxygen level, etc) or qualitative metrics like “how much they enjoyed the workout?”) to both detect training deficiencies and suggest improvements to an athletes programming.
In an operation 3315, the system identifies groups of movements to include in a defined workout. The groups of movements can include movements targeting certain muscles or focusing on different muscles for the defined workout. A number of considerations can be considered for the formation of groups of movements. The grouping can be based on user-defined physical characteristics or preferences. The grouping can also be based on groups of friends or people the user follows on social media. At an operation 3320, the system determines a number of repetitions for the group. Repetitions depend on the experience level of the user, the training regime selected, an analysis of workouts performed by the user, and other factors.
In an operation 3415, the system modifies the aesthetic of the workout. The system defines different workouts with aesthetic qualities based on the movement, the repetitions, and the muscles used. The modification of the aesthetic can change the look of the workout based on user requirements. At an operation 3420, the system modifies the movement of the workout. The system can change movements in the workout in response to an analysis of the workout performance to increase or decrease difficulty or to change training goals.
In an illustrative embodiment, any of the operations described herein can be implemented at least in part as computer-readable instructions stored on a computer-readable medium or memory. Upon execution of the computer-readable instructions by a processor, the computer-readable instructions can cause a computing device to perform the operations.
The foregoing description of illustrative embodiments has been presented for purposes of illustration and of description. It is not intended to be exhaustive or limiting with respect to the precise form disclosed, and modifications and variations are possible in light of the above teachings or may be acquired from practice of the disclosed embodiments. It is intended that the scope of the disclosure be defined by the claims appended hereto and their equivalents.
The foregoing method descriptions and the process flow diagrams are provided merely as illustrative examples and are not intended to require or imply that the steps of various implementations must be performed in the order presented. As will be appreciated by one of skill in the art the order of steps in the foregoing implementations may be performed in any order. Words such as “thereafter,” “then,” “next,” etc. are not intended to limit the order of the steps; these words are simply used to guide the reader through the description of the methods. Further, any reference to claim elements in the singular, for example, using the articles “a,” “an” or “the” is not to be construed as limiting the element to the singular.
The hardware used to implement the various illustrative logics, logical blocks, modules, and circuits described in connection with the implementations disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Alternatively, some steps or methods may be performed by circuitry that is specific to a given function.
In some exemplary implementations, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or code on a non-transitory computer-readable storage medium or non-transitory processor-readable storage medium. The steps of a method or algorithm disclosed herein may be embodied in a processor-executable software module, which may reside on a non-transitory computer-readable or processor-readable storage medium. Non-transitory computer-readable or processor-readable storage media may be any storage media that may be accessed by a computer or a processor. By way of example but not limitation, such non-transitory computer-readable or processor-readable storage media may include RAM, ROM, EEPROM, FLASH memory, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store desired program code in the form of instructions or data structures and that may be accessed by a computer. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above are also included within the scope of non-transitory computer-readable and processor-readable media. Additionally, the operations of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a non-transitory processor-readable storage medium and/or computer-readable storage medium, which may be incorporated into a computer program product.
Claims
1. A method of forming a workout, the method implemented by one or more processors of a fitness genome apparatus communicatively coupled with a server and according to a set of instructions stored on a memory of the computing device, the method comprising:
- identifying, by the fitness genome apparatus, a movement associated with a user;
- determining, by the fitness genome apparatus, a movement repetition count associated with the movement;
- identifying, by the fitness genome apparatus, a group of movements, wherein the group of movements includes a plurality of movements and a plurality of movement repetition counts corresponding to each of the plurality of movements;
- determining, by the fitness genome apparatus, a group repetition count for the group of movements;
- forming, by the fitness genome apparatus, a workout based on the group of movements and the group repetition count; and
- modifying, by the fitness genome apparatus, the workout based on performance data received from use of the workout.
2. The method of claim 1, wherein identifying the movement comprises:
- receiving, by the fitness genome apparatus, physical characteristic data associated with the user;
- detecting, by the fitness genome apparatus, a motion associated with the user; and
- identifying, by fitness genome apparatus, the movement based on at least one of the physical characteristic data and the motion associated with the user.
3. The method of claim 1, wherein determining the group repetition count is based on at least one of experience data associated with the user, a training regime selected by the user, and historical workout data associated with the user.
4. The method of claim 1, comprising
- receiving, by the fitness genome apparatus and from the server, social media data comprising a list of people the user follows on a social media group; and
- identifying, by the fitness genome apparatus, the group of movements based on the social media data.
5. The method of claim 1, wherein modifying the workout comprises:
- detecting, by the fitness genome apparatus, a motion associated with the user;
- determining, by the fitness genome apparatus, a training regime having difficulty increasing over time; and
- decreasing the group repetition count.
6. The method of claim 1, wherein modifying the workout comprises:
- detecting, by the fitness genome apparatus, a motion associated with the user;
- determining, by the fitness genome apparatus, a training regime having difficulty decreasing over time; and
- increasing the group repetition count.
7. The method of claim 1, comprising:
- classifying, by the fitness genome apparatus, the workout based on a property function, a distance function, and an optimization function;
- wherein the property function quantifies at least one of a duration of the workout, a energy expenditure of the workout, and an average power of the workout;
- wherein the distance function quantifies a similarity of the workout and a second workout; and
- wherein the optimization function comprises a mutation operator and the property functions.
8. The method of claim 7, comprising modifying the workout using the optimization function.
9. The method of claim 1, comprising:
- detecting, by the fitness genome apparatus, training deficiencies based on the performance data;
- generating, by the fitness genome apparatus, suggestions to improve the performance data; and
- displaying, by the fitness genome apparatus, the suggestions on a screen of the computing device.
10. The method of claim 1, comprising:
- determining, by the fitness genome apparatus, muscles targeted by the movement;
- identifying, by the fitness genome apparatus, a stretch exercise associated with the movement; and
- displaying, by the fitness genome apparatus and on a screen of the computing device, a title of the stretch exercise, a description of the stretch exercise, and a figure performing the stretch exercise.
11. A system to form a workout, the system comprising:
- a computing device communicatively coupled with a server, the computing device configured to: identify a movement associated with a user; determine a movement repetition count associated with the movement; identify a group of movements, wherein the group of movements includes a plurality of movements and a plurality of movement repetition counts corresponding to each of the plurality of movements; determine a group repetition count for the group of movements; form a workout based on the group of movements and the group repetition count; and modify the workout based on performance data received from use of the workout.
12. The system of claim 10, comprising the computing device configured to:
- receive, physical characteristic data associated with the user;
- detect, a motion associated with the user; and
- identify the movement based on at least one of the physical characteristic data and the motion associated with the user.
13. The system of claim 10, comprising the computing device configured to:
- determine the group repetition count based on at least one of experience data associated with the user, a training regime selected by the user, and historical workout data associated with the user.
14. The system of claim 10, comprising the computing device configured to:
- receive, from the server, social media data comprising a list of people the user follows on a social media group; and
- identify the group of movements based on the social media data.
15. The system of claim 10, comprising the computing device configured to:
- detect a motion associated with the user;
- determine a training regime having difficulty increasing over time; and
- decrease the group repetition count to modify the workout.
16. The system of claim 10, comprising the computing device configured to:
- detect a motion associated with the user;
- determine a training regime having difficulty decreasing over time; and
- increase the group repetition count to modify the workout.
17. The system of claim 10, comprising the computing device configured to:
- classify the workout based on a property function, a distance function, and an optimization function;
- wherein the property function quantifies at least one of a duration of the workout, a calorie consumption of the workout, and an average power of the workout;
- wherein the distance function quantifies a similarity of the workout and a second workout; and
- wherein the optimization function comprises a mutation operator and the property functions.
18. The system of claim 17, comprising the computing device configured to modify the workout based on the optimization function.
19. The system of claim 10, comprising the computing device configured to:
- detect training deficiencies based on the performance data;
- generate suggestions to improve the performance data; and
- display the suggestions on a screen of the computing device.
20. The system of claim 10, comprising the computing device configured to:
- determine muscles targeted by the movement;
- identify a stretch exercise associated with the movement; and
- display, on a screen of the computing device, a title of the stretch exercise, a description of the stretch exercise, and figure performing the stretch exercise.
Type: Application
Filed: Sep 15, 2017
Publication Date: Mar 15, 2018
Inventors: Matt Paiz (Poway, CA), Ton Nguyen (Poway, CA), Khang Nguyen (Poway, CA)
Application Number: 15/706,375