Acro Mode - motor authority lost when RC Throttle drops to "zero" even with air mode enabled

I’m not sure if this is working as intended or if I got some setting wrong.

My acro configuration:
Arm by switch
Acro_options = 1 (enable air mode)
Tested with ATC_THR_MIX_MAN = 2

Repro steps:

Removed props from quad
Arm and switch to acro mode
Observe once Throttle >= ~1018 (in the radio tab; hard to get the exactly #), motors start spinning up heavily (sometimes enters a positive feedback loop since the quad isn’t actually moving)
Observe Roll/Pitch inputs will cause quad to respond with appropriate motor output.
If I drop Throttle to <1018 , motor starts winding down heavily. If set throttle >1018, motors wind back up heavily.

With higher MIX_MAN, response to throttle input seems to slow down (ie. you can hear the motors wind up and down slowly) which I assume gives the quad more authority in the first fractions of a second when throttle is zero. But that authority continues dropping as throttle is kept at zero. I observe that when I raise the throttle, add full deflection to roll (and hold it), then drop throttle, you can hear the strength of the 2 left or right motors attenuate over the course of a second.

Acro is still a stabilised mode, I don’t think you can tell anything if you are not actually flying.

Testing with props off will cause some quirky behavior, but the behavior all should makes sense in the context of the control loop.

Like in theory if I set acro to just rate stabilization, then the quad will only care about hitting a specific rotational rate (instead of also hitting a target angle). In that case, I should expect sharp motor response with roll/pitch irrespective if I’m in the air or not.

So I just tried this: I set acro_options to rate mode and tested again. I get sharp response from the motor as long as the throttle is above that 1018 threshold. But once I drop the stick below 1018, the motors slow down. I can hold the stick to full deflection, drop throttle, and hear the motors wind down.

As an aside, with the attitude stabilization enabled, then the PID controller and strength of motor response will respond to error between the desired and actual attitude. Since the quad is sitting still, the actual attitude is always the same. The desired attitude changes with stick. So with stick deflection, the error can be modulated with the stick. And you can hear that with the motor response going stronger/weaker when stick input is rotating the desired attitude.

Logs are required to answer questions like this.

Here’s a link to the log: https://drive.google.com/file/d/1m6kXucpLgdwc5-0IY2nPVok1tWMAkLU7/view?usp=sharing

C1 is throttle. C2 is roll.

What I did here is set acro option to 0x3 (air mode and rate stabilization only).

Enter acro mode.
Deflect roll to the right fully, then slowly raise throttle. Once it hits above ~1018 the motors ramp up intensely. Once below 1018, the motors wind down slowly.

Then I play with moving the roll stick back and forth with a little bit of throttle above and below that cut-off.

It looks like the aircraft is spooling down when the throttle is kept low.

You can see that the roll output is fully saturated but it looks like the throttle mix is reducing from ATC_THR_MIX_MAN of 2 to ATC_THR_MIX_MIN of 0.1 where MOT_THST_HOVER is 0.1513464.

I don’t have time to check the expected behaviour right now but at least this is a start.

Yes, exactly :slight_smile:

I had hoped that with air mode enabled the quad would be kept spooled up with the throttle at zero. At least, that’s what I’ve become accustomed to from BF.

Regarding the magic 1018 line: that would be 987 + my deadzone of 30.

Also separately from this, I forgot to mention that my motors always spin at spin_min immediately after I arm. I thought after arming, it would spin at spin_arm until I lift off?

@andyp1per, @Leonardthall,

Just for release tracking purposes, does this issue exist in 4.0 as well or is it new to 4.1?

It will be in 4.0 as well, but I must admit I’m not sure I see the same behaviour - pretty sure I would have noticed if the motors were spooling down at zero throttle. I would have to do a test.

1 Like

https://github.com/ArduPilot/ardupilot/pull/18590 should fix

1 Like

Unfortunately I’m not sure this has been fixed as I still see authority loss when I’m sitting at zero throttle for a few seconds. I checked my branch from Copter 4.1+ the new Expo formula had picked up the code change here.

This is me doing a slow rotating dive with throttle held low. That huge wobble at 00:05 is the quad failing to hold setpoint; there was no change in my stick input. As soon as I felt it, I give it some throttle and the quad feels locked in again.

Can you please provide a log?

Here’s the log: https://drive.google.com/file/d/1_ZHK_lZJ_gugh_pTMBChANZlBjWc-uxl/view?usp=sharing. Timestamp is around 15:53:11

You may find my filters are set pretty high so I’ll pre-emptively comment… I actually have no issues with the higher filters with my manual PID tuning following Mark Spatz and Dave Rossi’s guidelines and I can fly fairly aggressively with this tune.

You need to provide access to the file

So this your own branch. Can you also provide a link to it?

Here’s the git link: GitHub - chronowarper/ardupilot at Copter-4.1_RC2_AcroExpo

Unfortunately dumping my quads firmware for a binary diff comes up within a completely different size that’s not suitable for diff.

I had planned to update to RC3 or RC4 but I get compile errors when I try to build a branch from top of tree, otherwise I would have tried a new build.

Sorry missed that. It’s available for anyone with link now.

Looks like your branch has the fix but your log definitely shows the motors spooling down, so not sure what is going on.

Ok, my conclusion is that this is a bad tune. If you look at the commanded R/P/Y they are not far off actuals:

but you can see there is a distinct oscillation on roll, which if you look at ROut gets really bad during this maneuver:

So I think too much noise is coming through roll and this is the cause of the problem you are seeing.
We’ll see if @Leonardthall agrees - I have been wrong many times before :slight_smile:

I’ve flown really bad tunes and so think I know how to distinguish serious issues from tuning from something else. One thing I was going to try was just add an offset on the throttle from the radio when I have acro switched on.

Also if the motors are throttling down then it would also be expected that rcout would get stronger as motors aren’t responding.

I can’t deny there seems to be some oscillation in the logs… I’m a bit surprised that I don’t feel/hear the symptoms. Wondering if there’s some mechanical filtering going or maybe the magnitude scale isn’t all that bad. Do you wanna see an actual freestyle video with this tune?