# Gyro value not consistent

We have used a gyro before and in fact, we are using the same one this year that we used last year. I’m not sure what setSensitivity does, but I have it set to default (0.007).

If I reset the gyro, and read the angle, it stays around 0. And if I move 30 degrees, gyro.getAngle() does change from 0 to 30, but after that it keeps on moving up slowly even if the robot stops moving. It’s really slow but it changes from 30 to 33 in 15 seconds.

I am pretty sure this did not happen last year. We will try a different gyro tomorrow.

If there’s anything else we could check or if there’s something we’re doing wrong, any suggestions are appreciated!

Thanks!

Did you happen to find a solution to this problem? We’re experiencing this as well. This didn’t happen last, or even last summer.

We used a filter formula with an accelerometer to correct the drift of our gyro, Ill post the formula and details tomorrow, as I am posting from my phone

Here is the raw code, I’ll explain it… (supaGyro is just a gyro lol):

``````// Get the Gyro Angle and Filter it
xAngle = Math.toDegrees(getAxesMeasurements().XAxis);
xAngleFiltered = Constants.hfc * xAngleFiltered + (1 - Constants.hfc) * xAngle;
gyroError = xAngleFiltered - supaGyro.getAngle();
// Get the actual Angle of the bot
angle = Constants.lfc * ((angle + (supaGyro.getAngle() + gyroError)) / 2) + (1 - Constants.lfc) * xAngle;

``````

Basicly the first line of code takes the Accelerometer X-Axis (It would be Y-Axis if the Accelerometer was laying flat) and converts it to degrees…

The second line filters the X-axis and causes it to return a more stable reading (HFC is Heavy filter constant)

the Third line calculates how much the gyro is drifting

The fourth, acually corrects the drift on the gyro, the value wont change unless the accelerometer is moving… It works great for our Gyro

our HFC = 0.9 and LFC = 0.98

We use a gyro for automatic balance, it works well.

Ill give a more complete post with a formula where we derived our code from, but im late for a robotics meeting

The kalman filter (https://en.wikipedia.org/wiki/Kalman_filter) is something that you should learn to use. It is used for filtering stuff like that (accelerometer and Gyro). When done right, It is called an IMU (inertial measurement unit). Gyro drift is standard. It is kinda weird that it somehow got worse.