I’ve been curious about what installation conditions I need to worry about when building my APM based quad. We are all very aware of how magnetic interference affects the compass but I was curious how different light sources, magnetic fields and heat affect all of the IMU sensors.
https://www.youtube.com/watch?v=MrEPsA34daY
I did some testing on my workbench. This is by no means an “experiment” as I was rather lackluster in controlling outside variables and I certainly didn’t run the test more than a few times. (Basically I ran each test once off camera just to make sure I wasn’t going to make a video of nothing.)
You will notice a distinct lack of accelerometer data in the videos. That is simply because I couldn’t seem to cause any interference to the accelerometers with light, magnetic fields or heat. I chose to ignore that portion of the IMU for my tests.
What I learned from this was that I need to put additional light blocking materials to the sides of my APM. I did some testing with the case on and light definately leaks in through the foam from the sides. I was surprised how much of a difference it made. I’ve experienced altitude loss during aggressive maneuvers with Alt Hold and I wouldn’t be surprised if this was contributing to the issue.
I also learned that heat affects the gyro. I’ve had a few roll over issues recently that have been diagnosed as a bad gyro. (I’m only 90% convinced that it’s a bad gyro. It will work perfectly for weeks and then just go nuts. Once it goes crazy it will only stay broken until the APM is power cycled.) I normally do my test flights outside of my home. This would involve cold power on in a 72 degree work room followed by a transition to a sunny 80+ outdoors. I’m going to do additional testing on this to see if I can reproduce my exact issue with heat only in controlled conditions.
Let me know if you have any other questions about my tests or if there is anything that I should investigate further during my next round of testing.
Also, some gratuitous FPV flight from my other quad.
Comments
Wow, that is some elegantly simple testing! And a bit disturbing. But nicely done. A few questions if you have the time....
1. Do you think you have a marginal or bad APM or might this be indicative of most of them running 3.0+? (I know, probably not a fair question)
2. With you having done this testing a bit, have you developed any sense about how large a temperature differential will set off the rolling?
3. Since you've painted your APM black for light blocking, might this act to increase heating?
4. Do you think this can be best resolved by just letting the unarmed quad sit and reach ambient temperature for some period of time?
Hmmmm....New APM instructions..."Remove from air conditioned vehicle, place on ground, heat and serve".
Exactly. there is no recalibration at each arm. Only on first. When you disarm the Accels that are much more resistant to temp difference will bring the copter level due to the high _kp values in DCM as stated by Randy.
This is why I always power off and on, even on the same battery, if I change location or land for some reason.
E.
I intend on writing a full post for this later but here is a sneak peak at my real world testing.
https://www.youtube.com/watch?v=MHn28Xn52tU&feature=youtube_gda...
So the big difference between being armed and not armed is that when the copter is disarmed the AHRS_RP_P parameter is set 8x higher. So by default is 0.1 for arducopter but when the copter is disarmed it 0.8. This parameter controls how strongly the accelerometer correct the attitude estimate. So it makes sense that while disarmed the accelerometers would be better able to deal with gyro drift like is caused by the temperature change.
You could likely stop the spinning by increasing the default AHRS_RP_P from 0.1 to 0.2 or maybe even as high as 0.4.
By the way, we previously found that the accelerometers could provide very bad attitude data for short periods of time especially in very windy conditions so we set the gain very low. It's likely that now that everyone has had to sort out their vibration problems in order to use the inertial nav based alt hold and loiter that we could increase it without any ill effects.
After my first round of testing showed strange IMU behavior when the APM was heated I decided to explore this interference more. Specifically I have noticed that different behavior shows up when the APM is armed.
The sensor fusion equation that is running while the APM is armed obviously magnifies the interference introduced into the gyro by heat. Specifically it seems that the alteration to the calibration point will introduce a continuous perceived roll while armed.
Next I plan on testing this in real world conditions to see if I can produce the continuous roll without the heat gun.
Emile, JB,
Yes, recalibrating on subsequent armings if the temp has changed a lot is very possible. We were actually moving in the opposite direction - just doing the gyro calibration once at the same time as the accelerometer calibration but maybe that's not such a great idea.
If we had a some more precise information on the amount the gyros change with heat, and if that wasn't board specific (i.e. all APMs acted pretty much the same) then we could add some compensation. I think with the professional systems (like VectorNav) they do the calibration for each board though.
JB you are partially right: gyro cal is performed on startup and on first arming, but not on consequent armings.
So the ideal solution with actual code is to switch on the APM, leave it to heat up to working temperature for a few minutes and the arm and fly.
But your idea is very good and maybe I could submit a enhancement request, what do you think Randy?
E.
@Martin Schmid - The values on the graph are gx, gy and gz. The HUD is also shown that displays how the APM perceives the roll and pitch during heating.
I'm going to be re-running the tests with the APM armed. It looks like some sensor fusion occurs during arming that doesn't occur during the disarmed state.
@Jeff Wurzbach - The units of temperature are degrees Fahrenheit. The post flight case temperatures are about 125 degrees after some time outdoors. This is flying over my sunny asphalt parking lot. After I had a crash I brought the quad back inside and checked temperatures on various components in an attempt to track down the failure.
@emile - It looks like the gyro offsets are only calculated at power on. Not on arming. I haven't peered into the code yet to confirm. We do seem to have temperature available to us as the temperature from the MPU-6000 chip is shown in the status window in MP in real-time. Perhaps a feature to check temperature variance from power on and initiate a gyro calibration if the temperature has changed too much at arming.
I've gone ahead and used some liquid electrical tape to darken my APM case.
This is why professional certified IMU systems are precalibrated with temperature compensation on Gyros.
Gyros are very sensitive to temperature, and this is why you should arm only when you are pretty sure the IMU has settled to a working temperature.