Controller and method for determining a swimming stroke

By using accelerometers and filter state machine algorithms to identify swimming strokes, the problem of high power consumption in existing technologies is solved, achieving low-power and accurate stroke recognition, which is applicable to the recognition of various swimming strokes.

CN116018091BActive Publication Date: 2026-02-17ROBERT BOSCH GMBH +1
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN202180052558.2
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-08-28
Filing Date
2021-07-22
Publication Date
2026-02-17
Estimated Expiration
2041-07-22

AI Technical Summary

Technical Problem

Existing swimming stroke segmentation solutions mainly rely on gyroscopes or magnetometers, resulting in high power consumption and failing to effectively reduce the battery life of wearable devices.

Method used

By employing single-axis or multi-axis accelerometers combined with filters and state machine algorithms, swimming strokes are determined through the analysis of filtered and envelope signals. Combined with an activity detection module, power consumption is reduced and the accuracy of stroke counting is improved.

Benefits of technology

It effectively reduces power consumption, improves the accuracy of swimming stroke recognition and the battery life of wearable devices, and is suitable for the recognition of various swimming strokes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116018091B_ABST
    Figure CN116018091B_ABST
Patent Text Reader

Abstract

The controller (110) is connected to receive an input signal (120) from at least one accelerometer (102). The controller (110) comprises an interface (104) facilitating input and output pins / ports, a filter module (106) for filtering the input signal (120) from the at least one accelerometer (102). The controller (110) is characterized by a stroke segmentation module (108) adapted to determine at least two parameters comprising a first parameter (208) and a second parameter (210) from the filtered signal (122), generate an envelope signal (206) using the at least two parameters and the filtered signal (122), and determine a swimmer's swimming stroke based on the filtered signal (122) and the envelope signal (206). Furthermore, an activity detection module (112) is used in conjunction with the stroke segmentation module (108). The present invention obtains stroke segments based on input signals from at least one accelerometer (102) only, thereby providing reduced cost and complexity.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present invention relates to a controller for determining swimming stroke of a swimmer and a method thereof. BACKGROUND

[0002] Currently available products are using IMU sensor based stroke segmentation solutions. In the existing swimming tracking solutions, swimming stroke segmentation is mainly done using gyroscopes or magnetometers. However, power consumption of gyroscopes or magnetometers is higher than that of accelerometers.

[0003] According to prior art US8265900, a motion analysis apparatus for sports is disclosed. A portable wrist-worn apparatus for determining information about human body movements while swimming is described. The apparatus comprises a watertight housing containing: an accelerometer operable to generate acceleration signals; a processor operable to process the acceleration signals so as to generate one or more measures relating to human body movements; and means for feeding back the one or more measures to a user. The accelerometer can be operable to generate acceleration signals along an axis parallel to a proximal-distal axis of a user's arm in use, and / or the accelerometer can be operable to generate acceleration signals along an axis parallel to a back-of-hand-palm axis of a user's hand in use. The apparatus can also be used for sports other than swimming. BRIEF DESCRIPTION OF DRAWINGS

[0004] Embodiments of the present disclosure are described with reference to the following drawings,

[0005] Figure 1 a block diagram of a controller for determining swimming stroke of a swimmer according to an embodiment of the present invention is illustrated;

[0006] Figure 2 graphical waveforms of a filtered signal and an envelope signal according to an embodiment of the present invention are illustrated;

[0007] Figure 3 a method of determining swimming stroke of a swimmer according to the present invention is illustrated;

[0008] Figure 4 generation of a fall rate of an envelope signal according to an embodiment of the present invention is illustrated;

[0009] Figure 5 identification of a raw time of a stroke segment according to an embodiment of the present invention is illustrated, and

[0010] Figure 6 a detailed flowchart of a method for determining swimming stroke of a swimmer according to the present invention is illustrated. DETAILED DESCRIPTION

