Dynamic Feedforward Compensation

Selected kinematic modules support Dynamic Feedforward compensation (DFF). This technique utilizes a dynamic model of the robot to generate feedforward terms that can significantly reduce the tracking errors and improve the gravity balance for some mechanisms. These feedforward terms compensate for the effects of inertial acceleration, centripetal, Coriolis and other coupled forces, and gravity loading. This compensation is designed to counteract dynamically coupled reactions where one axis will experience a disturbance force or torque that is generated by the movement or mass of another axis.

For example, for a SCARA robot, if only the outer link is rotated quickly, coupled inertial, centripetal and Coriolis forces will generate a torque that will attempt to rotate the inner link. This typically results in the inner link exhibiting a momentary position error even though it is not being moved. In this case, Dynamic Feedforward compensation will predict the coupled torque and will generate a feedforward command to counteract this disturbance. This will eliminate or significantly reduce any position error of the inner link.

DFF is most beneficial for axes with 1:1 or small gear ratios (such as direct drive or belt driven axes) or for axes that are subject to significant variable gravity loading. This is due to the fact that axes with high gear ratios (50-100 to 1) tend to mask out link inertial and coupled torques. For such axes, the major dynamic factors are the friction of the gear train and the inertia of the motor rotor and the gear train on the side of the motor.

DFF operates by continuously sampling the position, speed, and acceleration of each axis, and combining this information with the dynamic model of the robot to produce an estimated feedforward force or torque for most axes. These feedforward values are converted to a motor current and added to the standard axes PID loops. As with kinematic equations, the dynamic model utilized by the DFF facility is designed for a specific robot geometry. Therefore, only selected kinematic modules include support for DFF and the terms in the dynamic model are specific to the robot’s geometry.

The DFF equations are evaluated at the Trajectory Update Rate, which is typically once each 1 to 4 msec. Tests to date indicate that enabling DFF only consumes approximately 1-2% of the master controller’s CPU time.

The following Parameter Database values are utilized for setting up, operating and monitoring DFF.

Parameter Database ID Parameter Name Description

16066

Dynamic feedforward enable

If a kinematic module supports Dynamic Feedforward (DFF) and this parameter is TRUE when the system is restarted, DFF compensation will be enabled until the controller is powered down.

16067

Dynamic feedforward mass, kg

These parameters, along with the kinematic model, the "Dynamic feedforward motor/gear inertia" (DataID 16072), and the "Kinematic dimensional constants" (DataID 16050) define the physical constants necessary for computing the Dynamic Feedforward compensation (DFF).

Each link is represented as a point mass that is positioned at the Center of Mass (COM) for the link.  l1 and l2 specify the position of the COM relative to the origin of the link.  The interpretation of l1 and l2 are a function of the kinematics of the robot. 

There is one value in DataID's 16067, 16068, and 16069 for each link of the robot plus one additional value for the payload.  For some links, all three values are utilized in the DFF computation, while for other links one or more of these values are ignored.

For most kinematic modules, if the robot can contain n axes, the n+1 th parameter defines the maximum payload for the robot and its COM relative to the n th axis.  For example, for both 5 and 6-Axis Articulated robots, the 7th values in these DataID's define the maximum mass of the robot's payload and its distance from the center of rotation of the wrist.  For the PreciseFlex™ 400 robot, which can have 4 axes plus a gripper, the payload is the 5th value.

Please see the documentation for your specific kinematic module for the definitions of the mass, l1 and l2. 

16068

Dynamic feedforward COM l1, mm

16069

Dynamic feedforward COM l2, mm

16070

Dynamic feedforward rated torque, N-m

Once the Dynamic feedforward is computed for axes (in N-m or N), the torques or forces must be converted to motor current commands.  The values of this DataID are used for this conversion.  The "Dynamic feedforward rated torque" is the torque or force that is generated at an axis (not a motor) when a motor is supplied with the current defined by the "RMS rated motor current, A(rms)" (DataID 10611).

For example, if an axis is driven by a 400W motor that produces 1.27 N-m of torque at its rated current of 3.3A, and the motor is connected to the axis by a 4-to-1 gear ratio, the value for DataID 16070 should be set to 5.08 N-m (1.27 times 4).

If an element of this array is set to 0, DFF is disabled for the corresponding motor.

16071

Dynamic feedforward default %payload

