From Peter on forum
The FF are feed forward values:
FF0 adds a portion of the command to the output
FF1 adds a portion the first derivative of the command to the output
FF2 adds a portion of the second derivative of the command to the output
I tend to think of feed forward terms being used to center the operating
point of the PID loop.
For example, if linuxcnc is controlling a velocity mode servo, almost
all tuning (on linuxCNC) will be done with FF1 and P (FF1 is velocity feed
forward if the PID command is position)
With a velocity mode servo the PID output is a
velocity command to the drive. This means the PID
output will be near full-scale when doing rapids.
If only P was used, there would have to be enough
position error to generate a near full scale signal when
moving at full speed. Practically what this means is that
the actual position will lag the commanded position
by an amount proportional to the full scale PID output / Pgain,
which is quite significant. FF1 is used here to "forward"
the commanded velocity to the PID output so that the
PID output will be set to the required value for the current
commanded velocity _before_ any P correction is applied,
centering the PIDs operating point around the current velocity
Another example is controlling a torque mode drive. In this case, FF2
(acceleration feed forward if the command is position) is used to
compensate for the system inertia.
No controlled system is a perfect velocity or torque mode device so often
a bit of FF2 can be used to tune velocity mode drives error during acceleration,
and a bit of FF1 can compensate for velocity dependent drag on a a torque mode system