BasicAirData/GPSLogger

Add a Interval Filter on tracking settings

Closed this issue · 5 comments

Today, a user that wants to set an interval filter between consecutive points collected, sets the "GPS Update Interval" using one of the available and short values. The value of GPS Update Interval is not intended for this usage and must remain short (under 3s) in order to avoid that the GPS is turned off between the FIXes.

We could add a new Interval Filter setting, that substitute the GPS Update Interval.
The user should be able to insert any value (like implemented for the manual altitude correction, but accepting only non negative values).
By inserting zero (or a empty value), the filter should be disabled (the value should be zero, and the setting should specify something like "Disabled" or "0s (Disabled)").

Under the hood the GPS Update Interval should update with the maximum frequency (like if the shortest GPS Update Interval available would be set, that for Android devices is set to approx 1s).

I think that the GPS Fix tab could be updated at the GPS frequency, but we are open to discussion.

ygoe commented

Interesting approach. Would it be reasonable to add some kind of de-noising in this filter? Using the provided accuracy indicator, the single positions could be used alone, or averaged with an increasing number of samples preceding and following each accepted sample (including the rejected samples; possibly using a weighted average considering each sample's accuracy). I imagine this should improve the reliability of the recorded track in hard conditions like between tall buildings.

Using the following samples is only possible as post-processing, of course. So the already accepted positions would be corrected as soon as enough following samples are available (maybe also in a sliding process of continuous improvement).

Obviously, all of this would also be possible in a separate post-processing step on the saved GPX file. But it's easier if no separate tools would be required, especially on a phone where you don't want to fiddle with files and tools so much.

Averaging a good number of points is a great method to improve the accuracy of stationary measurement.
Unfortunately we cannot say the same when in movement, where averaging good data may return a completely wrong point.

Furthermore, the purpose (and the approach) of our app is to record the raw data and to make available it in a complete (TXT) and comfortable (GPX/KML) way; actually we do some filtering when we calculate track statistics, but to make great track statistics is not one of the main targets for us.

I added the interval filter, that works like the distance filter but with the location's times.
The GPS Update Interval is still present, but I would like to remove it.
I was thinking to let the app choose the GPS Update Interval basing on the interval filter.

A possible solution could be something like the graph below (the second column is the Interval Filter value):

Sample rates

I prefer to use a sample rate >=1.5s because some hardware could not support the value of 1s.
Time to think...

... or maybe the best "conscious user approach" is to keep both settings. This way the user would set directly the GPS update interval and it would choose to discard, or not, some samples with the interval filter.
The more I think about it, the more I like it

The next release v3.1.0 will keep both settings: the GPS Update Interval (related to the GPS fixes) and the Interval Filter (related to the trackpoint collecting).
We'll collect feedbacks from users and, if needed, we'll change it on future releases.