Slew rates on servo output


Is it possible to impose slew rates on servo output, so to limit spikes in current demand due to transients ?

I have a skidsteering boat, and when commanding full left turn while already turning full right (for example) the motors are reversed from full forward to full reverse on one side, and from full reverse to full forwards: if this happens instantaneusly (and in MANUAL mode noone can prevent an operstor to do that), a current spike can be generated. This can lead to damage batteries/ESC or to trigger protection circuit of the battery…

I am wonering if one can impose a macimum slew rate to servo dynamics, so to cut this kind of transient

Any other solution is welcome as well !

Thank you in advance

Perhaps the MOT_SLEWRATE parameter?

I can give a try, thanks
But the description reports “Throttle slew rate”, it is not clear if it applies also to YAW input, which is what I am interested in

There is a Turn Rate parameter (deg/s) and a max turn G parameter. The later is what ground rovers use to prevent tipping over on turns. Works great on my crawler. Also look at the MOT_VEC_ANGLEMAX parameter.

Thanks, but I need a solution working even in MANUAL mode

Manual mode is essentially Passthru. Find a solution that would work without a Flight Controller at all…

Have been wondering about the same thing.
We have tried MOT_SLEWRATE this control the ramping up of ahead / astern commands nicely but unfortunately has no impact on steering / yaw outputs.
As Roberto says turns initiated by the operator(s), or pivot turns commanded in auto mode result in violent application of thrust, I think proportional control is wasted on most operators :slight_smile:

Either the ability to limit servo slewrate (on a per output basis) as suggested, This would have more applications than limiting motor outputs.
Or have the MOT_SLEWRATE parameter apply to ALL motor actions would be great.


First, you MUST follow the tuning instructions carefully. Reducing ATC_STR_RAT_FF will have the largest effect on slew rate.

You can set ATC_STR_RAT_SMAX to try and tame the assisted modes if the tuning instructions aren’t quite getting you where you need to be.

You can also reduce ATC_STR_RAT_MAX and ATC_STR_ACC_MAX, but that approach will be most effective once the tune is behaving a little better.

MANUAL mode must be handled separately and entirely by the transmitter. Consider using an aggressive expo curve and/or limiting the max PWM output. You might put that mix on a “rate” switch much like we often do with RC aircraft, such that it can be deselected when out of MANUAL mode.

My opinion: A feature request for a single parameter to reduce servo slew rate in all modes sounds like a Band-Aid request for something that should be handled by proper vehicle design.

Not even remotely accurate.

OpenTX (and other transmitters too probably) have a slow function to limit the rate the output changes, no matter what the pilot does with the sticks. This is most often used with flaps, but should work with a rover too. Just create a flightmode in the transmitter, which activates with “manual mode” switch and tie the slow function to it.

Note the smilie :slight_smile:
We must have different operators :slight_smile:

Limiting output speeds is very common practice in marine engineering, throttle / pitch and steering controls will have max slew rates set (either hydraulic proportional flow control or electronic) so no matter how fast the operator moves the controls the system will only respond at a speed that won’t cause mechanical stress/damage.

We have been quite diligent with following the tuning setup, and the general steering along track is very good. The violent motor accelerations are only when a “pivot turn” is activated and to be honest it probably sounds worse than it is.
our normal operation mode is surveying in a “lawnmower” pattern so keeping the turns (Pivot turns) tight at the end of the line is desirable.

I will double check the ATC_STR_RAT_FF, … etc next time I have the boat in the water. MIght be a couple of weeks.

Respectfully disagree, the ability to set a MAX_SLEWRATE for a function (at a low level) to prevent overloading a system, regardless of operating mode, would seem to me a desirable safety feature, I was honestly expecting MOT_SLEWRATE to apply to all motor functions… so still be active for skid steer commands.


With our skid steer boat application we are only using a logitech xbox USB controller for manual control, so sophisticated flight mode switching and programming is not an option. I do have a handful of expo programmed in for the joystick which does help, until the operator “dumb thumbs” kick in.

Thanks for your input guys, cheers,

I just gave you all the tools required.

MOT_SLEW_RATE applies to throttle control. It makes no sense to unilaterally apply it to steering (though on a skid steered vehicle, it probably should apply to left and right throttle through the steering controller, which it may not, and that would indeed be an oversight).

And again, MANUAL control is just that. Limit the slew rate on the input side.


MOT_SLEW_RATE works beautifully, including in manual mode.
If it was applied to ALL motor functions, skid steering included this would resolve my “problem”

The issue is with controlling the momentum of the drivetrains.


1 Like

Glad to hear MOT_SLEW_RATE works so intuitively.

Anything prefaced with ATC will not affect MANUAL mode.

Ok, since I initiated the tread, I tell you what I did…
I modified settings on the trasmitter (Taranis), slowing down lateral input. Problem solved.
Throttle output was already filtered by ardupilot code.

I understand that in recent releases of ardurover code this bug is fixed, and it is possible to filter also the later channel by parameters.
But for the time being I did not want to upgrade the software, risking “collateral damages”

Thank you all for your suggestions !