The kF
term on most motor controllers (i.e. Talon SRX, Talon FX, Spark MAX) is multiplied by the velocity setpoint and added to the feedback output. This operation (kF * setpoint
) is similar to the kV * \dot{d} (where \dot{d} is the velocity setpoint) in the characterization equation.
Assuming your characterization is done with SI units, your kV will have units of volt seconds per meter. This makes sense because multiplying a quantity with units of volt seconds per meter by a speed setpoint (with units of m/s) will result in units of volts, which corresponds to a typical motor signal.
Since this thread deals with Falcon 500, I’ll explain how to convert the kV from the characterization tool into a kF
for the Falcon 500; however, similar dimensional analysis will apply for any other motor controller.
CTRE motor controllers require kF
to be in units of output units / native units per decisecond
, where output units are scaled in the interval [-1023, 1023]
. As an example, I will use a Kv of 0.115 from the characterization tool on a mechanism with a gear reduction of 1:9.09 and wheel radius of 0.0762 meters.
\frac{0.115 Vs}{1 m} \times \frac{10 ds}{1 s} \times \frac{1023 \text{ output units}}{12 V} \times \frac{2 * \pi * 0.0762 m}{1\text{ output rotation}} \times \frac{1 \text{ output rotation}}{9.09 \text{ input rotations}} \times \frac{1 \text{ input rotation}}{2048 \text{ native units}}
= 0.00252 \frac{\text{output units * ds}}{\text{native units}}
In the calculations above, a native unit is one tick reported by the Falcon 500 internal encoder.