Toilet bowl like behaviour in Loiter

Hi all,

Platform: quad, about 2m in diameter, 40" props, and just under 25kg without payload.
Hardware: Cube Orange, 2*Here3 GPSs (blending), Mauch voltage and current sensors.
Running ArduCopter V4.0.5 (3f6b43e3)

Basically, I am experiencing toilet bowling in Loiter, that I think does not come from the compasses, in the first minute of flight, after which I change modes, fly a bit in AltHold and then trying again Loiter, at which time the toilet bowling disappears. In the first minute, I tried twice to counteract the toilet bowl effect with stick input but I also left it some seconds on its own. We have 3 completely identical drones and we have flown them a bit (about 100 flights) without any issues. Here is the log.

What I have done, checked or what you should consider:

  • Prior to the flight, compass calibration was done (using only the 2 external ones, which are about 40cm in front and 30 above the AP) along with radio calibration and horizon calibration. All other settings were done in/before prior flights.
  • Motors are aligned up to 0.2deg. Structure is fine
  • Motors do start at the same PWM
  • On the day of the flight there was wind (3~6 m/s)
  • Drone was on at least 3 min prior to take-off if I recall correctly
  • I found interesting things, though inconclusive from : NKF3 IVN & IVE, NKF4 SV & SP, PSC TPX & PX / TPY & PY
  • The drone was not flown since but flew prior without issues, though not too much
  • KP index was low. The flight was done quite north. The day was not overcast

Any help would be good. I am out of ideas. Maybe it comes from the GPSs, or Velocity XY PIDs but I was not able to draw a conclusion.

Thank you!

disable all other compass apart from the one on your gps puck thats up and away from the rest of the vehicle, if the compass is anywhere near power cables they will be useless and give bad data causing the toilet bowl effect. its better to just disable the offending compass modules rather than relying on them for redundancy, as comparing good data to bad data just gives more bad data.

1 Like


There are 2 GPSs on the vehicle. Internal compass is disabled. External are both enabled.
In the meantime I tried:

  • Different setting in the 2 GPS setup.
  • Because I was considering that PIDs might be an issue, I tuned the copter a lot better.

The behaviour is still there, here is a flight from yesterday. I will be conducting more flights to understand it better.

Any help would be good

You can see the velocity variances peek in loiter.

Despite being caused by the compass toiled bowling is actually a velocity variance. The vehicle measures its XYZ acceleration in body frame with a accelerometer. This acceleration is then integrated over time to get a velocity. We also get a velocity estimate from the GPS, however that is in earth frame. The vehicles yaw, from the compass, is then used to align the body frame velocity estimate from the accelerometer with the earth frame estimate from the GPS. Hence if the yaw estimate is wrong the two estimated velocitys seem not to agree and you get a velocity variance.

Step one for such things is to run the magfit tool, this is more accurate than the onboard compass and compass motor calibration. The key thing is to get a nice log, you want lots of turns and a range of current draws. Our got-to method is to fly figure eights at a range of speeds.

MAGFit instructions here:


Thank you all for the help! There were several issues on the drones. The main one was the Compass calibration. Magfit did the trick. There were still some smaller issues there but because of regulations we are not moving to slightly smaller drones. You made this possible.