I have studied Kalman Filtering with respect to inertial navigation for quite some time. I look into the ArduPilot code and I see that it allows for an EKF to run on a per-IMU basis, and can choose the one that's best suited for navigation. Knowing what I know about Kalman filters, I would imagine that a closely-coupled two-IMU EKF would likely perform better, both CPU-time wise and accuracy-wise than this current solution. I suspect the person designing the EKF strategy had a very good reason for doing this, and I'd like to know it.
I suspect the reason is that the two-IMU EKF can still end up in a pathological place (rejecting GPS fixes... perhaps after a GPS outage) and this could lead the drone to have no EKF/IMU information that's usable... so to cut down the chance of that, the dual EKF option is chosen. Alternatively, the solution could have been chosen to use one IMU per EKF because of state-space explosion, naive implementation, or lack of dual-IMU hardware implementations to play with.
I have started looking at the EKF code in ArduPilot, and will probably experiment with a two-IMU EKF. Is there interest in seeing such an implementation in ArduPilot, as an option?