V5 Inertial sensor drift

We have gone through multiple inertial sensors, and every one of them, when plugged in, have values on one axis slowly decreasing, even if it’s not moving or not even on a robot. The issue persists throughout different brains and brand new inertials, is this normal? How can we fix this?

Have you calibrated the inertial?

1 Like

Yes we have, it calibrates and then starts drifting immediately

What exactly is drifting ?

2 Likes

By drifting do you mean the drivetrain starts drifting?

The inertial readings/the angle slowly decreases at a decent enough speed so that after about 30 seconds it’ll have “rotated” 1 or 2 degrees even if nothing moves

1 or 2 degrees in 30 seconds (for heading) is more than I would expect. After calibration, roll and pitch will usually change and then stabilize as the inertial sensor is generally not mounted perfectly flat, however, I would expect to only see perhaps 0.1 degree drift in heading after 30 seconds. You could try performing a full factory cal, that’s more to do with absolute roll and pitch values, but it may help.

5 Likes

Thank you for the resources, I will try it out tomorrow and report back!

Hi, I just tried the factory calibrate option, it calibrated and everything seems to be fixed, however the heading value keeps increasing by 0.01 about every second or so, is that normal behavior?

1/100 of a degree every second, seems pretty normal. Try just a normal calibration after IMU has been on for a few minutes, temperature does affect these sensors, even though they technically have compensation for that.

3 Likes

Will keep testing throughout the day, will report back results. Thank you for your help!

Less than 1 degree per minute is really pretty good for this type of sensor. Other things will also affect it, especially vibration caused by motors etc. so where it’s mounted is also important.

3 Likes

I’ve been testing it throughout the day, it seems pretty good. Are there tips for improving the vibration situation to the inertial? Currently we have it mounted with some friction mats in between the inertial and a c channel

We have a command in our code that plays with the threshold and turn constant

robotDrive.setTurnConstant(2.0);
robotDrive.setTurnThreshold(2.0);

But we built our own robot drive system instead of using the gui.

Hope that helps.