Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Java (http://www.chiefdelphi.com/forums/forumdisplay.php?f=184)
-   -   Gyro value not consistent (http://www.chiefdelphi.com/forums/showthread.php?t=103322)

neal 19-02-2012 20:26

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!

deeek 29-03-2012 18:14

Re: Gyro value not consistent
 
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.

JamesW_CB 30-03-2012 01:08

Re: Gyro value not consistent
 
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

JamesW_CB 30-03-2012 17:31

Re: Gyro value not consistent
 
Here is the raw code, I'll explain it... (supaGyro is just a gyro lol):

Code:

// 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 ;)

sebflippers 23-04-2012 19:16

Re: Gyro value not consistent
 
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.


All times are GMT -5. The time now is 10:12.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi