The EKF has not finished starting
What ArduPilot says:
- EKF2 not started
- EKF3 still initialising
- EKF3 not started
- EKF2 still initialising
The EKF is ArduPilot's position and attitude estimator; one copy of it (a core, or lane) runs for each IMU it is told to use. “not started” means the copies have not been created yet: that happens about 1 s after boot and is put off while the GPS is still being identified. “still initialising” means a copy exists but does not call itself healthy yet: it needs 1 s of sensor data and 1 s more to settle, and on the ground its position and height must stay within 1 m of where they started.
What to do, most likely first
It was powered on moments ago.
CheckWait 10 to 30 s with the aircraft still. “EKF3 IMU0 initialised” and “EKF3 IMU0 tilt alignment complete” show that it is moving on.
FixNothing to change: arm once the message is gone.
The aircraft is being moved, or stands on something that shakes (a running car, a boat), so the estimate never settles.
CheckThe message stays while you carry the aircraft and clears a few seconds after you put it on firm ground.
FixStart it on firm, still ground. If it was moved a lot during start-up, reboot it there.
EKF3 is selected but not switched on, so it can never start.
Check
AHRS_EKF_TYPEis 3 andEK3_ENABLEis 0.FixSet
EK3_ENABLEto 1 and reboot.The EKF is waiting for a GPS that the parameters promise but that never answered.
Check“EKF3 waiting for GPS config data” repeats every 10 s in the messages.
FixSee that message: wire the GPS, or set
GPS1_TYPEto what is really fitted.
A barometer whose reading wanders (sunlight or wind on the sensor, a board still warming up) moves the height by more than 1 m and keeps the EKF “initialising”. Cover the barometer with open-cell foam and give a cold board a minute.
Parameters to look at
| Parameter | What it is |
|---|---|
AHRS_EKF_TYPE | Use NavEKF Kalman filter for attitude and position estimation |
EK3_ENABLE | Enable EKF3 |
EK3_IMU_MASK | Bitmask of active IMUs |
GPS1_TYPE | GPS type |
Where to do it:Setup & Tuning Guide
The code that sends it
EKF2 not started
libraries/AP_AHRS/AP_AHRS.cpp AP_AHRS::pre_arm_check() · Open in ArduPilot Copter-4.7.1
EKF3 still initialising
libraries/AP_NavEKF3/AP_NavEKF3_core.cpp NavEKF3_core::InitialiseVariables() · Open in ArduPilot Copter-4.7.1
EKF3 not started
libraries/AP_AHRS/AP_AHRS.cpp AP_AHRS::pre_arm_check() · Open in ArduPilot Copter-4.7.1
EKF2 still initialising
libraries/AP_NavEKF2/AP_NavEKF2_core.cpp NavEKF2_core::InitialiseVariables() · Open in ArduPilot Copter-4.7.1