Hey,
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.
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.
Currently:
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.
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
Select a COM Port and Flash Firmware for a suitable vehicle type
Reboot
Connect to Flight Controller using any com port
Select frame class and type
Reboot
Accel calibration
Initial parameter calculation
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
Radio Calibration
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)
Disable Safety Switch (If Hardware safety switch is not present on the drone)
a. BRD_SAFETYENABLE 0
ESC Calibration
Set Motor Arm Spin and Min Spin in ESC Calibration Menu
Set Flight Modes
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
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
Setup IMU Logging
a. INS_LOG_BAT_MASK 1 (or Select IMU 1 )
b. INS_LOG_BAT_OPT 2 (Or select Post-Filter Data)
Increasing Loop Rate
SCHED_LOOP_RATE 800
Setup FFT
a. FFT_ENABLE 1
b. Reboot
c. FFT_MINHZ 40
d. FFT_MAXHZ 400
e. FFT_WINDOW_SIZE 256
Setup Harmonic Notch Filter
a. INS_HNTCH_ENABLE 1
b. Reboot
c. INS_HNTCH_REF 1
d. INS_HNTCH_MODE 4
e. INS_HNTCH_OPTS Enable Dynamic Harmonic and Update @ Loop rate
Do a Continuity test on the main Connectors and Connect batteries
Connect to Cube using Telemetry
Perform Motor sequence tests and Direction
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.