I agree with Dave that interference is likely your trouble, but one thing to be sure you have done is to calibrate the compass. On a large vehicle, like a mower, you can use the Compass Learn feature. The initial instructions are here: Testers needed for in-flight compass learning but the code is built in to the recent versions of Ardurover, so you can set an option for a switch and perform the cal easily.
For example, you can set ch7 option (or another channel) to “Compass Learn” on the main tuning screen in Mission Planner. Then, have the messages window open and flip the switch momentarily. You will see the message “Compass Learning Started.” After you drive around a minute or so in circles, figure 8s, etc., you will see “Compass Learning Finished.”