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:
- 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.
- 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.
- Do Gain Scheduling and tune a family of PID controllers to work in different operational points.
- 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.