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?
Yes we have, it calibrates and then starts drifting immediately
What exactly is drifting ?
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.
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.
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.
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.
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.