In the previous post we mentioned that barometric altitude sensors will generally give you a more accurate measure for altitude and total elevation gains than a purely trilatered GPS elevation signal. That would be true if the barometric sensor is periodically or continuously recalibrated, and if you don’t happen to be hit by some crazy weather system (see Mike B’s comment below).
A question now is, by how much? The barometric sensor is accurate because it is possible to very precisely measure small differences in air pressure. Slow drift has the potential to mess things up – the reason for the recalibration-caveat – but on short time scales (and at a constant temperature) altitude changes can be measured as accurately as to a few feet. GPS trilateration without some kind of ‘augmentation’ can’t beat that, says Wikipedia; such augmentation schemes generally make use of ground stations to improve the GPS signal, and there’s a whole garden variety of them.
Rather than keep this a theoretical discussion, I was curious to see how well one of the most common GPS devices out there without barometer would perform: the iPhone. I don’t know whether the iPhone does GPS augmentation, but I can imagine it does, since the thing obviously does communicate to cell phone towers. And so I set out to collect some data and compare an iPhone 3GS with my Garmin Edge 705 (which uses a barometric sensor for elevation with automatic and continuous/periodic recalibration).
The iPhone doesn’t come with a native GPS application, but there are of course a gazillion of apps that could come in handy – I found MotionX GPS to be a very impressive GPS application, and one of the best ways on the iPhone to record tracks, statistics and display them on maps (for the record, we have no connection whatsoever to MotionX or its creators). You can download the raw track data off the phone, nicely wrapped in GPX format – of course, I don’t know how the raw iPhone data looks like and what kind of algorithms or filtering (if any) MotionX performs on these track data, so it should be understood in the discussion below that there may be MotionX idiosyncrasies at work rather than just iPhone 3GS ones.
The first data set was taken on a ride in Santa Teresa County park in San Jose – the route is an out and back on rocky, techy, yummy singletrack (featuring Stiles Ranch and Rocky Ridge, for the connoisseurs), with plenty of small up-and-downs typical for mountain bike rides. The blue (top) trace shows the Edge 705 data, the red (bottom) the iPhone data, taken simultaneously.
Garmin Edge 705: elevation gain 1797 ft, loss 1786 ft
iPhone 3GS: elevation gain 1476 ft, loss 1536 ft
The iPhone data is not terrible and actually looks a bit better than I’d expected, but still deviates over 15% for the totals; and this for a short 10 mile ride. Since this is an out-and-back, the curves should look symmetrical – the Edge data is looking very nice indeed, the iPhone data drifts off quite a bit.
The graph below shows a subset of the same data, but plotted against time rather than distance (about a seven minute section).
The Edge has a setting to impose ‘adaptive’ data recording meaning some points (which do not differ much from the previous ones) are thrown out, to save memory; this setting was used here. The iPhone doesn’t have such feature, but it does have another interesting one: ‘accelerometric assisted GPS’ – used for this data set – another form of GPS ‘augmentation’, though I’m not sure how effective this is (another experiment would be required).
Interesting to note on the graph is that the sampling rate of the iPhone is generally a bit higher, except in large ‘voids’, where a lot of the signal is missing.
A second data set was taken, this time during a 17 mile car drive, in order to see if there was anything specific to the previous data – in particular, what effect the relatively low speed of mountain bike riding has.
Garmin Edge 705: elevation gain 690 ft, loss 704 ft
iPhone 3GS: elevation gain 301 ft, loss 294 ft
The iPhone seems to deviate even more now (-50% on the totals, the curves differ more) even though the elevation profile of this track is generally ‘gentler’ – what is most different here in this track are the moving speeds (50 – 60 mph) so this probably says the GPS trilateration process isn’t fast enough and can’t keep up with the barometric sensor.
Of course, a third way of extracting altitude/elevation data not requiring any altitude measurement is to overlay the tracks after they’ve been acquired (longitude and latitude on the earth’s surface) on digital maps or digital elevation models (DEM’s), but that’s opening up another can of worms (interpolation, etc) – which is maybe something for another occasion.