Skip to content
London Defence R&D

Sensors and redundancy

Three IMUs from three makers, two barometers, a heated IMU island, and how ArduPilot EKF3 uses them in three lanes.

What is on the board

Raptor Pilot Pro FC carries three inertial measurement units (IMUs) from three makers and two barometers from two makers. There is no compass on the board; it connects through the GPS port over I2C or over CAN, away from the power wiring.

Sensors on Raptor Pilot Pro FC.
SensorPartMakerRange and notes
IMU 1, primaryADIS16470Analog DevicesTactical grade, ±2000 °/s, ±40 g, 2 kHz output, 8 °/h in-run bias, factory calibrated from −10 to +75 °C
IMU 2ICM-45686TDK±4000 °/s, ±32 g
IMU 3BMI088BoschMade for high vibration, ±2000 °/s, ±24 g
Barometer 1BMP581Bosch±6 Pa relative
Barometer 2MS5611TE Connectivity±1.5 hPa absolute
CompassExternalYour choiceGPS port (I2C) or CAN

Why three IMUs from three makers

Three sensors of the same model fail in the same way. A batch fault, a bug in the sensor's own firmware or a temperature effect hits all three at once, and the redundancy is gone when you need it. Three makers make that much less likely: the parts share no design, no production line and no firmware.

Each IMU also has its own SPI bus and its own power regulator (LDO). A short or a bus fault on one sensor cannot stop the other two. The barometers follow the same rule: two makers, two separate buses.

How ArduPilot uses the three IMUs

ArduPilot's estimator, EKF3, runs one instance for each IMU. ArduPilot calls each instance a lane. All three lanes run at the same time, each with its own IMU. The aircraft flies on the lane with the best health score, and if that lane goes bad, ArduPilot switches to a healthier one in flight without a reboot. The EKF3 overview and the lane switching page in the ArduPilot documentation explain the details.

The board's ArduPilot configuration runs three lanes. The parameter that controls this is EK3_IMU_MASK: a bit mask of the IMUs that get a lane. If you load a parameter file from another board, check that it still enables all three IMUs.

text
EK3_ENABLE    1    # EKF3 on
EK3_IMU_MASK  7    # bits 1 + 2 + 4: a lane for each of the three IMUs
EK3_PRIMARY   0    # the lane used at start-up
ArduPilot parameters for three EKF3 lanes.

Two barometers

The two barometers have different strengths. The BMP581 gives fine relative resolution (±6 Pa), which is what altitude hold needs. The MS5611 gives good absolute accuracy (±1.5 hPa). They sit on separate buses, so one bus fault cannot take both. In ArduPilot, BARO_PRIMARY picks the barometer used for altitude, and if that one stops reporting, ArduPilot uses the other.

The heated IMU island

A gyroscope's bias drifts with temperature. On a cold morning the board warms up during the first minutes of flight, and a bias that was zeroed on the ground wanders in the air. The IMUs on Raptor Pilot Pro FC sit on an island that is cut off from the rest of the board, with a 1.8 W PWM heater under it. The heater holds the island at a steady temperature, so the IMUs stay in their calibrated band from a cold start and the bias does not move as the air warms up.

In ArduPilot, BRD_HEAT_TARG sets the target temperature in °C. The IMU temperature is reported with the IMU data, so you can watch it settle in the ground station before you fly in the cold.

Vibration

The BMI088 is on the board for airframes with high vibration: it keeps a usable signal where the other two sensors clip. If your logs show vibration levels that differ a lot between the three IMUs, look at the mounting first. Soft mounts and loose cables change what each sensor sees.

Did not find your answer?

Ask us about Raptor Pilot Pro FC. Your question helps us improve this guide for everyone.