There are many sensor fusion algorithms available like the complementary filter or the EKF. They all do a decent job for rotational movement attitude estimation, but what happen when I have a translational movement? For example the complementary filter does rely on the accelerometer alone when there is slow angular movement, which is the case for translational movement (no angular movement at all). So, the estimated angle is wrong and I get a deviation from the real position. Is there anything I can do to avoid this drift? Would a Kalmanfilter compensate for that? If we take as an example a quadcopter, where often a complementary filter is used. How does they avoid this drift? There is a lot of translational movement in this kind of application.

  • $\begingroup$ Sensor fusion implies multiple relevant sensors. Clearly, gyro and magnetometer are irelevant, so what other sensors are you fusing with the accelerometer? $\endgroup$ Dec 28 '16 at 16:05
  • $\begingroup$ Only the Gyrometer. $\endgroup$ Dec 28 '16 at 16:21
  • $\begingroup$ Then you don't have sensor fusion as far as translation is concerned. Now you could add gps... $\endgroup$ Dec 28 '16 at 16:28
  • $\begingroup$ Ok, you are right, so is there nothing one can do about it? So also the Kalman Filter will fail? The only minimization of this drift can be done my minimizing the influence of the accelerometer, right? $\endgroup$ Dec 28 '16 at 16:30
  • $\begingroup$ You can do something about it - add another sensor or another source of translational position. The Kalman filter will do the best job it can with what it's got. If that's only the accelerometer, it'll drift like the accelerometer. If you give it a gps position once a second or once a week, or some other fix, it can fuse these with the accelerometer and do better. $\endgroup$ Dec 28 '16 at 17:08

It is as @Brian Drummond said. 'Fusion' implies that you have multiple sources of data to combine. This isn't just limited to sensors. Anything that gives data about your system will do.

For sensor fusion you always need a model, aka some assumption about your system. However, this only works if the desired state is observable. Consider these two examples:

If you attach an accelerometer to a 1d pendulum $$m\ddot{x} = -kx+u~~\text{and}~~h(x,\dot{x},\ddot{x}) = \ddot{x}$$ you can reconstruct $x(t)$ based on $h(\cdot),u(t)$ readings, because all states are observable. In this case a Kalmanfilter can compensate and the position error $e_x(t)\to 0$ for $t\to\infty$.

On the other hand, if you put the accelerometer on a freely movable 1D point-mass

$$m\ddot{x} = u~~\text{and}~~h(x,\dot{x},\ddot{x}) = \ddot{x}$$

you can only get information about $\ddot{x}$, but $\dot{x}$ and $x$ are not observable. Now it is impossible for a Kalmanfilter (or any other observer) to reconstruct $x$. You can still integrate acceleration, but the error will only increase for $t\to\infty$. This is also known as dead reckoning. If you wanted to track this system you need to directly measure $x$. If you do, you are able to stop measuring $\ddot{x}$ and still reconstruct the entire state.

The same principle holds for a quadcopter. Depending on the observability of the position it may or may not be possible to get a precise position estimate. Thus, quadcopters often measure position directly and mainly use accelerometers to increase precision.

  • $\begingroup$ The answer can be improved by giving or defining a sample filter (e.g. Acceleration & gps pos; or airspeed and lateral acceleration, etc). $\endgroup$ Dec 31 '16 at 23:36
  • $\begingroup$ @GürkanÇetin What filter do you have in mind? They are rather problem specific. The OP don't give enough specifics to nail it down and I don't want to bload the answer unnecessary. $\endgroup$ Jan 1 '17 at 9:43
  • $\begingroup$ I don't have particular filters in mind. At second thought, you're right that the question does not mandate a solid example. $\endgroup$ Jan 1 '17 at 9:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.