[From Bruce Abbott (2016.11.10.1555 EST)
I thought that PCTers might appreciate a short tutorial on the effect of adding rate input to an integral control system.
In the June 1979 issue of Byte magazine, Bill Powers presented the first in a series of articles ostensibly on “The Nature of Robots” but actually introducing to Byte readers what later came to be known as PCT. This first installment described a scenario in which “Chip” is trying to keep his car in the center of its lane while a steady crosswind exerts a force tending to push the car left or right. Chip’s means of doing so is to change the angle of his steering wheel, which in turn changes the angle of the front wheels, which generates a force tending to make the car drift to the right or left.
Bill presented a short program written in BASIC that implemented Chip’s control system. Most of the details that would be included in a fully fleshed out simulation are omitted; for example, the wind speed and steering angles are treated as if these were forces acting on the car rather than inputs to an environmental function that would compute the forces being developed as a result of these inputs. However, this crude level of representation is sufficient to produce a working model illustrating the basic principles.
In the simulation, wind and steering angle values add to produce the net effect, which is to cause the car to drift left or right depending on whether the result is positive or negative. Drift is the change in position per iteration of the simulation loop and thus qualifies as a rate. Each time through the loop, the drift is added to the car’s previous position to yield the new position. Position thus arises from the integration of drift across iterations. The control system varies the drift rate (via the steering angle) to control the car’s position.
A problem arises due to the lag introduced by the drift integration. Lag produces a phase shift that can yield instability. To help compensate for this lag, Bill added a term to the perceptual input function that is proportional to drift, i.e., the rate of change in position. Thus, Chip’s perception of the car’s position in the lane is affected not only by the car’s actual position but also by the rate at which it is changing position.
In a way, this rate factor can be viewed as a prediction of the car’s future position (on the next iteration), based on its current position and the rate at which that position is changing. Using the “predicted” position rather than the actual one creates a small phase advance that helps to overcome the phase delay due to integration (or to loop transport delay, for that matter).
The figure below presents the results of the simulation, with Chip’s perception of the car’s position equal to its actual position plus 0.8 times the drift.
In the simulation, a constant 20 mph crosswind is pushing the car toward the right (positive drift). After overcorrecting a bit, Chip settles down to maintaining a wheel angle of -10 degrees and a deviation from lane center of 5 feet (Drift = 0.5*wind + steering angle). At this point drift becomes zero.
This performance was achieved with rate input added to position input. How would this system perform if rate compensation were eliminated, all else being equal? The figure below shows the result:
The control system now displays a marked degree of instability, with several under- and overshoots in evidence before the system finally settles down. (An envelope drawn across the peaks would form a decaying exponential function.) This demonstrates that the added rate input that was present in the first illustration does indeed help to offset the integration lag.
There is good evidence that the control of perceived muscle length similarly includes an added rate component, with both length and rate of change in length being provided as input signals to the alpha motor neurons that drive the muscles. The alpha motor neurons thus play the roles of both comparator (with reference signals being input from higher levels in the nervous system) and output function driving muscle contraction.
NOTE: The Byte article from which this simulation was taken is available on Dag Forssell’s Living Control Systems website at