When the system is restarted, this parameter sets the value of Robot.Payload between 0 and 100%.  This robot property specifies the current payload of the robot as a percentage of the maximum payload, which is defined by the "Dynamic feedforward mass" (DataID 16067).  Once the system is running, a GPL program can change this default value by setting Robot.Payload to a new value.

16072

Dynamic feedforward motor/gear inertia, kg-mm^2

For each axis, this parameter specifies the inertia of each axis' motor and gear box as seen at the axis (after being compensation for the axis' gear ratios).  These values together with the Dynamic Feedforward parameters defined by DataIDs 16067-16069, the robot's kinematic model, and the "Kinematic dimensional constants" (DataID 16050) define the physical constants necessary for computing the Dynamic Feedforward compensation (DFF).

For example, if an axis is driven by a 400W motor whose rotor has a moment of inertia of 26 Kg-mm^2 and it is connected to the axis by a harmonic drive that has a 50-to-1 ratio and an inertia of 107 Kg-mm^2, the value is DataID 16072 should be set to 332500 kg-mm^2 ((26+107)*50^2).

12337

Dynamic feedforward torque, tcnt

For kinematic modules that generate Dynamic Feedforward torques, this parameter indicates the DFF torque command that was received from the Trajectory Generator and was added to the position loop compensator, in tcnts.  The "Feedforward torque" (DataID 12330) does not include DFF.  DFF is added to DataID 12330 before the combined value goes through the "Feedforward SPR filter" (DataID 10328) and the "Feedforward torque rate limit" (DataID 10348).

If the servo is not in position control mode, this value will be zero.

12406

Dynamic feedforward torque command, tcnt

For kinematic modules that generate Dynamic Feedforward torques, this parameter indicates the DFF torque command that was received from the Trajectory Generator, in tcnts.  Unlike the "Dynamic feedforward torque" (DataID 12337) that is only valid when a servo is in position control mode, this value is valid in any mode including torque control mode.  It displays the DFF value whether or not this value is added to the motor output.

As an example of how to initialize the DFF parameters, the following illustrates how the DFF parameters are defined for the PreciseFlex™ 400 robot. This robot utilizes the PRRR kinematic module. The picture below illustrates the dimensional and dynamic constants for this robot. Please note that the Ln parameters in the drawing are not the same as the DFF COM L1 and L2 values.

The following table provides the necessary information for the motor drives.

Motor Size
(W)
Rated Torque (N-m) at Rated Current Gear Ratio or N-m to N factor

1

200

0.64

160

2

100

0.318

3.75 : 1

3

100

0.318

4.72 : 1

4

30

0.095

3.54 : 1

Please refer to the definitions for the Mn, L1n and L2n terms that are provided in the documentation for the PRRR kinematic module. Based upon the information provided for the kinematic module and the data above, the following values are set into the DFF Parameter Database values for this robot.

Parameter Database ID Parameter Name Values

16066

Dynamic feedforward enable

1

16067

Dynamic feedforward mass, kg

2, 2, 1.1, 0.5, 0.5

16068

Dynamic feedforward COM l1, mm

0, 84, 63, 49, 162

16069

Dynamic feedforward COM l2, mm

0, 0, 0, 0, 0

16070

Dynamic feedforward rated torque, N-m

102.4, 1.1925, 1.5, 0.336

16071

Dynamic feedforward default %payload

Any value from 0 to 100

16072

Dynamic feedforward motor/gear inertia, kg-mm^2

Not currently used

Please note, that the 5th values for DataID's 16067 and 16068 represent the maximum payload for the robot and its position relative to the center of rotation of axis 4.  The actual payload mass utilized in the DFF calculations will be the product of the maximum payload times the Robot.Payload percentage (0-100%).  This permits the payload mass to be modified by a GPL program as the robot picks up and places objects.

For this robot, the following datalog illustrates how well the torque feedforward command computed by the DFF matches the actual torque required for a motion.  The pink line displays the total command output by the servo compensator loop for axis 3.  The dark gray line illustrates the feedforward torque command generated by the DFF software.  For other mechanisms, the accuracy of the DFF calculations (and their benefit) will vary and be a function of many factors including the motor gear ratios, the system friction, etc.  For this robot, the DFF compensation was able to reduce the robot tracking error by more than a factor of 2 for many motions.