Synthetic airspeed estimate jumps during takeoff

I have a plane running ArduPlane 4.1.0beta3 without an airspeed sensor. During the first takeoff after startup, I routinely observe a sudden spike in the synthetic airspeed estimate. As the groundspeed passes through 2-3 m/s, the wind estimate suddenly jumps from zero to between 9-12 m/s. This happens seemingly instantaneously, between two log points. This causes auto takeoffs to rotate too early, often resulting in a stall. Once the aircraft is flying, the wind estimate slowly decays back down to a reasonable value, but after I land, the wind estimate starts to climb back up to around 12 m/s.

I don’t understand why the wind estimate is changing on the ground or during takeoff, as it seems like there is no valid information available about the wind at these times.

Here is a log file from a flight that demonstrates this problem: I have included some relevant plots below.

Here is a screenshot of the airspeed and wind estimates during the first takeoff:

And here are the plots for the whole flight:

I suspect this is a bug in EKF3. I looked back at an older log from when I was running 4.0.9 and the airspeed looks much better. I’ll try switching back to EKF2 on my next flight to confirm this.

Hi @BenWolsieffer ,

I can’t find any jump in synth. airspeed, however the wind estimate jumps.

Any chance you got bitten by this bug?

Sorry, I may have used the wrong terminology here. I don’t really understand the difference between CTUN.As and CTUN.SAs, but, yes, the core problem is the wind estimate jumps, which in turn affects CTUN.As and the auto-takeoff code.

I saw that issue, although I’m not sure it affects me since I have a compass. I’m going to update to the 4.1.0 release anyway and check that first before trying EKF2.

this was a bug that we fixed in the final release of 4.1.0. We were incorrectly initialising the wind states in EKF3. It primarily impacted uses without a compass, but could impact users with a compass too.
If you get the issue with 4.1.0 final then we will need a replay log to diagnose it properly. That means setting:


and also raising LOG_FILE_BUFSIZE as much as you can based on the amount of free memory in the PM.Mem message.

Thanks for your help! I upgraded to 4.1.0, and the problem is resolved. Auto-takeoff works well too: