# US 11,896,368 B2 · Systems and methods for determining swimming metrics

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,896,368 B2
- Document ID: US11896368B2
- Status: Granted
- Kind: B2
- Application number: 15/691,245
- Filed: 2017-08-30
- Published: 2018-03-01
- Granted: 2024-02-13
- Earliest claimed: 2016-08-31
- Assignees: Apple Inc.
- Applicants: Apple Inc.
- Inventors: Bharath Narasimha Rao; Craig H. Mermel; Karthik Jayaraman Raghuram; Hung A. Pham; Adam S. Howell; Rami Y. Hindiyeh; James P. Ochs; Vinay R. Majjigi; Alexander Singh Alvarado; Sunny K. Chow; Umamahesh Srinivas; Xing Tan; Ronald K. Huang; Edith Merle Arnold; Robin T. Guers; Gunes Dervisoglu; Adeeti Ullal
- Web page: https://patentgrep.com/patent/US11896368B2

## CPC

- A61B 5/1112: {Global tracking of patients, e.g. by using GPS}
- A61B 5/0205: Simultaneously evaluating both cardiovascular conditions and different types of body conditions, e.g. heart and respiratory condition
- A61B 5/02438: {with portable devices, e.g. worn by the patient}
- A61B 5/1114: {Tracking parts of the body}
- A61B 5/1118: {Determining activity level}
- A61B 5/1122: {of movement trajectories}
- A61B 5/681: {Wristwatch-type devices}
- A63B 24/0062: {Monitoring athletic performances, e.g. for determining the work of a user on an exercise apparatus, the completed jogging or cycling distance}
- G01C 22/00: Measuring distance traversed on the ground by vehicles, persons, animals or other moving solid bodies, e.g. using odometers, using pedometers
- G01C 22/006: {Pedometers}
- G01P 15/14: by making use of gyroscopes (gyroscopes per se G01C19/00)
- G06F 18/2135: based on approximation criteria, e.g. principal component analysis
- G06F 18/2411: based on the proximity to a decision surface, e.g. support vector machines
- G06V 40/23: {Recognition of whole body movements, e.g. for sport training}
- H04W 4/027: {using movement velocity, acceleration information}
- A63B 2024/0071: {Distinction between different activities, movements, or kind of sports performed}
- G06F 2218/12: Classification; Matching
- A61B: DIAGNOSIS; SURGERY; IDENTIFICATION (usefulness limited to only animals A61D)
- A63B: APPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT (apparatus for passive exercising, massage A61H)
- G01C: MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY (measuring liquid level G01F; radio navigation, determining distance or velocity by use of propagation effects, e.g. Doppler effects, propagation time, of radio waves, analogous arrangements using other waves G01S)
- G01P: MEASURING LINEAR OR ANGULAR SPEED, ACCELERATION, DECELERATION, OR SHOCK; INDICATING PRESENCE, ABSENCE, OR DIRECTION, OF MOVEMENT (measuring or recording blood flow A61B5/02, A61B8/06; monitoring speed or deceleration of electrically-propelled vehicles B60L3/00; vehicle lighting systems adapted to indicate speed B60Q1/54; determining position or course in navigation, measuring ground distance in geodesy or surveying G01C; combined measuring devices for measuring two or more variables of movement G01C23/00; measuring velocity of sound G01H; measuring velocity of light G01J7/00; measuring direction or velocity of solid objects by reception or emission of radiowaves or other waves and based on propagation effects, e.g. Doppler effect, propagation time, direction of propagation, G01S; measuring speed of nuclear radiation G01T; measuring acceleration of gravity G01V; {measuring or recording the speed of trains B61L23/00; speed indicators incorporated in motor vehicles B60K35/00; measuring frequency or phase G01R; traffic control G08G})
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06V: IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

The present disclosure relates to methods and systems of determining swimming metrics of a user during a swimming session. The method can include receiving, by a processor circuit of a user device, motion information from one or more motion sensors of the user device; determining, by the processor circuit using the motion information, a first set of rotational data of the user device, wherein the first set of rotational data is expressed in a first frame of reference; converting, by the processor circuit, the first set of rotational data into a second set of rotational data, wherein the second set of rotational data is expressed in a second frame of reference; determining, by the processor circuit, one or more swimming metrics of the user; and outputting the one or more swimming metrics.

## Claims

### Claim 1

A method for improving an accuracy of a wearable device while determining swimming metrics of a user during a swimming session, the method comprising:
receiving, by a processor circuit of the wearable device, motion data from one or more motion sensors of the wearable device;
determining, by the processor circuit using the motion data, a first set of rotational data of the wearable device, wherein the first set of rotational data is expressed in a first frame of reference;
converting, by the processor circuit, the first set of rotational data into a second set of rotational data, wherein the second set of rotational data is expressed in a second frame of reference;
determining, by the processor circuit, one or more swimming metrics of the user based on the second set of rotational data, where determining the one or more swimming metrics includes:
detecting a number of turns and a number of strokes of the user during the swimming session based on the received motion data;
determining a number of strokes per lap based on the number of turns and the number of strokes;
determining a variance of the number of strokes per lap;
adjusting the number of turns to reduce the variance of the number of strokes per lap;
determining a lap count of the user based on the adjusted number of turns; and
outputting, by the processor circuit, the one or more swimming metrics of the user.

### Claim 2 (depends on 1)

The method of claim 1, wherein detecting a number of turns further comprises:
determining whether a turn is not detected; and
inserting a missing turn in the number of turns in response to a determination that a turn is not detected.

### Claim 3 (depends on 2)

The method of claim 2, wherein determining whether a turn is not detected comprises:
determining a stroke range per lap; and
comparing the number of strokes between two consecutive turns with the determined stroke range per lap.

### Claim 4 (depends on 2)

The method of claim 2, wherein determining whether a turn is not detected comprises:
comparing the number of strokes between two consecutive turns with a threshold, wherein the threshold is determined by multiplying a mean value of the number of strokes per lap with a ratio.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
determining whether the number of strokes made by the user converges in the swimming session; or
determining whether the number of strokes made by the user converges in a historical swimming session.

### Claim 6 (depends on 5)

The method of claim 5, wherein determining whether the number of strokes made by the user converges in the swimming session comprises:
determining a standard deviation of the number of strokes among consecutive turns; and
comparing the standard deviation with a threshold.

### Claim 7 (depends on 6)

The method of claim 6, wherein the threshold is 1.5 strokes.

### Claim 8 (depends on 1)

The method of claim 1, wherein the first frame of reference comprises a body-fixed frame of reference with respect to the wearable device.

### Claim 9 (depends on 1)

The method of claim 1, wherein the second frame of reference comprises an inertial frame of reference.

### Claim 10

A method comprising:
receiving, by a processor circuit of a wearable device worn on a wrist of a user during a swimming session, motion data from one or more motion sensors of the wearable device;
determining, by the processor circuit using the motion data, a first set of rotational data of the wearable device, wherein the first set of rotational data is expressed in a first frame of reference;
converting, by the processor circuit, the first set of rotational data into a second set of rotational data, wherein the second set of rotational data is expressed in a second frame of reference, and wherein the second set of rotational data includes data indicative of the user's arm or wrist movements;
determining, by the processor circuit, one or more swimming metrics of the user based on the second set of rotational data, where determining the one or more swimming metrics includes:
detecting a number of turns and a number of strokes of the user during the swimming session based on the received motion data;
determining a number of strokes per lap based on the number of turns and the number of strokes;
determining a variance of the number of strokes per lap;
adjusting the number of turns to reduce the variance of the number of strokes per lap;
determining a lap count of the user based on the adjusted number of turns; and
outputting, by the processor circuit, the one or more swimming metrics of the user.

### Claim 11 (depends on 10)

The method of claim 10, further comprising:
determining whether the number of strokes of the user converges in the swimming session; or
determining whether the number of strokes made by the user converges in a historical swimming session.

### Claim 12 (depends on 11)

The method of claim 11, wherein determining whether the number of strokes of the user converges in the swimming session comprises:
determining a standard deviation of the number of strokes among consecutive turns; and
comparing the standard deviation with a threshold.

### Claim 13 (depends on 12)

The method of claim 12, wherein the threshold is 1.5 strokes.

### Claim 14 (depends on 11)

The method of claim 11, wherein determining whether a turn is not detected comprises:
determining a stroke range per lap; and
comparing the number of strokes between two consecutive turns with the determined stroke range per lap.

### Claim 15 (depends on 11)

The method of claim 11, wherein determining whether a turn is not detected comprises:
comparing the number of strokes between two consecutive turns with a threshold, wherein the threshold is determined by multiplying a mean value of the number of strokes per lap with a ratio.

### Claim 16 (depends on 10)

The method of claim 10, wherein the first frame of reference comprises a body-fixed frame of reference with respect to the wearable device.

### Claim 17 (depends on 10)

The method of claim 10, wherein the second frame of reference comprises an inertial frame of reference.

### Claim 18 (depends on 10)

The method of claim 10, wherein detecting a number of turns further comprises:
determining whether a turn is not detected; and
inserting a missing turn in the number of turns in response to a determination that a turn is not detected.

### Claim 19

A system for improving an accuracy of a wearable device while determining one or more swimming metrics of a user during a swimming session, the system comprising:
one or more motion sensors configured to collect motion data; and
a processor circuit coupled to the one or more motion sensors and configured to execute instructions causing the processor to:
determine a first set of rotational data, wherein the first set of rotational data is expressed in a first frame of reference;
convert the first set of rotational data into a second set of rotational data, wherein the second set of rotational data is expressed in a second frame of reference;
determine one or more swimming metrics of the user based on the second set of rotational data, where determining the one or more swimming metrics includes:
detecting a number of turns and a number of strokes of the user during the swimming session based on the received motion data;
determine a number of strokes per lap based on the number of turns and the number of strokes;
determine a variance of the number of strokes per lap;
adjust the number of turns to reduce the variance of the number of strokes per lap;
determine a lap count of the user based on the adjusted number of turns; and
output the one or more swimming metrics of the user.

### Claim 20

A system comprising:
one or more motion sensors configured to collect motion data, the one or more sensors included in or coupled to a wearable device worn on a wrist of a user during a swimming session;
a processor circuit coupled to the one or more motion sensors and configured to execute instructions causing the processor to:
receive motion data from one or more motion sensors of the wearable device;
determine, using the motion data, a first set of rotational data of the wearable device, wherein the first set of rotational data is expressed in a first frame of reference;
convert the first set of rotational data into a second set of rotational data, wherein the second set of rotational data is expressed in a second frame of reference, and wherein the second set of rotational data includes data indicative of the user's arm or wrist movements;
determine one or more swimming metrics of the user based on the second set of rotational data, where the instructed are further executed to:
detect a number of turns and a number of strokes of the user during the swimming session based on the received motion data;
determine a number of strokes per lap based on the number of turns and the number of strokes;
determine a variance of the number of strokes per lap;
adjust the number of turns to reduce the variance of the number of strokes per lap;
determine a lap count of the user based on the adjusted number of turns; and
output the one or more swimming metrics of the user.
