Altitude in IpBike either comes off the GPS or if your phone has a pressure sensor then that is used instead. Pressure based altitude needs calibrating but this is normally done automatically as explained below.  Whatever the source the raw data needs some filtering to make it presentable.  This filtering can be customised from version 1.2.7 onwards as there is a lot of variation in the hardware so being able to configure it may mean you can tune the data better for your particular phone.

Pressure Based Altitude.

There are a good number of phones with presure sensors but by no means all.  I would always be looking for a pressure sensor as it makes the altitude far more accurate.  High end bike compputers and fittness watches all have pressure sensors for a reason.

For some background information on using pressure to measure altitude check out this web page it goes into details about the accuracy you can expect and what causes inaccuracy.

Calibration

Pressure based altitude needs calibrating.  If you have no pressure sensor you want get the calibration options.  As the weather changes the pressure changes and this can mean that the reported altitude one day may be up to 200m different the next day without moving.  In IpBike the calibration procedure in normally automatic but can take time so it's best to understand how it works.  Once you go start sensors or start gps the pressure sensor is enabled along with the gps.  You will start getting altitude readings straight away but they will be based off the previous calibration value so are not necessary correct.  Once the GPS gets a good fix where it reports the accuracy to be better then 20 meters then calibration will be attempted using this location.  I keeps list of known locations from previous calibrations this is first checked.  If there is a suitable close (<50m) location then this stored altitude is used.  Otherwise if the Internet is available then an online look-up of the location is performed to get the altitude.  The altitude is added to the known locations list.  If the Internet is not available then the gps reported altitude is used but is not stored into the known locations list.

You can do a manual calibration if you know the altitude, long press on any of the altitude readouts and select set new altitude.  If the gps has a good fix then the manual calibration value is added to the list of known locations replacing any automatically added values at that location.

The list of known locations is kept in a file on the sdcard if you want to reset the system just delete the file.  Android/data/com.iforpowell.android.ipbike/files/internal_logs/altitude_location_cache.csv

Temperature compensation

This only really affects you if you have big height differences in your rides like 1000m climbs.  As of version 2.3.9 the usage of temperature compensation in the pressure to altitude calculation was made user configurable.  Before then a default temperatue of 15 degrees centigrade was always used.  With the 2.3.9 release Settings -> Main bike settings -> Altitude default temperature was added enabeling you to adjust the default temperature.  Changing it between winter and summer will improve your general altitude accuracy.  Settings -> Main bike settings -> Altitude use realtime tempreture can be enabled but I would caution against it unless you are getting very good temperature data.  I do not enable it myself even with my Tempe ANT+ temperature sensor as the temperature source.  The issue is that a change in reported temperature will lead to quite a big change in altitude.  So if you store your bike indoors and then go outside like me the temperature reported by the sensor drops by 15 degrees in the first 10 munites of a winter morning ride.  Also if I stop for a small break on a summers day then the sun can heat the sensor up 10 degrees quite quickly when there is no airflow keeping the temperature steady.  If you store your bike somewhere where the temperature will match what you ride at and the temperature sesnor is positions so it want get direct sunlight normally then give it a go.

Filtering

There are multiple levels of filtering used on the raw data.  For pressure based first multiple readings are averaged to get a reading about 4 times a second if the sensor returns reading quicker than this.  The rate readings are returned is very phone dependent but you can try and adjust it with Settings -> Other phone settings -> More power options -> Pressure sampling rate.

The first major filter is used to stop the altitude jumping up and down.  It's meant to mean you get zero accent and decent when on the flat.  It works by remembering the minimum and maximum altitude from the last few readings you can configure how many seconds this window covers from Settings -> Main bike settings -> Trip control -> Altitude Min Max time.  The reported altitude is kept in this range.  So if the current reported altitude is < the minimum for the last few readings then the minimum is used as the new reported altitude.  If the current altitude is > the max for the last few readings then the maximum is used as the new reported altitude.  This system introduces some lag based on the window size but with a suitable size of window you don't get much altitude change when on the flat.  When climbing you will get the minimum value from the window when descending the maximum. The default window size for pressure based is considerable smaller then that for GPS based although there are more samples per second for pressure based.  You can configure the display to show the Raw altitude under the altitude list raw altitude. You can also see the range from the window under debug - min max altitude range.  The smaller the min max range the better, if its normally small you may want to reduce the window size.  The range will naturally be bigger when you are going up or down.  You can enable Settings -> Other phone settings -> Error reporting usage stats -> Log pressure to altitude details to see detailed workings of this system.

The second thing you can vary is how the incline and rate of accent and decent are calculated.  Basically the min max filtered altitude is recorded for a number of samples along with the distance and time.  These values give you the incline over this period.  New entries are added to this moving window if the altitude has changed by more than 0.5m or the distance by 15m or the time by 3 seconds.  The size of the window is set in  Settings -> Main bike settings -> Trip control -> Incline records.  The smaller the window the more real time the incline and rate of climb readings.  The problem is though that if the altitude varies more rapidly than in reality then the more spiky and inaccurate the reported incline and rate of climb.  You can display the altitude distance, climb and time used for this calculation with the items under the debug list.  If your reported incline is fairly smooth you may want to reduce the window size.  If it jumps around erratically then increase the window size.  You can enable Settings -> Other phone settings -> Error reporting usage stats -> Log incline details to see detailed workings of this system.

Post Ride alteration.

If for some reason the pressure calibration was not good or say if the ride was long and the weather was changing a lot then it may be desirable to fix up the elevation data post ride.  IpBike lets you do two versions of the post ride fixup.  Both are accessed from the plot for the ride.  So select the ride in ride history then press plot.  There is an Altitude button you can press.  This gives you the choice of providing a manual offset or doing an online lookup to re-calibrate the data.

Manual offset just lets you enter a value which is then added to all the altitude points.  So if you think the reading are all 40m too low just enter 40.  If you think all the reading are 230m too high enter -230.  You can do the same thing again if you want to tweak it some more.

Online mode looks up the altitude for the start and end points on the ride.  These two altitudes are used to set the elervation of the start and end of the ride.  All points in between are adjusted in a linear way based on these two points. 

Note II users

Due to a device specific problem, barometric altitude only works if screen is on. If you ride with the screen off you may want to disable the pressure based altitude in Settings -> Other Phone settings -> More power options -> Use pressure sensor for altitude.