Does the final value of MOT_THST_HOVER mean anything?

According to the section “Automatic Learning of Hover Throttle”, the MOT_THST_HOVER value will slowly move towards the average motor output whenever the vehicle is holding a steady hover in non-manual flight modes (i.e. all modes except Stabilise and Acro).

  1. Does the final value of MOT_THST_HOVER mean anything? I think that the default value is 0.35 and it can range from 0.2 to 0.8. So, if it is less than 0.35, does that mean that the copter is overpowered and if it is greater than 0.35, the copter is underpowered?

  2. There seems to be a “catch 22” with this process in that it is best to have MOT_THST_HOVER close to the desired value (so that hover is at about 50% of the throttle) before a non-manual flight mode (like altitude hold) is engaged, but the automatic learning only works when a non-manual flight mode is engaged. That implies that MOT_THST_HOVER needs to be manually set first before the automatic learning can be used to fine tune MOT_THST HOVER?

  1. Just means that the developers think 35% thrust is the average craft built today. It will be within 15% of nearly every copter built.

  2. Yes of course it must be set manually before the flight computer can see what it really is, but as stated in #1, the default will be close. It’s not really a catch 22 because the value is insignificant in my experience (as long as you’re not flying an overweight copter.) As soon as the computer feels the copter dropping or climbing at the beginning of position hold, it corrects very quickly. Just don’t be 3 feet above the ground the first time you switch to an alt hold mode. Thereafter, I recommend locking that value it learned and don’t let it learn anymore because when you’re doing bench testing without the props or with no power to the motors such as testing RTL engagement, the next time you go fly, learned hover will be insanely high and the copter may want to launch off the ground at the slightest throttle. Also, leaving it always learning changes the hover% throughout the flight as the battery depletes. So with a fresh battery, it can be 25%, but at 20% battery remaining, it can be 35-40%. This leads to unpredictable takeoffs every flight depending on how far you depleted the batteries the previous flight. Locking it gives you the same takeoff behavior. Lock it at the value learned when you have 50% battery remaining.

edit: Just FYI, in my experience, taking off in stabilize still uses hover% instead of strictly mot pwm minimum, until you increase throttle to around hover%. So I somewhat call BS on that in the manual. The computer appears to use a blend of hover% and mot pwm minimum at the start of throttle input, and then reduces the weight of hover% as you increase throttle towards hover%. You can further see that the computer is controlling the throttle even in stabilize at takeoff when you give minimum throttle, because motor RPMs slowly increase despite stabilize mode if you are not giving more throttle yourself. I’m not sure if this is intentional or not.

1 Like

My experience is that hover learning works in Stabilize. You can look at a plot and see that ThH (Throttle Hover) and ThO(Throttle Out) eventually converge.

The purpose is to have the aircraft hover AT MID STICK, which may or not be 50% throttle. Doing this gives the pilot an anchor point as a feedback to muscle memory.

My slightly overpowered Quad hovers at .26 and change.

Thanks Iketh and Oldgazer for your comments and suggestions.

I did a test today where I flew in Stabilise mode, then in Altitude Hold, back to Stabilise and finally in Loiter. The resulting log file plot of CTUN.ThH and CTUN.ThO shows ThH converging up towards ThO only during Altitude Hold and Loiter modes. During Stabilise mode, ThH does not change value at all.

ThH finally converged with ThO at about 0.259 during the Loiter phase, so I will set MOT_THST_HOVER to 0.259 and then disable learning by setting MOT_HOVER_LEARN to 0.

It is still not clear to me if this value of MOT_THST_HOVER of 0.259 tells me anything about my copter - is it slightly overpowered because the final value is less than the default value and close to the lower limit? Or, is the final value meaningless?

yes .25 is underweight, so you can add a good sized payload relative to the copter’s weight

when flying, computer is not controlling throttle at all in stabilize, just the takeoff before you have increased throttle close to hover% is what i was trying to say

Regarding hover learning:
Arducopter only learns hover in altitude-controlled modes, this is simply because otherwise it doesn’t really know what ‘hovering’ is. Also, it is generally best to leave learning on, as this value will move around a bit based on battery voltage, wind conditions, etc., which will vary between flights and even during the same flight. This might be assuaged somewhat by correctly setting your MOT_BAT_VOLT_MIN and _MAX parameters, but there is rarely a downside to leaving hover learning on.

Regarding the final value of MOT_THST_HOVER:
The only thing it explicitly means is that you’re only using 25% percent of maximum throttle to hover. Whether this is good or bad depends on your drone and application, although here are a couple rules of thumb:

  • 20% and below needs to be careful, as stability may be compromised by slow deceleration response and too high of a minimum thrust on the bottom end. Reducing MOT_SPIN_MIN can help with this.
  • Likewise, 65% or so and above may run out of thrust on the top end for aggressive maneuvers and strong wind.

25% is fine honestly, but for completeness, my recommendation to you is to make sure your MOT_PWM_MIN and _MAX match your ESC settings, and maybe consider lowering MOT_SPIN_ARM to as low as it will go while still allowing your motors to start up reliably, so you can then lower MOT_SPIN_MIN to be slightly higher than that. That way, you can be sure your copter has enough room on the bottom end to maneuver.

1 Like