Throttle Oscillation - in Auto Mode

Hi. Just fitted a OmniBusF4 into a 40 size (electric) trainer to do some testing. Using Arduplane Latest (4.2.0) - I have not tried stable or beta. Completed autotune no problem.
In Auto (mission) mode, the throttle often hunts (oscillates) at quite high frequency - maybe 2-3Hz. The attached log, etc is from a flight where I ran the mission three times - at 45, 60 and 75% throttle. At 45% the oscillation was at the start of the mission, then became less. At the higher throttle settings, the oscillations are more apparent through the whole mission.

Thr_slewrate = 5 (!) Does not really seem to change the behaviour…
TECS_thr_damp = 1 (again, did not really change things)
TECS_time_const = 6

Any thoughts welcome… Thank you!

Log, etc is here:!AlxpFYP8iHOC0HyWobfQPh8Tb3Iv?e=wmKuiZ

I am not sure if related, but I have just seen a similar post on a Facebook Ardupilot group

Thanks for adding me, I’m very new to Ardupilot and VERY impressed with it already. Although the setup is a steep learning curve the functionality in autonomous mode is very much improved over INAV.

I do have a little issue though I’m hoping you may be able to help with. On my maiden flight I noticed the cruise speed was very slow for my plane so I have increased the Min ground speed and Target Airspeed and now I have a fluctuating throttle in any of the closed loop modes.

I realise now that I did not calibrate the Airspeed sensor prior to taking off and the location I flew from was 200m higher than previously. I was also taking off through dense fog so I may have got some water droplets in the pitot.

Make sure you calibrate your airspeed probe by flying around in auto-cal mode for a while. (Calibrates the position) Don’t leave airspeed calibration on once you’ve got it set. and it’s a good idea to loosely cover the pitot tube when you power up so it can do the start up calibration for the air density.

Hi Allister. Thank you, and have done all prior to this test. I forget exactly what arspd_ratio ended up as - something like 2.2 or so…

Try setting THROTTLE_NUDGE = 0. Won’t exactly solve the problem but it may stop the oscillations.

I have tried THROTTLE_NUDGE = 0 - maybe a little less hunting, but still hunting nevertheless.

Changing Thr_slewrate, TECS_thr_damp, and TECS_time_const seems to make little or no difference.

A very low Thr_slewrate should make any hunting very soft, but that does not appear to happen… Any other thoughts appreciated!

For trouble shooting, try turning off the airspeed sensor. Then see what the throttle does. I wonder if the airspeed data has too much noise causing the throttle to react like that.

Thank you - yep, that is on my list to try - unfortunately the weather has not been so great - but hopefully in the next few days.

But even if it is noise with the AS data (and there certainly is - I have added a choke to the I2C lines to try and help), I would think changing THR_slewrate, TECS_thr_damp, and TECS_time_const would have some effect.

I will post after trying with the sensory off…

Not sure if this is related, but I am having a similar issue but the plane doesn’t have airspeed sensor. Using 4.1 Beta 6 on Auto/FBWB mode the throttle fluctuates and stays much higher than TRIM_THROTTLE

What is surprising is that it seems that the airspeed target is higher because NTUN.AspdE is mostly negative.

This is the log:

EDIT: After further research, I came to the conclusion that NTUN.AspdE = NTUN.TAspd - CTUN.As anyway it doesn’t explain why the throttle targets such a high airspeed.

if you are not using an airspeed sensor, and have not intentionally set it up to use synthetic airspeed with TECS_SYNAIRSPEED(usually not a good idea, since it can be wildly inaccurate on occasion), there is NO airspeed target being used…throttle is based on TRIM_THROTTLE and modulated by pitch demands for altitude holding

will try to examine log tomorrow

Today I did 4 flights for testing. Each flight has basically 3 circles in FBWB and 3 in RTL. One at low throttle, one half, and one at full.
Flight 1: arspd_use = 0, throttle_nudge = 0
Flight 2: arspd_use = 0, throttle_nudge = 1
Flight 3: arspd_use = 1, throttle_nudge = 0
Flight 4: arspd_use = 1, throttle_nudge = 1

All flights had some degree of throttle hunting - improved a bit by not using airspeed. Interestingly, I felt ‘throttle nudge’ continued to be active even when throttle_nudge = 0. Certainly it changed the throttle setting.
Other relevant parameters are:
thr_slewrate = 30
tecs_thr_damp = 0.7
tecs_time_constant = 7

All 4 logs here:

  • Is the degree of AS jitter ‘normal’? Is there any parameter I can change to average the AS readings a bit?
  • Thr_slewrate appears to not change the hunting at all. I would think limiting the throttle rate of change must eliminate fast throttle changes?

