METHOD AND SYSTEM FOR HUMAN MOTION ANALYSIS AND INSTRUCTION

Abstract
Disclosed is a method of analyzing an athletic motion by an individual. The method is executed by a motion monitoring system having at least one computer and one or more sensors for sensing movement of the individual. The method involves categorizing the individual into a category of a plurality of possible categories based on a physical attribute (e.g. body mass) of the individual. The method also involves generating, for each speed metric generated based on captured sensor data, an indication of relative performance (e.g. percentile ranking) of the speed metric in relation to only other individuals who also belong to the category of the individual. By comparing the individual to only other individuals who also belong to the category of the individual, the relative performance of each speed metric can provide a solid foundation for identifying which speed metric could use improvement. Also disclosed is a motion monitoring system.
Description
TECHNICAL FIELD

The present disclosure relates generally to a multi-function method and system for training an athletic motion.


BACKGROUND

Many different techniques have been implemented in order to teach the proper mechanics of various athletic motions, including swinging a baseball bat, a golf club, a baseball bat, or other sports instrument. Many instructors use a video analysis system to teach a student how to properly swing a sports instrument. Using a typical video analysis system, the student's swing is captured by a video-recording device. The instructor replays the recorded video information to illustrate the student's swing while providing feedback regarding the swing. Instructional feedback may be comments relative to problems associated with the student's swing, compliments regarding improvement in the student's swing, suggestions on correcting the user's swing, or any other verbal instructional comments in context with the student's swing. Visualizing one's personal swing in this manner has been recognized as a valuable tool in identifying problems as well as correcting those problems in order to improve the overall swing.


However, video analysis systems have drawbacks. One drawback relates to having the video information subjectively analyzed. Not only is such analysis open to interpretation and subject to inaccuracies, but it is also exacerbated by the fact that many problems associated with a body movement are typically not captured by the video recording system given different camera angles, too few cameras, or loose clothing.


In order to overcome the drawbacks associated with typical video analysis systems, instructors have adopted motion or position analysis systems as an aid to analysis and instruction. Many conventional motion analysis systems require that the user (e.g., student/athlete) wear sensor elements on their body and the sensor elements transmit positional data of isolated body parts, such as hands, hips, shoulders and head. The isolated points on the body are measured during a swing in accordance with an absolute reference system, e.g., a Cartesian coordinate system wherein the center point is a fixed point in the room. By using motion analysis, exact measurements are provided from which an instructor can more accurately determine problems in a student's swing.


Some existing approaches that employ motion analysis can calculate various speed metrics of the student's swinging motion. The speed metrics can for example include pelvis speed, torso speed, arm speed, hand speed and exit velocity of a ball being struck by a sports instrument such as a baseball bat. These speed metrics are relevant to the student's swinging motion. The exit velocity is closely watched metric and considered to be important by many. However, the existing approaches leave much to be desired, in part because the speed metrics that they produce may do little to actually help the student learn how to improve upon the swinging motion.


It is desirable to improve upon the conventional approaches to address or mitigate some or all of the aforementioned shortcomings.


SUMMARY

Disclosed is a method of analyzing an athletic motion by an individual. The method is executed by a motion monitoring system having at least one computer and one or more sensors for sensing movement of the individual. The method involves the at least one computer receiving sensor data captured from the one or more sensors during execution of the athletic motion by the individual, and processing the sensor data to automatically generate at least one speed metric for the individual based on the sensor data.


In accordance with an embodiment of the disclosure, the method also involves the at least one computer categorizing the individual into a category of a plurality of possible categories based on a physical attribute of the individual, and generating, for each speed metric of the at least one speed metric, an indication of relative performance of the speed metric in relation to only other individuals who also belong to the category of the individual. The method also involves the at least one computer outputting the indication of relative performance for each speed metric.


By conveying each speed metric in terms of an indication of relative performance, the individual can be provided with an intuitive view of their performance in executing the athletic motion. For example, if the relative performance is a percentile ranking, the individual may readily know that 90th percentile is excellent while 10th percentile is poor. This can be easier for the individual to perceive and understand than if each speed metric were to be conveyed in terms of raw numbers expressed in meters per second for example.


Moreover, by comparing the individual to only other individuals who also belong to the category of the individual, the relative performance of each speed metric can provide a solid foundation for identifying which speed metric could use improvement. For example, when categorizing individuals according to body mass, the individual would be compared to only other individuals who have comparable body mass as the individual. It has been observed that such comparison based on body mass can improve upon an identification of which speed metric should be targeted for improvement through one or more exercises. Comparisons to other individuals based on age or other criteria that are not related to a physical attribute generally do not provide the same benefit.


Therefore, a combination of (1) conveying each speed metric in terms of an indication of relative performance (e.g. percentile ranking) and (2) comparing the individual to only other individuals who also belong to the category of the individual (e.g. comparable body mass) provides for benefits that can help the individual identify which speed metric should be targeted for improvement through one or more exercises, with a goal of improving the athletic motion as a whole.


Also disclosed is a motion monitoring system. The motion monitoring system has one or more sensors for sensing movement of the individual. The motion monitoring system also has at least one computer having motion monitoring circuitry configured to carry out functionality similar to the steps of the method summarized above.


Other and various aspects, goals and objectives of the invention will be apparent from the examples and illustrations that follow. Pronouns should be interpreted in all cases to include both genders.





BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings constitute a part of this specification and illustrate an embodiment of the invention and together with the specification, explain the invention.


The patent or application file contains at least one drawing executed in color. Copies of this patent or patent application publication with color drawing(s) will be provided by the Office upon request and payment of the necessary fee.



FIG. 1 is a simplified flow chart depicting the basic, repetitive, step-level methodology of the invention in which improvements in sequential performance testing are considered in the prescribing of the next sequential set of exercises.



FIG. 2 is a diagrammatic illustration of the principle components of an embodiment of the invention, including the inertial sensor/transceiver, audio/video sensors, base transceiver, and computer with its control/display unit, and internet connection to an enterprise host and database.



FIG. 3A is a diagrammatic backside elevation view of a vest appliance of the invention, illustrating the location of a sensor pocket high on the back panel.



FIG. 3B is a diagrammatic perspective view of a waist belt appliance of the invention, illustrating the location of a sensor pocket on the back panel.



FIG. 3C is a diagrammatic perspective view of a vest appliance and a waist belt appliance configured with sensors in sensor pockets hard wired to a control module on the waist belt appliance, from which wireless transmissions of sensor data emanate.



FIG. 4A is a top view of one sensor embodiment, mounted on a glove appliance.



FIG. 4B is a bottom edge view of the sensor of FIG. 4A, illustrating the attachment loops protruding from the curved underside of the sensor case, by which the sensor is attached to the glove appliance.



FIG. 4C is a side edge view of the sensor and glove appliance of FIG. 4A.



FIG. 4D is an exploded perspective view of the sensor of FIG. 4A, illustrating the stacked arrangement of electronic components over the curved battery, and the attachment loops protruding from the underside.



FIG. 5 is an exploded perspective view of another sensor embodiment, that may be wired to a control module-transmitter for transmission of sensor data.



FIG. 6 is a front face view of a control module to which body sensors may be wired for wireless transmission to a receiver/computer system and/or local display of selected parameters of motion.



FIG. 7A is a front perspective view of a golf club sensor assembly, attached to the shaft of a gulf club.



FIG. 7B is a backside perspective view of the golf club sensor assembly of FIG. 7A.



FIG. 7C is a cross section view of the golf club sensor of FIG. 7A.



FIG. 8 is an illustration of one embodiment of the system and method of the invention in use, consisting of a golfer wearing vest and waist belt appliances mounted with inertial sensors and holding a golf club with an inertial sensor mounted just below the grip of the club, standing adjacent to a stand supporting a video camera directed at the golfer and an associated receiver and processing computer with keyboard and display, the display being viewed by an instructor.



FIG. 9 is a screen shot of the composite display of the invention, incorporating three formats of feedback: a live video feed of the golfer in the upper left portion of the display, an animation of the golfer in the upper right portion of the display that is color coded to distinguish major body segments; and in the lower portion of the display a motion data time line graph tracing hip, shoulder and hand motions in a multi-colored trace.



FIG. 10A is a screen shot of a composite display of the invention, incorporating three formats of feedback: a live video feed of the golfer in the lower left side portion of the display; a time-stepped animation of the club swing indicating the plane of the club swing and the hand orientation during a swing motion; and three motion data time line graphs showing the club speed in three axis.



FIG. 10B is a line graph indicating posture with respect to trunk flex extension and trunk lateral bending versus time during a swing motion.



FIG. 10C is a line graph indicating degree of pivot during a swing motion.



FIG. 10D is a line graph indicating degrees of hip segment rotation, shoulder segment rotation, and torso load during a swing motion.



FIG. 10E is a line graph indicating degrees of shoulder segment rotation, arm segment rotation, and upper body load during a swing motion.



FIG. 10F is a line graph indicating alignment of hip segment rotation, shoulder segment rotation, arm segment rotation versus time during a swing motion.



FIG. 10G is a line graph indicating hip segment rotation speed, shoulder segment rotation speed, and arm segment rotation speed during a swing motion.



FIG. 11 is a screen shot of the multi-color animation illustrating the color distinction between the shoulder segment and the hips segment of the animation.



FIG. 12 is a screen shot of a multi-color animation illustrating the cage by which user settable parameters for lateral bending during swing motion are made apparent to the golfer as real-time feedback.



FIG. 13 is a screen shot of a multi-color animation illustrating the cage by which user-settable parameters for flexing during the swing motion are made apparent to the golfer as real-time feedback.



FIG. 14 is a screen shot of a multi-color animation illustrating the cage by which user-settable parameters for rotation during the swing motion are made apparent to the golfer as real-time feedback.



FIG. 15 is a screen shot of a multi-color line graph illustrating the coordination in time and amplitude of the rotational velocities of the hips, shoulders, and hand of the golfer during the swing motion.



FIG. 16 is a simplified representation of a multi-step process for the reduction of multiple primary performance parameters to a fewer number of secondary performance parameters, hence to respective body and club performance factors, and finally to a single kinetic index reflecting an objective evaluation of the total performance of a swing motion.



FIG. 17 shows components of a motion instruction system, according to an exemplary system embodiment.



FIG. 18A shows a block diagram of an auto capture implementation of a motion instruction system, according to an exemplary system embodiment.



FIG. 18B shows a block diagram of another auto capture implementation of a motion instruction system wherein sensor data is transmitted from a sensor only upon recognition of a motion or gesture, according to an exemplary system embodiment.



FIG. 19A shows a block diagram of a regime file generation process, according to an exemplary system embodiment.



FIG. 19B shows an exemplary block diagram of proposed data fields for the regime file generation process of FIG. 19A.



FIG. 20 is a block diagram of an process for computing a motion similarity score, according to an exemplary system embodiment.



FIG. 21A is a block diagram of motion scoring model training using a traditional machine learning approach which leverages hand-engineered feature extraction, according to an exemplary system embodiment.



FIG. 21B is a block diagram of motion scoring model training using a deep learning framework technique, according to an exemplary system embodiment.



FIG. 22A is a block diagram of scoring motion data inputs using trained classification or regression models trained using a traditional machine learning approach which leverages hand-engineered feature extraction, according to an exemplary system embodiment.



FIG. 22B is a block diagram of scoring motion data inputs using trained classification or regression models trained using a deep learning framework technique, according to an exemplary system embodiment.



FIG. 23 is a photograph of an exemplary wrist sensor according to an embodiment of the present invention



FIG. 24. is a screenshot of an animation illustrating wrist movement for an exercise during a live training session according to an embodiment of the invention.



FIG. 25 is a screenshot of a graphical user interface illustrating various angles and movement of the golf club and golf ball for each swing exercise according to an embodiment of the invention.



FIG. 26 is an exemplary scatterplot generated by the server that is a two-dimensional data visualization of Launch Angle (degrees) along the x-axis and Wrist Radial/Ulnar deviation (degrees) along the y-axis according to an embodiment of the invention.



FIG. 27 is a process flowchart for a cloud-based motion instruction system according to an embodiment of the invention.



FIG. 28 is a screenshot of a graphical user interface generated by the CPU illustrating a Client Manager application according to an embodiment of the invention.



FIG. 29 is a screenshot of a graphical user interface generated by the CPU illustrating an Equipment Manager application according to an embodiment of the invention.



FIG. 30 is another screenshot of a graphical user interface generated by the CPU illustrating a Client Manager application according to an embodiment of the invention.



FIG. 31 is another screenshot of a graphical user interface generated by the CPU illustrating a Client Manager application according to an embodiment of the invention.



FIG. 32 is another screenshot of a graphical user interface generated by the CPU illustrating a Client Manager application according to an embodiment of the invention.



FIG. 33 is a screenshot of a graphical user interface generated by the CPU for a mobile application according to an embodiment of the invention.



FIG. 34 is a screenshot of another graphical user interface generated by the CPU for a mobile application according to an embodiment of the invention.



FIG. 35 is a screenshot of another graphical user interface generated by the CPU for a mobile application according to an embodiment of the invention.



FIG. 36 is a screenshot of another graphical user interface generated by the CPU for a mobile application according to an embodiment of the invention.



FIG. 37 is a screenshot of an Evaluation Report generated by the CPU for a golf activity according to an embodiment of the invention.



FIG. 38 is another screenshot of an Evaluation Report generated by the CPU for a golf activity according to an embodiment of the invention.



FIG. 39 is another screenshot of an Evaluation Report generated by the CPU for a golf activity according to an embodiment of the invention.



FIG. 40 is another screenshot of an Evaluation Report generated by the CPU for a golf activity according to an embodiment of the invention.



FIG. 41 is another screenshot of an Evaluation Report generated by the CPU for a golf activity according to an embodiment of the invention.



FIG. 42 is another screenshot of an Evaluation Report generated by the CPU for a golf activity according to an embodiment of the invention.



FIG. 43 is another screenshot of an Evaluation Report generated by the CPU for a golf activity according to an embodiment of the invention.



FIG. 44 is another screenshot of an Evaluation Report generated by the CPU for a golf activity according to an embodiment of the invention.



FIG. 45 is another screenshot of an Evaluation Report generated by the CPU for a golf activity according to an embodiment of the invention.



FIG. 46 is another screenshot of an Evaluation Report generated by the CPU for a golf activity according to an embodiment of the invention.



FIG. 47 is another screenshot of an Evaluation Report generated by the CPU for a golf activity according to an embodiment of the invention.



FIG. 48 is another screenshot of an Evaluation Report generated by the CPU for a golf activity according to an embodiment of the invention.



FIG. 49 is another screenshot of an Evaluation Report generated by the CPU for a golf activity according to an embodiment of the invention.



FIG. 50 is another screenshot of an Evaluation Report generated by the CPU for a golf activity according to an embodiment of the invention.



FIG. 51 is a screenshot of an Evaluation Report generated by the CPU for a baseball activity according to an embodiment of the invention.



FIG. 52 is another screenshot of an Evaluation Report generated by the CPU for a baseball activity according to an embodiment of the invention.



FIG. 53 is another screenshot of an Evaluation Report generated by the CPU for a baseball activity according to an embodiment of the invention.



FIG. 54 is another screenshot of an Evaluation Report generated by the CPU for a baseball activity according to an embodiment of the invention.



FIG. 55 is another screenshot of an Evaluation Report generated by the CPU for a baseball activity according to an embodiment of the invention.



FIG. 56 is a screenshot of a graphical user interface generated by the CPU having a Tile Display according to an embodiment of the invention.



FIG. 57 is another screenshot of a graphical user interface generated by the CPU having a Tile Display according to an embodiment of the invention.



FIG. 58 is a flowchart of a method of analyzing an athletic motion by an individual, in accordance with an embodiment of the disclosure.



FIGS. 59A and 59B are graphs showing exit velocity percentile versus body speed percentile for a first player.



FIGS. 60A and 60B are graphs showing exit velocity percentile versus body speed percentile for a second player.



FIG. 61 is a graph of exit velocity percentile versus body speed percentile.



FIG. 62 is a graph showing exit velocity versus body weight.



FIG. 63 is a graph showing pelvis speed versus body weight.





DETAILED DESCRIPTION

An athletic motion analysis system and method for improving performance according to various aspects of the present invention consists of equipment and methods, including cameras, inertial sensors, computers, computer networks, and software, means for providing real time visual feedback in unique formats and prescriptions for practice exercises, all as described in the following paragraphs. The invention comprises many embodiments and variations of which the following examples are illustrative and not limiting.


Referring to FIG. 1, the steps of one embodiment of the invention are presented in sequence. Test 100 requires that the user subject him or herself to testing by use of the system of the invention while he/she conducts an athletic motion of interest. Collect 200 includes the measurement and collection of motion data with inertial sensors, a camera, and/or possibly other sensors, of the motion executed during the test. Analyze 300 includes analyzing the collected data, and includes accessing a database 700 of related data for comparison and for relating types and degrees of deviations in performance from benchmark values to a library of standard exercises for generating prescriptions of appropriate practice exercises or corrective measures. Report 400 includes the generation of a unique display of synchronized video, motion animation and data/time graphs. Prescribe 500 includes the documentation and delivery of a program or regime of type and time or quantity of performance parameter-specific exercises. Finally, exercise 600, instructs the user to practice the exercises or corrective measures in accordance with the prescription. The cycle of test, collection, analysis, report, prescription and exercise is repeated as often as desired until the desired level of performance is achieved. The type, time and level of the prescribed exercises are adjusted automatically (up or down) according to the most recent performance and/or the change in performance between the most recent performance test and prior reported test results.


Referring to FIG. 2, the principle components of one embodiment of the system and their relationship is represented in a system diagram where inertial sensors 10, attached to body appliances 40 that are worn by the user, communicate by wireless means with a base transceiver 69 which is part of a computer-based motion analysis system 70 that includes a control and display capability, such as a laptop computer, with suitable application software and an onboard or connected database 700. Other sensory devices 72, at least one video camera and optionally a microphone and other sensors, are connected to system 70 by wire or wireless means. System 70 processes motion data and generates, displays and/or transmits reports and prescriptions as described in more detail below. Training tools 60 are not directly linked to motion analysis system 70 or the other associated components, but may be used by the user during practice exercises as prescribed by the system after testing and analysis, all as is further explained below.


System 70 and its related components may be operated at times on a stand-alone basis, but may always or at times be connected or connectable to a remote, knowledge-based enterprise system and database 98 via a browser-based internet access point or other high speed data connection for conducting data transfer and enterprise related activities between the host and local systems.


