I am trying to control a robotic arm with force input. The output of the force sensor is filtered, and fed through a PID controller to command the end-effector velocity. However, the robotic arm has strict limits for maximum acceleration and jerk. I've therefore tried limiting the jerk and acceleration after the PID, before sending the velocity command, but it doesn't feel right. The PID controller in the next iteration gets completely different values than was calculated in the previous iteration, and the limiters are "taking control".

Any ideas of a better way to handle maximum acceleration and jerk limits?

  • $\begingroup$ If a bit jerk is visible it's not a problem. The maximum jerk can be found in the inverted pendulum problem which is completely underactuated and out of control. The only thing what should be avoided, is if the jerk comes in surprise. The best practice method is to model acceleration and jerk in the forward simulation. The model predicts what the jerk will be and can avoid these states in advance. Predicing the jerk is possible with neural networks or with a fancy equation. $\endgroup$ Feb 27, 2019 at 17:34
  • $\begingroup$ Is the force sensor on the robot or is it a seperate joystick? $\endgroup$
    – 50k4
    Feb 28, 2019 at 20:38
  • $\begingroup$ The force sensor is derived from torques on each joint $\endgroup$ Mar 1, 2019 at 22:24
  • $\begingroup$ On stack exchange, comments are not intended for answering questions @ManuelRodriguez, they are for helping to improve them. Comments are distracting, so we try to keep them to a minimum. They should be considered ephemeral, any comment which no longer actively helps to improve a question or answer may be deleted at any time to tidy up a post. $\endgroup$
    – Mark Booth
    Mar 5, 2019 at 11:07
  • $\begingroup$ Welcome to Robotics Ove Baardsgaard. On stack exchange, it is better to edit your question to add information requested in comments, rather than adding more comments. If all of the information needed to answer the question is contained within it, the comments can be tidied up (deleted). $\endgroup$
    – Mark Booth
    Mar 5, 2019 at 11:09

1 Answer 1


As a general remark, a PID controller can be designed to take into account only constraints occurring at the commanded variable - the end-effector velocity in your case - through the so-called antiwindup mechanism that is responsible for detaching the integral whenever those constraints are reached. This way, the PID is somehow informed that something "bad" is happening and thus is able to take countermeasures.

Unfortunately - and to my knowledge - there is no equivalent mechanism to deal with rate limiters of first and second order in the exact same way described above for the antiwindup, where the PID is aware of what's going on.

In your scheme, instead, the PID is unaware of the presence of cascaded rate limiters and reacts according to the plant feedback, where "now" the plant is to be considered the ensemble of the actual process you want to control plus the rate limiters themselves. These latter elements make the overall process highly nonlinear and, as a consequence, the PID that is tuned up to work within linearity starts off struggling.

To circumvent this, you might consider the following ideas:

  1. Try to avoid nonlinear zones at all by detuning your PID. Of course, you still need to guarantee some given performances hence this solution is often not viable.
  2. Do Input Shaping to feed the controller with a reference signal that doesn't elicit too many vibrations by design and whose frequency content is such that the limitations in acceleration are satisfied.
  3. Do Gain Scheduling and tune a family of PID controllers to work in different operational points.
  4. Give up with an intrinsic liner control approach to switch to more sophisticated techniques like Model Predictive Control that makes use of optimization to tackle actuation constraints so as other properties of the plant.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.