Bug with GPS elevation and sensor pressure

Hi there,

While testing a quick app I made to get familiar with the framework, I noticed a bug with data provided. I think this bug can be corrected easily at the next update.


I made a video to explain the below:
www.youtube.com/watch

* BUG 1 : No GPS elevation *

When getting Position.altitude (which should provide GPS elevation), I instead get altitude from the altimeter.

Example:
My actual altitude is 420m (and the ambient pressure is 962mb)
Barometer setting to read 420m is about 1018mb (this is the pressure at sea level)
I set the altimeter at 1000mb, I now read 330m on the altimeter (all this is normal).

The GPS reading also gives 330m instead of 420m! This is not normal

All sources currently provide the same data:
Position.altitude = from altimeter (this is not normal, it should instead be the GPS elevation)
Sensor.altitude = from altimeter (this is normal)
Activity.altitude = from altimeter (this should be according to user preference, either GPS or Altimeter)


* BUG 2 : Ambient pressure and Baro setting *

Sensor.pressure returns [altimeter setting + pressure variation since setting] instead of [ambient pressure].

In the example above, Sensor.pressure returns 1000.xx mb instead of 962 mb.

This is not a large issue because assuming that Sensor.pressure returns the barometer setting, one can calculate the actual ambient pressure. But it's a big calculation that's already been calculated elsewhere in the watch, so it would be best to just provide it to the app.

Best way to solve this problem:
1/ Make Sensor.pressure return the ambient pressure
2/ Add a data point "Sensor.barosetting" and provide here the barometer setting
3/ even better: allow Sensor.barosetting to be read/write so user can update it through the app (e.g. accept "std" setting with just one click instead of going in the menus and typing 1013).


Thanks for reading!

