Quad becomes aggressive/inconsistent in Loiter and one motor RPM changes significantly after changing heading

Hello ArduPilot community,

I am troubleshooting an issue with a custom-built Quad X and would appreciate some guidance on whether this behavior is expected or if there may be a tuning, vibration, motor/ESC, or yaw-control issue.

Hardware configuration
• Flight Controller: Cube Orange Plus
• Frame: Quad X
• Motors: T-Motor MN7005 KV115
• ESCs: T-Motor Flame 60A V2.0
• Propellers: 24 inch
• Battery: 2 × GenX Pro Solid State 6S 21 Ah batteries connected in series
• Battery voltage: 50.4 V fully charged (12S)
• Flight mode: Loiter
Note: I have followed AMC and i have disabled Pre-arm checks for some reason and i will be enabling it.

Issue 1 – Inconsistent/aggressive Loiter behavior
In Loiter mode, the drone sometimes feels quite aggressive and sometimes relatively calm when I give the same/similar stick inputs.
The response does not feel consistent from one flight to another.
I would like to understand whether this could be related to Loiter parameters, attitude-rate tuning, yaw tuning, vibration, or another parameter.

Issue 2 – One motor output changes significantly after changing heading direction or yaw

This is the main issue I am trying to understand.
While hovering at approximately the same position in Loiter, when I command a heading/yaw change, I observe that one motor output changes noticeably relative to the other three motors.
For example, during a yaw command:
• One motor may increase its RPM significantly.
• Another motor may decrease.
• The aircraft continues attempting to maintain its position/attitude.
• The motor showing the higher/lower output is not always the same motor.

Importantly, this behavior changes depending on the heading/yaw direction. It is not consistently associated with one particular motor or one particular output channel.
So I am wondering whether this is simply the expected motor-mixing behavior during yaw, or whether the magnitude of the difference indicates a problem with yaw control/tuning or some other issue.
I understand that the four motors must have different outputs during a yaw command because of the torque generated by the CW/CCW motor pairs. However, I am concerned about the relatively large change in one motor compared with the others.

Vibration observations
During stationary hover:
• Vibe X/Y/Z are generally below 10 m/s².

During movement/forward flight:
• Z-axis vibration increases and can exceed 20 m/s².
• X and Y vibrations remain comparatively lower.

I am therefore also concerned that the increase in Z vibration during movement may be contributing to the inconsistent Loiter behavior.
Could someone please advise what I should investigate in the log to determine the root cause?
I am attaching bin log file below

First, pitch and roll differences in stable hover segments correlate quite well with the copter feeling the wind. Below is the plot of thrust approximations in each of the axes, versus the reported yaw direction, which I believe is magnetic.

Assuming that there is more lever at the top of the copter (e.g. antennae) than at the bottom (landing legs? and where is the battery?), and trusting the compass, I would say that we had a consistent SSE wind that was causing a near-perfect pitch forward at 03:15 and 06:10 with yaw 213, a near-perfect pitch backward at 04:13 with yaw 32, and a near perfect roll right at 05:33 with yaw 125.

(If there is more surface below the CoG, the most likely wind is the opposite, NNW)

This, of course, causes difference in which motor maxes out. On its own, this is somewhat normal, unless the degree to which the machine gets imbalanced with oncoming air flow is too much for the intended flight envelopes. In this latter case you’ll have to improve aerodynamics of your machine, you can’t trick the universe.


The question for yaw is a bit more difficult. Based on the plot above, we can see that the machine always wants more counter-clockwise momentum in yaw, but depending on the direction, it is more or less pronounced. I would decompose this into an average imbalance and a wind-sensing component (likely caused by the same physical thing that made the machine sensitive to wind in roll and pitch).

It seems (assuming that the center of drag is above center of gravity) that the most wind-dependent momentum is felt when the copter is facing east or west, which, by checking directions, locates that component to the left and a bit to the aft on the copter in the body axis. I guess this is quite a standard location for putting a GPS antenna. But this is all, of course, quite a blind guess.