For example, a website for the enterprise system and host database 98 may provide access for registered user systems 70 to the host company's information, motion analysis products and services information, management information, company news, user access via a log-in screen for product and service FAQs, newsletters, and database 700 libraries of past performance and benchmark data and exercises, and updates thereof.


The website may be configured to provide such global functionalities to registered users as general prescriptions and exercise instructions, explanations, and illustrations-text and/or audio/video, clubhouse events and news, discussion forums, special links for members, global FAQs. an on-line store link, special newsletters, and access to relevant documents and training tips. The website may be divided by categories of registered users pages as between student users and instructor users and provide such particular functionalities as either group might need, such as for instructors the history of instruction sessions by student portfolio, the history of student analysis by portfolio, with sessions organized or stored in respective student “locker rooms” by portfolio, and scheduling for student sessions. Student pages may provide such functionalities as the individual's own personal data, history of his sessions and analysis, his training calendar, instructor contact info, and his golf scores and stats logbook.


There may be a third class of user, an organization user such as a golf school or academy, where a subset of the enterprise system is treated as an OEM client or model, with its own branding, hosting multiple students and instructors as described above.


Individual systems of the invention work in stand-alone configurations as individual test and evaluation systems for collecting student performance data, analyzing and comparing student data to a library of performance data including expert performance data, reporting the results, and prescribing corrective exercises. New test results are added to the database, and may be delivered to or accessed by coaches and/or students via on-line access to internet services. Individual systems may share access to a host database of test results of other users and related practice drills for study or comparative purposes.


Alternate embodiments of the invention may be directed to other athletic, occupational, or rehabilitation motion analysis and training of animals or humans, at either an enterprise level or a local system level as described below.


Referring to FIGS. 3A, 3B, 3C, 4A, and 4C, various embodiments of body appliances for attaching motion sensors to the user's body and/or golf club are illustrated. The appliances are designed to be repeatably donned by the user such that the sensor assemblies are positioned and repeatedly repositioned in the same place on the body or club for optimal motion sensing at selected critical points of anatomy, particularly skeletal anatomy and/or tool structure, where they will provide motion data sufficient to define the initial position and full range of motion such that it can be reduced by data processing to the major component motions. The appliances are further refined structurally to minimize or avoid interference with body motion during execution of the movement under study. The appliances are yet further refined to retain body or tool position and to retain the relationship of the sensor assembly to the target area of the body or tool during normal body motion, including any strenuous flexing and/or acceleration associated with the motion under study, so that the change of position data reported by each sensor most accurately reflects the real time experience of the target area of the body and/or tool.


In one example, for a golf swing analysis system, there are a series of three appliances for mounting inertial sensors to the user's body. There is a vest appliance 40 (FIG. 3A) suitable for mounting an inertial sensor, referred to as a shoulder sensor, high on the user's back above and between the shoulder blades over the spinal column; a waist belt appliance 50 (FIG. 3B) for mounting an inertial sensor, referred to as a hip sensor, low on the user's back just above the hips and over the spinal column; and a glove appliance 58 (FIGS. 4A and 4C) for mounting an inertial sensor to the back side of the user's forehand. It is understood however that the sensors may be secured to the user's body or clothing via other mounting appliances or bands. Alternatively, the sensors may be secured directly to the user's body or clothing via conventional cellophane tape, double-sided tape, or a spray adhesive.


Referring to FIGS. 3A and 3C, vest appliances 40 and 40A respectively have a back panel 41 at the top of which is attached a sensor pocket 42 suitable for snuggly securing a respective sensor 10 or 10A. Not visible in the figures but easily understood, the back side of the pocket that will receive the underside of the sensors of FIGS. 4B, 4D, and 5, is slotted to accept mounting loops 12 in a keying manner that enhances the grip and position integrity of the sensor within the pocket of the appliance.


The slots or sockets for receiving the sensor loops may be characterized as mounting structure, and may be further configured with latch mechanisms that secure the sensor loops 12 within the receiving slots or sockets of the sensor pocket with a mechanical interlock. Variations of the sensor loop structure as a mounting clip or stud and of the pocket slot as a keyed receiver structure, with a latching mechanism such as twist or click fit mechanism incorporated on either or both the appliance and the sensor are within the scope of the invention. The sensor pocket may be reduced in this instance to a mere location on the appliance rather than a full or partial enclosure for the sensor.


Shoulder straps 43 extending from the top corners of back panel 41 attach to strap ends 43A extending from the lower corners of the back panel via buckles. Chest belt sections 44 and 44a extend from the lower corners of the back panel for buckling on the front side of the wearer at about the level of the bottom of the rib cage or kidneys. All straps are adjustable in length for proper fitment to the wearer. The elongated back panel provides stability to the sensor from rotational displacement. The relatively high waist level of the chest strap provides security from vertical displacement of the sensor, and avoids interference with the waist belt appliance 50.


Referring to FIGS. 3B and 3C, waist belt appliances 50 and 50a, respectively, have a belt panel 51, the center section 52 of which is fabricated of non-stretch material, and is configured with a sensor pocket 53, with mounting loop slots as described above, sized and suitable for snuggly securing either a sensor 10 or 10A. Belt straps 54 and 55 extend from left and right ends of belt panel 51 and are buckled together at the front of the wearer.


Referring to FIGS. 4A, 4B, and 4C, glove appliance 58 is configured with a backside strap 59, the end of which is threaded through loops 12 (FIGS. 4D and 5) of sensor 10 and secured by hook and loop material or other commonly known fastener means to glove appliance 58. As with the other appliances, the loop and strap means of attachment may in the alternative be a hard mechanical interface between a suitable structure incorporated into the back of the glove appliance and a mating structure on the sensor.


Referring to FIGS. 4A, 4B, 4C, and 4D, and sensor 10 in particular, the packaging of the battery, sensor, transmitter, and the internal circuitry for data processing, transmission, and for recharging the battery, is uniquely designed to: (1) minimize the package size and weight; (2) place the center of mass as close as possible to the contact surface side of the sensor to minimize inertial forces tending to rotate or displace the sensor within its appliance relative to the intended target area of the user's body; and (3) to optimize the location of the sensing elements within the package to be as close to the center of the sensor's footprint as practical for best intuitive alignment of the sensor over the target area. To this end, the sensor uses a stacked configuration which places the relatively thin battery (the heaviest component and majority mass of the sensor) at the bottom closest to and conforming to the curved shape of the underside or user contact surface, with the circuit boards and sensing elements above it, only slightly further outboard from the user.


Each sensor has a unique identifier that is encoded within the output data stream, for unambiguous identity during multi-sensor operation. While not strictly necessary, in typical systems sensors are mounted in their appliances on the body with a consistent, pre-determined orientation or “up” end direction, simplifying the calibration and data processing.


Referring to FIG. 4D, one embodiment of a wireless inertial sensor 10 of the invention consists of an enclosure having a bottom cover 14 and a top cover 28, within which is housed a lithium battery 16, electronics shelf 18, printed circuit board 20 with switch, battery charger circuitry, on/off button 22, sensor assembly 24 which includes the transmitter, and light pipe 26. The lithium battery 16 conforms to the curved shape of bottom cover 14. It is readily apparent that the mass of battery 16, a substantial portion of the sensor mass, is distributed across and close to bottom cover 14. This stacking arrangement with the battery at the bottom provides a very low center of gravity for the sensor, improving its resistance to rotational or sliding displacement within the pocket of the appliance or on the back of the hand during body motion. The flat, relatively thin battery shape permits the inertial sensor to be outboard of the battery and the sensor package to remain relatively thin.


As described above, referring to FIGS. 4B, 4D and 5, mounting loops 12 extend from bottom cover 14 and provide for mounting stability in two respects. Sensor pockets 43 and 53 (FIGS. 3A, 3B, and 3C) in vest and waist belt appliances are configured with slots (not shown but readily understood from this description) that receive mounting loops 12, providing a keying effect for proper insertion and positioning of the sensors within the pockets.


Referring to FIG. 5, this embodiment sensor is a wired inertial sensor 10A and consists of an enclosure having components analogous to those of sensor 10 (FIG. 4D), but the enclosure shape and configuration of components is adapted to use a conventional 9 volt battery positioned at one edge of the enclosure, accessible through battery door 15, rather than the stacked order of assembly of sensor 10.


Referring to FIGS. 3C and 6, there is in one embodiment of the motion analysis system a control module 30 wired to sensors in sensor pocket 42 and 52 via cables 38 and 36 for receiving motion data. It has a hinged attachment 32 to belt 54 so that controls 31 and display 33 are easily viewable by the user. There is internal data processing capability and display driver for providing information directly to the user, and an integral wireless transmitter or transceiver for transmitting data to a motion analysis system 70 (FIG. 2), and/or receiving setup or other data or instructions from the motion analysis system.


Control module 30 is configured with a battery pack, hip sensor input, shoulder sensor input, microcomputer, keypad, LCD display, USB connection, remote sensor and system transceiver capability, and optionally with a video game interface.


Referring to FIGS. 7A, 7B and 7C, there may in addition or in the alternative to the body worn appliances, a mounting appliance attachable to the tool or in this case golf club, for mounting a sensor. Alternatively, the mounting means may be incorporated into the sensor enclosure as in wireless club sensor 11, where the back cover 13 incorporates a latch mechanism 15 for securing sensor 11 to the shaft 21 of a golf club. Top cover 17 encloses the battery at its lower end, accessible via battery door 19, while the electronic circuitry and sensor elements are contained in the upper section closer to the grip of the club.


Referring now to FIG. 8, there is illustrated of one embodiment of the system and method of the invention in use, consisting of a golfer wearing vest appliance 40 and waist belt appliance 50 which are each equipped with a wireless inertial sensor as described above. The golfer is holding a golf club with an inertial sensor 11 mounted just below the grip of the club, standing adjacent to a stand 71 supporting a video camera 72 directed at the golfer and an associated receiver and processing computer system 70 with keyboard and display, the display being viewed by an instructor.


The camera positions and direction with respect to the golfer's position, size and posture are carefully aligned with respect to the test site from one or the other or both of at least two positions: a first camera position at a specific down line angle, height, and lateral position or offset, and another camera position for face on angle, including height and offset. Correct camera positioning enables placement of an overlay in the video display that includes vertical and horizontal alignment lines representing center of alignment and center of balance. There may be multiple cameras on additional stands oriented to capture the motion from different directions and different heights and offsets, and some or all may be positioned carefully to support the further use of overlays of alignment lines relating to the golfer's position, size, posture, and expected motions, so as to make motions and deviations in alignment very apparent in subsequent video presentations of the swing motion.


Stated more generally, prior to testing, it may be required to select and define a test site to have at least one motion reference point; to then position the video camera to be directed at the test site at a pre-defined angle of rotation around the point or test site, a specific height relative to the reference point, with a specific angle of elevation and lateral offset with respect to the reference point. Thereafter a video test signal of the test site and reference point is sent to the computer-driven display screen and an overlay is inserted onto the computer-driven display screen corresponding to the reference point, from which specific motions are more easily observed.


The processing computer or PC of system 70 performs relational calculations on the parameters received from the various sensors, thereby allowing computation of various golf-related parameters of interest. As an example, the PC can calculate club-face angle or the angle through which the golfer turns his or her shoulders while swinging the golf club. Such parameters are referred to here as performance or alternatively diagnostic parameters, to distinguish them from the rate or position parameters transmitted by the sensors to the PC.


In a golf swing motion analysis system in particular, rate and position motion data are typically processed by the application software into performance or diagnostic parameters relating to the golfer's body segment performance, including: hip velocity (degrees per second); hip rotation (degrees negative and positive); shoulder velocity (degrees per second); shoulder rotation (degrees negative and positive); club release (degrees per second); club speed (miles per hour); club face rotation (degrees open/closed); club path (degrees inside or outside of club's address position); hip linear movement (centimeters left or right of neutral address); hip and shoulder separation (time difference between maximum hip, shoulder, and club velocity); flexion/extension of hip segment (centimeters traveled along z-axis); and kinetic link. These parameters are further extrapolated to yield a predicted resulting “ball in flight” performance of parameters: spin (degrees per second); launch angle (degrees); carry distance; roll distance (yards); total distance (yards); distance traveled off line (yards right or left); ball flight character (fade, draw, hook, slice, push, pull, straight); and PTI or power transfer index.


This processed information is reported to the golfer in a unique, synchronized, multi-format presentation of the swing motion that is available in real time and/or playback mode for optimal user and instructor assimilation.



FIG. 9 is a screen shot of the synchronized, composite display of the invention, incorporating three formats or forms of feedback. In a real time feedback or “biofeedback” mode, there is a live video feed of the golfer, typically a face on or side view, presented in the upper left portion of the display although it may be placed elsewhere in the display, in which the alignment lines are applied during a set up phase, are stationary and the motion with respect to the alignment lines is readily apparent.


A multi-color animation of the golfer, generated from the inertial sensor motion data, is presented in the upper right portion of the display, although it may be positioned elsewhere in the display. The animation may be color coded to distinguish major body segments, e.g. the shoulders segment versus the hips segment. The animation may be oriented to view the swing motion from any useful angle, depending on what aspect or component of the swing motion is being scrutinized at the time.


In the lower portion of the display a motion data time line graph traces hip, shoulder and hand motions in a multi-colored trace, although it may be positioned elsewhere in the display. The graph may present simply the component motion data from the instant swing motion, and demonstrate graphically the coordination between hips, shoulders and hand motion; or it may present a comparative trace of the present motion or component of motion compared to a prior motion or an expert motion in order to illustrate the degree of deviation and required improvement to achieve a desired performance level.


Referring to FIG. 10A, another example of the composite, multi-format, synchronized display is a screen shot of a composite display of the invention, incorporating the three formats of feedback of FIG. 9: a video record of the golfer this time in the lower left side portion of the display; a stepped frame animation of the club swing indicating the plane of the club swing and the hand orientation during a swing motion; and three motion data time line graphs showing the club speed in three axis.


The stepped frame animation is a useful device for illustrating the plane, path or arc of a motion or component of motion, and is a further enhancement of the presentation. Selected positions of a point or object or portion of the video screen are retained as the video progresses so as to show the path leading up to the present position. The stepped aspect of the presentation can be done as function of time, or of linear or angular displacement of the object or point of interest, whichever better serves to illustrate the path of motion best for the viewer.


Stated more generally, the multi-color, three dimensional animation representing the motion of at least one color-coded body segment created from motion data may include or be in some embodiments a stepped frame animation where selected positions of an object in motion are retained in subsequent frames of the animation such that a motion track of the object is apparent to a viewer. The retained positions may be programmed to be selected on the basis of time, position, speed, or acceleration of the object in motion.


The orientation on the screen of these multiple forms of simultaneous presentation may be varied. There may be additional information as well, space permitting. A composite presentation of video, animation, and motion data graphs enhances the user's ability to quickly assimilate and appreciate the subtle differences at the component level of the swing motion, between his current performance and the desired performance. A multi-dimensional presentation of the swing performance can be watched in real time, in an instant replay mode, or in a later review.


The system 70 also offers alternative and supplemental forms of presentation or “report” of the swing performance. Expanded graphs, for example, help clarify the timing of components of motion, as well as the amplitude. For example FIG. 10B is a line graph indicating posture with respect to trunk flex extension and trunk lateral bending versus time during a swing motion. FIG. 10C is a line graph indicating degree of pivot during a swing motion. FIG. 10D is a line graph indicating degrees of hip segment rotation, shoulder segment rotation, and torso load during a swing motion. FIG. 10E is a line graph indicating degrees of shoulder segment rotation, arm segment rotation, and upper body load during a swing motion. FIG. 10F is a line graph indicating alignment or coordination of hip segment rotation, shoulder segment rotation, arm segment rotation motions versus time during a swing motion. FIG. 10G is a line graph indicating hip segment rotation speed, shoulder segment rotation speed, and arm segment rotation speed during a swing motion.


The animation capability of the system, driven by the inertial sensor inputs, offers additional opportunities for presenting more detailed illustrations of the swing motion in real time or playback mode. For example, FIG. 11 is a screen shot of a multi-color animation illustrating the color distinction between the shoulder segment and the hips segment of the animation. This makes for easy and quick distinction between these components of the full swing motion. The numerical value of peak or range of rotation, flexion, and side bend are posted left and right of the animation for calibrating the user's perspective of the animation motion.


The animation capability provides yet a further training tool in the form of animated “cages” or scalable limits of selected parameters that cage the animated figure and illustrate the golfer's movement within the three dimensional frame. FIG. 12 is a screen shot of a multi-color animation illustrating the box or cage by which user settable parameters for lateral bending during swing motion are made apparent to the golfer for real time feedback. The processing computer 70 can create an instantly apparent change to the display, for example by turning the background orange for close calls and red for actual violation of the cage parameters during a swing motion.


Further examples of the power of motion data animation as part or all of the presentation or “report” part of the methodology follow. FIG. 13 is a screen shot of a multi-color animation illustrating the three dimensional grid or open frame by which user-settable parameters for flexing during the swing motion are made apparent to the golfer as real-time feedback. FIG. 14 is a screen shot of a multi-color animation illustrating the “box” by which user-settable parameters for rotation.


The animation capability of the system can also be used to present an enhanced version of the time line traces or graphs. FIG. 15 is a screen shot of a multi-color line graph illustrating the coordination in time and amplitude of the rotational velocities of the hips, shoulders, and hand of the golfer during the swing motion.


It should be noted that although FIGS. 11 through 15 are illustrated here as full screen shots; these and other animations of the motion data and settable parameters are within the scope of the invention and can be presented in the multi-format form of FIG. 9, with synchronized video and graphs.


It is a goal of the invention to provide an objective, consistent analysis of each performance. The methodology of the invention depends on capturing motion data, processing it into the described parameters relating to body segments and components of the motion, providing a quantitative analysis of each component of motion, and then summing the scores for each component of motion so as to produce a unitary number or “kinetic index” for the performance as a whole. One embodiment of a system 70 for golf swing motion analysis processes motion data against benchmark values to produce a value on a uniform index scale of 0-50 for each of the following primary performance parameters: sequence, speed, stability, mobility, transfer, timing, club performance, and club accuracy. These values are summed in a pre-determined order to arrive at a unitary number representing the kinetic index for the total performance on a scale of 0-100, as described further below.


Objectivity and repeatability of the system for motion analysis depends on a consistent process that examines and gives weighted consideration of all relevant aspects of the motion in calculating a final performance factor or kinetic index.


