← All tools

Message & Error Explainer

What an ArduPilot message means and what to do about it

Українська

One copy of the EKF reports itself unhealthy

Stops itPosition and attitude estimate (EKF, AHRS)

What ArduPilot says:

The EKF, ArduPilot's position and attitude estimator, runs one copy (a core, or lane) per IMU; the number in the message counts from 0. A copy calls itself unhealthy when it has an internal fault, when GPS speed, position and height all disagree with it at once, or when, standing on the ground without GPS, its position or height has moved by more than 1 m. “no EKF3 cores” means no copy could be created at all, usually for lack of memory.

What to do, most likely first

  1. The aircraft is being moved or shaken while it stands disarmed (carried, on a vehicle), so a copy's position drifts.

    FixPut it on firm ground and wait about 10 s. A copy that stays unhealthy for 5 s restarts by itself (“EKF3 IMU0 forced reset”).

  2. The barometer reading drifts or jumps: sunlight, wind or prop wash on the sensor, or a board still warming up.

    CheckWatch the altitude in the ground station while the aircraft stands still: it should stay within about 1 m.

    FixShield the barometer from light and airflow with open-cell foam; give a cold board a minute to warm up.

  3. One IMU gives worse data than the other, so only its copy fails.

    CheckThe number in the message is always the same; “Accels inconsistent” or “Gyros inconsistent” may appear too.

    FixCalibrate the accelerometers again. If the same IMU stays bad after that, the sensor itself is suspect: test the board on the bench before flying it.

  4. “no EKF3 cores”: there was not enough memory for the EKF.

    Check“EKF3 not enough memory” or “EKF3 allocation failed” appeared at start-up.

    FixSee that message: fewer copies in EK3_IMU_MASK, or fewer large features on a small board.

Parameters to look at

ParameterWhat it is
EK3_IMU_MASKBitmask of active IMUs
EK3_ENABLEEnable EKF3
AHRS_EKF_TYPEUse NavEKF Kalman filter for attitude and position estimation
The code that sends it

EKF3 core N unhealthy

libraries/AP_NavEKF3/AP_NavEKF3.cpp NavEKF3::pre_arm_check() · Open in ArduPilot Copter-4.7.1

no EKF3 cores

libraries/AP_NavEKF3/AP_NavEKF3.cpp NavEKF3::pre_arm_check() · Open in ArduPilot Copter-4.7.1

EKF2 core N unhealthy

libraries/AP_NavEKF2/AP_NavEKF2.cpp NavEKF2::pre_arm_check() · Open in ArduPilot Copter-4.7.1

no EKF2 cores

libraries/AP_NavEKF2/AP_NavEKF2.cpp NavEKF2::pre_arm_check() · Open in ArduPilot Copter-4.7.1

Written here for Copter 4.6. In the tool you choose your vehicle and version, see your own parameter values beside the ones named here, and drop a flight log to have every message in it explained.

Open it in the Message & Error Explainer