Reverse Thrust: inverted slope

I’m observing a very weird behavior here, maybe someone can explain.

If the throttle input stick is in the lower halve (so the interval from [RC3_MIN; RC_TRIM], my motors do not do anything (e.g. not spinning).

If the throttle stick is in the area from [RC3_TRIM; RC3_TRIM + RC3_MAX - RC3_TRIM / 2], throttle acts normally, that is, an increased value from RC3 results in an increased motor speed, with the motors running in the correct direction. Now, in the last interval from [RC3_TRIM + RC3_MAX - RC3_TRIM / 2; RC3_MAX], the motors spin in reversed direction, and they do so again proportional to the RC3 input (higher RC3 value results in motor spinning faster).

This is very weird, because for one, there is no deadband between normal and reversed thrust, and because full throttle forward comes right before slight throttle reversed.

The following image represents how the throttle rc input (x axis) corresponds to my throttle output (y axis).

parameter.param (23.2 KB)

That sounds like an ESC issue to me. I can’t open your parameter file (that’s a problem on my end, not with your file) but based on your description, and the fact your ESC is running in both directions I think your ESC needs to be calibrated. Are you trying to setup reverse thrust?

Yes I’m trying to setup reverse thrust (sorry that I did not state this more clearly, thought it would be obvious by the title). My ESCs are connected via DShot, so I do not think this is a calibration issue, more likely a bug in Ardupilot (however, I’m told to ask in the forums first before polluting the issue tracker). Here are hopefully all relevant parameters:

RC3_DZ,60
RC3_MAX,1952
RC3_MIN,1017
RC3_OPTION,0
RC3_REVERSED,0
RC3_TRIM,1500
SERVO1_FUNCTION,73
SERVO1_MAX,2000
SERVO1_MIN,1000
SERVO1_REVERSED,0
SERVO1_TRIM,1000
SERVO2_FUNCTION,74
SERVO2_MAX,2000
SERVO2_MIN,1000
SERVO2_REVERSED,0
SERVO2_TRIM,1000
THR_MIN,-100

Please notice that I can not change SERVO[12]_TRIM, as per https://ardupilot.org/copter/docs/common-dshot.html . Now that I’m reading the notice again, a question arises:

The SERVOx_TRIM value will be reset to 1500 if it’s a reversible output, or 1000 if normal output setup in DShot.

How/where do I set this output to be reversible?

Edit: I opened an issue in the wiki issue tracker for this question.

Problem solved. I needed to mask the reversible motors in the SERVO_BLH_REMASK parameter. If only the DShot or Reverse Thrust page in the manual would have mentioned this parameter…

3 Likes