If I send my drone upwards at high speed, I see it rotate unexpectedly after a few seconds, usually by very roughly about 180 degrees. It remains at its new orientation after I stop ascending.
I have 2 compasses - 1 in the Pixhawk, and 1 external compass that is mounted below the quadcopter at least 15cm from the nearest noise source.
I have the log available here; download the zip and extract using my username as the password.
I did an auto analysis of the log and MP told me:
Test: Compass = FAIL - WARN: Large compass offset params (X:259.56, Y:281.75, Z:-268.91)
WARN: Large compass offset in MAG data (X:259.00, Y:281.00, Z:-268.00)
Large change in mag_field (41.86%)
Max mag field length (566.57) > recommended (550.00)
I also have a screenshot of Yaw vs. DesYaw (red line is desired yaw):
My other drone has the internal compass enabled and flies fine. Should I be disabling the internal compass here? The internal Pixhawk compass is located right next to the battery so is subject to a lot of noise.
I previously thought that Arducopter prioritised the first compass with the knowledge that the internal compass would probably have interference. I might try this anyway. Thanks.
I’m bemused because the external compass is so far away (>16cm) from the drone wiring. Is it possible the folding stick (that the compass is attached to) is wobbling?
to me, it seems like your Yaw is not-so-well tuned, and the yaw you see at high throttle is caused by power difference between CW and CCW motors (difference in props, or some motors are slightly rotated, if mounted on round arms)
Just reporting back that the problem was indeed slightly rotated motors. I did not need to autotune to fix this, just make sure each motor is vertical.