Observed delay in rate control

Hi, I have been building a custom hexacopter, and I am seeing extremely unstable flight. After looking at some flight logs, I noticed that there is a delay between the rates, and the rate setpoints.

Here’s the flight log: https://review.px4.io/plot_app?log=8ae7ea5c-cb7e-470d-bdcf-e5216cc70d6b

If you zoom in, you can see that for pitch rate, the measured rate is around 200 ms behind the setpoint (with a delay of ~40 ms between manual input to the changes in actuator controls, and then a delay of ~40 ms between actuator controls and outputs, but that’s just inherent CPU delay right?). The PID analyzer confirms this, indicating that the step response is around 150-200 ms to reach peak. During flight, this large ms delay seems to cause oscillations of frequency of around 4-5 Hz, because the drone is always trying to ‘catch up’ to it’s setpoint. From other people’s logs, it appears that for them, the total delay is less than 80 ms, which seems like it would be an acceptable amount. I’ve been trying to diagnose the issue for a while now. The instability seemingly happens no matter how I tune the PID controller (trust that I have gone through the steps to attempt to tune it properly).

Has anyone seen similar behavior or possibly know what my issue could be?

More info about my system:

  • Using Hex Cube
  • Custom firmware, but largely based around v1.9
  • 4s Battery
  • KDE3510XF-715 motors, with 12.5" triple props
  • Drone is quite large, weighs around 18 lbs
  • Drone feels quite stiff, so I don’t think stiffness is the issue (though it may be possible)
  • ESCs are KDEXF-UAS35’s

Another note about the test environment for this flight test and why it may look odd: I removed the ‘roll’ capability of the copter by putting a clamp setup with bearings around arms 1 and 2, to mimic how some people do PID tuning of smaller copters on a string. The log may not look so bad, there’s just a little delay and some overshoot on the pitch, but for real flights, the drone continues to oscillate wildly and I believe that it is due to this delay.

Could the issue simply be just that I need to go a level up on the motors to get more thrust? It seems like the delay is too large for this to explain it. Also, the drone literally ‘feels’ like there’s a lag. I give it an input, and there’s a noticeable gap before the drone even begins to respond.

Any help is greatly greatly appreciated, I’ve been trying to solve this issue for a long time and taken a number of steps to troubleshoot (I can list in the comments if need be) and can’t figure it out.

For anyone who is experiencing something similar, the issue seems to simply be that I was using too weak motors/props. The drone was very heavy and large, and has a large moment of inertia, so the relatively weak motors could not cause the drone to react quick enough.