The GPS is not sending positions fast and regularly enough
What ArduPilot says:
- PreArm: GPS N: not healthy
“Not healthy” is not about satellites: the receiver has a fix, but its messages come too slowly or unevenly. ArduPilot wants a position every 200 ms (5 Hz). It marks a GPS unhealthy when two messages in a row come more than 245 ms apart, when the average gap reaches 215 ms, when the data keeps arriving more than 50 ms later than expected, or when the receiver itself reports a fault (a DroneCAN GPS does).
What to do, most likely first
The receiver runs at its factory rate, often 1 Hz, because ArduPilot is not configuring it.
Check
GPS_AUTO_CONFIGis 0, orGPS1_TYPEis 5 (plain NMEA). In a log, the Delta field of the GPA message is the time between messages: it should stay at 200 ms.FixFor a u-blox module set
GPS_AUTO_CONFIG1 andGPS1_TYPE1 (auto), connect both data wires and reboot: ArduPilot then sets the rate itself.The receiver cannot keep up: too many satellite systems at once, or a rate above 5 Hz.
Check
GPS1_RATE_MSbelow 200 asks for more than 5 Hz, which its own description warns some receivers cannot sustain. Older and clone modules also slow down with every system switched on.FixSet
GPS1_RATE_MSto 200. If that is not enough, limit the systems withGPS1_GNSS_MODE, for example 65 (GPS and GLONASS) or 5 (GPS and Galileo), and reboot.Extra data crowds the link to the receiver: raw data logging is on.
FixSet
GPS_RAW_DATAto 0 unless you need raw satellite data for post-processing.A DroneCAN GPS reports itself unhealthy, or its messages are held up on the CAN bus.
CheckThe node's status in the ground station's DroneCAN screen; many other nodes on the same bus, or a missing terminator, delay messages.
FixCheck the bus wiring and termination, and update the GPS node's firmware.
Parameters to look at
| Parameter | What it is |
|---|---|
GPS1_RATE_MS | GPS update rate in milliseconds |
GPS_AUTO_CONFIG | Automatic GPS configuration |
GPS1_TYPE | GPS type |
GPS1_GNSS_MODE | GNSS system configuration |
GPS_RAW_DATA | Raw data logging |
Where to do it:Setup & Tuning GuideBoard & Wiring Planner
The code that sends it
PreArm: GPS N: not healthy
libraries/AP_Arming/AP_Arming.cpp AP_Arming::gps_checks() · Open in ArduPilot Copter-4.7.1