Electrical – What actually causes gyroscope drift in IMU

gyroimu

I've been researching online to understand how to get gyroscope data from the MPU-6050 which is probably one of the most popular IMU's out there. But i am confused over the reason why the gyroscope drifts, as i found two sources which give different reasons…

  1. http://www.pieter-jan.com/node/7

"Because we can't take a perfectly continuous integral, we have to take the sum of a finite number of samples taken at a constant interval Ts. Ts is called the sampling period. Of course this approximation will introduce errors. When gyrosocope data changes faster than the sampling frequency, we will not detect it, and the integral approximation will be incorrect. This error is called drift, as it increases in time."

So, this source claims that the drift is due to the non-ideal sampling frequency when using a microcontroller like Arduino to sample the output of the gyro.

  1. https://www.w3.org/TR/motion-sensors/#complementary-filters

"In order to get rotation (angle) from a gyroscope, which senses angular velocity, you need to perform a single integration.

f ≡ frequency

∫cos(2π×ft)) = (1/(2π×f)) × sin(2π×ft)

But be aware that integration turns noise into drift. As we see above, the integration gets a 1/f outside, meaning that high frequency (f) noise disappears with integration, i.e. a noise of frequency will drop by a factor of a 100, but a very low frequency will be amplified, meaning the gyroscope will drift over time."

And this source claims that integration itself gives the reciprocal of frequency which would cause this drift, and that's without even going to the digital sampling.

So, which one is correct? Or maybe none of them??

Best Answer

I always understood drift to be DC bias (you can think of it as a voltage offset inherent in all amplifiers and some sensors, even metal junctions can contribute to voltage offsets.) But its a little more than that.

Drift comes from a few sources:

The gyroscope drift is mainly due to the integration of two components: a slow changing, near-dc variable called bias instability and a higher frequency noise variable called angular random walk (ARW). These parameters are measured in degrees of rotation per unit of time. The yaw axis is most sensitive to this drift. A good portion of the pitch (attitude) and roll axis gyroscope drift can be removed within an IMU through the use of accelerometer feedback to monitor position relative to gravity. Filtering the gyroscope output within an IMU using a low-pass or Kalman filter is also a widely used method to cancel a portion of the drift error.

Source: https://www.analog.com/en/analog-dialogue/raqs/raq-issue-139.html

So, which one is correct? Or maybe none of them??

The second quote makes sense, the first one does not. I think the first quote is referring to saturation error. Saturating the gyro is not the same as drift. Drift is more of a constant. Saturation error comes from hitting the upper limit of the sensor and doesn't contribute to error all of the time, drift does. I'd throw the first quote out the window.