Thanks for any thoughts

Lanza, looked at logs…your TECS alt control is very good…your TRIM_THROTTLE is too low…should be 28%, but that is really not critical…that is what TECS needs to maintain alt, but its raising the nose 1.5deg to do it (hence increasing avg throttle to 28%)…if you want that cruise speed (22m/s) in FBWA also, then you would need to increase set TRIM_PITCH_CD to 1500…then level cruise would be 22m/s at 28% throttle…
otherwise, the spikes in throttle are not really hurting anything…
you could try lowering TECS_THR_DAMP some to reduce the reaction of throttle to height variations…
sorry forgot that param has no effect with no airspeed sensor…you could try increasing TECS_TCONST to make reactions slower, but it might degrade alt accuracy

Henry, thank you very much. I read the documentation and it is clear everywhere that without airspeed sensor in AUTO/RTL/FBWB modes Throttle will attempt to maintain altitude, but based on the baro and gps altitude the fluctuations were really small.
If you don’t mind me to ask, I am curious what makes you guess that I want to maintain 22 m/s, The reason why TRIM_THROTTLE is set to 20% is because I noticed that in FBWA I can keep it steady and fly around comfortably with aggressive turns with little altitude loss or risk of stall. So I’d guess that my desired target speed should be between 12 and 15 m/s. Do you think that setting the TRIM_PITCH_CD to 1500 would allow the plane to fly closer to the targeted 20% throttle?
Again thank you very much for your help.

first, in non airspeed systems, pitch is primarily used to maintain alt, and throttle adjusted with pitch …speed is whatever you get…your current calibrated “level” attitude with 20% throttle cant maintain altitude…so TECS raises pitch and throttle to cruise at constant alt…1.5deg up and 28% throttle…result is 22m/s speed

first temporarily set STAB_PITCH_DOWN to 0 to prevent it interfering with your hands off pitch.

to cruise slower, raise TRIM_PITCH_CD a few degrees and fly in FBWA…adjust throttle for constant alt…note speed…raise or lower TRIM_PITCH_CD until you get the cruise speed you want and note the throttle you need at that speed to maintain altitude, that will be your new TRIM_THROTTLE…reset STAB_PITCH_DOWN…now both cruise and FBWA will fly at the same cruise speed you desire, although in FBWA it probably wont be at mid stick throttle since your plane seems pretty high powered

note: with “latest” software I added a flight option to allow the center throttle in non-autothrottle modes (except manual) to be adjusted to be TRIM_THROTTLE and linear interpolated from there in either direction, so even if TRIM_THROTTLE is 20%, center stick is 20% and switching from FBWA to CRUISE at mid stick has no speed changes…


Again thank you very much. Based on your feedback I decided to start over with a much more controlled plane level calibration using Mission Control and it made small changes but it made a big difference.
Attached is the new log in case you are curious. The bottom line is that Throttle usage was lower I think there is still room for improvement but probably marginal as this small plane is thrown around by the slightest air disturbance.

Hi Henry, how do I set this option for TRIM_THROTTLE to be at mid stick ?
Also, please help me understand what is the difference between AHRS_TRIM_Y and TRIM_PITCH_CD ?
Says about TRIM_PITCH_CD while
Says about AHRS_TRIM_Y

Jacek the option for TRIM_THROTTLE to be at mid stick is the FLIGHT_OPTIONS bit 10 which is only available in DEV 4.2.0 Although 4.1.0 Beta 8 has bit 1 I assume it only works when using airspeed sensor.

Regarding TRIM_PITCH_CD vs AHRS_TRIM_Y I have the same question.

Thank you for clarifying mid throttle options (BTW I am using 4.2 dev, and I have airspeed sensor installed). My trim throttle is 48% so no worries, but wanted to have that knowledge for future projects :).

in latest its flight_option bit 10 (value 1024)…

AHRS_TRIM impacts all uses of IMU and is limited to 10degs…you can get good cal on IMU if their orientation is off by more than 10degs…have to change ORIENT param

TRIM_PITCH_CD applies only to fixed wing modes (not VTOL) and can be larger than 10deg if needed…

Q_TRIM_PITCH applies to VTOL modes to trim level in those modes

edit : corrected typo
NOTE: to arm, you need to move the rc channel’s trim for throttle to be mid-stick…it only affects the pre-arm check… since the only way to know where mid-stick really is , is by setting the trim value to be it…this allows the curve to be set with TRIM_THROTTLE at that stick input value


no , it works in all manual throttle modes: ACRO,FBWA,STABILIZE,TRAINING

trim_throttle is used with and without an airspeed sensor…it sets the bias point for the control loops in throttle controlled modes

1 Like