DataField: Advanced Grade (6 clones)

Advanced Grade is app which eliminates gradient (slope) jumps in Garmin Edge devices.
It has many settings for flexible custom setup of the averaging and filtering of the gradient.
In addition it can display the max/min elevation and max/min pressure.
All of the selected variables can be displayed with one decimal place.

View on Connect IQ Store

The raw grade is calculated from the raw pressure and the elapsed distance.
There is an option in the "Debug" parameters to display the raw grade and raw pressure.
You can watch how they jump a lot, but on the other hand they are very precise.
The raw grade needs to be averaged and filtered, but this introduces a lag.
The default settings are chosen to ensure a balance between accuracy and fast response.

Configuration screens on Garmin Express:

Features:

Label
- the title of the datafield, maximum 20 characters.
Decimal point
- when switched on, the selected variables are displayed with one decimal place.
Separator
- the separator between the selected variables.
Reset on Lap
- what to reset, when "Lap" button is pressed.
- default value is "Max/min grade".
Grade (%)
- display the output grade of stage 3.
Maximum grade (%)
- display the maximum output grade of stage 3.
Minimum grade (%)
- display the minimum output grade of stage 3.
Elevation (m)
- display the altitude above mean sea level.
Max elevation (m)
- display the maximum altitude.
Min elevation (m)
- display the minimum altitude.
Pressure (hPa)
- display the ambient (local) barometric pressure, it's smoothed by a two-stage filter.
Max pressure (hPa)
- display the maximum pressure.
Min pressure (hPa)
- display the minimum pressure.

Stage 1 - calculating, rejecting and averaging the raw grade
Distance (m) [0 - 200]
- traveled distance, based on which the grade is calculated.
- default value is 20m.
Limit (%) [0.0 - 100.0]
- the maximum allowlable grade, it's rejected if it's above this value.
- default value is 30%.
Averaging time (s) [1 - 30]
- the time to average the grade.
- default value is 8s.
Averaging mode
- the algorithm used to average the grade.
- default value is Off.

Stage 2 - averaging and rejecting the output grade from stage 1
Deviation (%) [0.0 - 50.0]
- if the grade deviates from its averaged value by more than this parameter, it's rejected.
- default value is 4.0%.
Averaging time (s) [1 - 30]
- the time to average the grade.
- default value is 8s.
Averaging mode
- the algorithm used to average the grade.
- default value is Off.

Stage 3 - averaging the output grade from stage 2
Averaging time (s) [1 - 30]
- the time to average the grade.
- default value is 8s.
Averaging mode
- the algorithm used to average the grade.
- default value is Off.

Debug - additional parameters for debugging
Raw grade (%)
- display the raw grade.
Max raw grade (%)
- display the maximum raw grade.
Min raw grade (%)
- display the minimum raw grade.
Grade 1 (%)
- display the output grade of stage 1.
Max grade 1 (%)
- display the maximum output grade of stage 1.
Min grade 1 (%)
- display the minimum output grade of stage 1.
Average grade 2 (%)
- display the averaged grade in stage 1.
Max avg grade 2 (%)
- display the maximum averaged grade in stage 1.
Min avg grade 2 (%)
- display the minimum averaged grade in stage 1.
Grade 2 (%)
- display the output grade of stage 2.
Max grade 2 (%)
- display the maximum output grade of stage 2.
Min grade 2 (%)
- display the minimum output grade of stage 2.
Raw pressure (hPa)
- display the raw ambient (local) barometric pressure, it's temperature compensated.
Max raw press (hPa)
- display the maximum raw pressure.
Min raw pressure (hPa)
- display the minimum raw pressure.

Changelog:

Version 1.2
Now max/min elevation is calculated only during activity.
- - -
Version 1.1 is the first official release.

  • Looks interesting. I have a few questions. What happens if a grade is rejected? Does the next grade estimation somehow account for this? How far can you reduce the lag without running into excessive noise? On a 530, the standard noise-free grade has a lag of about 8 seconds, so I am curious if you can go substantially lower. Would you be interested in making your estimation technique a Monkey barrel that (for some form of compensation) can be introduced into other apps?

  • The raw grade is calculated from the change of the raw pressure over the elapsed distance "Distance (m) [0 - 200]". In stage 1, you reject the calculated raw grade when it's above "Limit (%) [0.0 - 100.0]". In stage 2 you calculate the moving average of the output grade from stage 1. This average value shows the tendency of the raw grade, when the raw grade is too far from the tendency, it's rejected. Too far means if the difference between the tendency and the raw grade is more than the "Deviation (%) [0.0 - 50.0]". In stage 3 you average the valid raw grade from stage 2, to stabilize the signal. So, for the lag, first you have to ride 20 metres for the raw grade calculation, then you need 8 seconds for the grade averaging in stage 3. Another 8 seconds for the tendency in stage 2 is needed only at first start or when the change in the grade is more than the Deviation for very long time, for example: you ride +15 degrees uphill and after the grade is stabilized around this value, then -15 degrees downhill for more than 16 seconds, when the grade will be stabilized around the new value. Of course you have full freedom to change what you want, but i made a lot of tests and the default settings seems to me the best choice. I tried some low pass filters, but the results are worse. By the way, if you go to the debug options and check to display the "Raw grade (%)", you can see what mess is there, specially if some wind blows over the computer or if you shake (push) it a little harder with your hand ;) On my 1040 when it's on the mount and i shake (push) it, in some cases the raw grade can go between +150% and -150%! I can try to do the barrel, it's a good idea. I will wait some time to see which is the best algorithm and how are the reactions. I think to try Butterworth filter soon, i will implement it if it has good results.

  • Version 1.2
    Now max/min elevation is calculated only during activity