← All tools

Message & Error Explainer

What an ArduPilot message means and what to do about it

Українська

ArduPilot does not yet know where the copter is

Stops itPosition and attitude estimate (EKF, AHRS)Copter only

What ArduPilot says:

The EKF, ArduPilot's position estimator, cannot yet say where the copter is, and something needs to know. “Need Position Estimate”: the flight mode you are arming in uses position (Loiter, PosHold, Auto, Guided, RTL), or ARMING_NEED_LOC is 1. “Fence enabled, need position estimate”: the mode itself would fly without, but a circular or polygon fence is on. A position counts when the EKF has one from GPS, or from optical flow or a camera system; an active EKF failsafe fails the check too. It cannot be skipped.

What to do, most likely first

  1. The GPS has no fix yet, or the EKF is still checking it: after the fix it wants about 10 s of steady data before it starts using GPS.

    CheckThe line “EKF3 IMU0 is using GPS” marks the moment it is ready.

    FixWait outdoors with the copter still.

  2. You are arming indoors, or without a GPS, in a mode that needs position.

    FixArm in Stabilize or AltHold; switch to Loiter in the air only once the position is there.

  3. A circular or polygon fence is on, and a fence cannot be watched without a position.

    CheckFENCE_ENABLE is 1 and FENCE_TYPE has bit 1 (circle) or bit 2 (polygons) set.

    FixWait for the position. For flying without GPS, an altitude-only fence (FENCE_TYPE 1) needs no position.

  4. ARMING_NEED_LOC is 1: a position is demanded in every mode, so that the copter can always return to launch.

    FixWait for the GPS fix: that is what the setting is for.

  5. The EKF is rejecting the GPS because the compass or the inertial sensors disagree with it.

    CheckThe GPS shows a 3D fix and many satellites, yet the message stays for minutes; other pre-arm messages about the compass or EKF come with it.

    FixDeal with those messages first, then reboot and keep the copter still while it starts.

Parameters to look at

ParameterWhat it is
ARMING_NEED_LOCRequire vehicle location
FENCE_ENABLEFence enable/disable
FENCE_TYPEFence Type
GPS1_TYPEGPS type
EK3_SRC1_POSXYPosition Horizontal Source (Primary)
The code that sends it

PreArm: Fence enabled, need position estimate

ArduCopter/AP_Arming.cpp AP_Arming_Copter::mandatory_gps_checks() · Open in ArduPilot Copter-4.6.3

ArduCopter/AP_Arming_Copter.cpp AP_Arming_Copter::mandatory_position_checks() · Open in ArduPilot Copter-4.7.1

PreArm: Need Position Estimate

ArduCopter/AP_Arming.cpp AP_Arming_Copter::mandatory_gps_checks() · Open in ArduPilot Copter-4.6.3

ArduCopter/AP_Arming_Copter.cpp AP_Arming_Copter::mandatory_position_checks() · 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