Help tuning 14" quad

We’ve experiencing troubles tuning our quad copter, and I’m seeking help reviewing logs and maybe some new ideas.
It’s important to mention that we had a different issue (that might be related, but I couldn’t get answers) - once switching to Dshot instead of PWM the drone’s behavior changed.

The frame is a “rotated H” , meaning both left motors are on the same arm.
So the frame type is a Quad X.

We use 14" props, 6s lion, U3 motors and about 4kg TOW.
ESCs are APD 40F3, with telemetry via UART connected and enabled.

Ardupilot runs on The Cube Orange, offset from center of gravity.
Initially we had issues with Z axis vibrations, which were reduced to a not-so-perfect level, but way better that earlier.

We were not able to set the Harmonic Notch filter in a way that shows differences.

One of the bigger issues we see - we are not able to raise the Gyro and INS filter above very low values, of around 5Hz. Going higher than that raises noticeable oscillations while flying.
Currently, the tuning is quite off - for example:

I’ve read through a lot of tuning posts and guides over here and Ardupilot’s documentation, but was not able to solve the issue.
I’m asking for the community’s help in tuning the quad.
Mostly concerning: all filters (Harmonic, Gyro, INS, and inner PID filters), and PID values.

Attached is the last flight’s log:

Every help is appreciated!

5hz is very very very low !! and your PID’s are also too low !!
Reset all Params and start from scratch
Do Initial Params calculations and setup FFT, Harmonic Notch and IMU Logging
Perform one Autotune

I understand, we might try resetting these values.
Though I should mention that also tried some values @xfacta suggested on the other post (linked in the original post) with no success
The frame is quite flexible and we’re working on stiffening it, but it is a relatively long, process manufacturing wise.

Is there a logging option that should be enabled that we haven’t enabled?
My concern is that there is some other parameter (other than PID and filters) that doesn’t allow us to go up with the values you mentioned.
The quad isn’t stable enough to perform Autotune yet.

How did you practically measure the effectiveness of filter? Use post processing log data from imu to see if your fft is working or not. And documentation is your best friend

for logging use these two parameters : INS_LOG_BAT_MASK and INS_LOG_BAT_OPT

No, there’s no parameter that makes your 14" so unstable as to limiting you to such unrealistically low values on filters and PIDs. Attach a picture of your copter, cause maybe it’s not really the flex that’s causing problems but inadequate tuning

Appreciate your answer.
I can’t quantify the effectiveness, but we tried tuning the quad again, without any visible difference in flight. We also looked in the logs (desired vs. measured angles and rates, vibrations) and the FFT analyzing tool to look for differences and improvements.

Can you refer me \ let me know what to look for in ‘post processing’ log data from IMU?
First which logging options should be enabled exactly as I’ve only seen post filtering.
Second is how and what should I learn from looking at that data.
I promise that I’m looking at the documentation, quite often. But it can be overwhelming and complex with all the cross references, especially for someone new to ArduPilot.
INS_LOG_BAT_MASK = 7 - all 3 IMU are logged
INS_LOG_BAT_OPT = 2 - only post-filtering log is enabled. Do you mean we should log both pre- and post-filtering? What about the logging at sensor rate? (BAT_OPT bit 1).

One thing I noticed is that during hover, the throttle value (I don’t know which measurement unit it is) was around 0.15, while MOT_THST_HOVER is set to 0.2.
Plus, MOT_SPIN_MIN = 17, MOT_SPIN_ARM = 14.
I read this post which had low frequency vibrations, and it made me check our values.
My point is that if these three parameters are on the same scale - it doesn’t make sense to leave them as is, for the reasons explained in the linked post.

P.S I also noticed that MOT_HOVER_LEARN is set to 2… should it make a difference.

Measuring Vibration with IMU Batch Sampler — Copter documentation (
This should help with pre/post-processing imu data

In pre-filter data, you should see a clear peak in the FFT graph at some particular freq which will correlate to your motor RPM. And after setting up harmonic notch properly this peak will reduce by a lot in amplitude in post processing data. For now just stick with FFT based Harmonic Notch Filter cause its easier to setup and you can spare some computational power since you have a Flight controller with H7 MCU

Yeah been there. I’ll help you as much as I can

Usually when you fly in any altitude levelling modes, the param MOT_HOVER_LEARN will change your MOT_THST_HOVER to appropriate value. If you hover for 3-4 mins the value will be automatically updated.

You are probably looking at scaled throttle value. This is not the exact throttle percentage output to motors.

For your easy of setting up these are the settings that I did on a recent 18KG TOW build. I usually document all my parameter changes, so here it is.

*CAUTION: Read full documentation properly before proceeding with the following changes

  1. Select a COM Port and Flash Firmware for a suitable vehicle type
  2. Reboot
  3. Connect to Flight Controller using any com port
  4. Select frame class and type
  5. Reboot
  6. Accel calibration
  7. Initial parameter calculation
  8. Set GPS and compass parameters (Here3)
    a. GPS_TYPE 9
    b. NTF_LED_TYPES 231 (or include DroneCAN in checkboxes)
    c. CAN_D1_PROTOCOL 1
    d. CAN_D2_PROTOCOL 1
    e. CAN_P1_DRIVER 1
    f. CAN_P2_DRIVER 1
  9. Radio Calibration
  10. Move UAVCAN compass to first priority and disable compass 2 and 3 (internal compass being close to power wires, there a lot of magnetic interference hence disabling that compass entirely)
  11. Disable Safety Switch (If Hardware safety switch is not present on the drone)
  12. ESC Calibration
  13. Set Motor Arm Spin and Min Spin in ESC Calibration Menu
  14. Set Flight Modes
  15. Configure Battery Monitor (Mauch Current Sensor)
    a. Set Monitor as “Analog Voltage and Current
    b. Set Sensor as “Other”
    c. Set HW Ver as “Cube Orange”
    d. Set Voltage Divider Value from Current Sensor Spec Sheet
    e. Set Ampere per Volt from Current Sensor Spec Sheet
  16. Set Battery Failsafe Options
    a. BATT_ARM_VOLT 45
    b. BATT_LOW_VOLT 43.5
    c. BATT_CRT_VOLT 42
    d. BATT_LOW_FS_ACT 2
    e. BATT_CRT_FS_ACT 1
  17. Setup IMU Logging
    a. INS_LOG_BAT_MASK 1 (or Select IMU 1 )
    b. INS_LOG_BAT_OPT 2 (Or select Post-Filter Data)
  18. Increasing Loop Rate
  19. Setup FFT
    a. FFT_ENABLE 1
    b. Reboot
    c. FFT_MINHZ 40
    d. FFT_MAXHZ 400
    e. FFT_WINDOW_SIZE 256
  20. Setup Harmonic Notch Filter
    b. Reboot
    c. INS_HNTCH_REF 1
    e. INS_HNTCH_OPTS Enable Dynamic Harmonic and Update @ Loop rate
  21. Do a Continuity test on the main Connectors and Connect batteries
  22. Connect to Cube using Telemetry
  23. Perform Motor sequence tests and Direction
  24. Test changing modes with herelink

*CAUTION: Read full documentation properly before proceeding with the following changes

I would recommend you to go through all these step and give a try on default PIDs and see if you still have bad control or poor stability

Just save you current params so that in future you can go back to your current settings

And post an image of your drone so that it will be easier to judge the excessive flex you have been mentioning


That’s amazing. Thanks!
I’ll have to look up each parameter you mentioned above to know what I am changing. Always good to know what are the (expected) effects of changes.