[0011] Figure 1 A block diagram of a controller for determining a swimming stroke of a swimmer in accordance with an embodiment of the present application is illustrated. The controller 110 is connected to receive an input signal 120 from at least one sensor, i.e. an accelerometer 102. The accelerometer 102 is a single axis sensor or a multi-axis sensor. The controller 110 comprises an interface 104 for facilitating input and output pins / ports, and a filter module 106 for filtering the input signal 120 from the at least one accelerometer 102. The controller 110 is characterized by a stroke segmentation module 108 adapted to determine at least two parameters, including a first parameter 208 (shown in Figure 2 Figure 2 shown in Figure 2 shown in

[0012] The filtered signal 122 consists of peaks corresponding to the swimming stroke. The stroke segmentation module 108 calculates the first parameter 208 present in the filtered signal 122, which is further used to calculate the second parameter 210. The first parameter 208 of a previous stroke segment is overwritten by the first parameter 208 of the current stroke segment. The first parameter 208 includes the local minima of the peaks in the filtered signal 122, and the second parameter 210 includes the relative amplitude of the peaks based on the calculated local minima, i.e. the first parameter 208. The filter module 106 is either a part of the stroke segmentation module 108 or external to it.

[0013] With respect to the calculation of the second parameter 210, the stored first parameter 208 is used to calculate the second parameter 210 whenever the filtered signal 122 starts to descend after rising to a peak. The second parameter 210 is calculated as the distance from the local minima of the peak to the highest value of the peak, as shown in Figure 2

[0014] The output signal 124 from the stroke segmentation module 108 and the activity detection module 112 together are used to update the stroke count in the memory 118.

[0015] ​​The controller 110 is an electronic control unit for processing signals received from the sensors. The controller 110 comprises a memory 118, such as a random access memory (RAM), a read only memory (ROM), an analog to digital converter (ADC) and vice versa DAC, a clock, a timer, and a processor connected with the components through a bus channel. The aforementioned modules are logic or instructions stored in the memory 118 and accessed by the processor following defined routines. The internal components of the controller 110 are not used or interpreted as prior art and it must not be understood in a limiting way.

[0016] The controller 110 can be used in a wearable device. The wearable device 100 is any one selected from, but not limited to, a smart watch, a smart band, a smart ring, and the like.

[0017] Figure 2 A graphical waveform of the filtered signal and the envelope signal is illustrated in accordance with an embodiment of the present application. The graph 200 depicts the signals along with a first parameter 208 and a second parameter 210. The X-axis 204 represents the number of samples and the Y-axis 202 represents the acceleration in suitable units, such as m / s 2 ). The filtered signal 122 is shown as a sinusoidal like wave. The envelope signal 206 is generated depending on the filtered signal 122. The first parameter 208 is represented by the lowest point of the valley. The second parameter 210 is represented by the line segment. Whenever reference is made to the filtered signal 122 and the envelope signal 206, it is understood as the value in the respective signal and it must not be understood in a limiting way.

[0018] The operation and working of the stroke segmentation module 108 is now explained with reference to Figure 1 and Figure 2 . The stroke segmentation module 108 is adapted to generate the envelope signal 206 based on the fall rate and the state of an internal state machine, which has two states, namely a “follow” state and a “fall” state. The envelope signal 206 is generated with reference to the filtered signal 122. The stroke segmentation module 108 identifies the time instances of the original stroke segment based on the envelope signal 206 and the filtered signal 122 and determines the true time instances of the stroke segment after verification.

[0019] The stroke segmentation module 108 is configured to generate a fall rate of the envelope signal 206 before identification of the original time of the stroke segment. The identification of the original time of the stroke segment and determination of the true time of the stroke segment after verification of the original time is performed subsequently. During the generation of the fall rate, the stroke segmentation module 108 is configured to set the initial state of the internal state machine to the “fall” state and compute the fall rate of the envelope signal 206 based on the second parameter 210. The initial value of the envelope signal 206 is set equal to the value of the filtered signal 122. The stroke segmentation module 108 then computes the value of the envelope signal 206 as the sum of the current value of the envelope signal 206 and the value of the fall rate. The fall rate depends on the configurable decay time of the envelope signal 206. For example, if the total decay time (T) of the envelope signal 206 is set equal to 2.5 seconds, the fall rate of the envelope signal 206 is computed based on the time since the envelope signal 206 started falling. The fall time is divided into three groups, namely [0-T / 2], [T / 2-T] and [greater than T].

