Garmin Intentionally Handicapping CIQ?

I'm trying to develop an accurate and responsive GRADE metric in CIQ. It isn't as easy as you might think. Elevation data bounces around especially on grades that are relatively small like in the 1-3% range. You have to smooth out the bad data over several readings, but also need a quick response to slope changes.

Garmin does a good job with their internal GRADE metric. They obviously use features other than Elevation and Distance. We know GPS elevation is not useful, so it must be something else. Maybe the accelerometer? For example, I might be starting up a climb and for a few seconds, the barometer shows no change or might actually bounce down a foot or two for the first reading or two on the new climb. But the Garmin GRADE metric accurately shows I'm on a 1-2% grade almost immediately.

So three questions:

1. Do we know if Garmin intentionally hamstrings CIQ in some areas? Not exposing GRADE in the Activity.Info is just one of a number of native metrics that would be very helpful but not given to CIQ developers. There might be valid business reasons to hold back some capabilities - but I can't think of any.

2. Does anyone know what Garmin might be using to generate an accurate GRADE metric?

3. Since barometric data and distance doesn't, by themselves, provide the accuracy and responsiveness needed to produce a GRADE value that can match the performance of Garmin's internal GRADE value.... is there something else we can tap into via CIQ to help improve that metric?

  • When I'm out cycling I've always thought that maybe the grade is calculated from the elevation data in your current map - but I have no idea really ...

    Maybe you could test if it is the accelerometer by waving your device around randomly while going up/down a hill and see if the reading stays the same.

  • It might be elevation but maybe garmin uses a floating point value and we are only given integer? Because I'll watch elevation stay steady or even drop a foot or two when first I start a climb and yet garmin's grade kicks up to show the grade. I doubt waving the device will work - but worth a try - that high-frequency noise would likely be filtered out.

  • Activity.Info.altitude is a float per the doc

  • I suspect it's just a difference in how you calculate grade.  Are you looking for a change is altitude over distance or over time for example, where you might need to consider both.

  • And thinking about it more, when I suggested elevation data from the map, that could be different from barometer data, and it could also be looking ahead of where you currently are, so averaging the grade over a wider area around you (not just using data from your cycle route so far).

    Then there could be a fallback method using barometer if your map doesn't contain elevation data etc. Or even filtering between the two continuously.

    I wonder how good the grade estimation would be if you constructed an artificial ramp (not on any map ...) and tried cycling up/down that. Or maybe tested on a ramp inside a building like a multi storey car park or shopping centre or such like ...

  • I doubt that map data is used for this, as not all devices that show this have maps, or will have the maps for the region you're in.

    I think it's a matter of figuring out the proper calculation with the data available.

  • Grade can’t be time based. VAM is time based... meters vertical per hour. Grade is a slope vert vs horizontal ratio. Unless I’m missing something?

  • But is it distance for a given time  or is it a fixed distance?

    Grade for the last 5 minutes, or the last 500m for example.

  • But the Garmin GRADE metric accurately shows I'm on a 1-2% grade almost immediately.

    Is it possible that the device contains an inclination sensor, which isn't explicitly mentioned by Garmin?

    It's only a thought from me.

  • No the internal grade is very responsive... you change slope and within a couple seconds it recognizes it. So it is not over minutes or hundreds of meters... it is essentially “instant”. I’m going to look at the ambientPressure data point which is 2-staged filtered. Maybe it is more stable and therefore can be trusted and not smoothed to remove noise in the altitude data.