IMU Temperature Calibration on an unheated board

After studying @amilcarlucas great tuning guide, I’ve been looking into IMU Temperature calibration. I’ve been playing around with a Pixracer R15. This has just been a bench test so other than flashing latest stable and setting a frame type, it’s fully default.

I ran the test a twice and here’s the results from the second run:

tcal32.parm (1.2 KB)

My questions are:

1 - On an unheated board is necessary to set INS_TCALn_TMAX? I’m assuming we’re relying on the 10 minute time out if there’s no heater? It looks as though I was getting to ~46c in my tests just on USB power.

2 - What happens when if the board is exposed to temperatures outside of the calibration range? In my case I would expect that the board could go over 46c in the summer, especially if there is a VTX near by.

3 - From the graphs I posted above, would that be an acceptable calibration? I see some jumps around at the low temperatures but flattens out.

4 - Is it normal that the two IMU’s have such different results?

1 Like

I did a CUAV V5 Nano (unheated) and I put the whole copter out in the sun when starting the test - which is it’s natural environment when in use.

Those graphs level off fairly consistently so there’s a good chance you wouldnt have much to gain by starting over.

I set max at 60 and used a hairdryer:


The calibration is only valid inside the range its calibrated on. Outside of that and it will increasingly diverge

Yes, it is better to do so, and help it out with an hairdryer, taking care not to cause the accels to vibrate nor move in the process.

It will use the last calibration (either the max or the min limit). And that is usually not good.

Looks good to me, nice logarithmic temperature curve in black. No oscillations on the accels nor gyros (board seams to not have moved during calibration)

Yes, different chip, different results. That is why we do this calibration in the first place! :slight_smile:


Thanks guys! This is good information. Since this is just a bench test board, I’m going to try it again and borrow my better half’s hair dryer. (Canadian winter, leaving it in the sun isn’t an option for a while)

Another question: Do other calibrations, specifically the initial accelerometer calibration matter before you do the IMU temp calibration? In the winter I have no problem cooling the largest of vehicles, but come summer my freezer only has so much room. If other calibrations don’t have an impact on the results would it be better to do this step before installing it into an airframe?

1 Like

One more question: Are the calibration values consistent or stable across firmwares? For example: On an F405 board could I load a custom firmware with the IMU calibration feature, perform the calibration to get the data, then load the intended firmware?

No, they are specific to the mechanical characteristics of the board and the IMU

1 Like

But yes, you can use the same calibration file for the same board on any ArduPilot firmware on any version.

1 Like

Perfect. That’s what I was wondering. Thanks.

I noticed @andyp1per used the internal calibration, and @amilcarlucas is using the python script. I see reasons and advantages to each, but the calibration settings aren’t exactly the same. From an operations/flight perspective do the calibrations each generate make any significant difference down the road?

1 Like

The only real difference is that you can verify the results and that the board didn’t move with the python script. With the internal process it is not possible to verify the quality of calibration.

Hi @amilcarlucas Sir, I have performed the IMU temperature Calibration and here is the results:

My FC is Pixhawk 6C. As per the wiki, the above graphs are good except the Gyro1. It is showing some kind of noise. Here is the logs for your reference:

I really want to know your views on this calibration. Do I need to calibrate it again? I have not placed the Pixhawk flat during this calibration, I know it does not matter. Thanks! Will be waiting for your response.

1 Like

It is not important to be 100% leveled, but it should be placed close to level.
The Accels look good, and I guess your Gyro 1 is a bit noisy, but looking at the Y scale it has less drift than gyro 0.

The temperature curve is nice 0 to 60, well done.
The only curve that is a bit strange is the Uncorrected Y on gyro 0, that one is not monotonic and that produces a non-fully-corrected Corrected Y.

I would repeat it.

1 Like

Hi @amilcarlucas, Thanks for your response. I have done few more IMU temperature calibration but in all the test, the Uncorrected Y on gyro 0 is not monotonic. It is same in each calibration. Just for the info, I have set the BRD_HEAT_TARG to 70 as per the instructions given in wiki and powering it on in a room temperature instead of powering it on in upper temperature environment(as 6C has a heater). My Temp calibration is completed within 2 minutes in each time. Can the internal heater cause this noise in Gyro1?

Test 3rd:

Test 4th:


Thanks! Will be eagerly waiting for your response.

You should always power it at the lowers temperature, right after taking it out of the freezer.
But the graphs look good and reproductive, so I think your gyro 0 is not very good. But after calibration it is a bit better

1 Like

Hi @amilcarlucas, Thanks for your quick response. Yes! I have always powered it right after taking out of the freezer in the room temperature (around 28C).

Ohh! I have not used this 6C much. Is it a defective one or all 6C gyros perform the same? do you have any experience on Pixhawk 6C?

No experience with that one. Test it in an unimportant test vehicle first.

1 Like

Hi, I’m a beginner and I wanted to ask you …scientist…bala…which program you use to get these graphs and how the trend of the various lines should be interpreted. Grazie

@Luciano_Andreani just follow Methodically tune (almost) any multicopter using ArduCopter 4.4.x the program and the graph interpretation is explained there.

1 Like

This is a good question, I have noticed this too. The online and offline calibration both have significantly slightly different results. Which one we should go with?

Why do we need to calibrate the IMU before performing the Temperature calibration? and if I again re calibrate the IMU after performing the Temperature calibration then will it create any issue?

As per I understand the Tempt calibration will calculate the IMU offsets based on the temperature change and could be helpful in the FC which do not have inbuilt heaters.

As my FC has inbuilt heater and it is going to heat the IMU at 45C no matter what is the outside temperature. So for me does the below 45C offset really make any difference?

Sorry If I understand it wrong, just trying to find the logical explanation. I hope @amilcarlucas would answer these.Thanks for your time.