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.