[0020]

[0021] wherein

[0022] The coefficients ml, m2 and a2 as the envelope fall rate parameters depend on the second parameter 210 and are computed as follows:

[0023]

[0024]

[0025]

[0026] The value of the coefficient “M” is kept at 0.6 and the coefficient “K” is kept at 0.2. It is noted that the values provided above are for ease of understanding and can be changed as per the requirement. This is not to be construed in a limiting manner.

[0027] In the identification of the original time instance, the swim stroke segmentation module 108 is configured to maintain the "falling" state of the internal state machine as long as the filtered signal 122 is below the envelope signal 206. The envelope signal 206 continues to decay at the generated falling rate. The switching of the internal state machine is explained below. When the filtered signal 122 increases and crosses the envelope signal 206, the state of the internal state machine switches from the "falling" state to the "following" state. Now, the envelope signal 206 follows the filtered signal 122. In another example, when the filtered signal 122 becomes less than the envelope signal 206, the state of the internal state machine switches from the "following" state to the "falling" state. Now the envelope signal 206 decays at the re-computed falling rate. The switching from the "following" state to the "falling" state is the identification of the original time instance of the swim stroke segment.

[0028] In the determination of the true time instance of the swim stroke segment, the swim stroke segmentation module 108 is configured to validate the original time instance of the swim stroke segment of the swim stroke with reference to a configurable but empirically derived value. The validated swim stroke is considered as the determined swim stroke segment. For example, if 1.5 seconds is considered as a fast swim stroke rate and 3 seconds is considered as a slow swim stroke rate, the swim stroke rate threshold is set equal to 1.3 seconds. If the time difference between the original time instance of the swim stroke segment and the previous time instance of the swim stroke segment is less than 1.3 seconds, the current original time instance is classified as a false segmentation time instance. But if the time difference is greater than 1.3 seconds but less than the maximum swim stroke periodicity limit of 9 seconds, the current original time instance is classified as a true segmentation time instance. This is an example and is not to be construed as a limitation.

[0029] According to an embodiment of the present invention, there is provided an activity detection module 112. The activity detection module 112 comprises an extraction module 114 and a decision engine 116. The extraction module 114 extracts feature vectors from the filtered signal 122 and the input signal 120. The decision engine 116 classifies the detected activity as a swim activity / segment or a non-swim activity / segment. The activity detection module 112 can be used independently for the defined purpose.

[0030] The feature vectors used by the activity detection module 112 are selected from the group comprising: the maximum value of the velocity of the current swim stroke segment (MaxVel or ), the difference between the maximum value of the velocity of the current swim stroke segment (MaxVel cr ) and the maximum value of the velocity of the previous swim stroke segment (MaxVel pr ), the difference between the average value of the acceleration data of the current segment (MeanX / Y / Z cr ) and the average value of the acceleration data of the second previous segment (MeanX / Y / Z sp ), the peak point of the filtered acceleration data of the current segment (PeakPoint cr) between the peak point (PeakPoint pr ) of the filtered acceleration data of the previous segment, the difference between the maximum value (MaxFiltAccX) of the filtered acceleration data and the minimum value (MinFiltAccX) of the filtered acceleration data for the swim stroke segment, and the rate of change (RateAccelX / Y / Z cr ) of the acceleration. The subscripts used correspond to: cr - current; pr - previous; sp - second previous; Th - threshold.

