Angular rate does not track well

Description

In Altitude mode, if you move the control stick from a neutral position to the side into a constant roll or pitch command and hold it there, the copter’s angle will initially increase, but quickly drop to almost level flight and increase again afterwards. The angular rate does not follow its setpoint well. Previously, an autotune with MC_AT_RISE_TIME = 0.3 seconds.

To Reproduce

Steps to reproduce the behavior:

  • Perform and apply autotune with MC_AT_RISE_TIME = 0.3 s
  • Hover in Altitude mode
  • Input a roll angle and keep input constant
  • Observe error

Expected behavior

The copter should increase its roll angle to the commanded one and keep this angle constant.

Log files and screenshots

Log file can be found here.

image
image
image

Drone

Hexacopter with a takeoff mass of over 10 kg, running on an Auterion Skynode.

We are using the “new” dynamic control allocation.

@Finwood Did you tune the controller?

If you are unsure how to tune a controller, you can have a look at Multicopter PID Tuning Guide (Manual/Advanced) | PX4 User Guide

Hi @Jaeyoung-Lim, thank you for your reply.

Yes, we did previously tune the controllers: first manually, then also using Autotune.

By default, Autotune optimizes towards a settling time of 140 ms, MC_AT_RISE_TIME’s default value. This seems too fast for our drone spanning 2 meters; while the flight performance is acceptable, the outputs are very noisy and the inner loop feels twitchy. We experimented with higher settling times, leading to the beaviour you see above.

Most surprising is the fact that the angular rate seems to track well (better) for higher rates of change, but fails to follow its setpoint in more static conditions.

Would you have any insight?