Vectored yaw tiltrotors (also “tilt-for-yaw”) are particularly subject to yaw oscillation because the yaw control derives from the tilting of the motors, not from the propellor speed itself. The counter to this is using the feed-forward (FF) term in the yaw PID controller, which should be set prior to the P and D terms.

ArduPilot docs

This is so common that ArduPlane has its own page dedicated to it: https://ardupilot.org/plane/docs/tilt-vectored-yaw-tuning.html

Check tilt servo range

Tilt-for-yaw vehicles often need to tilt their props well outside the normal 0-90deg range. See Tilt servo ranges and ensure the AV is able to do this before any flight testing with vectored yaw enabled!

Flight Test

Ensure notch filters are configured and working first!

Perform a brief hover flight, with short sharp yaw movements in both directions. If possible, rotate the vehicle a full 360deg around in both directions.

Log analysis

Download the log from the AV, and using a log analyzer which supports expression graphing, graph:

  • PIQY.FF + PIQY.P + PIQY.D
  • X * PIQY.Act, where X is ~0.2 at first

Adjust the X value until both lines converge. Then, set Q_A_RAT_YAW_FF and Q_A_RAT_YAW_I both to the X value.

MAVExplorer shortcut

MAVExplorer has a shortcut for this graph. Load the log file as usual, then navigate to Graphs ⇒ QuadPlane ⇒ PID Tuning ⇒ Yaw ⇒ FF Calculation. You can’t adjust the X parameter with this preset though, so definitely keep a raw expression graph utility around.

Flight test, part 2

From here, resume flight testing and tuning of the Q_A_RAT_YAW_D term first, then the associated _P term until the vehicle is stable.

ardupilot