[0031] The workings of the decision engine 116 are explained. Initially, the decision engine 116 calculates MaxVel cr and checks a first condition. If MaxVel cr exceeds a velocity threshold, the decision engine 116 determines that it is a non-swim stroke. If the first condition is not passed, the decision engine 116 checks a second condition, which includes whether the difference between MaxVel cr and MaxVel pr exceeds a velocity difference threshold. Along with the second condition, a third condition is checked, which includes whether the difference between MeanX / Y / Z cr and MeanX / Y / Z sp exceeds a mean difference threshold. If both the second and third conditions are satisfied, the decision engine 116 determines a non-swim stroke. If neither of the second and third conditions are also passed, the decision engine 116 checks a fourth condition, which includes the polarity of the peak points of the current swim stroke segment and the previous swim stroke segment. If the polarity is opposite, the decision engine 116 checks a fifth condition, which includes whether the amplitude difference between PeakPoint cr and PeakPoint pr is greater than a peak difference threshold. If this condition is satisfied, the decision engine 116 determines a non-swim stroke. If not, the decision engine 116 checks a sixth condition. In the sixth condition, the difference between MaxFiltAccX and MinFiltAccX for the segment is taken. It is observed, based on empirically derived values, that for swim strokes, this difference is high compared to non-swim strokes. If this difference is greater than a difference threshold, and also if a seventh condition, which includes RateAccelX / Y / Z cr is greater than a rate threshold, the decision engine 116 determines a swim stroke. If neither the sixth and seventh conditions are passed, but if it satisfies an eighth condition, that it is the first swim stroke segment, the decision engine 116 determines it as a swim stroke. The reason is because the use of the difference between the current and previous segment values for the first swim stroke segment is not applicable. If the eighth condition is also not passed, the decision engine 116 determines as a non-swim stroke.

[0032] Once the stroke segment is determined to be non-swimming activity, the stroke count in the memory 118 is not incremented during the determined stroke segment. This helps in reducing false positives of stroke count obtained during rest / pause time between swimming laps or any other non-swimming activity, thereby helping in improving stroke count accuracy.

[0033] According to an embodiment of the present application, once the stroke segment is determined from the acceleration based stroke segmentation module 108, the stroke segment is authenticated by the activity detection module 112 whether it is obtained during a swimming lap or a non-swimming lap. A swimming lap indicates that the swimmer is performing one of the different stroke styles such as freestyle, backstroke, butterfly, breaststroke and any other stroke. A non-swimming lap indicates that the swimmer is turning or resting / pausing between swimming laps or any other activity. The stroke count is updated only when a swimming lap is detected. In case of a non-swimming lap, the stroke count remains constant. The stroke count is saved in the memory 118. To determine whether the determined stroke segment is obtained during a swimming lap or a non-swimming lap, the input signal 120 is used to design the activity detection module 112.

[0034] Figure 3 A method of determining swimming stroke of a swimmer according to the present application is illustrated. The method comprises a plurality of steps, wherein step 302 comprises filtering the input signal 120 from the at least one accelerometer 102 using the filter module 106. The method is characterized in that step 304 comprising determining at least two parameters including the first parameter 208 and the second parameter 210 from the filtered signal 122 is performed using the stroke segmentation module 108. Step 306 comprises generating an envelope signal 206 using the at least two parameters and the filtered signal 122. Step 308 comprises determining the swimming stroke of the swimmer based on the filtered signal 122 and the envelope signal 206.

[0035] The first parameter 208 comprises local minima of peaks in the filtered signal 122 and the second parameter 210 comprises relative amplitudes of peaks based on the computed local minima. The second parameter 210 is computed depending on the first parameter 208.

[0036] The stroke segmentation module 108 is configured to generate the envelope signal 206 based on the fall rate and the state of an internal state machine, which has two states, namely a "follow" state and a "fall" state. The envelope signal 206 is generated with reference to the filtered signal 122. The stroke segmentation module 108 also performs identifying the raw time of the stroke segment, followed by determining its true time after verification as a stroke segment.

[0037] The stroke segmentation module 108 is configured to generate a fall-off rate of the envelope signal 206, identify original time instants of stroke segments, and determine true time instants of stroke segments after verifying the original time instants.