Referring now to FIG. 16, one aspect of the methodology of this embodiment is illustrated in an objective, repeatable, computer-automated reduction of the basic or primary performance parameters 1-8 measured by system 70 against pre-selected benchmark values, into a single kinetic index. The system uses a multi-step process that sums the primary parameters into secondary parameters 9-12, then into body performance factor 13 and club performance factor 14, and finally merges these values into kinetic index 15, a quantification of the overall performance value of the swing motion being analyzed.


The FIG. 16 performance parameters are explained below:


Primary Parameters:





    • 1. Sequence: This parameter relates to the degree of timing and coordination of the rotational velocities of hips, shoulders and arms during the swing motion. For example, at 120 frames per second, the target or benchmark standard sequence for a golf swing motion is assumed to have maximum hip rotation velocity occur at 36 frames before maximum shoulder rotation; which should occur at 24 frames ahead of maximum arm rotation; which should occur at 16 frames ahead of the club impact on the ball. The total deviation in frame count from the pre-established or assumed ideal sequence for all segments is inversely weighted against a total maximum score or ideal performance index for the sequence parameter of 50, yielding a relatively lower score for respectively larger deviations.

    • 2. Speed: This parameter relates to the maximum peak rotational velocity of each body segment. The benchmark is set at: 400 degrees/second for hip rotation; 800 degrees/second for shoulders rotation; 1600 degrees/second for arms rotation; and 3200 degrees/second for club rotation. The sum of the differences is weighted inversely against a maximum score of 50, yielding a relatively lower score for respectively larger differences.

    • 3. Stability: This parameter relates to the orientation of the hip segment and shoulder segment in relation to the spine. It is measured in degrees. The benchmark for hips, shoulders, and arms are all 0 (zero). Again, the sum of the differences is weighted inversely and scaled against a maximum index of 50.

    • 4. Mobility: This parameter relates to the relative range of angular rotation of hips, shoulders, arms around the spine. The benchmark is that they be equal. The sum of the differences are weighted inversely and scaled against a maximum index of 50.

    • 5. Transfer: This parameter relates to the sum of the ratio of angular momentum of the hips to the shoulders, and hence to the arms. The measured transfer ratio is scaled against a benchmark maximum ratio of 6 and equated to a maximum index of 50. For example, using benchmark values, if 400 degrees/second of hip rotation produces 800 degrees/second for shoulders rotation, that is a transfer ratio of 800/400-2.0. Then if 800 degrees/second shoulders rotation results in 1600 degrees/second for arms rotation, and 3200 degrees/second for club rotation, then those transfer ratios are also 2.0 and 2.0 respectively; the sum of which is 6.0. A lesser actual score is divided by 6 and multiplied by 50 to generate a base-50 index score.

    • 6. Timing: This parameter relates to the difference in time or coordination of maximum rotational velocities of hips, shoulders, and arms in time. The scoring is based on the delta or difference in timing in the manner described above, scaled against a maximum index of 50.

    • 7. Club Performance: This parameter relates to the linear acceleration of the club, added to peak angular release velocity. The benchmark is 300 mph (miles per hour) for linear acceleration and 400 degrees/second of angular velocity. The simple sum, 700, is equated to a maximum performance index of 50, and the measured value scored accordingly.

    • 8. Club Accuracy: This parameter relates to the three dimensional movement of the club on the ball and is graded on the velocity of the straight-on axis less the velocities in each of the orthogonal axis, in miles per hour. The total is compared to a benchmark and the result scaled to a maximum performance index of 50.





Second Order Parameters

The primary parameter scores 1-8 are reduced in a first step by a simple summing of related parameters as follows:


9. Sequence & Speed: the sum of the individual indexes of sequence 1 and speed 2 above, having a maximum index of 100.

    • 10. Stability & Mobility: the sum of parameters 3 and 4 as above.
    • 11. Transfer & Timing: the sum of parameters 5 and 6 as above.
    • 12. Club Power Accuracy: the sum of club performance 7 and club accuracy 8 indexes.


These second order parameters are further reduced to a body performance factor 13 and a club performance factor 14 as follows:

    • 13. Body Performance Factor: the sum of parameters 9, 10, and 11 divided by 3, having a maximum index of 100.
    • 14. Club Performance Factor: simply the club power accuracy 12 index brought forward.


The body and club performance factors 13 and 14 are summed and divided by 2 to yield the:

    • 15. Kinetic Efficiency Index: having a scale of 0 to maximum 100.


It will be appreciated that the pre-selected benchmark values of the individual parameters are somewhat arbitrary, selected to provide a performance challenge to the anticipated range of skills of a target pool of users. The use of other or alternative benchmark values and scoring formulas is within the scope of the invention. Also, the selection and ratio or weight giving to each performance parameter in the reduction process is somewhat arbitrary, the requirement being that each parameter is given a weight or degree of consideration recognized to be relevant to the overall performance.


The reduction process of primary performance parameters into a final kinetic index in the context of a golf swing analysis reflects the kinetic chain philosophy, that the performance value of the total motion is the sum of the performance value of the component parts of the motion executed in an optimal sequence, in order to transfer maximum energy and accuracy from feet to hips to shoulders to arms to the club and ultimately to the ball.


While this description of motion analysis and performance measurement has been cast in the context of a golf swing; the apparatus and methodology is equally applicable to other athletic motions involving, for example, running and kicking leg motions and swinging or chopping hand and arm motions.


Having evaluated individual performance parameters, which may also be referred to as “diagnostic” parameters, the system is able to compare the performance results to a catalog of exercises appropriate to the respective parameters and their test result, and provide an automated recommendation or prescription of exercises. The system may be further preprogrammed with the user's available training schedule and hence able to tailor the prescription to the training time available, with emphasis on the parameters most in need of improvement. In other words, referring back to FIG. 1, the invention extends the automated, objective, Report on performance to include a Prescription for improvement.


In this regard, performance parameters are also characterized as diagnostic parameters. In the golf swing context, they may relate to subsets, body segments or components of the motion including: feet, hip; and shoulder performance. For example, diagnostic parameters of CBL (center balance line) extension and flexion, and of CAL (center alignment line) left and right lateral bending, relate to feet performance. Exercises appropriate to CBL extension problems are scaled according to a pre-determined scheme to the severity or priority of the problem, on a scale of 0 (acceptable performance) to −20 degrees (significantly below acceptable performance). A rating of −5 degrees may generate a prescribed exercise called “posture stick”, using particular training tools; a relatively lower rating of −10 may call for the same exercise but with a different training tool; and so on. The “posture stick” exercise, for example, requires manipulation of a club in a prescribed manner while standing on a base platform, to acquire and practice attaining a stance with the correct alignment of the major joint centers of the body for creating an optimal muscle length tension relationship to enhance the body's postural equilibrium. Other exercises are similarly focused on particular body segments and components of the golf swing.


The initial selection of exercises and tools and the pre-determined scheme for allocation of particular exercises for improving particular performance parameters is somewhat arbitrary, but calculated to induce improvements in performance of components of motion and hence to the total motion performance if practiced as prescribed. The following table 1 lists one embodiment of diagnostic parameters and appropriate exercises by priority by which prescriptions would be issued by the system to a user.









TABLE 1







Diagnostic Parameters and Exercises


Relating to Components of Motion










Subject
Test/Measurement
Deviation
Prescribed Exercise/


Area
Parameter
(degrees)
Tool













Feet
Center Balance Line
0
No Drill










Posture
Extension




#1










−5
Posture Stick/K-Pillow &









club










−10
Posture Stick/Full Foam









Roller & club










−15
Posture Stick/Half Foam









Roller & club










−20
Posture Stick/Base









Platform & club











Center Balance
0
No Drill



Line Flexion




5
Posture Stick/K- Pillow









& club










10
Posture Stick/Full Foam









Roller & club










15
Posture Stick/Half Foam









Roller & club










20
Posture Stick/Base









Platform & club










Feet
Center Align.
0
No Drill










Posture
Line, Left Lat.




#2
Bend.










−2
Mini Drawbacks/Balance









Board & club










−5
Mini Swings/Balance









Board & club










−10
Mini Swings Level 2/









Balance Bd & club










−15
Mini Swings Level 1/









Balance Bd & club










−20
Mini Swings/Base









Platform & 5 Iron











Center Align. Line,
0
No Drill











Rt. Lat. Bend.












2
Mini Drawbacks/Balance









Board & club










5
Mini Swings/Balance









Board & club










10
Mini Swings Level 2/









Balance Bd & club










15
Mini Swings Level 1/









Balance Bd & club










20
Mini Swings/Base









Plaform & 5 iron










Hip
Rotation, Left
−20
No Drill




−25
Hockey Swings/Base









Platform & club










−30
Double Post Swing/Base









Platform & club










−35
Mini Swings/Full Foam









Roller & club










−40
Mini Swings/Half Foam









Roller & club











Rotation, Right
20
No Drill




25
Hockey Swings/Base









Platform & club










30
Double Post Swing/Base









Platform & club










35
Mini Swings/Full Foam









Roller & club










40
Mini Swings/Half Foam













Roller & club


Shoulders
Rotation, Left
(neg)0-10
No drill




(neg)15-20
Torso Twist/Base





Platform & Stability Ball




(neg)25-30
Torso Twist Counter &





Primary/Base Plat.




(neg)35-40
Torso Twist Blast/Base





Platform




(neg)45-50
Torso Twist Drawbacks/





Base Platform












Rotation, Right
0-10
deg
No drill




15-20
deg
Torso Twist/Base






Platform & Stability Ball




25-30
deg
Torso Twist Counter &






Primary/Base Plat.




35-40
deg
Torso Twist Blast/Base






Platform




45-50
deg
Torso Twist Drawbacks/






Base Platform


Hip
Linear Address
0-2
cm
Double Post Swings/club



to Max Backswing




3-5
cm
Bentley Swings/Base






Platform & club




6-8
cm
Hans Jumps/Impact Bag






& Base Platform



Linear Impact
0-2
cm
Double Post Swings/club



to Max Finish




3-5
cm
Bentley Swings/Base






Platform & club




6-8
cm
Hans Jumps/Impact Bag






& Base Platform










Hips
Static Posture
0
No drill











1-10
deg
Posture Stick/Base





Platform & club










Shoulders
Static Posture
0
No drill











1-10
deg
Posture Stick/Base





Platform & club










Explanations and detailed instructions for the user's prescribed exercises are available on the local system 70, or may be accessed directly or remotely via an internet access to a host enterprise (FIG. 2) with which the local system 70 is affiliated.


Referring to FIG. 1, steps of Test 100-Prescribe 500 require at least a local system 70, while the exercise step 600 is, of course, executed by the user until he or she is ready to retest. A change in performance in a given primary parameter may or may not change the final kinetic index, but it will result in a change in prescription to a next level of exercise applicable to that performance parameter.



FIG. 17 shows components of a motion instruction system 1700, according to an exemplary system embodiment. An exemplary system 1700 may comprise participant devices 1701. sensors 1702, observer devices 1703, an exercise database 1705, a participant database 1707, one or more servers 1709, and one or more networks 1711.


Participant devices 1701 may monitor and capture sensor data received from sensors 1702, and to communicate various types of data and instructions to and from devices of the system 1700, such as servers 1709 and observer devices 1703. A participant device 1701 may be any computing device comprising hardware and software components capable of performing the various tasks and processes described herein. Non-limiting examples of a participant device 1701 may include: laptop computers, desktop computers, smartphones, tablets, wearable devices (e.g., smart watches smart glasses, AR headsets, VR headsets, etc.), and the like.


A participant device 1701 may comprise a communications component configured to facilitate wired or wireless data communications between a set of one or more sensors 1702 and the participant device 1701. The communications component may comprise one or more circuits, such as processors and antennas, for communicating sensor data via a communications signal using an associated wired or wireless communications protocol. For example, the communications component of the participant device 1701 may include, for instance, a Bluetooth® or ZigBee® chip that may be configured to monitor and receive sensor data from the set of one or more sensors 1702 associated with the participant device 1701, via the requisite Bluetooth® or ZigBee® protocols. Other non-limiting examples of the communications component and associated protocols may include: a Network Interface Card (NIC) for LAN or Wi-Fi communications, a Near Field Communications (NFC) chip, and the like.


A participant device 1701 may comprise another communications component configured to communicate data and instructions with other devices of the system 1700, such as servers 1709 and observer devices 1703, over one or more networks 1711. For example, the communications component of the participant device 1701 may include, for instance, a wireless NIC allowing the participant device 1701 to communicate data and instructions with servers 1709 and/or observer devices 1703, over one or more networks 1711, using Wi-Fi, TCP/IP, and other, related protocols.


As mentioned, the communications component of a participant device 1701 may be configured to receive sensor data from a set of one or more sensors 1702 configured to capture motion and posture data of a participant, which may then be transmitted to the participant device 1701 as the sensor data. Sensors 1702 may include one or more types of sensors that may be configured to capture the motion and posture data of the participant. Non-limiting examples sensor types may include inertial or movement sensors having a gyroscope, an accelerometer and/or a magnetometer, heat sensors, image sensors (i.e., cameras) capturing still images and/or video images, optical body motion sensors, and the like. In some implementations, the sensors 1702 may be mixed-and-matched and the various types of sensor data may be synchronized, such that the participant device 1701 may receive, and, in some cases, process, the various types of sensor data. Portions of the sensor data may comprise performance parameters and/or diagnostic parameters. Parameters may correspond to fields of data models used by a computing device, such as servers 1709 or observer devices 1703, to model an expected motion or posture data for a particular motion or posture, category of activities, or exercises.


As an example, a factory employee instructional application executed by a participant device 1701 of a factory employee may be configured to teach the factory employee to perform a predetermined set of motions, and then monitor the employee's performance of the motions. While teaching the employee the predetermined motions, the participant device 1701 may receive sensor data from sensors 1701, and may then establish a baseline competency for the employee to perform the motions. This may be done using diagnostic parameters captured in the sensor data. The sensor data may then be transmitted to a server 1709 and/or an observer device 1703. A data library or database located on the participant device 1701, a server 1709, or an observer device 1703, may store data models for each of the predetermined motions. These data models may indicate which data fields or portions of the sensor data are part of the diagnostic parameters for each of the motions.


An observer device 1703 may be operated by an observer (e.g., coach, therapist, doctor, researcher, employer, instructor) and/or system administrator to monitor sensor data from, and communicate instructions with, any number of participant devices 1701a-c. Such monitoring and instructions can also be done autonomously through the use of a trained machine learning module (discussed in more detail below). The observer device 1703 may be any computing device comprising hardware and software components configured to perform the various tasks and processes described herein. Non-limiting examples of the observer device 1703 may include: a laptop computer, a desktop computer, a smartphone, and a tablet. The observer device 1703 may comprise communications components allowing the observer device 1703 to communicate with participant devices 1701a-c simultaneously or near-simultaneously, such that an observer operating the observer device 1703 may review sensor data received from and transmit instructions to, each of the participant devices 1701a-c.


A server 1709 may provide services for monitoring, storing, processing, and communicating sensor data and instructions between devices of the system 1700, such as participant devices 1701 and an observer device 1703. Such services may be cloud based. The server 1709 may be any computing device comprising hardware and software components configured to perform various tasks and processes described herein. Non-limiting examples of the server 1709 may include: a laptop computer, a desktop computer, a smartphone, and a tablet. The server 1709 may comprise communications components configured to allow the server 1709 to communicate with participant devices 1701a-c and/or the observer device 1703 simultaneously or near-simultaneously. For example, the server 1709 may receive sensor data from a plurality of participant devices 1701a-c, and may then covert the sensor data into a file format viewable, sometimes in real-time, from the observer device 1703 (and/or participant devices 1701a-c). As such, an observer device 1703 may access the server 1709 to review or receive real-time sensor data from the server 1709 while the server 1709 receives a data stream of sensor data from the participant devices 1701a-c.


A system 1700 may comprise one or more servers configured to host one or more databases, such as an exercise database 1705 and a participant database 1707. The servers hosting the databases may be any computing devices comprising a processor and non-transitory machine-readable storage media allowing the databases to perform the various tasks and processes described herein. In some embodiments, the databases may be hosted on the same device or on distinct devices. In addition, in some embodiments, a database may be hosted on a computing device that may be used for other purposes. For instance, an exercise database 1705 may be hosted on a server 1709, an observer device 1703, or a participant device 1701, while a participant database 1707 may be hosted on a server 1709.


An exercise database 1705 may store a plurality of exercise records containing data fields associated with exercises. The data fields of a particular exercise may include indicators of the activity categories (e.g., motions, postures, actions) that may benefit from the exercise. The exercise record may include a data model that models the sensor data inputs and parameters that may be used to measure how well the participant is performing the exercise.


A participant database 1707 may store a plurality of participant records containing data field associated with participants. The data fields of a particular participant may include data about the participant, such as vital information about the participant (e.g., name, participant identifier, height, weight), a history of sensor data and parameters, threshold values determined for the participant, and the like.


In some implementations, an observer device 1703 and/or a server 1709 may be configured to automatically generate a set of exercises for participants based the sensor data received from the participant devices 1701a-c. For example, the set of exercises may be based on diagnostic and/or performance parameters of the sensor data. Additionally or alternatively, the software application executed by the observer device 1703 and/or the server 1709 may generate a user interface allowing the observer to input parameter values and/or the set of exercise. For example, for implementations where the system 1700 automatically generates a set of exercises, the diagnostic parameters may be identified in the sensor data and then applied to a data model for a particular motion, or other activity category, to determine a participant's initial skill level, or diagnostic score, for a targeted motion. Based on a diagnostic score calculated for the activity category using the data model, the server 1709 and/or observer device 1703 may identify a set of exercises in an exercise database 1705 determined to be appropriate for the participant's capabilities for the activity category. The set of exercises may be updated and revised as the participant improves a diagnostic score that was calculated for a particular activity category, which may correspond to a particular motion, posture, collection of muscles, or other movement skill (e.g., throwing a baseball, swinging a golf club, a predetermined labor-related motion). The targeted motion may be defined by a data model comprising a set of parameters for motions or postures captured in the sensor data of particular motions or postures; an activity category may be used to identify exercises or other data points and data structures associated with improving upon the targeted motion. For example, the targeted motion and activity category may be associated with improving a runner's stride. In this example, diagnostic and/or performance parameters for this activity category may capture sensor data for aspects of a runner's stride (e.g., upright posture, length of leg extension, arm swing), and the exercises for this activity category may include exercises for improving upon speed and posture (e.g., squats, wall sits, leg extensions, sprints).


