I'm considering experimenting with PIV control instead of PID control. Contrary to PID, PIV control has very little explanation on the internet and literature. There is almost a single source of information explaining the method, which is a technical paper by Parker Motion.

What I understand from the control method diagram (which is in Laplace domain) is that the control output boils down to the sum of:

  • Kpp*(integral of position error)
  • -Kiv*(integral of measured velocity)
  • -Kpv*(measured velocity)

Am I correct? Thank you.

  • $\begingroup$ I have never heard of such thing and, to be honest, the acronym is quite weird. If you are talking about position control, wouldn't the velocity be the same as the derivative? What I find interesting is that the integral of the position error isn't there, so it's as if you had a PD controller with two sources of position information (measured position and the integral of velocity). Could you link the article so we can answer your question? $\endgroup$ Mar 9, 2013 at 19:51
  • $\begingroup$ PIV control is explained here: parkermotion.com/whitepages/ServoFundamentals.pdf $\endgroup$ Mar 9, 2013 at 20:20
  • $\begingroup$ This is basically a form of cascaded controllers. Explained a little here: en.wikipedia.org/wiki/PID_controller#Cascade_control $\endgroup$
    – Guy Sirton
    Sep 3, 2016 at 23:26

3 Answers 3


It seems to me like there are three basic differences between the classic PID topology and the so-called PIV topology mentioned in the white paper:

  1. Desired velocity is assumed to be proportional to position error, the $K_p$ term regulates this.
  2. The integral error gain $K_i$ works to remove steady state errors in velocity, not position. That is essentially the same thing, however, due to item #1.
  3. The velocity estimate is fed directly through the $K_v$ term (instead of considering the derivative of position error).

In the paper they claim that the main advantage of this topology is that it is easier to tune.

The output of the controller is formed as follows:

$e_\theta=\theta^*-\theta\\ e_\omega = (K_pe_\theta-\hat{\omega})\\ \text{output} = \int K_ie_\omega dt - K_v\hat{\omega}$

Of course, since you will probably be programming this, the integral is replaced by an accumulator variable as follows:

$e_\theta=\theta^*-\theta\\ e_\omega = (K_pe_\theta-\hat{\omega})\\ \text{integral} = \text{integral} + K_ie_\omega \Delta t \\ \text{output} = \text{integral} - K_v\hat{\omega}$

  • $\begingroup$ The estimated angular velocity $\hat{\omega}$ has its own coefficient $K_{pv}$ right? $\endgroup$ Mar 10, 2013 at 9:10
  • $\begingroup$ I am also guessing that PIV is not very useful in practice therefore not popular. $\endgroup$ Mar 10, 2013 at 9:11
  • $\begingroup$ Yes, you're right, I forgot to add that. I don't know if the problem is how useful it is... It's just not seen in the standard literature, although it's justifiable. It's probably something that was developed internally because it suited their needs, but it's not all that different from PID. $\endgroup$ Mar 10, 2013 at 14:44
  • 1
    $\begingroup$ we are using PIV to regulate a wheel on a legged-wheel system. Due to the (irregular) shape of the wheel, position is important. However, in normal situations, you want to regulate the speed. PIV was taking both into account and yields better results than PID. $\endgroup$ Mar 24, 2013 at 7:19
  • 1
    $\begingroup$ @AyberkÖzgür Virtually all commercial motion control systems use some variation of cascading PID controllers with some similarity to this. E.g. Parker, Baldor, ACS, Copely, ACS, Delta-Tau ... This sort of proportional gain only position loop over a PI velocity loop is very common but different vendors certainly have their own slight variations. A system will usually have a current loop as well and various feed-forward components. It's true that in hobbyist circles it is less popular IMO because performance is less of a concern vs. simplicity. $\endgroup$
    – Guy Sirton
    Sep 3, 2016 at 23:37

A PID loop and a so-called PIV loop with equal gains should have the same response to a disturbance, so I'm not sure why the claim that the disturbance response is better or worse.

As mentioned, the derivative "kick" will be less, which can be a good thing if you give the thing sharp inputs.

In addition, there can be some benefits as the thing comes out of integrator saturation, depending on how you implement your anti-windup.

Mostly, the so-called PIV loop is just a way of affecting the zeros of the closed-loop transfer function. It's a special case of a more general scheme where your controller output is (in Laplace notation) $$Y(s)=\frac{k_{fi}U(s) - k_{bi}X(s)}{s} + \left(k_{fp}U(s) - k_{bp}X(s)\right) + \left(k_{fd}U(s) - k_{bd}X(s)\right)s$$ where $Y$ is the controller output, $U$ is the system command and $X$ is the controlled variable, while the various $k_{xx}$ are forward and backward integral, derivative, and proportional gains. In this scheme you tune the various feedback gains ($k_{bx}$) to get the loop (and hence disturbance) response that you want, and you tune the forward gains ($k_{fx}$) to improve the response to a command change, by whatever criteria you have for "better".

Setting all the forward and reverse gains equal gets you a plain ol' PID, while setting $k_{bp}=0$ and $k_{bd}=0$ gets you the so-called "PIV" controller.

  • $\begingroup$ Are you sure Tim? See here page 3-26 web.stanford.edu/class/archive/ee/ee392m/ee392m.1056/… which is essentially the same configuration... So you're saying this is equivalent to a "plain ol'" PID loop over position? At the very least you'd think what's inside the "velocity" estimator box matters. And if they're equivalent why does everyone seem to bother with cascading controllers for motion control? $\endgroup$
    – Guy Sirton
    Sep 4, 2016 at 0:10

In industry, this type of control is still generally referred to as PID control and I've seen many applications of it. It's main benefit stems from the fact that it removes the "derivative kick" caused by an abrupt change in set point and thus is useful for applications where set point tracking is most important (rather than fast disturbance rejection). See http://www.controlguru.com/wp/p76.html.

Image showing difference in derivative kick of PID and PIV http://controlguru.com/wp-content/uploads/2015/08/pidkickbig.jpg

  • $\begingroup$ FYI, the second link is broken... $\endgroup$
    – daaxix
    Sep 1, 2016 at 13:25

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.