Data field: Yet Another Competition Field - YACF

The Yet Another Fields is a series of datafields which are dedicated to a certain run. E. g. the Yet Another Running Field (YARF: https://goo.gl/Sif3fu) is designed for slow and medium fast runs whereas Yet Another Interval Field 2 (YAIF2: https://goo.gl/qJGFY0) is made specifically for interval training. Yet Another Competition Field is optimized for competitions and fast runs.
An important value for competitions is the average pace. Therefore this is the largest value. Furthermore the average lap pace is shown and the average pace of the last 10 seconds. The latter value gets green if the runner speeds up and gets red if the runner slows down.

The first row shows the average and current cadence values. The latter supports alarming, i. e. the runner can set upfront a cadence limit at which an alarm is fired. The time between two alarms can be configured. Furthermore the value gets red if the limit is reached.

The second row shows the total elapsed time and distance. Furthermore the battery level is shown. The battery level comes typically in the same color as the labels. Nevertheless, if the level is below 40 % it gets orange, below 15 % it gets red. This value is certainly a value the runner wants to consume before the competition.

The 4th row shows following values:

- The estimated finishing time based on the current average pace and the configured distance. Before the competition starts this value is based not on the current average pace but on the configured intended pace.

- The distance left to go

- The time in seconds which the runner is behind or before the planned finishing time. If the runner is behind the planned finishing time it is negative and shown in red.

The last row shows the average and the current heart rate. Furthermore the label 'HR' is replaced with the last lap's average heart rate.

The color of the labels is configurable. Furthermore the color of the fourth row is configurable and has the sense that the runner is not distracted from all the information. Note that the last lap average heart rate has the same color as the 4th row.




The app can be found here:
https://apps.garmin.com/en-US/apps/779bb6d8-2fae-43e1-bbb6-56aadee08c60
  • Thanks, that looks like a great field!

    EDIT - I've now read that CIQ apps can use lap info, do you think you could add a feature that recalculates the actual distance to go/time behind/ahead when the lap button is hit at KM marks on the course ? There's an app that already does that and it's quite useful as the GPS distance is generally overstated. You'd need some flexibility as sometimes a KM mark can be missed but the GPS distance will let you figure out which one it is.

    I for one don't really have a use for average CAD, could it be replaced by Time of Day possibly ,
  • Hi WEBVAN,

    hm, let's discuss this feature a bit. In principal, this is really a good idea and I thouht myself about this a couple of days ago. Typically, the km marks in a competition comes to early (from my experience) which means that the distance to go is e. g. not 10 km, but 9,9 km or so.

    The problem I see is that such a feature would interfere with automatic laps. Garmin fires by default each km a lap. And possibly most of the people will not change that. From a development point of view, I can't recognize in a datafield whether the runner has fired a lap by using the lap button or the watch fires it automatically. Let's assume that the runner has not changed the 1 km automatic lap function and doing a 5 km examples:

    Let's say the km marks (from the watch's position) are at 0.99 km, 1.98 km, 2.99 km, 3.99 km. This would happen:
    1. The runner presses the lap button at 0.99 km (I could correct the distance by setting an offset = 10 m)
    2. The runner presses the lap button at 1.98 km (I could correct the distance by setting an offset = 20 m)
    3. An automatic lap happens at 2.98 km (What shall I do now? I could assume that the distance from 2. to 3. is exactly 1 km and assume that this is an automatic lap and do nothing)
    4. The runner presses the lap button at 2.99 km (I could correct the distance by setting an offset = 10 m)
    5. The runner presses the lap button or an automatic lap is fired at 3.99 km (The distance from 4. to 5. is exactly one km and I would do nothing, which means, leaving the offset = 10 m)

    Above thought experiment would only work if the runner has exactly 1 km automatic lap function in place but IMO I could integrate this in the datafield. I could integrate it by a correction switch which makes only sense to set it to true if this automatic lap is set to an even km. Great idea. Thanks for steering me again in that direction. That said I would integrate it just to the distance left to go and not to the total elapsed distance for following reasons: 1. the total elapsed distance is a field which Garmin delivers directly and I don't want to influence that (performance and memory reasons). 2. Imagine that you hit the lap button accidently during the run. This would mess around the entire run. So the runner can still rely on that field. Edit: Could you send me a link to the app which do this?

    Regarding the average cadence: you are totally true: I also don't consume this value during my competition. Therefore this value is probably replaced by another interesting idea (which is still experimental): I will try to forecast your heart rate which you will have after the competition. This shall be an early indication if you overpaces. This is currently in development and you can even use the experimental feature in v0.3 by setting your max heart rate. Probably I will provide even more user settings to tweak this feature - but it's still in development. You can read more about it here: https://forums.garmin.com/showthread.php?362074-Heart-Rate-prediction-for-competition-runs
    Furthermore I have to stabilize the datafield's performance and functional correctness first since there are still some minor bugs in there which I found during my run today.

    If there is some performance and memory left (datafields can have only 16 kB in code and data) I can integrate the feature above.
  • Thanks for looking into this. Yes autolaps would prevent this from working properly, there would have to be warning to turn off autolap, or a setting for people who don't want to turn it off.

    In my experience the GPS distance is longer than the course distance (GPS error and courses are always a tiny bit longer, "just in case"), so when you pass the 1km marker the distance would be say 1.01km.

    This is the app : https://apps.garmin.com/en-NZ/apps/54cc5046-a3e7-4861-bf7d-ba6130578f47
  • Ok, thanks for the link: this is an app and an application can do more than a datafield: it can even differentiate whether the lap is automatically fired or via a button (by supervising the button). That's not possible with datafield. Nevertheless, the algorithm, I described above should work anyway.

    Regarding the competition distance you mentioned, we can do another 5 km example to double check the algorithm:
    Let's say the km marks (from the watch's position) are at 1.01 km, 2.03 km, 3.02 km, 4.04 km. This would happen:
    1. 1.00 km: an automatic lap is fired. The offset will be stable at 0
    2. 1.01 km: The runner presses the lap button, the offset is set to minus 10 m
    3. 2.01 km: an automatic lap is fired. The offset will be stable at minus 10 m since the distance from 2. to 3. is exactly 1 km
    4. 2.03 km: the runner forgets to press the lap button. The offset will stay at minus 10 m
    5. 3.01 km: an automatic lap is fired. The offset will be stable at minus 10 m since the distance from 3. to 5. is exactly 1 km
    6. 3.02 km: the runner presses the lap button. The offset is corrected to minus 20 m
    7. 4.02 km: an automatic lap is fired. The offset will be stable at minus 20 m since the distance from 6. to 7. is exactly 1 km
    8. 4.04 km: the runner presses the lap button. The offset is corrected to minus 40 m

    Did I miss something. This will probably work. Nevertheless, this is the straight forward case. What shall happen, if the runner presses accidently the lap button, at let's say: 3,45 km
    IMO, what we need is a range in which the correction is allowed. E. g. the correction can only be done between (x).90 and (x+1).10 range either of the total elapsed distance or better of the corrected total elapsed distance.

    What do you think?
  • That sounds like it would work yes but again I don't think you'd be lapping manually if you have autolap setup (that would mess up your splits for a post-race analysis) unless you've forgotten to turn it off before the race ;-)

    Your (x).90 and (x+1).10 range correction limit makes sense using the total elapsed distance.
  • OK, regarding messing up the splits: you are right, but there is nothing I can do from a datafield point of view. A datafield has limited access to the watch's functions and I don't know whether auto lapping is active or not (since I have no access to this setting. The only thing I can detect whether a lap is already occured. What an app would be able to do is to call the function 'addLap()' which a datafield can not.

    Do you think, this feature makes no sense in this circumstances? I am really not sure.
  • Yes there might be some confusion and since an app already exists...It sounds like you can handle the 1k Autolaps though so it's up to you really ;-)
  • Ok, I included now following lines of code in the method which is called if a lap is fired:

    // get two decimal places, e. g. 2.98 km -> 0.98 or 3.01 -> 0.01
    var temp = (correctedDist * 100).toNumber();
    var twoDecPlaces = temp / 100;

    // correct the value only if the deviation is not too large
    if (twoDecPlaces < 0.2) { distCorrection -= twoDecPlaces; }
    if (twoDecPlaces > 0.8) { distCorrection += 1 - twoDecPlaces; }

    // if user disabled, set the correction value to 0
    if (!confDistHasCorrection) {
    distCorrection = 0;
    }



    Note that correctedDist in the first line is the current corrected Distance. The correction is taking place every second by doing something like this:
    correctedDist = elapsedDistance + distCorrection;


    Note that confDistHasCorrection will be a user setting. I also can remember the user (with the setting's text) to deactivate automatic laps.

    Note that the range I do a correction is in between (x).8 km to (x+1).2 km. Any other lap outside of this range is ignored.
  • Average Pace issue

    Hi,

    Firstly- love the data field, by far the best all round field going...

    I am seeing a bug on about 50% of the times I use this field though.

    My set up:
    - Fenix 3 HR
    - Autolap set to 1km intervals

    All will be good for about 1-2km, then suddenly the Average Pace will start reading much faster than my actual average pace. Usually this is about 30-60 seconds than my actual pace and the average pace measured on a standard Garmin data field. All the other fields (distance, time, lap pace, time/ ahead of pace etc) still look right. Once the 'blip' has happened, the pace then gradually 'drifts' back up towards the correct pace but remains under the correct number for at least 1-2hrs.

    Anyone else seen this? Such a shame as would otherwise be perfect!

    Dan
  • Hi Dan,

    Thanks for reporting the bug. I haven't seen this bug during my workouts. Would you be so kind to share the tcx file with me so I can load it into the simulator.

    You can download the tcx file in garmin connect and send it via email (contact developer in the garmin store).

    Thanks for supporting.