ArduPilot does not yet know where the copter is
What ArduPilot says:
- PreArm: Fence enabled, need position estimate
- PreArm: Need Position Estimate
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
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.
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.
A circular or polygon fence is on, and a fence cannot be watched without a position.
Check
FENCE_ENABLEis 1 andFENCE_TYPEhas bit 1 (circle) or bit 2 (polygons) set.FixWait for the position. For flying without GPS, an altitude-only fence (
FENCE_TYPE1) needs no position.ARMING_NEED_LOCis 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.
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
| Parameter | What it is |
|---|---|
ARMING_NEED_LOC | Require vehicle location |
FENCE_ENABLE | Fence enable/disable |
FENCE_TYPE | Fence Type |
GPS1_TYPE | GPS type |
EK3_SRC1_POSXY | Position Horizontal Source (Primary) |
Where to do it:Setup & Tuning GuideSetup & Tuning GuideFailsafe Explainer
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