SYSTEMS AND METHODS FOR AUTOMATED ANALYSIS OF FITNESS DATA
Systems and methods are provided for processing and analyzing workout or other fitness data associated with a user. For example, a fitness analysis system may electronically receive workout data indicating performance of a user with respect to each of a number of different workouts completed by the user, where a given workout may include multiple movements. The workout data may be processed and analyzed to determine features or aspects of fitness or health that are relatively strong or weak for the given user by applying one or more rule sets and/or based on comparisons among a variety of the processed data. One or more user interfaces may then be generated providing graphical or other indications of fitness strengths or weaknesses determined by the fitness analysis system.
Any and all applications for which a foreign or domestic priority claim is identified in the Application Data Sheet as filed with the present application are hereby incorporated by reference under 37 CFR 1.57.
This application claims benefit of U.S. Patent Application No. 61/857,538, filed Jul. 23, 2013, entitled “SYSTEMS AND METHODS FOR GENERATING A FITNESS REPORT,” which is hereby incorporated herein by reference in its entirety.
BACKGROUNDFunctional fitness is an increasingly popular style of exercise in the United States. Typically, functional fitness includes a wide variety of movements, workouts, and combinations thereof. In some instances, it combines movements and elements from powerlifting, Olympic weightlifting, track and field, long distance running and climbing, basic gymnastics, calisthenics and/or other fitness areas. Many functional fitness workouts are circuit-style workouts that include combinations of movements from these different disciplines. Individuals often record their performance on these workouts based on total time to completion, total weight lifted, maximum weight lifted, rounds completed in a certain timeframe, and/or other information. Equipment used often includes barbells, dumbbells, kettlebells, rowing machines, weighted sleds, tractor tires for flipping, and/or a large variety of other traditional or non-traditional workout equipment. Due to the variety of workouts from week to week and from gym to gym, there are many different ways to compare performance of different individuals and to analyze an individual's performance.
The foregoing aspects and many of the attendant advantages will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
Generally described, aspects of the present disclosure relate to systems and methods for determining health and/or fitness of an individual or group of individuals. In some embodiments, one or more fitness level metrics or scores may be generated, which may be associated with supporting measured reports (which may include charts and/or graphs), as discussed herein. For example, a user may enter workout data, such as by entering text and/or numeric data, selecting from selectable options in a user interface, retrieving data from a smart device or fitness tracking device, and/or other data input or submission methods. A fitness analysis system, as described herein, may process the user's workout data and generate various scores and/or reports based at least in part on the workout data. In some embodiments, the fitness analysis system may be configured to categorize new workouts not previously known to the fitness analysis system. For example, a user may enter workout information for a workout that includes a combination of different movements, where the movements are known by the fitness analysis system, but where the fitness analysis system has not previously received data regarding a workout that includes the submitted combination of movements. In some embodiments, the fitness analysis system may determine a category of the workout based at least in part on the types of movements involved in the workout, the duration of each movement or the workout as a whole, the number of repetitions of the movements, the number of rounds of the workout and/or other factors.
Based on the user's workout data for workouts in each of a number of different fitness categories, the fitness analysis system may determine a score for the user for each of a number of different categories. Based at least in part on the determined scores for the different categories, the fitness analysis system may determine an overall fitness score for the user. In some embodiments, the fitness analysis system may use the determined scores and/or other determined information to generate various reports, recommendations and/or analysis regarding the user's fitness and/or workout performance. For example, the fitness analysis system may generate a user interface indicating strengths or weaknesses in the user's fitness (such as indicating a probable abundance or lack of physical strength, endurance, flexibility and/or technique) based on an automated analysis of the user's workout data, optionally in combination with an analysis of workout data received for a large number of different users that have completed the same or different workouts.
The fitness analysis system 100 includes, for example, a personal computer that is IBM, Macintosh, or Linux/Unix compatible. In one embodiment, the fitness analysis system 100 comprises a server, a desktop computer, a laptop computer, a tablet computer, a mobile phone, a personal digital assistant, a kiosk, or an audio player, for example. In one embodiment, the exemplary fitness analysis system 100 includes a central processing unit (“CPU”) 105, which may include a conventional microprocessor. The fitness analysis system 100 further includes a memory 130, such as random access memory (“RAM”) for temporary storage of information and a read only memory (“ROM”) for permanent storage of information, and a mass storage device 120, such as a hard drive, diskette, or optical media storage device. Typically, the modules of the fitness analysis system 100 are connected to the computer using a standard based bus system. In different embodiments, the standard based bus system could be Peripheral Component Interconnect (“PCI”), Microchannel, Small Computer System Interface (“SCSI”), Industrial Standard Architecture (“ISA”) and Extended ISA (“EISA”) architectures, for example. In addition, the functionality provided for in the components and modules of fitness analysis system 100 may be combined into fewer components and modules or further separated into additional components and modules.
The fitness analysis system 100 is generally controlled and coordinated by operating system software, such as Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Vista, Windows 7, Windows 8, Unix, Linux, SunOS, Solaris, Maemeo, MeeGo, BlackBerry Tablet OS, Android, webOS, Sugar, Symbian OS, MAC OS X, iOS or other operating system(s). In Macintosh systems, the operating system may be any available operating system, such as MAC OS X. In other embodiments, the fitness analysis system 100 may be controlled by a proprietary operating system. Conventional operating systems control and schedule computer processes for execution, perform memory management, provide file system, networking, I/O services, and provide a user interface, such as a graphical user interface (“GUI”), among other things.
The fitness analysis system 100 includes one or more commonly available input/output (I/O) devices and interfaces 110, such as a keyboard, mouse, touchpad, and printer. In one embodiment, the I/O devices and interfaces 110 include one or more display device, such as a monitor, that allows the visual presentation of data to a user. More particularly, a display device provides for the presentation of GUIs, application software data, and multimedia presentations, for example. The fitness analysis system 100 may also include one or more multimedia devices 140, such as speakers, video cards, graphics accelerators, and microphones, for example.
In the embodiment of
According to
In the embodiment of
In the embodiment shown in
In one embodiment, the fitness level metric or score 204 is determined by the fitness analysis system using a weighted average calculated based on the levels from eight different categories. These categories are indicated in the illustrative user interface as powerlifts, Olympic lifts, speed, endurance, bodyweight, light, heavy and long. The fitness analysis system may consider a user's performance with respect to one or more workouts in each category that are considered in calculating the level or score for that category. For each workout that a person has completed in a given category, the fitness analysis system may have determined a score or level. In some embodiments, the level may be roughly equivalent to a percentile, and may be determined at least in part by comparing the individual's score to a number of other individuals' scores. These individual workout levels may be averaged to produce a category level, such as the illustrated category level or score of 56 determined for the powerlifts category. In the illustrated embodiment, the eight category levels may then have been averaged, such as by giving equal weight to each category, to produce the overall fitness level 204. In other embodiments, one category may be weighted more heavily than another.
Information contributing to the powerlifts level or score may include, for example, a user's heaviest weight lifted for one repetition of deadlift, back squat, bench press, and/or overhead press. Information contributing to the Olympic lifts level or score may include, for example, a user's heaviest weight lifted for one repetition of snatch, clean, and/or jerk. Information contributing to the speed level or score may include, for example, a user's fastest times for outdoor running and/or indoor running machine distances from 100 meters through 1000 meters. Information contributing to the endurance level or score may include, for example, a user's fastest times for outdoor running and/or indoor running machine distances from 1000 meters through 10,000 or more meters. In some embodiments, only workout information from a certain time period may be considered (such as the last month, the last three months, or some other period).
Information contributing to the bodyweight conditioning workouts level or score may include, according to one embodiment, workouts generally lasting under 20 minutes that contain only bodyweight movements and no weighted movements. Examples bodyweight movements include pull-ups, push-ups, sit-ups and un-weighted squats. An example workout may be a timed workout including a 500 meter row, 40 air squats, 30 sit-ups, 20 push-ups and 10 pull-ups. Light conditioning workouts, in one embodiment, may generally be workouts lasting under 20 minutes that contain weighted movements, with average to light weights. An example workout may include completing as many rounds as possible in 15 minutes of the following: 9 deadlifts of 155 pounds (which may be a relatively light weight based on population-wide data), 12 push-ups and 15 box jumps at a 24 inch height. A heavy conditioning workout, in one embodiment, may be a workout generally lasting under 20 minutes that contains weighted movements, with heavier than average weights. An example workout may include 5 timed rounds including 5 deadlifts of 275/185 pounds and 10 burpees. Long conditioning workouts may be, in one embodiment, workouts generally lasting over 20 minutes that may contain bodyweight movements and may contain heavy or light weighted movements. An example workout may include 5 timed rounds including an 800 meter run, 30 kettlebell swings and 30 pull-ups. Workouts may be automatically categorized by the fitness analysis system by applying retrieved rule sets, as further described below.
In some embodiments, the fitness analysis system may generate and/or present for display one or more user interfaces that graphically display one or more of the category levels as bars on a bar chart, with a horizontal line at the overall fitness level, as illustrated in
In some embodiments, interfaces may either be a push or a pull type. For example, a push type interface may be one in which the fitness analysis system sends (or provides access to) a fitness report (formatted for the interface) to an end user without a direct user request for data, such as by email. In contrast, a pull type interface may be one in which a user requests that the fitness analysis system generate and/or deliver a report, such as by the user requesting one or more pages or other user interfaces. In either case, in some embodiments, the formatted fitness reports and/or score displays may be pre-generated and stored in a data store to be ready for access or delivery. Alternatively, in some embodiments, the formatted fitness reports and/or scores may be generated on demand when the report is to be sent to the user or is requested by the user.
As will be further discussed below, once the user has submitted his workout information for one or more workouts, the fitness analysis system may then compare the results of entered workouts against a number of the system's other users, which may include all users throughout the world or a subset of the users based on user similarities, geography or other user attributes. From this data, in some embodiments, the system may calculate a level or score, such as a number from 0-100, for the workout result. Members who perform the workout with modified repetitions or weights may be placed below those who performed the workout as prescribed (without modification) when calculating the level. In some embodiments, detailed meal information may be stored based on user input and/or analyzed, in some embodiments. Additionally or alternatively, weigh-ins with body fat estimates may be determined based at least in part on data entered into a user interface and may be used in determining one or more levels or scores. In some embodiments, daily lifestyle summary questions may be used to track trends in common items that may have an effect on workout performance and progress. Users' answers may be compared to other respondents, and daily points may be awarded for positive answers, which may depend on the importance of the different items according to one or more rule sets.
Importing user data and processing such data may include, in some embodiments, feature extraction and feature evaluation implemented by the fitness analysis system 100. A feature, in some embodiments, may refer to an individual observable property of raw data. In some embodiments, features may be determined by applying one or more extract-transform processes based at least in part on received or retrieved raw data. Raw data, in some embodiments, may be stored in one or more data stores as (1) an individual performs a data entry step (for him/herself or for another), (2) an automated data discovery process (such as a batch process), and/or (3) data generated by the fitness analysis system itself as final output and/or as intermediate data.
In some embodiments, automated data discovery techniques may include web crawling, social media integration, interpreting smart device data, and/or direct access to external services. In some embodiments, the fitness analysis system 100 may initially collect raw data (such as workouts performed, weigh-ins, and/or other activities such as yoga or stretching). Example data import techniques and/or sources for collecting raw data may include, without limitation, user-submitted data, RSS importation, social network data, blogging or micro-blogging service import or analysis, smart device data importation (such as fitness tracking devices), proprietary adapters and/or others. Raw data may be either structured or unstructured data, in some embodiments. In some embodiments, features extracted or determined from raw data may be considered structured data, which may also include additional attributes and/or other metadata. Such features may be stored as a single numerical value, a string, and/or another data structure or type.
In some embodiments, the fitness analysis system may implement a batch processing technique (such as MapReduce or batched background jobs) to process large quantities of data. In these embodiments, the system may extract features, import data and/or create fitness reports as batches. A batch processing technique, according to one embodiment, may include task queues and workers to perform the given tasks. These workers may access data stores, data services (such as by utilizing remote procedural calls or request-reply messaging) and/or other queues to retrieve input and/or to store output. In some embodiments, a task generator may be a process that is executed at regularly timed intervals by the fitness analysis system to start work for a batch. In other embodiments, a task generator may be initiated on demand based at least in part on one or more user requests. For example, the task generator may queue a set of tasks for the workers to perform. In some embodiments, workers may run concurrently utilizing the same computing device and/or utilizing separate computing devices.
In some embodiments, the fitness analysis system may implement real time data processing for at least some aspects of the received or retrieved fitness data. In some such embodiments, a state may be changed when there is new data, updated data or deleted data. Once the state is changed, the updated state may propagate to subsequent processing steps to update relevant scores and/or reports. In some embodiments, the fitness analysis system may generate a directed graph or other representation of nodes to implement higher-level stages of the data processing method and/or report generation.
In one embodiment, one or more of the data importing and processing features and/or report generation features may be implemented using messaging technologies such as queues and/or publish-subscribe channels. This may allow for flexibility of running workers and queues in many configurations between shared machines, or their own machines. In one embodiment, a batch processor may be implemented as a multi-staged MapReduce process. In another embodiment, it may be implemented as a pool of worker processes taking tasks off a queue, which may allow for flexibility of machine usage based on computing requirements. In some embodiments, a real time processing module may be responsible for incremental updates that can be merged into batch-processed data for up to date data. The data it manages may be transient, in some embodiments, as batch processing may confirm its calculations or other processing within a batch processor snapshot stored in one or data stores, according to some embodiments. In some embodiments, temporary data may be stored in memory for speed, with only the most recent up to date information more permanently stored in one or more data stores.
At decisional block 404, the fitness analysis system 100 determines, for each workout being analyzed, whether the given workout has been assigned to a category. For example, a workout that has previously been completed by the given user or by other individuals may have been previously categorized by the fitness analysis system and/or manually categorized by one or more users or operators of the fitness analysis system. The fitness analysis system may determine if a given workout completed by the user has been previously categorized by searching one or more data stores for a matching workout and retrieving its assigned category designation. When a given workout has been previously assigned to a category, the illustrative method proceeds to block 408, skipping block 406 for the given workout. If, however, a given workout has not been previously assigned to a category, the illustrative method proceeds to block 406 for the given workout.
At block 406, the fitness analysis system 406 automatically assigns the workout to a category by analyzing attributes of the workout and/or attributes of each of one or more movements included in the workout. Attributes of a workout as a whole may include, for example, the time or duration of the workout (such as total time and/or time per round), number of repetitions (such as total repetitions and/or repetitions per round), weight (such as total weight, maximum and/or minimum weight used, and/or average weight used), distance (such as total distance, average distance, and/or distance per round), height (such as total height achieved, average height, and/or height per round), and/or the number of rounds of the workout completed. A round may be, for example, a set of movements performed per attempt of the workout, with the workout encompasses multiple rounds or set attempts. Attributes of individual movements within the workout may include, for example, the type of movement, the amount of weight used, the distance involved, the height involved, the amount of time the movement is performed, the movement modality (for example, a running movement may be considered to be monostructural), and/or the number of repetitions of the movement. A given workout may include multiple different movements of different types, such as a pull-up movement and a running movement. Accordingly, in some embodiments, determining a category for a given workout may include the fitness analysis system considering each of the movement types included in the workout to identify a category for the workout based on a rule set. As one example, a rule may indicate that a workout lasting less than 20 minutes (or some other defined threshold) and only including bodyweight movements and/or cardio movements is to be assigned to a “bodyweight” category. Another rule in the same embodiment may indicate that a workout lasting less than 20 minutes that contains a mixture of bodyweight, cardio and light weightlifting movements (e.g., under a predetermined weight threshold) are to be assigned to a “light” category.
At block 408, the fitness analysis system 100 determines an average performance of the user for each workout and/or for each category of workout over a specified time period. Block 408 may be optional, such that it is not performed in some embodiments of the illustrative method. In some embodiments in which block 408 is implemented, the fitness analysis system may determine a representative or average performance by the user for a given workout (such as determining the average time, weight and/or distance for each movement and/or each workout over a given period, such as six months), then determine a percentile for the user's average or weighted average across all users of the system or all users in a given demographic or other grouping. It will be appreciated that a number of different weighting schemes, statistical methods and/or other known methods for determining representative numbers and/or percentile determinations may be applied.
Next, at block 410, the fitness analysis system generates scores for the user for each of a plurality of fitness categories, where the score for each category is based at least in part on the received user data for workouts in the respective category. The score may be determined in a different manner for different categories, depending on the types of workouts, types of movements, weight amounts employed, distances involved and/or other information associated with a given category. For example, scores for one category may be based at least in part on how many rounds of a workout were completed by a user in a certain time frame, while scores for another category may be based at least in part on the time that the user took to complete a workout. In some embodiments, movement scores may be generated for specific movement groups. For example, one or more of a user's workouts may include two or more distinct deadlift movements, with the user's performance with respect to each deadlift movement being considered in determining a score for a deadlift movement group. In some embodiments, this block may include determining a relative level or score for the user based on the percentile of the user's score, such as by comparing the individual's score to a number of other individuals' scores. In some embodiments, a given workout may only be included in determining a category score and/or an overall fitness score once the workout reaches a predetermined threshold number of participants. For example, a workout that has only been completed by a small number of users may be deemed to have too small of a sample size to provide sufficient percentile determinations and may not be used in determining scores. Accordingly, the number of different workouts contributing to a given score may change over time as more workout data is received from users. This may include, for example, considering potentially hundreds of unique workouts each performed by one or more of thousands of different users.
At block 412, the fitness analysis system determines an overall fitness score for the user based on the various category scores generated above. In one embodiment, the overall level or score may be determined by calculating an average of the user's category scores. In other embodiments, additional percentile determinations may be made at block 412, such as considering the user's percentile among other users with respect to combinations of category-based scores. In some embodiments, a given gym, user or system operator may assign various weights to the different category scores to be applied when the fitness analysis system determines the overall fitness score. Once the overall fitness score has been determined, the illustrative method 400 ends at block 412. As will be appreciated, the generated category scores and/or overall score may then be provided to the user, stored in a data store and/or used in generating additional content, such as a report.
In some embodiments, the fitness analysis system may implement both batch and real-time processing for the workout information and derived or intermediate data determined from users' workout information. As a batch process, for example, the fitness analysis system may maintain one or more current statistic percentile tables for a given week or period across all users or a subset of users. For example, the statistics may include the workout sessions, intervals and/or lifts of that week, which may provide levels of popular and newly created workouts of that week. In some embodiments, the fitness analysis system may store pre-generated reports for each workout and/or each movement. In order to keep the pre-generated statistics tables current, the system may regenerate them daily, hourly or at another time interval based on workout posting activity, which may include real-time or near-real time updates.
The user interface illustrated in
In one embodiment, a weakness may by identified based on the fitness analysis system identifying a difference of ten or more points or levels (or some other predefined threshold) between the highest and lowest level or score in a given category. It will be appreciated that strengths or weaknesses may be generated according to different rules and/or other level difference thresholds in other embodiments. In some embodiments, the fitness analysis system may provide an up to date (real time or near-real time) accounting of a user's strength and weaknesses. These strengths and weaknesses may be shown in graphs of fitness levels of individual, or groups of, element levels based on workout session, intervals and/or potential maxes. The system may support presentation of historical strengths and weaknesses, such as by storing historical data that is accessible by the user via one or more user interfaces and/or for use in generating historical graphs. The strength and weakness determinations, as well as score or level determinations, in some embodiments, may be considered an idempotent function over the relevant input data. In some embodiments, the fitness analysis system may implement one or more of the determinations discussed herein by implementing batch processing with incremental updates, such as Lambda Architecture.
Next, at block 604, the fitness analysis system determines the overall fitness level of the user based at least in part on the determined scores and/or other fitness data associated with the user. This overall score may be determined using similar methods as those discussed above with respect to
At block 606, the fitness analysis system analyzes the determined scores for specific exercises, categories or fitness traits (e.g., sub-scores) relative to the overall fitness level of the user to identify at least one outlier score. Alternatively or additionally, the fitness analysis system may compare sub-scores to each other (rather than, or in addition to, comparing each sub-score to the overall fitness level of the user). An outlier may be considered, in one embodiment, to be a sub-score that is a predetermined threshold number of points, levels or percentiles below or above the user's overall score, and/or a threshold number below or above one or more other sub-score(s) of the user (such as a category score).
Next, at block 608, the fitness analysis system compares a type of the outlier score to a type of one or more of the user's sub-scores that more closely match the overall fitness level of the user. For example, as will be discussed in more detail below with respect to
It is to be understood that not necessarily all objects or advantages may be achieved in accordance with any particular embodiment described herein. Thus, for example, those skilled in the art will recognize that certain embodiments may be configured to operate in a manner that achieves or optimizes one advantage or group of advantages as taught herein without necessarily achieving other objects or advantages as may be taught or suggested herein.
All of the processes described herein may be embodied in, and fully automated via, software code modules executed by a computing system that includes one or more general purpose computers or processors. The code modules may be stored in any type of non-transitory computer-readable medium or other computer storage device. Some or all the methods may alternatively be embodied in specialized computer hardware. In addition, the components referred to herein may be implemented in hardware, software, firmware or a combination thereof.
Many other variations than those described herein will be apparent from this disclosure. For example, depending on the embodiment, certain acts, events, or functions of any of the algorithms described herein can be performed in a different sequence, can be added, merged, or left out altogether (e.g., not all described acts or events are necessary for the practice of the algorithms). Moreover, in certain embodiments, acts or events can be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors or processor cores or on other parallel architectures, rather than sequentially. In addition, different tasks or processes can be performed by different machines and/or computing systems that can function together.
The various illustrative logical blocks, modules, and algorithm elements described in connection with the embodiments disclosed herein can be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, and elements have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. The described functionality can be implemented in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the disclosure.
The various illustrative logical blocks and modules described in connection with the embodiments disclosed herein can be implemented or performed by a machine, such as a processing unit or 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 processor can be a microprocessor, but in the alternative, the processor can be a controller, microcontroller, or state machine, combinations of the same, or the like. A processor can include electrical circuitry configured to process computer-executable instructions. In another embodiment, a processor includes an FPGA or other programmable device that performs logic operations without processing computer-executable instructions. A processor can 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. Although described herein primarily with respect to digital technology, a processor may also include primarily analog components. For example, some or all of the signal processing algorithms described herein may be implemented in analog circuitry or mixed analog and digital circuitry. A computing environment can include any type of computer system, including, but not limited to, a computer system based on a microprocessor, a mainframe computer, a digital signal processor, a portable computing device, a device controller, or a computational engine within an appliance, to name a few.
The elements of a method, process, or algorithm described in connection with the embodiments disclosed herein can be embodied directly in hardware, in a software module stored in one or more memory devices and executed by one or more processors, or in a combination of the two. A software module can reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of non-transitory computer-readable storage medium, media, or physical computer storage known in the art. An example storage medium can be coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium can be integral to the processor. The storage medium can be volatile or nonvolatile. The processor and the storage medium can reside in an ASIC. The ASIC can reside in a user terminal. In the alternative, the processor and the storage medium can reside as discrete components in a user terminal.
Conditional language such as, among others, “can,” “could,” “might” or “may,” unless specifically stated otherwise, are otherwise understood within the context as used in general to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without user input or prompting, whether these features, elements and/or steps are included or are to be performed in any particular embodiment.
Disjunctive language such as the phrase “at least one of X, Y or Z,” unless specifically stated otherwise, is otherwise understood with the context as used in general to present that an item, term, etc., may be either X, Y, or Z, or any combination thereof (e.g., X, Y, and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of Z to each be present.
Any process descriptions, elements or blocks in the flow diagrams described herein and/or depicted in the attached figures should be understood as potentially representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or elements in the process. Alternate implementations are included within the scope of the embodiments described herein in which elements or functions may be deleted, executed out of order from that shown, or discussed, including substantially concurrently or in reverse order, depending on the functionality involved as would be understood by those skilled in the art.
Unless otherwise explicitly stated, articles such as “a” or “an” should generally be interpreted to include one or more described items. Accordingly, phrases such as “a device configured to” are intended to include one or more recited devices. Such one or more recited devices can also be collectively configured to carry out the stated recitations. For example, “a processor configured to carry out recitations A, B and C” can include a first processor configured to carry out recitation A working in conjunction with a second processor configured to carry out recitations B and C.
It should be emphasized that many variations and modifications may be made to the above-described embodiments, the elements of which are to be understood as being among other acceptable examples. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims.
Claims
1. A system comprising:
- an electronic data store configured to store workout data indicating performance of each of a plurality of users with respect to each of a plurality of workouts; and
- a computing system comprising one or more hardware computing devices executing specific computer-executable instructions, said computing system in communication with the electronic data store, and configured to at least: retrieve, from the electronic data store, workout information associated with a user of the plurality of users, wherein the retrieved workout information indicates performance of the user with respect to each of a first plurality of workouts; generate a plurality of scores for the user, wherein each of the plurality of scores indicates a performance level of the user with respect to at least one of an exercise or a fitness trait; determine an overall fitness level for the user based at least in part on the plurality of scores; identify at least one outlying score among the plurality of scores based at least in part on a comparison of the outlying score to at least one of the overall fitness level or at least one other score of the plurality of scores for the user; automatically determine a potential cause of the at least one outlying score based at least in part on a score type associated with the outlying score; and generate a user interface for presentation to the user based at least in part on the automatic determination, wherein the user interface identifies the determined potential cause of the at least one outlying score as a fitness strength or fitness weakness associated with the user.
2. The system of claim 1, wherein the potential cause is one of physical strength, flexibility or technique.
3. The system of claim 2, wherein the computing system is further configured to determine the potential cause of the at least one outlying score based at least in part on a rule set associated with at least one of a fitness category, a fitness trait or an exercise.
4. The system of claim 1, wherein the computing system is further configured to identify the at least one outlying score by determining that a difference between the at least one outlying score and the overall fitness level is greater than a predetermined threshold.
5. The system of claim 4, wherein the predetermined threshold is associated with at least one of a fitness category, a fitness trait or an exercise.
6. The system of claim 4, wherein the plurality of scores and the overall fitness score are each based at least in part on a percentile of workout performance of the user relative to a population of users.
7. The system of claim 1, wherein the at least one other score comprises a score that more closely matches the overall fitness level than the at least one outlying score.
8. A computer-implemented method comprising:
- as implemented by one or more computing devices configured with specific executable instructions, electronically receiving workout data indicating performance of a user with respect to each of a plurality of workouts completed by the user; generating a plurality of fitness sub-scores for the user, wherein each of the plurality of fitness sub-scores indicates a performance level of the user with respect to at least one of a movement, a fitness category or a fitness trait; determining an overall fitness level for the user based at least in part on the plurality of fitness sub-scores; identifying at least one outlying sub-score among the plurality of fitness sub-scores based at least in part on a comparison of the outlying sub-score to the overall fitness level; automatically determining a potential cause of the at least one outlying sub-score based at least in part on a score type associated with the outlying sub-score; and generating a user interface for presentation to the user based at least in part on the automatic determination, wherein the user interface identifies the determined potential cause of the at least one outlying sub-score.
9. The computer-implemented method of claim 8, wherein the at least one outlying sub-score is further identified based at least in part by comparing the at least one outlying sub-score to at least one other sub-score of the plurality of sub-scores.
10. The computer-implemented method of claim 8, wherein the user interface identifies the outlying sub-score as being indicative of a specific determined fitness strength or fitness weakness associated with the user.
11. The computer-implemented method of claim 8, wherein a first sub-score of the plurality of fitness sub-scores is based on performance of the user with respect to a plurality of different movement types.
12. The computer-implemented method of claim 8, wherein the potential cause is determined based at least in part by applying a first electronically retrieved rule set that identifies a cause based on a defined score relationship between at least two types of exercises.
13. The computer-implemented method of claim 8, wherein computer application of a first rule set identifies a first potential cause when a first sub-score is lower than a second sub-score and identifies a different potential cause when the second sub-score is lower than the first sub-score.
14. The computer-implemented method of claim 13, wherein the first rule set is applied based on a fitness category assigned to at least one of the first sub-score and the second sub-score.
15. The computer-implemented method of claim 8, wherein identifying the at least one outlying sub-score comprises identifying that a given sub-score is more than a predefined threshold number of percentile points different than one or more specific sub-scores other than the given sub-score.
16. A computer-readable, non-transitory storage medium storing computer executable instructions that, when executed by one or more computing devices, configure the one or more computing devices to perform operations comprising:
- electronically receiving workout data indicating performance of a user with respect to each of a plurality of workouts completed by the user;
- generating a plurality of fitness sub-scores for the user, wherein each of the plurality of fitness sub-scores indicates a performance level of the user with respect to at least one of a movement, a fitness category or a fitness trait;
- determining an overall fitness level for the user based at least in part on the plurality of fitness sub-scores;
- identifying at least one outlying sub-score among the plurality of fitness sub-scores based at least in part on a comparison of the outlying sub-score to the overall fitness level;
- automatically determining a potential cause of the at least one outlying sub-score based at least in part on a score type associated with the outlying sub-score; and
- generating a user interface for presentation to the user based at least in part on the automatic determination, wherein the user interface identifies the determined potential cause of the at least one outlying sub-score.
17. The computer-readable, non-transitory storage medium of claim 16, wherein the user interface comprises a graphical representation of the plurality of fitness sub-scores and the overall fitness level.
18. The computer-readable, non-transitory storage medium of claim 16, wherein determining the overall fitness level comprising averaging the plurality of fitness sub-scores.
Type: Application
Filed: Jul 15, 2014
Publication Date: Jan 29, 2015
Inventors: Benjamin Lon Hing Yu (Anaheim, CA), Mohammad Ali Naqvi (Ontario, CA), Jonathan Michael Kinnick (Ontario, CA), Corey Robert Tripp (Minneapolis, MN)
Application Number: 14/332,260
International Classification: A63B 71/06 (20060101);