The present disclosure relates generally to acceleration measurements and more particularly to determining displacement from acceleration data.
A point-to-point motion of a human hand theoretically produces a symmetric, normalized acceleration profile constrained to begin and end with zero velocity and acceleration. The raw data measured from consumer grade accelerometers during such point-to-point motion exhibits none of the above characteristics due to thermal noise, mechanical noise, bias, instability, inaccurate gravity compensation, quantization errors, varying sampling rates, and other inherent inaccuracies in the devices themselves. Neither deterministic nor stochastic filtering is sufficient to clean up the data to the degree required to determine displacement because of the above identified problems.
Accordingly, there is an opportunity to establish a method and apparatus for determining accurate displacement from raw acceleration data.
The accompanying figures, where like reference numerals refer to identical or functionally similar elements throughout the separate views, together with the detailed description below, are incorporated in and form part of the specification, and serve to further illustrate embodiments of concepts that include the claimed invention, and explain various principles and advantages of those embodiments.
Skilled artisans will appreciate that schematic elements in
Disclosed is a method and apparatus for determining displacement from raw acceleration data. The method includes filtering the raw acceleration data and partitioning, for an axis of acceleration, filtered acceleration data into a sequence of segments with at least one positive acceleration time segment and at least one negative acceleration time segment. The method further includes force fitting, by a processor, each positive acceleration time segment and an adjacent negative acceleration time segment into a model positive and negative acceleration pair curve such that a cumulative velocity value of the model positive and negative acceleration pair curve is equal to zero. Furthermore, the method includes double-integrating the model positive and negative acceleration pair curves to obtain the displacement corresponding to the acceleration data.
The disclosed method and apparatus modifies raw acceleration measurements based on an understanding of human motion symmetries and constraints. The method can be used in gesture recognition and user input applications. A user will be able to move a device through space representing different shapes and symbols that correspond to specific actions and the method and apparatus reconstructs the displacement from collected acceleration data which is modified according to the teachings of this disclosure. The reconstructed displacement may be used by a device as a gesture control or data input.
For example, a user input movement in space may follow letters of the alphabet or numerals. If the user motions to draw letters or numerals in space, the shape or the displacement obtained using the disclosed embodiments is close to the original shape of the letter or numeral generated by the user. The present disclosure may be used to determine displacement in three dimensional space from accelerometer measurements.
Further, a compound point-to-point movement is equivalent to multiple simple point-to-point movements or basic motion units (BMUs). The compound movements can be made up of discrete movements or be one continuous movement. Each of the simple and compound movements in three dimensions can be resolved into single-axis motions along each principal axis namely, the X axis, the Y axis, and the Z axis.
The method 100 receives 102 the acceleration data as a user performs a gesture. In one embodiment, the received acceleration data is a raw acceleration data. For example, the raw acceleration data may be a simple point-to-point motion, human hand point-to-point motion, or a compound point-to-point motion in a two-dimensional space or a three-dimensional space.
The acceleration time waveforms for a simple point-to-point motion or a compound point-to-point movement can be characterized by a sequence of positive and negative area segments. Also, the basic units of human hand motion can be plotted on acceleration time curves which can be used to reproduce displacement in accordance with the embodiments described. The continuous motion in three dimensional space will produce compound movements which can be expanded into basic motion units to generate accurate displacements.
In order to explain the steps of the flowchart 100 in detail, the flowchart 100 is explained with an example of obtaining displacement for a hand moving in a gesture similar to a letter ‘B’ traced in space. In order to capture acceleration data, an accelerometer may be held in the hand while tracing the ‘B’ shape or may be attached to a finger or wrist. The accelerometer may be part of another device such as a mobile electronic computer, a mobile phone, a tablet computing device, a digital personal assistant, a GPS receiver, a gaming controller, a remote control, or another type of electronic device. Although, the flowchart is explained using the example of tracing a ‘B’, one skilled in the art should understand that the example is merely for illustrative purposes and the invention should not be limited to the embodiments described here. The displacement can be calculated for the various other letters, numerals, shapes, patterns, etc.
Returning to
As shown in
In accordance with the embodiments, the filtering includes smoothing. The smoothing can include computing an X-point moving average of the received acceleration data, where X is greater than one. In another embodiment, the filtering includes noise suppression. The noise suppression further includes zeroing out any acceleration data with an amplitude absolute value below a predetermined threshold value. The predetermined threshold value can be set by a manufacturer of a filter or the user. In still another embodiment, the filtering includes bias elimination. Bias elimination can be done by determining an average value of the acceleration data and subtracting the average value from each datum of the acceleration data.
Therefore, the process of filtering 104 may employ various methods of filtering to filter the raw acceleration data in order to generate the filtered acceleration data represented by the acceleration time curves 340, 350, 360, for example, for the letter ‘B’.
Referring back to
Referring to
The partitioning 106 identifies a sequence of positive and negative acceleration time segments in the filtered acceleration data. In other words, the partitioning 106 partitions each of the filtered acceleration time waveform into a sequence of positive and negative acceleration time segments. For example, the partitioning 106 partitions the acceleration time curve 340 on the X axis at the input side to produce the output waveform 440. The output waveform, i.e., the acceleration time waveform 440, produced after the partitioning process 106 includes the identified positive and the negative acceleration time segments. In the present example, at the X-axis, on the acceleration time curve 440, the portion 442 represents the first ‘positive segment’, the portion 444 represents the next ‘negative segment’, the portion 446 represents the next ‘positive segment’, the portion 448 represents the next ‘negative segment’, and the portion 450 represents the next ‘positive segment’. Therefore, the step of partitioning 106 involves identifying the sequence of positive and negative acceleration time segments, for example, PNPNP in the acceleration time waveform 440 for the example letter ‘B’.
Similarly, the partitioning 106 identifies the positive and the negative segments for the acceleration time curve 350 on the Y axis to produce the acceleration time curve 460. In the acceleration time waveform 460 on the Y axis, the positive and negative acceleration time segments are identified, for example, NPPNNPNP. Further, because the Z axis now represents zero acceleration, the output acceleration time curve 480 on the Z axis is same as the input acceleration time curve 360. In other words, because, the Z axis represents a zero acceleration curve, the process of partitioning 106 does not identify positive and negative acceleration time segments for the Z axis in the current example. However, one skilled in art should understand that in case the acceleration time curve on the Z axis represents non-zero acceleration, the partitioning 106 similarly identifies the positive and negative segments for the Z axis.
Referring back to
In the present example of tracing the letter ‘B’, no segments are needed to be pruned because the process of filtering 104 and partitioning 106 did not result in any invalid positive and negative acceleration time segments. However, one skilled in art should understand that in case the filtering and the partitioning process create invalid positive and negative acceleration time segments, the process of pruning 108 prunes the acceleration time waveforms 440, 460, 480 to remove the unwanted positive and negative acceleration time segments.
After pruning 108, the method 100 determines 110 a cumulative velocity value (C.V.V) for the remaining sequence of positive and negative acceleration time segments. In other words, the method 100 then calculates a cumulative velocity value for each of the acceleration time curves 440, 460, 480 on the X axis, Y axis, and the Z axis after the pruning 108. In one embodiment, the cumulative velocity value is calculated by summing an integration of each positive and negative acceleration time segment.
The method 100 further moves to determining 112 if each cumulative velocity value equals to zero. If the cumulative velocity value is not equal to zero, the method 100 subtracts 114 a portion of the cumulative velocity value from each positive acceleration time segment and each negative acceleration time segment. In one embodiment, the method 100 subtracts an equal fraction of the cumulative velocity value from each positive acceleration time segment and each negative acceleration time segment. The above steps results in an updated cumulative velocity value, for each of the X axis, Y axis, and the Z axis, equal to zero. Thereafter, the cumulative velocity value for each of the acceleration time curves on the X axis, Y axis, and the Z axis will be zero. Consequently, the net resultant area under each of the acceleration time curves on each axis equals zero.
The method 100 then moves to expanding 116 the sequence of segments into matched pairs of positive and negative segments such that the cumulative velocity value for each matched pair equals to zero. In other words, each of the positive and negative acceleration time segments produced after step 114 is expanded 116 to produce a matched pair of positive and negative acceleration time segments such that the areas under each positive and the corresponding matched negative acceleration time segment are the same and the net resultant combined area is zero. The process of expansion is explained in detail with reference to
For example, the acceleration time curve 510, which is same as the acceleration time curve 440 of
Consequently, the matched pair of segments 542, 544 is formed at the acceleration time curve waveform 540 such that the cumulative velocity value for the matched pair equals zero and the sum of the net resultant area of the matched pair of segments also equals zero. Further, the positive segment 446 at the acceleration time curve 510 is modified into two positive segments 548, 550 at the acceleration time curve 540, such that the area of the positive segment 548 is same as the area of the preceding negative segment 546 resulting in the next matched pair of segments having zero cumulative velocity value and zero net resultant total area.
Furthermore, the negative segment 448 at the acceleration time curve 510 is modified into two negative segments 552, 554 at the acceleration time curve 540 such that the area of the first negative part 552 is same as the area of the preceding positive segment 550 resulting in zero cumulative velocity value of the matched pair. Therefore, the next matched pair of positive segment 550 and negative segment 552 is formed such that the cumulative velocity value of the matched pair equals zero and the sum total of the area under the matched pair of segments equals zero. The negative segment 554 at the acceleration time curve 540 has the area same as the last segment 556 at acceleration time curve 510. This is true because the cumulative velocity must be zero due to
The process of expansion is similarly followed for the acceleration time curve 520 on the Y axis to produce the acceleration time curve 560. For the Z axis, in this example, because there is no acceleration, the acceleration time curve 580 is same as the acceleration time curve 530.
Therefore, the process of expansion 116 modifies each of the acceleration time curves on the X axis, Y axis, and Z axis into basic motion units to form matched pairs of positive and negative acceleration time segments such that the cumulative velocity value for each matched pair equals to zero.
Referring back to
In one embodiment, the method 100 constructs the model positive and negative acceleration pair curve in accordance with a “minimum jerk” model. The ‘minimum jerk’ model refers to the physiological fact that natural human movements tend to minimize jerk, which is the time-derivative of acceleration. Thus, a deliberate movement that has a large-amplitude, small-time-period, for example, “model positive-and-negative acceleration pair curve”, would consequently exhibit significant jerk.
The method 100 uses a mathematical model to fit a particular curve shape to each segment given by the minimum jerk model. The curve, normalized in amplitude and time is given by the equation a(t)=120*t̂3−180*t̂2+60*t where t is between 0 and 1. This curve can be scaled in time to fit any time range and it can be scaled in amplitude to match any area. The shape of this curve is the “ideal” theoretical acceleration curve that is force-fitted over the real-life, irregularly-shaped curves. The force-fitting matches the time ranges and areas.
In the present example,
Thus, the acceleration time waveforms 610 and 620 depict the model acceleration curves and the strokes provide the hint for the corresponding displacement of the model acceleration waveforms relevant to the letter ‘B’ of the
Referring back to
In the present example, the model positive and negative acceleration pair curves for the letter ‘B’ are double integrated to produce the reconstructed displacement depicted in
Similarly, on the Y axis, the plot 820 represents the acceleration time curves 822 and 824. The dotted acceleration time curve 822 represents the received raw acceleration data, for example, waveform 220 as represented in
Further, on the Z axis, the plot 830 represents the acceleration time curves 832 and 834. The acceleration time curve 832 is the received raw acceleration data, for example, as represented by the waveform 230 on
In addition, the right hand side of
The accelerometer 902 provides the raw acceleration data. The accelerometer 902 may be any accelerometer such as an analog interface accelerometer, pulsewidth interface accelerometer, or 12C interface accelerometer. The accelerometer 902 alone is sufficient only if the orientation of the device 900 remains constant during its motion, for example, if the device 900 is not rotating while it is translating. If the device 900 changes the orientation during motion, the X, Y, and Z axes also change and the acceleration data will be measured with respect to a changing coordinate reference frame. In such a scenario, an integrated accelerometer, gyroscope, compass in conjunction with a fusion algorithm may be used to provide acceleration with respect to a fixed reference frame.
Further, data from the accelerometer may suffer from thermal noise, mechanical noise, bias, instability, inaccurate gravity compensation, quantization errors, varying sampling rates, and other inaccuracies. The receiver 904 enables the apparatus 900 to receive the raw acceleration data, including its inaccuracies, from the accelerometer 902. If applicable, the receiver 904 converts the acceleration data received from the accelerometer 902 to digital data for use by the processor 910.
The device 900 further includes a filter 906 configured to filter 104 the acceleration data received 102 by the receiver 904. In one embodiment, the filter 906 is configured to compute an X-point moving average of the received acceleration data, where X is greater than 1. Further, in another embodiment, the filter 906 zeroes out any acceleration data with an amplitude absolute value below a predetermined threshold value. In still another embodiment, the filter 906 may determine an average value of the acceleration data and subtract the average value from each datum of the acceleration data. See
The device 900 further includes a partitioner 908 configured to partition 106, for an axis of acceleration, filtered acceleration data into a sequence of segments with at least one positive acceleration time segment and at least one negative acceleration time segment. See
When the processor 910 determines that the cumulative velocity value equals zero, the processor 910 performs the expansion process 116. Subsequently, the processor 910 force fits 118 each positive acceleration time segment and an adjacent negative acceleration time segment, after the expansion process, into a model positive and negative acceleration pair curve such that a cumulative velocity value of the model positive and negative acceleration pair curves is equal to zero. The processor 910 may be implemented as a microcontroller, a digital signal processor, hard-wired logic and analog circuitry, or any suitable combination of these.
Finally, the double integrator 912 double integrates 120 the model positive and negative acceleration pair curves to produce the reconstructed displacement corresponding to the received acceleration data.
It is to be understood that
Therefore, the disclosed method adjusts received acceleration measurements to compensate for accelerometer data inaccuracies. The method can be used in gesture recognition and user input applications. A user will be able to move an accelerometer in space in different shapes, patterns, and symbols that correspond to desired actions such as text entry, gesture control, or another type of input. Using these embodiments, displacement can be calculated from the received acceleration data and inaccuracies can be minimized.
In the foregoing specification, specific embodiments have been described. However, one of ordinary skill in the art appreciates that various modifications and changes can be made without departing from the scope of the invention as set forth in the claims below. Accordingly, the specification and figures are to be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within the scope of present teachings.
The benefits, advantages, solutions to problems, and any element(s) that may cause any benefit, advantage, or solution to occur or become more pronounced are not to be construed as a critical, required, or essential features or elements of any or all the claims. The invention is defined solely by the appended claims including any amendments made during the pendency of this application and all equivalents of those claims as issued.
Moreover in this document, relational terms such as first and second, top and bottom, and the like may be used solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions. The terms “comprises,” “comprising,” “has”, “having,” “includes”, “including,” “contains”, “containing” or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises, has, includes, contains a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. An element proceeded by “comprises . . . a”, “has . . . a”, “includes . . . a”, “contains . . . a” does not, without more constraints, preclude the existence of additional identical elements in the process, method, article, or apparatus that comprises, has, includes, contains the element. The terms “a” and “an” are defined as one or more unless explicitly stated otherwise herein. The terms “substantially”, “essentially”, “approximately”, “about” or any other version thereof, are defined as being close to as understood by one of ordinary skill in the art, and in one non-limiting embodiment the term is defined to be within 10%, in another embodiment within 5%, in another embodiment within 1% and in another embodiment within 0.5%. The term “coupled” as used herein is defined as connected, although not necessarily directly and not necessarily mechanically. A device or structure that is “configured” in a certain way is configured in at least that way, but may also be configured in ways that are not listed.
It will be appreciated that some embodiments may be comprised of one or more generic or specialized processors (or “processing devices”) such as microprocessors, digital signal processors, customized processors and field programmable gate arrays (FPGAs) and unique stored program instructions (including both software and firmware) that control the one or more processors to implement, in conjunction with certain non-processor circuits, some, most, or all of the functions of the method and/or apparatus described herein. Alternatively, some or all functions could be implemented by a state machine that has no stored program instructions, or in one or more application specific integrated circuits (ASICs), in which each function or some combinations of certain of the functions are implemented as custom logic. Of course, a combination of the two approaches could be used.
Moreover, an embodiment can be implemented as a computer-readable storage medium having computer readable code stored thereon for programming a computer (e.g., comprising a processor) to perform a method as described and claimed herein. Examples of such computer-readable storage mediums include, but are not limited to, a hard disk, a CD-ROM, an optical storage device, a magnetic storage device, a ROM (Read Only Memory), a PROM (Programmable Read Only Memory), an EPROM (Erasable Programmable Read Only Memory), an EEPROM (Electrically Erasable Programmable Read Only Memory) and a Flash memory. Further, it is expected that one of ordinary skill, notwithstanding possibly significant effort and many design choices motivated by, for example, available time, current technology, and economic considerations, when guided by the concepts and principles disclosed herein will be readily capable of generating such software instructions and programs and ICs with minimal experimentation.
The Abstract of the Disclosure is provided to allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in various embodiments for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separately claimed subject matter.