Altitude incline and slope
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.
The Phones I know of with pressure sensors are Xperia Active, Xperia Go, Galaxy Nexus, Galaxy Note, Galaxy Note II , Galaxy S3 ,Galaxy S4, Galaxy S5, Galaxy S6 and Galaxy S7. There may well be more but these are the popular ones I know about.
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.
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 you 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 not 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
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.
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 deduce the window size The range will naturally be bigger when you are going up or down.
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 recent 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.
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 thye 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.