My team has recently been struggling with the accuracy of our inertial sensors. We have two, and both of them have this strange issue that I had previously thought was rare.
The problem is that every time we rotate the robot by preciceley 360 degrees (using a jig to fix human error,) it has almost exactly 5 degrees of error in a consistent direction every time. On the second sensor, we have around 2.5, degrees, which is better but still disheartening.
The surface we are testing on is level. The sensor was calibrated before each run, we did the factory calibration procedure using the correct setup on each. There is no pitch, yaw, or roll of the robot, sensor mount, or test rig, and we are testing only the heading axis.
Have any of you experienced this problem? Is there a solution other than buying a new sensor?
I know 323V would test all of their inertial sensors and +/- x% from their values. Apparently, all of their inertial sensors were almost 100% accurate, they just had +/- x% of their true values.
I would reccomend addind a sticker with the error on each inertial sensor and use 3-4 sensors on your robot. In the code, you should increase/reduce the heading for each of them based on their specific error, and then average the values out or use a kalman filter to get a truer result.
Yes our team has experienced this, primarily with older sensors however. If you don’t want to buy a new sensor, you can scale the sensor by how much it’s off. For example, your sensor is off by 5 degrees so every time you get the sensor value, multiply it by 360/(360-5) or 1.014. this essentially scales it up by the error making it actually be 360 at 360.
The first part, that happens when the calibrate function is called, finds the resting position for the gyros, their steady state values. However, that does not compensate for any scaling errors converting the raw internal numbers to degrees. The V5 inertial sensor was the first implementation we did for this type of device, in later products (IQ generation 2 etc.) we have an additional calibration step that can be done to correct the internal scale factors used.
This is far more difficult to provide for the V5 inertial sensor as it could be mounted anywhere on a robot and has no good reference frame as we do when the sensor is inside the brain, so we leave it to the customer code to add compensation.