EKF3: running ExtNav and GPS leads to position jump if GPS is enabled again

Hi,

I’m currently seeing behaviour that looks very similar to what was described in #27729, and wanted to check if this is expected or if there is a recommended way to handle it.

In our setup we have both GPS and Visual Odometry available:

  • GPS is coming from the autopilot as usual
  • Visual odometry is generated on a companion computer and sent via MAVLink

What we observe is:

  • During a GPS denial event, the system runs well using visual odometry (stable position, low variance)
  • When GPS comes back online, the GPS position can be significantly wrong (we’ve seen jumps on the order of ~300 m)
  • Despite this being clearly inconsistent with the current EKF state (which is stable from visodom + IMU), the EKF appears to accept or reset toward the GPS position
  • This results in a large position jump and loss of stability / failsafe

Our expectation was that the EKF would reject this first GPS inputs after it comes back (based on innovation / consistency checks) and continue using the visual odometry until the GPS becomes healthy again.

At the moment we are sending visual odometry as a GPS-like input (fused with GPS), but we are considering switching to MAVLink ODOMETRY (ExternalNav). However, that change is non-trivial on our side, so before doing that we wanted to check:

  • Is this behaviour expected when mixing GPS and ExternalNav sources?
  • Is there a recommended configuration to prevent EKF resets to bad GPS when it comes back online?
  • Are there parameters (e.g. innovation gates, source selection, lane switching behaviour) that can be tuned so that EKF continues to trust visodom over GPS in these cases?

I noticed #27729 mentions resets to GPS even when it is not part of the active source set, so I’m wondering if what we’re seeing could be related to similar reset / lane-switch logic.

Any guidance on best practice for handling GPS recovery after denial (especially when external nav is available and reliable) would be really helpful.

Thanks!