Position Hold Low Frequency Vibration on Pavo20 Copter, any idea?

In Position mode (the optical flow module is normal and has been tested on other aircraft), after basically tuning the filters and PID in Stabilize mode, the flight feels very smooth.

When switching to Position mode, it initially hovers reasonably well, but after a while, it starts drifting left and right, then forward and backward, eventually drifting quite severely, requiring manual control for landing. Please refer to the log for details.

Many low-frequency vibrations are observed. What might be causing this, and what hasn’t been tuned properly?

My FC installtion (There is no dynamic interference around the flight controller board, and it is not touching anything.):

By adjusting rate p and p, there seems to be some progress. However, I don’t understand the principles behind it. Is there any guide I can read?

Does the propeller plane being lower than the upper plane of the ring cause turbulent flow, thereby affecting vibration?

propellers changed (no big difference): https://review.px4.io/plot_app?log=06eb298a-02c4-43d8-b9b4-7b86197c1cd1

your cut off freq seems unnecessarily high. Bring it down to 40 and fly again.
Bringing down P values means you make the attitudes less aggressive when responding to desired set points but your wobble is low frequency, so the gains likely need to go up, not down. So over a time horizon you have less accumulated noise. You can add a bit of D as well and try again. Just be careful about the increment steps of all these values.

  1. Using PX4 default params
  2. MicroAir H743 AIO V1 board
  3. Pavo20 T300 carbon frame
  4. No filters I think.

It seems there is a 10~15 Hz vibration also. Maybe I should lower PI on roll axis and add some band-pass filter.

ok now the cutoff should increase to 60.

Also try to start tuning from here: PX4-Autopilot/ROMFS/px4fmu_common/init.d/airframes/4901_crazyflie21 at 96e6fd0a46624449baae03246b65d2efb80fbccd · bradfordrobbins/PX4-Autopilot · GitHub

Thanks @farhang I did lower PI 20% on roll, which has significant effect.

I’ll try follow your instructions above, and check what we’ll got.

  • Increase DGYRO/ACC cutoff to 60

In the FFT of angular velocity, there are some resonances in roll and pitch. What parameters should be tuned to address this?

  • Lower ACC cutoff to 30, and lower Yaw PI 20%

  • Increase ACC cutoff back to 60

  1. Enable dynamic notch: IMU_GYRO_DNF_EN = 2, IMU_GYRO_DNF_MIN = 30. Your motor line is at ~89 Hz and leaking into torque output.

  2. Fix MC_PITCHRATE_K = 0.4, set it back to 1.0. Your effective pitch gains are 40% of nominal, that’s why the poshold wobble (2-3 Hz) is worse in pitch maybe? . Tune P/I/D directly, don’t scale K.

  3. Then retune rate P, and position loop last if the wobble persists.

  1. Enable dynamic notch: IMU_GYRO_DNF_EN = 2, IMU_GYRO_DNF_MIN = 30
  2. Fix MC_PITCHRATE_K = 0.4, set it back to 1.0.
  3. Set MC_AIRMODE = 0 //it vibrates when on the ground, just disable

QA:
a) How did you find out " Your motor line is at ~89 Hz and leaking into torque output."
b) Should I continue lower PI to tune the resonances(wobble ) in roll and pitch in the FFT of angular velocity


lowering PI 20% in roll/pitch, not much changes.

a) FFT peaks are shown around that frequency.

b) No, the opposite. Lowering P/I makes it worse. The actual resonances can’t be tuned out with gains at all; they’re mechanical, notch filters handle those. Order is: notches added, then raise rate P until fast oscillation appears and then maybe reduce ~30% in 10% decrements.
Mostly: fast shaking = gains too high, slow wandering wobble = gains too low.

  1. Enable dynamic notch: IMU_GYRO_DNF_EN = 2, IMU_GYRO_DNF_MIN = 30
  2. Add NF 100Hz BW 40
  3. increase rate PI 20% relative to default value

OK, now I got below data, which is even worse :frowning:

EDIT:

Maybe I should start from here(as you have previously posted):

EDIT2: https://review.px4.io/plot_app?log=a11284c7-fba8-480c-9ad0-283ddf580a01

Yeah start from the scratch. Bring your notch on 60Hz. And go carefully with increments.

This video may also give you an idea:

Got no progress. I have checked Chris Rosser 's video about how to tune pid for px4, but there is no bdshort for PX4 1.15.4, there is no DSHOT_BIDIR_EDT or DSHOT_BIDIR_EN for me to choose.

What do you mean by no progress? You have any new logs? Did you reset the gains?

I have to use another Pavo 20 copter to tune.

a) K has been set back to 1.0.
b) There is no bdshot for 1.15.4, so I use FFT not RPM
c) use default PX4 values

This one has the same low-frequency issue below 20 Hz, but it also has an occasional twitch (a problem with angular deviation). See the log for details:

EDIT: yaw twitch is something to do with RC calibration.

EDIT2: The best result I have got(still vibration around 5Hz):


EDIT3:It seems a little better, but still got no clue:


EDIT4:There is some low oscillation here, any suggestion?

It seems bdshot is not working properly in v1.16.2. We should try the latest version ???

BTW, a loose screw is the root cause of the 5/10 Hz vibration peak.

Thanks for sharing the root cause. If possible, a before-and-after log with the loose screw fixed would be very useful for distinguishing mechanical vibration signatures from controller-gain issues. It may also help to keep the BDShot telemetry problem separate, since the linked issue uses a different PX4 version and hardware setup.