NEED HELP with compass orientation

Hi All,

I’ve been fighting with this for awhile, but I think I just need assistance on setting up a rather strange looking multi-rotor. I’m running a Pixhawk 2.1 with 2 external compasses. In the attached images, “up” is towards the ceiling, and “forward” is towards the garage door. Compass 1 has the red arming light on, while compass 2 does not. AHRS_Orientation is set to pitch 90, because the pixhawk is pointing at the ceiling. I cannot seem to orient the compasses in a way that they will play nice with each other and the EKF, and read correctly. The closest I’ve gotten is by setting compass 1 to 22 (Roll 270 Yaw 90), compass 2 to 37 (Roll 90 Yaw 270) and disabling compass 3. This setup doesn’t produce any EKF errors, but ready 90 degrees off. Also, when I reboot the Pixhawk it reassigns compass 3 to another external compass (there are only 2 installed, where is it getting the 3rd??) I’m rather confused, and could use come guidance. Thanks!!

IMG_20190220_104815|375x500

Try in-flight compass learning (COMPASS_LEARN to 3). I have not used it myself but for a fsetup like yours it might be the easiest route.

Maybe it’s assigning it to an internal compass.

Compass_Learn doesn’t change the Compass_Orientation parameters, does it? Just the offsets? I’m struggling with the Compass_Orient parameters, as there is conflicting information as to whether they add to AHRS_Orientation or not, and whether they follow euler angle conventions or not

I have just one compass enabled, and it is set to 28 (roll 90 pitch 90). It is reading correctly, but is still confusing the EKF, indicating that it is conflicting with IMU measurements? Not sure how this works, since my AHRS orientation is correct and the compass seems to be working, but the 2 still seem incompatible. Apologies if I’ve stopped making sense, I’m rather confused at this point.

Sorry you are right, it won’t set orientation.

It occurred to me that what I was thinking was the COMPASS _AUTO_ROT parameter. I knew I saw this discussed but gave you the wrong parameter. Check it out.