The observer device 1703 or server 1709 may generate a regime file, after selecting the set of exercises for an exercise regime to improve a participant's diagnostic score for an activity category or to improve a participant's performance for a given exercise. The regime file may contain data that may be used by an application executed by a participant device 1701 to identify the selected exercises, display the appropriate exercises on the user interface of the participant device 1701, and to capture and send the appropriate sensor data from the sensors 1702. The server 1709 or observer device 1703 may utilize data from the exercise, participant, and/or motion databases to generate each exercise in the regime file. For example, the server may query the exercise database from the latest performed range of motion exercise performed by a given participant and use this information to generate exercises in the regime file with appropriate ranges.


It should be appreciated that the regime file may be one or more machine-readable data files of nearly any file type that may be used as a binary or library of the application. Non-limiting examples of the regime file may include: a database file or database records (e.g., SQL code), a text document, an XML file, an HTML file, an executable file (.exe), a code script (e.g., python, java, C, C++, perl), and the like. The application may be configured to receive and read the data fields of the regime file, which may instruct the participant device 1701 to generate user interfaces displaying still images or multimedia examples of particular postures, motions, or exercises. In some cases, the application may have a set of APIs that correspond to the inputs and outputs of the regime file, allowing the regime file to pass data and instructions to the application. The regime file may contain data associated with the selected exercises; the server or observer device 1703 may query the exercise database 1705 to extract the data of the regime file from the data fields of the exercise records. In some implementations, the regime file may be transmitted directly from the observer device 1703 to participant devices 1701, using a communications protocol and application (e.g., email, FTP, communication protocol native to exercise application). In some implementations, a server 1709 may store a regime file in a participant database 1707 or other storage location, accessible to participant devices 1701 and an observer device 1703.


A system and method for analyzing and improving the performance of an athletic motion such as a golf swing may require: instrumenting a user with sensors (e.g., inertial or movement sensors) and optionally with video cameras, time of flight cameras, or radar-based systems capable of capturing 2D or 3D scene information at regular time intervals; monitoring a golf swing or other motion (athletic or otherwise) of interest; drawing upon and contributing to a vast library of performance data for analysis of the test results; scoring the motion; providing an information rich, graphic display of the results in multiple formats including video, color coded and stepped frame animations from motion data, and synchronized data/time graphs; and based on the results prescribing a user-specific training regime with exercises selected from a library of exercises. As discussed above. scoring the motion may involve scoring pre-defined parameters relating to component parts of the motion and combining the parameter scores to yield a single, kinetic index score for the motion.


Auto Capture

One or more embodiments of the invention may include an auto capture system in which data capture from the sensors (e.g., inertial sensors having a gyroscope, an accelerometer and/or a magnetometer, heat sensors, image sensors (e.g., cameras) capturing still images and/or video images, optical body motion sensors, and/or the like) is triggered by a specific input (e.g., a motion or gesture).


In such embodiments, streaming data may be processed in real time, or near real time, and when a specific input (e.g., gesture) is recognized (e.g., a golf swing), a time window of sensor data is automatically recorded. The time window being taken from a predetermined time period around the moment in time in which the specific input was recognized (e.g., when the gesture occurred). For example, the predetermined time period may include 2 seconds before the moment in time when the specific input was recognized and 3 seconds after the moment in time when the specific input was recognized.


Exemplary embodiments of the auto capture system are illustrated in FIGS. 18A and 18B.


According to the embodiment illustrated in FIG. 18A, gesture recognition for an auto capture system may be performed by a processor of the participant device 1701 and/or observer device 1703 or server 1709 (participant device 1701, observer device 1703, and server 1709 are collectively referred to herein as the “CPU”). Here, sensor data is continuously wirelessly streamed from the sensors 1702 to a transceiver 1715 of the CPU 1720. The sensor data is transmitted to the CPU transceiver regardless of whether any motion gesture (e.g., golf swing, baseball bat swing, etc.) has occurred. The transmitted sensor data may be buffered in a data buffer of the CPU. Upon recognition of the motion gesture, the CPU extracts from the data buffer sensor data in which is a predetermined time window around the moment in which the gesture took place, including before the gesture was recognized. The extracted sensor data is then processed by the CPU to generate a set of exercises for participants based on the sensor data received from the participant device 1701.


Alternatively, as shown in the embodiment illustrated in FIG. 18 (b), gesture recognition for an auto capture system may be performed with an algorithm and processing being performed in the sensors 1702 themselves, as opposed to the CPU. Wirelessly transmitting sensor data from the sensors to the CPU transceiver requires significant power consumption that monotonically scales (i.e., increases) with greater transmission distance. Thus, it may be advantageous (e.g., with regard to power consumption and CPU processor efficiency) to perform gesture recognition locally on the sensor, and only transmit data to the CPU when a motion gesture is recognized. The transmitted data may include only sensor data in a predetermined time window around the moment in which the gesture took place, including before the gesture was recognized. This can be achieved in one embodiment through the use of a local data buffer 1725 in the sensors.


The local data buffers 1725 may exist in one or more of the sensors. The sensors may be considered separate from each other or be ganged or networked together in some relationship configuration. For example, sensor data may be transmitted from one or more sensors to a local data buffer existing in another sensor. The aggregate sensor data from the sensors may then be transmitted from that local data buffer 1725 to the CPU transceiver.


For example, as shown in FIG. 18B, an exemplary sensor 1702 itself may comprise a sensor 1727 (e.g., inertial sensor), a local processor 1729, a local data buffer 1725, and a transceiver 1731. The sensor data is initially buffered in the local data buffer 1725. Alternatively, one or more sensors may include more or less components. Upon recognition by the local processor of a motion gesture, the local processor extracts from the local data buffer sensor data in a predetermined time window around the moment in which the gesture took place, including before the gesture was recognized. Only the extracted buffer sensor data is wireless transmitted to a transceiver of the CPU. Thus, in this embodiment, the algorithm and processing for motion gesture is performed in the sensor as opposed to the CPU. The transmitted sensor data include only sensor data in a predetermined time window around the moment in which the gesture took place, which is advantageous in that it decreases wireless sensor data transmission and corresponding power thereby improving efficiency.


For example, in a golf scenario, an impact that occurs when a golfer strikes a golf ball may result in a particular signature of at least one of acceleration data, body segment orientation data, and rotational velocity data. This impact can be measured by a handset sensor, wrist sensor, and/or a club mounted sensor. The signature may be used by the system to automatically identify a particular motion gesture (e.g., golf swing). Then, as discussed above, a predetermined time window of the sensor data may be analyzed by the system.


Similarly, in a baseball scenario, an impact that occurs when a batter strikes a baseball may result in a particular signature of at least one of acceleration data, body segment orientation data, and rotational velocity data. This impact can be measured by a handset sensor, wrist sensor, and/or a club mounted sensor. The signature may be used by the system to automatically identify a particular motion gesture (e.g., baseball bat swing). Then, as discussed above, a predetermined time window of the sensor data may be analyzed by the system.


Autonomous Training

An alternative embodiment of an autonomous training system for a motion instruction system 1900 is illustrated in FIGS. 19A and 19B, wherein the regime file (e.g., list of recommended exercises) is customizable for individual participants based on data in a participant database. A separate description of the portions of the system having the same structure and function as those of the previous embodiment are omitted for purposes of convenience to the reader, and the differences from the previous embodiment are herein described.


The customizable regime files may be of particular use with (although not limited to) large groups of participants wherein each participant is at a different level of proficiency. The customizable regime files allow all participants to be together but some to work completely alone (without coaching or training) while others receive coaching; and where all of the participants receive unique versions of the same program based on the individual participant profiles.


As previously described with regard to the embodiment illustrated in FIG. 17, the motion instruction system 1900 may comprise participant devices 1901, sensors 1902, observer devices 1903, one or more databases, one or more servers 1909, and one or more networks 1911. As illustrated in FIG. 19A, the one or more databases may include an exercise database 1905, a participant database 1907, an observer database 1913, a motion database 1915. A separate description of the portions of the system 1900 having the same structure and function as those of the previous embodiments are omitted for purposes of convenience to the reader, and the differences from the previous embodiment are herein described.



FIG. 19B illustrates various data fields that may be associated with the exercise database 1905, participant database 1907, observer database 1913, and motion database 1915, which may be collectively used to generate the regime file. In alternative embodiments, additional or different data may be used to generate the regime file.


The participant database 1907 may store user or participant related information. The information stored therein may consist of data fields such as Participant ID, Participant Name, Participant Height, Participant Weight, etc.


The observer database 1913 may store observer (e.g., coach, trainer, etc.) related information. The information stored therein may consist of data fields such as Observer ID, Observer Name, Associated Participants (e.g., participants associated with the observer, such as a class of 50 trainees), Generated Regime Files, etc.


The exercise database 1905 may store exercise related information. For purposes herein, it is understood that “exercise” may include a training exercise (e.g., bend at address) as well as movements such as a golf swing (previously referred to herein as an Activity Category). Each exercise may include one or more component motions. The information stored therein may consist of data fields such as Exercise ID, Exercise Name, Scoring Function, Attribute Tags, Tolerance Variables, etc.


The motion database 1915 may store captured motion data for an exercise. The information stored therein may consist of data fields such as Sensor Data (e.g., inertial, video, etc.), Outcome Data (e.g., launch monitor, etc.), Participant ID, Exercise ID, a Timestamp, etc.


In a non-limiting example, such as shown in FIG. 19A, when an Exercise ID (e.g., ID for golf swing) and Participant ID are input, an observer device 1903 and/or server 1909 utilizes data from the exercise database 1905, participant database 1907, observer database 1913, and motion database 1915 to generate a regime file customized to the participant. The regime file may be generated autonomously using a content-based filtering approach, which leverages a machine learning model trained on data associated with a participant matching the Participant ID input (discussed in more detail below). Alternatively, the regime file may be generated autonomously using a collaborative filtering approach, which leverages a machine learning model trained on data associated with all participants. Alternatively, the regime file may be generated with a hybrid approach of both content-based filtering and collaborative filtering. Thus, the observer device 1903 and/or a server 1909 may be configured to automatically generate a set of exercises for participants based on diagnostic and/or performance parameters of the sensor data received from the participant devices 1901.


In a non-limiting example, generating the regime file using the content-based filtering approach may involve having a library or exercise database 1905 of N different training exercises for which an exercise vector of length N can be initialized and updated as follows:


Initialization: For a new user, initialize the exercise vector to the zero vector. For example, for a library of 5 exercises consisting of “Rotation at Impact”, “Bend at Address”, “Rotation at Impact”, “Hip Twister”, and “Duck Walks”, the exercise vector would be initialized to [0, 0, 0, 0, 0].


Update Algorithm:





    • Step 1. After a specific interval of time after a user performs one or more training exercises, calculate an output score (SAFTER) based on all swings taken since the training exercises were performed. For example, this score could be the average carry distance of a golf ball for all swings taken within 12 hours since the last of the training exercises was performed.

    • Step 2. Calculate an output score (SBEFORE) based on all swings taken within a specific interval of time before the user performed the training exercises. For example, this score could be the average carry distance of a golf ball for all swings taken within 12 hours before the first of the training exercises was performed.

    • Step 3. Calculate the change in output scores as: AS=SAFTER−SBEFORE.

    • Step 4. For each of the exercises that were performed in this iteration, add the change in output scores to the corresponding element of the exercise vector.





Exercise Recommendation Algorithm: For each user, the exercise vector provides a means of ranking training exercises based on how much they improve the output score of interest. For example, an exercise recommendation algorithm could be to recommend M exercises with the highest values in the exercise vector, where M<=N. However, this approach may be prone to converge on a local optimum as soon as M exercises achieve values greater than 0 in the exercise vector. Another exercise recommendation algorithm could be to recommend M+L exercises (where M+L<=N), consisting of M exercises with the highest values in the exercise vector and L exercises chosen at random from the remaining N-M exercises. The invention is of course not limited to these two exemplary content-based filtering exercise recommendation algorithms


In a non-limiting example, the collaborative filtering approach for generating the regime file may involve implementing a collaborative filtering algorithm by extending the content-based filtering approach described above. In order to do this, for example, an augmented exercise vector of length N may be defined. The elements of a user's augmented exercise vector corresponding to exercises that have been performed at least once by the user are assigned the same values as the corresponding elements in the user's exercise vector. The elements of a user's augmented exercise vector corresponding to exercises that have never been performed before by the user are assigned the same values as the corresponding elements in the exercise vector of the user in the participant database who is most similar to the user of interest. Similarity between two users can be determined by the inner product of their normalized exercise vectors (higher values indicate greater similarity). With the foregoing technique, an exercise recommendation algorithm could be that for each user, recommend M+L exercises (where M+L<=N), consisting of M exercises with the highest values in the augmented exercise vector and L exercises chosen at random from the remaining N-M exercises. The invention is of course not limited to the foregoing collaborative filtering exercise recommendation algorithm.


Dynamic Motion Scoring and Training

According to another embodiment of the invention, the motion instruction system 1900 may operate in a dynamic biofeedback mode. In this mode, the processing computer performs a dynamic motion scoring process and trains a dynamic motion as opposed to one or more static postures. A separate description of the portions of the system having the same structure and function as those of the previous embodiment are omitted for purposes of convenience to the reader, and the differences from the previous embodiment are herein described.


In the dynamic biofeedback mode, the motion instruction system 1900 may compare biomechanical parameters computed for a captured motion (discussed above) to a previously generated motion template stored in a database. The motion instruction system 1900 may then compute a similarity score. For example, a similarity score of 0 may be used to represent a perfect similarity match (i.e., the derived biomechanical parameters are identical to the motion template), and a similarity score of positive values (e.g., 1-100) may be used to represent degree of mismatch. The similarity score may then be displayed on the participant device 1701, or another display or recipient device that is configured to convey feedback to the user.



FIG. 20 is a block diagram of an exemplary process for computing a motion similarity score. As shown, the motion instruction system 1900 computes a motion similarity score based on a comparison of biomechanical parameters computed for a captured motion (discussed above) to a motion template stored in a database. The motion template may have been generated from a single captured motion (e.g., best golf swing), multiple captured motions (e.g., top 5 best golf swings), or manually synthesized.


Based on the similarity score, the motion instruction system 1900 can then generate an auditory, visual, and/or haptic biofeedback signal. The biofeedback signals may be different depending on the similarity score. For example, the similarity score may range from 0 to 100, with zero being ideal and 100 representing a high divergence from the ideal. In this example, a red light might follow an exercise in which a derived biomechanical parameter badly diverged from ideal (e.g., score of 50-100), a yellow light might follow an exercise in which a derived biomechanical parameter only somewhat diverged from ideal (10-49), and a green light might follow an exercise in which a derived biomechanical parameter is ideal or diverged from ideal by less than the pre-assigned margin of error (0-9). The signal light may be the background color of an animation or avatar displayed on the participant device 1901 and/or observer device 1903, or another display or recipient device that is configured to convey feedback to the user. Similar differences in biofeedback signals could be done using audio or haptic signals.


Furthermore, unlike static posture training, where only differences in posture are considered, the dynamic biofeedback similarity score may also capture differences in timing.


An exemplary algorithm for generating a similarity score is described below:

    • STEP 1: Create a motion template T in the form of an M×N matrix, where each of M rows represents a motion parameter time series of length N. For example, the motion template may include timestamps or time samples that are evenly spaced in time based on a sampling rate (e.g., 200 Hz so that the samples are 5 ms apart). Alternatively, the motion template may include time spacing that is unequal in order to capture key moments in a movement, such as address, top, and impact of a golf swing. The motion parameters may include but are not limited to 3D orientation data (yaw, pitch, roll); raw 3-axis sensor data (accelerometerx, accelerometery, accelerometerz, gyroscopex, gyroscopey, gyroscopez, magnetometerx, magnetometery, magnetometerz) from one or more inertial sensors; sensor data from other sensors such as heat sensors, image sensors (i.e., cameras) capturing still images and/or video images, optical body motion sensors, and the like; as well as subsequently derived biomechanical parameters. The biomechanical parameters may include, for example, one or more of: ‘Shoulder Flexion’, ‘Hip Flexion’, ‘Hand Flexion’, ‘Upper Arm Flexion’, ‘Shoulder Tilt’, ‘Hip Tilt’, ‘Hand Tilt’, ‘Upper Arm Tilt’, ‘Shoulder Alignment’, ‘Hip Alignment’, ‘Hand Alignment’, ‘Upper Arm Alignment’, ‘Shoulder Rotation’, ‘Hip Rotation’, ‘Hand Rotation’, ‘Upper Arm Rotation’, ‘Pelvis Rotation’, ‘Torso Rotation’, ‘Shoulder Lateral Bend’, ‘Hip Lateral Bend’, ‘Hand Lateral Bend’, ‘Upper Arm Lateral Bend’, ‘Shoulder Pitch’, ‘Hip Pitch’, ‘Hand Pitch’, ‘Upper Arm Pitch’, ‘Shoulder Angle’, ‘Hip Angle’, ‘Hand Angle’, ‘Upper Arm Angle’, ‘Shoulder Direction’, ‘Hip Direction’, ‘Hand Direction’, ‘Upper Arm Direction’, ‘Torso Rotational Velocity’, ‘Pelvis Rotational Velocity’, ‘Hand Rotational Velocity’, ‘Upper Arm Rotational Velocity’, ‘Spine Angle’, ‘Pelvis Angle’, ‘Wrist Angle’, ‘Spine Direction’, ‘Pelvis Direction’, ‘Wrist Direction’, ‘Upper Body Bend’, ‘Upper Body Side Bend’, ‘Pelvis Bend’, ‘Pelvis Side Bend’.
    • STEP 2: Build an M×K matrix S from a captured motion consisting of K samples, where K≥N, such that each of M rows represents the same motion parameters as in the motion template matrix T.
    • STEP 3: Align S to T using cross-correlation and truncate non-overlapping columns as follows:
    • i. Select a motion parameter row to use for alignment (e.g. torso sensor yaw).
    • ii. Calculate the lag t between Ti,* and Si,* as:






τ
=



arg

max

n




(


T

i
,
*






S

i
,
*



)

[
n
]








    • iii. If 0≤τ≤K−N, truncate the first t columns and last (K−N−τ) columns of S to yield M×N matrix










S
^

=


[




S

0
,
τ








S

0
,

τ
+
N
-
1



















S

M
,
τ








S

M
,

τ
+
N
-
1






]

.





