TauLabs / TauLabs

taulabs.org
Other
455 stars 392 forks source link

Initial gyro calibration is bad #908

Open kubark42 opened 11 years ago

kubark42 commented 11 years ago

I have a repeatable bad initial gyro calibration using next (058b06984a34a2c8d6c9c4a130e170e79c7b9ca9) on Revolution. The gyros wind up having between 1 and 3 deg/s of error. This seems small, but is in fact considerable and pulls the attitude estimate many tens of degrees out of alignment. Fortunately zeroing the gyros on arming solves the problem.

This might be linked to the problems-- and crashes-- I have had due to bad attitude estimates in the past.

peabody124 commented 11 years ago

Full revo or revo mini?

You get it with both filters or which? Can you reproduce with other board? What about hcs leveling?

kubark42 commented 11 years ago

Revolution. https://github.com/TauLabs/TauLabs/issues/897 hasn't been agreed on yet.

peabody124 commented 11 years ago

Cc or cc3d? Also I meant does gcs leveling change the initial bias

kubark42 commented 11 years ago

Sorry, left off an "F". CCF, as in CottonComplementaryFilter.

My current leveling is known good, but what's different is that the model is in an unusual attitude. That's why I'm scared to touch it because the extreme attitude might have something to do with a bad calibration. Unfortunately I had to leave my lab before I could dig further, I'll poke around at it tomorrow.

peabody124 commented 11 years ago

Yeah let me know more about replicating it. It's weird because with Sparky (which should be the same code) I get a really reproducible attitude.

kubark42 commented 11 years ago

Me, too, with this same board. This is the first time I've been able to consistently reproduce a bad initial calibration on boot.

kubark42 commented 11 years ago

I have to look at it a bit more, but it seems that we're not doing any kind of gyro calibration on startup at all. The first time the gyros are zeroed is when arming.

kubark42 commented 11 years ago

This is repeatable on next with the boards I tested (FlyingF3, Revolution, and CopterControl), so long as the board is in an unusual attitude when booting. It seems that there is a critical angle that must be exceeded for this to go bad. Not all unusual angles reproduce it.

Given a long enough time, the gyro bias succeeds in correcting the gyroscope. The problem is that the initial gyro bias is too high. It's an untested guess, but a quick look at the code suggests this might be a weird result of the filtering introduced by Hyper.