Garmin, is there any way these two bugs be corrected at the next update?
  • Or am I the only one having this error?

    Could anyone check on their device?

    Note that using the Fly app or any other, everything works. It's when using the framework and position.altitude / sensor.pressure that values don't reflect their intended purpose.

    Thanks a lot.
  • Former Member
    Former Member over 9 years ago
    All of the values provided by the current ConnectIQ are derived values provided by our system. It isn't illogical to think that the altitude value read from the Positioning module is "GPS altitude", but the existing API is not designed or documented in that way. The altitude values available from the Positioning, Sensor, and Activity modules are read from the same internal source. In the future, we may add APIs that can access data directly from individual sensors.

    I don't really know what the correct source for pressure. This is currently providing the calibrated base pressure. We can investigate adding ambient pressure and documenting the current APIs better.
  • Thanks Brian.

    I'll be putting together a list of data I'd like to access in the API which are not currently available - I'll post it in the forum. I'm just wondering how much engineering work each additional data point requires.

    Thanks.
  • Former Member
    Former Member over 9 years ago
    We are happy to take any and all requests for additional data you would like from the API.

    I don't really think the amount of work it takes to add data metrics is a relevant thing to for me to discuss. The actual coding required to expose a piece of data to the API is certainly not very hard. We are still building a lot of important core functionality for the ConnectIQ system, and we have to evaluate everything with regard to the amount of value it adds compared to other features and requests that are in the queue.
  • Based on figues in the video, i's assume you're getting the following here. At least thats the only combination which comes close to something which makes sense.. ;-)

    Calibrated Altitude = 329m
    QNH = 1000.29mbar
    Pressure Altitude = 437

    This however would not fit to you "real altitude".

    It could make sense to collect all related data such as temperatur(s) and DALT setting in the altitude and temperature widget of the watch.

    Sorry, thats pretty confusion as none of the calculation seems to be exact enough.

    Added:
    So the altitude corrections for the QNH'es above are:
    QNH 1000.29 = +108m
    QNH 962 = +436m
    That however doesn't fit to you actual altitude...
  • Let's see if I can clarify what I meant.

    There are a number of sensor and data sources on the watch. Using the watch existing datafields (not ConnectIQ), one is able to access these data, as seen in the second part of the video. Values are copied below.

    From GPS
    GPS elevation = 1383 ft (= 421.5 m)

    From ABC
    Ambient pressure = 961.8 mb
    Barometer setting = 1000 mb (I confirm this is what I set manually for testing purposes - different than QNH to show the different value between altitude and GPS elevation)
    Altitude = 1083 ft (=330 m)

    At this point, it doesn't really matter to me if the data is correct or not. All I wanted to do is access the sensor data from ConnectIQ. So I wanted to show that, using ConnectIQ:
    - "Altitude" from GPS returns Calibrated Altitude, not GPS elevation
    - "Pressure" from ABC returns barometer setting, not Ambient pressure
    - There is no way to access Ambient pressure (except for making the backward calculation based on the above two).

    And I wanted to let Garmin know that this should be changed so as to allow us to develop aviation focused apps.


    This being said, I can try to give my version on your calculations.
    - My real elevation was between 410 and 430 m according to Google Maps (possibly around 420 m). This means the GPS elevation wasn't too far from the truth.
    - QNH this day is unknown (I wrote around 1018 but not sure about it).
    - Ambient pressure is 961.8 mb (that's the only pure data from the altimeter)

    If my elevation is 420 m and my ambient pressure is 961.8 mb (and the temp is standard), then the only way to make this work is with a QNH of 1011, not 1018.

    You agree or not?

    I used this formula
    https://en.wikipedia.org/wiki/Barometric_formula
  • Former Member
    Former Member over 9 years ago
    Great thread.
    Is Garmin aware of it?
  • Great thread. Is Garmin aware of it?

    All user names that end with .ConnectIQ are Garmin Folk. If you look above, will see that Brian.ConnectIQ is actively participating in this thread.
  • We're discussing this thread and a couple of other similar threads so we can identify potential API additions for the future, and determine ways we can improve documentation in the short term. It's definitely on our radar!
  • Former Member
    Former Member over 9 years ago
    Thanks Brandon,
    I've never thought an APP should do the job the instrument and its core-software should do but if you can SEE the issue, maybe you can understand why it's so relevant to sportsmen.

    We know for a fact the ascent/descent accrual has been touched in the last F3 4.4 firmware but the basic standing principle of a GPS that can't see the baro and viceversa (which is what the Suunto Ambit series does with Fused-Alti setting) is paramount.

    I'm setting these 2 activities public for you to see.

    Auto Calib Continuous. Baro calibrated at start location 158m (exact altitude)

    RUN: https://connect.garmin.com/modern/activity/869288664

    Question: As you can see the run ends at less than 2 meter altitude sea level but Garmin Connect reports 12m. I always calibrate the altitude even if I use auto-calib-continuous in the Fenix3... it's praxis, automated, just like one doesn't put the shoes first and the socks next, I don't start running before I'm done with altitude calibration.
    Considering this run only lasted 23' and that the initially reported altitude is correct, how is it possible that the final part marks 12 meters altitude at less than 2 meters real altitude?

    Detail: Autoscroll is my friend and GPS altitude is what I see on the activity data screens, not baroalt. I have never seen the GPS elevation on the watch at the starting level mark less than 180m... yet as you see Garmin Connect is marking the exact baro elevation I set regardless of auto-calibration. Mind the Garmin Connect Data are original and unedited.


    WALK: https://connect.garmin.com/modern/activity/869288981

    This activity is basically the coming back home after the run. It's another standard route I'm doing as a recovery (it's not an easy walk at that pace as there's a big steep stairway and it's virtually a climb) which starts where the previous run ends without baro calibration (but still with auto-calib-continuous). If you look at the map at 12' that's where the climb starts. Normally I run uphill on the parallel (on the right) road but a building collapsed because of the underground works and the road is still closed. Look at the ending altitude.

    So we have a run downhill 158 --> 2 that is treated like a 158 --> 12 and, immediately afterwards, we have got a fast walk uphill 10 --> 153

    At start I have 158 manually set (auto calib cont) and 180 on the GPS... Garmin Connect seems to be reporting the BARO for the start and the GPS alt at the end.
    On the way back I have 10 and 153 whereas this 153 should be 180 again. It's really weird.

    Does this make any sense to you, folks?