Else, if τ<0 or τ>K−N, stop here and raise an error indicating that the captured motion does not contain data matching the entire template.

    • STEP 4: Compute the overall similarity score as a weighted sum of normalized root mean square error (NRMSE) values between corresponding rows of Ŝ and T:







Similarity


Score

=




i
=
0

M




w
i

*





T

i
,
*


-


S
^


i
,
*








T

i
,
*











where each value wi is a scalar weight applied to the NRMSE for row i.


According to one or more of the foregoing embodiments, the biofeedback mode of the motion instruction system 1900 allows a user to “train to his or her best motion.” According to a non-limiting example, such training may be accomplished by:

    • (1) storing motion data for one or more captured motions for an exercise in a motion database 1915;
    • (2) computing and assigning a score for each captured motion. Such scoring can be assigned manually through user-tagging, or, as discussed above, computed automatically through a scoring algorithm based on a comparison of biomechanical parameters computed for a captured motion to a motion template stored in a database;
    • (3) computing the user's “best motion” based on a comparison of the captured motion data and assigned scores; and
    • (4) generating a corresponding set of static postures and/or motion templates for use in biofeedback training exercises.


According to one or more of the foregoing embodiments, the motion instruction system 1900 may generate comprehensive user health, fitness, and skill scores based on many component diagnostic scores. Although some prior embodiments describe “activity categories,” it is understood that such activity categories may relate to exercises, which can include training exercises (e.g. bend at address) and specific motions (e.g. golf swing) and “diagnostic scores,” and the concept of “scoring functions” can be assigned to each exercise. The outputs of these scoring functions may be used to represent performance on specific training exercises, quality of specific motions, and even things like range of motion for particular body segments. Furthermore, group health, fitness, and skill scores can be generated for groups of users (e.g. teams or organizations) based on the individual user health, fitness, and skill scores of their members. This may be beneficial for group competitions where one group of users competes against another group of users, such as in a group training class.


According to one or more of the foregoing embodiments, the motion instruction system 1900 may be configured to continually monitor user compliance with a training regime. For example, in the factory worker example discussed above, user compliance with an exercise regime (e.g., assigned exercise score is above a predetermined threshold), or lack thereof (e.g., assigned exercise score is below a predetermined threshold, or the assigned exercise is not being performed), may be transmitted to an observer (via text message, e-mail message, alert on web portal, etc.). Preferably, such alert is transmitted to the coach or observer in real time so that the exercise regime may be revised or changed accordingly.


For example, such continual monitoring may be performed so that employers can ensure that their employees are complying with a particular training regime while in the workplace. Pre-determined movements of employees may be measured as they perform their regular day-to-day work tasks, such as, for example, lifting or walking. Such continual monitoring can be important to prevent injuries for employees performing repetitive tasks, such as those in hospitality (e.g., making beds), in a warehouse (e.g., lifting, pick and place movements), etc. Using the captured motion data, the motion instruction system 1900 assigns an exercise score for a particular exercise or movement being performed. When the exercise score is below a predetermined threshold or the assigned exercise or movement is not being performed, then the motion instruction system 1900 may transmit an alert to an observer (via text message, e-mail message, alert on web portal, etc.) to inform the employer that the employee is moving incorrectly (which puts them at risk of injury). Preferably, such alert is transmitted to the observer (employer) in real time so that the exercise regime may be revised or changed accordingly. Additionally, when the exercise score is below a predetermined threshold or the assigned exercise or movement is not being performed, then the motion instruction system 1900 may transmit an alert to the participant device so that the employee may have an opportunity to self-correct. If the employee fails to self-correct (i.e., the exercise score remains below the predetermined threshold), then the motion instruction system 1900 may send an alert to the participant device 1901 (as well as the observer device 1903) ordering the employee to stop and then guide the user through a protocol to activate muscles and remind them of the correct movement pattern via instructions (graphical, video, and/or textual) displayed on the participant device 1901 and/or the observer device 1903, or another display or recipient device configured to convey feedback to the employee.


According to an embodiment of the invention, the system 1900 may be configured to provide real-time alerts to a user, such as a coach/observer, to prevent injury. For example, a coach, organization, or general user (such as a participant) can set a custom alert trigger based on sensor data for a specific user or group of users. For example, a coach may set a trigger such that whenever a player with a back injury risk exceeds 60 degrees of forward bend of the torso, an alert is sent to him or her in the form of an email, text message, phone call, etc.


According to an embodiment of the invention, the system 1900 may be configured to provide real-time athlete monitoring for group training. In this embodiment, a group of users repeatedly train the same biofeedback exercise or perform swing motions at the same time. The motion data for each user is captured locally and immediately sent to the cloud, where it is processed to determine how well each user is performing each biofeedback exercise or swing motion. This data is then used to render a web dashboard to be viewed on an observer device 1903 by a coach. The rendering represents each user as a simple tile, which turns red if the user if performing poorly and green if the user is performing well (not limited to any particular color or look). This allows the coach to identify users in the group that are struggling or excelling during a live training session.


According to one or more of the foregoing embodiments, motion instruction system 1900 may be configured so that during exercise routines, real-time feedback or analysis may be provided to the user based on sensed data, including image data, about the user. In this manner, the system 1900 may function as a “virtual coach” to the user to help make exercising more interactive and help achieve results and goals of the user faster. In other words, such real time feedback may be based on any of a number of data inputs, such as personal data of the user, real-time exercise parameters of a current exercise session, and/or archived exercise parameters of past exercise sessions. The feedback may be transmitted from an observer device 1903 and/or server 1909 to the participant device 1901, or another display or recipient device that is configured to convey feedback to the user.


The virtual coach feature may operate by automatically generating useful tips and exercise lessons based on motion data from the sensors. For example, with a sport such as golf, such virtual coach feedback may be based on motion data from inertial sensors, club and ball data from a launch monitor apparatus (e.g., club speed, ball speed, launch angle, spin, and azimuth), and virtual course data from a golf simulator (e.g., ball position, course difficulty, weather conditions, terrain, etc.). These tips and lessons can be communicated to the user in real-time through text, audio, vibration, an animated coach avatar in the golf simulator, or any combination thereof. The same concept can be altered for other sports and activities, such as baseball, tennis, exercising, etc. Moreover, this concept may be extended to all forms of motion monitoring.


Training Motion Scoring Models with Supervised Machine Learning Algorithms


According to one or more of the foregoing embodiments, the system 1900 may apply machine learning techniques to learn relationships, functions, and categories associated with various analysis procedures, which may include modeling or scoring a particular motion gesture (e.g., golf swing) or exercise based on the sensor data. A supervised machine learning algorithm offers flexibility as it trains motion scoring models based on data, such as data contained in exercise database 1905, participant database 1907, observer database 1913, a motion database 1915, and/or subsets thereof.


An exemplary embodiment of a machine learning technique that may be used with one or more embodiments of the motion instruction system 1900 described herein is illustrated in FIGS. 21A and 21B and FIGS. 22A and 22B, and described below.


The machine learning algorithm may generally be configured to train two model categories: classification and regression. The classification model may output discrete class categories, e.g., classifying an input motion as “expert”, “novice”, or “beginner”. The classification model may include, but is limited to, logistic regression, decision trees, decision forests, support vector machines, naïve bayes, k-nearest neighbors, and convolutional neural networks. The regression model may output continuous values, e.g., assigning a numerical score to an input motion. The regression model may include, but is not limited to, linear regression, polynomial regression, k-nearest neighbors, and convolutional neural networks. Trained classification and regression models can then be used to score input motions.


As shown in exemplary FIG. 21A, the motion scoring model training may use a traditional machine learning algorithm that leverages a hand-engineered feature extraction technique. The hand-engineered feature may include, but is not limited to, summary statistics, such as maximum rotational velocities, maximum accelerations, maximum body angles, average rotational velocities, average accelerations, average body angles, minimum rotational velocities, minimum accelerations, minimum body angles, etc. With such an approach, motion data training templates or examples with corresponding training labels (e.g., ground truth class labels for each training example when training a classification model, or ground truth numerical labels for each training example when training a regression model) are employed.


Alternatively, as shown in exemplary FIG. 21B, the motion scoring model training may use a deep learning framework. Unlike with the traditional machine learning algorithm such as shown in FIG. 21A, the deep learning framework does not leverage a hand-engineered feature extraction technique. With the deep learning framework, however, motion data training templates or examples with corresponding training labels (e.g. ground truth class labels for each training example when training a classification model, or ground truth numerical labels for each training example when training a regression model) are employed.



FIGS. 22A and 22B are block diagrams of exemplary scoring motion data inputs using trained classification or regression models. More particularly, FIG. 22A illustrates an exemplary technique for scoring motion data inputs using a traditional machine learning approach which leverages hand-engineered feature extraction (such as shown in FIG. 21A). FIG. 22B illustrates an exemplary technique for scoring motion data inputs using a deep learning framework (such as shown in FIG. 22B). It is understood that for trained classification models, the output may be a class category, whereas for trained regression models, the output may be a numerical score (e.g., 0-100).


In one or more of the foregoing embodiments, the motion instruction system 1900 may be used for training a user (e.g., golfer) in a set of exercises based on continuously captured data (e.g., capture or auto capture motion data, measure the data, assess the data, coach the user, and prescribe training regime). The training may be based on pre-captured data (e.g., load and train a prebuilt program). The training may be for on a single motion parameter, or for more than one motion parameter. The user and or observer (coach) may select which motion parameter to target and/or which body segment to be trained.


In one or more of the foregoing embodiments, the motion instruction system 1900 may be used to train a user based on captured data. For example, instrumenting a user with sensors (e.g., inertial or movement sensors) and optionally with video cameras, time of flight cameras, or radar-based systems capable of capturing 2D or 3D scene information at regular time intervals; monitoring a golf swing or other motion (athletic or otherwise) of interest; capturing or auto capturing motion data of interest; drawing upon and contributing to a library of performance data for analysis of the test results; scoring the motion; providing an information rich, graphic display of the results in multiple formats including video, color coded and stepped frame animations from motion data, and synchronized data/time graphs; and based on the results prescribing a user-specific training regime. As discussed above, the system 1900 may apply machine learning techniques to learn relationships, functions, and categories associated with various analysis procedures, which may include modeling or scoring a particular motion gesture (e.g., golf swing) or exercise based on the sensor data.


In one or more of the foregoing embodiments, a user may train to his or her best swing (or any swing, any shot, or any ball flight) using captured or auto captured motion data. For example, a golfer may swing the club ten times and then select one of those swings (e.g., their best swing or a swing based on their desired body/ball performance) as a model swing. The motion instruction system can then automatically develop and prescribe a user-specific training regime based on the model swing. In this manner, a user-specific training regime can be prescribed for any motion that a user desires to repeat (e.g., their best swing). Thus, a dynamic training program can be generated for the selected swing so that a user can be coached and trained to perform the exact captured movement with video, audio, and/or haptic cues according to one or more of the above described embodiments.


In one or more of the foregoing embodiments, a user may be instrumented with a wrist sensor 2300 (e.g., inertial sensor) that is attached or worn on his or her wrist, such as shown in exemplary FIG. 23. The wrist sensor 2300 may be used independently of, or in conjunction with, the other body mountable sensors discussed herein. The wrist sensor 2300 may be used to capture motion data of interest relating to wrist movement, such as inertial and magnetic measurements and wrist flexion or radial/ulnar deviation. The wrist sensor 2300 may be a wrist-wearable type or a glove type sensor. For example, the wrist sensor 2300 may include one or more multi-axis accelerometers (e.g., three, six, and nine axis inertial sensors) which can capture the movements of each joint of the palm and fingers. A wrist gesture recognition may be performed with an algorithm and processing being performed in the wrist sensor 2300 itself or by a processor of the observer device 1703 and/or server 1709. The wrist sensor 2300 may be used with other instrumented sensors in order to more fully capture a motion of the arm or other body segments. For example, with respect to golf, the wrist sensor 2300 may be used in conjunction with club and ball data obtained from a launch monitor apparatus (e.g., club speed, ball speed, launch angle, spin, and azimuth). In this manner, for example, by linking wrist movement to the ball movement through wrist angles and ball launch monitors, the primary influencers of club face control are better understood and can be more accurately and dynamically coached and trained according to one or more of the above described embodiments. Moreover, this allows the user to be better connected to the ball movement and understand why how the user's swing directly affects launch parameters and ball flight.


According to an embodiment of the invention, performance indicators and real-time feedback or analysis may be provided to the user based on the wrist sensor motion data and/or wrist sensor motion data in conjunction with club and ball data obtained from the launch monitor apparatus. The feedback may be transmitted from the observer device 1903 and/or server 1909 to a user interface presented in the participant device 1901, or another display or recipient device that is configured to convey feedback to the user.


For example, the server 1909 (or observer device 1903) may be configured to generate different graphical user interfaces and display them on different computing devices described herein. As previously discussed, the server 1909 hosting the databases may comprise a processor and non-transitory machine-readable storage media comprising a set of instructions allowing the various databases to perform various tasks and processes described herein, such as to display various graphical user interfaces. Each instruction within the set of instructions may command and cause a different module of the server 1909 or processors to display a particular section or container of the graphical user interfaces described below. For example, a first instruction may instruct (e.g., command or cause) a first module of the server 1909 to query pertinent data from the exercise database 1905, participant database 1907, observer database 1913, or motion database 1915 and display a first section of a graphical user interface; and a second instruction may instruct a second module of the server 1909 to query pertinent data from a different database and display a second section of the graphical user interface. Although described herein as separate modules, it is intended that these modules can be configured as at least one module. Moreover, the server 1909 may be a database server comprising a processor capable of performing the various tasks and processes described herein. Non-limiting examples may include a server, desktop, laptop, tablet, and the like. The server 1709 may host an online service, such as cloud-computing application service, or any other service that provide web-based applications that collect data through we-based client interactions over one or more networks such as network 1911. Accordingly, the server 1909 may generate and display different graphical user interfaces on different computing devices described herein.


According to another embodiment, for example, the one or more servers 1909 include an analytics engine that further includes a data extraction module and data processing module. The analytics engine can be a software component stored on a computer readable medium and executed by a processor, e.g., as specially-programmed software on a server (referred to and used interchangeably as an analytics engine server). The analytics engine can be configured to receive user input from one or more participant devices 1901 and/or one or more observer devices 1903, receive data from a database (e.g., exercise database 1905, participant database 1907, observer database 1913, motion database 1915, etc.), produce solution data from the received user input and data, and provide the produced solution data to one or more participant devices 1901 and/or one or more observer devices 1903. Thus, for example, a user may request a report, such as an Evaluation Report, regarding the status of a particular training program, and the analytics engine may generate and present the report on different computing devices described herein.


In some embodiments, the analytics engine is implemented as a set of computer instructions executed by one or more servers 1909 that run computer executable program instructions or related algorithms.



FIGS. 24 and 25 are screenshots of exemplary graphical user interfaces generated by the server 1909 in real time during monitoring of wrist movement using one or more sensors including a wrist sensor 2300, such as describe above. The illustrated graphical interface (GUI) may be presented on one or more participant devices 1901 (e.g., computer, table computer, smart phone, or the like) and/or one or more observer devices 1903. The user interfaces may display a range of information and content and are not limited to the information and content shown in the exemplary embodiments.


Referring to FIG. 24, the screenshot 2400 shows wrist movement for an exercise during a live training session. In other words, the wrist movement shown by the animated FIG. 2401 is processed and displayed by the server 1909 (in accordance with one or more of the embodiments discussed above) in real-time during a swinging motion. Here, three biofeedback exercises are shown, which are programmed with desired ranges of wrist flexion and radial/ulnar deviation at three key points in a golf swing: Address 2405, Top 2410, and Impact 2415. The amount of time that a user must achieve wrist flexion and radial/ulnar deviation within the specified range of a given biofeedback exercise to count as a single repetition (rep) is programmable. So it is possible to set this rep time to something like 1 second for static biofeedback training of the individual swing points. When a rep of the first biofeedback exercise in the list is completed, a ding sound is played to provide audio feedback, and the next biofeedback exercise will be loaded automatically. It is also possible to set rep time to 0 seconds for dynamic biofeedback training. In this case, a user can simply perform a golf swing at regular speed. If the wrist flexion and radial/ulnar deviation is within range at each point in the swing (Address, Top, Impact) according to the three biofeedback exercises, then three ding sounds will be played and the first biofeedback exercise will become active. If, on the other hand, the user is within range for the first two biofeedback exercises, but not the third, then only two ding sounds will be played, and the third biofeedback exercise will remain active.


The multi-color animation of the animated FIG. 2401 and/or area surrounding the animated FIG. 2401 may provide for real time biofeedback to the user. For example, a red light might follow a swing in which a diagnostic parameter badly diverged from ideal and a blue light might follow a swing in which the same diagnostic parameter diverged from ideal by less than the pre-assigned margin of error. The signal light may be the background color of the animated figure or in a surrounding animation. Alternatively, segments of the avatar 2401 may change color depending on whether the selected motion is within range (e.g., red color for out of range and green color for within range). The biofeedback may likewise be presented in other audio, textual, numerical and/or graphical formats, including numbers, bar graphs, line graphs and text messages. The animation capability of the system 1900, driven by the sensor inputs, offers additional opportunities for presenting more detailed illustrations of the swing motion in real time or playback mode.



FIG. 25 is an exemplary screenshot of a graphical user interface 2500 generated by the server 1909 based on integration with a launch ball monitor apparatus, which illustrates the various angles and movement of the golf club and golf ball for each swing exercise. It is understood that the launch ball monitor apparatus can be integrated or integral with the system 1900.



FIG. 26 shows an exemplary scatterplot 2600 generated by the server 1909 that is a two-dimensional data visualization of Launch Angle (degrees) 2605 along the x-axis and Wrist Radial/Ulnar deviation (degrees) 2610 along the y-axis for the participant's last 15 swings. As discussed above, the Wrist Radial/Ulnar deviation is determined by the CPU based on sensor data from the wrist sensor 2300 and the Launch Angle is obtained from the launch ball monitor apparatus connected to the system 1900. The server 1909 retrieves the Launch Angle and Wrist Radial/Ulnar deviation data stored in one or more databases, correlates the data, and generates the scatterplot 2600 to be displayed on a display screen of the observer device 1901 and/or participant device 1903 according to one or more of the foregoing embodiments.


In one or more of the foregoing embodiments, the motion instruction system may be configured to provide/prescribe the user with an exercise or workout of the day that is based in part on the user's prior performance of various motions as assessed by the system based on diagnostic parameters from the sensor data. Such prescription can also be done autonomously through the use of a trained machine learning module or manually by an observer/coach based on the sensor data. The information may be delivered to the user via a user interface presented in the participant device 1901, or another display or recipient device that is configured to convey feedback to the user.


It is understood, for example, that the observer/coach may prescribe a workout of the day to one or more users (unlimited number of users). The prescribed workout (e.g., regime file) may be pushed to each user's participant device or provided on a website accessible by a web browser. The prescribed workout may be identical for each user, or individually customized to each user based on performance data associated with each user. In other words, each user may be prescribed the same exercise at the same time (e.g., squats for a one minute time period); however, the prescribed workout for each of the users may be customized based on performance data associated with that particular user (e.g., advanced user may be prescribed 15 squats in the one minute time period, while a novice user may be prescribed 10 squats—in this way all users in the workout are performing the same exercise at the same time).


The workout may be generated in conjunction with an auto capture system; an autonomous training system; a dynamic motion scoring and training system; and/or a training motion scoring models with machine learning algorithms system, such as described herein, as well as biofeedback. Motion data may be transmitted to the observer/coach in real time or at the conclusion of the prescribed workout so that that the trainer/coach can provide feedback or additional coaching to the user. Furthermore, performance data from one or more users can be used to generate a leaderboard, points, competitions, etc. in conjunction with the prescribed workout of the day. The system may further include a database of observers/coaches such that the user may select an observer/coach from the database based on the user's preference (e.g., gender, age, intensity of workouts, music playlists, personality, etc.). The foregoing embodiments are advantageous in that they provide for a cloud-based student monitoring platform with biofeedback learning loop embedded software for analyzing and improving the performance of an athletic motion such as a golf swing. The cloud-based student monitoring program shows the observer/coach every repetition of every player's training.


As discussed, the motion instruction system 1900 links a coach to one or more users of the system. The system 1900 is configured to automatically generate a training program based on user data (personal, biometrics, motion data, etc.) and transmit the training program to a user interface. The user can then follow the training program on site or remotely, and motion data for the prescribed exercises are sent to the coach or observer in real-time. The system 1900 provides the coach or observer with every repetition of every user's training.



FIG. 27 illustrates an embodiment of a process flow for a cloud-based motion instruction system (e.g., “K-Cloud”) in accordance with the foregoing embodiments. According to the embodiment, the cloud-based system 2700 may include one or more participant devices 1901, one or more observer devices 1903, and a server 1909 (participant device 1901, observer device 1903, and server 1909 are collectively referred to herein as the “CPU”). As discussed above, sensor data is continuously wirelessly streamed from the sensors to a transceiver of the CPU. The sensor data may be transmitted to the CPU transceiver regardless of whether any motion gesture (e.g., golf club swing, baseball bat swing, etc.) has occurred. The transmitted sensor data may be buffered in a data buffer of the CPU. Upon recognition of the motion gesture, the CPU may extract from the data buffer sensor data in which is a predetermined time window around the moment in which the gesture took place, including before the gesture was recognized. The extracted sensor data may then be processed by the CPU to generate a set of exercises for participants based on the sensor data received from the participant device 1901.


Accordingly, the system 2700 may be configured to perform: 1) a local capture process 2710 in which the CPU captures motion data, such as described above (e.g., captured motion data from wearable inertial sensors 1702a-c, a wrist sensor 2300, a launch monitor, video camera, radar system, etc.); and 2) cloud-processing techniques 2720 in which the captured motion data is received, analyzed, and processed by the CPU to generate one or more exercises for the participant to perform based on the sensor data, such as described above. Based on the cloud-processing techniques 2720, the CPU can generate, among other things: (a) an evaluation report 2730 based on the captured motion data to provide an objective record of the type and degree of changes in performance that the user has experienced; (b) a training program 2740 for the selected movement (e.g., swing) so that a user can be coached and trained to perform the exact captured movement with video, audio, and/or haptic cues according to one or more of the above described embodiments; and (c) personalized content marketing to deliver content or messages to the user based on the motion data and/or information provided by the user. Additionally, the cloud-based system 2700 may process information provided by the user to target advertising to users in real-time or at the conclusion of a prescribed workout across any platforms. Such advertising can be targeted based on personal data, performance characteristics, or any other data gathered by the system 2700.


In various exemplary embodiments the user (e.g., participant, observer/coach) can use a graphical user interface generated by the CPU and displayed on the participant device 1903 and/or the observer device 1901 to view and/or select a range of different information on the display. The graphical user interface can provide a wide range of control and informational windows that can be accessed by a click, touch, or gesture. Such windows may provide information about the user's own performance and/or the performance of other participants in the same who are performing the same or different activity-both past and present.


The graphical user interface may be used to access user information, login and logout of the system 2700, as well as access live training instruction and archived content. Such user information may be displayed in a variety of formats and may include past and present performance and account information, social networking links, achievements, etc. The user interface may also be used to access the system to update user profile information, manage account settings, and control participant device 1903, observer device 1901, and/or server 1909 settings.


Referring to FIG. 28, a graphical user interface generated by the CPU may be displayed on the display screen of the observer device 1901 and/or participant device 1903. In this example, the graphical user interface displayed is a Client Manager screen 2800 that is directed to a coach/observer for monitoring a participant. The Client Manager screen 2800 may include an indicator 2801 that identifies the participant being monitored. Here, the name is shown as “K DEFAULT CLIENT;” however, a participant's name, such as Jane Doe, would preferably appear. The client manager screen 2800 may be used to toggle between different activity modes being monitored by the system 2700, such as golf, baseball, physical therapy, lead wrist, etc. Here, the indicator “K GOLF” 2803 at the top of the screen indicates that golf is the current motion activity being analyzed by the system 2700 so it is operating in a golf mode. The bottom tab shows sensor information (may be located anywhere on the screen). An indicator, such as a green light, denotes sensor connection with the system, e.g., a Bluetooth connection. As shown, a torso sensor 2805 (a), a pelvis sensor 2805 (b), an upper arm sensor 2805 (c), and a hand sensor 2805 (d) are connected to the system 2700 (reflected by the green indicator light); however a camera 2805 (e) and a launch monitor 2805 (f) are not connected (no indicator light). It is understood that the invention is not limited to the sensors and peripheral monitoring devices shown in FIG. 28. There may be more or less sensors, or different sensors and/or peripheral monitoring devices, such as, for example, a wrist sensor 2300, a club or bat mounted sensor, etc. The number and type of sensors and/or other peripheral monitoring devices that are used may be based on the activity mode and/or motion being detected and analyzed.



FIG. 29 is a screenshot of an exemplary graphical user interface generated by the CPU for an Equipment Manager screen 2900 that may be displayed on the display screen of the observer device 1901 and/or participant device 1903. The Equipment Manager screen 2900 allows the user to easily manage/control the various sensors and peripheral monitoring devices that are configured to interact with the system 2700. For example, looking at FIG. 28, at the top of the Equipment Manager screen 2900, various sensor icons are displayed, labeled, and numbered. Specifically, a first sensor icon 2905 (a) is labeled “torso” and assigned number 1 (torso sensor), a second sensor icon 2905 (b) is labeled “pelvis” and assigned number 2 (pelvis sensor), a third sensor icon 2905 (d) is labeled “hand” and assigned number 3 (hand sensor), and a fourth sensor icon 2905 (c) is labeled “upper arm” and assigned number 4 (upper arm sensor). The Equipment Manager screen 2900 includes connection indicators (e.g., green color indicating connection, no color or red color indicating no connection) for each of the four sensor icons to indicate whether or not the sensor is connected to the system 2700. Here, it is readily apparent that all four sensors are connected to the system 2700—as indicated by the respective bar symbols in green and the numbers 1-4 located on the respective sensor icons in green. The connection indicators are not limited to those shown in FIG. 29. Additionally, as shown, the graphical user interface may include a box that identifies how many of the sensors are connected to the system 2910 (“4 Sensor Connections Verified”).


The graphical user interface generated for the Equipment Manager screen 2900 may further include a “(RE)-DETECT SENSORS” button 2910 that the user can press or touch to direct the system 2700 to reestablish a connection to the sensors in the event that any of the sensors are not connected to the system 2700.


The graphical user interface generated for the Equipment Manager screen 2900 may further include a “Usage Tracking Level” button 2915 that may be toggled by the user to allow the system 2700 to continually track the amount of usage of the various sensors connected thereto. As shown, the user has the option to turn off the tracking so that such sensor usage is anonymous and not tracked by the system 2700.


The graphical user interface generated for the Equipment Manager 2900 screen may further include a section for monitoring and detecting peripheral monitoring device, such as a launch monitor manager 2920 and a camera manager 2925. Similar to the “(RE)-DETECT SENSORS” button 2910 described above, the screen may include a “FIND MONITOR” button that the user can press or touch to direct the system 2700 to establish (or reestablish) a connection to with a launch monitor device. Here, the launch monitor is not connected to the system 2700.



FIGS. 30-32 are screenshots of an exemplary graphical user interface generated by the CPU for a Client Manager 3000 that may be displayed on the display screen of the observer device 1901 and/or participant device 1903. The Client Manager 3000 is a central hub or portal that allows a user to manage a participant or client. For purposes of this disclosure, it is understood that participant and client are used interchangeably. The Client Manager 3000 allows the user to perform a variety of tasks, including, for example, create clients (e.g., profiles), load clients, load graphs, load reports, load animations, create training programs, train shots, view activities, compare motions to other motions stored in database, etc.


