# Continuous Mutual Correction from Multiple Sensors

I'm stumped on what exactly to search for; so here is a non-scientists description of the topic.

I've got multiple sensors of different types that are measuring the same physical value in different ways. The sensors are all subject to significant error or temporary unavailability, but in greatly different ways. I want to develop code that can use all available sensor data by maintaining slowly changing corrections for each sensor based on the other.

I would love guidance on what exactly to look for to begin a literature search on the topic. Thanks.

Notes based on comments:

• A silly example would be collection sampled data on an instrumented automobile's scalar velocity from:
• wheel rotation frequency sensor
• pitot type anemometer
• tri-cup anemometer
• MEMS accelerometer
• GPS
• The physical value being measured, the signal, is not periodic or in any way predictable. It ranges from 0.0 to Max, where max is greater than zero and noninfinite. It is relatively easy to define reasonable limits for max_value, max_delta_value and so on be observation and calculation from simplified Newtonian models.
• At least one sensor is subject to calibration/bias drift continuously. This should be at least 4 orders of magnitude below reported value, but in nonnegligible.
• At least one sensor is unbiased, calibrated and provides confidence range data along with sample data. Per sample error can be as much as 2 orders of magnitude greater than sample value.
• All sensors use wireless communications of data, so all samples are not reported. No error in measurement is introduced in transmission.

## 2 Answers

The broad area that studies these kinds of topics is called estimation theory. This is more a matter of statistics than of computer science, so you might want to take a look in some statistics textbooks and check out the Statistics.SE.

For instance, you might be interested in the Kalman filter.

That said, before one can devise a solution to your specific solution, we'd need a lot more information about what you know. Do you know anything about the joint distribution of their sensing? Do you know anything about the accuracy of each sensor (e.g., its variance)? Are all sensors calibrated and unbiased? Do you know anything about how the underlying physical value changes over time or the distribution it comes from? Do some self-study of the literature, and make sure you know the answers to those before asking on Stats.SE.

• Thank you. I've spend a while wading through the sections of Wikipedia including the ones you linked to and I'm still less than usefully clued. One aspect of what I wish to accomplish is to do continuous mutual correction during data collection, not after the fact. – justinzane Sep 26 '15 at 14:56
• I've tried to answer your questions, though I'm sorry that I did not fully understand them. I'm in the annoying period where I know I need to learn something, just not what that something is. :( – justinzane Sep 26 '15 at 14:57

The Extended Kalman filter is probably exactly what you are looking for.

Basically, the Extended Kalman filter leverages the mathematical model of your system to come up with a very computationally efficient method of sensor data fusion.

For example, EKF can be used to quite accurately estimate a vehicle's position, orientation, and speed, from a single noisy GPS sensor! (But adding more sensors improves accuracy.) The trick is, by doing a bit of calculus on the equations of motion, and incorporating the standard deviation of your sensors, you come up with a few simple matrix calculatons that update all the estimated variables accordingly.

You can certainly have the offset/bias of a sensor as one of the estimated variables, and in this way the bias will be estimated and corrected.

Basically, this is how to implement the EKF:

1. Choose your state variables (what is to be estimated)
2. Mathematically formulate your state update (given current state, what is the predicted state in t seconds)
3. Mathematically formulate your observations (given current state, what is the predicted data given by a sensor)
4. Evaluate the uncertainty (standard deviation) for your state update and observation
5. Do calculus and crunch numbers according to the method of EKF
6. Use the results of step 5 to implement a software algorithm

Hopefully this will help put some of the literature into context. EKF is a fantastic piece of mathematics, and not that difficult to put into practice, but much of the literature is very dense. However, more accessible introductions to it are appearing, for instance this one.