Estimator selection

Hi,
Are there any docs with pros/cons of each estimator - i.e. which of them to prefer for which cases?
On dev.px4.io there are only a list of them1, but without any explanation what to prefer and what are ready for “production use”. Especially why we need both LPE and EKF2 if each of them use extended Kalman filer but for different set of inputs?

1 Like

I’m not aware of any comparison documentation. I am currently in the process of finalising the EKF2, but was putting off doing a wiki (similar to what I did for on APM for their EKF here: http://ardupilot.org/dev/docs/ekf2-navigation-system.html) until all the features were in and the user adjustable parameter set was finalised. EKF2 is now feature complete for standard multi-rotor applications, still needs some work for fixed wing air data fusion and needs a lot more test hours before it can be considered production ready.

As a general rule, simple methods like complementary filters are easier to tune, are less likely to have software bugs, but are more vulnerable to sensor glitches (excluding the IMU) because they cannot apply probability based confidence checks, and are more limited in the types of measurements they can use.

The more complex Kalman Filter based methods when correctly tuned, are more accurate as they use all of the available sensor measurements and weight measurements based on their relative uncertainty, however achieving a reliable and high performing tune for a specific application requires a high level of specialist knowledge.

Is a LPE a temporary solution before EKF2 will stabilized? Also do I understand right that EKF2 has shared codebase between PX4 and APM?

I don’t know if LPE would be completely removed, because there are benefits in having a simple method that can be used as a reference or fallback when users are having problems with tuning.

EKF2 on PX4/ecl started out using the same derivations, but different code due to licensing issues. The derivations have now changed with use of different states, so about the only things they have in common now are some architectural concepts, the use of a delayed time horizon with output predictor and the types of observations that can be fused.

Longer term I would like both projects to use the PX4/ecl EKF2 as I do not have the time to support new features on two code-bases.

Hi pardon me to post my query here. There was an interesting discussion and I couldnot resist to ask. I was just wondering, what makes LPE different than EKF2 , apart from being simple. LPE is also extended kalman filter right? Kindly correct me if my understanding of LPE is wrong. What I thought was that it fuses the data from sensors such as mocap, or optical flow or sonar and uses these measurements as predictor of state while using accelerator as predictor.