Referring to FIG. 30, this screenshot shows a list of UI elements (e.g., clickable or pressable buttons) labeled with client names 3005 (“brian 27, BRIAN 29, . . . . Brian Baseball08 . . . ”) and a list of UI elements labeled with client programs 3010 (“GOLDMAN, MICHAEL'S PROGRAM, POSTURE . . . SWING SUMMARY DRILLS”) that the user or coach may select by pressing or clicking on the respective UI element. The Client Manager 3000 is configured to allow a single coach to easily create and load profiles for several different clients on the same computer. The user may also view a client's training history from this screen. Referring to FIG. 31, among other information, this screenshot shows a list of past swing motions 3105 captured for a selected client. As shown, each of the past swing motions may be provided as a UI element labeled with the date and time that the respective swing motion was captured that the user or coach may select by pressing or clicking on the respective UI element in order to obtain more information about the selected swing motion. Referring to FIG. 32, among other information, this screenshot shows a window 3205 with information related to a selected past training session for the selected client. As shown, each of the types of information that can be generated by the CPU related to the captured swing, including, for example, an Efficiency Report, Swing Summary, Performance Graphs, Animation Playback, Improve Swing-DVT, Video Playback (if applicable), etc., may be provided as a UI element labeled with the name of the information type to be generated that the user or coach may select by pressing or clicking on the respective UI element in order for the CPU to generate the selected information. In this example, the Default Client's golf swing motion that was captured on May 3, 2018 at 9:37:57 AM is selected and UI elements for the various types of information that may be generated by the CPU upon further user instruction are displayed. Additionally, the Client Manager 3000 may be configured to enable a user to instruct the CPU to automatically create a linked biofeedback exercise with ranges at key swing points (e.g. Address, Top of Backswing, or Impact) based on the ranges recorded for the selected motion (e.g., golf swing). For example, as shown, the graphical user interface may include a UI element called TRAIN SHOT 3210, which the user may press or click to have the CPU automatically create a linked biofeedback exercise program for the client to perform. As previously discussed, the linked biofeedback exercise program may be transmitted to one or more participant device to be viewed and accessed by the client. The Client Manager is advantageous in that it provides users with a single hub from which they can quickly launch into training or revisit past swings.


As discussed above, the system 2700 may be configured to continually monitor participant compliance or progress with a training regime and transmit information related thereto to a user, such as a coach/observer (or the participant them self), in real time. This may be done via a web portal, a mobile app, or other electronic means. FIGS. 33-36 are screenshots of an exemplary OS mobile app that displays a participant's training progress, the mobile app having a graphical user interface generated by the CPU based on cloud-processing techniques 2720 described above. The mobile app may be accessed by a coach/observer or the participant at any time to monitor the participant's progress.


In this exemplary embodiment, FIG. 33 shows an Activity screen 3300 that is available by pressing a UI element labeled Activity 3305, which is a tab located on the display. The Activity screen 3300 displays a list of UI elements consisting of any Training Programs 3310 (regimes) trained by a participant during a given time period (e.g., week or year). Each Training Program 3310 may be identified by a name and a date performed. As shown in FIG. 34, by pressing on an individual Training Program 3310 button, the list will expand it to show all component Training Activities 3405 that belong to that program (left) and number of completed reps/assigned reps (right). With this interface configuration, the user can quickly determine that the participant may need additional training with the horizontal chop wide base FMT movement since the participant successfully completed 0 out of 20 reps of that movement. FIG. 35 shows a Charts screen 3500 that is available by pressing a UI element labeled Charts 3505, which is a tab located on the display. The Charts screen 3500 may show the number of reps (for all activities) completed per day. The Charts screen 3500 may also show the total number of reps completed over a given time period (here the number is 221). In this example, the time period can be toggled by the user to either one week or one month (not limited thereto). The user may swipe left or right on the display screen to view data from different time periods, such as the prior or next week or month. FIG. 36 shows a Calendar screen 3600 that is available by pressing a UI element labeled Calendar 3605, which is a tab located on the display. The Calendar screen 3600 may show a calendar view of training. The days in which training occurred may be visually distinguishable from days in which no training occurred. Here, for example, the days in which training occurred are highlighted in green. The user may swipe left or right on the display screen to view data from different time periods, such as the prior or next week or month. In this example, the user may view data from April 2018 by swiping left on the display screen and data from June 2018 by swiping right on the display screen.



FIGS. 37-50 illustrate an embodiment of an Evaluation Report 2730 for a golf activity that is generated by the CPU in accordance with the foregoing embodiments upon the completion of a set of one or more golf swings. The Evaluation Report 2730 may be stored locally and/or in the cloud, and presented on a display of the observer device 1901 and/or participant device 1903. The Evaluation Report 2730 may be generated automatically by the CPU, or generated upon user command. As described in more detail below, the processed information is reported in a unique, synchronized, multi-format presentation of the motion data. To generate the Evaluation Report 2730, for example, the CPU can comprise a plurality of independent cores, such as a multicore processor comprising a computing component with two or more independent processing units, which are the units that read and execute program instructions, such as via multiprocessing or multithreading. The instructions are processing instructions, such as add, move data, or branch, but the cores can run multiple instructions concurrently, thereby increasing an overall operational speed for the software application, which is amenable to parallel computing. The cores can process in parallel when concurrently accessing a file or any other data structure, as disclosed herein, while being compliant with atomicity, consistency, isolation, and durability (ACID) principles, which ensure that such data structure operations/transactions, such as read, write, erase, or others, are processed reliably, such as for data security or data integrity. For example, a data structure can be accessed, such as read or written, via at least two cores concurrently, where each of the cores concurrently processes a distinct data structure record or a distinct set of data such that at least two data structure records or at least two sets of the data are processed concurrently, without locking the data structure between such cores. However, note that data locking is possible. Note that there can be at least two cores, such as two cores, three cores, four cores, six cores, eight cores, ten cores, twelve cores, or more. The cores may or may not share caches, and the cores may or may not implement message passing or shared-memory inter-core communication methods. Common network topologies to interconnect cores include bus, ring, two-dimensional mesh, and crossbar. Homogeneous multi-core systems include only identical cores, heterogeneous multi-core systems can have cores that are not identical. The cores in multi-core systems may implement architectures, such as very long instruction word (VLIW), superscalar, vector, or multithreading. In some embodiments, whether additionally or alternatively, in whole or in part, at least one of the server 1909, participant device 1901, or observer device 1903 can comprise a plurality of independent cores, such as a multicore processor comprising a computing component with two or more independent processing units, which are the units that read and execute program instructions, such as via multiprocessing or multithreading, as disclosed herein. Such configurations may enable parallel processing of relevant information, as disclosed herein, thereby efficiently increase system computational speed.



FIG. 37 is an embodiment of an Overview page 3700 that may be generated by the CPU as part of the Evaluation Report 2730. The Overview page 3700 may include a variety of general information, including the participant's name and age, and the date that the report was created. The Overview page 3700 may further include a Speed Creation Score 3705, a Consistency Score 3710, a Visualization 3715, a Comments field 3720, and/or a Next Steps field 3725 (not limited thereto). The Speed Creation Score 3705, the Consistency Score 3710, and the Visualization 3715 may be automatically generated by the CPU in accordance with one or more of the foregoing embodiments.


The Speed Creation Score 3705 is a measurement of how well the participant can create club speed with his or her body relative to a database of thousands (or more) male and female golfers of all ages. Because club speed is generated from the ground up, greater weight may be applied to the speed of body segments that are closer to the club (pelvis<torso<upper arm<lower arm<hand). In this example, the Speed Creation Score 3710 is 68.


The Consistency Score 3710 is a measurement of how consistent the participant's golf swing is in terms of both body angles and timing relative to a database of thousands (or more) male and female golfers of all ages. The body angles component measures variability of pelvis and torso angles at address, top, and impact, while the timing component measures variability of backswing and downswing times. The overall body angles component and timing component may be weighted equally by the CPU. In this example, the Consistency Score is 74.


The Visualization 3715 shows how the participant's score ranks against the range of scores for other players in his or her peer group (e.g., same gender and age group). The Text Field 3720 is a text field where a user (e.g., coach) can enter his or her comments on the Evaluation results. The Next Steps Field 3725 is a text field where a user (e.g., coach) may enter recommended next exercises for the participant to perform based on the evaluation results. The comments entered into the Text Field 3720 and/or Next Steps Field 3725 may be processed by the CPU and stored in one or more databases of the system 2700.


As shown in FIG. 38, the Overview 3700 report may include a menu tab 3805 that provides a drop down navigation menu that allows the user to easily navigate to different pages or reports in the Evaluation Report 2730 with a single click or touch. As shown in FIG. 39, the Overview 3700 report may include a past evaluations tab 3905 that provides a drop down menu that lists past Evaluations that have been captured for the current participant. Clicking or pressing on any of the items in the drop down menu will update the Evaluation Report 2730 accordingly. As shown in FIG. 40, the Overview 3700 report may include a Download Reports button 4005 that the user may click or press to have the CPU download the entire Evaluation Report 2730 in a single document, such as PDF format, for easy sharing. As shown in FIG. 41, the Overview 3700 report may include a club tab 4105 that the user may click or press in order to have the report generated with respect to a particular club used by the participant. For example, this Evaluation Report 2730 capture consists of five shots with a 6 Iron and five shots with a Driver. By default, data for the Driver is shown. However, by clicking or pressing on the club tab 4110, the user may update the Evaluation Report 2730 to show data for the 6 Iron.



FIG. 42 is an embodiment of a Swing Characteristics 4200 report that may be generated by the CPU as part of the Evaluation Report 2730. The CPU automatically computes the severity of specific swing characteristics for each swing in an evaluation capture, and presents them on the display in accordance with one or more of the foregoing embodiments. In this example, the swing characteristics include “S-Posture” and “C-Posture” during an Address point of the swing; “spin (backswing),” “reverse spine,” and “flat shoulders” during a Top portion of the swing; and “spin (downswing)” during an Impact portion of the swing. For each swing characteristic, the CPU automatically computes whether the movement was within a predetermined range, and then assigns each movement as “None” if the movement is determined to be within the predetermined range (no further training necessary), “Minor” if the movement is determined to be outside of the predetermined range but within an acceptable tolerance (may require further training); and “Major” if the movement is determined to be outside of an acceptable threshold of the predetermined range (requires further training and/or training modification).



FIG. 43 is an embodiment of a Consistency 4300 report that may be generated by the CPU as part of the Evaluation Report 2730. Here, for example, the CPU may automatically compute the standard deviation of measured 3D body angles at key swing points (Address, Top, Impact) across all Evaluation swings and present the resultant information on the display as shown in accordance with one or more of the foregoing embodiments.



FIG. 44 is an embodiment of a Position Averages 4400 report that may be generated by the CPU as part of the Evaluation Report 2730. Here, for example, the CPU may automatically compute the averages of measured 3D body angles at key swing points (Address, Top, Impact) across all Evaluation swings and corresponding ranges for Pro players and present the resultant information on the display as shown in accordance with one or more of the foregoing embodiments.



FIG. 45 is an embodiment of a Driver-Address 4500 report that may be generated by the CPU as part of the Evaluation Report 2730. Here, for example, the CPU may automatically generate a 1D plot of measured 3D body angles at single key swing point (Address) for each captured Evaluation swing (center), corresponding Pro range (left), and Peer range (right), and present them on the display as shown in accordance with one or more of the foregoing embodiments.



FIG. 46 is an embodiment of a Driver-Top 4600 report that may be generated by the CPU as part of the Evaluation Report 2730. Here, for example, the CPU may generate a 1D plot of measured 3D body angles at single key swing point (Top) for each captured Evaluation swing (center), corresponding Pro range (left), and Peer range (right), and present them on the display as shown in accordance with one or more of the foregoing embodiments.



FIG. 47 is an embodiment of a Driver-Impact 4700 report that may be generated by the CPU as part of the Evaluation Report 2730. Here, for example, the CPU may generate a 1D plot of measured 3D body angles at single key swing point (Impact) for each captured Evaluation swing (center), corresponding Pro range (left), and Peer range (right), and present them on the display as shown in accordance with one or more of the foregoing embodiments.



FIG. 48 is an embodiment of a Driver-Speed 4800 report that may be generated by the CPU as part of the Evaluation Report 2730. Here, for example, the CPU may compute average peak speeds (degrees/second) for various body segments (e.g., pelvis, upper body, lower arm, hand, etc.) across all Evaluation swings (shown in blue) and corresponding Pro range (shown in orange) and present them on the display as shown (top of FIG. 48) in accordance with one or more of the foregoing embodiments. Furthermore, the CPU may compute average peak speeds for each body segment for Pro (left), participant (middle), and Peers (right), as well as the participant's peak speeds for each body segment for each individual Evaluation swing (middle), and present them on the display as shown (bottom of FIG. 48) in accordance with one or more of the foregoing embodiments.



FIG. 49 is an embodiment of a Driver-Sequence & Timing 4900 report that may be generated by the CPU as part of the Evaluation Report 2730. Here, for example, the CPU may compute the participant's transition sequence, which is the order in which body segments start rotating forward, for each Individual swing, and present them on the display as shown (top of FIG. 49) in accordance with one or more of the foregoing embodiments. Furthermore, the CPU may compute the participant's peak speed sequence, which is the order in which body segments reach their peak rotational velocity, for each individual Evaluation swing, and present them on the display as shown (top of FIG. 49) in accordance with one or more of the foregoing embodiments.



FIG. 50 is an embodiment of a Tempo 5000 report that may be generated by the CPU as part of the Evaluation Report 2730. Tempo is a measure of a participant's backswing and downswing times as a ratio (not to be confused with swing speed, which is a measure of how fast the club is moving at a particular point in the swing). Here, for example, for each swing the CPU may compute the participant's backswing time (Time Back) and downswing time (Time Forward), and then determine the participant's tempo as a ratio between Time Back and Time Forward. As shown, the CPU may present the data Average swing timing for Pro (left), player (middle), and Peers (now shown), as well as the participant's peak speeds for each body segment for each individual Evaluation swing (middle), on the display as shown in accordance with one or more of the foregoing embodiments.



FIGS. 51-55 illustrate an embodiment of an Evaluation Report 2730 for a baseball activity (swing) that is generated by the CPU in accordance with the foregoing embodiments upon the completion of a swing. As discussed above, the Evaluation Report 2730 may be stored locally and/or in the cloud, and presented on a display of the observer device 1901 and/or participant device 1903. The Evaluation Report 2730 may be generated automatically by the CPU, or generated upon user command. As described in more detail below, the processed information is reported in a unique, synchronized, multi-format presentation of the motion data.



FIG. 51 is an embodiment of an Report Summary 5100 that may be generated by the CPU as part of the Evaluation Report 2730. As shown, the Report Summary 5100 may include presentations of various motion data analyzed by the CPU in accordance with one or more of the foregoing embodiments, including as shown “Peak Speeds.” “Speed Gain,” “Sequence,” and “Timing” (not limited thereto).


For example, the CPU may compute average Peak Speeds 5105 (degrees/second) for various body segments of interest (e.g., pelvis, torso, upper arm, hand, etc.) across all Evaluation swings (shown as a black dot) and a corresponding range for professional baseball players (shown in green) from related data stored in a database of professional baseball player data and present them on the display as shown in accordance with one or more of the foregoing embodiments. In other words, the CPU compares the participant's body segment speed against that of an average body segment speed for professional baseball players and presents the comparison on the display. The CPU may be configured to generate and present an automatically generated comment 5110 based on a determined relationship between the participant's speed segments versus that of the professional baseball players. Here, because all of the participant's measured peak speeds are within the range of the professional baseball players, the CPU is programmed to present an auto-generated comment 5110(a) that reads “Your peak speeds are all within Pro Range” (not limited thereto). However, in the event that all of the participant's measured average peak speeds falls below the range of professional baseball players, the CPU is programmed to present an auto-generated comment that reads, “Your peak speeds are below Pro Range”. If one or more, but not all, of the participant's measured average peak speeds fall within the range of the professional baseball players, the CPU is programmed to present an auto-generated comment that reads, “Your peak speeds are partially within Pro Range.”


An exemplary algorithm for generating an auto-generated comment 5110 is described below:














   If PeakSpeedPelvis >= ProRangePeakSpeedPelvisMin Then NumSegmentsInProRange += 1


  If PeakSpeedTorso >= ProRangePeakSpeedTorsoMin Then NumSegmentsInProRange += 1


  If NumSegmentsUsed = 4 Then


   If PeakSpeedUpperArm >= ProRangePeakSpeedUpperArmMin Then


NumSegmentsInProRange += 1


  End If


  If PeakSpeedHand >= ProRangePeakSpeedHandMin Then NumSegmentsInProRange += 1


  If NumSegmentsInProRange = NumSegmentsUsed Then


   Return “Your peak speeds are all within Pro Range”


  ElseIf NumSegmentsInProRange >= 1 Then


   Return “Your peak speeds are partially within Pro Range”


  Else


   Return “Your peak speeds are below Pro Range”


  End If


 End Function









For example, the CPU may compute Speed Gain 5115 across all Evaluation swings (shown as a black dot) and a corresponding range for professional baseball players (shown in green) from related data stored in the database of professional baseball player data and present the comparison on the display as shown in accordance with one or more of the foregoing embodiments. Speed gain is the ratio between the peak speeds of adjacent segments, such as the torso/pelvis peak speed ratio. As discussed above, the CPU may generate and present an automatically generated comment 5110 based on a determined relationship between the participant's speed gain versus that of the professional baseball players. Here, because the participant's speed gain (1.38) falls below that of the range of the professional baseball players, the CPU is programmed to present an auto-generated comment 5110(b) that reads “Your torso is slightly low resulting in a speed gain below Pro Average” (not limited thereto).


For example, the CPU may compute Sequence 5120 across all Evaluation swings. Sequence is the order in which the participant's body parts reached peak speed. Here, the respective body parts are displayed as different color drawings representative of each body part (not limited thereto) for each recognition by the user. In this example, the order in which the participant's body parts reached peak speed was pelvis then upper arm then torso then hand. The professional baseball player sequence is displayed in the order pelvis then torso then upper arm then hand, which the CPU determines from related data stored in the database of professional baseball player data. Thus, the CPU compared the participant's sequence with that of the average professional baseball player and determined that the participant's order was not consistent with that of the professional baseball player because the participant's torso speed peaked too late. Here, because the participant's torso speed peaked too late as compared with the average professional baseball player, the CPU is programmed to present an auto-generated comment 5110(c) that reads “In your swing, the torso peaked too late” (not limited thereto).


For example, the CPU may compute Timing 5125 across all Evaluation swings. Timing is the calculated time between when the heel contacts the ground and the bat contacts the ball. The CPU automatically calculates this time for each swing based on the captured motion sensor data from at least the hand sensor and the pelvis and torso sensors. Timing is typically measured in seconds. Here, the participant's measured time to contact is 0.225 seconds, which is much faster than that of the average professional baseball player which measures 0.284 seconds. Although not shown, like above, the CPU may be programmed to automatically generate and present a comment related to timing.


It is understood that the CPU may generate the Report Summary 5100 without comparison to a professional baseball players or as compared to a different category of players, such as a peer group.



FIG. 52 is an embodiment of a Heel Strike 5200 report that may be generated by the CPU as part of the Evaluation Report 2730. Heel strike is a key marker in a baseball swing. As shown, the Heel Strike 5200 report may include presentations of various motion data computed by the CPU in accordance with body angles for the heel strike position in a baseball swing. For example, the tic mark 5205 on the circle 5210 for each body metric (rotation, bend, side bend) of each body segment (pelvis, torso) represents the angle of the body metric. The green area 5215 on each circle represents the range for professional players.



FIG. 53 is an embodiment of a First Move 5300 report that may be generated by the CPU as part of the Evaluation Report 2730. As shown, the First Move 5300 report shows body angles computed by the CPU for the First Move position in a baseball swing. First Move represents when the batter's hand first starts moving towards the pitcher. As discussed above, the tic mark 5305 on the circle 5310 for each body metric (rotation, bend, side bend) of each body segment (pelvis, torso) represents the angle of the body metric, and the green area 5315 on each circle represents the range for professional players.



FIG. 54 is an embodiment of a Contact 5400 report that may be generated by the CPU as part of the Evaluation Report 2730. Contact is the point in time during a swing when the bat strikes the ball. As shown, the Contact 5400 report shows various body angles computed by the CPU for the Contact position in a baseball swing. As discussed above, the tic mark 5405 on the circle 5410 for each body metric (rotation, bend, side bend) of each body segment (pelvis, torso) represents the angle of the body metric, and the green area 5415 on each circle represents the range for professional players.



FIG. 55 is an embodiment of an X-Factor Stretch 5500 report that may be generated by the CPU as part of the Evaluation Report 2730. The X-Factor is the relationship between the torso and pelvis, which is calculated by the CPU based on captured motion sensor data at the key swing points Heel Strike, First Move, and Contact (not limited thereto). As discussed above, the tic mark 5505 on the circle 5510 for each key swing point represents the angle of the body metric (here, torso-pelvis), and the green area 5515 on each circle represents the range for professional players. As discussed above, the CPU may generate and present automatically generated comments 5110 based on a determined relationship between the participant's X-Factor measured at each of the key swing points versus that of the professional baseball players, such as shown in FIG. 55.


According to an embodiment of the invention, as illustrated in exemplary FIGS. 56 and 57, the CPU may be configured to generate a graphical user interface having a Tile Display 5605, which is a customizable graphical user interface having an area divided into tiles 5610 (a plurality of sub-areas) and content sources applied to each tile 5610 by the CPU. The tiles 5610 may be arranged horizontally and vertically within the Tile Display 5605. For example, the CPU may assign various 3D data to one or more tile 5610, such as related to swing timing, swing sequencing, body segment orientations and wrist angles at key swing points, peak rotational velocities, etc.) immediately following each movement—e.g., golf or baseball swing.


For example, in Auto Capture mode (discussed above), a user may simply take a swing and the motion is detected, automatically recorded, and processed by the CPU, and then each of the tiles in the Tile Display 5605 is updated with the appropriate movement data by the CPU. To facilitate faster training feedback loops, the Tiles Display 5605 is displayed next to the 3D avatar in the AutoCapture screen, such as shown in FIG. 56. The Tiles 5610 are also configurable so that users (coaches or players) can focus on specific metrics that they are interested in improving. Clicking or pressing on a Tile 5610 (Torso Tempo in this example), shown in FIG. 57 causes a pop out menu 5705 to appear, which allows the user to assign a different metric to the selected Tile 5610. This way, the user can configure the Tiles 5610 to show exactly which metrics they are interested in seeing. Clicking on a particular item in this menu expands that option to reveal individual metrics as shown in the image below.


According to the foregoing, the invention in one aspect provides a method and system for analyzing and improving the performance of an athletic motion (e.g., golf swing, baseball swing, yoga, dance, etc.) or body movement (lifting, walking, etc.) to monitor a user's accountability, which involves: 1) capturing motion sensor data for a user (e.g. through body worn sensors (e.g., inertial or movement sensors) and optionally with video cameras, time of flight cameras, or radar-based systems capable of capturing 2D or 3D scene information at regular time intervals); 2) transmitting the captured motion sensor data (all or select portions of the data) to the cloud for processing by a CPU or server that provide services for monitoring (continually or at predetermined time periods of interest), storing, processing, and communicating sensor data and instructions between devices of the system, such as participant devices and/or observer devices; 3) generating by the CPU one or more user interfaces with dashboards that present snapshots, progress reports, comparisons to development path, etc. to be displayed on the participant devices and/or observer devices; 4) automatically creating by the CPU an exercise program with biofeedback (or only video/animation) for the user based on machine learning techniques that measure, analyze, and process the motion data; 5) transmitting the training program to the user via a network; 6) monitoring by the CPU the user's compliance with the training program against a baseline threshold competency; and 7) alerting the user and/or a coach/observer in real time if the user's compliance falls below the baseline threshold competency by sending a message to a web portal, via text message, e-mail message, etc., which may order the user to stop and/or guide the user through a protocol to remind them of the correct movement pattern via instructions (graphical, video, and/or textual) displayed on any display or recipient device configured to convey feedback to the user.


Categorizing & Comparing Individuals based on Physical Attribute


Referring now to FIG. 58, shown is a flowchart of a method of analyzing an athletic motion by an individual, in accordance with an embodiment of the disclosure. The method can be executed by any appropriately configured motion monitoring system. For example, the method can be executed by the motion instruction system shown in FIG. 17, in which case steps can be carried out by any one or more of a participant device 1701a-c, a server 1709, and/or an observer device 1703. As another example, the method can be executed by the motion instruction system 1900 shown in FIG. 19, in which case the steps can be carried out by any one or more of a participant device 1901. an observer device 1903, and/or a server 1909. Although the description that follows refers to steps being carried out by the observer device 1903 or server 1909 of the motion instruction system 1900 shown in FIG. 19, more generally, the method can be executed by any appropriately configured motion monitoring system having at least one computer and one or more sensors for sensing movement of the individual. The motion monitoring system may use sensor data or video information or both sensor and video data, and may combine data from multiple sensors, video cameras or radars. The video camera may include, for example, a 360 degree camera. Alternatively, the video camera may be a 3D camera for generating 3D models and for detecting distance and movement of objects.


In the description that follows, the athletic motion pertains to swinging a baseball bat to strike a baseball, and the one or more sensors include at least one of a handset sensor, a wrist sensor, and a bat mounted sensor for capturing an impact between the baseball bat with the baseball. However, other athletic motions are possible. For example, the athletic motion can pertain to swinging a golf club to strike a golf ball, and the one or more sensors include at least one of a handset sensor, a wrist sensor, and a club mounted sensor for capturing an impact between the golf club with the golf ball. More generally, the method is applicable to any athletic motion by an individual that can be captured by one or more motion sensors.


At step 58-1, the observer device 1903 or server 1909 receives sensor data captured from one or more sensors during execution of an athletic motion by the individual, such as swinging a baseball bat to strike a baseball. The sensor data can for example include inertial data (i.e. from inertial sensors), video data (i.e. from one or more video cameras), or other sensor data. In some implementations, the observer device 1903 or server 1909 also receives outcome data (e.g. launch monitor data, or other outcome data), a participant ID of the individual, an exercise ID of the athletic motion, and a timestamp of when the athletic motion is being executed. In some implementations, additional information about the individual, such as name, height and weight for example, is accessed from a participant database 1907.


The observer device 1903 or server 1909 processes the sensor data to automatically generate at least one speed metric for the individual based on the sensor data. In some implementations, the at least one speed metric includes pelvis speed, torso speed, arm speed, hand speed and/or exit velocity (Exit Velo or EV) of a ball being struck by a sports instrument such as a baseball bat. Other speed metrics are possible. The speed metrics may not be easy for the individual to perceive or understand if they are conveyed in terms of raw numbers expressed in meters per second for example. Therefore, rather than conveying the speed metrics in this way, at step 58-2 the observer device 1903 or server 1909 determines speed percentiles for each speed metric. The individual may readily know that, for a given speed metric, 90th percentile is excellent while 10th percentile is poor, for example, and hence such speed percentiles can be easier for the individual to perceive and understand. While the examples described herein focus on speed percentiles, other possibilities exist such as quantile ranking for example, and more generally any suitable indication of relative performance can be employed.


