Sinusoidal functions for s-curve motion
While trapezoidal speed motion pattern is good and well. It is well known that the sudden changes in acceleration it requires, also known as jerk (jerk being the time derivative of the acceleration) is the cause of trouble in many machines.
However, will there are no sharp edges on the acceleration values, there is still a couple of points where there is a not so smooth change. So the next idea, while still within the use of a sinusoidal acceleration profiles is to change to this other acceleration profile:
This new curve has smoother transitions from zero to any other value, thus no more problems with the jerk. However, we still can think of a combination of this latter case and the initial one, where corners are smoothed out using a sinusoidal:
That is what they suggest in this paper.
While I was not eager to use any complex math in my dcservo project, I wanted to extend the trapezoidal method with something a bit smoother. And once I have learned a single trigonometric function call in Arduino takes around 100 microseconds I think I can play with these patterns to see which one works best.
What I have found surprising is that Arduino M0 trigonometric functions seem to be no faster than the 8-bit older boards.