I am trying to integrate Angular acceleration obtained from a set of accelerometers positioned specifically at opposite corners of a cube, based on "EcoIMU: A Dual Triaxial-Accelerometer Inertial Measurement Unit for Wearable Applications" paper.

I am getting the angular acceleration on each Axis

This signal is quite noisy .

Then after integrating angular acceleration to angular velocity using trapezoidal rule , I get signals which drifts heavily and randomly.

I understand that noise and also numerical integration is causing the effect. Other than low pass filtering the data, is there any other methods to reduce noise.

And the major factor for the drift is numerical integration, how can this be handled.

Please help me out with this.

  • $\begingroup$ havent read the whole paper but they said they are using geometric constraints. are you using these or simply integrating measurements? simply integrating measurements will not work $\endgroup$ – holmeski Nov 22 '16 at 14:06
  • $\begingroup$ We have a customized board which has these geometric constraints...i.e the acceleometers are placed in the specific orientation as given in the paper...if this is what you are saying ... $\endgroup$ – Nithin G A Dec 1 '16 at 4:57

The authors of the paper you supplied give two reasons (as I see it) for not using gyroscopes. The first is that the gyroscopes are subject to a maximum angular velocity. The second is the power consumption. In regards to both, only you will be able to determine whether or not these two short comings will affect you. That being stated, those two issues will not be a problem in most applications. Assuming that they don't affect your application, then I recommend using an IMU that comes with gyro measurements in addition to the linear acceleration (and if possible magnetometer for more accurate heading).

After the hardware consideration has been sorted out, you need to determine whether or not the noise from your measurements is Gaussian (normally distributed) or not. If so, you should consider, as the other answers have suggested, a Kalman Filter (Use original for linear data, Unscented or Extended for non-linear). If your noise does not follow a normal distribution, then you will need to look into non-parametric approaches such as Particle Filters.

The next issue to consider once that is done, is the numerical integration. This is a very tough problem and unfortunately, there is no true solution. Numerical integration is not just prone to error, but essentially guarantees that the result will not be exact, even when dealing with non-noisy data. When you try performing numerical integration on noisy data, the error that you will see in your system explodes. As a result, we can only hope to reduce our error as much as possible to delay the onset of debilitating drift.

For your numerical integration technique, I suggest switching from using the trap rule to using Simpson's Rule. You typically get more accurate results with Simpson's and so your error from integration won't be quite as bad.

As a side note, an idea that I think is really cool, but didn't seem to really take off anywhere is the use of neural networks in numerical integration (Numerical integration based on a neural network algorithm). I would suggest sticking with Simpson's rule, but if you have the time, you may want to try following what the authors present.


My suggestion would be to work in a Kalman Filter. Using this, you can get a much more accurate picture of what the accelerometers are actually experiencing without the signal noise from drift. This, in turn, will offer you a much clearer resolution for your angular velocity integration data. Unfortunately, I'm very shaky with the math behind Kalman Filters so you're going to have to figure that part out yourself. :) Here is the wikipedia page if you want to look at that, and if you're not great with matrix math either, there are tons of tutorials out there specifically dealing with the matrix math in Kalman Filters which you can check out.

  • $\begingroup$ Hi Ulthran...I am working on that right now.... $\endgroup$ – Nithin G A Sep 23 '16 at 9:43
  • $\begingroup$ Also you should consider that your cube is rigid, that means whatever solution you find must still keep the cube corners in cubic formation. $\endgroup$ – Gürkan Çetin Dec 24 '16 at 19:32

Some solutions:

  1. Zero your drift when you know you are not moving.

  2. Use better accelerometers (i.e. more bits of resolution, higher G values, and faster measurements). Because you are integrating, any sensor noise will get amplified. Also, if the sensor saturates at its max G value, that will also throw off your results.

  3. Use an angular velocity sensor, aka a "gyro" instead. They will give you a more direct measurement without needing to integrate.

Typically, accelerometers and gyros are used in conjunction and thrown into a kalman filter together. The accelerometer is used for transnational acceleration/velocity/position by integrating once and twice, and the gyro is used for angular velocity and position by integrating once.

  • $\begingroup$ Hi Ben, The whole point of not using gyros is that the gyro bias is not stable and hence the output is stable for a few minutes. Acceleormeter biases are pretty stable and the only issue is the numerical integration drift which I need to worry about. $\endgroup$ – Nithin G A Apr 24 '17 at 11:17

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.