App: Pool Swim

https://apps.garmin.com/es-ES/apps/f134a024-6ee4-47d3-8aec-3a397e3c9733



Track your pool swimming activities with your FR230 and FR235.
You can find the user guide and get support here: https://danipindado.github.io/Garmin-ConnectIQ-pool-swim-app.html


Credits
Icon made by Freepik from www.flaticon.com

You can donate my ConnectIQ development via PayPal here: https://bit.ly/2h1EMT1

Changelog
v1.0-upd.1: bugfixes. heading might drift sometimes.
v1.0-upd.2: improve heading calculation. new multicolor icon.
v2.0: support FR630. HR data.
v3.0:Initial support stroke count (feature as beta, waiting for your feedback). Several changes in memory managment and process execution for better performance and stability.
v3.0-upd.1: fix issue. data needed for stroke count analysis was not properly written in fit file. otherwise same functionality as v3.0
v3.1: discard menu: when exiting app, now you can choose between resume/save/discard.
v3.2: display summary window when paused.
v3.2-upd.1: fixed bug: duplicate lengths after triggering manual lap.v3.2-upd.1: fixed bug: duplicate lengths after triggering manual lap.
v4.0: most common pool length values and watch screen format & fields can be configured in watch. hold "up" button for three seconds. small adjustments heading. Several cosmetic changes.
v4.1:
calories can now be selected as screen field in watch menu.
new app setting "DEBUG" which enables writting of accelerometer and heading data @10Hz in FIT file (default disabled)
new feature autolap can be configured in watch menu (default disabled- when enabled, it triggers a new lap every n lengths, where n is a configuration parameter)
several bugfixes and memory enhancements.
v4.1-upd.1: bugfix calories calculation which caused crash when hr monitor is available.
v4.2: new FR630 key definition. improve how pace charts are displayed in Sport Tracks. See https://danipindado.github.io/Pool-Swim-app-v4.2-released.html
v4.3 Implement imperial units. Improve heading calibration. https://danipindado.github.io/pool-swim-app-v4-3-released.html
v4.4 Memory & stability improvements. new heading filter. stroke counting temporarily removed. https://danipindado.github.io/new-pool-swim-version-with-improved-length-detection.html
v4.5 New stroke rate algorithm. Small bugs and improvements. https://danipindado.github.io/stroke...pool-swim.html
v4.6 Garmin swim watch compatibility: recording continues during pause and stroke rate takes one arm into account only. heading chart shows now sine instead of rad. intensity field added (only 3rd party sites supporting ConnectIQ, f.i. sporttracks) https://danipindado.github.io/pool-swim-apps-improves-compatibility-with-other-swim-watches.html
v4.7 update summary window. update user guide. https://danipindado.github.io/Garmin-ConnectIQ-pool-swim-app.html
  • Hi,
    The app didn’t miss any length completions, but it did add some errant lengths (25m’s) part way through many of the lengths making most (maybe all) of the intervals show as longer distance than swum.
    Here is my activity.

    some users have reported similar issues. it is not general problem. there are lot of users, including me, for which the app does not present this behaviour. i need more data to try to figure out why this happens. i see a common problem in all users with this problem: the heading chart is not as i would expect; offset, and specially, amplitude, is not what id expect. as of now, i dont know what causes this behaviour:
    - swimming technique
    - strap adjustment (not tight?)
    - pool orientation (algorythm might work worst with certain orientations?)
    - magnetic fields present in pool causing heading distortion?.....
    - nothing of the above...?

    next app version will store more data in fit file. There will be an app setting to enable these data to be written in file.
    Is this correct that distance for each interval is not populated?

    it should be populated. but there is a bug in connectiq which prevents these data to be shown. garmin admitted the problem several months ago. but it has not been fixed so far. you can import the fit file in services like sporttracks, trainingpeaks, runalyze, and you will see all interval data there. this is an specific garmin connect problem.

    you can read about it here:
    https://forums.garmin.com/showthread.php?362690-Fit-Contributor-datafield-not-working-on-Fenix3
  • Just want to say thank you very much for looking at my post and providing our response
  • Hi,

    some users have reported similar issues. it is not general problem. there are lot of users, including me, for which the app does not present this behaviour. i need more data to try to figure out why this happens. i see a common problem in all users with this problem: the heading chart is not as i would expect; offset, and specially, amplitude, is not what id expect. as of now, i dont know what causes this behaviour:
    - swimming technique
    - strap adjustment (not tight?)
    - pool orientation (algorythm might work worst with certain orientations?)
    - magnetic fields present in pool causing heading distortion?.....
    - nothing of the above...?


    I'm assuming that's me, or maybe others too.
    Another example. Front crawl again. Breaststroke seems to be good for me in same pool etc so think we can rule out magnetic distortion.
    https://connect.garmin.com/modern/activity/1508438329

    As you can see, it is counting the spikes at various places. I think the algorithm could maybe discard changes if they are less than a certain time/distance? For instance on the last 2 examples I have shared the spikes really are that, very short spikes. You already know the pool length so can work out from that whether they are realistically new lengths? Maybe?

    That said it seem to not count the single spike at 55s, but does treat the multiple spikes as one.

    THe other obvious thing to say is all the spikes are in one direction only. Does that point to an issue with the environment rather than swimming technique perhaps?
    One other thing to explore, if other people are seeing the same thing as me in one direction only, is to treat lengths in the 'good' direction as accurate, and remember how long a length is, then we can discard short spikes on the other direction?

    Just a few ideas based on my observations, no idea how practical or useful they are.

    Thanks
    P.S. My wife also has a 235, but I usually go swimming on way home from work. If ever I go from home I really must have a go with her watch on the other wrist, just to rule out issues with the hardware on certain watches.
  • I'm assuming that's me, or maybe others too.

    you and others, some people have reported this too via mail :)
    I have shared the spikes really are that, very short spikes.

    spikes are not a problem necessarily. in a compass, after 359,9º, there comes again 0º (or actually after -179,9º, there comes +180º). if you represent this in a chart, it looks like a spike. but actually there is no spike. the app can handle these apparent spikes.
    THe other obvious thing to say is all the spikes are in one direction only. Does that point to an issue with the environment rather than swimming technique perhaps?

    my app assumes, that the angle between one direction and the other is 180º (or, 3.1415 rad). but in some activities, like yours, this is not true. in your activity the angle between both directions is about 4rad => 230º. i don´t know the reason for this. and for me magnetic distortion is suspect #1 :) but it might be as well the low pass filter i am applying to the raw heading value. maybe it is somehow too aggresive. that´s why next version will collect the raw heading values at 10Hz, so that i can fine tune the filter. i didnt figure out how to collect data at 10Hz since a couple of weeks ago. until now i just guesstimated the filter parameters.

    even if it is not the filter, i might modify the detection algorithm, so that it does not assume that the angle is 180º. i have some ideas. but i need some time. xmas is a busy time ironically :) . and i havent swum in last three weeks, i cannot test.

    Just a few ideas based on my observations, no idea how practical or useful they are.

    i am very grateful to you guys providing constructive suggestions. keep it up!
  • Hi Daniel,

    Thanks for this great app. This alone made me upgrade from my older 220 to the 230.

    Used it for the first time tonight with a 5x200m workout and it nailed the first one at 200m, but then it kept adding lengths during my rest period (~45s). I was hoping for there to be a way in the future to either allow for longer than 10s rest or perhaps an "interval/rest" mode -- where only every other lap is actually counted as a length.

    By this I mean

    Lap 1 -- Swim -- count lengths
    Lap 2 -- Rest -- don't count lengths during this lap
    Lap 3 -- Swim -- count lengths
    Lap 4 -- Rest -- don't count

    etc

    I wouldn't care as much about it auto-lapping or setting up a set time/distance - I'm OK triggering it manually.

    Thank you again for your work!

    https://connect.garmin.com/modern/activity/1515166991
  • Hi,
    thanks for your post. i am glad you like the app.

    Used it for the first time tonight with a 5x200m workout and it nailed the first one at 200m, but then it kept adding lengths during my rest period (~45s). I was hoping for there to be a way in the future to either allow for longer than 10s rest or perhaps an "interval/rest" mode -- where only every other lap is actually counted as a length.


    you can press start/stop button when you rest. that is what i do right now. you can press the button again when you are ready to go again.

    By this I mean

    Lap 1 -- Swim -- count lengths
    Lap 2 -- Rest -- don't count lengths during this lap
    Lap 3 -- Swim -- count lengths
    Lap 4 -- Rest -- don't count

    etc

    I wouldn't care as much about it auto-lapping or setting up a set time/distance - I'm OK triggering it manually.


    thanks for your proposal. i will consider it. I plan to add autopause in the future. so i guess, for now you can trigger it manually by pressing start/stop.
  • 2nd and 3rd time the Charm

    I was very excited to find this app to add swimming functionality to my FR230. I tried it out this morning in a 25m pool doing a pyramid of 50m builds – 50m, 100m, 150m and so on to 350m then reverse. The app didn’t miss any length completions, but it did add some errant lengths (25m’s) part way through many of the lengths making most (maybe all) of the intervals show as longer distance than swum. I used the start/stop button between each set of continuous swim to allow for a short break. At no other time did any button get pressed and I took no other breaks or were there swimming disruptions. My intervals were displaying between 50m and 200m, or 2 and 8 lengths more than I actually did.

    Here is my activity. I am not a frequent Garmin connect user for activity tracking so these illustrations, other than the time table, is not intuitive to me. Is this correct that distance for each interval is not populated? Note – based on the time of my 6th interval, it looks like I miscounted and swam 50m too much on that one. https://connect.garmin.com/modern/activity/1507192530

    I am using V4.0 of the app and my watch in using software V7.10.

    I think this app really fills a needs and sorting out these issues would be fantastic. Not sure if my problems are with the app, my watch or my swimming style. Thanks.


    I have done 2 more swim sessions since my post above at the same pool, the same time of day and swimming in the same lane and doing the same set. On the first the app was 100% bang on. On the second the only error happened in the very first length - perfect after that. Not sure why I got much better results on trial 2 and 3 but I'll take it. Thanks again for the ap.
  • you can press start/stop button when you rest. that is what i do right now. you can press the button again when you are ready to go again.



    thanks for your proposal. i will consider it. I plan to add autopause in the future. so i guess, for now you can trigger it manually by pressing start/stop.

    Would it be possible to have a "pause time" on the black pause screen? Instead of the "length" field at the top, have it be a timer on how long it has been on that screen which would then allow someone to know how long their rest period was.

    That would solve it completely.

    Also, just noticed tonight -- changing it to yards is giving weird numbers (each length is now 23 instead of 25y like it should be)
  • I have done 2 more swim sessions since my post above at the same pool, the same time of day and swimming in the same lane and doing the same set. On the first the app was 100% bang on. On the second the only error happened in the very first length - perfect after that. Not sure why I got much better results on trial 2 and 3 but I'll take it. Thanks again for the ap.

    Thanks for letting me know.
    Do you remember if the first day you begun to swim immediately after pressing start? Or dit it take longer(adjust goggles,and so on)
  • Would it be possible to have a "pause time" on the black pause screen? Instead of the "length" field at the top, have it be a timer on how long it has been on that screen which would then allow someone to know how long their rest period was.

    That would solve it completely.

    Also, just noticed tonight -- changing it to yards is giving weird numbers (each length is now 23 instead of 25y like it should be)

    hi, yes i can add that field.
    Regarding the yards, the number you are seeing is the distance in meters :)
    I plan to add support for imperial units. I will read the unit system for the user, and write data in the corresponding units. I am not sure if i can override the units shown in garmin connect (the labels, such as m, or 100m/s). I might need to remove them, not sure yet.