[0038] Figure 4 Generation of a fall-off rate of the envelope signal is illustrated in accordance with an embodiment of the present application. The stroke segmentation module 108 is configured to generate a fall-off rate of the envelope signal 206, identify original time instants of stroke segments, and determine true time instants of stroke segments after verifying the original time instants. The steps involved in the fall-off rate generation method 400 are explained. Step 402 includes checking if the state is "falling". If no, then step 404 is executed, wherein the fall-off rate is set to zero. If yes, then step 406 is executed. Step 406 includes checking if the fall-off time of the envelope signal 206 is less than or equal to T / 2, wherein T corresponds to the total decay time of the envelope signal 206. If the result of step 406 is yes, then step 412 is executed, step 412 includes setting the fall-off rate to m1 times the fall-off time of the envelope signal 206. If the result of step 406 is no, then step 408 is executed, step 408 includes checking if the fall-off time of the envelope signal 206 is greater than T / 2 and less than or equal to T. If the result of step 408 is yes, then step 414 is executed, step 414 includes setting the fall-off rate to m2 times the fall-off time of the envelope signal 206 and subtracting a constant. If the result of step 408 is no, then step 410 is executed, step 410 includes setting the fall-off rate to -0.2f. The generation of the envelope signal 206 has been explained in the description of Figure 2 and for ease of understanding, the flowchart thereof is described here.

[0039] Figure 5 Identification of original time instants of stroke segments is illustrated in accordance with an embodiment of the present application. The identification of stroke segments is explained below. Step 400 includes generating a fall-off rate of the envelope signal 206. In Figure 4Step 400 is explained in the description of Fig. 4. Step 502 comprises generating the envelope signal 206, which comprises taking into account the initial value if it is the first instance. Step 504 comprises checking whether the state is "falling". If the result of step 504 is yes, step 506 is executed, otherwise step 512 is executed. Step 506 comprises checking whether the filtered signal 122 is greater than the envelope signal 206. If the result of step 506 is yes, step 510 is executed, which sets the state to "following". After the state change, step 510 leads to step 502. If the result of step 506 is no, step 508 is executed, which comprises continuing the envelope signal 206 without state change. Now, step 512 comprises checking whether the filtered signal 122 is greater than or equal to the envelope signal 206. If the result of step 512 is yes, step 518 is executed, which comprises setting the state to "following". If the result of step 512 is no, step 514 is executed, which comprises setting the state to "falling". Once step 514 is executed, step 520 comprising calculating the first parameter 208 is executed, followed by step 516 comprising recalculating the second parameter 210. Step 516 leads to step 400 for generating a new falling rate for the next phase. Figure 5 The flowchart is for ease of understanding and has been described in Figure 2 the description of Fig. 4.

[0040] Figure 6A detailed flow chart of the method of determining the swimming stroke of a swimmer according to the present application is illustrated. Step 602 comprises filtering the input signal 120 from the at least one accelerometer 102. The input signal 120 of the principal axis is selected and filtered to a cut-off frequency to remove artifacts such as jitter and high frequency noise. Step 604 comprises calculating the first parameter 208, followed by step 606 wherein the second parameter 210 is calculated. Step 608 comprises generating a fall-off rate of the envelope signal 206 based on the input from step 604 and step 606. Step 610 comprises generating the envelope signal 206 based on the fall-off rate generated in step 608. At step 612, a state transition of an internal state machine that changes based on the filtered signal 122 and the envelope signal 206 is checked. Step 614 corresponds to no state transition, which leads to step 610. Step 616 corresponds to a state transition from "falling" to "following". If step 616 is detected, step 620 is executed, step 620 comprises setting the envelope signal 206 equal to the filtered signal 122, i.e. the envelope signal 206 follows the filtered signal 122. Step 620 then leads to step 610. Step 618 corresponds to a detection of a state transition from "following" to "falling", if this state transition is detected, step 606 is triggered to recalculate the second parameter 210, i.e. the relative amplitude of the new stroke segment. Step 622 is also executed, step 622 indicates the identification of the original time instant of the stroke segment. In step 622, a stroke periodicity condition is checked. If it passes, the flow leads to step 624, step 624 indicates that a true stroke segment has been determined. If it fails, the flow leads to step 626, step 626 indicates that a false stroke segment is detected.