(I remember seeing a lot of yaw imbalance when flying at some speed on a 5" quad, which was caused by a quite large video feed antenna mounted 3cm to the left of CoG)

But first and foremost, check your motor alignment. While the constant offset might be not exactly criminal, fixing it would improve your life.


And now on the aggressive/calm feeling while yawing. Unlike the two points above, this comes from the moments of yaw change, and I think we have two things to note here:

  1. The very sharp output changes at the moments of starting and finishing yaw changes indicate that a lot of RPM change is required to produce the torque you want. This indicates that your yaw requests are way more aggressive than the machine is comfortable with, and either these should be tamed down (e.g. PILOT_Y_RATE is currently 150 with ATC_ACCEL_Y_MAX just 11k, which is roughly 1.4x bigger than the recommendations), or the machine should be rebuilt to increase the yaw authority (e.g. motor axis alignment).
  2. Vibrations are less harmless than you think. Here is the plot of motor outputs and VibeZ from IMU1 and IMU3:

    The first yaw change reached 60 in vibes on the third accel. I guess it’s exactly the third which is not internally dampened in Cube Orange. Honestly, I would not find even 25 reported by the first IMU comfortable.
    These vibrations, that are apparently bound to the excessive requested yaw rate, are in my opinion the main contributing component of your “spontaneously aggressive” feeling. I have no exact idea about the precise cause of these, but:
  • too much yaw requested likely means some motors hitting the minimum and upsetting the whole machine
  • and there may also be some mechanical problems with the machine too.

A lot of stuff, I know, but maybe this is still helpful.

@MaxBuzz
Thank you for the detailed analysis. This gives me a much better direction to investigate.

I would like to clarify a few points about the physical configuration:
• The GPS is mounted on a stand above the top plate.
• Both 6S 21 Ah batteries are also mounted on the top plate.
• There is approximately 700 g of payload mounted below the frame( mounted to bottom plate).
• The CG is therefore affected by the relatively heavy batteries on top and the payload below.

Regarding the motor alignment, I have already checked and levelled all four motors. The motor mounts are properly tightened, and I do not observe any arm or motor-mount flex during inspection. I will nevertheless recheck the alignment mechanically, especially considering the 24-inch propellers.

There is, however, some ground resonance/vibration present.

One important point is that this behaviour was not present previously. The aircraft was flying without this aggressive/inconsistent behaviour before, and the current behaviour appeared later. Therefore, I am also wondering whether there could be a mechanical/propulsion issue that has developed over time rather than this being purely a tuning issue.
I have been seeing this issue after i changed GPS stand from old to new (but the same model) . i will attach before log file as well.
The observation regarding the yaw imbalance is particularly interesting. Since the motor showing the higher/lower output changes depending on the aircraft heading, I agree that this may be related to an aerodynamic effect rather than one particular motor/ESC.

Any further tuning suggestions would be helpful to proceed further and i will surely try to improve my bird aerodynamics.
Thanks again for detailed analysis :grinning_face:

Please find the attached log, which was before this issue occurred

Sorry for taking too long, I’ve had this tab opened for quite a while, but did not have enough time to look at this.

At least the vibes are pretty much as bad as in the first log.

By a closer look on the same part of the flight and RC commands, it becomes clear that most of high-vibe events correlate to dropping pitch/roll sticks to the neutral position, which in Loiter means braking.

This is not just yaw, this is also pitch and roll involved. I tried to check PID contributions for signs of poor PID tuning, but what I saw rather signifies that the upper-level control occasionally demands sharp actions that are too difficult for the machine:

Here, you threw the pitch stick almost all the way up and then all the way to the center sharply enough that - after getting translated via the Loiter controller - peaked P and D to 0.2 in while the background level for both was about 40 times smaller.

To sum up, I think that nothing changed: it’s just that the Loiter loop “demands the impossible” from the machine if you command changes quickly enough. This is especially true for Yaw, but is also present in other axes. The formal definition of “impossible” is harder to come up with, because I see at least two possibilities:

  • the machine is genuinely sluggish, and you have to smooth out control inputs (via LOIT_* parameters I think, accelerations and jerks are probably just too high), or
  • some vibrations get excited on every strong input, which gets through low-level control and destabilizes the machine further, which makes vibrations go higher, which… you see where it gets.

Without knowing the machine more, I cannot really suggest the uniquely correct course of actions. Phenotypically, there is some command sharpness threshold beyond which the machine starts to behave much worse until the impulse gets somehow dampened. Exceeding this threshold may require certain conditions, like stick inputs few percent sharper, or wind coming from an inconvenient direction, which may explain apparent randomness of what you happened to observe.