Ok, quick update, with some promising progress:
- Tested with another Pixhawk - no improvement.
- switched around the Here with the Here+ (changed cables to be able to swap GPS ports) - issue persists.
- Reset parameters to default - was able to initiate calibration with the Here+ showing progress on Mag 1 and 2, the internal one on Mag 3 (and the Here connected to GPS2 not showing any movement in the calibration bars)…
Now will need to boil down which parameter(s) foul this up so bad, that I can neither initiate a proper calibration nor fly (due to bad compass health). Still would prefer to use the regular Here as compass No 3 - and not the internal one…
For now, I am glad this has left the deadlock stage. Once I have found the culprit parameter, will I update.
Well, weeks later and after looong times of trial and error, today I made it to the bottom of the issue - an odd parameter conflict.
Part of the UAV has a Teraranger One rangefinder integrated. When I initially configured the ArduCopter parameters for the FC, the rangefinder was connected. As the build progressed, I had temporarily uninstalled it, since the structure it was integrated in was in the way. It was during this phase of the build, I was attempting the compass calibration - unsuccessfully.
Through changing parameters bit by bit, and after countless times of rebooting and re-checking if compass calibration could be initiated after the change made, I found the following:
If the rangefinder is NOT connected while the param RNGFND_TYPE is set to 14, the compass calibration cannot be started (and MP will report bad compass health, keeping the aircraft from arming. If you set it to “0”, compass calibration can take place as expected).
- If param RNGFND_TYPE is set to 14, the rangefinder has to be connected, only then compass calibration can be initiated!
It may be a rare case, but maybe this resolution helps someone.
What remains unresolved, is a documented enumeration of the compasses, so that it is clear “which one is which”.
I wish there was some process to speed up dealing with such undesired behavior.
Does anyone know of a tool to be alerted of such conflicts, or of any way to check a log which flags such a “hindrance” - without being a full-on programmer?