An IMU is not delivering data
What ArduPilot says:
- PreArm: Accels not healthy
- PreArm: Gyros not healthy
The IMU is the chip that holds the gyros (which measure rotation) and the accelerometers; most boards have two or three. Every one that was found at start-up must keep delivering fresh samples, and there must be at least one. A sensor is also marked unhealthy when it has had read errors since start-up while another has had none. The message says which kind of sensor failed, not which chip.
What to do, most likely first
A start-up glitch: the sensor did not come up cleanly this time (cold, damp, a hard power cycle).
CheckPower off, wait a few seconds, power on. If the message is gone and does not return, that was it.
FixReboot once. A sensor that fails again and again is not a glitch: go on to the next causes.
The board's 5 V supply dips or is noisy, and the sensor resets.
CheckWatch the board voltage in the ground station while servos move or the video transmitter starts; on USB alone some boards run low.
FixPower the board from a regulator that holds 5 V under load; feed servos and video from their own supply.
The sensor is damaged: after a crash, water, or a board that was overheated.
CheckThe message returns at every boot, or comes and goes when you tap or flex the board gently.
FixReplace the flight controller. Do not fly on a board whose IMU drops out, even if a second IMU still works.
Parameters to look at
| Parameter | What it is |
|---|---|
INS_ENABLE_MASK | IMU enable mask |
INS_USE | Use first IMU for attitude, velocity and position estimates |
INS_USE2 | Use second IMU for attitude, velocity and position estimates |
INS_USE3 | Use third IMU for attitude, velocity and position estimates |
Where to do it:Firmware Inspector
The code that sends it
PreArm: Accels not healthy
libraries/AP_Arming/AP_Arming.cpp AP_Arming::ins_checks() · Open in ArduPilot Copter-4.7.1
PreArm: Gyros not healthy
libraries/AP_Arming/AP_Arming.cpp AP_Arming::ins_checks() · Open in ArduPilot Copter-4.7.1