In some implementations, in order to determine the speed percentiles, the observer device 1903 or server 1909 accesses a participant database 1907 and/or a motion database 1915, so that the speed metrics of the individual can be compared with other individuals to determine the speed percentiles. However, in accordance with an embodiment of the disclosure, the observer device 1903 or server 1909 compares the individual to only other individuals who belong in a same body mass category as the individual. Therefore, the individual is compared to only other individuals who have comparable body mass as the individual. It has been observed that such comparison based on body mass can improve upon an identification of which speed metric of the individual should be targeted for improvement through one or more exercises. Comparisons to other individuals based on age, sex, experience level, or other criteria that are not related to a physical attribute generally do not provide the same benefit.


While the examples described herein focus on categorizing and comparing individuals based on body mass, other possibilities exist such as physical height and/or wingspan for example, and more generally any suitable set of one or more physical attributes can be used for categorization and comparison. A database can be provided with, for each category of the possible categories, speed metrics for individuals belonging to the category. The observer device 1903 or server 1909 can then access that database to make appropriate comparisons when generating the speed percentiles.


The speed percentiles can be output for the individual to view. A couple of specific examples are provided below. Note that the speed metrics shown below are very specific for example purposes only.










TABLE 2







First Individual
Second Individual











Weight:

Weight:


Age: 13
170
Age: 17
185





Pelvis Speed Percentile:
35

Pelvis Speed


21






Percentile:



Torso Speed Percentile:
13
Torso Speed Percentile:
 5



Arm Speed Percentile:

5
Arm Speed Percentile:
45


Hand Speed Percentile:
33
Hand Speed Percentile:
40


Body Speed Percentile:
21
Body Speed Percentile:
28


Exit Velo Percentile:
 7
Exit Velo Percentile:
45









The combination of (1) conveying each speed metric in terms of an indication of relative performance (e.g. percentile ranking as shown above) and (2) comparing the individual to only other individuals who also belong to the category of the individual (e.g. comparable body mass) provides for benefits that can help the individual identify which speed metric should be targeted for improvement through one or more exercises, with a goal of improving the athletic motion as a whole.


In some implementations, at step 58-3, the observer device 1903 or server 1909 identifies which speed metric should be targeted for improvement through one or more exercises. In the example above shown in Table 2, those speed metrics are shown as underlined for the First Individual and the Second Individual, although other possibilities exist such as highlighting for example, and more generally any suitable way can be utilized to convey which speed metric is to be improved. In some implementations, the observer device 1903 or server 1909 determines the speed metric based on a combination of poor relative performance (e.g. low percentile) and affected body parts being lowest to ground. For the First Individual, the arm speed is chosen primarily because it has poor relative performance at only 5th percentile. For the Second Individual, the pelvis speed is chosen primarily because the pelvis is lowest to ground, even though torso speed has a lower percentile. The precise manner in which speed metric is chosen is implementation-specific. Also, while only one speed metric is identified for improvement, it is noted that other implementations are possible in which more than one speed metric can be identified for improvement.


According to one embodiment, the speed metric having the lowest percentile may be chosen and targeted for improvement through one or more exercises regardless of its position relative to the ground. In other words, if the speed metric having the lowest percentile is the hand speed, then the hand speed will be chosen first for improvement. According to another embodiment, a speed metric having a relative performance less than a predetermined percentile, such as the 30th percentile, will be selected first regardless of its position relative to the ground, and if there is more than one speed metric at less than the predetermined percentile, then the speed metric that is lowest to the ground is selected first for improvement. According to another embodiment: (i) first, the measured body part that is lowest to ground (e.g., pelvis) is targeted for improvement until the speed metric for that body part is above a predetermine percentile, (ii) second, the measured body part that is located above the first measured body part (e.g., torso) is targeted for improvement until the speed metric for that body part is above a predetermined percentile, (iii) third, the measured body part that is located above the second measured body part (e.g., arm) is targeted for improvement until the speed metric for that body part is above a predetermined percentile, and (iv) fourth, the measured body part that is located above the third measured body part (e.g., hand) is targeted for improvement until the speed metric for that body part is above a predetermined percentile.


In some implementations, at step 58-4, the observer device 1903 or server 1909 generates a regime file as similarly described in previous sections. More generally, the observer device 1903 or server 1909 can determine at least one exercise for improving the speed metric, and convey the at least one exercise for the individual to practice. With such focused practice or exercise, which aim to specifically address shortcomings of the athletic motion by individual, the individual may experience improvement. The steps described above can be repeated through several iterations, and the observer device 1903 or server 1909 can determine and conveying an indication of improvement or change in performance. Carrying on with the example described above for the First Individual and the Second Individual, improved speed metrics are provided below.










TABLE 3







First Individual
Second Individual











Weight:

Weight:


Age: 13
170
Age: 17
185





Pelvis Speed Percentile:
65

Pelvis Speed


78






Percentile:



Torso Speed Percentile:
29
Torso Speed Percentile:
21



Arm Speed Percentile:


85

Arm Speed Percentile:
44


Hand Speed Percentile:
56
Hand Speed Percentile:
81


Body Speed Percentile:
59
Body Speed Percentile:
56


Exit Velo Percentile:
21
Exit Velo Percentile:
85









As shown above in Table 3, the arm speed for the First Individual has improved significantly, resulting in an improved exit velocity. As also shown above, the pelvis speed for the Second Individual has improved significantly, resulting in an improved exit velocity. The magnitude of improvement is large in both cases. In some implementations, the magnitude of improvement is displayed, for example as a numeric increase in the percentile ranking or other indication on improvement.


In some implementations, the observer device 1903 or server 1909 determines and conveys an overall body speed metric based on a combination of the body speed metrics. In the examples shown above, a “body speed percentile” is calculated as an average of pelvis speed percentile, torso speed percentile, arm speed percentile, and hand speed percentile. However, other functions can be used, such as median or mode or weighted average for example, and more generally any suitable mathematical function can be used to provide an indication of overall body speed. Determining and improving overall body speed is important given, for example, in baseball that fastball velocities continue to increase, along with breaking ball usage.


In some implementations, the observer device 1903 or server 1909 compares exit velocity percentile against the body speed percentile. Increasing the body speed percentile tends to increase the exit velocity percentile. In baseball statistics, exit velocity (EV) is the estimated speed at which a batted ball is travelling as it is coming off the player's bat. Exit velocity is generally measured and presented in miles per hour. Batters generally aim for a higher exit velocity in order to give opposing fielders less time to react and attempt a defensive play. Hitting a ball with the proper force, bat speed and contact is critical to hitting the ball well. Indeed, exit velocity is one of the most important measurements tracked stat in Major League Baseball (MLB) right now. MLB teams use the exit velocity stat to gauge a batter's abilities. Transversely, exit velocity can be analyzed to improve a pitcher's results, especially those prone to giving up hard contact.



FIGS. 59A and 59B are graphs showing exit velocity percentile versus body speed percentile for the First Player. Prior to completing focused practice or exercise, performance is rather weak (see FIG. 59A). However, after completing focused practice or exercise to address the arm speed, performance is significantly improved in terms of body speed percentile and resulting exit velocity percentile (see FIG. 59B).



FIGS. 60A and 60B are graphs showing exit velocity percentile versus body speed percentile for the Second Player. Prior to completing focused practice or exercise, performance is mediocre (see FIG. 60A). However, after completing focused practice or exercise to address pelvis speed, performance is significantly improved in terms of body speed percentile and resulting exit velocity percentile (see FIG. 60B).



FIG. 61 is a graph of exit velocity percentile versus body speed percentile. It can be seen that there is a correlation in which greater body speed percentile tends to result in greater exit velocity percentile. Such correlation is also demonstrated in the examples above for the First Individual and the Second Individual.



FIG. 62 is a graph showing exit velocity versus body weight. It can be seen that there is a correlation in which greater body weight tends to result in greater exit velocity percentile. In other words, heavier players tend to hit harder.



FIG. 63 is a graph showing pelvis speed versus body weight. It can be seen that there is a correlation in which greater body weight tends to result in lower pelvis speed. In other words, heavier players tend to move slower.


In some implementations, the one or more sensors each have an inertial sensor, a local processor, a local data buffer, and a transceiver. The sensor data is initially buffered in the local data buffer, whereby upon recognition that the athletic motion has occurred, the local processor extracts from the local data buffer sensor data in a predetermined time window before and after a moment in which the athletic motion occurred and only the sensor data that is extracted is transmitted to a transceiver of the at least one computer. Example implementation details have been provided in previous sections and are not repeated here.


In some implementations, the one or more sensors include a plurality of sensors networked together so that sensor data can be transmitted from one or more of the sensors to the local data buffer existing in another one of the sensors and an aggregate of the sensor data from the sensors is transmitted from that local data buffer to the transceiver of the at least one computer. Example implementation details have been provided in previous sections and are not repeated here.


In some implementations, the one or more sensors include one or more video cameras (e.g., high speed tracking cameras). For such implementations, pose estimation can be used to determine positioning and/or speed of the individual based on image data from one or more video cameras. In some implementations, use of video cameras and pose estimation is implemented to supplement use of other sensors such as inertial sensors for example. Notably, sensor fusion using a video camera and one or more inertial sensors could improve accuracy of the speed metrics that are calculated for the individual. In other implementations, use of video cameras and pose estimation is implemented instead of other sensors such as inertial sensors. In this manner, it may be possible to determine the speed metrics for the individual solely based on video data from one or more video cameras. It is understood that video may be obtained from a camera coupled with a mobile device, or any camera that is separate from or otherwise remove from the mobile device.


According to another embodiment of the disclosure, there is provided a non-transitory computer readable medium having recorded thereon statements and instructions that, when executed by a processor, implement a method as described herein. The non-transitory computer readable medium can for example include an SSD (Solid State Drive), a hard disk drive, a CD (Compact Disc), a DVD (Digital Video Disc), a BD (Blu-ray Disc), a memory stick, or any appropriate combination thereof.


The illustrated examples described herein focus on software implementations in which software can be executed by a processor of a computer. However, other implementations are possible and are within the scope of this disclosure. It is noted that other implementations can include additional or alternative hardware components, such as any appropriately configured FPGA (Field-Programmable Gate Array), ASIC (Application-Specific Integrated Circuit), and/or microcontroller, for example. More generally, there is provided motion monitoring circuitry configured for implementing any method described herein, which can be implemented with any suitable combination of hardware, software and/or firmware.


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 the various embodiments must be performed in the order presented. The steps in the foregoing embodiments may be performed in any order. Words such as “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. Although process flow diagrams may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination may correspond to a return of the function to the calling function or the main function.


The various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may 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, circuits, and steps 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. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.


Embodiments implemented in computer software may be implemented in software, firmware, middleware, microcode, hardware description languages, or any combination thereof. A code segment or machine-executable instructions may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.


The actual software code or specialized control hardware used to implement these systems and methods is not limiting of the invention. Thus, the operation and behavior of the systems and methods were described without reference to the specific software code being understood that software and control hardware can be designed to implement the systems and methods based on the description herein.


When implemented in software, the functions may be stored as one or more instructions or code on a non-transitory computer-readable or 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 computer-readable or processor-readable storage medium. A non-transitory computer-readable or processor-readable media includes both computer storage media and tangible storage media that facilitate transfer of a computer program from one place to another. A non-transitory processor-readable storage media may be any available media that may be accessed by a computer. By way of example, and not limitation, such non-transitory processor-readable media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other tangible storage 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 or processor. Disk and disc, as used herein, include 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 should also be included within the scope of computer-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 medium and/or computer-readable medium, which may be incorporated into a computer program product.


The preceding description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the following claims and the principles and novel features disclosed herein.


While various aspects and embodiments have been disclosed, other aspects and embodiments are contemplated. The various aspects and embodiments disclosed are for purposes of illustration and are not intended to be limiting, with the true scope and spirit being indicated by the following claims.

Claims
  • 1. A method of analyzing an athletic motion by an individual, the method being executed by a motion monitoring system comprising at least one computer and one or more sensors for sensing movement of the individual, the method comprising: receiving, by the at least one computer, sensor data captured from the one or more sensors during execution of the athletic motion by the individual;processing, by the at least one computer, the sensor data to automatically generate at least one speed metric for the individual based on the sensor data;categorizing, by the at least one computer, the individual into a category of a plurality of possible categories based on a physical attribute of the individual;generating, by the at least one computer, for each speed metric of the at least one speed metric, an indication of relative performance of the speed metric in relation to only other individuals who also belong to the category of the individual; andoutputting, by the at least one computer, the indication of relative performance for each speed metric.
  • 2. The method of claim 1, wherein the plurality of possible categories are defined based on body mass, such that for each speed metric of the individual, the relative performance of the speed metric is generated in relation to only other individuals who have comparable body mass to the individual.
  • 3. The method of claim 2, wherein for each speed metric of the individual, the relative performance of the speed metric is a percentile ranking in relation to only the other individuals who have comparable body mass to the individual.
  • 4. The method of claim 1, further comprising: maintaining, by the at least one computer, a database having, for each category of the possible categories, speed metrics for individuals belonging to the category;accessing, by the at least one computer, the speed metrics for individuals belonging to the category of the individual;wherein the at least one computer generates, for each speed metric of the individual, the indication of relative performance of the speed metric by comparing the speed metric of the individual to the speed metrics of only the individuals belonging to the category of the individual.
  • 5. The method of claim 1, wherein the at least one speed metric comprises a plurality of speed metrics including pelvis speed, torso speed, arm speed, hand speed and exit velocity.
  • 6. The method of claim 1, wherein the at least one speed metric comprises a plurality of speed metrics, and the method further comprises: determining, by the at least one computer, a select speed metric of the plurality of speed metrics to be targeted by the individual for improvement; andconveying, by the at least one computer, the select speed metric for improvement.
  • 7. The method of claim 6, further comprising: determining, by the at least one computer, at least one exercise for improving the select speed metric; andconveying, by the at least one computer, the at least one exercise for the individual to practice.
  • 8. The method of claim 6, wherein determining the select speed metric of the plurality of speed metrics comprises: determining, by the at least one computer, the select speed metric based on a combination of poor relative performance and affected body parts being lowest to ground.
  • 9. The method of claim 1, wherein the athletic motion is a first athletic motion and the method further comprises: repeating, by the at least one computer, the receiving, the processing, the generating and the outputting for a second athletic motion by the individual;determining, by the at least one computer, an indication of improvement of the second athletic motion compared to the first athletic motion; andconveying, by the at least one computer, the indication of improvement.
  • 10. The method of claim 1, wherein the at least one speed metric comprises a plurality of body speed metrics, and the method further comprises: determining, by the at least one computer, an overall body speed metric based on a combination of the plurality of body speed metrics; andconveying, by the at least one computer, the overall body speed metric.
  • 11. The method of claim 10, wherein, for each body speed metric of the individual, the relative performance of the body speed metric is a percentile ranking in relation to only the other individuals who have comparable body mass to the individual, and determining the overall body speed metric comprises determining an average value of the percentile rankings of the body speed metrics.
  • 12. The method of claim 10, further comprising: comparing and conveying, by the at least one computer, an exit velocity against the overall body speed metric.
  • 13. The method of claim 1, wherein the one or more sensors each comprise an inertial sensor, a local processor, a local data buffer, and a transceiver, the sensor data being initially buffered in the local data buffer, whereby upon recognition that the athletic motion has occurred, the local processor extracts from the local data buffer sensor data in a predetermined time window before and after a moment in which the athletic motion occurred and only the sensor data that is extracted is transmitted to a transceiver of the at least one computer.
  • 14. The method of claim 13, wherein the one or more sensors comprise a plurality of sensors networked together so that sensor data can be transmitted from one or more of the sensors to the local data buffer existing in another one of the sensors and an aggregate of the sensor data from the sensors is transmitted from that local data buffer to the transceiver of the at least one computer.
  • 15. The method of claim 1, wherein the athletic motion pertains to swinging a baseball bat to strike a baseball, and the one or more sensors comprise at least one of a handset sensor, a wrist sensor, and a bat mounted sensor for capturing an impact between the baseball bat with the baseball.
  • 16. The method of claim 1, wherein the athletic motion pertains to swinging a golf club to strike a golf ball, and the one or more sensors comprise at least one of a handset sensor, a wrist sensor, and a club mounted sensor for capturing an impact between the golf club with the golf ball.
  • 17. The method of claim 1, wherein the one or more sensors comprise a video camera for capturing video showing the movement of the individual.
  • 18. A non-transitory computer readable medium having recorded thereon statements and instructions that, when executed by at least one processor of a motion monitoring system, configure the at least one processor to implement the method of claim 1.
  • 19. A motion monitoring system, comprising: one or more sensors configured to sense movement of the individual;at least one computer having motion monitoring circuitry configured to receive sensor data captured from the one or more sensors during execution of an athletic motion by the individual, process the sensor data to automatically generate at least one speed metric for the individual based on the sensor data, categorize the individual into a category of a plurality of possible categories based on a physical attribute of the individual, generate, for each speed metric of the at least one speed metric, an indication of relative performance of the speed metric in relation to only other individuals who also belong to the category of the individual, and output the indication of relative performance for each speed metric.
  • 20. The motion monitoring system of claim 19, wherein the at least one computer comprises any one or more of a participant device, a server and an observer device.
  • 21. The motion monitoring system of claim 19, wherein the athletic motion pertains to swinging a golf club to strike a golf ball, the at least one speed metric comprises one or more of pelvis speed, torso speed, arm speed, hand speed, and exit velocity, and the one or more sensors comprise at least one of a handset sensor, a wrist sensor, and a club mounted sensor for capturing an impact between the golf club with the golf ball.
  • 22. The motion monitoring system of claim 19, wherein the athletic motion pertains to swinging a baseball bat to strike a baseball, the at least one speed metric comprises one or more of pelvis speed, torso speed, arm speed, hand speed, and exit velocity, and the one or more sensors comprise at least one of a handset sensor, a wrist sensor, and a bat mounted sensor for capturing an impact between the baseball bat with the baseball.
  • 23. The motion monitoring system of claim 19, wherein the motion monitoring circuitry of the least one computer comprises a processor, and the at least one computer further comprises a non-transitory computer readable medium having recorded thereon statements and instructions that, when executed by the processor, configures the processor as the motion monitoring circuitry.
CROSS-REFERENCE TO RELATED APPLICATIONS

This patent application which claims priority to U.S. Provisional Application No. 63/242,853, filed on Sep. 10, 2022, which is incorporated by reference herein in its entirety.

PCT Information
Filing Document Filing Date Country Kind
PCT/US2022/043099 9/9/2022 WO
Provisional Applications (1)
Number Date Country
63242853 Sep 2021 US