Dave - You are correct, most GPS firmware is designed to "average" the
multiple readings (each of which has its own error covariance) into
something coherent for the application at hand (typically, pedestrian
or vehicular navigation). In addition, most units feature a
"hysteresis/dynamics" reduction circuit which effectively "locks" the
"averaged" reading when at a stand-still. My quotes are intentional -
I'm substituting words for lengthy explanations, at the expense of
semantics.
I'd like to take this opportunity to point out a few things (pet-
peeves, per-se). There's a difference between a GPS chip (let's take
the MediaTek MT3329) and what is sold/distributed by the OEM (LeadTek
LR9023, in the case of the MT3329). The OEM generally has control of
the integration firmware, which makes the GPS chip useful for a
particular purpose. The integration firmware is what normally trips
up the DIY community... and people assume a particular chip is
unsuitable, when most of the time it's actually the integrated
firmware that's unsuitable (for a particular application).
In the case of the MT3329 (with which I have a great deal of
experience), there are two OEM's that turn the chip into a useful
board solution. In the case of the second OEM (not LeadTek), they can
actually enable/disable features of their firmware, and provide a
somewhat customized (from stock masks) solution at little, if any,
added cost. For example, the "custom to DIYdrones" firmware is
anything but custom to them. Any customer can ask for those "stock"
modifications (binary and endian). In addition, some have different
"averaging" algorithms and "lock/hold" methodologies, and given a
certain volume, you can pick-n-choose your customization. Such is the
case with the OpenPilot MT3329 board solution. I believe they've had
the "lock" algorithm removed, among other things.
Another thing to consider (pet-peeve) is the fact that GPS units have
latency, especially when used in something like a funjet going 100
knots. In order to compute a vector, the GPS has to necessarily
average several inputs. As with all averaging, this produces
latency. In addition, the unit has to continually average the
multiple readings it receives (each of which has its own margin of
error), in order to form a cohesive relative reading. This, too,
produces latency. So far, both examples show what I like to term as
"internal" latency. In addition, there's external latency... at 9600
baud, by the time the output string is parsed and processed by the
AHRS/IMU, the reading is quite stale (especially for a fast-moving
plane). That reading is used to correct the gyros and accelerometers
in some cases, adding further to ongoing inaccuracy (e.g., going from
a turn to a straight path). There are ways to correct for GPS
latency, and some if it requires that the "averaging" algorithm be
known, so that its delays can be modeled and accounted for under
varying navigation conditions (straight, curved, and at varying
speeds).
I have some papers in my technical blog, which go into this. The blog
isn't pretty... it's just there so that I can keep track of things,
and comment on what I'm reading so that I'll remember what I liked
about a particular paper. As I age, it's becoming increasingly
difficult to keep track of these things. You're welcome to peruse it,
if you want to find out more about latency and compensation
algorithms...
http://lewpayne.blogspot.com
Some commercial GPS units (designed for aviation) can output a point-
source solution (where do you think I am right now, ignoring vector
math) along with an estimate of latency (which is perfect - since you
no longer need to model the unit). Most little units, like the MT3329
and uBlox, don't do that. I would be happy with a point-source
solution alone, since latency could be modeled.
Lew Payne