The present invention relates to computer-implemented methods for training a user in performing a motion in the course of an activity.
In order for a user to train a motion for an activity, it is useful to understand the position of important points of the user's body or equipment throughout the motion. For example, to develop a good golf swing, a golfer should restrict motion of the head within a boundary until after the ball is struck. Unfortunately, it is difficult to detect these types of movement in a simple, accurate, non-invasive and real-time manner and without having to train the system.
Some prior art systems use a smartphone's camera to determine an initial position of the head of a user, and allow a user to set boundaries around the motion of the head. But these boundaries are simply lines on the smartphone screen and are not determined based on distances in the real, physical space of the user. For example, the location of these boundaries in real, physical space change based on the camera placement relative to the user and the characteristics of the smartphone camera, so the usefulness of these systems in training a motion is severely limited.
Other prior art systems involve a sheet of opaque material supported above a golf ball and having a slot therein through which the golfer views a golf ball while swinging, or a hollow tee through which light shines. These systems require the golfer to adjust his/her setup in order to detect head movement forward of a starting position, obscure the view of the ball during the swing, and, by requiring the golfer to re-observe the golfer's prior action, provide information as to head position only after the swing.
Another prior art system for determining an amount and direction of a golfer's head movement during a swing consists of at least two light baffles. The baffles reflect light into the golfer's eyes when the golfer's head is outside of a preset range. The system requires precise setup and the golfer's visual observation in order to determine head movement. And again, the system does not indicate movement without the golfer looking at the system, so the system cannot monitor the head position throughout the entire swing.
Another prior art system involves head gear worn by a golfer that includes motion/position sensing devices from which data is processed to determine a signal indicative of the golfer's head motion. In this system, the motion is detected by the system in the head gear and therefore is difficult to provide head movement information relative to the ball. In addition, the golfer must train the system with desired and undesirable motions, then compare the stored motions with the current motion.
In accordance with one embodiment of the invention, there is provided computer-implemented method of training a user in performing a motion for an activity. The method employing an AV-equipped portable computing device having a processor. The computing device having been positioned so that its camera faces a target. The processor executing computer processes defined by an application. The computer processes include receiving and processing by the processor an output from the camera to determine an initial position of the target. The computer processes also include processing the output from the camera by the processor to determine a series of coordinates corresponding to successive positions of the target, assumed after the initial position in the course of the motion. The computer process further include processing by the processor the series of coordinates, against a set of fault rules, to determine presence of a fault in the performing of the motion, wherein the fault rules relate to target position in a real, physical space of the target. The computer processes also include, if a fault is determined to be present, causing by the processor notification of the user via components of the portable computing device, so as to train the user to perform the activity in a manner free of the fault.
Optionally, the fault rules additionally relate to whether the target has moved to a position outside of one of a set of boundaries determined by distances established for motion of the target relative to the target's initial position in the real, physical space. Alternatively or additionally, the fault rules additionally relate to a time of occurrence of a moment when the target has moved to a position outside the boundary relative to a time of occurrence of a defining moment of the motion, and the computer processes further include processing by the processor the series of coordinates to determine (a) the time of occurrence of the defining moment and (b) the time of occurrence of the moment when the target has moved to a position outside the boundary.
Optionally, the fault rules additionally relate to target position in three dimensions of the real, physical space. Alternatively or additionally, the fault rules additionally relate to target orientation in the real, physical space. Optionally, the computing device has a display, and the notification of the user is by visual notification on the display, and the computer processes further include providing, in the display, a link to a resource for addressing the fault. Alternatively or additionally, the link for addressing the fault is determined by user-specified criteria for training instruction based on items selected from the group consisting of identification of an instructor, level of instruction desired, and combinations thereof.
Optionally, the set of fault rules are defined based on input from an individual identified by the user as an instructor. Optionally, processing by the processor the series of coordinates, against a set of fault rules, to determine presence of a fault in the performing of the motion includes identifying the presence of a plurality of faults and selecting from the plurality of faults a most salient fault, and wherein the motion is performed in a set of repetitions by the user and the computer processes are executed for each repetition of the set for identifying, separately for each such repetition, the presence of the plurality faults, and the computer processes further include determining by the processor, cumulatively for the set of repetitions, the most salient fault based on of its frequency of occurrence and its severity. Optionally, processing by the processor the series of coordinates, against a set of fault rules, to determine presence of a fault in the performing of the motion includes identifying the presence of a plurality of faults and selecting from the plurality of faults a most salient fault, and wherein the motion is performed in a set of repetitions by the user and the computer processes are executed for each repetition of the set for identifying, separately for each such repetition, the presence of the plurality faults, and the computer processes further include determining by the processor, cumulatively for the set of repetitions, the most salient fault based on input from an individual identified by the user as an instructor.
Optionally, the computing device includes a display, and the computer processes further include storing the series of coordinates corresponding to the successive positions of the target assumed after the initial position, and an instant in time when each position was assumed; and computing and causing display of a path of movement of the target, based on the series of coordinates corresponding to the successive positions of the target assumed after the initial position. Alternatively or additionally, the computing device is configured to communicate over a network, and the computer processes further include providing by the processor, to an individual identified by the user as an instructor, a notification that the series of coordinates have been stored at a storage location in the network; retrieving by the processor, in response to input by the identified individual, the series of coordinates from the storage location; and causing display by the processor of a representation of the series of coordinates.
Optionally, the computer processes further include storing the series of coordinates corresponding to the successive positions of the target assumed after the initial position, and an instant in time when each position was assumed; detecting a defining moment in the activity; and on detecting the defining moment, storing the series of coordinates and the instant in time each position was assumed. Alternatively or additionally, the computing device includes a microphone and the defining moment is a ball-strike, and the computer processes further include processing by the processor sound detected by the microphone to detect the ball-strike. Alternatively or additionally, the computer processes further include processing by the processor of the output from the camera to detect the defining moment, and wherein the processing of the output includes computing the orientation of the target.
Optionally, determining the initial and successive positions of the target includes tracking initial and successive positions of another target of the user. Optionally, the computer processes further include storing by the processor a quality of a result of the activity. Alternatively or additionally, the quality of the result of the activity is an indication provided by the user, and the computer processes further include prompting by the processor the user to provide the indication of the quality of the result of the activity and storing the indication. Alternatively or additionally, the series of coordinates constitutes a first series of coordinates, and the computer processes further include displaying a path of movement based on a second series of coordinates corresponding to successive positions of the target in performing a second motion for the activity; and providing a visual comparison of measurements between the first series of coordinates and the second series of coordinates.
In accordance with a further embodiment of the invention, there is provided a computer-implemented method of establishing orientation of an AV-equipped portable computing device, for monitoring a user in performing an activity. The device having an accelerometer and a processor. The processor executing computer processes defined by an application. The computer processes include receiving and processing by the processor an output from the accelerometer to determine current orientation of the portable computing device. The computer processes also include directing by the processor to the user to cause a change in orientation of the computing device in a manner suitable for monitoring the user. The computer processes further include receiving and processing by the processor an output from the camera to determine a position of a target. The computer processes also include directing by the processor positioning of the user to facilitate capture of the motion of the target in the course of the motion.
In accordance with another embodiment of the invention, there is provided a computer-implemented method of training a user in performing a motion for an activity. The method employs an AV-equipped portable computing device having a processor, and the computing device has been positioned so that its camera faces a target. The processor executes computer processes defined by an application. The computer processes include receiving and processing by the processor an output from the camera to determine an initial position of the target. The computer processes also include defining by the processor a set of boundaries determined by distances in a real, physical space of the target, for motion of the target relative to the initial position, based on the activity. The computer processes further include determining by the processor a series of coordinates corresponding to successive positions of the target assumed after the initial position by processing the output from the camera. The computer processes also include processing by the processor the series of coordinates to determine whether one of these positions is located outside of one of the boundaries, and if so, then causing notification of the user via components of the portable computing device, so as to train the user to perform the activity in a manner that causes desired positioning of the target in space.
Optionally, the computing device has a display, and the notification of the user when a position is located outside a boundary is by visual notification on the display. Alternatively or additionally, the computing device has an audio transducer, and the notification of the user when a position is located outside a boundary is by audible notification. Alternatively or additionally, the computer processes further include, in a set of setup steps, prompting the user to initiate a detectable motion and detecting the motion.
Optionally, the computer processes further include storing the series of coordinates corresponding to successive positions of the target assumed after the initial position and an instant in time each position was assumed. Alternatively or additionally, the computer processes further include terminating measurement and storage of the series of coordinates corresponding to successive positions of the target assumed after the initial position and the instant in time each position was assumed on detecting a defining moment. Alternatively or additionally, the computing device includes a microphone and the defining moment is a ball-strike, and the computer processes further include processing sound detected by the microphone to detect the ball-strike. Alternatively or additionally, the computer processes further include processing the output from the camera to detect the defining moment. Alternatively or additionally, the computing device includes a display, and the computer processes further include computing and causing display of a path of movement of the target, based on the series of coordinates corresponding to the successive positions of the target assumed after the initial position. Alternatively or additionally, the computer processes further include indicating, in the display, the set of boundaries, and visually marking therein any boundary that has been traversed by the path. Alternatively or additionally, the computing device includes a display, and the computer processes further include computing and displaying performance statistics relative to the activity.
Alternatively or additionally, the computing device includes components to communicate over a network, and the computing device is coupled over the network to a server system configured to receive and store data from the computing device, and the computer processes further include providing, over the network, for storage by the server system, the series of coordinates corresponding to successive positions of the target assumed after the initial position and the instant in time each position was assumed. Alternatively or additionally, the computer processes further include receiving, from the server system, data processed by the server system relative to the activity providing statistics over one or more users and displaying the statistics. Alternatively or additionally, the computer processes further include storing a series of coordinates corresponding to successive positions of multiple targets assumed after the initial position and an instant in time each position was assumed.
Optionally, the computer processes further include providing hysteresis in resetting of the notification, so that when the notification has been generated as a result of the target moving outside a boundary, the computing device will not generate a subsequent notification unless the target has moved inside a narrower boundary and remained inside that boundary for a predetermined amount of time. Alternatively or additionally, the computer processes further include determining by the processor a series of angles corresponding to orientations of the target by processing the output from the camera. Alternatively or additionally, the computer processes further include storing a quality of a result of the activity. Alternatively or additionally, a quality of the result of the activity is a user's indication of the quality of the result of the activity, and the computer processes further include prompting the user to give an indication of the quality of the result of the activity and storing the user's indication. Alternatively or additionally, the computing device includes a means for determining a quality of the result of the activity, and the computer processes include storing the determined quality. Alternatively or additionally, the computing device includes a means for communicating with a system that can determine a quality of the result of the activity, and the computer processes further include receiving and storing the determined quality. Alternatively or additionally, the computer processes further include computing a model to relate the series of coordinates corresponding to successive positions of the target assumed after the initial position and the instant in time each position was assumed of multiple instances of the activity to the corresponding stored quality of the result.
Optionally, the computer processes further include analyzing the series of coordinates corresponding to successive positions of the target assumed after the initial position and the instant in time each position was assumed to generate a computed performance measure; and notifying the user of the computed performance measure. Alternatively or additionally, the computer processes further include storing an amplitude of the sound detected by the microphone and the instant in time that sound was detected over the course of the activity, analyzing the stored amplitude of the sound detected to generate a computed performance measure, and notifying the user of the computed performance measure.
Optionally, the computing device includes a display, and the computer processes further include computing a fault in performance of the activity, and causing display of the fault. Alternatively or additionally, the computer processes further include providing, in the display, a link to a resource for addressing the fault.
The foregoing features of embodiments will be more readily understood by reference to the following detailed description, taken with reference to the accompanying drawings, in which:
Definitions. As used in this description and the accompanying claims, the following terms shall have the meanings indicated, unless the context otherwise requires:
An “AV-equipped portable computing device” is computer hardware (such as a processor, field-programmable gate array or other electronic combinatorial logic, or similar device) combined with a camera so that the computer hardware can process the output pf the camera.
A “computer process” is the performance of a described function in a computer using computer hardware (such as a processor, field-programmable gate array or other electronic combinatorial logic, or similar device), which may be operating under control of software or firmware or a combination of any of these or operating outside control of any of the foregoing. All or part of the described function may be performed by active or passive electronic components, such as transistors or resistors. In using the term “computer process” we do not necessarily require a schedulable entity, or operation of a computer program or a part thereof, although, in some embodiments, a computer process may be implemented by such a schedulable entity, or operation of a computer program or a part thereof. Furthermore, unless the context otherwise requires, a “process” may be implemented using more than one processor or more than one (single- or multi-processor) computer.
A “set” includes at least one member.
An “activity” is something that a user does and includes: recreational pursuits such a golf; elements of such pursuits, such as a golf swing; types of such elements, such as a putt of a drive; or categories of such elements, such as a level like beginner or pro.
A “defining moment” in an activity is an exact point, in execution of the activity, defined by occurrence of a specific event, such as the start of the motion, the commencement of the downswing, striking of a ball by a club (wherein the ball-strike is the defining moment) or release of a pitched ball from the hand (wherein ball-release is the defining moment).
A “target” is a member selected from a group of consisting of a face or other body part of the user, a detectable pattern placed on the user, a piece of equipment held by the user, and anything detectable as it moves through space, and combinations thereof, embodiments of the present invention train the user to perform an activity in a manner that clauses desired positioning of the target, or targets, in space.
“Device-based coordinates” are a set of numbers used to indicate the position of a point in an image, generated by the camera, wherein the position is expressed in image coordinates and is device-specific.
“Real, physical space of the target” and “physical space of the target” are the dimensions of height, depth, and width within which the target exists and moves.
“Coordinates corresponding to positions of the target” refers to either device-based coordinates or coordinates indicating the position of the target in the real, physical space of the target.
“Quality of the result of the activity” is a qualitative or quantitative measure of the goal of the activity.
“Model” is a mathematical algorithm that takes as input some data and outputs data corresponding to the input.
A “fault” in performing a motion for an activity is a characteristic of the motion, and the presence of the characteristic indicates a deficiency that can be remedied to improve the result of the activity.
Various embodiments of the present invention determine when a target has experienced motion beyond a boundary over the course of an activity. For example, embodiments of the present invention provide a method which detects and alerts a golfer of head movement beyond boundaries defined in the real, physical space of the golfer as the golfer executes a golf swing, which solves the problems and overcomes the drawbacks and deficiencies of prior art golf swing assistance systems. The system of various of these embodiments implementing the method includes an AV-equipped portable computing device that processes the output from its sensors or camera to determine the distances moved by a target in the real, physical space of the user. The method includes determining an initial position of the target and defining a set of boundaries in that space, processing the camera output to determine whether the target is within or outside of those boundaries, and if the target is determined to be outside the boundaries, notifying the user, so as to train the user to perform the activity in a manner that causes desired positioning of the target in space. In a further embodiment, the method has a feature by which it ignores the movement of the target once the swing has completed, such as contact has been made with a ball, a feature that eliminates false alarms, because, after the swing has been completed, the position of the target is no longer important in training. The starting position of the target, deviation from which in the course of an activity creates an alerting condition, may be the first determined position of the target. Alternatively, the system may determine an adaptive starting position of the target. In various embodiments, the method provides an initialization mechanism by deferring calculation of the starting position until the user has indicated they are ready to initiate the activity, for example a golfer has looked away from the ball for a specified period. In various embodiments, the boundaries are user selectable. The alerting mechanism in various embodiments includes hysteresis, so that when the alert system has generated the alert as a result of target movement beyond a boundary, the alert system is configured not to generate a subsequent alert unless the target has moved back within a boundary closer to the starting position and remained there for a predetermined amount of time. In further embodiments, the orientation of a target instead of or in addition to the position of a target may be determined, and the system may alert the user if the orientation is outside of certain angular limits. In further embodiments, the system may determine the location of multiple targets and alert the user if some combination of targets is outside of boundaries, or the orientation of multiple targets and alert the user if some combination of targets are outside angular limits, or alert the user based on combinations of the results of both location and orientation detection. In further embodiments, the system may allow the user to display and analyze a record of their motion during the activity. In further embodiments, the analysis of their motion may include the identification of specific faults or issues that reduce the effectiveness of the motion, and in further embodiments, the system may alert the user to the faults or issues, and in further embodiments, the system may display the faults or issues to the user, and in further embodiments. the display may include links to resources to help the user ameliorate the faults and improve their motion. In further embodiments, the system may allow the user to display and analyze the record of their motions in multiple instances of the activity. In further embodiments, the system may allow the user to apply statistical analysis to the record of their motions, and in further embodiments may allow the user to apply statistical analysis to compare their motions to the motions of other individuals or to the aggregated motions of a set of other individuals. In further embodiments, the system may include connectivity with a computer network. In further embodiments, the method may include determining qualitative or quantitative measures of the results of the activity. In further embodiments, the method may include creating mathematical models to map the record of successive positions to qualitative or quantitative measures of the results of the activity. Details of illustrative embodiments are discussed below.
We have found it valuable, in embodiments of the present invention to provide a system for alerting a user when the movement of a target exceeds a threshold as measured in distances in the real, physical space of the user. For example, in various embodiments, the user is able to set a threshold for movement in terms of real-world distance, e.g., “set a boundary 100 mm on either side of my initial position.” Fundamental to the method of the present invention, then, is the ability to determine distances in the real, physical space of the user by processing the output of a sensor or camera. Here we discuss two approaches: a simple technique using distance scale factors and a more complex technique using coordinate transformation.
As an example of the simple approach using scale factors, consider the embodiment of
Some embodiments may instead implement the method of the present invention with explicit transformations between coordinate systems. This approach is particularly useful if the mapping of target position to device-based coordinates is too different from uniformly linear to be useful. For example, if the device-based coordinates are pixels in a camera image, departure from uniform linearity is present if identical horizontal and vertical displacements of the target do not result in equally sized changes in camera pixel coordinates. Similarly, such a departure may be found if identical displacements, when the target image is in different areas of the camera field, do not result in identical changes in camera pixel coordinates. The coordinate transformation approach is also preferred if the embodiment is designed to track a target and set boundaries in three dimensions.
The system then translates those device-based coordinates to a set of coordinates in a coordinate system corresponding to the real, physical space of the user. The coordinate set can contain one, two, or three values, corresponding to one-, two- or three-dimensional coordinate systems in the space of the user. For example, if only lateral movement of the target is to be considered, a coordinate set of only one value is appropriate, and the coordinate would reflect the distance of the target from the initial position along a line.
First we consider one-dimensional or two-dimensional coordinate systems in the plane 25 that contains the target 26, where the plane 25 is perpendicular to the line 29 from the camera on the device 13 to the target 26 and the camera on device 13 is oriented along the line 29. Typically the one dimensional coordinate system would correspond to either the horizontal or vertical direction in that plane, corresponding to either the horizontal axis 27 or vertical axis 28, and the coordinates on that axis would be determined from the horizontal or vertical coordinates measured against the device coordinate axes 21 or 22. For the two dimensional coordinate system, in some cases, the physical coordinates along axis 27 may be determined solely from the device-based coordinate along axis 21, and coordinates along 28 solely from those measured along 22. That simple approach holds only if the device sensor's horizontal and vertical directions match those of the user's physical space, so that a movement of a target along only the axis 27 in physical space results in a displacement of the image of the target along only the axis 21 in device-based coordinates, and similarly movement along only 28 results in displacement only along 22. If, on the other hand, there is a skew in the setup—for example when the device is rotated relative to the real horizontal, or the camera in the device is not pointed directly at the target, or, in the one dimensional case, the line we're interested in is not horizontal or vertical in the target's physical space—someone skilled in the art will be able to apply the appropriate transformation to the device-based coordinates before proceeding.
To perform the translation from device-based coordinates to coordinates in real, physical space, the system must determine the scaling of displacements in device coordinates to displacements in physical space coordinates. For example, a movement of the target 26 by 20 mm along the axis 27 might correspond to a displacement of the image of the target by ten pixels along axis 21 in the device coordinate system. Embodiments may take various approaches to determining the scale factor. For some applications, a single pre-determined value might be adequate. For example, if identical devices are used in each instantiation of the system, and the target is always placed the same distance from the camera, the scale factor could be determined empirically when designing the system. Some embodiments may use camera parameters—field of view, resolution, . . . —and assumptions—distance to user from camera—to determine the scale factors. Other embodiments may have the user hold an object of known length at the location of the target—e.g. a half meter long red rod held at the user's face—to determine the scale factor. Other embodiments may assume an average width of a face—e.g. 100 mm—and use the device coordinates of the bounding box 23 of the detected face to estimate the scale factor. The units of the scale factor depend on the measurements used in real, physical space and the units in the device space; in the above example it is millimeters per pixel.
To perform the translation, the system must also determine the device-based coordinates of the origin of the physical space coordinates. Some embodiments might simply use the center or a particular corner of the camera frame as the device-based coordinates of the origin. Some embodiments might use a set of device-based coordinates to determine an initial position of the target in device coordinates—for example, by taking an average of a sequence of coordinates gathered over a certain time interval—and use those coordinates to correspond to the origin.
For example, suppose the device-based coordinates of the origin are (x0, y0), the scale factor is S, and the horizontal and vertical directions of the device correspond to the horizontal and vertical directions of the physical space. Then the physical space coordinates of the target, when it is detected at device coordinates x and y, are X=S (x−x0) and Y=S (y−y0).
The translation from real, physical coordinates to device-based coordinates is the inverse of the transformation from device-based coordinates to real, physical coordinates. For example, in the previous example, physical coordinates X, Y will map to device-based coordinates x=X/S+x0, and y=Y/S+y0.
In embodiments where the scale factor is not uniform in all directions, someone skilled in the art will be able to apply the correct transformations, e.g. determine two scale factors Sx and Sy and use a transformation that takes device (x, y) to physical (Sx (x−x0), Sy (y−y0)). In embodiments where the scale factor varies with distance from the center of the device sensor, and the variation is so great it would adversely impact the usefulness of the system, then those factors Sx and Sy will depend on x and y, and someone skilled in the art will be able to apply the appropriate nonlinear transformations and nonlinear inverse transformations. Similarly, when the horizontal axis of the device used to track location is perfectly aligned with the horizontal direction in physical space, note that the vertical axis 28 may not align with the vertical direction in physical space—e.g. if the line 29 from device to target is not horizontal—and in some applications this discrepancy may have a large enough effect to necessitate adjustments to the transformation. For example, one such adjustment that might be sufficient in some embodiments would be to replace the vertical coordinate Y with the value Y/cos(theta) when Y is positive and with Y*cos(theta) when Y is negative, where theta is the angle from horizontal of the line 29.
Embodiments may also be designed to track targets in three-dimensional coordinate systems in physical space. The method begins as above with translating two-dimensional device-based coordinates along axes 21 and 22 to a two-dimensional coordinate system in physical space along axes 27 and 28, where those axes span the plane 25 containing the target 26 and perpendicular to the line 29 from the device sensor 13 to the target 26. Then a third coordinate may be added based on the length of line 29. One way to determine changes in the length of line 29 is to measure the change in length of objects in the device-based coordinates as they move closer and further from the device, and assign the third coordinate based on that change. For example, if the output of the camera is used to determine the bounding box of a face, the width or height of that face can be used. If the target is circular, its radius can be used. Suppose the face or target is initially positioned a distance D from the device and its length in device coordinates is L0. That distance D will be considered the origin of the Z-axis. When the target or face approaches the device, growing larger to length L in device coordinates, its Z coordinate in physical space can be set to +/−D*(L−L0)/L0, following the rules of perspective, where the plus or minus is chosen based on the physical directions of the X and Y axes and the requirement that the physical coordinate system be right-handed or left-handed. For example, if a right-handed three-dimensional physical coordinate system is desired, and as the target moves to the right its device x coordinate increases, and as the target moves up its device y coordinate increases, then positive movement in Z is when the target approaches the camera, so the plus version Z=D*(L−L0)/L should be used.
In some embodiments, it may be desirable to compute the coordinates of one target from the coordinates of another target. For example, consider an embodiment where a target detection module provides the coordinates of the bounding box and the Euler angles of the rotation of the face, and a goal of the embodiment is to track the position of the base of the neck. The embodiment may approximate the coordinates of the base of the neck by taking the coordinates of the center of the bounding box and translating them a certain distance along a direction determined by applying the Euler angle measuring the rotation of the face in the plane of the image, where that direction is vertically downward when there is no rotation. For example, Google Inc.'s ML Kit analyzes camera images and provides values that can be used to describe the location of a face in device-based coordinates: the bounding box of a face with four values—xleft, ytop, xright, ybottom, where the x and y values are displacements along the device-based x and y axes of
Take, for example, the coordinates of the center of the face to be xface=(xleft+xright)/2 and yface=(ytop+ybottom)/2. Suppose the base of the neck is determined to be a distance of 90% of the height of the face below the center of the face. Then the base of the neck is determined to be a distance d=0.9*(ybottom−ytop) along the direction ez, so its coordinates will be xneck=xface+d*cos(ez−90) and yneck=yface+d*sin(ez−90).
This value to be used in computing the distance from the center of the face to the base of the neck, in different embodiments, can be determined empirically for a single user by examining a photograph of the user, or across a population of users by examining many photographs and computing an average value, or by an initialization process where a target is held by the user at the base of their neck and the computing device compares the location of the center of the face returned by a face detection module with the location of the target as returned by a suitable image processing module.
Step 393 represents the beginning of the algorithm. At step 31 the system indicates the user should get ready for the activity, and the system remains at step 32 until the user is ready to proceed. The indication at step 31 may be an audible prompt or a visual prompt, or an embodiment may make no prompt at all and simply wait for the user to be ready. The readiness test could involve the user interacting with the device, making an audible or visual response, or moving the target in a manner detectable by the system. The readiness prompt and test may also encompass several cycles of prompt and response. For example, consider a system where the target is the center of a golfer's face, determined by applying image processing algorithms to the output of a smartphone camera. The system might first prompt the user to look away from the device, then detect that they have. Detecting that the user has looked away may be accomplished by the image processing algorithm failing to return a target position within a specified time interval—e.g. 2 seconds—or, for image processing algorithms that can detect the rotation of the target, such as the face detection algorithm provided by the Google ML Kit machine learning processing module, by the algorithm determining the target is sufficiently rotated—say 40 degrees—for a specified time interval. Then the system prompts the user to face the device, and the system determines readiness when it detects the target is in view.
Once the user is ready, at step 33 the system determines the device-based coordinates corresponding to a fiducial position of the target in space. Some embodiments might use the first set of device-based coordinates computed after the user is ready, and others might use a sequence of device-based coordinates of the target, for example by taking an average of a set of coordinates gathered over a certain time interval. At step 34 the system determines the distance scale factor described above, or the translations between device-based coordinates and coordinates in the real, physical space of the user discussed in connection with
Suppose the method is used to train a golfer's golf swing and step 33 is used to obtain the initial position of the center of the golfer's face, applying image processing algorithms to the output of a smartphone camera. Having passed the test at step 32, the user is ready and facing the camera. The location of the center of the face in camera coordinates is computed until the coordinates demonstrate that the user has stopped moving, e.g., when the next x coordinate is close to the moving average of the prior six x coordinates. These device coordinates may then be used in step 34 to set the origin of the coordinates in the physical space of the target. Additionally, during these steps a heuristic may be applied to set the scaling factors needed, e.g. by measuring the extent of the x coordinates in the bounding box of the face detected and assuming that extent corresponds to 150 mm. The origin and scale factors need not stay constant in some embodiments and may be altered as the target moves during the next steps of
At step 35 the system determines the boundaries that will be used to determine if the target is in-bounds or out-of-bounds at step 37. The boundaries desired by the user are applied to the fiducial position in real, physical space whose coordinates were determined at step 33 to determine boundaries in real, physical space. For example, the system may allow the user to specify thresholds, for example the user might want to be alerted when the target moves more than 50 mm upward or downward, 75 mm forward or 25 mm backward. In some embodiments, the boundaries may be set based on variables such as the skill of the player, the type of sport, and the intent of the swing. For example, the boundaries may be placed further from the fiducial position for a beginning golfer than for an advanced golfer, or closer to the fiducial position if a golfer is putting rather than driving the ball. The placement of the boundaries may also depend on other factors, such as whether the user is left-handed or right-handed. The system may provide for the user to specify any of these factors, for example through a user interface on a smartphone.
In some embodiments of the present invention, the orientation of a target instead of, or in addition to, the position of a target may be determined. In
In some embodiments, the system may determine the orientation of multiple targets, or may determine the position of some targets, the orientation of other targets, and both the position and orientation of other targets in applying the method of the present invention, and the alert system may generate various alerts depending on combinations of positions and orientations that are within and outside of specified position or orientation boundaries.
In some embodiments, the boundaries may be expressed as minimum and maximum values of each coordinate in physical space.
The algorithm depicted in
The target's position is continually determined at step 36 of
At step 37, the position is compared against the boundaries determined in 35. In some embodiments, rather than minimum or maximum of coordinate values as described in
If the test at step 37 shows the target is outside the boundaries, the user can be alerted at step 38. In some embodiments the fault is stored step 38 for later display or analysis. The alert can be a sensory alert including alerts communicated visually, audibly, or through touch, e.g., lights, sounds, and/or vibrations.
Referring to the one-dimensional case depicted in
The flowchart in
Step 71 represents the start of the algorithm depicted by the flowchart of
If HYST_TEST is found to be set at step 72 of
If the position value passes HYST_TEST at step 78 of
At step 39 of
If the defining moment has occurred, the system may store indicators relevant to the activity at step 391 of
Some embodiments may, upon detecting the defining moment and storing the performance, display the results to the user at step 392. As described below at
Some embodiments may repeat the algorithm of
In some embodiments the image may be augmented by other information gathered during the activity. For example, in displaying the path of motion of a golfer's head during a golf swing, it may be useful to indicate the distance of the head from the camera, the rotation of the head to the left or right, or the tilt of the head towards the golfer's right or left shoulder, during the swing. This indication can be accomplished, for example, by altering the color or thickness used to draw the line 82 to indicate the value of such other information at the moment in time corresponding to the stored coordinates being drawn. Or an embodiment may add other graphical elements superimposed on or near some points of the line 82, for example displaying the value in degrees of the tilt of the head from vertical at the moment of time corresponding to the coordinates of the points.
Since the stored target coordinates can be ordered by time relative to the time the initial position was determined, the image displayed could display a replay of the motion of the target by moving a display object along the path. This type of animation is well known to those skilled in the art. The animation of the motion of the target could also indicate when the when the target moved outside of a boundary by turning the color of the boundary red until the target moves back within the boundaries. Animation may also be used to indicate other information gathered during the activity, for example in the display of the motion of a golfer's head during a golf swing, an embodiment may include a rectangle in the display and alter the orientation of the rectangle to reflect the tilt of a golfer's head at corresponding moments of the activity. If the activity is a golf swing, the image could also include the amount of time elapsed from the moment when the initial position was determined until the defining moment representing the impact of the club with the ball, as described at step 39 of
In
In addition to visualization, embodiments can provide query, sorting and statistical functionality that may be applied to the data collected by the device. For example, consider the embodiment of
Suppose an embodiment also stores an indicator of the result of the swing. The indicator can be qualitative—for example an embodiment could ask the user if they felt the swing was good or bad—or quantitative, for example, data on the velocity or path of the golf ball after the strike or the distance the golf ball traveled, perhaps gathered by integration of the device with a launch monitor such as the TrackMan. The user could then compare the visualizations of their good swings with their bad swings to help in their training.
More complex analytical techniques may be also be applied to the data. For example,
In
In
In
In
Step 1710 represents the beginning of the algorithm. At step 1701, the processor retrieves the data relevant to the activity; in some embodiments the data may be retrieved from storage associated with the processor, for example, the non-volatile memory of a smartphone, and in some embodiments, the data may be stored in external storage and retrieved over a network, for example, requesting the data from a remote database using the functionality provided by Google Inc.'s Cloud Firestore product in the Firebase offering. At step 1702, various factors of the activity are computed. For example, if the activity is a golf swing, relevant factors may include: the number of times each virtual boundary was crossed; the moment of the start of the swing, the top of the swing, and impact with the ball; and the ratio of the time interval from the start of the swing to the top of the swing to the time interval from the top of the swing to impact with the ball, called the rhythm of the swing. Steps 1703, 1707 and 1708 represent the algorithm looping through a set of faults. At step 1704, each fault is individually considered. In the example of
Embodiments may use many types of rules for determining a fault. The above example fault has a set of rules that include considering the type of equipment used (golf club in this example), considering whether or not a particular boundary has been crossed, and considering the moment that a particular boundary has been crossed relative to other defined moments in the swing. To ease development and implementation of the rules processing, note that some example rules may be thought of as conditions with parameters, such as which types of equipment may qualify (“drive”, “iron” and “wedge” in
The faults detected by the algorithm illustrated in
A user may elect to repeatedly perform an activity during a continuous period of time to aid in training. For example, in training to improve a golf swing, a user may perform ten golf swings—e.g., by having the system perform the algorithm of
To aid in training, an embodiment of the present invention may indicate to the user a fault with each performance of the activity. Some embodiments may further improve training by summarizing the faults across all the activities in a session. Some embodiments may summarize faults for subsets of the activities in a session. For example, in training to improve a golf swing, an embodiment may summarize faults according to the club used to perform the activity, e.g., summarizing faults for a driver and faults for an iron and faults for a putter. Some embodiments may further improve training by retaining the most salient fault or faults from a training session and displaying it to the user at their next training session, as a fault or faults to focus on eliminating from their performance of the activity. Some embodiments may then provide an indication to the user of how well they have progressed in eliminating the fault or faults from their performance of the activity.
It may be advantageous for a user to associate with an instructor to aid the user in training. An embodiment of the present invention allows the instructor, thus associated with the user, to view a display of the stored coordinates of the performance of the activity. An embodiment may allow the instructor to view the faults that were detected in the user's performance of the activity. The viewing is provided in real time, as the coordinates are stored in a server system, although in other embodiments the viewing is provided at a later time.
It may be further advantageous for the associated instructor to direct the training for the user. An embodiment of the present invention allows the instructor to provide his own fixes for faults detected by the system. An embodiment of the present invention may allow the instructor to enable and disable the detection of particular faults for the user. An embodiment of the present invention also allows the instructor to specify which fault the user should focus on eliminating from the user's performance of the activity.
Some embodiments of the present invention allow an instructor to add additional faults to be detected, or change the algorithm used to detect particular faults. For example, if an embodiment of the present invention includes a smartphone app 1301 of
Some embodiments of the system allow a user to associate with an instructor to aid in the user's training, as depicted in the method of
Some embodiments implement the method of
In embodiments of the present invention as depicted in
Step 2010 represents the beginning of the algorithm. At step 2001 of
At step 2003, the determined angle is tested to see if the smartphone is oriented in a position so that the user is visible to the smartphone camera. For example, if the golfer is to be positioned four feet from the camera—e.g., the distance from 13 to the feet of the golfer 11 in
At step 2005, the phone has been determined to be positioned correctly and the user can move away from the phone. At step 2006, the target detection capability of smartphone 13—e.g., 1202 of
At step 2007, the location of the target is tested to see if it is in the desired position in the camera image. For example, in an embodiment that uses the face of the user as a target and is designed to train the user in a golf swing, it is desirable that the face be near the top of the camera image so that the golfers' body can be photographed in embodiments that store images of the golfer's swing, or so that other targets, such as the position of the golf club, can also be detected in the course of the swing. But the face should not be too near the top of the image, because the golfer's face may move vertically during the course of the swing. For example, in some embodiments with an image height of 320 pixels, it may be desirable that the top of the face appear lower than 5 pixels from the top of the image, and higher than 100 pixels from the top of the image. As with the angular limits in the tilt of the smartphone, these image position limits can be set empirically or by analysis of the geometry.
If the target is not found within the desired limits in the image, then the user is told, at step 2008, to either move back from or forward towards the smartphone 103. If the location of the target is too close to the top of the image, the user is told to move back; due to the tilt of the smartphone, moving back from the smartphone will cause the location of the target to descend further from the top of the image. Similarly, if the location of the target in the image is too far from the top of the image, the user may be instructed to move forward towards the smartphone 13. The method of
Embodiments of the system may be used to train the motion of a wide variety of activities. The system may be used to train motions from a set of sports activities requiring a swing, e.g., golf, hockey, baseball, softball, tennis, badminton, ping pong, volleyball, racquetball, martial arts, cricket, bowling, or lacrosse. In addition, the system may be used to train the motion for a wide variety of activities ranging from medical surgical procedures, such as a hand movement, to the correct method to lift boxes in a warehouse, employing the leg muscles while avoiding straining one's back. In order to train a given motion, the system may track targets including body parts such as the face, head, knee or hip, or equipment such as clubs, rackets, bats and balls, by incorporating image processing algorithms capable of detecting the target.
The present invention may be embodied in many different forms, including, but in no way limited to, computer program logic for use with a processor (e.g., a microprocessor, microcontroller, digital signal processor, or general purpose computer), programmable logic for use with a programmable logic device (e.g., a Field Programmable Gate Array (FPGA) or other PLD), discrete components, integrated circuitry (e.g., an Application Specific Integrated Circuit (ASIC)), or any other means including any combination thereof.
Computer program logic implementing all or part of the functionality previously described herein may be embodied in various forms, including, but in no way limited to, a source code form, a computer executable form, and various intermediate forms (e.g., forms generated by an assembler, compiler, networker, or locator.) Source code may include a series of computer program instructions implemented in any of various programming languages (e.g., an object code, an assembly language, or a high-level language such as Fortran, C, C++, JAVA, Dart, Swift, JavaScript, or HTML) for use with various operating systems or operating environments. The source code may define and use various data structures and communication messages. The source code may be in a computer executable form (e.g., via an interpreter), or the source code may be converted (e.g., via a translator, assembler, or compiler) into a computer executable form.
The computer program may be fixed in any form (e.g., source code form, computer executable form, or an intermediate form) either permanently or transitorily in a tangible storage medium, such as a semiconductor memory device (e.g., a RAM, ROM, PROM, EEPROM, or Flash-Programmable RAM), a magnetic memory device (e.g., a diskette or fixed disk), an optical memory device (e.g., a CD-ROM), a PC card (e.g., PCMCIA card), or other memory device. The computer program may be fixed in any form in a signal that is transmittable to a computer using any of various communication technologies, including, but in no way limited to, analog technologies, digital technologies, optical technologies, wireless technologies, networking technologies, and internetworking technologies. The computer program may be distributed in any form as a removable storage medium with accompanying printed or electronic documentation (e.g., shrink wrapped software or a magnetic tape), preloaded with a computer system (e.g., on system ROM or fixed disk), or distributed from a server or electronic bulletin board over the communication system (e.g., the Internet or World Wide Web).
Hardware logic (including programmable logic for use with a programmable logic device) implementing all or part of the functionality previously described herein may be designed using traditional manual methods, or may be designed, captured, simulated, or documented electronically using various tools, such as Computer Aided Design (CAD), a hardware description language (e.g., VHDL or AHDL), or a PLD programming language (e.g., PALASM, ABEL, or CUPL).
While the invention has been particularly shown and described with reference to specific embodiments, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention as defined by the appended clauses. While some of these embodiments have been described in the claims by process steps, an apparatus comprising a computer with associated display capable of executing the process steps in the clams below is also included in the present invention. Likewise, a computer program product including computer executable instructions for executing the process steps in the claims below and stored on a computer readable medium is included within the present invention.
The embodiments of the invention described above are intended to be merely exemplary; numerous variations and modifications will be apparent to those skilled in the art. All such variations and modifications are intended to be within the scope of the present invention as defined in any appended claims.
This application claims the benefit of U.S. provisional patent application Ser. No. 62/864,114, filed Jun. 20, 2019, and U.S. provisional patent application Ser. No. 62/890,652, filed Aug. 23, 2019. Each of these application is hereby incorporated, in its entirety, by reference.
Number | Date | Country | |
---|---|---|---|
62864114 | Jun 2019 | US | |
62890652 | Aug 2019 | US |