[0041] The method further comprises using an activity detection module 112 for enabling verification of the identified stroke segment. The activity detection module 112 is configured for extracting a feature vector from the filtered signal 122 and the input signal 120 and processing the extracted feature vector to determine whether the identified stroke segment is any one of a swimming activity and a non-swimming activity. The activity detection module 112 comprises an extraction module 114 and a decision engine 116. The extraction module 114 is for extracting the feature vector from the filtered signal 122 and the input signal 120. The decision engine 116 is for classifying the detected activity as a swimming activity / stroke or a non-swimming activity / stroke. The method of the activity detection module 112 can be used independently for the defined purpose.

[0042] The feature vector used by the activity detection module 112 is selected from a group comprising: a maximum value of the velocity of the current stroke segment (MaxVel cr ), a maximum value of the velocity of the current stroke segment (MaxVel cr ) and a maximum value of the velocity of the previous stroke segment (MaxVel prthe difference between the average of the filtered acceleration data of the current segment (MeanFiltAccX / Y / Z cr ) and the average of the filtered acceleration data of the previous segment (MeanFiltAccX / Y / Z sp ) the difference between the peak point of the filtered acceleration data of the current segment (PeakPoint cr ) and the peak point of the filtered acceleration data of the previous segment (PeakPoint pr ) the difference between the maximum value of the filtered acceleration data (MaxFiltAccX) and the minimum value of the filtered acceleration data (MinFiltAccX) for the stroke segment, and the rate of change of acceleration (RateAccelX / Y / Z cr ).

[0043] The working of the decision engine 116 has been explained under the description of Figure 2 and for the sake of simplicity, it is not repeated here. The absence of the same description here should not be considered as a limitation.

[0044] Once the stroke segment is determined to be a non-swimming activity, the stroke count in the memory 118 is not incremented during the determined stroke segment. This helps in reducing the false positives of stroke count obtained during rest / pause time between swimming strokes or any other non-swimming activity, thereby helping in improving the stroke count accuracy. The stroke count in the memory 118 is incremented only when both the output signal 124 and the result of the decision engine 116 indicate the occurrence of a stroke segment. The stroke count is then ready to be displayed on the display screen of the device.

[0045] According to an embodiment of the present invention, once the stroke segment is determined from the acceleration based stroke segmentation module 108, the stroke segment is authenticated by the activity detection module 112 whether it is obtained during a swimming stroke or a non-swimming stroke. The swimming stroke indicates that the swimmer is performing one of the different stroke styles such as freestyle, backstroke, butterfly, breaststroke and any other stroke. The non-swimming stroke indicates that the swimmer is turning or resting / pausing between the swimming strokes or any other activity. The stroke count is updated only when a swimming stroke is detected. In case of a non-swimming stroke, the stroke count remains constant. The stroke count is saved in the memory 118. For determining whether the determined stroke segment is obtained during a swimming stroke or a non-swimming stroke, the input signal 120 is used to design the activity detection module 112.

[0046] According to the present invention, an accelerometer 102 based swim tracking solution is provided. The accelerometer 102 based swim stroke segmentation is used for swimmers with different skills and different stroke styles such as freestyle, backstroke, breaststroke and butterfly etc. The present invention is based on accelerometer 102 sensor based solution only, thus reducing the overall cost. The present invention opens up the market for different segments of wearable products. Thus, only one sensor, i.e. accelerometer 102 is required, which leads to low power consumption. Further, the stroke segmentation works independent of the sign of the peak value of the input signal 120.

[0047] It is to be understood that the embodiments explained in the above description are merely illustrative and do not limit the scope of the present invention. Numerous such embodiments and other modifications and changes within the scope of the embodiments explained in the present description are contemplated. The scope of the present invention is limited only by the scope of the claims.

Claims

1. A controller (110) for determining a swimming stroke of a swimmer, the controller (110) being connected to receive an input signal (120) from at least one accelerometer (102), the controller (110) comprising: a filter module (106) for filtering the input signal (120) from the at least one accelerometer (102) and generating a filtered signal (122), characterized in that a stroke segmentation module (108) adapted to: determine at least two parameters from the filtered signal (122), including a first parameter (208) comprising local minima of peaks in the filtered signal (122) and a second parameter (210) comprising a relative amplitude of the peaks based on the calculated local minima; generate an envelope signal (206) using the at least two parameters and the filtered signal (122) based on a fall rate and a state of an internal state machine, the internal state machine having two states, a "follow" state and a "fall" state, and determine the swimming stroke of the swimmer based on the filtered signal (122) and the envelope signal (206).

2. The controller (110) of claim 1, wherein the stroke segmentation module (108) is adapted to: identify time instances of raw stroke segments based on the envelope signal (206) and the filtered signal (122), and determine true time instances of stroke segments after verification.

3. The controller (110) of claim 1, comprising an activity detection module (112) adapted to: extract a feature vector from the input signal (120) and the filtered signal (122), and process the extracted feature vector to determine that an identified stroke segment is any one of a swimming activity and a non-swimming activity.

4. The controller (110) of claim 3, wherein the feature vector used by the activity detection module (112) is selected from a group comprising a maximum of velocity of a current stroke segment (MaxVelcr), a difference between a maximum of velocity of a current stroke segment (MaxVelcr) and a maximum of velocity of a previous stroke segment (MaxVelpr), a difference between a mean of acceleration data of a current segment (MeanX / Y / Zcr) and a mean of acceleration data of a second previous segment (MeanX / Y / Zsp), a difference between a peak point of filtered acceleration data of a current segment (PeakPointcr) and a peak point of filtered acceleration data of a previous segment (PeakPointpr), a difference between a maximum of filtered acceleration data for a stroke segment (MaxFiltAccX) and a minimum of filtered acceleration data (MinFiltAccX), and a rate of change of acceleration (RateAccelX / Y / Zcr).

5. A method for determining a swimming stroke of a swimmer, the method comprising the steps of: filtering a signal (122) from at least one accelerometer (102) using a filter module (106) and generating a filtered signal (122), characterized in that a swim stroke segmentation module (108) is used for determining at least two parameters from the filtered signal (122), including a first parameter (208) comprising local minima of peaks in the filtered signal (122) and a second parameter (210) comprising relative amplitudes of the peaks based on the calculated local minima; generating an envelope signal (206) based on the at least two parameters and the filtered signal (122) using a fall rate and a state of an internal state machine, the internal state machine having two states, a "follow" state and a "fall" state, and determining the swim stroke of the swimmer based on the filtered signal (122) and the envelope signal (206).

6. The method of claim 5, wherein the swim stroke segmentation module (108) is configured for: identifying an original time of a swim stroke segment, followed by determining that the original time is a true time of a swim stroke segment after verification.

7. The method of claim 5, comprising implementing the verification of the identified swim stroke segment using an activity detection module (112) configured for: extracting a feature vector from the filtered signal (122), and processing the extracted feature vector to determine that the identified swim stroke segment is any one of a swimming activity and a non-swimming activity.

8. The method of claim 7, wherein the feature vector used by the activity detection module (112) is selected from a group comprising a maximum value of velocity of a current swim stroke segment (MaxVelcr), a difference between a maximum value of velocity of a current swim stroke segment (MaxVelcr) and a maximum value of velocity of a previous swim stroke segment (MaxVelpr), a difference between a mean value of acceleration data of a current segment (MeanX / Y / Zcr) and a mean value of acceleration data of a second previous segment (MeanX / Y / Zsp), a difference between a peak point of filtered acceleration data of a current segment (PeakPointcr) and a peak point of filtered acceleration data of a previous segment (PeakPointpr), a difference between a maximum value of filtered acceleration data for a swim stroke segment (MaxFiltAccX) and a minimum value of filtered acceleration data (MinFiltAccX), and a rate of change of acceleration (RateAccelX / Y / Zcr).

Citation Information

Patent Citations

  • Motion analysis device for sports

    US8265900B2

  • Smartwatch-based swimming motion analysis method and smartwatch

    CN107376247A

  • Motion Analysis Device for Sports

    US20100204952A1