Preventing an unstable EKF

I’d like some help with analysing a BIN file and suggestions to help get better flight data. I’m writing a system that uses ArduPlane as a low-cost flight LOGGER in real-sized aerobatic aircraft. My software was originally based on FlightCoach.

For the past year, I have been flying a low powered Slingsby Firefly and getting good results from a cheap Omnibus F4 and a Beitian BN-880 GPS. I’ve since stepped up to an Extra 300, high performance aircraft doing more radical manouvres - flick rolls and a lot more time spent inverted. Consequently, I’m losing the GPS signal more often. The Ardupilot EKF is now becoming very unstable.

I’ve recently upgraded my hardware to Pixhawk Mini 6C controller with a larger Beitian M10 GPS(BE-450). This has dual IMUs and a faster processor which has helped matters. I now get the occasional “reset” when the GPS is re-acquired and only a few minutes of crazy EKF instability on a flight. The EKF eventually resets and the remainder of the flight data is acceptable.

Here’s my BIN file:

The take off occurs at 11:55:08 and the PM/Load data jumps from 60% to 85%. Is this acceptable? Should I only be using one IMU? Should I slow down the logging from LOG_FILE_RATEMAX = 30 hz?

There’s a “Reset Glitch” at 11:58:28. The number of satellites drops to zero, but seconds later it’s back to 20. Can the EKF instability be “smoothed” out?

The major instability is between 12:14:01 and 12:16:26. Once again the satellites drop to zero. Interestingly the PM/load drops from 85% to 58% and then stabilises at 62% for the rest of the flight. Why does the load drop? The EKF goes crazy as shown by XFK3/IPE.

I realise that I could put a second GPS sensor on the bottom of the aircraft, but fitting a permanently wired GPS sensor would involve CAA approvals - a nightmare. I’m hoping that there is some way of stopping the EKF becoming so unstable when it loses the GPS…

Any help would be greatly appreciated.

1st use better quality GPS modules other than Beitian. Try using 2 with the patch antennas oriented opposing and configure to “Use Best”.

You are getting compass switching. Is the external compass set as priority 1? And try disabling the internal compass after that. Or, use a better quality external compass or a module with one (RM3100). And try a helical antenna.

So you have a few avenues to explore.

1 Like

Use either septentrio or F9P receivers.
And of course helical antennas!

1 Like

Thanks for your reply. I’ll check my compass settings. Has the compass caused the EKF instability? I thought that it was the GPS going to a count of zero saatellites

Assuming that I keep my current hardware, are there some tweaks that will prevent the EKF going crazy? I don’t really understand why it goes so bad. Surely the EKF should continue predicting the path and then reset when the GPS comes back on line several seconds later.

There are no GPS glitch errors but lane switching outside of those momentary losses of Sats.

I don’t think so but try disabling the internal compass.
Why not just get a good module?

OK, so what is causing the lane switching if there are no GPS glitch errors?

Graph any field and you will see the error messages which I noted.

LOL, I’m trying to keep the cost down. I’ve already set the external compass to primary and I’ll disable the internal one. Thanks.

I’m looking at the PM/Load graph at the moment which shows the load starting at 60%, then jumps up to 85% on take off and then drops down to 60% when the major instability happens. Why does that happen, is that a problem?

Also the compass switching error messages happen prior to that while the EKF is still stable.

It’s 6% and so on… Here is a graph of an H743 based Flight Controller processing a lot.

Yes, you are right. The EKF Lane switching happens when you Roll as you noted. Still think a better quality GPS module with a helical antenna would be the best way to address it.

In the scheme of things the cost would seem to be insignificant. I’m familiar with your plane, I know the guy that builds the Panzl S-330.

Last questions.
Why would a better quality GPS sort the problem?
Is that the GPS is losing the satellites and not reacquiring fast enough or the GPS fails badly when over 4g?
Also why does the EKF freak out for 2 minutes at 12:14:01, yet only has a short “reset” spike at other times?
I hear what you’re saying about the relative cost, but I’m trying to keep the cost down so that people can have a flight recorder with sub $200 entry cost, also I want to keep the whole box very small and the helix antennas are large.

Thanks for your feedback.

Good luck trying to fix hardware issues in software.

After a couple of weeks you will realize that is a dead end and buy better hardware anyway.

But you can prove us wrong.

Fair enough. As well as cost, I’m trying to keep the size of the whole unit as small as possible.

I’m dealing with high speeds (160 knots) and a few seconds of g-forces over 4g, so I think that the quality of the GPS is paramount. In this use case, I’m thinking that the ability to handle and recover from large g-forces is more important that the acquisition of satellites and positional accuracy. What’s your view?

I’ve just watched a video and read a post by Andy Piper, who really rates the Holybro M10 Micro, is that a big enough step up from the Beitian BE-450?

Try a holybro F9P helical or the CUAV dual helical or the septentrio Mosaic helical.

Then you will see that it is simply better. You get what you pay for. Cheap receivers are just that: cheap and not that good.

IIRC kinematic models on uBlox receivers are also limited to 4G :person_shrugging: though recovery may be faster.

Yes, I think that the g-force is a problem. Does anyone know if there are any GPS units that can cope with G-force above 4g?

AFAIK the UBlox and septentrio are configured for 16G. @LupusTheCanine where did you get the 4G information?

Ardupilot parameter list and ublox documentation
GPS_NAVFILTER: Navigation filter setting
ZED-F9P Integration manual Page 28 and 29.

1 Like