How does the Swim.com watch app calculate distance, timing, and stroke identification?
Here at Swim.com, we’ve received a lot of questions lately about how exactly our smartwatch app functions when it comes to counting laps, assigning the start and end times of a length, and determining stroke type.
Our app uses a combination of proprietary motion detection algorithms and the data gathered from the watch’s internal accelerometer to transform the movement you perform during your swim workout into quantifiable metrics you can use to analyze your workout and improve upon your performance.
First, for those of you who are unfamiliar, let’s briefly cover the accelerometer and motion algorithms. The internal accelerometer is an electromechanical sensor located within your watch (hardware) that senses dynamic movement, vibration, and acceleration forces. Motion algorithms are defined as “a process or set of rules to be followed in calculations or other problem-solving operations, especially by a computer.” There are several motion algorithms, which are written by our staff and programmed into our app, that correlate to each movement you perform during a swim. For instance, there is one specifically pertaining to each stroke type, and another for a wall turn, and so forth.
The watch is meant to be worn on your wrist, and so the accelerometer is primarily sensing the motion produced by your arm, wrist, and hand. The Swim.com app is incapable of recording your kicking motion because there is no ankle sensor. This is what necessitates having a drill mode to record kickboard drills.
Now let’s go into how we turn all that movement you produce into the data you see on your workout analysis! First we’ll cover distance accuracy.
An accurate lap/distance count is dependent on the app identifying that you performed a turn at the wall. Most lap swim trackers (including Garmin, Swimovate, and others) do this by using data collected and interpreted with the combination of the accelerometer/algorithms and a pre-programmed course length that is decided by the user. They do not utilize GPS for several reasons, but mostly for reasons relating to satellite communication. Indoor pool roofs can hinder this satellite connection, and also each time the watch is submerged it will lose contact with the satellite for a split second. This produces a deviation of up to +/- 10% from the correct distance swam.
We recommend that swimmers perform a flip turn or open turn while lap swimming, as these have the highest success rate for the app’s algorithms determining a length swam. Each of these turns consist of a rapid acceleration off the wall (leg push-off) and a short streamline (pause in arm motion) before the swimmer resumes their stroke, which is the motion pattern trigger to tell the app’s algorithms that you’ve turned. A turn in which you touch the wall, turn around, do not push off the wall, and immediately start your stroke again does not contain the acceleration/glide combination needed and will often fail to be interpreted as a turn by the app and produce an incorrect lap/distance count.
We’ve have also seen some instances not involving turns that can cause incorrect lap counts. Typically these include pausing mid-lap for more than a few seconds to let a swimmer pass you, changing stroke type mid-length, or if you have an extremely slow recovery/return motion on your stroke combined with low stroke rate. We recommend trying to avoid this if you can.
Now, let’s go into how start and stop times are assigned to your lengths!
When you start an interval, the beginning of your interval time is based on when you take your first stroke with the watch-wearing arm. Variables that can affect this include block or push starts and how long your streamline is and whether or not your first stroke is performed with the arm wearing the watch.
Times of lengths within the middle of an interval are determined by an estimation calculated based on three motion signatures: the turn initiation (pause in stroke rhythm), the wall push off (rapid acceleration), and your first stroke on the new length (resume stroke rhythm). The speed of your turns can affect this timing assignment. If it is a slower than usual turn and you are using the non-watch arm for the first stroke of the new interval, there is a chance that the watch may interpret this as the end of an interval and start a new one, assigning a very short rest time in -between.
When ending an interval, there is no turn, and so the app must take a moment to process that you have completely stopped moving (as opposed to a quick pause – like with a streamline glide after the turn). There is a small delay while this process happens, so you may notice that your last length might be marginally longer than expected. Right now, our tests show that time measurements done with our app, per 100y interval, may differ by about up to 2 seconds as opposed to if you had someone record you with a stop watch.
Finally, let’s talk about stroke identification!
Each of the four main stroke types (freestyle, breast, butterfly, and back) produce a unique set of identifying accelerometer signals. Our team uses a series of different tools to analyze the accelerometer signals from a number of sample workouts in order to create motion algorithms that help the app predict what type of stroke you are using when you are swimming. The motion algorithms that we have developed for the app are the result of a combination of different mathematical methods, including classification trees and a random forest algorithm. The sample workouts used to create the algorithms included male and female swimmers of different levels, ages and technique. Using a number of different swimmer types was, and continues to be, necessary to develop motion algorithms capable of predicting the type of stroke for a wide range of users.
As Swim.com has evolved we recognize the need to continually improve and expand these algorithms, because we realize that not every person performs the same stroke exactly the same way and that every body is not the same. There can be hundreds of small variations from person-to-person in how a stroke is performed, including but not limited to: body type, age, injuries, flexibility, and strength. For that reason, we will be introducing an opt-in feature in future versions of the app that allow users to send us their raw data to help improve our algorithms.
The most common stroke misidentification problem we have run into so far with Swim.com is breaststroke being reported as freestyle. For example, even though you might be able to look at a swimmer from the pool deck and easily identify that they are performing the breaststroke, this person might have their wrist rotated in a specific manner, they might have a weak pull or an incorrect pull angle due to an injury, flexibility, or technique issue, or even a narrow shoulder width combined with a small range of flexibility. All of these little deviations and many more could potentially cause this error. Even though these are small imperfections, they are magnified when you think about the small range of motion the accelerometer is actually measuring – and so sometimes this can cause an erroneous stroke identification. One of our goals is to gather more raw data from more swimmers in order to expand and improve the definitions of the algorithm so that we can try to prevent small imperfections from giving you a misidentified stroke.
With all of our motion algorithms, all of the processing of data happens in real-time within the watch app before it is synced over to the Swim.com database where you can view your workout results.
We hope that you’ve found this post informative and encourage you to ask questions in the comment section below!