How to obtain kS for feed-forward

What’s the best way to find kS? Can it be relatively easily found like tuning for kP/kI/kD? I believe that I should be able to use Recalc to get the other feed forward values (kV, kA etc).

1 Like

kS is the feedforward to overcome static forces (e.g. forces that prevent movement, e.g. friction). The best way to find kS is to apply a reasonable load to your mechanism, and apply increasing amounts of voltage until the mechanism moves. The amount of voltage required to make the mechanism moves the smallest detectable amount is your value for kS.

1 Like

If you want an interesting project, also try to measure the minimum voltage required to keep the mechanism moving at the minimum speed it seems able to move without stopping. You’ll probably find that it’s a different number. :slight_smile:

2 Likes

This, except I usually go in both directions and take the average just in case. For elevators, you should apply kG before kS, making sure that the kS is approximately equal in both directions. If it isn’t, tweak the kG so that they are.

Question for this, not OP: Would that still be kS? What constant would that be? How would that factor into a feedforward scheme?

In a way. It’s a finer/more-accurate model of the same phenomenon (“dry friction”, or the direct rubbing of two surfaces) that kS captures. Literature typically names the terms of the two-constant model the “static” and “dynamic” coefficients of friction.

To use the two-constant model you’d need a feedforward controller that can dynamically change the kS term depending on whether motion has currently stopped - you would want to use the static coefficient of friction whenever you are not moving, and change to the dynamic coefficient of friction once some motion threshold has been exceeded.

This would probably not improve behavior that much, but there’s nothing stopping you from implementing it.

Names are arbitrary, but in the feedforward context I’d probably term the constants K_{stick} and K_{slip}, to keep them both consistent with the less-precise K_s and to avoid confusion with the already-existing K_d (referring to derivative gain in a linear feedback controller).

2 Likes

if anyone is interested in learning more about these concepts, one of the key terms is “Stribeck friction model,” which refers to one mechanism resulting in speed-dependent friction, which is about poor lubrication at low speed. another mechanism with this trait involves springiness at the interface, resulting in stick-slip motion, most familiar in the way a violin bow interacts with the string. another common effect of this issue is controller-driven oscillation: if you have a sticky actuator, then you can imagine a controller undershooting, winding up, and overshooting, repeatedly.

is it important to model this sort of thing? it’s only important if your measurements say it is! over the summer, one of our students found this model important in proportional control of swerve steering, where the controller output is low for small errors. but if you use the static value alone, then the control can oscillate a little too easily.

I think this sort of focused little control study is a really important part of building a smooth and accurate control stack, and I encourage students to jump down the rabbit hole and learn about it!

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.