Electronic – Limits of dead reckoning using MEMS sensors


I'm trying to track body parts relative to a person's torso. I see quite a few questions about using MEMS accelerometers and gyros for dead reckoning, and they confirm my suspicions that various factors greatly limit their usefulness for these sorts of applications, but I'm seeking clarification of these limits:

  • What exactly are these limits?

    Other answers have addressed why these limits exist. Naturally the specifications the parts in the system in question and what is considered "acceptable error" for the system will both change the exact limits, but is there a single order of magnitude in time, or distance that I can expect dead reckoning to work? I'm well aware that over long distances (a few yards or so) the error becomes too large for most practical purposes, but what about within a few feet?

  • What can I do to improve these limits?

    I'm currently looking at using an accelerometer and a gyro. What other sensors can I add to the system to improve the error rate? I know over longer distances a GPS can be used, but I doubt any consumer electronics grade GPS has fine enough resolution to help in my case.

    Additionally, a general consensus seems to the only way to improve these limits past the point of improved sensors is to provide a reference not subject to error. Some systems solve this using cameras and markers. What kind of reference points can a portable/wearable device provide?

    I've seen the usage of radio waves to measure long distances accurately, but I can't tell if such a system could be accurate on such small scale (in terms of distance measured) using "off-the-shelf" components.

Best Answer

  • What exactly are they?

The error sources include zero-offset (bias) and scale errors (which tend to vary slowly) and noise. The prices of MEMS sensors vary from less than $10 to over $1000, and the magnitude of the error terms covers a wide range, depending on the quality of the sensor.

The big problem is that integration is usually required to get from the sensor value (acceleration, angular rate) to the desired value (position, angle). All of the error sources are compounded — growing with time — when integrated. The value of the data for dead reckoning decays with time, with cheap sensors giving you at most a few minutes of useful data and high-end sensors being good for maybe a few hours.

  • What can I do to improve these limits?

As you have already found, the best way to get rid of the growing integrated errors is to combine the sensor data with other independent sources of data that don't have the same kinds of errors. For example, GPS can give you an absolute position value that doesn't drift long-term, but has a relatively large "noise" component. You can use this data to estimate the bias and scale errors of your accelerometers, which allows you to correct for them in real time. It also allows you to cancel out the "random walk" created by the sensor noise. A Kalman Filter is one common method used to model the system (including the sensor error terms) and combine the data together to come up with an optimal estimate of the system state at any point in time.

Another example is to use the "gravity vector", as measured by the accelerometers, to cancel out the angular drift of the gyros. The trick here is to know exactly when you have a valid gravity vector; i.e., the system is not accelerating in any direction. Various heuristics (e.g., "zero update") are used to accomplish this. A magnetometer can also be used to measure gyro errors, even if you don't know the absolute direction of the magnetic field — as long as you can assume it's constant.

Optical sensing is another way to get a drift-free velocity, angle or position estimate, but the image processing that's required can require a lot of CPU (or FPGA) cycles, and the development of such a system is quite complicated.